MMSegmentation:标准统一的语义分割框架

等 

写在前面

语义分割作为计算机视觉中一项基础任务,同时在自动驾驶/视频编辑等领域中有重要的应用,因此一直受到学术界和工业界的广泛关注。在近几年的会议中,语义分割的论文层出不穷,但是市面上一直缺乏一款能够相对公平比较各种方法的框架。为了方便研究员和工程师们,我们开源了一套基于 PyTorch 实现的标准统一的语义分割框架:MMSegmentation。

open-mmlab/mmsegmentation?github.com技术分享图片

在 MMSeg 下,我们复现和比较了很多语义分割的算法,并对训练测试的超参进行了优化和统一,在精度,速度,稳定性等方面都超过目前开源的其他代码库。


MMSegmentation

作为MM系列的新成员,MMSegmentation 保持了 MM 系列一贯的风格,拥有灵活的模块化设计和全面的高性能model zoo。目前我们支持18种算法,大部分算法都提供了多种 setting 以及在 Cityscapes,ADE20K,Pascal VOC 2012上的训练结果(目前应该是语义分割中最大的 模型库),之后会有其他的数据集以及轻量的模型陆续放出(也欢迎大家贡献更多的方法)。目前我们支持下列18种 EncoderDecoder 类型的方法:

  • FCN
  • PSPNet
  • DeepLabV3
  • PSANet
  • DeepLabV3+
  • UPerNet
  • NonLocal
  • EncodingNet
  • CCNet
  • DANet
  • GCNet
  • ANN
  • OCRNet
  • DNL
  • EMANet
  • Semantic FPN
  • PointRend

MMSeg 作为全新的语义分割框架,和其他的框架相比,它提供了更强更快的主流算法,统一超参的公平比较,附带丰富的配置文件和五花八门的 tricks,而且非常灵活易于拓展。

更强更快的主流算法

MMSeg 目前发布的0.5.0版本主要支持的为 EncoderDecoder 类型的模型(以后会支持更多,欢迎大家提需求),复现了 PSPNet,DeepLab 系列等经典算法,并且精度更高,比如我们的 DeepLabV3+ 在 Cityscapes/ADE20K 验证集上单尺度测试 mIoU 可分别达到 80.98 和45.47。

技术分享图片

统一训练测试超参的公平比较

在众多开源的语义分割代码库中,几乎找不到两个完全一样超参设定的代码库,而且代码库所支持方法的交集又十分有限,无法做到严格的对比实验和公平比较,甚至有时候会推导出“因为 A+B+C > D 所以 A 比 D 更好”这样的结论。

因此在 MMSeg 中,所有支持的方法中,除去其自身的结构特性,所有的超参(和 trick)都保持了统一,而且清晰的配置文件使得对比更加容易。

如图所示,所有方法的配置文件都继承了相同的数据预处理流程和学习率下降策略。

技术分享图片

丰富的配置文件

MMSeg 提供非常丰富的配置文件,这些配置文件整合了各种比较常见的训练 setting,以PSPNet 在 Cityscapes 数据集为例,我们提供了8种不同配置的 PSPNet,报告了速度,显存占用,单尺度/多尺度精度等指标,并提供模型以及实验记录供用户直接下载使用

技术分享图片

语义分割中一般剪切出固定大小的图片进行训练,在 Cityscapes 数据集上,主流的有769x769 和 512x1024 两种(Cityscapes 数据集所有图片大小均为1024x2048)。用户在训练的时候无论用那种设定,都可以找到合理的 baseline。

五花八门的 tricks

在所有的提供的模型和配置文件,我们没有增加额外的训练 tricks,只选取了最朴素的训练方式,但是这不妨碍我们支持各种各样有趣(也可能有用的)的特性,如

  • 混合精度训练:所有实现的方法都可以无缝支持 FP16 混合精度训练,在保持性能几乎一致的情况下,可以节约40%以上的显存。
  • 难样本挖掘 (OHEM): 可以提升在难样本上在训练中所占权重,提升在难样本上的性能。
  • 分层设定学习率: 可以为 backbone 和 head 设置不同的学习率。
  • 类别平衡损失函数: 可以用于类别不平衡的数据集,平衡各类之间的损失。

灵活易于拓展的设计原则

灵活的设计可以大大降低开发人员实现新算法的门槛,MMSeg 使得模型的编码器和解码器可以自由组合,同时我们尽可能避免任何形式的 hardcode,所以大部分模型的内部结构都可以通过配置文件来调节。

以 PSPNet 的 decode head 为例,

技术分享图片

所有超参的接口都可以通过我们的配置文件灵活的进行调整,比如通道数,损失函数权重,池化尺度等。

总结

我们希望开源能够帮助学界走得更远,业界做得更扎实。接下来我们在长期维护 MMSeg 的同时,也会去支持更多的不同类型的方法和数据集,使 MMSeg 成为一个更加全面的先进的语义分割框架,也欢迎大家多多提需求和意见(直接上 PR 更好)。我们希望通过统一的开源标准,帮助大家把精力(和 GPU)更多的投入到方法本身的创新上。

陈恺:OpenMMLab 重磅升级:百花齐放春满园?zhuanlan.zhihu.com技术分享图片陈恺:MMDetection V2.0:更快更强的通用目标检测平台?zhuanlan.zhihu.com技术分享图片包小张:MMDetection3D:新一代通用3D目标检测平台?zhuanlan.zhihu.com技术分享图片RookieRui:MMEditing: 图像视频编辑工具箱?zhuanlan.zhihu.com技术分享图片

 

编辑于 08-11
深度学习(Deep Learning)
开源
图像分割
 

文章被以下专栏收录

技术分享图片
MMLab学术视野
分享MMLab在计算机视觉与机器学习的新思考、新发现

推荐阅读

技术分享图片

ECCV2020语义分割:语义分割的落地应用-故障检测与异常检测

技术分享图片

语义分割网络 U-Net 详解

技术分享图片

CVPR 2019语义分割论文5--CANet

强调语义分割数据增强的技巧

从研究语义分割到现在已经快有2年的时间,期间经历了不少坎坷,但最终也使我对语义分割有了全面,细致,深入的认识。在2015年-2018年,每年的CVPR都有大把的语义分割论文出现,但是论文中关…

11 条评论

  • 技术分享图片
    周军07-27
    会有mmocr吗
  • 请问训练时候的Hook能支持Earlystopping和保存best(或者)top-k model(s)吗?有时候自定义的数据集比较小,怕overfit.谢谢!
  • 可以用于自己的数据集吗需要修改些什么
  • 技术分享图片
    陈恺回复swjtulinxi07-28
    我们提供了详细的文档和教程
  • 技术分享图片
    LangPeng07-28

    太好了,妈妈再也不担心,我的segmentation学不好了。

  • 听起来非常棒,我都急着想去体验了,希望是个中意的框架

  • 技术分享图片
    高迪迦07-28

    瑞神太强了

    技术分享图片
  • 技术分享图片
    Karry08-06

    你好,有用DANet训练自己的数据集的教程吗

  • 请问checkpoint在哪儿里下载

     

  • 技术分享图片
    双子塔09-30
    我希望在loss(dice loss,focal loss,混合loss),评测(dice,fwiou),还有数据增强方面优化,为啥image和mask要分开load,一起load的话Mosaic好写很多。训练速度和精度肯定没话说,保存模型方面希望可以loss或评测保存最近模型