DeepLab V1
Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs论文地址 : Deep Lab V1
ICLR 2015收录
摘要
本文结合了深度卷及网络(DCNN)和CRF两个已经比较成熟的模块,在实验过程中发现单纯的使用DCNN的效果不是那么的丝滑(DCNN对于高层语义信息拥有很好的能力,但是对于低级的位置信息不足。),做语义分割不够那么精准,根本原因是DCNN的高级特征的平移不变形。
我们通过将DCNN的最后一层和CRF结合,解决了定位准确率低的问题。
相关的工作
遇到的问题和解决的方法
信号下采样
空间不变性(spatial insensitivity/invariance)
- 以获取图像中物体为核心的决策,必然需要空间不变性/不敏感。换句话说,对于同一张图片进行空间变换(如平移、旋转),其图片分类结果是不变的。
- 但对于图像分割等,对于一张图片进行空间变换后,其结果是改变的。
论文的优点(贡献)
- 速度:带atrous算法的DCNN可以保持8FPS的速度,全连接CRF平均推断需要0.5s
- 准确:在PASCAL语义分割挑战中获得了第一(当时)的成绩,准确率超过第二好的方法7.2%
- 简单:DeepLab是由两个非常成熟的模块(DCNN和CRFs)级联而成。
网络的模型
空洞卷积
CRF
参考资料:
CRF的引入:
- CRF在传统图像处理上主要做平滑处理,但对于CNN来说,short-range CRFs可能会起到反作用,因为我们的目标是恢复局部信息,而不是进一步平滑图像。
- 引入fully connected CRF来解决这个问题,考虑全局的信息。
后边DeepLab V3就不再用了,暂时先鸽子。
多尺度预测
类似于FCN的多尺度的拼接,不过最后的结果类似于Unet是将所有的拼接起来了不是FCN的相加。
实现:
总结:虽然最后的结果略有提升,但是相对于添加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倍。
- 把最后的全连接层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倍,得到预测结果。
使用dilated conv,还避开了层层上采样,直接用bilinear interpolation(双线性插值)恢复到原状,然后进行fully-connected conditional random fields 通过邻域之间的锐化,得到最终分割结果。
实验结果
模型的整体结构:
测试细节:
最后的实验结果进行对比,发现最下边的那个对比当前主流的FCN-8S或者TTI—16都优秀很多
不同的组合在训练集和测试集的MIOU
又无CRF的对比