deeplab v1 :semantic image segmentation with deep convolutional nets and fully connected CRFs
對于傳統(tǒng)的DCNN網(wǎng)絡(luò)來說,其實都是具有不變性的這個特征的,深度學(xué)習(xí)是十分適合高階的計算機視覺任務(wù)。但是,對于底層的比如semantic segmentation的任務(wù)來說,是十分不利的。
目前的兩個大問題就是:1,降采樣問題。2,不變形問題。
對于降采樣問題,我們使用’atrous'新型卷積來實現(xiàn)。不變性問題,我們加入CRF來對圖像進行優(yōu)化,最終得到不錯的結(jié)果。
網(wǎng)絡(luò)結(jié)構(gòu):我們在VGG16中,去掉了最后兩個max pooling層,加入了‘a(chǎn)trous’方法。


pipline:

CRF算法:

這里要再仔細(xì)看下。
DeepLabv2:Semantic Image Segmentation with Deep Convolutional Nets,Atrous Convolution,and Fully Connected CRFs
這篇文章主要的看點是:1,在tensorflow中以模塊化方式,實現(xiàn)了'atrous convolution',作為一個非常有效的工具。2,實現(xiàn)了ASPP,‘a(chǎn)trous spatial pyramid pooling',能夠十分魯棒地實現(xiàn)圖像分割。3,利用CRF優(yōu)化 ,推出Dense CRF。
1,模塊化實現(xiàn)‘a(chǎn)trous pooling’
由于這種卷積方法,很好地平衡了accurate localization(small field-of-view)和context assimilation(large field-of-view)。在具體實現(xiàn)上有兩種方法,一種是upsample the filter 或者是對圖像稀疏采樣,這種不太好。第二種,The second method, originally proposed by [82] and used in [3], [16] is to subsample the
input feature map by a factor equal to the atrous convolution rate r , deinterlacing it to produce r2 reduced resolution maps, one for each of the r×r possible shifts. 利用tensorflow實現(xiàn)了這種方法。


2,實現(xiàn)多尺度ASPP
多個尺度的洞卷積,并行執(zhí)行。實現(xiàn)最終結(jié)果。

3,不在使用傳統(tǒng)的CRF方法,而是利用dense CRF的方法,得到較為優(yōu)秀的結(jié)果。
DeeplabV3:Rethinking Atrous Convolution for Semantic Image Segmentation
這篇文章主要是改進了級聯(lián)的方式,綜合運用串行和并行的方式,實現(xiàn)對多尺度物體分割。
這里,我們加入output_stride,從而來表示最終得到的圖片與輸入尺度的大小對比。然后使用更加深的網(wǎng)絡(luò)對圖像進行深度分割。


加入這種多尺度的方法主要是由于當(dāng)空洞卷積越大的時候,他每次卷積的時候的有效權(quán)重就會越?。╬adding)的原因。所以我們應(yīng)用多尺度的方法,最后加入average pooling的方法,取得一個好的結(jié)果。
Deeplab V3+:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
由于在encoder的時候會更加關(guān)注多尺度的紋理信息,在decoder的時候可以使得邊界更加光滑,我們使用這種結(jié)構(gòu)。同時我們在encoder結(jié)構(gòu)中加入Xception 模型和深度卷積,可以更加快速地實現(xiàn)分割。

1,Atrous convolution
這里不在贅述,主要是看這個公式。

2,depthwise separable convolution
為了降低計算量,我們這里可以按照mobile net的方法,先做depthwise的卷積,然后再做1*1的卷積。我們這里把depthwise的卷積改成atrous separable convolution.
3,使用Deeplabv3作為 encoder:
我們加入output stride來決定最后輸出的尺度比例。只要使用的ASPP的模塊。
4,加入decoder:
之前我們直接使用bilinearly upsampled的方法,但是這樣的結(jié)果就導(dǎo)致細(xì)節(jié)并不鋒利。這里我們使用如圖的方法。
5,Modified Aligned Xception
使用目前最新的aligned Xception,但是做了細(xì)微的修改。1,更深的Xception。2,把所有max pooling全都換成depthwise separable convolution with striding。3,在每一個3×3的深度卷積之后都加入BN和ReLU。