本文转载自知乎,已获作者授权转载。
链接:https://zhuanlan.zhihu.com/p/164489668
写在前面
语义分割作为计算机视觉中一项基础任务,同时在自动驾驶/视频编辑等领域中有重要的应用,因此一直受到学术界和工业界的广泛关注。在近几年的会议中,语义分割的论文层出不穷,但是市面上一直缺乏一款能够相对公平比较各种方法的框架。为了方便研究员和工程师们,我们开源了一套基于 PyTorch 实现的标准统一的语义分割框架:MMSegmentation
在 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)更多的投入到方法本身的创新上。
MMSegmentation:
https://github.com/open-mmlab/mmsegmentation
END
备注:分割
图像分割交流群
语义分割、实例分割、全景分割、抠图等技术,若已为CV君其他账号好友请直接私信。
微信号 : aicvml
QQ群:805388940
微博/知乎:@我爱计算机视觉
投稿:amos@52cv.net
网站:www.52cv.net
在看,让更多人看到