有幾點原因:

1. 後面實習要解決實例分割中的目標多尺度問題(當然不只是這個問題,還有其他的),為此對CNN中這幾年的多尺度處理方法進行簡要總結~_~,時間緊任務重,只記錄了一點點東西,核心的還是要去看論文讀代碼。2. 最近在準備開題的東西,其中也討論了該問題,這裡又擴展了一些論文;

3. 自己發不了頂會在知乎上宣傳,只能寫寫文章~~

4. 過兩天要去實習了,沒心情學習,終於要離開這個rang自己又愛又恨又安逸的地方,心情略顯複雜,對,我很開心~~~

視覺任務中處理目標多尺度主要分為兩大類:

  • 圖像金字塔:經典的基於簡單矩形特徵(Haar)+級聯Adaboost與Hog特徵+SVM的DPM目標識別框架,均使用圖像金字塔的方式處理多尺度目標,早期的CNN目標識別框架同樣採用該方式,但對圖像金字塔中的每一層分別進行CNN提取特徵,耗時與內存消耗均無法滿足需求。但該方式毫無疑問仍然是最優的。值得一提的是,其實目前大多數深度學習

    演算法提交結果進行排名的時候,大多使用多尺度測試。同時類似於SNIP使用多尺度訓練,均是圖像金字塔的多尺度處理。
  • 特徵金字塔:這個概念早在ACF目標識別框架的時候已經被提出(PS: ACF系列這個我前兩年入過一段時間的坑,後來發現他對CPU內存要求太大,不過確實是前幾年論文灌水利器,效果也還不錯,但還是不能落地的,我已果斷棄坑)。而在CNN網路中應用更為廣泛,現在也是CNN中處理多尺度的標配。目前特徵提取部分基本是FCN,FCN本質上等效為密集滑窗,因此不需要顯示地移動滑動窗口以處理不同位置的目標。而FCN的每一層的感受野不同,使得看到原圖中的範圍大小不同,也即可以處理不同尺度的目標。因此,分析CNN中的多尺度問題,其實本質上還是去分析CNN的感受野,一般認為感受野越大越好,一方面,感受野大了才能關注到大目標,另一方面,小目標可以獲得更豐富的上下文信息,降低誤檢。

SSD中的多尺度處理

SSD以不同stride的feature map作為檢測層分別檢測不同尺度的目標,用戶可以根據自己的任務的目標尺度制定方案。該方式尺度處理簡單有效,但存在一些缺陷:

  • 一般使用低層檢測小目標,但低層感受野小,上下文信息缺乏,容易引入誤檢;
  • 使用簡單的單一檢測層多尺度信息略顯缺乏,很多任務目標尺度變化範圍十分明顯;
  • 高層雖然感受野較大,但畢竟經過了很多次降採樣,大目標的語義信息是否已經丟失;
  • 多層特徵結構,是非連續的尺度表達,是非最優的結果;

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

這種方式源於U-Net(不確定是不是~_~),採用對稱的encoder-decoder結構,將高層特徵逐漸與低層特徵融合,這樣的操作類似於將多個感受野進行混合,使得輸出的多尺度信息更為豐富;Face++團隊在去年COCO(cocodataset.org/worksho)比賽上,在backbone最後加入gpooling操作,獲得理論上最大的感受野,類似於V-shape結構,結果證明確實有效。該方法雖然比SSD的單層輸出多尺度信息相比更好,但其也存在問題:

  • 由於decoder使用的通道數與encoder相同,導致了大量的計算量;
  • 上採樣結構不可能完全恢復已經丟失的信息;

SNIP/SNIPER中的多尺度處理

  • 訓練與測試解析度從不一致的時候性能會下降;
  • 大解析度輸入圖像雖然能提升小目標檢測性能,但同時使得大目標過大導致其很難分類,此消彼長,最終精度提升並不明顯;
  • 多尺度訓練(Mutil-Scale training),採樣到的圖像解析度很大(1400x2000),導致大目標更大,而圖像解析度過小時(480x640),導致小目標更小,這些均產生了非最優的結果;
  • SNIP針對不同解析度挑選不同的proposal進行梯度傳播,然後將其他的設置為0。即針對每一個圖像金字塔的每一個尺度進行正則化表示;

空洞卷積處理多尺度

空洞卷積本身可以控制不同大小的感受野,也即可以處理多尺度;一般空洞率設計得越大,感受野越大(但一般空洞率不能無限擴大,網格效應問題會加劇)。重點分析TridentNet~~

  • 控制實驗證明瞭感受野大小與目標尺度呈現正相關;
  • 設計三個並行分支獲取不同大小的感受野,以分別處理不同尺度的目標,感受野使用空洞卷積表徵;每個分支採用Trident block構建,取代ResNet-res4中的多個原始的Block;
  • 訓練類似於SNIP,三個分支分別採用不同尺度的目標訓練。

FPN中的多尺度處理

