溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

發(fā)布時(shí)間:2021-12-24 09:24:25 來(lái)源:億速云 閱讀:235 作者:柒染 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè),小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

下面提出了CornerNet,通過(guò)檢測(cè)角點(diǎn)對(duì)的方式進(jìn)行目標(biāo)檢測(cè),與當(dāng)前的SOTA檢測(cè)模型有相當(dāng)?shù)男阅?。CornerNet借鑒人體姿態(tài)估計(jì)的方法,開(kāi)創(chuàng)了目標(biāo)檢測(cè)領(lǐng)域的一個(gè)新框架,后面很多論文都基于CorerNet的研究拓展出新的角點(diǎn)目標(biāo)檢測(cè)

Introduction


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

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

CornerNet


Overview

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

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

Detecting Corners

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

? $o_k$為偏移值,$x$和$y$為角點(diǎn)$k$的坐標(biāo)。需要注意的是,網(wǎng)絡(luò)對(duì)左上角點(diǎn)和右下角點(diǎn)分別預(yù)測(cè)一組偏移值,偏移值在類別間共用。在訓(xùn)練時(shí),對(duì)正樣本點(diǎn)添加smooth L1損失來(lái)訓(xùn)練角點(diǎn)的偏移值:

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

Grouping Corners

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

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

? $e_k$為$e_{t_k}$和$e_{b_k}$的平均值,$\Delta=1$,這里的pull損失和push損失跟偏移一樣,僅對(duì)正樣本點(diǎn)使用。

Corner Pooling

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

? 角點(diǎn)的位置一般都沒(méi)有目標(biāo)信息,為了判斷像素是否為左上角點(diǎn),需要向右水平查找目標(biāo)的最高點(diǎn)以及向下垂直查找目標(biāo)的最左點(diǎn)?;谶@樣的先驗(yàn)知識(shí),論文提出corner pooling來(lái)定位角點(diǎn)。 ? 假設(shè)需要確定位置$(i,j)$是否為左上角點(diǎn),首先定義$f_t$和$f_l$為左上corner pooling的輸入特征圖,$f_{t_{i,j}}$和$f_{l_{i,j}}$為輸入特征圖在位置$(i,j)$上的特征向量。特征圖大小為$H\times W$,corner pooling首先對(duì)$f_t$中$(i,j)$到$(i,H)$的特征向量進(jìn)行最大池化輸出向量$t_{ij}$,同樣對(duì)$f_l$中$(i,j)$到$(W,j)$的特征向量也進(jìn)行最大池化輸出向量$l_{ij}$,最后將$t_{ij}$和$l_{ij}$相加。完整的計(jì)算可表示為:

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

Hourglass Network

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

  • 替換負(fù)責(zé)下采樣的最大池化層為stride=2的卷積

  • 共下采樣五次并逐步增加維度(256, 384, 384, 384, 512)

  • 上采樣使用兩個(gè)residual模塊+最近鄰上采樣

  • 短路連接包含2個(gè)residual模塊

  • 在網(wǎng)絡(luò)的開(kāi)頭,使用4個(gè)stride=2、channel=128的$7\times 7$卷積模塊以及1個(gè)stride=2、channel=256維度的residual模塊進(jìn)行處理

  • 原版的hourglass網(wǎng)絡(luò)會(huì)對(duì)每個(gè)hourglass模塊添加一個(gè)損失函數(shù)進(jìn)行有監(jiān)督學(xué)習(xí),而論文發(fā)現(xiàn)這對(duì)性能有影響,沒(méi)有采用這種方法

Experiments


CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

? 對(duì)比corner pooling的效果。

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

? 對(duì)比負(fù)樣本點(diǎn)懲罰衰減的效果。

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

? 對(duì)比熱圖和偏移預(yù)測(cè)的效果。

CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè)

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

以上就是CornerNet中keypoint-based如何通過(guò)定位角點(diǎn)進(jìn)行目標(biāo)檢測(cè),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI