1 deeplabv2的概述
主要贡献
- 1 强调使用空洞卷积。作为密集预测任务的强大工具,空洞卷积能够明确的控制 DCNN 内计算特征响应的分辨率。 既可以有效的扩大感受野,在不增加参数量和计算量的同时获取更多的上下文
- 2 提出了 空洞空间卷积池化金字塔(atrous spatial pyramid pooling ( ASPP)),以多尺度的信息得到更强健的分割结果。ASPP并行的采用了多个采样率的空洞卷积层来预测,用多个比例捕获对象以及图像上下文
- 3 通过组合 DCNN 和 概率图模型 DenseCRF,改进分割边界结果。在 DCNN 中最大池化和下采样组合存在平移不变性,通过最终的DCNN层相应与全连接的CRF结合,来克服这个问题
相对于 deeplabv1 的改进
- 1 基础网络:用 RestNet 网络替代了 VGG网络
- 2 ASPP:解决了多尺度上存在对象的问题
- 3 DenseCRF:公式的更新
主要优点
- 1 效果:在 PASCAL VOC2012、PASCAL-Context、PASCALPerson-Part、Cityscapes 上都获得当时的最优的性能
- 2 速度:现代 GPU 上,运行效率达到 8 FPS,DenseCRF 平均需要 0.5s(与v1一样)
- 3 简单:系统是由两个非常成熟的模块结合而来,DCNN、CRF(与v1一样)
2 模型搭建
2.1 网络结构
该论文提出的流程,整体上与 v1 相差不大。output_stride=8时,最后两个 maxpooling 的 stride=1。(与v1 相同)
在 DCNN 的选择、CRF上做了改进
2.2 用于稠密特征提、增大感受野的空洞卷积
自己在另一篇博客中有记录 空洞卷积
2.3 使用ASPP从多尺度进行图像表示
为了使用分割不同大小,所以在多尺度上进行分割。有两种方案
- 1 标准的多尺度处理:
将输入为缩放成不同尺寸,分别输入到 DCNN中,融合得到多个预测结果。这样可以显著提升预测结果,但也会耗费大量的计算力和空间- 2 固定的特征图上,使用不同 rate的空洞卷积并行提取特征。受 SPPNet 中的模块结构的启发
将ASPP添加到网络结构中
2.4 引入 Fully-Conected CRF
下图第二列是 DCNN 的输出结果,边界信息平滑粗糙。原因:最大池化和下采样组合,使得 DCNN 网络的平移不变性
v2的CRF,是基于 v1的CRF改进的。能量函数为: E ( x ) = ∑ i θ i ( x i ) + ∑ i j θ i j ( x i , x j ) E(x)=\sum_{i}\theta_i(x_i)+\sum_{ij}\theta_{ij}(x_i,x_j) E(x)=i∑θi(xi)+ij∑θij(xi,xj),其中的二元势函数的表达式进行了更新 θ i j ( x i , x j ) = μ ( x i , x j ) [ w 1 ∗ e x p ( − ∣ ∣ p i − p j ∣ ∣ 2 2 σ α 2 − ∣ ∣ I i − I j ∣ ∣ 2 2 σ β 2 ) + w 2 ∗ e x p ( − ∣ ∣ p i − p j ∣ ∣ 2 2 σ γ 2 ) ] \theta_{ij}(x_i,x_j)=\mu(x_i,x_j) \left [ w_1*exp(-\frac{||p_i-p_j||^2}{2\sigma_{\alpha}^2}-\frac{||I_i-I_j||^2}{2\sigma_{\beta}^2})+w_2*exp(-\frac{||p_i-p_j||^2}{2\sigma_{\gamma}^2})\right ] θij(xi,xj)=μ(xi,xj)[w1∗exp(−2σα2∣∣pi−pj∣∣2−2σβ2∣∣Ii−Ij∣∣2)+w2∗exp(−2σγ2∣∣pi−pj∣∣2)]
3 实验
在4个数据集上评估了模型:PASCAL VOC 2012、PASCAL-Context、PASCAL_Person-Part、Cityscapes。
3.1 PASCAL VOC 2012
- 数据集 PASCAL VOC 2012 分割数据,包含20类前景物体和1个背景类。原始的数据集为像素级别的标记图片,包括:训练集 1464、验证集 1449、测试集 1456、额外注释扩展集 10580。
- 性能的测试:用21个类别的平均单位中的IOU来平衡。
3.1.1 DeepLabV1的实验
先回顾下 deeplabv1 的实验结果
选项 配置 数据集 PASCAl VOC 2012 segmentation
分割图像数量 训练集1464、验证集1449、测试集1456、扩展训练集 10582DCNN 预训练的 VGG16 DCNN损失 交叉熵 优化器 SGD,batch=20 学习率 初始为 0.001,最后分类层是0.01,每2000次衰减0.1倍 权重 动量0.9,衰减系数0.0005 模型对预训练的 VGG16 模型做 fine-turn。训练时 DCNN 和 CRF 是分别训练的,训练CRF时 将DCNN的输出固定,作为CRF的一元势函数的输入。
DeepLabFOV (kernelsize=3x3,rate=12)取得了一个很好的平衡。可以看出:【小卷积+高采样率】可以保持感受野、减小参数、加快计算、分割效果好。
3.1.2 DeepLabV2的实验
基于 v1做的如下改进:(1) 训练时采用不同的学习策略;(2) ASPP; (3) 更深的网络和多尺度处理
学习率
- ploy学习策略: 学习率每个 iter 乘以 ( 1 − i t e r m a x i t e r ) p o w e r (1-\frac{iter}{max_{iter}})^{power} (1−maxiteriter)power
- step learning rate 学习策略: reduce the learning rate at a fixed step size
训练 DeepLab-LargeFOV 时,使用了 ploy策略要比step learning rate 更有效。
![]()
上表中5个训练方式的通过CNN的图片的总数量分别为:180k、180k、300k、100k、200k
- batch=30、iteration=6K,使用ploy策略比“step”策略,性能优1.17%
- batch=30、iteration=6K -->>10K,使用ploy策略,性能优1.48%
- (更多的iteration会增加整体的训练时间。所以在增加iteration时,减少batch,达到整体训练时间的不增加)
- batch=30 -->> 10、iteration=10K,使用ploy策略,性能基本不变(64.9% -->> 64.71%)
- batch=30 -->> 10、iteration=6K -->> 20K,使用ploy策略,性能提高2.46%。(两种方式总耗时相近)
ASPP实验
如图所示,VGG-16中ASPP使用了几个并行的 fc6-fc7-fc8 分支。不同的rate是为了抓取不同大小的物体。
上表测试的结果:
- (1) LargeFOV模型,单分支 rate=12;(2) ASPP-S 有4个分支 rate={2,4,8,12};(3) ASPP-L有4个分支 rate={6,12,18,24}
- 增加了各自适合的 CRF,LargeFOV 和 ASPP-L 性能上都有提升;ASPP-S 性能基本不变(思考:CRF的必要性)
- 使用ASPP-L+CRF 模型效果最好。高采样率的ASPP更能捕获全局信息,分割效果更优
- 论文在测试集上评估了 ASPP-L+CRF 模型,性能为72.6%
不同深度网络和多尺度处理实验
DeepLabV2主要是在 ResNet 上做实验,对比了几个方法:
- 多尺度输入:以比例为 {0.5,0.75,1}的输入尺寸到DCNN,融合结果
- 预训练模型:在MS-COCO上预训练模型
- 数据增强:训练期间随机缩放到 (0.5 到 1.5) 输入尺寸
实验结果如下:
- 多尺度带来了2.55%的提升;多种技巧融合最终的到了 77.69% 的结果
![]()
- CRF 细化了分割结果, 恢复一些错分的像素,同时也明确了一部分的分割边界。如下图 :
Deeplabv2 与其他模型对比
在 PASCAL VOC 2012 的验证集上进行测试,结果如下:
3.2 PASCAL-Context
PASCAL-Context 数据集为整个场景提供了详细的语义标签,包括对象(如person)和东西(如 sky)。训练集和验证集包含了4998和5105张图像。
论文在PASCAL-Context 上基于 VGG16 和ResNet101 不同的变体模型,与其他先进的模型做对比:
3.3 PASCAL-Person-Part
额外的PASCAL VOC 2010 annotation 论文[36]。我们主要关注数据集的person部分,它包含了更多的训练数据,并且在对象尺度和人体姿态上有很大的变化。具体来说,数据集包含每个人的详细部分注释,例如眼睛、鼻子。我们将注释合并为头部、躯干、上肢/下肢和上肢/下肢,得到6个人员部分类和一个背景类。我们只使用包含人员的图像进行培训(1716张图像)和验证(1817张图像)
测试结果
3.4 Cityscapes
Cityscapes是大型数据集,它包含从50个不同城市收集的5000张街景图像的高质量像素级注释。使用19个语义标签(属于7个超类:地面、建筑、物体、自然、天空、人、车辆)进行评估(不考虑空标签进行评估)。训练集、验证集和测试集分别包含2975,500和1525张图像
3.5 失败案例
4. Conclusion
DeepLabv2将空洞卷积应用到密集的特征提取,进一步的提出了空洞卷积金字塔池化结构、并将DCNN和CRF融合用于细化分割结果。实验表明,DeepLabv2在多个数据集上表现优异,有着不错的分割性能。