Deeplab v1:(2015)SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS
Deeplab v2:(2016.06)Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution,and Fully Connected CRFs
Deeplab v3:(2017)Rethinking Atrous Convolution for Semantic Image Segmentation
Deeplab v3+:(2018)Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
Deeplab v1:(2015)SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS
論文的寫作時間是2014年,當時深度卷積神經網絡在高級視覺研究領域取得了突破。其卷積和池化操作保證了其不變性,能夠提取高級抽象特征。
不變性指的是平移不變性,卷積層擴大感知野,池化層的pooling操作,即使圖像有小的位移、縮放、扭曲等,提取到的特征依然會保持不變,減小了相對空間位置的影響。
這在高級特征提取中作用重大,但在一些低級視覺研究,如語義分割任務中效果是不理想的。我們希望獲取具體的空間信息,而這些信息隨着網絡的加深慢慢丟失掉。
於是對於語義分割任務,DCNN存在兩個問題。
第一,最大池化和下采樣操作壓縮了圖像分辨率。一般語義分割通過將網絡的全連接層改為卷積層,獲取得分圖(或稱為概率圖、熱圖),然后對其上采樣、反卷積等操作還原與輸入圖像同樣大小。如果壓縮太厲害,還原后分辨率就會比較低,因此我們希望獲得更為稠密(dense)或尺寸更大的得分圖;
第二,對空間變換的不變性限制了模型的精度,網絡丟失了很多細節,獲得的概率圖會比較模糊,我們希望獲得更多的細節。在該文章中,提出使用空洞算法和全連接CRF分別解決這兩個問題。
DeeplabV1方法分為兩步走,
第一步仍然采用了DCNNs得到 coarse score map並插值到原圖像大小.
因為縮小8倍的,所以直接放大到原圖是可以接受的。如果是32倍,則需要上采樣(反卷積)。
然后第二步借用fully connected CRF對從FCN得到的分割結果進行細節上的refine。
vgg16:
VGG16中,卷積層的卷積核大小統一為 33 ,步長為 1,最大池化層的池化窗口為 2 * 2 ,步長為2 。VGG16模型有5次池化,縮小 2^5=32 倍
Layer (type) Output Shape Param
Conv2d-1 [-1, 64, 321, 321] 1,792
Conv2d-2 [-1, 64, 321, 321] 36,928
MaxPool2d-3 [-1, 64, 161, 161] 0
Conv2d-4 [-1, 128, 161, 161] 73,856
Conv2d-5 [-1, 128, 161, 161] 147,584
MaxPool2d-6 [-1, 128, 81, 81] 0
Conv2d-7 [-1, 256, 81, 81] 295,168
Conv2d-8 [-1, 256, 81, 81] 590,080
Conv2d-9 [-1, 256, 81, 81] 590,080
MaxPool2d-10 [-1, 256, 41, 41] 0
Conv2d-11 [-1, 512, 41, 41] 1,180,160
Conv2d-12 [-1, 512, 41, 41] 2,359,808
Conv2d-13 [-1, 512, 41, 41] 2,359,808
MaxPool2d-14 [-1, 512, 21, 21] 0
Conv2d-15 [-1, 512, 21, 21] 2,359,808
Conv2d-16 [-1, 512, 21, 21] 2,359,808
Conv2d-17 [-1, 512, 21, 21] 2,359,808
MaxPool2d-18 [-1, 512, 11, 11] 0
Linear-19 [-1, 4096] 253,759,488
Linear-20 [-1, 4096] 16,781,312
Linear-21 [-1, 1000] 4,097,000
=========================================================
deeplap v1在vgg16基礎上做了改動:
- 后面兩個pool層步長變為為1
- conv4,conv5空洞卷積
pool stride由2變為1, 如下圖所示:
圖a的輸出0123對於圖b輸出的0246,感受野相同,但又多了其他節點,使得feature變得更加稠密。
空洞卷積或者又叫做膨脹卷積
使用hole算法后,卷積核大小變化:
k=k+(k−1)(hloesize−1)
空洞卷積優點:
不增加計算量情況下擴大感受野
感受野的計算:
vgg16 感受野計算:
感受野計算詳細代碼戳
pool的stride由2變為1,使得后面的卷集層的感受野變小:
這個公式也可以看出:
deeplab v1:
我已經不想復制粘貼了,直接截ppt圖: