CornerNet:經(jīng)典keypoint-based方法,通過定位角點進行目標檢測 | ECCV2018

論文提出了CornerNet,通過檢測角點對的方式進行目標檢測,與當前的SOTA檢測模型有相當?shù)男阅?。CornerNet借鑒人體姿態(tài)估計的方法,開創(chuàng)了目標檢測領(lǐng)域的一個新框架,后面很多論文都基于CorerNet的研究拓展出新的角點目標檢測
?
來源:曉飛的算法工程筆記 公眾號

論文: CornerNet: Detecting Objects as Paired Keypoints

Introduction


? 目標檢測算法大都與anchor box脫不開關(guān)系,論文認為使用anchor box有兩個缺點:1) 需要在特征圖上平鋪大量的anchor box避免漏檢,但最后只使用很小一部分的anchor box,造成正負樣本不平衡且拖慢訓練。 2) anchor box的引入帶來了額外的超參數(shù)和特別的網(wǎng)絡(luò)設(shè)計,使得模型訓練變復雜。

? 基于上面的考慮,論文提出了CornerNet,將目標檢測定義為左上角點和右下角點的檢測。網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,通過卷積網(wǎng)絡(luò)預測出左上角點和右下角點的熱圖,然后將兩組熱圖組合輸出預測框,徹底去除了anchor box的需要。論文通過實驗也表明CornerNet與當前的主流算法有相當?shù)男阅?,開創(chuàng)了目標檢測的新范式。

CornerNet


Overview

? CornerNet中通過檢測目標的左上角點和右下角點進行目標檢測,卷積網(wǎng)絡(luò)預測兩組熱圖(heatmap)來表示不同類別目標的角點位置,分別對應左上角點和右下角點。為了將左上角點和左下角點進行對應,為每個角點預測一個embedding向量,屬于同一個目標的兩個角點的距離會非常小。另外還增加了偏移量(offset)的預測,對角點的位置進行小幅度的調(diào)整。

? CornerNet的結(jié)構(gòu)如圖4所示,使用hourglass網(wǎng)絡(luò)作為主干網(wǎng)絡(luò),通過獨立的兩個預測模塊輸出兩組結(jié)果,分別對應左上角點和右下角點,每個預測模塊通過corner池化輸出用于最終預測的熱圖、embedding向量和偏移。

Detecting Corners

? 預測的熱圖的大小為C\times H\times WC為類別數(shù)量,不包含背景類。每個GT的角點僅對應一個正樣本點,其它的點均為負樣本點,但在訓練時不會等同地懲罰負樣本點,而是減少正樣本點半徑內(nèi)的負樣本點的懲罰力度。這樣做的原因主要在于,靠近正樣本點的負樣本點能夠產(chǎn)生有足夠高IoU的預測框,如圖5所示。
? 半徑的大小根據(jù)目標的大小來設(shè)定,保證產(chǎn)生的預測框能至少滿足IoU大于t。在設(shè)定半徑后,根據(jù)二維高斯核e^{-\frac{x^2+y^2}{2\sigma^2}}進行懲罰衰減,xy為相對正樣本點的距離,\sigma為半徑的1/3。定義p_{cij}為位置(i,j)關(guān)于類別c的預測分數(shù),y_{cij}為根據(jù)高斯核得出的分數(shù),論文設(shè)計了一個focal loss的變種:

? 由于池化層的存在,原圖位置(x,y)在特征圖上通常會被映射到(\lfloor\frac{x}{n}\rfloor, \lfloor\frac{y}{n}\rfloor)n為下采樣因子。在將熱圖中的點映射回原圖時,由于池化的原因可能會有精度的損失,這會極大地影響小目標的IoU計算。為了解決這個問題,論文提出了偏移預測,在將熱圖位置映射到原圖前,小幅調(diào)整角點的位置:

? o_k為偏移值,xy為角點k的坐標。需要注意的是,網(wǎng)絡(luò)對左上角點和右下角點分別預測一組偏移值,偏移值在類別間共用。在訓練時,對正樣本點添加smooth L1損失來訓練角點的偏移值:

Grouping Corners

