• 圖像金字塔:經(jīng)典的基于簡(jiǎn)單矩形特征(Haar)+級(jí)聯(lián)Adaboost與Hog特征+SVM的DPM目標(biāo)識(shí)別框架,均使用圖像金字塔的方式處理多尺度目標(biāo),早期的CNN目標(biāo)識(shí)別框架同樣采用該方式,但對(duì)圖像金字塔中的每一層分別進(jìn)行CNN提取特征,耗時(shí)與內(nèi)存消耗均無(wú)法滿足需求。但該方式毫無(wú)疑問(wèn)仍然是最優(yōu)的。值得一提的是,其實(shí)目前大多數(shù)深度學(xué)習(xí)算法提交結(jié)果進(jìn)行排名的時(shí)候,大多使用多尺度測(cè)試。同時(shí)類似于SNIP使用多尺度訓(xùn)練,均是圖像金字塔的多尺度處理。
  • 特征金字塔:這個(gè)概念早在ACF目標(biāo)識(shí)別框架的時(shí)候已經(jīng)被提出(PS: ACF系列這個(gè)我前兩年入過(guò)一段時(shí)間的坑,后來(lái)發(fā)現(xiàn)他對(duì)CPU內(nèi)存要求太大,不過(guò)確實(shí)是前幾年論文灌水利器,效果也還不錯(cuò),但還是不能落地的,我已果斷棄坑)。而在CNN網(wǎng)絡(luò)中應(yīng)用更為廣泛,現(xiàn)在也是CNN中處理多尺度的標(biāo)配。目前特征提取部分基本是FCN,F(xiàn)CN本質(zhì)上等效為密集滑窗,因此不需要顯示地移動(dòng)滑動(dòng)窗口以處理不同位置的目標(biāo)。而FCN的每一層的感受野不同,使得看到原圖中的范圍大小不同,也即可以處理不同尺度的目標(biāo)。因此,分析CNN中的多尺度問(wèn)題,其實(shí)本質(zhì)上還是去分析CNN的感受野,一般認(rèn)為感受野越大越好,一方面,感受野大了才能關(guān)注到大目標(biāo),另一方面,小目標(biāo)可以獲得更豐富的上下文信息,降低誤檢。

SSD中的多尺度處理

SSD以不同stride的feature map作為檢測(cè)層分別檢測(cè)不同尺度的目標(biāo),用戶可以根據(jù)自己的任務(wù)的目標(biāo)尺度制定方案。該方式尺度處理簡(jiǎn)單有效,但存在一些缺陷:
  • 一般使用低層檢測(cè)小目標(biāo),但低層感受野小,上下文信息缺乏,容易引入誤檢;

  • 使用簡(jiǎn)單的單一檢測(cè)層多尺度信息略顯缺乏,很多任務(wù)目標(biāo)尺度變化范圍十分明顯;

  • 高層雖然感受野較大,但畢竟經(jīng)過(guò)了很多次降采樣,大目標(biāo)的語(yǔ)義信息是否已經(jīng)丟失;

  • 多層特征結(jié)構(gòu),是非連續(xù)的尺度表達(dá),是非最優(yōu)的結(jié)果;


U-shape/V-shape型多尺度處理



這種方式源于U-Net(不確定是不是~_~),采用對(duì)稱的encoder-decoder結(jié)構(gòu),將高層特征逐漸與低層特征融合,這樣的操作類似于將多個(gè)感受野進(jìn)行混合,使得輸出的多尺度信息更為豐富;Face++團(tuán)隊(duì)在去年COCO(cocodataset.org/worksho)比賽上,在backbone最后加入gpooling操作,獲得理論上最大的感受野,類似于V-shape結(jié)構(gòu),結(jié)果證明確實(shí)有效。該方法雖然比SSD的單層輸出多尺度信息相比更好,但其也存在問(wèn)題:
  • 由于decoder使用的通道數(shù)與encoder相同,導(dǎo)致了大量的計(jì)算量;

  • 上采樣結(jié)構(gòu)不可能完全恢復(fù)已經(jīng)丟失的信息;



