您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關CornerNet中keypoint-based如何通過定位角點進行目標檢測,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
下面提出了CornerNet,通過檢測角點對的方式進行目標檢測,與當前的SOTA檢測模型有相當的性能。CornerNet借鑒人體姿態估計的方法,開創了目標檢測領域的一個新框架,后面很多論文都基于CorerNet的研究拓展出新的角點目標檢測
? 目標檢測算法大都與anchor box脫不開關系,論文認為使用anchor box有兩個缺點:1) 需要在特征圖上平鋪大量的anchor box避免漏檢,但最后只使用很小一部分的anchor box,造成正負樣本不平衡且拖慢訓練。 2) anchor box的引入帶來了額外的超參數和特別的網絡設計,使得模型訓練變復雜。
? 基于上面的考慮,論文提出了CornerNet,將目標檢測定義為左上角點和右下角點的檢測。網絡結構如圖1所示,通過卷積網絡預測出左上角點和右下角點的熱圖,然后將兩組熱圖組合輸出預測框,徹底去除了anchor box的需要。論文通過實驗也表明CornerNet與當前的主流算法有相當的性能,開創了目標檢測的新范式。
? CornerNet中通過檢測目標的左上角點和右下角點進行目標檢測,卷積網絡預測兩組熱圖(heatmap)來表示不同類別目標的角點位置,分別對應左上角點和右下角點。為了將左上角點和左下角點進行對應,為每個角點預測一個embedding向量,屬于同一個目標的兩個角點的距離會非常小。另外還增加了偏移量(offset)的預測,對角點的位置進行小幅度的調整。
? CornerNet的結構如圖4所示,使用hourglass網絡作為主干網絡,通過獨立的兩個預測模塊輸出兩組結果,分別對應左上角點和右下角點,每個預測模塊通過corner池化輸出用于最終預測的熱圖、embedding向量和偏移。
? 預測的熱圖的大小為$C\times H\times W$,$C$為類別數量,不包含背景類。每個GT的角點僅對應一個正樣本點,其它的點均為負樣本點,但在訓練時不會等同地懲罰負樣本點,而是減少正樣本點半徑內的負樣本點的懲罰力度。這樣做的原因主要在于,靠近正樣本點的負樣本點能夠產生有足夠高IoU的預測框,如圖5所示。
? 半徑的大小根據目標的大小來設定,保證產生的預測框能至少滿足IoU大于$t$。在設定半徑后,根據二維高斯核$e^{-\frac{x^2+y^2}{2\sigma^2}}$進行懲罰衰減,$x$和$y$為相對正樣本點的距離,$\sigma$為半徑的1/3。定義$p_{cij}$為位置$(i,j)$關于類別$c$的預測分數,$y_{cij}$為根據高斯核得出的分數,論文設計了一個focal loss的變種:
? 由于池化層的存在,原圖位置$(x,y)$在特征圖上通常會被映射到$(\lfloor\frac{x}{n}\rfloor, \lfloor\frac{y}{n}\rfloor)$,$n$為下采樣因子。在將熱圖中的點映射回原圖時,由于池化的原因可能會有精度的損失,這會極大地影響小目標的IoU計算。為了解決這個問題,論文提出了偏移預測,在將熱圖位置映射到原圖前,小幅調整角點的位置:
? $o_k$為偏移值,$x$和$y$為角點$k$的坐標。需要注意的是,網絡對左上角點和右下角點分別預測一組偏移值,偏移值在類別間共用。在訓練時,對正樣本點添加smooth L1損失來訓練角點的偏移值:
? 當圖片中存在多個目標時,需要區分預測的左上角點和右下角點的對應關系,然后組成完整的預測框。這里論文參考了人體姿態估計的策略,每個角點預測一個一維的embedding向量,根據向量間的距離進行對應關系的判斷。定義$e_{t_k}$目標$k$左上角點的embedding向量,$e_{b_k}$為右下角的embedding向量,使用pull損失和push損失來分別組合以及分離角點:
? $e_k$為$e_{t_k}$和$e_{b_k}$的平均值,$\Delta=1$,這里的pull損失和push損失跟偏移一樣,僅對正樣本點使用。
? 角點的位置一般都沒有目標信息,為了判斷像素是否為左上角點,需要向右水平查找目標的最高點以及向下垂直查找目標的最左點。基于這樣的先驗知識,論文提出corner pooling來定位角點。 ? 假設需要確定位置$(i,j)$是否為左上角點,首先定義$f_t$和$f_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最大池化。
? 在實現時,公式6和公式7可以如圖6那樣進行整張特征圖的高效計算,有點類似動態規劃。對于左上角點的corner pooling,對輸入特征圖分別進行從右往左和從下往上的預先計算,每個位置只需要跟上一個位置的輸出進行element-wise最大池化即可,最后直接將兩個特征圖相加即可。
? 完整的預測模塊結構如圖7所示,實際上是個改進版residual block,將$3\times 3$卷積模塊替換為corner pooling模塊,最后輸出熱圖、embedding向量和偏移。
? CornerNet使用hourglass網絡作為主干網絡,這是用于人體姿態估計任務中的網絡。Hourglass模塊如圖3所示,先對下采樣特征,然后再上采樣恢復,同時加入多個短路連接來保證恢復特征的細節。論文采用的hourglass網絡包含兩個hourglass模塊,并做了以下改進:
替換負責下采樣的最大池化層為stride=2的卷積
共下采樣五次并逐步增加維度(256, 384, 384, 384, 512)
上采樣使用兩個residual模塊+最近鄰上采樣
短路連接包含2個residual模塊
在網絡的開頭,使用4個stride=2、channel=128的$7\times 7$卷積模塊以及1個stride=2、channel=256維度的residual模塊進行處理
原版的hourglass網絡會對每個hourglass模塊添加一個損失函數進行有監督學習,而論文發現這對性能有影響,沒有采用這種方法
? 對比corner pooling的效果。
? 對比負樣本點懲罰衰減的效果。
? 對比hourglass網絡與corner檢測搭配的效果
? 對比熱圖和偏移預測的效果。
? 與其它各種類型的檢測網絡進行對比。
以上就是CornerNet中keypoint-based如何通過定位角點進行目標檢測,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。