deeplabv3+实验解析

deeplabv3+的源代码已经开源,地址为:https://github.com/tensorflow/models/tree/master/research/deeplab

接下来我们讲解原论文的实验评估部分:

Experimental Evaluation

  • 使用在ImageNet-1k上预训练的ResNet-101/modified aligned Xception,通过atrous conv提取稠密特征图
  • 在tensorflow框架上训练,已开源
  • 使用的数据集PASCAL VOC 2012,包含20个前景目标类和1个背景类
  • 使用ploy学习策略(一种学习率衰减策略),初始学习率为0.007,crop size 513 × 513(训练图片裁剪), fine-tune BN(batch normalization)参数,注意在decoder模块同样包含BN层
  • output_stride = 16,随机裁剪数据增强

Decoder Design Choices

用DeepLabv3作为encoder,对于f 个滤波器,kernel大小为k×k的卷积操作记为[k×k,f],基于ResNet-101的DeepLabv3是在输出结果上继续双线性上采样16倍得到预测结果,这在PASCAL VOC2012 验证集上达到了77.21%。在此基础上,DeepLabv3+提出了改进的decoder模块,考虑了3个关于decoder的设计方案:

(1)使用1×1卷积来减少low feature的通道数

1X1卷积部分示意图:

为了评估1×1卷积在decoder阶段的影响,在encoder中取了Conv2尺寸为[3×3,256] 为输出,从表一中可以看出减少通道数在48到32之间性能最佳。最终采用了[1×1,48] 做通道降维

(2) 是否需要3×3卷积逐步获取分割结果

 3X3卷积部分示意图:

  • 发现使用2组[3 × 3, 256]的滤波器比使用1组,3组更有效;
  • 将滤波器的个数从256改为128,将卷积核大小从3X3改为1X1都会降低性能;

 

(3)在编码阶段使用哪部分的low-level feature map

 将conv2和conv3串联起来作为特征图,Conv2上采样2倍后与Conv3结合,再上采样2倍,没有提高。

最后采用简单的解码模型,Deeplabv3特征图与Conv2上采样特征图用两组 [3 × 3, 256]操作结合。

DeepLabv3+的output stride = 4,我们不在要求更稠密的特征图(即output stride < 4),因为GPU资源的限制。

ResNet-101 as Network Backbone

以ResNet做为DeepLabv3+的encoder模型,实验了以下几种情况:

  • Baseline:表3第一组,都没有使用decober,测试了不同output_stride ,多尺度输入,左右翻转操作
  • Adding decoder: 表3第二组。采用的decoder,平均多增加了20B的计算消耗,性能从77.21% to 78.85% 或 78.51% to 79.35%,
  • Coarser feature maps: 表3第三组,粗糙的特征图,测试了使用output_stride=32 ,使用decoder,计算量只有74.2B,这样计算速度更快。但是相对于output_stride=16 准确率下降了1-1.5%左右。

结论: 

  • 在training或evaluation时,使用output stride = 16 or 8
  • 使用多尺度MS计算量增加一个数量级,使用左右翻转Flip计算量翻倍

 Xception as Network Backbone

 ImageNet pretraining:Xception网络用ImageNet-1k做预训练,配置如下:

从表4中可以看出,Modified Xception性能好一些。

以Modified Xception做为DeepLabv3+的encoder模型,实验了以下几种情况:

  • Baseline: 不使用decoder。当train output stride = eval output stride = 16时,使用Modified Xception比Resner101性能提升2%;使用output stride = 8,MS,Flip性能都有所提升。
  • Adding decoder: 添加了decoder。当eval output stride = 16是增加decoder性能提升0.8%。当eval output stride = 8时,性能提升不高。
  • Using depthwise separable convolution: 在ASPP和decoder中使用深度分离卷积。计算量下降了30-40%。
  • Pretraining on COCO: 在MS-COCO数据集上预训练,性能提升2%。
  • Pretraining on JFT: 在IamgeNet-1K和JFT-300M上预训练,性能提升0.8%-1%。

 

  • 与其他先进模型在VOC12的测试集上对比: 

  • 质量评估: 图6是可视化结果,模型在没有任何后处理的情况下分割效果很好,但是在(a)沙发vs椅子,(b)严重遮挡的物体,(c)视野罕见的物体上分割效果不是很好。

在目标边界上的提升

使用trimap实验测量模型在分割边界的准确度。计算边界周围扩展频带(称为trimap)内的mIoU。结果如下:

与双线性上采样相比,加decoder的有明显的提升。trimap越小效果越明显。

Conclusion

论文提出的DeepLabv3+是encoder-decoder架构,其中encoder架构采用DeepLabv3,decoder采用一个简单却有效的模块用于恢复目标边界细节。并可使用atrous convolution在指定计算资源下控制特征的分辨率。

论文探索了Xception和深度分离卷积在模型上的使用,进一步提高模型的速度和性能。模型在VOC2012上获得了新的state-of-the-art表现。

猜你喜欢

转载自blog.csdn.net/weixin_42702666/article/details/88019473
今日推荐