MMSegmentation 快速上手指南:从安装到第一张语义分割结果的 30 分钟
【免费下载链接】mmsegmentationOpenMMLab Semantic Segmentation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmsegmentation
把一张街景照片丢进去,输出逐像素的彩色掩码——路面、行人、自行车、汽车各占一种颜色。这就是 MMSegmentation(OpenMMLab 的语义分割工具箱)交付的东西:基于 PyTorch,把"装环境 → 出分割结果 → 训练自己的模型"这条链路压到最短。
项目速写:MMSegmentation 能为你做什么
一句话定位:它是语义分割的"统一基准 + 模块化框架",PSPNet、DeepLabV3+、SegFormer 等主流算法全部开箱即用,配一个配置文件就能跑。
上图为仓库自带的示例输入demo/demo.png,跑通后每个像素都会拿到类别标签。
核心亮点只有三个:
- 模块化:backbone、neck、head 拆成独立模块,自由拼装
- 即插即用:几十个算法、上百个预训练模型,写个模型名即可自动下载
- 训练高效:训练速度与主流代码库相当或更快
官方文档从 docs/zh_cn/get_started.md 开始读,推理细节见 docs/zh_cn/user_guides/3_inference.md。
最短路径:装好环境,敲一条命令出结果
先备两个前提:Python 3.8+,以及已装好的 PyTorch(按 PyTorch 官方说明装好 GPU 或 CPU 版即可)。然后跟着敲:
pip install -U openmim mim install mmengine mim install "mmcv>=2.0.0" git clone -b main https://gitcode.com/GitHub_Trending/mm/mmsegmentation cd mmsegmentation pip install -v -e .mim 会按本地 PyTorch 版本自动匹配 MMCV,省掉手动对版本的麻烦;-e表示源码可编辑安装,改了代码立即生效。只想当依赖库用的话,pip install "mmsegmentation>=1.0.0"一步到位。
装完直接跑第一条推理命令 ⚡:
python demo/image_demo_with_inferencer.py demo/demo.png deeplabv3plus_r18-d8_4xb2-80k_cityscapes-512x1024 --show模型名直接写,权重自动下载,跑完弹出带彩色分割掩码的街景图;加--out-dir result就把结果存盘。能弹出这张图,说明全流程通了。
单图与批量推理:拿到掩码数组
目标:分割一张图或整个目录,并且能拿到标签索引数组供后续处理。
from mmseg.apis import MMSegInferencer inferencer = MMSegInferencer(model='deeplabv3plus_r18-d8_4xb2-80k_cityscapes-512x1024') # 单张图 result = inferencer('demo/classroom__rgb_00283.jpg', show=True) # 批量:传目录或路径列表,渲染图存 outputs/vis,预测掩码存 outputs/pred inferencer('/path/to/imgs', out_dir='outputs', img_out_dir='vis', pred_out_dir='pred')返回值是 dict:predictions是标签索引掩码(二维数组),visualization是渲染后的彩色图。API 实现在 mmseg/apis/inference.py,show=True只是弹窗口,真正有用的是这两个字段。
视频与摄像头逐帧分割
目标:对视频文件或摄像头画面做逐帧语义分割,可写出结果视频。
mim download mmsegmentation --config pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 --dest . python demo/video_demo.py demo/demo.png \ pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py \ pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth --show第一条命令下载该模型的配置和权重;第二条命令逐帧推理并弹窗播放。第一个参数换成摄像头编号(如0)就是实时摄像头分割;加--output-file out.mp4直接把带掩码的视频写出来。
训练与评估自己的语义分割模型
目标:用自己的数据集(以 Cityscapes 为例)训练一个 PSPNet 并评出 mIoU。
# 1. 把原始数据集转成 MMSeg 的标注格式 python tools/dataset_converters/cityscapes.py data/cityscapes --nproc 8 # 2. 训练(checkpoint 存到 work-dir) python tools/train.py configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py --work-dir work_dirs/pspnet # 3. 评估 python tools/test.py configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py work_dirs/pspnet/best_mIoU_*.pth --eval mIoU转换脚本把图片与标注整理成配置能直接读取的结构(其他数据集在 tools/dataset_converters/ 各有一份);多卡训练改用bash tools/dist_train.sh <配置> 8;不想从零训就在训练命令里加--cfg-options model.pretrained=xxx.pth走微调。
算法与配置速查:按需取用
| 你的需求 | 算法 | 配置位置 |
|---|---|---|
| 快速验证基线 | FCN | configs/fcn/ |
| 综合性价比高 | PSPNet | configs/pspnet/ |
| 精度优先 | DeepLabV3+ | configs/deeplabv3plus/ |
| Transformer 精度党 | SegFormer / Mask2Former | configs/segformer/、configs/mask2former/ |
| 轻量实时 | BiSeNetV2 / CGNet | configs/bisenetv2/、configs/cgnet/ |
每个算法目录里都有 README.md(各配置的指标)和 metafile.yaml(模型名与权重的清单)。模型名可以直接填进MMSegInferencer(model='...')自动下载权重,完整榜单见 docs/zh_cn/model_zoo.md。
踩坑速查:按报错类型分组
安装类
mim install mmcv失败或 import 就崩 → PyTorch 与 MMCV 版本不匹配,用 mim 重装让它自动对齐- CUDA 版本对不上 → 按系统 CUDA 重装对应版本的 PyTorch,再重装 MMCV
运行类
- 推理太慢 → 换 r18 小 backbone,或改用配置名里带
amp的半精度版本 - 训练爆显存 → 调小 batch(如
4xb2改1xb1)、加--amp、换小 backbone - 服务器上弹不出结果图 → 别用
--show,改用--out-file(image_demo.py)或out_dir(Inferencer)存盘
数据类
- 报
data_root路径错 → 检查 configs/base/datasets/ 里对应数据集配置的data_root是否指向真实目录 - 类别数或调色板不对 → 确认配置里
num_classes与标注类别数一致 - Cityscapes 解压后直接报找不到标注 → 先跑
tools/dataset_converters/cityscapes.py转换
继续深入
- 交互式教程:demo/MMSegmentation_Tutorial.ipynb,从推理到训练逐段可跑
- 用户指南:docs/zh_cn/user_guides/,覆盖配置、数据集、推理、训练测试、部署
- 进阶指南:docs/zh_cn/advanced_guides/,讲清框架内部结构,方便你加自定义数据集和新算法
- 社区扩展:projects/ 里有医学影像、CAT-Seg 等方向,比如病理图的分割实验就放在 projects/medical 下
到这里,你已经能装环境、跑推理、训模型、看 mIoU——下一步无非是换一个更贴近业务的算法和配置,照上面的场景继续敲就行。
【免费下载链接】mmsegmentationOpenMMLab Semantic Segmentation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmsegmentation
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考