简而易懂的DeeplabV1 V2 V3 V3+
DeepLab V ,2015年发表
论文题目:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
DeepLab V2 ,2017年发表
开源代码:DrSleep/tensorflow-deeplab-resnet
DeepLab V3 ,2017年发表
论文题目:Rethinking Atrous Convolution for Semantic Image Segmentation
开源代码:leonndong/DeepLabV3-Tensorflow
DeepLab V3+ ,2018年发表
论文题目:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
开源代码:Tensorflow-models
DeepLab V1
下图为DeepLab V1的模型结构。
DeepLab V1有两个主要的特性:空洞卷积(Atrous Convolution、也叫dilated convolution)、条件随机场(CRF) ,这两个特性分别为了解决下面两个问题:
普通的卷积和池化层会导致最终的特征图极小,特征图经过上采样再输出成分割结果,这样的上采样就有些“放大过度”了;
普通的深度卷积网络分割结果比较粗糙,无法识别目标的细节。
在DeepLab中的方法:
空洞卷积 :对backbone的最后一个block卷积步幅设置为1,使用rate=2的空洞卷积替代原有后续的所有卷积,使得输出变大,避免池化层丢失图像信息;
CRF优化精度:对最终的输出层结果每个像素点之间增加连接,就是每个像素点作为节点,像素与像素间的关系作为边,通过二元势函数描述像素点与像素点之间的关系,鼓励相似像素分配相同的标签,而相差较大的像素分配不同标签,而这个“距离”的定义与颜色值和实际相对距离有关。
DeepLab V2
DeepLab V2主要增加了带空洞卷积的空间金字塔池ASPP(Atrous Spatial Pyramid Pooling)结构,以及替换了原有的VGG骨架,使用了ResNet。
不同的物体在图像中有不同的尺寸,ASPP结构可以考虑不同的物体比例,提高最终的模型精度。下图为ASPP结构相比单一分支空洞卷积的对比,显然不同尺寸的ASPP效果更好。
DeepLab V3
DeepLab V3主要改进了以下几点:
去掉CRF模块
改进了ASPP,在ASPP中加入BN层
在级联模块中应用空洞卷积
其中在级联模块中的应用结构如下图:
论文中的级联模块指复制了四份block4,这四份分别使用不同rate的空洞卷积,最终block输出结果,但这种结构效果并没有改进后的ASPP结构好。
ASPP的改进结构如下:
相比V2的ASPP增加了1x1的conv以及global avg pooling,同时对每个空洞卷积增加了BN。其中之所以增加1x1卷积是因为大采样率的3×3空洞卷积由于图像边界效应无法捕获长程信息,于是将退化为1×1的卷积。
DeepLab V3+
DeepLab V3+主要改进了以下几点:
增加Decoder模块,精细化物体边缘;
改进backbone(对backbone的改进这里不详细讨论)
相比DeepLab V3,DeepLab V3+增加了一个Decoder结构,原本的V3只做了8x的双向线性插值,很明显是比较粗糙的。DeepLab V3+的Decoder结构如下图:
首先以factor=4上采样,然后和尺寸相同的低层特征相拼接。低层特征采用1×1卷积降维。拼接之后,我们采用3×3的卷积来细化特征,然后再以factor=4双线性插值上采样。
可以看到,使用resnet101为backbone的v3,加入decoder之后mIOU精度略有提升。使用改进版xception的backbone,结合所有V3+特性,相比其他算法对比如下
- 点赞
- 收藏
- 关注作者
评论(0)