DeepLab V1学习笔记

DeepLab V1

  • 摘要
  • 相关的工作
  • 遇到的问题和解决的方法
    • 信号下采样
    • 空间不变性(spatial insensitivity/invariance)
    • 论文的优点(贡献)
  • 网络的模型
    • 空洞卷积
    • CRF
    • 多尺度预测
  • 模型总结
  • 实验结果

Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs论文地址 : Deep Lab V1
ICLR 2015收录

摘要

本文结合了深度卷及网络(DCNN)和CRF两个已经比较成熟的模块,在实验过程中发现单纯的使用DCNN的效果不是那么的丝滑(DCNN对于高层语义信息拥有很好的能力,但是对于低级的位置信息不足。),做语义分割不够那么精准,根本原因是DCNN的高级特征的平移不变形。
我们通过将DCNN的最后一层和CRF结合,解决了定位准确率低的问题。

相关的工作

遇到的问题和解决的方法

信号下采样

信号下采样 :在DCNN中重复最大池化和下采样带来的分辨率下降问题,分辨率的下降会丢失细节。max-pooling会降低特征图的分辨率,而利用反卷积等上采样方法会增加时空复杂度,也比较粗糙,因此利用空洞卷积来扩大感受野,相当于下采样-卷积-上采样的过程被一次空洞卷积所取代。空洞卷积可以扩展感受野,获取更多的上下文信息。

解决方法 : 利用带孔的卷积(空洞卷积)

空间不变性(spatial insensitivity/invariance)

空间不敏感(invariance) :

  • 以获取图像中物体为核心的决策,必然需要空间不变性/不敏感。换句话说,对于同一张图片进行空间变换(如平移、旋转),其图片分类结果是不变的。
  • 但对于图像分割等,对于一张图片进行空间变换后,其结果是改变的。

解决方法 : 使用Dense CRF解决空间不变性的问题

论文的优点(贡献)

  • 速度:带atrous算法的DCNN可以保持8FPS的速度,全连接CRF平均推断需要0.5s
  • 准确:在PASCAL语义分割挑战中获得了第一(当时)的成绩,准确率超过第二好的方法7.2%
  • 简单:DeepLab是由两个非常成熟的模块(DCNN和CRFs)级联而成。

网络的模型

空洞卷积

CRF

参考资料:

  • 参考资料1
  • 参考资料2
  • 推导过程

CRF的引入:

  • CRF在传统图像处理上主要做平滑处理,但对于CNN来说,short-range CRFs可能会起到反作用,因为我们的目标是恢复局部信息,而不是进一步平滑图像。
  • 引入fully connected CRF来解决这个问题,考虑全局的信息。

后边DeepLab V3就不再用了,暂时先鸽子。

多尺度预测

DeepLab V1学习笔记_第1张图片

类似于FCN的多尺度的拼接,不过最后的结果类似于Unet是将所有的拼接起来了不是FCN的相加。
实现:

在输入图片与前四个max pooling后添加MLP(多层感知机,包括3 * 3 * 128以及1 * 1 * 128),得到预测结果。这四个预测结果与最终模型输出拼接(concatenate)到一起,相当于多了128*5=640个channel。

总结:虽然最后的结果略有提升,但是相对于添加CRF还是有差距

模型总结

主要是对原有VGG网络进行了一些变换:

  • 将原先的全连接层通过卷基层来实现。
  • VGG网络中原有5个max pooling,先将后两个max pooling去除(看别的博客中说,其实没有去除,只是将max pooling的stride从2变为1),相当于只进行了8倍下采样。将后两个max pooling后的普通卷基层,改为使用空洞卷积。
  • 为了控制视野域(同时减少计算量),对于VGG中的第一个fully connected convlution layer,即77的卷基层,使用33或4*4的卷积来替代。计算时间减少了2-3倍。

DeepLab V1学习笔记_第2张图片

  • 把最后的全连接层FC6、7、8改造成卷积层
  • pool4的stride由2变为1,则紧接着的conv5_1, conv5_2和conv5_3中hole size为2。
  • 接着pool5由2变为1, 则后面的fc6中hole size为4。
  • fc7,8为标准卷积
  • 由于Hole算法让feature map更加dense,所以网络直接用差值升采样就能获得很好的结果,而不用去学习升采样的参数了(FCN中采用了de-convolution)

其他训练信息
损失函数:交叉熵之和。
训练数据label:对原始Ground Truth进行下采样8倍,得到训练label。
预测数据label:对预测结果进行双线性上采样8倍,得到预测结果。

DeepLab V1学习笔记_第3张图片
使用dilated conv,还避开了层层上采样,直接用bilinear interpolation(双线性插值)恢复到原状,然后进行fully-connected conditional random fields 通过邻域之间的锐化,得到最终分割结果。

实验结果

模型的整体结构:
DeepLab V1学习笔记_第4张图片

测试细节:

项目 设置
数据集 PASCAL VOC 2012 segmentation benchmark
DCNN模型 权重采用预训练的VGG16
DCNN损失函数 交叉熵
训练器 SGD,batch=20
学习率 初始为0.001,最后的分类层是0.01。每2000次迭代乘0.1
权重 0.9的动量, 0.0005的衰减

最后的实验结果进行对比,发现最下边的那个对比当前主流的FCN-8S或者TTI—16都优秀很多
DeepLab V1学习笔记_第5张图片
DeepLab V1学习笔记_第6张图片
不同的组合在训练集和测试集的MIOU
DeepLab V1学习笔记_第7张图片
又无CRF的对比DeepLab V1学习笔记_第8张图片

你可能感兴趣的:(摆烂生活,学习,深度学习,DeepLab)