本文转载自知乎,已获作者授权转载。

链接: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

在看,让更多人看到  

MMSegmentation:标准统一的语义分割框架相关推荐

  1. 【Python】mmSegmentation语义分割框架教程(自定义数据集、训练设定、数据增强)

    文章目录 0.mmSegmentation介绍 1.mmSegmentation基本框架 1.1.mmSegmentation的model设置 1.2.mmSegmentation的dataset设置 ...

  2. Github语义分割框架(包含Unet,Unet++,MAnet等)

    参考链接1:GitHub链接:GitHub - qubvel/segmentation_models.pytorch: Segmentation models with pretrained back ...

  3. LidarMultiNet:在单个多任务网络中统一LiDAR语义分割、三维目标检测和全景分割

    Abstract 这份技术报告介绍了2022年Waymo开放数据集3D语义分割挑战赛的第一名获奖解决方案.我们的网络称为LidarMultiNet,将主要的LiDAR感知任务(例如3D语义分割.目标检 ...

  4. 三个优秀的语义分割框架 PyTorch实现

    [导语] 本文基于动手深度学习项目讲解了FCN进行自然图像语义分割的流程,并对U-Net和Deeplab网络进行了实验,在Github和谷歌网盘上开源了代码和预训练模型,训练和预测的脚本已经做好封装, ...

  5. 三个优秀的PyTorch实现语义分割框架

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 使用的VOC数据集链接开放在文章中,预训练模型已上传Github,环境我使用Colab pro ...

  6. 基于java的语义分割,NeruIPS2019 | 深圳大学提出点云语义分割框架ELGS,效果拔群(代码已开源)...

    标题:Exploiting Local and Global Structure for Point Cloud Semantic Segmentation with Contextual Point ...

  7. 超详细!手把手带你轻松用 MMSegmentation 跑语义分割数据集

    在带你轻松掌握 MMSegmentation 整体构建流程一文中,我们带大家认识了 MMSegmentation 的整体框架,分享了 MMSegmentation 中已经复现的主流语义分割模型. Op ...

  8. 二十四章:SEgmentation TRansformer (SETR)——以Transformer的序列到序列的视角重新思考语义分割问题

    0.摘要 最近的语义分割方法采用了全卷积网络(FCN)和编码器解码器架构.编码器逐渐降低空间分辨率,并学习具有更大感受野的抽象/语义视觉概念.由于上下文建模对于分割是至关重要的,最新的研究工作将重点放 ...

  9. ECCV2020 | 北京大学提出RGB-D语义分割新网络,多模态信息融合

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 这篇文章收录于ECCV2020,由北京大学.商汤科技.香港中文大学提出的基于RGB-D图像的语义分割算 ...

最新文章

  1. 高级运维工程师的打怪升级之路
  2. 学习编写用例是开发者走向项目经理的必经之路(《编写有效用例》书评) ——“Jolt大奖精选丛书”有奖征文...
  3. UIScrollView属性和用法
  4. (三)Boost库之字符串处理
  5. MFC六大核心机制之四:永久保存(串行化)
  6. HDU 5919 分块做法
  7. linux php mysqldump,Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)
  8. PHP 发送GET 和 POST数据的方法分析
  9. pyspider all 只启动了_Python 爬虫:Pyspider 安装与测试
  10. Django中Settings中Templates的路径设置
  11. 三种方式解决vue中v-html元素中标签样式
  12. ERROR: Unsupported method: AndroidProject.getVariantNames().
  13. python毕业设计作品基于django框架 校园失物招领系统毕设成品(6)开题答辩PPT
  14. 小程序图片上传及预览和删除
  15. WiFi管理帧(四)(TWT)
  16. 坚果pro2官方rom_锤子坚果Pro2刷机包_原版升级包 锤子坚果Pro2线刷包_官方固件rom包下载...
  17. 基于STM32超声波测距
  18. 福利最新2022年H3CNE认证网络工程师GB0-191 题库加超详细解析
  19. 计算机网卡的总线接口分类有,网卡的详细分类是怎样的?以太网卡有将高层数据转换为比特流的功能吗?...
  20. photoshop多选文字_60多个Photoshop文字效果教程

热门文章

  1. 蔡高厅老师 - 高等数学阅读笔记 - 16 定积分的应用(旋转积、平面曲线的弧长、阿基米德螺旋、旋转体的侧面积、定积分物理应用-变力做功) -(71、72、73)
  2. JAVA 的面向对象设计的特点-书后感-01-21天学通JAVA-深入分析
  3. mysql完成未完成_MYSQL SQL模式 (未完成)
  4. python死机_请问下为什么我用PYTHON写编译器一旦用READ就死机
  5. java返回类型自动_java-Apache Flink:由于类型擦除,无法自动确定函数的返回类型...
  6. linux修改ip配置文件_协助调试Linux服务器经验分享
  7. 【linux】Centos 8 安装 悟空CRM-11.0
  8. 2 引入失败_Curse选择WE,RNG天价引援失败,上单几乎只剩一个选项
  9. java加载js_Java加载js
  10. xstream不映射字段_用xstream 将xml映射为类对象遇到的问题