ECCV2020 | CPNDet:Anchor-free兩階段的目標(biāo)檢測(cè)框架,詳解
點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
CPNDet
1 Introduction
2 Approach
2.1 CPN 網(wǎng)絡(luò)框架
2.2 Inference 階段
3 Experiments
4 Conclusion

論文地址:https://arxiv.org/abs/2007.13816
開(kāi)源代碼:https://github.com/Duankaiwen/CPNDet
其他解讀:https://mp.weixin.qq.com/s/pPvDC_3SuGgZ2z6e5F8RDQ
本文亮點(diǎn)
提出了一種anchor-free兩階段的目標(biāo)檢測(cè)框架。
第一階段的感興趣區(qū)域是使用anchor-free來(lái)提取的,查找可能的角點(diǎn)關(guān)鍵點(diǎn)組合來(lái)提取多個(gè)候選目標(biāo)object proposals。第二階段是借鑒了一階段中的角點(diǎn)組合進(jìn)行提取proposal,使用兩步分類器對(duì)proposal進(jìn)行過(guò)濾,為每個(gè)候選object分配一個(gè)類別標(biāo)簽。
1 Introduction
本文提出了一種基于anchor-free的兩階段的角點(diǎn)目標(biāo)檢測(cè)器。第一階段是通過(guò)角點(diǎn)提取出感興趣區(qū)域,第二階段是對(duì)感興趣區(qū)域進(jìn)行預(yù)測(cè)與回歸。
提出這種方法,有兩個(gè)論點(diǎn):
為什么是基于anchor-free?——檢測(cè)方法的召回率取決于它對(duì)不同幾何形狀的物體的定位能力,尤其是那些形狀罕見(jiàn)的物體,而anchor-free方法(尤其是基于定位物體邊界的方法)在這項(xiàng)任務(wù)中可能更好;
為什么要兩階段?——anchor-free方法通常會(huì)產(chǎn)生大量的誤檢,因此需要單獨(dú)的分類器來(lái)提高檢測(cè)精度。
基于CornerNet的關(guān)鍵點(diǎn)檢測(cè)方法,但是并沒(méi)有使用對(duì)關(guān)鍵點(diǎn)進(jìn)行分組來(lái)實(shí)現(xiàn)目標(biāo)檢測(cè);而是使用將所有有效的角點(diǎn)組合作為潛在對(duì)象,并且借用二階段的思想,即訓(xùn)練一個(gè)分類器,根據(jù)對(duì)應(yīng)的區(qū)域特征來(lái)區(qū)分真實(shí)物體和錯(cuò)誤匹配的關(guān)鍵點(diǎn)。
分類器有兩個(gè)步驟:
二元分類器,過(guò)濾掉不符合目標(biāo)的proposal。
多元分類器,對(duì)仍存在的多個(gè)類別的目標(biāo)分?jǐn)?shù)進(jìn)行排序。

