Label Assign综述:提升目标检测上限
原文鏈接:https://bbs.cvmart.net/topics/2960
專注計(jì)算機(jī)視覺(jué)前沿資訊和技術(shù)干貨
微信公眾號(hào):極市平臺(tái)
官網(wǎng):https://www.cvmart.net/
最近因?yàn)锳utoAssign這篇paper的原因,再加上之前對(duì)目標(biāo)檢測(cè)中l(wèi)abel assign問(wèn)題很感興趣, 看了幾篇label assign相關(guān)論文(FreeAnchor、ATSS、AutoAssign),梳理一下幾篇論文的關(guān)系做個(gè)記錄~~
我用一張圖大致梳理出幾個(gè)label assign相關(guān)論文的關(guān)系
FreeAnchor、ATSS、AutoAssign都是Label Assign方面的改進(jìn)。ATSS提出RetinaNet和FCOS的gap主要源于采樣方式的不同,ATSS提出更好的Label Assign,來(lái)縮小RetinaNet和FCOS的差距,FreeAnchor在RetinaNet的基礎(chǔ)上提出更好的Label Assign,AutoAssign在FCOS的基礎(chǔ)上提出更好的Label Assign。
RetinaNet是Anchor-based經(jīng)典算法,FCOS是Anchor-Free的經(jīng)典算法,FCOS在RetinaNet的基礎(chǔ)上,去掉anchor先驗(yàn),轉(zhuǎn)變成point先驗(yàn),同時(shí)增加了center-ness分支來(lái)去除低質(zhì)量的point采樣。相關(guān)的算法細(xì)節(jié)可以看我之前的筆記
陀飛輪:目標(biāo)檢測(cè):Anchor-Free時(shí)代
陀飛輪:Soft Sampling:探索更有效的采樣策略
ReinaNet和FCOS主要有3點(diǎn)不同:
1.每個(gè)位置的先驗(yàn)數(shù)量不同。RetinaNet每個(gè)位置有幾個(gè)anchor先驗(yàn),而FCOS每個(gè)位置只有一個(gè)point先驗(yàn)。
2.正負(fù)樣本的采樣方式不同。RetinaNet通過(guò)IOU來(lái)選擇正負(fù)樣本,而FCOS通過(guò)空間和尺度的約束來(lái)選擇正負(fù)樣本。
3.回歸的起始點(diǎn)不同。RetinaNet回歸的起始點(diǎn)是篩選過(guò)的anchor box,而FCOS回歸的起始點(diǎn)是篩選過(guò)的point box。
Inconsistency Removal
FCOS相比于只設(shè)置一個(gè)anchor先驗(yàn)的RetinaNet來(lái)說(shuō),COCO數(shù)據(jù)集上的mAP高差不多5個(gè)點(diǎn),為了公平的比較RetinaNet和FCOS的精度差異的原因,ATSS的paper中用一致的trick對(duì)RetinaNet和FCOS進(jìn)行實(shí)驗(yàn)。如實(shí)驗(yàn)所示,相同trick設(shè)置下,RetinaNet比FCOS少0.8個(gè)點(diǎn),這時(shí)RetinaNet和FCOS的差別僅僅在于采樣方式和回歸起點(diǎn)的不同。
Essential Difference
為了進(jìn)一步探究采樣方式和回歸起點(diǎn)對(duì)于精度的影響,ATSS中對(duì)RetinaNet和FCOS排列組合了四種實(shí)驗(yàn)進(jìn)行比較。如實(shí)驗(yàn)所示,回歸起點(diǎn)對(duì)精度影響微乎其微,采樣方式才是RetinaNet和FCOS最本質(zhì)的差別。
通過(guò)上述實(shí)驗(yàn)觀察,引出了目標(biāo)檢測(cè)任務(wù)中非常重要的難點(diǎn),How to define positive and negative training samples? 也就是本文關(guān)注的label assign問(wèn)題。好的label assign方式可以提升目標(biāo)檢測(cè)器的上限。
ATSS
ATSS的paper中進(jìn)而提出了一種更加合適的label assign方式,稱為ATSS。
ATSS吸收了RetinaNet和FCOS的采樣方式的優(yōu)點(diǎn),ATSS采樣方式如下:
1.基于anchor box和ground-truth的中心點(diǎn)距離選擇候選正樣本
2.使用候選anchor box的mean和std之和作為IOU閾值自適應(yīng)的挑選候選正樣本
3.通過(guò)候選正樣本中心是否落在ground-truth內(nèi)篩選出最終的正樣本
下圖中顯示出了ATSS對(duì)于不同分布的樣本可以自適應(yīng)的調(diào)整閾值,挑選到合適尺度下的正樣本。
自適應(yīng)閾值為:
t_g=m_g+v_gt \_ { g } = m \_ { g } + v \_ { g } t_g=m_g+v_g
RetinaNet和FCOS都可以疊加ATSS的采樣方式,實(shí)驗(yàn)結(jié)果顯示,RetinaNet和FCOS在ATSS的采樣方式下,mAP基本上持平,縮小了Anchor-based和Anchor-Free之間的精度差異。驗(yàn)證了好的采樣方式能夠提升目標(biāo)檢測(cè)精度的上限。
FreeAnchor
將檢測(cè)訓(xùn)練過(guò)程看成一個(gè)極大似然估計(jì)問(wèn)題
L(θ)=∑_a_j∈A_+∑_b_i∈BC_ijL_ijcls(θ)+β∑_a_j∈A_+∑_b_i∈BC_ijL_ijloc(θ)+∑_a_j∈A_?L_jbg(θ)\mathcal { L } ( \theta ) = \sum \_ { a \_ { j } \in A \_ { + } } \sum \_ { b \_ { i } \in B } C \_ { i j } \mathcal { L } \_ { i j } ^ { c l s } ( \theta ) + \beta \sum \_ { a \_ { j } \in A \_ { + } } \sum \_ { b \_ { i } \in B } C \_ { i j } \mathcal { L } \_ { i j } ^ { l o c } ( \theta ) + \sum \_ { a \_ { j } \in A \_ { - } } \mathcal { L } \_ { j } ^ { b g } ( \theta ) L(θ)=∑_a_j∈A_+∑_b_i∈BC_ijL_ijcls(θ)+β∑_a_j∈A_+∑_b_i∈BC_ijL_ijloc(θ)+∑_a_j∈A_?L_jbg(θ)
P(θ)=e?L(θ)=∏_a_j∈A_+(∑_b_i∈BC_ije?L_ijcls(θ))∏_a_j∈A_+(∑_b_i∈BC_ije?βL_ijloc(θ))∏_a_j∈A_?e?L_jbg(θ)=∏_a_j∈A_+(∑_b_i∈BC_ijP_ijcls(θ))∏_a_j∈A_+(∑_b_i∈BC_ijP_ijloc(θ))∏_a_j∈A_?P_jbg(θ)\begin{aligned} \mathcal { P } ( \theta ) & = e ^ { - \mathcal { L } ( \theta ) } \\ & = \prod \_ { a \_ { j } \in A \_ { + } } ( \sum \_ { b \_ { i } \in B } C \_ { i j } e ^ { - \mathcal { L } \_ { i j } ^ { c l s } ( \theta ) }) \prod \_ { a \_ { j } \in A \_ { + } } ( \sum \_ { b \_ { i } \in B } C \_ { i j } e ^ { - \beta \mathcal { L } \_ { i j } ^ { l o c } ( \theta ) }) \prod \_ { a \_ { j } \in A \_ { - } } e ^ { - \mathcal { L } \_ { j } ^ { b g } ( \theta ) } \\ & = \prod \_ { a \_ { j } \in A \_ { + } } ( \sum \_ { b \_ { i } \in B } C \_ { i j } \mathcal { P } \_ { i j } ^ { c l s } ( \theta ) ) \prod \_ { a \_ { j } \in A \_ { + } } ( \sum \_ { b \_ { i } \in B } C \_ { i j } \mathcal { P } \_ { i j } ^ { l o c } ( \theta ) ) \prod \_ { a \_ { j } \in A \_ { - } } \mathcal { P } \_ { j } ^ { b g } ( \theta ) \end{aligned} P(θ)?=e?L(θ)=∏_a_j∈A_+(∑_b_i∈BC_ije?L_ijcls(θ))∏_a_j∈A_+(∑_b_i∈BC_ije?βL_ijloc(θ))∏_a_j∈A_?e?L_jbg(θ)=∏_a_j∈A_+(∑_b_i∈BC_ijP_ijcls(θ))∏_a_j∈A_+(∑_b_i∈BC_ijP_ijloc(θ))∏_a_j∈A_?P_jbg(θ)?
構(gòu)造極大似然估計(jì)問(wèn)題的recall和precision似然函數(shù)
轉(zhuǎn)變成損失函數(shù)
FreeAnchor在RetianNet的基礎(chǔ)上,將檢測(cè)器的訓(xùn)練過(guò)程定義成一個(gè)極大似然估計(jì)問(wèn)題,通過(guò)優(yōu)化recall和precision似然函數(shù)的loss,自適應(yīng)的將匹配的anchor構(gòu)建成bag of anchors。
將檢測(cè)看成一個(gè)極大似然估計(jì)問(wèn)題的好處是可以不用平衡分類和定位分支,通過(guò)一個(gè)loss來(lái)監(jiān)督檢測(cè)器的訓(xùn)練,并且可以自適應(yīng)的調(diào)整匹配的anchor。
如下圖所示,隨著訓(xùn)練的進(jìn)行,檢測(cè)器挑選出匹配的anchor。
AutoAssign
但是FreeAnchor和ATSS本質(zhì)上還是通過(guò)中心先驗(yàn)、IOU、空間和尺度約束來(lái)進(jìn)行l(wèi)abel assign,避免不了大量超參數(shù)的調(diào)整,不是完完全全的自適應(yīng)label assign。
最近的AutoAssign在FCOS的基礎(chǔ)上,通過(guò)引入ImpObj、Center Weighting和Confidence Weighting三個(gè)分支,將FCOS中根據(jù)空間和尺度定義正負(fù)樣本的方式和center-ness分支都去掉,將label assign做的更加徹底,完完全全通過(guò)CNN學(xué)習(xí)自適應(yīng)的label assign方式。
借鑒了作者的理解:https://zhuanlan.zhihu.com/p/158907507
From VanillaDet to AutoAssign
VanillaDet 是指:對(duì)于一個(gè) gt box,所有在這個(gè) gt box 內(nèi)的位置(所有 FPN 層都包含在內(nèi)),都是這個(gè) gt 的正樣本;反之,所有不落在 gt 框內(nèi)部的位置都是負(fù)樣本。可以理解為label assign的下限。
從實(shí)驗(yàn)結(jié)果可知,更好的label assign方式可以大幅度提升檢測(cè)器的精度。
Center Weighting
引入高斯中心先驗(yàn),通過(guò)與gt中心點(diǎn)的距離學(xué)習(xí)出不同類別自適應(yīng)的中心先驗(yàn)
G(d?∣μ?,σ?)=e?(d??μ?)22σ?2G ( \vec { d } \mid \vec { \mu } , \vec { \sigma } ) = e ^ { \frac { - ( \vec { d } - \vec { \mu } ) ^ { 2 } } { 2 \vec { \sigma } ^ { 2 } } } G(d∣μ?,σ)=e2σ2?(d?μ?)2?
Confidence Weighting
P_i(cls∣θ)=P_i(cls∣obj,θ)P_i(obj∣θ)\mathcal { P } \_ { i } ( c l s \mid \theta ) = \mathcal { P } \_ { i } ( c l s \mid o b j , \theta ) \mathcal { P } \_ { i } ( o b j \mid \theta ) P_i(cls∣θ)=P_i(cls∣obj,θ)P_i(obj∣θ)
與FreeAnchor相似,將分類和定位聯(lián)合看成極大似然估計(jì)問(wèn)題,學(xué)習(xí)出樣本的置信度
L_i(θ)=L_icls(θ)+λL_iloc(θ)=?log?(P_i(cls∣θ))+λL_iloc(θ)=?log?(P_i(cls∣θ)e?λL_iloc(θ))=?log?(P_i(cls∣θ)P_i(loc?∣θ))=?log?(P_i(θ))\begin{aligned} \mathcal { L } \_ { i } ( \theta ) & = \mathcal { L } \_ { i } ^ { c l s } ( \theta ) + \lambda \mathcal { L } \_ { i } ^ { l o c } ( \theta ) \\ & = - \log \left( \mathcal { P } \_ { i } ( c l s \mid \theta ) \right) + \lambda \mathcal { L } \_ { i } ^ { l o c } ( \theta ) \\ & = - \log ( \mathcal { P } \_ { i } ( c l s \mid \theta ) e ^ { - \lambda \mathcal { L } \_ { i } ^ { l o c } ( \theta ) }) \\ & = - \log \left( \mathcal { P } \_ { i } ( c l s \mid \theta ) \mathcal { P } \_ { i } ( \operatorname { loc } \mid \theta ) \right) \\ & = - \log \left( \mathcal { P } \_ { i } ( \theta ) \right) \end{aligned} L_i(θ)?=L_icls(θ)+λL_iloc(θ)=?log(P_i(cls∣θ))+λL_iloc(θ)=?log(P_i(cls∣θ)e?λL_iloc(θ))=?log(P_i(cls∣θ)P_i(loc∣θ))=?log(P_i(θ))?
C(P_i)=ep_i(θ)τC \left( \mathcal { P } \_ { i } \right) = e ^ { \frac { p \_ { i } ( \theta ) } { \tau } } C(P_i)=eτp_i(θ)?
positive weights
通過(guò)Center Weighting和Confidence Weighting得到Positive weights
w_i+=C(P_i)G(d?_i)∑_j∈S_nC(P_i)G(d?_i)w \_ { i } ^ { + } = \frac { C ( \mathcal { P } \_ { i } ) G ( \vec { d } \_ { i } ) } { \sum \_ { j \in S \_ { n } } C \left( \mathcal { P } \_ { i } \right) G ( \vec { d } \_ { i } ) } w_i+=∑_j∈S_nC(P_i)G(d_i)C(P_i)G(d_i)?
neative weights
通過(guò)最大IOU得到Negative weights
w_i?=1?f(11?iou_i)w \_ { i } ^ { - } = 1 - f ( \frac { 1 } { 1 - \mathrm { i } \mathrm { ou } \_ { i } } ) w_i?=1?f(1?iou_i1?)
對(duì)于前景和背景的 weighting function,有一個(gè)共同的特點(diǎn)是 “單調(diào)遞增”;也就是說(shuō),一個(gè)位置預(yù)測(cè) pos / neg 的置信度越高,那么他們當(dāng)多前景 / 背景的權(quán)重就越大。
loss function
Positive weights和Negative weights在訓(xùn)練過(guò)程中動(dòng)態(tài)調(diào)整達(dá)到平衡,像是在學(xué)一個(gè)正負(fù)樣本的決策邊界,而根據(jù)IOU閾值來(lái)定義正負(fù)樣本的決策邊界是人為定義的。
L(θ)=?∑_n=1Nlog?(∑_i∈S_nw_i+P_i+)?∑_j∈Slog?(w_j?P_j?)\mathcal { L } ( \theta ) = - \sum \_ { n = 1 } ^ { N } \log ( \sum \_ { i \in S \_ { n } } w \_ { i } ^ { + } \mathcal { P } \_ { i } ^ { + } ) - \sum \_ { j \in S } \log ( w \_ { j } ^ { - } \mathcal { P } \_ { j } ^ { - } ) L(θ)=?∑_n=1Nlog(∑_i∈S_nw_i+P_i+)?∑_j∈Slog(w_j?P_j?)
Ablation Studies
通過(guò)消融實(shí)驗(yàn)可以看出,引入的3個(gè)分支對(duì)檢測(cè)器都有提升。
Visualization
AutoAssign 并不顯式的區(qū)分不同 FPN 層的 locations,而是全部平等地看待。因此,只需要依靠一套 weighitng 策略,就可以同時(shí)解決 spatial 和 scale 的 assignment 問(wèn)題。
AutoAssign另一個(gè)理解,keypoint在heatmap上分類即定位,AutoAssign學(xué)習(xí)到的正負(fù)樣本決策邊界,是為了篩選出那些更加容易定位的點(diǎn),分類后定位難度小。AutoAssign在動(dòng)態(tài)學(xué)習(xí)真正有效的前景。
一些想法:
其實(shí)早期也有很多探索label assign相關(guān)的paper,比如RPN、FPN、cascade-RCNN、IoU-Net等等,但是這些文章基本上還是在anchor先驗(yàn)的框架下,hand-craft的采樣方式設(shè)置空間和尺度,最近出現(xiàn)了很多通過(guò)CNN自適應(yīng)學(xué)習(xí)出適合樣本的采樣方式,比如GuidedAnchor、MetaAnchor、FSAF、PISA等等,但是都沒(méi)有很好的解決label assign問(wèn)題,還是存在一些敏感參數(shù)的設(shè)置。AutoAssign整體的設(shè)置感官上還是略顯復(fù)雜,但是避免了大量超參數(shù)的設(shè)置,使得檢測(cè)器更加魯棒。
目標(biāo)檢測(cè)任務(wù)是介于分類和分割之間,比起分類可以進(jìn)一步定位出位置,比起分割標(biāo)注更為簡(jiǎn)單,但是會(huì)不可避免的引入無(wú)關(guān)的背景信息,這就導(dǎo)致了目標(biāo)檢測(cè)器對(duì)于正負(fù)樣本采樣格外敏感,anchor機(jī)制的引入正是為了更好的定位目標(biāo)但是不可避免的引入了label assign問(wèn)題,如何定義正負(fù)樣本顯的格外重要,單純的通過(guò)IOU閾值來(lái)區(qū)分正負(fù)樣本過(guò)于hard,**直覺(jué)上來(lái)講,目標(biāo)檢測(cè)任務(wù)的label assign應(yīng)該是一種連續(xù)問(wèn)題,沒(méi)有真正意義上的正負(fù)樣本之分,簡(jiǎn)單的根據(jù)IOU閾值定義正負(fù)樣本,這樣會(huì)將一個(gè)連續(xù)的label assign問(wèn)題變成了一個(gè)離散的label assign問(wèn)題,無(wú)法根本性解決目標(biāo)檢測(cè)的label assign問(wèn)題。**最新的幾種label assign方法本質(zhì)上是將目標(biāo)檢測(cè)的label assign設(shè)計(jì)成連續(xù)的自適應(yīng)label assign。**如何更好的學(xué)習(xí)正負(fù)樣本的決策邊界是關(guān)鍵。**期待出現(xiàn)比AutoAssign更加簡(jiǎn)潔的label assign的方法!
參考:
poodar.chu:From VanillaDet to AutoAssign
RetinaNet
FCOS
FreeAnchor
ATSS
AutoAssign
關(guān)注極市平臺(tái)公眾號(hào)(ID:extrememart),獲取計(jì)算機(jī)視覺(jué)前沿資訊/技術(shù)干貨/招聘面經(jīng)等
總結(jié)
以上是生活随笔為你收集整理的Label Assign综述:提升目标检测上限的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 国防科大提出基于可变形三维卷积的视频超分
- 下一篇: WACV 2021 论文大盘点 目标检测