SNIP/SNIPER中的多尺度處理


  • 訓(xùn)練與測(cè)試分辨率從不一致的時(shí)候性能會(huì)下降;

  • 大分辨率輸入圖像雖然能提升小目標(biāo)檢測(cè)性能,但同時(shí)使得大目標(biāo)過(guò)大導(dǎo)致其很難分類,此消彼長(zhǎng),最終精度提升并不明顯;

  • 多尺度訓(xùn)練(Mutil-Scale training),采樣到的圖像分辨率很大(1400x2000),導(dǎo)致大目標(biāo)更大,而圖像分辨率過(guò)小時(shí)(480x640),導(dǎo)致小目標(biāo)更小,這些均產(chǎn)生了非最優(yōu)的結(jié)果;

  • SNIP針對(duì)不同分辨率挑選不同的proposal進(jìn)行梯度傳播,然后將其他的設(shè)置為0。

    即針對(duì)每一個(gè)圖像金字塔的每一個(gè)尺度進(jìn)行正則化表示;



空洞卷積處理多尺度


空洞卷積本身可以控制不同大小的感受野,也即可以處理多尺度;一般空洞率設(shè)計(jì)得越大,感受野越大(但一般空洞率不能無(wú)限擴(kuò)大,網(wǎng)格效應(yīng)問(wèn)題會(huì)加?。?。重點(diǎn)分析TridentNet~~

  • 控制實(shí)驗(yàn)證明了感受野大小與目標(biāo)尺度呈現(xiàn)正相關(guān);

  • 設(shè)計(jì)三個(gè)并行分支獲取不同大小的感受野,以分別處理不同尺度的目標(biāo),感受野使用空洞卷積表征;

    每個(gè)分支采用Trident block構(gòu)建,取代ResNet-res4中的多個(gè)原始的Block;

  • 訓(xùn)練類似于SNIP,三個(gè)分支分別采用不同尺度的目標(biāo)訓(xùn)練。



FPN中的多尺度處理




自從2016年FPN網(wǎng)絡(luò)出來(lái)后,目前各大視覺(jué)任務(wù)的baseline基本都是以backbone-FPN。FPN以更為輕量的最近鄰插值結(jié)合側(cè)向連接實(shí)現(xiàn)了將高層的語(yǔ)義信息逐漸傳播到低層的功能,使得尺度更為平滑,同時(shí)它可以看做是輕量級(jí)的decoder結(jié)構(gòu)。FPN看起來(lái)很完美,但仍然有一些缺陷:
  • 在上采樣時(shí)使用了比較粗糙的最近鄰插值,使得高層的語(yǔ)義信息不一定能有效傳播;

  • 由于經(jīng)過(guò)多次下采樣,最高層的感受野雖然很豐富,但可能已經(jīng)丟失了小目標(biāo)的語(yǔ)義信息,這樣的傳播是否還合適;

  • FPN的構(gòu)建只使用了backbone的4個(gè)stage的輸出,其輸出的多尺度信息不一定足夠;

  • FPN中雖然傳播了強(qiáng)的語(yǔ)義信息到其他層,但對(duì)于不同尺度的表達(dá)能力仍然是不一樣的,因?yàn)楸旧砭吞崛×瞬煌琤ackbone的輸出。


FPN的各種改進(jìn)版本

FPN這種有效的黑科技,對(duì)其進(jìn)行魔改也情理之中,用幾首歌的時(shí)間簡(jiǎn)要介紹介紹~~
  • Shu Liu, et al. Path Aggregation Network for Instance Segmentation.//CVPR 2018



PANet在FPN的基礎(chǔ)上加入bottom-up結(jié)構(gòu)有效地傳播P2的定位信息到其他層,結(jié)構(gòu)與top-down結(jié)構(gòu)基本一致。
  • Di Lin,et al. ZigZagNet: Fusing Top-Down and Bottom-Up Context for Object Segmentation.//CVPR 2019



ZigZagNet在PANet上進(jìn)行改進(jìn),使得top-down和bottom-up之間進(jìn)行交互,同時(shí)使top-down和bottom-up的每一層之間也進(jìn)行信息交互。這樣就完成了雙方向上的多尺度上下文信息加強(qiáng)。
  • Zheng Qin,et al. ThunderNet: Towards Real-time Generic Object Detection.//CVPR 2019


