總結-CNN中的目標多尺度處理
有幾點原因:
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(
http://
cocodataset。org/worksho
p/coco-mapillary-eccv-2018。html
)比賽上,在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,說了要自己動手,不要說別人沒有創新~~
這個實在太多了,怎麼說都有道理,沒了!!
上一篇:超有趣的自動回覆文案
下一篇:賈連師--最具收藏價值藝術家