詳解目標(biāo)檢測之Neck選擇
點(diǎn)擊左上方藍(lán)字關(guān)注我們

轉(zhuǎn)載自 | 極市平臺(tái)
鏈接丨h(huán)ttps://zhuanlan.zhihu.com/p/342011052
前言
根據(jù)它們各自的論文創(chuàng)新點(diǎn),大體上分為六種,這些方法當(dāng)然可以同時(shí)屬于多個(gè)類別。
上下采樣:SSD (https://arxiv.org/abs/1512.02325) (ECCV 2016) STDN(https://openaccess.thecvf.com/content_cvpr_2018/html/Zhou_Scale-Transferrable_Object_Detection_CVPR_2018_paper.html) (CVPR 2018) 路徑聚合:DSSD(https://arxiv.org/abs/1701.06659) (Arxiv 2017), FPN(https://openaccess.thecvf.com/content_cvpr_2017/html/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.html) (CVPR 2017), PANet(https://openaccess.thecvf.com/content_cvpr_2018/html/Liu_Path_Aggregation_Network_CVPR_2018_paper.html) (CVPR 2018), Bi-FPN(https://openaccess.thecvf.com/content_CVPR_2020/html/Tan_EfficientDet_Scalable_and_Efficient_Object_Detection_CVPR_2020_paper.html) (CVPR 2020), NETNet(https://openaccess.thecvf.com/content_CVPR_2020/html/Li_NETNet_Neighbor_Erasing_and_Transferring_Network_for_Better_Single_Shot_CVPR_2020_paper.html) (CVPR 2020) NAS搜索:NAS-FPN(https://openaccess.thecvf.com/content_CVPR_2019/html/Ghiasi_NAS-FPN_Learning_Scalable_Feature_Pyramid_Architecture_for_Object_Detection_CVPR_2019_paper.html) (CVPR 2019) 加權(quán)聚合:ASFF(https://arxiv.org/abs/1911.09516) (Arxiv 2019), Bi-FPN 非線性聚合:Feature Reconfiguration(https://openaccess.thecvf.com/content_ECCV_2018/html/Tao_Kong_Deep_Feature_Pyramid_ECCV_2018_paper.html) (ECCV2018, TIP 2019) 無限堆疊:i-FPN(https://arxiv.org/abs/2012.13563) (Arxiv 2020)
上下采樣
該方法的特點(diǎn)是不具有特征層聚合性的操作,如SSD,直接在多級(jí)特征圖后接head。

STDN是基于SSD的模型,其思想是構(gòu)造法。由于STDN使用了DenseNet作為主干,因此后面的特征圖在尺寸上是相同的,所以需要構(gòu)造出各種大小的特征圖來檢測不同大小的物體。中間尺寸特征圖直接使用,大尺寸特征圖以尺寸變換層上采樣獲得,小尺寸特征圖以池化獲得。


路徑聚合
該方法基于一個(gè)最基本的觀察:深層特征圖尺寸小,經(jīng)過層層卷積下采樣使得小物體的信息嚴(yán)重丟失,所以深層不利于小物體檢測,就將小物體檢測交給淺層來做。這也是為什么SSD需要多級(jí)head的原因。
然而光是這樣還不夠,由于深層特征圖具有非常豐富的語義信息,那么最好把深層特征再往淺層傳,以增加淺層語義信息。于是乎就誕生了最為人所熟知的FPN。在如何上采樣方面,F(xiàn)PN使用最鄰近上采樣,當(dāng)然還有使用反卷積的DSSD。


這類方法的共性就是反復(fù)利用各種上下采樣、拼接、點(diǎn)和或點(diǎn)積,來設(shè)計(jì)聚合策略。可改進(jìn)的點(diǎn)還包括加上Deformable Conv、Attention、門控機(jī)制、跨FPN level的label assignment等,都已有文章。
比較特殊的還有一種名為NETNet (CVPR 2020)的方法,其認(rèn)為上述路徑聚合方案無論怎么設(shè)計(jì),對(duì)于預(yù)測小物體而言,大物體的特征一直存在,因?yàn)楦邔诱Z義信息被傳了下來,再加上其本身淺層自帶的大物體特征,這對(duì)小物體來說會(huì)是一種干擾,如下圖所示。

因此需要人為地進(jìn)行干預(yù),為淺層消除大物體特征。
思路也很簡單,隨著下采樣的進(jìn)行,小物體特征會(huì)丟失,那么深層必然已經(jīng)都是大物體的特征。此時(shí)對(duì)深層上采樣,得到的還是大物體特征,再把原來的淺層減去經(jīng)過上采樣的深層,于是淺層就不再有了大物體的特征。那么小物體的特征將被突出化。

同樣的,被消除的大物體特征也可以進(jìn)一步被傳輸?shù)胶线m的層,以增強(qiáng)大物體的檢測。

對(duì)小物體確實(shí)改進(jìn)比較顯著,值得一試。
NAS搜索

即利用神經(jīng)網(wǎng)絡(luò)搜索方法來搜索合適的聚合路徑,但是搜索的時(shí)間成本極高,且數(shù)學(xué)可解釋性低。最新的研究已表明,人工設(shè)計(jì)的路徑聚合在精度上亦可超過NAS搜索出來的結(jié)構(gòu) (大力出奇跡)。
加權(quán)聚合
顧名思義,簡單的聚合對(duì)所有參與的特征層都是一視同仁的,而實(shí)際上,這些來自不同層級(jí)的特征圖對(duì)于單個(gè)物體而言,必然只有某一個(gè)是最適合檢測它的。因此對(duì)聚合進(jìn)行加權(quán)就顯得尤為重要。
ASFF引入了可參與訓(xùn)練的加權(quán)因子來體現(xiàn)不同層級(jí)特征圖的重要性。

加權(quán)公式為
Bi-FPN也有類似的操作,區(qū)別在于其簡單地使用標(biāo)量進(jìn)行加權(quán), ,并且在限制加權(quán)因子求和為1方面,使用快速歸一化,而非費(fèi)時(shí)的Softmax操作。
非線性聚合
以上這些方法,都可以視為線性聚合操作。首先,讓我們用一些簡單符號(hào)來描述一下聚合過程。
給定特征金字塔的不同層特征圖 ,SSD會(huì)從某個(gè)層開始,選擇
接下來以FPN為例,最高層 聚合后仍然是它本身,所以 . 接下來是第二高層 ,它等于原來的 與新的 按照一定的方式進(jìn)行聚合。最后完整的聚合可以表達(dá)為如下的過程:
這里的 以及 都是特定的線性操作,比如不帶有激活函數(shù)的卷積, 卷積,雙線性插值上采樣,最鄰近上采樣,反卷積等。
因此FPN以及其他的路徑聚合法,都可視為是線性聚合。于是在《Deep Feature Pyramid Reconfiguration for Object Detection》一文中,作者建立了一種非線性聚合法。

先把所有的層級(jí)特征圖放在一起,然后學(xué)習(xí)多個(gè)非線性映射 .

非線性映射的學(xué)習(xí)模仿SENet的方法,帶有注意力的味道。
無限堆疊
EfficientDet通過重復(fù)堆疊多個(gè)Bi-FPN block來獲得性能的提升。

顯然這樣的操作會(huì)造成大量的計(jì)算開銷與顯存占用。
那么有沒有更好的方法呢?當(dāng)然有,比如權(quán)重共享,即只使用一個(gè)FPN block,backbone提取到的特征圖會(huì)反復(fù)經(jīng)過這個(gè)block,由于權(quán)重共享,顯存占用很少,參數(shù)量也少,但是計(jì)算量仍然隨著重復(fù)的次數(shù)而增加,因?yàn)槊康淮危瑢?duì)該block的更新最終都需要增加一次反向傳播。
但是上述過程有一個(gè)有趣的現(xiàn)象,就是當(dāng)重復(fù)計(jì)算的次數(shù)趨于無窮多次時(shí),這個(gè)FPN block的參數(shù)會(huì)收斂到一個(gè)固定點(diǎn),即特征平衡態(tài)。那么如何利用有限次前向傳播即可求解這樣的網(wǎng)絡(luò)參數(shù)固定點(diǎn)呢?就是《Deep Equilibrium Models》(曲終人不散丶)(NeurIPS 2019) 的厲害之處了。只要我們求得了該固定點(diǎn),我們就直接得到了單個(gè)block重復(fù)前后向傳播無數(shù)次的結(jié)果。
下面把最精華的部分提取出來描述:
給定一個(gè)FPN block的網(wǎng)絡(luò) , 是它的網(wǎng)絡(luò)參數(shù)點(diǎn),backbone提取到的多級(jí)特征 , 以及一系列初始化的特征金字塔 ,上標(biāo)為0表示還沒開始迭代。

這個(gè) 的選擇有多種,如FPN,PANet,Bi-FPN,Dense-FPN等,最終輸出的也是多級(jí)特征金字塔,每一級(jí)后面接head. 由于權(quán)重共享,上述過程重復(fù)多次,那么第 次的輸出就是
于是當(dāng)重復(fù)無窮多次時(shí),多級(jí)特征圖收斂到固定值

假如你選擇迭代10次,就會(huì)得到10次多級(jí)特征圖,依據(jù)鏈?zhǔn)角髮?dǎo)法則,你就得更新10次這個(gè)block的網(wǎng)絡(luò)參數(shù) ,這是極為耗時(shí)的,且增加了內(nèi)存開銷,因?yàn)槟阈枰鎯?chǔ)中間的每一次輸出。
現(xiàn)在事后諸葛亮一波,假如我已經(jīng)迭代了1000次,可以認(rèn)為此時(shí)的多級(jí)特征圖已經(jīng)是收斂到固定點(diǎn)了,誤差很小。DEQ提出反向傳播一次就夠,即直接使用有關(guān)于這個(gè)固定點(diǎn)的雅克比的逆來反向傳播。即利用它可以直接對(duì)一個(gè)還沒開始迭代的block進(jìn)行更新。
現(xiàn)在改寫一下,把優(yōu)化 改為優(yōu)化 ,顯然這個(gè)固定點(diǎn)就是這個(gè)方程的根,即.
那么如何求這個(gè)固定點(diǎn) ?你可以采用擬牛頓法,或者任何其他的求根法,通過多次迭代,得到滿足給定誤差以內(nèi)的近似的 .
然后再使用 來反向傳播,一次解決所有梯度回傳。
i-FPN的思想就源于此,《Implicit Feature Pyramid Network for Object Detection》一文將其應(yīng)用至目標(biāo)檢測的Neck中。作者以Dense-FPN為基礎(chǔ)。

可以看到i-FPN相比較于迭代4次權(quán)重共享的block的方法來說,可以獲得更好的性能。
就總結(jié)到這,如有錯(cuò)誤,歡迎指正。
END
整理不易,點(diǎn)贊三連↓