圖解:
上圖實(shí)驗(yàn)中,評(píng)估了四種目標(biāo)提取proposal的方法。
第一行:基于anchor-based方法(faster rcnn)很難找到具有特殊形狀的目標(biāo)(比如大尺寸目標(biāo)、目標(biāo)的橫縱比例很大),并且沒(méi)有得到更高的召回率。
第二行:基于anchor-free方法(cornerNet)由于缺乏語(yǔ)義信息,可能會(huì)錯(cuò)誤地將不相關(guān)的關(guān)鍵點(diǎn)分組到一個(gè)目標(biāo)中,導(dǎo)致出現(xiàn)大量的錯(cuò)誤檢測(cè)。
綠色框表示true positives,藍(lán)色框表示false positives,紅色框表示false negatives。
2 Approach
作者的核心觀點(diǎn):
anchor-free定位方法具有更好地靈活性來(lái)定位任意幾何形狀的對(duì)象,可以獲得較高的召回率。
由于anchor-free的方法可能會(huì)檢測(cè)出大量的錯(cuò)誤檢測(cè),因此需要采用二階段的方法來(lái)過(guò)濾出錯(cuò)誤檢測(cè)。
基于anchor的方法是通過(guò)實(shí)驗(yàn)和經(jīng)驗(yàn)設(shè)定錨點(diǎn),因?yàn)槭侨藶樵O(shè)置anchor,導(dǎo)致了算法不夠靈活,也不能夠?qū)μ厥庑螤畹奈矬w進(jìn)行精確檢測(cè),容易發(fā)生漏檢問(wèn)題。
圖解:
基于anchor的faster rcnn的召回率較低,實(shí)驗(yàn)發(fā)現(xiàn),對(duì)于縱橫比為5:1、8:1等情況下,召回率特別低,甚至比anchor-free的方法都低,原因是:這種縱橫比沒(méi)有預(yù)定義anchor。
FCOS也存在類似的現(xiàn)象,F(xiàn)COS是一種anchor-free方法,它通過(guò)關(guān)鍵點(diǎn)和到邊界的距離來(lái)表示對(duì)象。當(dāng)邊界遠(yuǎn)離中心時(shí),很難預(yù)測(cè)準(zhǔn)確的距離。
實(shí)驗(yàn)發(fā)現(xiàn),cornerNet和centerNet就沒(méi)有這個(gè)問(wèn)題,因?yàn)樗菍㈥P(guān)鍵點(diǎn)分組到一個(gè)對(duì)象中,解決了角點(diǎn)對(duì)距離的問(wèn)題。
因此,本文作者選擇了anchor-free的方法,特別是選擇了角點(diǎn)對(duì)分組的方法來(lái)提高目標(biāo)檢測(cè)的召回率。
圖解:
對(duì)比在anchor-free方法下,不同的backbone計(jì)算得到的AP和召回率的結(jié)果。
APoriginal AP_{original} APoriginal表示原始輸出的AP, APrefined AP_{refined} APrefined表示刪除非目標(biāo)proposal之后的AP, APcorrect AP_{correct} APcorrect表示每個(gè)留下來(lái)的proposal正確分配標(biāo)簽后的AP。
實(shí)驗(yàn)表明,修正過(guò)后的AP和AR都得到了提高,因此說(shuō)明這個(gè)想法的可行性。
參數(shù)說(shuō)明:
I:原始圖像區(qū)域
bn?, n=1,2,…… , N:ground-truth bbox
cn?, n=1,2,……, N:ground-truth 對(duì)應(yīng)的類別
In?, n=1,2,……, N:ground-truth 相對(duì)應(yīng)邊界框的圖像區(qū)域
bm, m=1,2,……, M:定位目標(biāo)的bbox
bm:定位目標(biāo)對(duì)應(yīng)的類別標(biāo)簽
2.1 CPN 網(wǎng)絡(luò)框架
圖解:
上圖是本文提出的CPN的網(wǎng)絡(luò)結(jié)構(gòu)圖。它使用anchor-free方法提取object proposal,然后進(jìn)行有效的區(qū)域特征計(jì)算和分類以濾除誤報(bào)。
第一步,先預(yù)測(cè)角點(diǎn),組成多個(gè)目標(biāo)proposal;
每個(gè)對(duì)象都有兩個(gè)關(guān)鍵點(diǎn)(左上角和右下角)來(lái)確定其位置。 對(duì)于每一個(gè)類別,計(jì)算兩個(gè)熱圖(熱圖上的每個(gè)值表示對(duì)應(yīng)位置出現(xiàn)角點(diǎn)的概率),與原始圖像相比分辨率降低了4倍。熱圖有兩個(gè)loss:

分別表示熱圖上關(guān)鍵點(diǎn)損失(用于定位熱圖上的關(guān)鍵點(diǎn))和熱圖中偏移損失(用于學(xué)習(xí)其偏移到準(zhǔn)確的角點(diǎn)位置)。
對(duì)每一對(duì)有效的關(guān)鍵點(diǎn)定義一個(gè)目標(biāo)的proposal(有效指的是兩個(gè)關(guān)鍵點(diǎn)屬于同一個(gè)類,且左上角的x和y坐標(biāo)要分別小于右下角的x和y的坐標(biāo))。但是,這可能會(huì)導(dǎo)致大量的誤報(bào),因此把區(qū)分和分類交給二階段來(lái)做。
第二步,使用兩步分類過(guò)濾出錯(cuò)誤檢測(cè),為每一個(gè)留下來(lái)的proposal分配一個(gè)類別標(biāo)簽。
用一種輕量級(jí)的二元分類器濾除掉80%的proposal(大量的非目標(biāo)),然后用一個(gè)更精細(xì)的分類器來(lái)確定每個(gè)留下來(lái)的proposal的類別標(biāo)簽和置信度。
假設(shè)M是K個(gè)左上角和K個(gè)右下角關(guān)鍵點(diǎn)生成的目標(biāo)proposal總數(shù)(基于centernet將 K設(shè)置為70,會(huì)使得每個(gè)圖像上平均有2500個(gè)目標(biāo)proposal)。因此,設(shè)計(jì)了一種兩步分類過(guò)濾器。
兩步分類器具體過(guò)程:
第一步: 訓(xùn)練一個(gè)二進(jìn)制分類器,以確定每個(gè)proposal是否是一個(gè)目標(biāo)對(duì)象。
首先采用卷積核大小為7×7的RoIAlign來(lái)提取每個(gè)proposal上的box特征。
然后通過(guò)32×7×7的卷積層得到每個(gè)proposal的分類分?jǐn)?shù)。從而建立一個(gè)二元分類器。二分類的損失函數(shù)為:

其中, N表示正樣本的數(shù)量,pm∈[0,1],pm∈[0,1]表示第m個(gè)proposal的置信度分?jǐn)?shù),IoUm表示第m個(gè)proposal與所有g(shù)t bbox之間最大的IoU值。τ表示IoU的閾值(設(shè)置為0.7)。α=2表示平滑損失函數(shù)的超參數(shù), π=0.1。
第二步: 為每個(gè)留下來(lái)的proposal分配一個(gè)類別標(biāo)簽。
使用C輸出訓(xùn)練另一個(gè)分類器,其中C是數(shù)據(jù)集中類別的數(shù)目。
基于第一步提取的RoIAlign特征的基礎(chǔ)上,從類別特征映射中提取特征以保留更多的信息,對(duì)于每一個(gè)留下來(lái)的proposal,使用256×7×7的卷積層獲得 C C C維(表示類別)的向量。然后建立C?way分類器(為每個(gè)留下來(lái)的proposal建立單獨(dú)的分類器),其損失函數(shù)為:

其中, M^和 N^分別表示留下來(lái)proposal的數(shù)量和在這其中正樣本的數(shù)量。IoUm,c表示第m個(gè)proposal與第c個(gè)類別中所有g(shù)t bbox之間最大的IoU值。τ表示IoU的閾值保持不變(設(shè)置為0.7)。qm,c表示第 m m m個(gè)目標(biāo)中第c個(gè)類別的分類分?jǐn)?shù)。β=2與α=2相似的作用。
整個(gè)網(wǎng)絡(luò)的損失函數(shù)為:
前兩項(xiàng)表示關(guān)鍵點(diǎn)定位和偏移損失,后兩項(xiàng)表示二分類和多分類的損失。
PS:
DeNet (《Denet: Scalable real-time object detection withdirected sparse sampling》)和本文的方法在想法上是相似的。不同之處在于,本文為每個(gè)角點(diǎn)配備一個(gè)多類別標(biāo)簽而不是一個(gè)二進(jìn)制標(biāo)簽,因此本文的方法可以依靠類別標(biāo)簽消除不必要的無(wú)效角點(diǎn)對(duì),以節(jié)省整個(gè)框架的計(jì)算成本;其次,本文使用一種額外的輕量級(jí)二進(jìn)制分類方法減少分類網(wǎng)絡(luò)要處理的proposal數(shù)量,而DeNet僅依賴一個(gè)分類網(wǎng)絡(luò)。最后,本文的方法為兩個(gè)分類器設(shè)計(jì)了一種新的focal損失函數(shù)變體,它不同于DeNet中的最大似然函數(shù),這主要是為了解決訓(xùn)練過(guò)程中正樣本和負(fù)樣本之間的不平衡問(wèn)題。
2.2 Inference 階段
推理階段與訓(xùn)練階段類似,只是設(shè)置了閾值過(guò)濾掉低質(zhì)量的proposals。由于proposals的預(yù)測(cè)分?jǐn)?shù)都較低,因此選擇了較低的閾值(這里設(shè)置為0.2),讓更多的proposals都留下來(lái)。
當(dāng)閾值設(shè)置為0.2時(shí),平均保留下來(lái)的ROI大約占總量的20%,二分類所使用的計(jì)算量約為多分類計(jì)算量的10%,更凸顯了第二階段的優(yōu)勢(shì)。
對(duì)于保留在第二步的proposals,為其分配最多兩個(gè)類別標(biāo)簽,對(duì)應(yīng)于角點(diǎn)的主要類別和proposals的主要類別(兩個(gè)類別可能不同,若不同時(shí),proposal將成為兩個(gè)得分可能不同的proposal)。
對(duì)于每個(gè)候選類別,使用 s 1 s_{1} s1表示角點(diǎn)分類分?jǐn)?shù)(兩個(gè)角點(diǎn)關(guān)鍵點(diǎn)的平均值,范圍是(0,1)。若兩個(gè)角點(diǎn)的分?jǐn)?shù)不同,將兩個(gè)角點(diǎn)的平均得分作為 s 1 s_{1} s1)。 s 2 s_{2} s2表示區(qū)域分類分?jǐn)?shù)(多類別分類器預(yù)測(cè)的proposal類別標(biāo)簽的概率,范圍是(0,1))。
通過(guò)公式計(jì)算最終的類別分?jǐn)?shù):s c = ( s 1 + 0.5 ) ( s 2 + 0.5 ) s_{c}=(s_{1}+0.5)(s_{2}+0.5) sc=(s1+0.5)(s2+0.5),最后將 s c s_{c} sc進(jìn)行標(biāo)準(zhǔn)化到[0,1]。
最后,選取分?jǐn)?shù)最高的100個(gè)proposals進(jìn)行評(píng)估。
下圖中,顯示了兩個(gè)分類器對(duì)CPN的檢測(cè)性能對(duì)比。

圖解:由上表可知,兩個(gè)分類器起到了信息互補(bǔ)的作用,使得檢測(cè)精度大幅度的提升了。
3 Experiments
backbone: 52/104層的Hourglass網(wǎng)絡(luò)
數(shù)據(jù)集: MS-COCO
框架: Pytorch
baseline: 基于CornerNet和CenterNet

圖解:
“R”、“X”、“HG”、“DCN”和“?”分別表示ResNet、ResNeXt、Hourglass、可變形卷積網(wǎng)絡(luò)和多尺度訓(xùn)練或測(cè)試。
上圖表示各個(gè)模型精度的對(duì)比。

圖解:
AF表示平均錯(cuò)誤發(fā)現(xiàn)率,該值越低越好,表示錯(cuò)誤檢測(cè)的個(gè)數(shù)就越少。
CPN-52和CPN-104報(bào)告的AF分別為33.4%和30.6%,低于直接使用baseline:CornerNet和CenterNet。
AF=1?AP~

圖解:
上圖表示在兩個(gè)不同的檢測(cè)方法中加入同樣的創(chuàng)新點(diǎn),效果差別不大。

圖解:
上圖表示三種方法的檢測(cè)結(jié)果圖對(duì)比。從上至下分別是:CornerNet, CenterNet 和CPN。
綠色框表示true positive,紅色框表示false positive。

圖解:
上圖表示各個(gè)網(wǎng)絡(luò)模型速度的對(duì)比。
在相同的設(shè)置下,CPN-104的FPS/AP為7.3/46.8% 比CenterNet-104 5.1/44.8%,速度極快,效果又好。
CPN-52的主干網(wǎng)較小,其FPS/AP為9.9/43.8%,同樣也優(yōu)于CornerNet52和CenterNet-52。
4 Conclusion
提出了一種anchor-free兩階段的目標(biāo)檢測(cè)框架。
基于anchor-free方法提取proposal更加靈活,通過(guò)兩步分類方法進(jìn)行預(yù)測(cè)。
?