自從2016年FPN網路出來後,目前各大視覺任務的baseline基本都是以backbone-FPN。FPN以更為輕量的最近鄰插值結合側向連接實現了將高層的語義信息逐漸傳播到低層的功能,使得尺度更為平滑,同時它可以看做是輕量級的decoder結構。FPN看起來很完美,但仍然有一些缺陷:

  • 在上採樣時使用了比較粗糙的最近鄰插值,使得高層的語義信息不一定能有效傳播;
  • 由於經過多次下採樣,最高層的感受野雖然很豐富,但可能已經丟失了小目標的語義信息,這樣的傳播是否還合適;
  • FPN的構建只使用了backbone的4個stage的輸出,其輸出的多尺度信息不一定足夠;
  • FPN中雖然傳播了強的語義信息到其他層,但對於不同尺度的表達能力仍然是不一樣的,因為本身就提取了不同backbone的輸出。

FPN的各種改進版本

FPN這種有效的黑科技,對其進行魔改也情理之中,用幾首歌的時間簡要介紹介紹~~

  • Shu Liu, et al. Path Aggregation Network for Instance Segmentation.//CVPR 2018

PANet在FPN的基礎上加入bottom-up結構有效地傳播P2的定位信息到其他層,結構與top-down結構基本一致。

  • Di Lin,et al. ZigZagNet: Fusing Top-Down and Bottom-Up Context for Object Segmentation.//CVPR 2019

ZigZagNet在PANet上進行改進,使得top-down和bottom-up之間進行交互,同時使top-down和bottom-up的每一層之間也進行信息交互。這樣就完成了雙方向上的多尺度上下文信息加強。

  • Zheng Qin,et al. ThunderNet: Towards Real-time Generic Object Detection.//CVPR 2019

ThunderNet是做ARM上實時的目標檢測演算法,主要簡化了FPN結構,只使用C4/C5,同時引入gpooling操作(Face++論文好多這麼用,確實有效),最終輸出C4解析度大小的累加特徵。

  • Wenbo Li, et al. Rethinking on Multi-Stage Networks for Human Pose Estimation.//arxiv 2019

一個FPN有效,2個FPN是否有效,MSPN當然還有其他創新點,不同於FPN固定通道256,而是與backbone一致,同時還有一個特徵融合模塊,解決梯度消失和特徵重利用。這個是做姿態估計的,其實這個結構在其他任務上也是work的。

  • Qijie Zhao,et al. M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network.//AAAI 2019

一個FPN有效,那麼多個FPN是否有效,M2Det告訴了我們答案,多個FPN結構可以有效的獲得多尺度特徵分層。是有效果的,但這樣單純的疊加FPN真的那麼友好嗎!!!:),兩個已經很多了。也許別人都想得到,但去不去做就是完全不同的結局啦,我是在說我自己嗎,哈哈。

  • Golnaz Ghaisi, et al. NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection.//CVPR2019

NAS最近在CNN領域刷的飛起,沒錯,FPN結構也已經被搜索出來了,歡迎大家實驗。在目標檢測上挺work的。雖然不一定會NAS,但搜索出來的網路結構可以看看的,還是能得出一些結論。

上下文模塊加強多尺度信息

各種添加模塊確實是CNN論文中的利器!對於語義分割,一般會將這些模塊添加到backbone的最後stage,以增強預測時候的多尺度信;對於目標檢測,一般會加到檢測頭,以增強其上下文信息。對於實例分割,可以加到mask預測分支,也可以加到其他地方。當然,現在有些做法是在FPN中的C5後加入這些模塊。

由於實在太多,這裡介紹幾種典型結構:

  • 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模型是語義分割中的經典模型,一個是使用空洞卷積,一個是不同尺度的池化。

  • 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

沒錯,就是ASPP+Non-local,說了要自己動手,不要說別人沒有創新~~

  • 這個實在太多了,怎麼說都有道理,沒了!!

CVPR 2019中的圖像分割語義分割/實例分割

語義分割

  • Hang Zhang, et al.Co-Occurrent Features in Semantic Segmentation.
  • Zhi Tian, et al.Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregation.
  • Junjun He et al. Adaptive Pyramid Context Network for Semantic Segmentation.
  • Hanchao Li, et al. DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation.
  • Marin Orsic, et al. In Defense of Pre-Trained ImageNet Architectures for Real-Time Semantic Segmentation of Road-Driving Images.
  • Fu Jun, et al. Dual Attention Network for Scene Segmentation.

實例分割

  • Kai Chen, et al.Hybrid Task Cascade for Instance Segmentation.
  • Di Lin, et al. ZigZagNet: Fusing Top-Down and Bottom-Up Context for Object Segmentation.
  • Zhaojin Huang, et al.Mask Scoring R-CNN.
  • Lu Yang, et al. Parsing R-CNN for Instance-Level Human Analysis.

yyfyan/read-paper-list?

github.com圖標
推薦閱讀:

相關文章