基于Deeplabv3+和Unet的语义分割案例分析——津南数字制造算法挑战复赛

写在前面

无论是物体检测,还是语义分割,笔者都是比赛中才开始了解各种网络架构,优劣对比也是参考的网络上各种评价,没有项目经验。所以,选择网络架构时局限性很大,初赛时,毫不犹豫的选择了网上点赞最多的YOLOv3;复赛时,先是选择了deeplabv3+调试,后来又转到了可操作性更高的Unet。建议大家做比赛时,一定要多调研(百度,知乎,Github…),多交流(关注比赛群里的交流)。

赛题介绍

复赛赛题和初赛基本一致,区别在于复赛是语义分割问题,评价标准是:5类IoU的平均值。

数据预处理

基本操作:旋转、缩放、随机剪裁。

物体检测框架选择

这里很简单地介绍一下Deeplabv3+和Unet。
Deeplabv3+:
基于Deeplabv3+和Unet的语义分割案例分析——津南数字制造算法挑战复赛_第1张图片
特点:

  • ASPP结构;
  • 引入encode-decode结构,Deeplabv3的decode比较粗糙;
  • 使用改进后的Xception作为backbone

Unet:
基于Deeplabv3+和Unet的语义分割案例分析——津南数字制造算法挑战复赛_第2张图片
特点:

  • encoder-decoder代表
  • 简单,高效,易懂,可操作性强

调参过程

  • 同初赛,训练一个二分类网络筛选测试集;
  • backbone:deeplabv3+尝试了resnet50,resnet101,resnet152和xception,resnet152效果最好;Unet尝试了resnet50,se-resnet50,se-resnext50,resnet101,se-resnet101,se-resnext50效果最好;
  • 更换loss:BCEloss,Lovasz-Softmax loss,BCEloss+Lovasz-Softmax loss,OHEM。OHEM效果更好。
  • TTA:多尺度预测+水平翻转;
  • Unet的decoder方式:试了SCSE、IBN和OC。IBN效果更好。

小结

  • Deeplabv3+分割效果更好,边缘更光滑,但是训练和推断速度都比较慢;
  • Unet训练速度很快,硬件资源有限的情况下,可以用Unet尝试更多的想法;
  • 比赛数据集里有这样的问题:在训练集里同一个像素有多于一个的类别,测试集同一个像素也需要预测多个类别。对于这个问题,笔者尝试了将多分类问题转换为多个二分类问题,效果没有大的改善;
  • Deeplabv3+增大epoch有改善趋势,但是它,实在,是好慢…

你可能感兴趣的:(深度学习(图像))