? 當圖片中存在多個目標時,需要區(qū)分預測的左上角點和右下角點的對應關(guān)系,然后組成完整的預測框。這里論文參考了人體姿態(tài)估計的策略,每個角點預測一個一維的embedding向量,根據(jù)向量間的距離進行對應關(guān)系的判斷。定義e_{t_k}目標k左上角點的embedding向量,e_{b_k}為右下角的embedding向量,使用pull損失和push損失來分別組合以及分離角點:

? e_ke_{t_k}e_{b_k}的平均值,\Delta=1,這里的pull損失和push損失跟偏移一樣,僅對正樣本點使用。

Corner Pooling

? 角點的位置一般都沒有目標信息,為了判斷像素是否為左上角點,需要向右水平查找目標的最高點以及向下垂直查找目標的最左點。基于這樣的先驗知識,論文提出corner pooling來定位角點。
? 假設(shè)需要確定位置(i,j)是否為左上角點,首先定義f_tf_l為左上corner pooling的輸入特征圖,f_{t_{i,j}}f_{l_{i,j}}為輸入特征圖在位置(i,j)上的特征向量。特征圖大小為H\times W,corner pooling首先對f_t(i,j)(i,H)的特征向量進行最大池化輸出向量t_{ij},同樣對f_l(i,j)(W,j)的特征向量也進行最大池化輸出向量l_{ij},最后將t_{ij}l_{ij}相加。完整的計算可表示為:

? 公式6和公式7采用element-wise最大池化。

? 在實現(xiàn)時,公式6和公式7可以如圖6那樣進行整張?zhí)卣鲌D的高效計算,有點類似動態(tài)規(guī)劃。對于左上角點的corner pooling,對輸入特征圖分別進行從右往左和從下往上的預先計算,每個位置只需要跟上一個位置的輸出進行element-wise最大池化即可,最后直接將兩個特征圖相加即可。

? 完整的預測模塊結(jié)構(gòu)如圖7所示,實際上是個改進版residual block,將3\times 3卷積模塊替換為corner pooling模塊,最后輸出熱圖、embedding向量和偏移。

Hourglass Network

? CornerNet使用hourglass網(wǎng)絡(luò)作為主干網(wǎng)絡(luò),這是用于人體姿態(tài)估計任務(wù)中的網(wǎng)絡(luò)。Hourglass模塊如圖3所示,先對下采樣特征,然后再上采樣恢復,同時加入多個短路連接來保證恢復特征的細節(jié)。論文采用的hourglass網(wǎng)絡(luò)包含兩個hourglass模塊,并做了以下改進:

  • 替換負責下采樣的最大池化層為stride=2的卷積
  • 共下采樣五次并逐步增加維度(256, 384, 384, 384, 512)
  • 上采樣使用兩個residual模塊+最近鄰上采樣
  • 短路連接包含2個residual模塊
  • 在網(wǎng)絡(luò)的開頭,使用4個stride=2、channel=128的7\times 7卷積模塊以及1個stride=2、channel=256維度的residual模塊進行處理
  • 原版的hourglass網(wǎng)絡(luò)會對每個hourglass模塊添加一個損失函數(shù)進行有監(jiān)督學習,而論文發(fā)現(xiàn)這對性能有影響,沒有采用這種方法

Experiments


? 對比corner pooling的效果。

? 對比負樣本點懲罰衰減的效果。

? 對比hourglass網(wǎng)絡(luò)與corner檢測搭配的效果

? 對比熱圖和偏移預測的效果。

? 與其它各種類型的檢測網(wǎng)絡(luò)進行對比。

CONCLUSION


? 論文提出了CornerNet,通過檢測角點對的方式進行目標檢測,與當前的SOTA檢測模型有相當?shù)男阅堋ornerNet借鑒人體姿態(tài)估計的方法,開創(chuàng)了目標檢測領(lǐng)域的一個新框架,后面很多論文都基于CorerNet的研究拓展出新的角點目標檢測。

?
?
?

如果本文對你有幫助,麻煩點個贊或在看唄~
更多內(nèi)容請關(guān)注 微信公眾號【曉飛的算法工程筆記】

work-life balance.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容