十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MMSegmentation 语义分割完整指南:从安装部署到模型训练,一张图讲透 OpenMMLab 工具箱

MMSegmentation 语义分割完整指南:从安装部署到模型训练,一张图讲透 OpenMMLab 工具箱 MMSegmentation 语义分割完整指南从安装部署到模型训练一张图讲透 OpenMMLab 工具箱【免费下载链接】mmsegmentationOpenMMLab Semantic Segmentation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmsegmentationMMSegmentation 是 OpenMMLab 出品的 PyTorch 语义分割工具箱与基准测试平台把 PSPNet、DeepLabV3、SegFormer 等几十种主流分割算法收进同一个代码框架。如果你是第一次接触语义分割想快速完成装环境—跑推理—训模型—做评估的完整闭环这篇文章会把每一步命令和易踩的坑都替你铺好路。它到底解决了什么问题写分割代码最痛苦的不是某一行而是每换一个算法就要重新搭一遍数据加载、增强、训练循环和评估逻辑。MMSegmentation 的做法是把这套东西全部标准化公平对比的基准平台所有算法跑在同一套数据流和评估代码上你换算法只需换配置文件论文里那种同条件下比精度的实验可以照抄。模块化拼装backbone骨干网络、neck、decode_head分割头都是独立组件像积木一样自由组合。想试试 ResNet 换 EfficientNet改几行配置的事。算法覆盖广configs/目录下从经典卷积网络到最新 Transformer 方案一应俱全每个算法自带 metafile.yaml 记录官方指标。训练效率官方实现针对常见算子做了优化训练速度与同类代码库持平或更快。对使用者而言这意味着你可以把精力放在选什么模型、怎么调上而不是重写框架。上面这种日常照片正是语义分割要处理的目标之一——模型需要给每个像素打上狗/沙滩/海水的标签。MMSegmentation 的输出长这样每张像素对应一个类别 id再映射回调色板就是可读的彩色分割图。从零到第一张分割图环境搭建与验证这条主线只做一件事——让仓库自带的 PSPNet 权重在 Cityscapes 街景上跑出分割结果。全程大约 30 分钟其中大部分时间在等下载。系统要求项目要求操作系统Linux / Windows / macOSPython3.7 及以上示例环境用 3.8CUDA10.2 及以上使用 GPU 时PyTorch1.8 及以上第一步创建环境并安装依赖conda create --name openmmlab python3.8 -y conda activate openmmlab # GPU 平台 conda install pytorch torchvision -c pytorch # CPU 平台把上行换成conda install pytorch torchvision cpuonly -c pytorch # 用 MIM 装 MMCV 和 MMEngine依赖冲突交给它自动处理 pip install -U openmim mim install mmengine mim install mmcv2.0.0第二步安装 MMSegmentation# 源码安装推荐方便改代码 git clone -b main https://gitcode.com/GitHub_Trending/mm/mmsegmentation cd mmsegmentation pip install -v -e . # 如果只是当依赖库用直接 PIP 安装也可以 pip install mmsegmentation1.0.0第三步下载配置与权重并跑通验证mim download mmsegmentation --config pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 --dest . python demo/image_demo.py demo/demo.png \ pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py \ pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth \ --device cuda:0 --out-file result.jpg成功后当前目录会生成result.jpg。输入图就是仓库自带的 Cityscapes 街景没有 GPU 也没关系把--device改成cpu即可只是慢一些。完整安装细节可查 docs/zh_cn/get_started.md。换模型与批量推理把 API 用起来命令行跑通之后日常开发更常用 Python API。三个核心函数来自 mmseg/apis/inference.pyinit_model(config, checkpoint, device)按配置和权重构建模型inference_model(model, img)对单张图像推理返回带分割预测的结果show_result_pyplot(model, img, result)可视化并可选保存。from mmseg.apis import inference_model, init_model, show_result_pyplot config_file pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py checkpoint_file pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth model init_model(config_file, checkpoint_file, devicecuda:0) # CPU 环境改 devicecpu img demo/demo.png result inference_model(model, img) show_result_pyplot(model, img, result, showTrue, out_fileresult.jpg, opacity0.5)注意一个小技巧init_model只执行一次之后对任意图片循环调用inference_model就行不必每张图都重建模型。换别的预训练模型想试别的算法流程完全一致——下载对应配置和权重替换上面两个文件名即可mim download mmsegmentation --config deeplabv3plus_r50-d8_4xb4-80k_ade20k-512x512 --dest .视频逐帧分割视频本质是一连串图像仓库提供了现成脚本 demo/video_demo.py它支持实时窗口预览和导出结果视频两种输出# 导出分割结果视频 python demo/video_demo.py video.mp4 \ pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py \ pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth \ --device cuda:0 --output-file out.mp4也可以手写逐帧逻辑核心就是mmcv.VideoReader加一个 for 循环import mmcv from mmseg.apis import inference_model, show_result_pyplot video mmcv.VideoReader(video.mp4) for frame in video: result inference_model(model, frame) show_result_pyplot(model, frame, result, wait_time1)进阶用自己的数据训练并评估模型跑到这一步你已经有了用别人的模型的能力。接下来是训自己的模型流程分三段备数据、训练、评估。第一段准备数据集以 Cityscapes 为例从官网下载数据集并解压组织成如下结构data/cityscapes/ ├── leftImg8bit/ │ ├── train/ │ ├── val/ │ └── test/ └── gtFine/ ├── train/ ├── val/ └── test/跑转换脚本生成 MMSegmentation 需要的标注格式python tools/dataset_converters/cityscapes.py data/cityscapes --nproc 8不同数据集有各自的转换脚本目录在 tools/dataset_converters/PASCAL VOC 用voc_aug.py、ADE20K 用coco_stuff164k.py之类打开文件头注释看用法即可。更多数据集的准备工作流见 docs/zh_cn/user_guides/2_dataset_prepare.md。第二段启动训练# 单卡 python tools/train.py configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py # 8 卡分布式 bash tools/dist_train.sh configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py 8训练产物默认落在work_dirs/下其中latest.pth始终指向最新 checkpoint。配置文件怎么改换 backbone、改输入尺寸、调学习率可以看 configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py——它只用几行_base_引用就拼出了完整模型这正是模块化设计的具体形态。第三段评估指标# 单卡评估 mIoU python tools/test.py configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py \ work_dirs/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024/latest.pth --eval mIoU # 8 卡分布式评估 bash tools/dist_test.sh configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py \ work_dirs/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024/latest.pth 8 --eval mIoUmIoU各类别 IoU 的均值是语义分割最通用的指标数值越高说明逐像素预测越贴近人工标注。按场景选型常见算法怎么选configs/下有几十个算法目录新手容易看花眼。与其背名字不如按你的落地场景挑你的场景优先考虑配置文件位置通用起步速度精度均衡PSPNet / FCNconfigs/pspnet/、configs/fcn/要更高精度显存充足DeepLabV3 / DeepLabV3大空洞率configs/deeplabv3/、configs/deeplabv3plus/边缘设备 / 移动端部署BiSeNetV2、STDC、MobileNet 系configs/bisenetv2/、configs/stdc/、configs/mobilenet_v3/追 SOTA接受较慢推理Mask2Former、SegFormer、SETRconfigs/mask2former/、configs/segformer/、configs/setr/多尺度细节重要建筑、遥感PSPNet、HRNet 系configs/hrnet/医学影像等垂直领域参考 projects 下的现成实现projects/medical/上面这张病理切片对比图来自 projects/medical/ 的 CONIC2022 示例左边原图、右边掩膜说明这套工具在自动驾驶之外的领域同样适用。每个算法目录里的 metafile.yaml 都记录了官方训练设置与 mIoU 成绩选型前值得先翻一眼。所有模型的完整榜单在 docs/zh_cn/model_zoo.md。排障手册常见报错与解法遇到问题时按现象 → 原因 → 处理对照能省掉大量搜索时间现象常见原因处理办法MMCV 安装失败PyTorch 与 MMCV 版本不兼容优先用mim install装 MMCV让它按 PyTorch 版本自动匹配或按 docs/zh_cn/get_started.md 指定与 cu/torch 匹配的安装源CUDA 相关报错、起不来 GPU系统 CUDA 与 PyTorch 内置 CUDA 版本错位装 PyTorch 前先查好本机驱动支持的 CUDA 版本按 PyTorch 官方安装指南 选对应 wheel推理速度太慢模型偏大或输入分辨率过高换更小的 backboneR50→R18/MobileNet、缩小输入分辨率或启用 FP16仓库中带amp字样的配置就是混合精度版训练时显存不足OOMbatch size 过大或输入图太大减小samples_per_gpu、换小 backbone或缩小 crop_size报找不到数据/路径错误配置里data_root没指向真实目录打开所用配置确认data_root与解压后的实际路径一致类别数不匹配、loss 异常配置num_classes与数据集类别数不一致核对数据集类别数含背景修改配置文件中的类别设定完整的问答汇总在 docs/zh_cn/notes/faq.md社区也欢迎你把新遇到的坑补进去。下一步学什么跑通第一条主线之后建议按这条路径加深动手玩打开 demo/MMSegmentation_Tutorial.ipynb在 Jupyter 里把推理、可视化、训练全流程再过一遍读懂框架docs/zh_cn/user_guides/ 从配置文件语法讲到部署docs/zh_cn/advanced_guides/ 深入数据流、引擎与评估机制扩展场景projects/ 下整理了医学影像、遥感、Jetson 部署等社区实践遇到垂直需求先来这里找现成方案查指标docs/zh_cn/model_zoo.md 的模型库汇总了全部算法在标准数据集上的成绩做实验前先看 baseline。MMSegmentation 的价值在于把分割框架这件事做成了标准化基础设施——你只需关注配置与数据剩下的交给工具箱。【免费下载链接】mmsegmentationOpenMMLab Semantic Segmentation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmsegmentation创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表