前言
在传统的语义分割问题上,存在的三个挑战:
- 传统分类CNN中连续的池化何降采样导致空间分辨率下降。(解决:去掉最后几层的降采样和最大池化,使用上采样滤波器,得到采样率更高的特征)
- 对象对尺度检测问题,使用重新调节尺度并聚合特征图,但是计算量较大。(解决:对特征层重采样,得到多尺度的图像文本信息,使用多个并行ACNN进行多尺度采样,陈伟ASPP)
- 以物体为中心的分类,需要保证空间转换不变性。(解决:跳跃层结构,从多个网络层中抽取高层次特征进行预测;使用全连接条件随机场进行边界预测优化)
Deeplab系列针对的是语义分割任务。对于语义分割任务要求:
- 语义分割是对图像做密集的分割任务,分割每个像素到指定的类别上;
- 将图像分割成几个有意义的目标;
- 给对象分配指定的类别标签。
Deeplab v1 & v2
论文Deeplab v1。
由于语义分割是像素级别的分类,高度抽象的空间特征对low-level并不适用,因此必须要考虑feature map 的尺寸和空间不变性。
feature map变小是因为stride的存在,stride>1是为了增加感受野的,如果stride=1,要保证相同的感受野,则必须是卷积核大小变大,因此,论文使用hole算法来增加核大小进而达到相同的感受野,也就是空洞卷积。
图像输入CNN后是一个倍逐步抽象的过程,原来的位置信息会随着深度而减少甚至消失。条件随机场在传统图像处理上做一个平滑,也就是说在决定一个位置的像素值时,能够考虑周围邻居的像素值,抹茶一些噪音。
具体的操作为:移除原网络最后两个池化层,使用rate=2的空洞卷积采样。标准的卷积只能获取原图1/4的内容,而新的带孔的卷积能够在全图上获取信息。
Astrous conv
对使用了s=2后的lower resolution feature map再进行标准的卷积的效果和在原来的feature map上使用rate=2的空洞卷积的效果是一样的。
ASPP结构
使用多尺度进行空洞卷积,在经过1*1的卷积之后连接起来。多尺度特征提取,得到全局和局部特征
DeeplabV1是在VGG16的基础上做了修改:
- VGG16的全连接层转为卷积;
- 最后两个池化层去掉,后续使用空洞卷积。
Deeplab v2
Deeplabv2是在v1上进行改进的:
- 使用多尺度获得更好的分割效果(使用ASPP)
- 基础层由VGG16转为ResNet
- 使用不同的学习策略
Deeplab V1和V2的优点:
- 速度上:使用空洞卷积的Dense DCNN速度比全连接层快;
- 准确度高
Deeplab v3
v3的主要创新点就是改进了ASPP模块,一个11的卷积和3个33的空洞卷积,每个卷积核有256个且都有BN层,包含图像及特征(全局平均池化)。
- 提出了更通用的框架,适用于任何网络;
- 复制了resnet最后的block,并级联起来
- 在ASPP中使用BN层
-
没有随机向量场
全局特征或上下文之间的相互作用有助于做语义特征,现有四种不同类型利用上下文信息做语义分割的全卷积神经网络:
- 1)图像金字塔:通常使用共享权重的模型,适用于多尺寸的输入。小尺寸输入响应控制语义,大尺寸的输入响应控制细节。通过拉普拉斯金字塔对输入变化成多尺度,传入DCNN,融合输出。缺点:因为GPU存储器的限制,对于更大更深的模型不方便扩展。
- 2)Encoder-Decoder:编码器的高层次的特征容易捕获更长的距离信息,在解码器阶段使用编码器阶段的信息帮助恢复目标的细节和空间维度。
- 3)上下文模块:包含了额外的模块用于级联编码长距离的上下文。例如空洞卷积。
- 4)空间金字塔池化:采用空间金字塔池化可以捕获多个层次的上下文。
Deeplab v3+
空间金字塔池化模块(SPP)和编码解码结构,用于语义分割的深度网络结构。SPP利用多种比例和多种有效感受野的不同分辨率特征处理,来挖掘多尺度的上下文内容信息,编解码结构逐步重构空间信息来更好的捕捉物体边界。