【Read1】CornerNet ECCV2018
來自專欄 ARTS計算機科研之路
Motivation
為了在單階段物體檢測中,消除Anchor Box這一過程,因為Anchor Box有兩個缺點:
- 一張圖片的anchor box數量巨大,但是真正需要的positive anchor box只有幾個。造成了檢測器給anchor box打分的時候,正負訓練樣本的不均衡
- anchor box的大小,長寬比,最後取的個數都需要人工設計,超參數太多
Key Components
Corner Pooling
Why:如果預測的是左上和右下的point可能性,就需要注意到左上和右下兩點不會一定在物體上,所以從反方向進行max pooling,能夠保證一行或者一列能夠經過要檢測的物體。
How:conv channel=2,那麼第一張heat map代表左上角點的可能性,第二章heat map代表右上角點的可能性。左上角x坐標的pooling從右到左進行max pooling,y的pooling從下到上進行;右下角的x坐標從左到右,y的pooling從上到下。最後將x和y pooling後的值對應相加,則得到一個點為左上角(右下角)為角點的probablity。
embed vector
Why:當一張圖片中有大量待檢測物體時,需要通過某種方法來將各個角點分組(即是否屬於同一物體)。論文中,通過計算每點的embed vector的距離,距離近的認為它們屬於一個物體,距離遠的認為它們屬於不同物體。
What:在訓練時,使用以下的loss,論文里的e是一個標量,也就是embed vector的dismension=1
Test的時候使用L1 distance小於0.5的作為正例。
focal losss variant:
Why:由於cornerNet對heatmap預測的角點分數做懲罰,除了gt的角點之外,在以gt角點為圓心,某種長度為半徑的圓內的點做角點,仍然可以構成合適的bounding box,所以論文中採用了和keypoints detection中一樣的Gaussian分布的heatmap來當做gt。
What:其中N是一張圖片中待檢測物體的個數, 是預測出的heatmap上的分數, 是gt的heatmap的分數(經過高斯分布的調整), 是focal loss中調整每個點的權重超參數。
offset:
Why:最後的offsets map是為了解決經過卷積之後,原來的兩個角點的坐標不能被卷積縮小的圖像倍數整除,還原到原圖坐標時會存在一定的偏差,所以增加offset能夠彌補這種小數的偏差。
What:gt的offset為
Implementation
整體結構圖
在預測角點heatmap的時候,會對每個類別都預測一張heatmap。也就是一張H*W的feature map,總共有C類,則預測左上角點的heatmap大小為 C*H*W,預測右下角點的heatmap大小為C*H*W。
卷積細節圖(為後面的預測模塊加上residual):
Analogue
DeNet:預測每個點被分類為左上,右上,左下,右下的可能性,但是DeNet沒有預測角點的group(也就是這四種頂角是不是屬於一個物體檢測框),而是枚舉所有組合的可能性。而Corner Net通過計算角點對embed vector的相似度,來選擇最有可能組成檢測框的角點對。
與其他主流檢測網路的效果對比,可以看出在one-stage的網路中cornerNet達到了SOA,但是cornetNet對於小物體、中物體的檢測效果仍然有提升空間。
註:
- 題圖來自MSCOCO數據集
- 文圖為論文上截取
- 內容原創,第一次寫專欄,有不當之處還請大家批評指正。
推薦閱讀:
※一些想法:關於行人檢測與重識別
※微軟亞研院與北大共同提出用於物體檢測的可學習區域特徵提取模塊
※視頻理解近期研究進展
※NTIRE 2018 超解析度 CVPR Workshop