ThunderNet是做ARM上實(shí)時(shí)的目標(biāo)檢測(cè)算法,主要簡(jiǎn)化了FPN結(jié)構(gòu),只使用C4/C5,同時(shí)引入gpooling操作(Face++論文好多這么用,確實(shí)有效),最終輸出C4分辨率大小的累加特征。
  • Wenbo Li, et al. Rethinking on Multi-Stage Networks for Human Pose Estimation.//arxiv 2019




一個(gè)FPN有效,2個(gè)FPN是否有效,MSPN當(dāng)然還有其他創(chuàng)新點(diǎn),不同于FPN固定通道256,而是與backbone一致,同時(shí)還有一個(gè)特征融合模塊,解決梯度消失和特征重利用。這個(gè)是做姿態(tài)估計(jì)的,其實(shí)這個(gè)結(jié)構(gòu)在其他任務(wù)上也是work的。
  • Qijie Zhao,et al. M2Det: A Single-Shot Object Detector based on Multi-Level Feature PyramidNetwork.//AAAI 2019

一個(gè)FPN有效,那么多個(gè)FPN是否有效,M2Det告訴了我們答案,多個(gè)FPN結(jié)構(gòu)可以有效的獲得多尺度特征分層。是有效果的,但這樣單純的疊加FPN真的那么友好嗎?。。。?,兩個(gè)已經(jīng)很多了。也許別人都想得到,但去不去做就是完全不同的結(jié)局啦,我是在說(shuō)我自己?jiǎn)?,哈哈?/section>
  • Golnaz Ghaisi, et al. NAS-FPN: Learning Scalable Feature Pyramid Architecturefor Object Detection.//CVPR2019



NAS最近在CNN領(lǐng)域刷的飛起,沒(méi)錯(cuò),F(xiàn)PN結(jié)構(gòu)也已經(jīng)被搜索出來(lái)了,歡迎大家實(shí)驗(yàn)。在目標(biāo)檢測(cè)上挺work的。雖然不一定會(huì)NAS,但搜索出來(lái)的網(wǎng)絡(luò)結(jié)構(gòu)可以看看的,還是能得出一些結(jié)論。

上下文模塊加強(qiáng)多尺度信息


各種添加模塊確實(shí)是CNN論文中的利器!對(duì)于語(yǔ)義分割,一般會(huì)將這些模塊添加到backbone的最后stage,以增強(qiáng)預(yù)測(cè)時(shí)候的多尺度信;對(duì)于目標(biāo)檢測(cè),一般會(huì)加到檢測(cè)頭,以增強(qiáng)其上下文信息。對(duì)于實(shí)例分割,可以加到mask預(yù)測(cè)分支,也可以加到其他地方。當(dāng)然,現(xiàn)在有些做法是在FPN中的C5后加入這些模塊。
由于實(shí)在太多,這里介紹幾種典型結(jié)構(gòu):
  • Liang-Chieh Chen, et al. Rethinking Atrous Convolution for Semantic Image Segmentation.//arxiv 2017


  • Hengshuang Zhao, et al. Pyramid Scene Parsing Network.//CVPR 2017



以上ASPP與PSP模型是語(yǔ)義分割中的經(jīng)典模型,一個(gè)是使用空洞卷積,一個(gè)是不同尺度的池化。
  • Tete Xiao,et al. Unified Perceptual Parsing for Scene Understanding.//ECCV 2018




在FPN上加了PPM模塊,獲取更為豐富的多尺度上下文信息。
  • Lu Yang,et al. Parsing R-CNN for Instance-Level Human Analysis. //CVPR 2019

沒(méi)錯(cuò),就是ASPP+Non-local,說(shuō)了要自己動(dòng)手,不要說(shuō)別人沒(méi)有創(chuàng)新~~

END



雙一流大學(xué)研究生團(tuán)隊(duì)創(chuàng)建,專注于目標(biāo)檢測(cè)與深度學(xué)習(xí),希望可以將分享變成一種習(xí)慣!

整理不易,點(diǎn)贊三連↓