deeplab v1
问题的引入:
关于DCNN的大量工作表明,采用端到端的训练方式,使得模型对图像的变换有着较好的不变性,但这一点却妨碍了分割任务中的定位。经过研究发现,在深度CNN中对于语义分割主要存在两个挑战:一个是重复池化与下采样使得图像的分辨率大幅降低,信息发生了丢失,不利于恢复;另一个是对图像转换的不变性影响了定位
解决方案:
1、对于不断下采样造成的分辨率降低的问题,论文使用了一种的新的卷积方式,空洞卷积,如下图所示。
我们知道,池化层的存在不仅使得计算更为简单,而且扩大了卷积的感受野,使得卷积能够观察到较大的目标,然而,在进行池化的过程中,不可避免的丢失了一定的信息,不利于后期图片分辨率的恢复。论文中使用了空洞卷积代替了池化层,避免了信息的丢失,同时也扩大了感受野。
2、DCNN的得分图可以可靠的预测物体的存在与粗略的位置,但不能精确的定位目标的轮廓,其内在的不变性限制了对位置的推理,本文使用了全连接的CRF作为后处理操作,通过耦合DCNN的识别能力进一步优化分割的边缘。
deeplab v2
问题的引入:
此版本的deeplab主要解决的问题有两个:第一个是多尺度上存在的目标;第二个是由于DCNN内在的不变性造成的局部精度的下降。所谓的多尺度问题指的是同一尺度下不同的目标的响应不同,较小的目标在大的尺度下才方便提取特征,而较大的目标在较小的尺度下才能提取全局信息,这就是一个多尺度的矛盾。
解决方案:
1、金字塔池化用在全连接层之前,不仅可以突破全连接层对于输入图片尺寸固定的限制,而且可以捕获不同尺度的信息,使得网络更加健壮。受到金字塔池化的启发,文章采用类似的方法解决这个问题。论文尝试了两种方法来处理尺度变换的问题。第一种是标准的多尺度处理,提取不同尺寸图片的得分图,为了得到最终的结果,在不同的尺寸下取每个位置的最大响应,双线性插值这些并行的特征图到原始图片的分辨率并融合它们,但计算代价太大。第二种是受到了RCNN的空间金字塔池化的启发,对单个尺度下提取的卷积特征进行重采样,可以准确有效的对任意尺度下的区域进行分类,如下图所示:
2、对于DCNN内在的不变性,这个版本的deeplab仍旧使用了CRF进行处理,这里不做赘述。
deeplab v3
问题的引入:
此版本的deeplab还是针对多尺度下目标的分割问题,同时重新思考了空洞卷积
解决方案:
我们知道,使用空洞卷积可以在不引入池化层的前提下扩大感受野,然而,当采样率过大时,由于图像边缘的影响会不能捕获长距离信息,这个时候,会退化成1*1的卷积模块,为了克服这个问题,论文中使用了图片级的特征,将特征图作全局池化,并最终融合在一起进行上采样。此论文的一大改进就是去掉了CRF操作,直接由得到的特征图进行上采样操作恢复原分辨率。
deeplab v3+
解决的问题:
编译码结构与空间金字塔模型都是语义分割任务常用的模型,前者通过使用多个采样率的滤波或者池化操作来探测输入特征,能够编码多个尺度的contextual information,后者可以在恢复分辨率时捕获更加清晰的边界,论文尝试结合这两种结构的优点,提出了deeplab v3+。
相关信息:
在deeplab v3+中,即便使用了空洞卷积,特征图也缩小了8倍,然后直接使用了双线性插值的方法进行上采样恢复原分辨率,然后这样操作并不能恢复丢失的信息,分割的效果仍有改进的地方。
解决方案:
1、编码译码结构,是一种较快的输出图信息扩充方法,论文中使用了这一方法,进行了两次上采样,第一次上采样到中间特征图大小,与中间一层的特征图组合起来,再进行上采样恢复到目标大小。
2、编码部分使用了修改后的Xception网络,且使用了可分离卷积,增加了编码能力,具体示意图如下: