即插即用 | S-FPN全新的金字塔網(wǎng)絡(luò),更適合輕量化模型的FPN


FPN(特征金字塔網(wǎng)絡(luò))已經(jīng)成為大多數(shù)優(yōu)秀One-Stage檢測器的基本組成部分。以往的許多研究已經(jīng)多次證明,F(xiàn)PN可以讓多尺度特征圖更好、更精確地描述不同大小的目標(biāo)。然而,對于大多數(shù)Backbone,如VGG、ResNet或DenseNet,由于池化操作或與stride=2的卷積,每一層的特征映射都被縮小,使得其FPN不能更好地融合這些特征。
本文提出了一種新的金字塔網(wǎng)絡(luò),SFPN(合成融合金字塔網(wǎng)絡(luò)),該結(jié)構(gòu)在原始FPN層之間創(chuàng)建各種合成層,以提高輕量CNN Backbone的精度,更準(zhǔn)確地提取目標(biāo)的視覺特征。最后,實驗證明了SFPN架構(gòu)對于各種Backbone的有效性。
1簡介
過去的許多研究表明,特征金字塔中的特征圖可以在不同尺度上捕捉物體的視覺特征。淺層保留了細(xì)節(jié),如紋理、角落等;深層覆蓋了更廣泛的語義特征。在真實的場景中,不同大小的物體經(jīng)常出現(xiàn)在一起,如何同時檢測它們成為一個關(guān)鍵問題。而FPN的出現(xiàn)顯著提高了目標(biāo)檢測性能,并成為大多數(shù)SoTA目標(biāo)檢測器的標(biāo)準(zhǔn)組成部分。
然而,這個FPN中的映射在x和y方向上都被縮放為1/2、1/4、1/8等等。FPN相鄰兩層之間的尺度差距很大,導(dǎo)致2個大小相似的物體被預(yù)測并分到為不同的層。例如,2個維度為32×32和31×31的目標(biāo)在FPN中位于不同的預(yù)測圖上。這種尺度截斷問題可以通過在這個FPN中添加一個合成層來改進。
圖2-a SFPN基本結(jié)構(gòu),SFPN-3
圖2-b SFPN基本結(jié)構(gòu),SFPN-5
圖2-c SFPN基本結(jié)構(gòu),SFPN-9本文提出了一種新的金字塔網(wǎng)絡(luò)SFPN(見圖2),將密度圖縮放為1/2、1/3、1/4、1/6等,以減少尺度截斷的影響。作者相信添加中等尺度的特征圖可以使不同尺度的過渡更平滑,從而更好地在輕量級體系結(jié)構(gòu)上檢測目標(biāo)。基于這個想法構(gòu)建了一個只有3個輸出層的Baseline,然后逐步綜合插入中間尺度的層。fpn被稱為融合金字塔網(wǎng)絡(luò)(SFPN)。
然后,將SFPN分別集成在VGG-16和MobileNetV2上,并在MS-COCO數(shù)據(jù)集中進行評估。不出所料發(fā)現(xiàn)大型和輕量級的Backbone都可以從合成層中獲益。同樣的方案再次應(yīng)用于將最終的輸出層分離到更多的層,令人驚訝的是,它仍然優(yōu)于Baseline。
此外,作者可視化了SFPN的證據(jù)圖,以顯示合成層如何幫助模型更好地適應(yīng)目標(biāo)。合成層可以使原始層為目標(biāo)表示保留更多的信息。這些發(fā)現(xiàn)證實了合成層的性能增益。
2相關(guān)方法
2.1 多尺度預(yù)測
目標(biāo)檢測是計算機視覺中一個非常活躍的領(lǐng)域,根據(jù)其網(wǎng)絡(luò)體系結(jié)構(gòu)可以分為兩類:兩階段方法和單階段方法。一般來說,F(xiàn)aster-RCNN等兩階段方法可以獲得較高的檢測精度,但計算時間較長,而YOL等單階段方法運行速度較快,但精度較低。本文專注于對單階段的調(diào)研。
SSD采用了網(wǎng)絡(luò)內(nèi)的多重特征圖來檢測具有不同形狀和大小的目標(biāo)。多特征設(shè)計使SSD比YOLOv1具有更好的魯棒性。為了更好地檢測小目標(biāo),基于FPN的特征金字塔網(wǎng)絡(luò)(FPN)以對小目標(biāo)實現(xiàn)更高的檢測精度。目前,F(xiàn)PN被廣泛應(yīng)用于SoTA檢測器中,用于檢測不同尺度的目標(biāo),從自上而下路徑的最后一層提取空間和上下文特征,以進行精確的目標(biāo)檢測。這種自頂向下聚合現(xiàn)在是在兩階段和單階段檢測器中提高尺度不變性的常用做法。
2.2 雙向FPN
眾所周知,由于池化的移位效應(yīng),F(xiàn)PN中的自上而下的路徑不能保持準(zhǔn)確的目標(biāo)定位。雙向FPN可以從淺層中恢復(fù)丟失的信息,提高小目標(biāo)檢測能力。例如,PANet在自底向上之后增加了自上向上的方向,顯著提高了FPN的表達(dá)能力。在LRF中構(gòu)建了輕量級scratch網(wǎng)絡(luò)和雙向網(wǎng)絡(luò),以高效地傳播低級和高級語義信息。在NAS-FPN的啟發(fā)下提出了一種BiFPN,以更好地、更高效地檢測小物體。最近的YOLOv4修改了路徑聚合方法PANet用add替換了cat方法,以更好地檢測小目標(biāo)。以上所有方法均證明了該FPN在兩個方向上的性能優(yōu)于原始FPN。
3本文方法
CNN Backbone中使用的池化操作(或與stride=2卷積)通常將圖像維度降到一半,使特征圖在x和y方向上縮放到1/2、1/4、1/8,以此類推。作者認(rèn)為尺度差距太大,導(dǎo)致各層的特征融合不平滑。如圖2所示,在原始層之間創(chuàng)建各種合成層,使預(yù)測圖縮放到1/2、1/3、1/4、1/6等,從而提供一個更平滑的尺度空間來擬合尺度不斷變化的GT。本部分將描述如何生成這些合成層。在此之后可視化SFPN,以顯示合成層掃描如何幫助模型更好地擬合和檢測對象。
3.1 合成融合模塊(SFM)
FPN沿著自上而下的方向融合了不同層的特征,PANet發(fā)現(xiàn)自下而上的方向也可以提高性能。后來的Backbone,如NAS-FPN采用類似的雙融合結(jié)構(gòu),以獲得更好的性能。本文提出了一種SFM(合成融合模塊),可以在原始層之間生成各種合成層,從而將預(yù)測圖縮放到1/2、1/3、1/4、1/6等。它包含3個可選的輸入,首先是線性縮放輸入,然后逐像素add它們,然后與conv-3×3融合。該模塊可以從原始層中合成合成層,也可以簡單地用于融合特征。其體系結(jié)構(gòu)如圖3所示。
圖3 合成融合模塊3.2 合成融合塊(SFB)
SFB由多個SFMs構(gòu)建。它將這些圖層分成兩批。首先,將特征從第一批層傳遞到第二批層,然后從第二批層傳遞到第一批層。該體系結(jié)構(gòu)如圖2中的黃色方塊所示。簡而言之,這個想法可以被視為集中合并特征,然后向外輻射特征。SFB集成了自頂向下和自頂向下的方向。多個SFB的疊加可以執(zhí)行多個特征融合,以獲得更好的性能。實驗中的所有模型都由3個SFB疊加。
3.3 合成融合金字塔網(wǎng)絡(luò)(SFPN)
將SFB堆疊3次的FPN稱為合成融合金字塔網(wǎng)絡(luò)(SFPN),將包含X個輸出層的SFPN稱為SFPN-X。
1、Build Baseline(SFPN-3)
為了驗證合成層是否是一種有效的策略,使用SFBs構(gòu)建了一個只有原始層的SFPN,稱為SFPN-3。SFPN-3保持了與FPN相同的原始大小。它采用了雙向特征融合,與其他包含合成層的SFPN完全相同。在實驗中,使用SFPN-3作為Baseline。
圖2-a SFPN基本結(jié)構(gòu),SFPN-32、 SFPN-5和SFPN-9
SFM可以生成合成層,因此在SFPN的前面添加幾個SFM可以生成幾個合成層,然后輸入以下3個SFBs。擴展到5層稱為SFPN-5,擴展到9層稱為SFPN-9。這2個網(wǎng)絡(luò)分別增加了3層和6個合成層,這是驗證合成層有效性的主要模型。
圖2-b SFPN基本結(jié)構(gòu),SFPN-5
圖2-c SFPN基本結(jié)構(gòu),SFPN-93、帶有合成輸出層的SFPN
所提出的合成層使特征的尺度更加連續(xù),在特征融合階段轉(zhuǎn)移更平滑。為了進一步探索該組件的能力,作者添加了SFPN-5和SFPN-9的合成輸出層。這些網(wǎng)絡(luò)被記錄為SFPN-5-SOL和SFPN-9-SOL。
圖6-a SFPN-5-SOL
圖6-a SFPN-9-SOL3.4 Naive Anchors for SOL
將SFPN連接到Y(jié)OLO-Head。在YOLO架構(gòu)中,Anchor的生成方法和分配策略對目標(biāo)檢測器的性能有顯著的影響。YOLO使用k-means在訓(xùn)練集中找到k個先驗框作為Anchor。CSL-YOLO發(fā)現(xiàn),當(dāng)輸出層數(shù)增加時,k-means將產(chǎn)生許多不符合輸出層比例的Anchor。作者采用了一種直接的Anchor生成方法來消除這一顯著的干擾因素。作者使用比例為1×、2×和4×的優(yōu)先級框作為輸出特征映射的每個像素上的Anchor。該方法使3層、5層和9層的輸出獲得尺度擬合和一致的Anchor,證明了性能增益來自合成輸出層。
4實驗
4.1 SOTA對比
最終的實驗結(jié)果如表1所示。如果視覺置信度圖只提供直觀的證據(jù),那么MS-COCO上的性能就是直接證據(jù)。當(dāng)Backbone為VGG-16時,無論輸入的圖像大小是224還是320,更多的合成層都可以得到更高的AP。另一方面,當(dāng)Backbone是MobileNetV2時,AP的增加更為明顯??梢哉f,SFPN的特征捕獲能力在較弱的小模型上更為突出。

