DeepLab v3
论文地址:Rethinking Atrous Convolution for Semantic Image Segmentation
1、相比于DeepLab v2,有一点改进就是,在v2的时候,dilaconv只是用在最后一层也就是pool5层,然后通过不同的rate进行尺寸的融合,而在v3中,dilaconv在图像缩小16倍的时候,之后全部都使用了dilaconv,用来捕捉感受野而不降低分辨率
如上图所示,(a)为正常的ResNet,(b)为v3中提出来的使用dilaconv的方式
2、ASPP(Atrous Spatial Pyramid Pooling)中加入了BN(batch normalization),并且使用了image-level future
并且特征图进行1*1卷积,三个3*3卷积(rate=6、12、18),在经过一个global average pooling(image level future),然后把这五个特征图concat一起,在使用1*1卷积降低纬度得到特征图
DeepLab v3+
论文地址:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
相较于v3的改进:
1、使用了encoder和decoder模型,encode还是使用之前v3的结构,然后在此基础上又加入了decode
文中提到了使用output stride来表示最终输出特征图和输入图像尺寸之间的倍数关系,如最终特征图缩小了32倍,则output stide=32
encoder:也就是DeepLab v3的结构中,可以通过调整最后几层atrous conv的参数来调整output stide,v3中在ASPP中还加入了image-level future(也就是用global average pooling得到的1*1特征图)
decoder:如下图(c)所示,也就是在根据最后的output stide进行4倍双线性插值,然后在找到encoder中相同尺寸中特征图层中最后的输出进行concate(在concate之前会用1*1卷积调整到合适的通道数),然后再通过3*3卷积调整特征图,再通过4倍上采样得到最后的score map
文中还提到了output stide=16的时候,是速度和准确率最均衡的一种,output stide=8的时候会使分割的边界效果更好但是会增加计算量
上图中(a)就是DeepLab v3的结构,(b)是传统encoder-decoder,(c)是本文提出的使用atrous conv的encoder-decoder结构
2、使用了Xception中的Depthwise separable convolution(深层可分离卷积)
3、融合了Depthwise separable convolution和atrous convolution得到atrous separable convolution
如上图所示,(a)为Xception中的Depthwise conv,(c)就是本文提出的融合了Depthwise separable convolution和atrous convolution得到atrous separable convolution
4、对Aligned Xception进行了改进
所有的maxpooling替换成了depthwise separable convolution以便于在任意的分辨率上使用atrous separable convolution提取特征
在每个3*3depthwise convolution后边都加上了BN(batch normalization)和ReLU激活函数