背景
对图像而言,常见的任务是:
- 图像分类:提取类别特征,如:VGG19网络
- 目标检测:提取类别,位置特征,如:YOLO网络
- 语义分割(实例分割):提取类别,位置特征,针对每个像素,如:Deeplab网络
我们知道,在做图像分类的时候,一般会在模型的最后添加全连接层+softmax用于预测。但是,全连接层会把卷积学习到的类别,位置特征抽象成一维的概率信息,可以识别整个图片的类别,不能标识每个像素的类别。因此,为了保留图像特征我们将全连接层替换为卷积层。
这样,模型的输出不再是一维,而是二维的图。
由于特征图经过一系列的卷积和池化后(保持特征不变性,增大感受野,节省计算资源等)造成分辨率降低,丢失大量细节和边缘信息,因此我们需要通过一定的手段还原原图分辨率。
不同的模型会采取不同的还原方式,图上以FCN为例,采用反卷积还原分辨率并使用加和的方式找回下采样阶段丢失的信息,直接把编码阶段的特征图加到解码阶段中来。
基石FCN模型
FCN阐释了如何将CNN应用到语义分割问题上,是深度学习应用此问题的基石。
文章开始,我们谈到模型最后的全连接层不适用与分割任务,需要替换成卷积层,以此获取二维的特征图然后接softmax,对每个像素点进行分类。
先通过卷积,池化下采样,然后上采样还原分辨率。上采样一般有两种方式:双线性插值(Deeplab),反卷积(FCN)。
Google DeepLab v1
DeepLab是针对语义分割任务提出的模型,主要使用DCNN(深度卷积网络),CRF(条件随机场),空洞卷积做像素级预测。DCNN在语义分割中存在两个主要问题:
- 下采样带来的分辨率下降,细节信息丢失
- 平移不变性,限制了定位精度
针对以上问题,Deeplab采用空洞卷积扩大感受野,获取更多的上下文信息。使用全连接条件随机场(DenseCRF)提高模型捕获细节的能力。
DCNN以VGG16模型为后端网络,将FC层全部转为卷积层,改成全卷积网络形式。最后的两个池化层不下采样,通过2或4的采样率空洞卷积对特征图扩大感受野,缩小步幅。
模型训练的时候讲VGG16的权重做微调,损失函数取输出特征图ground truth下采样8倍做交叉熵和;测试时取输出图双线性上采样得到的结果(DCNN预测物体的位置是粗略的,没有确切的轮廓,针对此问题采用全连接的CRF提升分割精度)。
Google DeepLab v2
DeepLab v2相比DeepLab v1基础层由VGG16改为ResNet,添加多尺度和ASPP模块得到更好的分割结果。
- 空洞卷积作为密集预测的强大工具,可以扩大感受野,在不增加参数量和计算量的同时获取更多的上下文。
- 提出ASPP(空洞空间卷积池化金字塔),并行的采用多采样率的空洞卷积进行探测,以多个比例捕获对象及图像上下文。
- 组合DCNN和概率模型,改善分割边界结果。
模型运行步骤:
- 输入经过改进的DCNN(带空洞卷积和ASPP模块)
- 通过双线性插值恢复原图大小(FCN采用反卷积)
- 通过全连接的CRF细化预测结果,得到最终输出
Google DeepLab v3
DeepLab v3相比DeepLab v2:
- 重新讨论了空洞卷积的使用,让我们在级联模块和空间金字塔池化的框架下,能够获取更大的感受野从而获取多尺度信息。
- 改进ASPP模块,由不同采样率的空洞卷积和BN层组成。
- 使用大采样率的3x3空洞卷积,因为图像边界响应无法捕获远距离信息,会退化为1x1卷积,因此将图像级特征融合到ASPP模块。
- 没有使用CRF做后期优化处理
Google DeepLab v3+
DeepLab v3+采用编码器,解码器结构,通过使用解码器模块改善物体边缘的分割结果,还尝试使用Xception作为编码器。
如图所示,空间金字塔池化可以池化不同分辨率的特征图来捕获上下文信息。编码器解码器结构可以捕获锋利的边界。先4倍上采样,然后与编码器中的特征图合并,最后4倍上采样恢复到原始图像大小。
encoder就是DeepLab V3,通过修改ResNet101最后两(一)个block的stride,使得output stride为8(16)。之后在block4后应用改进后的Atrous Spatial Pyramid Pooling,将所得的特征图concatenate用1×1的卷积得到256个通道的特征图。
在decoder中,特征图首先上采样4倍,然后与encoder中对应分辨率低级特征concatenate。在concatenate之前,由于低级特征图的通道数通常太多(256或512),而从encoder中得到的富含语义信息的特征图通道数只有256,这样会淡化语义信息,因此在concatenate之前,需要将低级特征图通过1×1的卷积减少通道数。在concatenate之后用3×3的卷积改善特征,最后上采样4倍恢复到原始图像大小。
U-Net网络
U-Net网络可以利用较少的数据集进行端到端训练,医学领域应用较多(医学领域的标注数据获取成本很高)。
- 为了更有效的利用标注数据,采用数据增强的方法(训练样本进行随机弹性形变)
- 网络由收缩路径获取上下文信息以及一个对称的扩张路径用以精确定位。
如图所示,网络结构由contracting path和expansive path组成。
contracting:
- 含有重复结构,每个都有2个3x3卷积层,relu层和2x2最大池化层
- 每一次下采样都将特征通道数加倍
expansive path:
- 每一步都使用反卷积,每次反卷积后将通道数量减半,特征图大小加倍。
- 反卷积后,将反卷积的结果与contracting path中对应的步骤的特征图拼接起来
- 对拼接后的map再进行2次3*3卷积
- 最后一层卷积核大小为1x1,将64通道的特征图转为特定类别数量
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。