在融合的SFPN-5和SFPN-9上添加最后一個合成層作為輸出層,并預(yù)測新的輸出層的測試集。作者想用這個實驗來評估連續(xù)尺度的合成輸出層是如何顯著提高性能的。實驗結(jié)果如表1所示。雖然改良的SFPN-5-SOL和SFPN-9-SOL丟失了一些FPS,但是也更多地超過了Baseline,證實了合成層不僅在特征融合階段,而且在輸出階段都發(fā)揮了重要作用。
4.2 可視化特征
圖4 置信度圖增加更多的合成層可以使SFPN的輸出層數(shù)從3層增加到5層,最后增加到9層。為了進一步探究這些合成層帶來的級聯(lián)效益,作者將SFPN-5輸出的置信度圖可視化,并將其繪制在上面的原始圖像上,如圖4所示。
圖5合成層的尺度介于原始層的上下2層之間,使得原始層能夠更流暢地傳遞特征,從而減少特征的損失。另一方面,一些目標(biāo)的大小比原始層更符合合成層的特征描述,這使得模型能夠獲得更合適的目標(biāo)表示能力,如圖5所示??偟膩碚f,該方法使原始層減少了特征損失,同時考慮了更多不同大小的目標(biāo),新的合成層也能更適應(yīng)不同的目標(biāo)大小,預(yù)測出更合適的包圍框。
5參考
[1].SFPN: SYNTHETIC FPN FOR OBJECT DETECTION
6推薦閱讀
改進YOLO | 可能這才是用Transformer正確打開YOLO的方式吧?
超越ConvNeXt | 大道至簡,VAN用普通卷積,登頂Backbone性能巔峰(附代碼解讀)
YOLOV5 v6.1更新 | TensorRT+TPU+OpenVINO+TFJS+TFLite等平臺一鍵導(dǎo)出和部署
超級干貨 | 用萬字文章總結(jié)25種正則化方法(值得收藏)
長按掃描下方二維碼添加小助手。
可以一起討論遇到的問題
聲明:轉(zhuǎn)載請說明出處
掃描下方二維碼關(guān)注【集智書童】公眾號,獲取更多實踐項目源碼和論文解讀,非常期待你我的相遇,讓我們以夢為馬,砥礪前行!

