CNN结构:用于检测的CNN结构进化-结合式方法
??????? 原文鏈接:何愷明團(tuán)隊(duì)提出 Focal Loss,目標(biāo)檢測(cè)精度高達(dá)39.1AP,打破現(xiàn)有記錄???? 呀 ??????
??????? 加入Facebook的何凱明繼續(xù)優(yōu)化檢測(cè)CNN網(wǎng)絡(luò),arXiv 上發(fā)現(xiàn)了何愷明所在 FAIR 團(tuán)隊(duì)的最新力作:“Focal Loss for Dense Object Detection(用于密集對(duì)象檢測(cè)的 Focal Loss 函數(shù))”。
??????? 孔濤博士在知乎上這么寫(xiě)道:
目標(biāo)的檢測(cè)和定位中一個(gè)很困難的問(wèn)題是,如何從數(shù)以萬(wàn)計(jì)的候選窗口中挑選包含目標(biāo)物的物體。只有候選窗口足夠多,才能保證模型的 Recall。目前,目標(biāo)檢測(cè)框架主要有兩種:
一種是 one-stage ,例如 YOLO、SSD 等,這一類(lèi)方法速度很快,但識(shí)別精度沒(méi)有 two-stage 的高,其中一個(gè)很重要的原因是,利用一個(gè)分類(lèi)器很難既把負(fù)樣本抑制掉,又把目標(biāo)分類(lèi)好。
另外一種目標(biāo)檢測(cè)框架是 two-stage ,以 Faster RCNN 為代表,這一類(lèi)方法識(shí)別準(zhǔn)確度和定位精度都很高,但存在著計(jì)算效率低,資源占用大的問(wèn)題。
Focal Loss 從優(yōu)化函數(shù)的角度上來(lái)解決這個(gè)問(wèn)題,實(shí)驗(yàn)結(jié)果非常 solid,很贊的工作。
????? 也就是說(shuō),one-stage 檢測(cè)器更快更簡(jiǎn)單,但是準(zhǔn)確度不高。two-stage 檢測(cè)器準(zhǔn)確度高,但太費(fèi)資源。
綜合方法:
?????? 在訓(xùn)練過(guò)程中發(fā)現(xiàn),類(lèi)別失衡是影響 one-stage 檢測(cè)器準(zhǔn)確度的主要原因。那么,如果能將“類(lèi)別失衡”這個(gè)因素解決掉,one-stage 不就能達(dá)到比較高的識(shí)別精度了嗎?
?????? 于是在研究中,何凱明團(tuán)隊(duì)采用 Focal Loss 函數(shù) 來(lái)消除“類(lèi)別失衡”這個(gè)主要障礙。結(jié)果怎樣呢?通過(guò)設(shè)計(jì)一個(gè)新的網(wǎng)絡(luò)......
?????? 為了評(píng)估該損失的有效性,該團(tuán)隊(duì)設(shè)計(jì)并訓(xùn)練了一個(gè)簡(jiǎn)單的密集目標(biāo)檢測(cè)器—RetinaNet,是由一個(gè)骨干網(wǎng)絡(luò)和兩個(gè)特定任務(wù)子網(wǎng)組成的單一網(wǎng)絡(luò),骨干網(wǎng)絡(luò)負(fù)責(zé)在整個(gè)輸入圖像上計(jì)算卷積特征圖,并且是一個(gè)現(xiàn)成的卷積網(wǎng)絡(luò)。 第一個(gè)子網(wǎng)在骨干網(wǎng)絡(luò)的輸出上執(zhí)行卷積對(duì)象分類(lèi);第二個(gè)子網(wǎng)執(zhí)行卷積邊界框回歸。
??????? 試驗(yàn)結(jié)果證明,當(dāng)使用 Focal Loss 訓(xùn)練時(shí),RetinaNet 不僅能趕上 one-stage 檢測(cè)器的檢測(cè)速度,而且還在準(zhǔn)確度上超越了當(dāng)前所有最先進(jìn)的 two-stage 檢測(cè)器。
??????? 可謂魚(yú)和熊掌兼得之。
論文翻譯
摘要
????? 目前準(zhǔn)確度最高的目標(biāo)檢測(cè)器采用的是一種常在 R-CNN 中使用的 two-stage 方法,這種方法將分類(lèi)器應(yīng)用于一個(gè)由候選目標(biāo)位置組成的稀疏樣本集。相反, one-stage 檢測(cè)器則應(yīng)用于一個(gè)由可能目標(biāo)位置組成的規(guī)則密集樣本集,而且更快更簡(jiǎn)單,但是準(zhǔn)確度卻落后于 two-stage 檢測(cè)器。在本文中,我們探討了造成這種現(xiàn)象的原因。
???? 我們發(fā)現(xiàn),在訓(xùn)練密集目標(biāo)檢測(cè)器的過(guò)程中出現(xiàn)的嚴(yán)重的 foreground-background 類(lèi)別失衡,是造成這種現(xiàn)象的主要成因。我們解決這種類(lèi)別失衡(class imbalance) 的方案是,重塑標(biāo)準(zhǔn)交叉熵?fù)p失,使其減少分類(lèi)清晰的樣本的損失的權(quán)重。Focal Loss 將訓(xùn)練集中在一個(gè)稀疏的困難樣本集上,并防止大量簡(jiǎn)單負(fù)樣本在訓(xùn)練的過(guò)程中淹沒(méi)檢測(cè)器。為了評(píng)估該損失的有效性,我們?cè)O(shè)計(jì)并訓(xùn)練了一個(gè)簡(jiǎn)單的密集目標(biāo)檢測(cè)器—RetinaNet。試驗(yàn)結(jié)果證明,當(dāng)使用 Focal Loss訓(xùn)練時(shí),RetinaNet 不僅能趕上 one-stage 檢測(cè)器的檢測(cè)速度,而且還在準(zhǔn)確度上超越了當(dāng)前所有最先進(jìn)的 two-stage 檢測(cè)器。
??? 圖1:我們提出了一種新的損失函數(shù) Focal Loss(焦點(diǎn)損失),這個(gè)損失函數(shù)在標(biāo)準(zhǔn)的交叉熵標(biāo)準(zhǔn)上添加了一個(gè)因子 (1- pt) γ 。 設(shè)定 γ > 0 可以減小分類(lèi)清晰的樣本的相對(duì)損失(pt > .5),使模型更加集中于困難的錯(cuò)誤分類(lèi)的樣本。試驗(yàn)證明,在存在大量簡(jiǎn)單背景樣本(background example)的情況下,我們提出的 Focal Loss 函數(shù)可以訓(xùn)練出準(zhǔn)確度很高的密集對(duì)象檢測(cè)器。
1 簡(jiǎn)介
??? ? ? 當(dāng)前最優(yōu)秀的目標(biāo)檢測(cè)器使用的都是一種由 proposal 驅(qū)動(dòng)的 two-stage 機(jī)制。和在 R-CNN 框架中一樣,第一個(gè)階段生成一個(gè)候選目標(biāo)位置組成的稀疏樣本集,第二個(gè)階段使用一個(gè)卷積神經(jīng)網(wǎng)絡(luò)將各候選位置歸至 foreground 類(lèi)別或 background 類(lèi)別。隨著一些列的進(jìn)步,這個(gè) two-stage 框架可以在難度極高的 COCO benchmark 上一直保持很高的準(zhǔn)確度。
???? ?? 既然 two-stage 檢測(cè)器的結(jié)果這么好,那么一個(gè)很自然的問(wèn)題是:簡(jiǎn)單的 one-stage 檢測(cè)器是否也能實(shí)現(xiàn)類(lèi)似的準(zhǔn)確度? one-stage 檢測(cè)器主要應(yīng)用在一個(gè)由目標(biāo)位置(object locations)、尺度(scales)和長(zhǎng)寬比(aspect ration)組成的規(guī)則密集樣本集上。最近對(duì) one-stage 檢測(cè)器(如 YOLO 和 SSD)進(jìn)行的試驗(yàn)都得出了優(yōu)秀的結(jié)果,相比最優(yōu)秀的 two-stage 方法,得出的檢測(cè)器檢測(cè)速度更快,而且能實(shí)現(xiàn) 10%- 40% 的準(zhǔn)確度。
?? ? ? 本文進(jìn)一步提高了 one-stage 檢測(cè)器的性能:我們?cè)O(shè)計(jì)出了一個(gè) one-stage 目標(biāo)檢測(cè)器,并首次達(dá)到了更復(fù)雜的 two-stage 檢測(cè)器所能實(shí)現(xiàn)的最高 COCO 平均精度,例如( 特征金字塔網(wǎng)絡(luò),Feature Pyramid Network ,FPN )或 Faster R-CNN 的 Mask R-CNN 變體。我們發(fā)現(xiàn)訓(xùn)練過(guò)程中的類(lèi)別失衡是阻礙單階段檢測(cè)器實(shí)現(xiàn)這個(gè)結(jié)果的主要障礙,并提出了一種新的損失函數(shù)來(lái)消除這個(gè)障礙。
?????? 通過(guò)兩階段的級(jí)聯(lián)(cascade)和采樣的啟發(fā)(sampling heuristics),我們解決了像 R-CNN 檢測(cè)器的類(lèi)別失衡問(wèn)題。候選階段(如Selective Search、EdgeBoxes 、DeepMask 和 RPN )可以快速地將候選目標(biāo)位置的數(shù)目縮至更小(例如 1000-2000),過(guò)濾掉大多數(shù)背景樣本。在第二個(gè)分類(lèi)階段中,應(yīng)用抽樣啟發(fā)法(sampling heuristics),例如一個(gè)固定的前景樣本背景樣本比(1:3),或者在線困難樣本挖掘法(online hard example mining),在 foreground 樣本和 background 樣本之間維持可控的平衡。
?????? 相反,one-stage 檢測(cè)器則必須處理一個(gè)由圖像中規(guī)則分布的候選目標(biāo)位置組成的大樣本集。在實(shí)踐中,目標(biāo)位置的總數(shù)目通常可達(dá) 10 萬(wàn)左右,并且密集覆蓋空間位置、尺度和長(zhǎng)寬比。雖然還可以應(yīng)用類(lèi)似的抽樣啟發(fā)法,但是這些方法可能會(huì)失效,如果容易分類(lèi)的背景樣本仍然支配訓(xùn)練過(guò)程話。這種失效是目標(biāo)識(shí)別中的一個(gè)典型問(wèn)題,通常使用 bootstrapping 或困難樣本挖掘來(lái)解決。
?????? 在本文中,我們提出了一個(gè)新的損失函數(shù),它可以替代以往用于解決類(lèi)別失衡問(wèn)題的方法。這個(gè)損失函數(shù)是一個(gè)動(dòng)態(tài)縮放的交叉熵?fù)p失函數(shù),隨著正確分類(lèi)的置信度增加,函數(shù)中的比例因子縮減至零,見(jiàn)圖1。在訓(xùn)練過(guò)程中,這個(gè)比例因子可以自動(dòng)地減小簡(jiǎn)單樣本的影響,并快速地將模型集中在困難樣本上。
?????? 試驗(yàn)證明,Focal Loss 函數(shù)可以使我們訓(xùn)練出準(zhǔn)確度很高的 one-stage 檢測(cè)器,并且在性能上超越使用抽樣啟發(fā)法或困難樣本挖掘法等以往優(yōu)秀方法訓(xùn)練出的 one-stage 檢測(cè)器。最后,我們發(fā)現(xiàn) Focal Loss 函數(shù)的確切形式并不重要,并且證明了其他實(shí)例(instantiations)也可以實(shí)現(xiàn)類(lèi)似的結(jié)果。
?????? 為了證明這個(gè) Focal Loss 函數(shù)的有效性,我們?cè)O(shè)計(jì)了一個(gè)簡(jiǎn)單的 one-stage 目標(biāo)檢測(cè)器—RetinaNet,它會(huì)對(duì)輸入圖像中目標(biāo)位置進(jìn)行密集抽樣。這個(gè)檢測(cè)器有一個(gè)高效的 in-network 特征金字塔(feature pyramid),并使用了錨點(diǎn)盒(anchor box)。我們?cè)谠O(shè)計(jì)它時(shí)借鑒了很多種想法。RetinaNet 的檢測(cè)既高效又準(zhǔn)確。我們最好的模型基于 ResNet-101- FPN 骨干網(wǎng),在 5fps 的運(yùn)行速度下,我們?cè)?COCO test-dev 上取得了 39.1 AP 的成績(jī),如圖2 所示,超過(guò)目前公開(kāi)的單一模型在 one-stage 和 two-stage 檢測(cè)器上取得的最好成績(jī)。
???? 圖2:橫坐標(biāo)是檢測(cè)器在COCO test-dev 上的檢測(cè)速度(ms),縱坐標(biāo)是準(zhǔn)確度(AP: average precision)的比值。在 Focal Loss 的作用下,我們簡(jiǎn)單的 one-stage RetinaNet 檢測(cè)器打敗了先前所有的 one-stage 檢測(cè)器和 two-stage 檢測(cè)器,包括目前成績(jī)最好的 Faster R-CNN系統(tǒng)。我們?cè)趫D 2 中按 5 scales(400-800 像素)分別用藍(lán)色圓圈和橙色菱形表示了 ResNet-50-FPN 和 ResNet-101-FPN 的 RetinaNet 變體。忽略準(zhǔn)確度較低的情況(AP < 25),RetinaNet 的表現(xiàn)優(yōu)于當(dāng)前所有的檢測(cè)器,訓(xùn)練時(shí)間更長(zhǎng)時(shí)的檢測(cè)器達(dá)到了 39.1 AP 的成績(jī)。
2. Focal Loss
首先,我們介紹下二進(jìn)制分類(lèi)(binary classification)的交叉熵(CE)損失開(kāi):
?????
公式1中,y∈{±1} 指定了 ground-truth class,p∈[0,1] 是模型對(duì)于標(biāo)簽為 y = 1 的類(lèi)的估計(jì)概率。為了方便起見(jiàn),我們定義 pt 為:
?????????
公式2可以轉(zhuǎn)寫(xiě)稱(chēng):
??????????????? CE(p,y)=CE(pt)= -log(pt)
解決 class imbalance 的常見(jiàn)方法是分別為 class 1 和 class -1 引入加權(quán)因子 α∈[0; 1]、1-α。
α-balanced 的CE損耗可寫(xiě)為:
??????????????? CE(pt)= -at log(pt)?????????????????????????????????????????? (3)
更正式地,我們建議為交叉熵?fù)p失增加一個(gè)調(diào)節(jié)因子(1 - pt)γ,其中 γ≥0。于是 Focal Loss 可定義為:
??????????????以下是我們?cè)趯?shí)踐中使用的 Focal Loss:
?????????????? FL(pt)= -at? *(1-pt)^r? *log(pt)??????????????????????????? (5)
3. RetinaNet 檢測(cè)器
??????? RetinaNet 是由一個(gè)骨干網(wǎng)絡(luò)和兩個(gè)特定任務(wù)子網(wǎng)組成的單一網(wǎng)絡(luò)。骨干網(wǎng)絡(luò)負(fù)責(zé)在整個(gè)輸入圖像上計(jì)算卷積特征圖,并且是一個(gè)現(xiàn)成的卷積網(wǎng)絡(luò)。 第一個(gè)子網(wǎng)在骨干網(wǎng)絡(luò)的輸出上執(zhí)行卷積對(duì)象分類(lèi);第二個(gè)子網(wǎng)執(zhí)行卷積邊界框回歸。如下圖所示。
??????圖3:one-stage RetinaNet 網(wǎng)絡(luò)結(jié)構(gòu)
4. 訓(xùn)練
????????? 主要看訓(xùn)練過(guò)程,怎么沒(méi)有翻譯出來(lái)呢????
?????????
5. 實(shí)驗(yàn)
圖4:收斂模型的不同 γ 值的正、負(fù)樣本的歸一化損失的累積分布函數(shù)。 改變 γ 對(duì)于正樣本的損失分布的影響很小。 然而,對(duì)于負(fù)樣本來(lái)說(shuō),大幅增加 γ 會(huì)將損失集中在困難的樣本上,而不是容易的負(fù)樣本上。
表2:目標(biāo)檢測(cè)單模型結(jié)果(邊界框AP)VS COCO test-dev 最先進(jìn)的方法
6. 結(jié)論
??????
??????? 圖5: 作為 xt = yx 的函數(shù),Focal Loss 變體與交叉熵相比較。原來(lái)的 FL(Focal Loss)和替代變體 FL* 都減少了較好分類(lèi)樣本的相對(duì)損失(xt> 0)。
表3:FL 和 FL* VS CE(交叉熵) 的結(jié)果。
????????????
后記:
?????? 有沒(méi)有卵用,還必須看放出源代碼的,網(wǎng)絡(luò)監(jiān)測(cè)的真正效果如何,一時(shí)還難以真正評(píng)測(cè)。
總結(jié)
以上是生活随笔為你收集整理的CNN结构:用于检测的CNN结构进化-结合式方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 积极面对生活的句子220个
- 下一篇: 推荐系统入门:作为Rank系统的推荐系统