DeepLab深度學習網絡-結構簡介


參考博文:https://blog.csdn.net/weixin_41923961/article/details/82995656

  斯坦福大學李飛飛組的研究者提出了 Auto-DeepLab,其在圖像語義分割問題上超越了很多業內最佳模型,甚至可以在未經過預訓練的情況下達到預訓練模型的表現。Auto-DeepLab 開發出與分層架構搜索空間完全匹配的離散架構的連續松弛,顯著提高架構搜索的效率,降低算力需求。深度神經網絡已經在很多人工智能任務上取得了成功,包括圖像識別、語音識別、機器翻譯等。雖然更好的優化器 [36] 和歸一化技術 [32, 79] 在其中起了重要作用,但很多進步要歸功於神經網絡架構的設計。在計算機視覺中,這適用於圖像分類和密集圖像預測。

Deeplab v1&v2

paper: deeplab v1https://arxiv.org/pdf/1412.7062v3.pdf  && deeplab v2 https://arxiv.org/pdf/1412.7062v3.pdf

  遠古版本的deeplab系列,就像RCNN一樣,其實了解了后面的v3和v3+就可以不太管這些了(個人拙見)。但是為了完整性和連貫性,所以讀了這兩篇paper。

Astrous conv

  參考deeplab v2的插圖。其實這個圖經常可以看到,想說明什么呢?該圖是一維卷積示意圖。對於使用了s=2后的low resolution feature map再進行standard conv的效果和在原feature map上使用rate=2 的dilation conv是一模一樣的。實際中使用s=2+standard conv和rate = 2的dilation conv僅僅是對應的感受野相同,並不是使用的像素點一樣,這張圖個人覺得有點障眼法的感覺。作者用了sparse/dense feature map的概念,其實就是low/high resolution feature map,直觀上看起來分辨率低的當然稀疏啊。

 

ASPP結構

  圖右的結構,作者對比了單獨的rate(左邊結構),有不小的提升。多尺度進行dilation conv,其實RFBnet(2017 CVPR )對SSD的改進就是參考這個思路,inception + aspp。Receptive Field Block Net for Accurate and Fast Object Detection

  

  V2用Resnet 101作為backbone,有一定提升,v1和v2都用了CRF。關於CRF的不再贅述了,其實后面的版本都沒有用這個了。訓練用的poly策略。

Deeplab v3

paper: Rethinking Atrous Convolution for Semantic Image Segmentation https://arxiv.org/abs/1706.05587

implementation:  github https://github.com/NanqingD/DeepLabV3-Tensorflow

  v3的創新點一是改進了ASPP模塊;二是參考了圖森組的Understanding Convolution for Semantic Segmentation中HDC https://arxiv.org/abs/1702.08502的思想。其實就是對應縱橫兩種結構。backbone還是resnet 101.

  論文中Fig2畫了幾種常見的捕獲multi-scale context的方法。

(a)圖像金字塔。輸入圖像進行尺度變換得到不同分辨率input,然后將所有尺度的圖像放入CNN中得到不同尺度的分割結果,最后將不同分辨率的分割結果融合得到原始分辨率的分割結果,類似的方法為DeepMedic;

(b)編碼-解碼。FCN和UNet等結構;

(c)本文提出的串聯結構。

(d)本文提出的Deeplab v3結構。最后兩個結構右邊其實還需要8×/16×的upsample,在deeplab v3+中有所體現。當然論文的Sec 4.1也有提到,下采樣GT容易在反向傳播中丟失細節,因此上采樣feature map效果更好。

ASPP的改進

  改進后的aspp長下圖那個樣子,多了個1*1的conv和global avg pool。關於1*1卷積,論文中3.3第一段解釋的有點意思,當rate=feature map size時,dilation conv就變成了1*1 conv,所以這個1*1conv相當於rate很大的空洞卷積。此外引入了全局池化這個branch,這個思想是來源於PSPnet(參考博客),簡言之就是spp在分割上的應用,多尺度pooling。根據代碼實現來看,每個branch后面都沒有relu,其實有沒有BN,個人覺得不是很要緊,畢竟BN是線性操作,可以合並到conv里面,論文的Sec 4.1 說明了V3的所有層是用了BN的,BN可以加速訓練還有弱正則,所以一般都會用。針對ASPP,作者設計了一種“縱式”的結構,如下圖fig5。

 

  

"串聯"結構

  如下圖所示,復制conv4的結構3次,后面的每個block都有一個基准dilation Rate,在每一個block里面參考HDC的思想,又設置了[1,2,1]的rate,所以每個conv的rate = Rate*rate.在論文4.2的Multi-grid部分詳細進行了解釋對比。

 

  兩種方法的結構合並並不會帶來提升,相比較來說,aspp的縱式結構要好一點。所以deeplab v3一般也是指aspp的結構。

Deeplab v3+

paper:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation http://cn.arxiv.org/abs/1802.02611

Implementation:github https://github.com/jfzhang95/pytorch-deeplab-xception

  在deeplab v3中說到了需要8×/16×的upsample 最終的feature map,很明顯這是一個很粗糙的做法。v3+的創新點一是設計基於v3的decode module,二是用modify xception作為backbone。

  論文中同樣給出了一幅對比圖,(a)是v3的縱式結構,(b)是常見的編碼—解碼結構,(c)是本文提出的基於deeplab v3的encode-decode結構。

 

  論文中介紹了兩種backbone,一是Resnet101,二是改進后的xception。xception效果好於resnet,所以我只關注了xception,畢竟v3+主打也是xception backbone。下面從backbone和decode來簡要概括v3+的結構。

Modify Xception

  具體結構參照下圖。和原來的xception不一樣的地方有三,一是Middle flow重復了16次,ori xception是8次,也就是用了more layers;二是pooling均換為了dw+pw+s=2,本人在很多網絡也實驗過,把pool換成conv或者合並到現有的卷積層,均能提高一定的map。在Entry flow中stride =16,所以訓練的時候需要把Exit flow的stride=2換為rate=2的dilation conv(Middle不改變resolution)(train_os=16),因此后面的層也都是rate=2,這又導致The Gridding Effect,然而論文4.3中說明了這個地方用HDC思想並不會帶來提升,因此保留了一系列的rate=2;三是在所有的dw層后面加上了BN和relu,加BN無可厚非,線性操作而已,但是重新加relu是真的玄學啊。

 

Decoded module

  xception的輸出2048維特征接到ASPP上得到256維multi-scale context feature map(一般s=16),再4×上采樣,和backbone上的同分辨率的low-level feature map concat(一般是entry flow的第一個shortcut block的輸出,剛好s=4)。這個時候要讓low-level feature map在concat后的總特征圖中占比小,因為它的語義信息太少了,所以接了1*1的低維conv,這個地方可不是為了降低計算量,關於這個conv的channel選取,論文給出了對比試驗Table 1。concat后再接3*3 conv block,它的channel和block個數,論文中也進行了實驗驗證Table 2.最后再進行4×上采樣,達到原圖的分辨率。此外,作者還實驗了將aspp和decode中的卷積替換為depthwise conv,mIOU沒有明顯降低,flops大大降低了。

 

  簡繪deeplab v3和v3+的ASPP模塊結構,如下圖所示:參照我貼的重實現的代碼來看,ASPP每個部分后面均有relu。

 

官方給出一個PPT,內容關於deeplab v1,2.3區別,

鏈接: https://download.csdn.net/download/dlyldxwl/10557350


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM