MMSegmentation 安装与运行指南:从环境准备到推理 Demo 的完整实践

📅 发布时间:2026/9/16 12:21:26
MMSegmentation 安装与运行指南:从环境准备到推理 Demo 的完整实践
MMSegmentation 安装与运行指南从环境准备到推理 Demo 的完整实践【免费下载链接】mmsegmentationOpenMMLab Semantic Segmentation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmsegmentation本指南以 OpenMMLab 语义分割工具箱 MMSegmentation 的官方中文入门文档为骨架系统讲解从环境准备、安装 MMCV 与 MMSegmentation、到运行图像/视频推理 Demo 验证安装的完整流程同时结合本仓库源码mmseg/apis/inference.py、demo/image_demo.py、docker/Dockerfile等深入剖析各步骤背后的实现原理。读完本文你将能够独立完成 MMSegmentation 在 GPU、CPU、Google Colab 与 Docker 四种环境下的安装并通过命令行或 Python API 跑通第一个语义分割推理示例。预备知识环境与版本要求MMSegmentation 可以运行在Linux、Windows 和 macOS三大操作系统上其软件依赖基线如下依赖项版本要求Python3.7CUDA10.2GPU 平台PyTorch1.8本仓库当前版本为 1.2.2见 mmseg/version.py属于 MMSegmentation 1.x 系列。1.x 系列在架构上全面切换到了新的训练/推理引擎MMEngine因此安装时对 MMCV 与 MMEngine 的版本有明确约束主分支要求mmcv2.0.0、MMEngine0.7.4详见 docs/zh_cn/notes/faq.md 中的版本兼容表。安装前请务必确认这些版本关系避免因版本不匹配导致的No module named mmcv等常见问题。安装 PyTorch步骤 02本教程使用 conda 管理 Python 环境。如果你已经安装好 PyTorch可直接跳到「安装」一节否则按以下三步操作步骤 0.从 Miniconda 官方网站下载并安装 Miniconda。步骤 1.创建并激活一个 conda 环境这里以 Python 3.8 为例conda create --name openmmlab python3.8 -y conda activate openmmlab步骤 2.参考 PyTorch 官方安装指引安装 PyTorch。在 GPU 平台上conda install pytorch torchvision -c pytorch在 CPU 平台上conda install pytorch torchvision cpuonly -c pytorch安装 MMSegmentation官方推荐按最佳实践流程安装先用 MIMOpenMMLab 的模型/包管理工具安装 MMCV再安装 MMSegmentation 本体。整个过程高度可自定义各环节的替代方案见后文「自定义安装」小节。最佳实践步骤 0.使用 MIM 安装 MMCV 与 MMEnginepip install -U openmim mim install mmengine mim install mmcv2.0.0这里推荐 MIM 的原因在于MMCV 包含 C 与 CUDA 扩展与 PyTorch 的依赖关系比较复杂MIM 能够根据当前 PyTorch 与 CUDA 版本自动解析并安装匹配的 MMCV 预编译包省去手动指定下载源的麻烦详见「不使用 MIM 安装 MMCV」一节。步骤 1.安装 MMSegmentation按使用方式二选一情况 a作为开发对象源码安装适用于希望立刻开发、调试 mmsegmentation 源码的场景git clone -b main https://github.com/open-mmlab/mmsegmentation.git cd mmsegmentation pip install -v -e . # -v 表示详细模式输出更多安装信息 # -e 表示以可编辑editable模式安装工程 # 对代码的任何修改都会立即生效无需重新安装pip install -e .会读取仓库根目录的 setup.py 与 requirements.txt后者依次引入requirements/下的 optional、runtime、tests、multimodal 四组依赖其中 requirements/runtime.txt 包含 matplotlib、numpy、scipy 等基础运行库。情况 b作为依赖库pip 安装适用于把 mmsegmentation 当作第三方库引入其他项目的场景pip install mmsegmentation1.0.0验证安装是否成功运行推理 Demo安装完成后官方提供了一套验证流程下载一个预训练模型在示例图片上运行分割推理看到带分割 mask 的输出图即说明安装无误。步骤 1.下载配置与权重文件mim download mmsegmentation --config pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 --dest .该命令会从 OpenMMLab 模型库拉取两个文件到当前工作目录配置文件pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py预训练权重pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth下载耗时取决于网络环境通常需要几分钟。仓库中已内置同名的配置模板 configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py它通过_base_机制组合了 PSPNet 模型骨架、Cityscapes 数据集、默认运行时与 40k 迭代训练计划其中crop_size (512, 1024)与data_preprocessor共同定义了该模型的输入尺寸。步骤 2a.源码安装者直接用命令行脚本验证python demo/image_demo.py demo/demo.png configs/pspnet/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图中目标对象已覆盖上语义分割 mask。该脚本的完整参数见 demo/image_demo.py除了必填的img、config、checkpoint三个位置参数外还支持--out-file指定可视化结果输出路径不指定时默认弹窗显示--device推理设备默认cuda:0CPU 环境可传cpu--opacity分割 mask 的透明度取值范围 (0, 1]默认 0.5--with-labels是否在结果上显示类别标签--title图像标识符默认result。步骤 2b.pip 安装者打开 Python 解释器执行以下代码from mmseg.apis import inference_model, init_model, show_result_pyplot import mmcv 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) # 在单张图像上测试并可视化 img demo/demo.png # 或 img mmcv.imread(img)这样图片仅需解码一次 result inference_model(model, img) # 在新的窗口可视化结果 show_result_pyplot(model, img, result, showTrue) # 或者将可视化结果保存到图像文件 # opacity 控制分割 map 的透明度取值范围 (0, 1] show_result_pyplot(model, img, result, showTrue, out_fileresult.jpg, opacity0.5) # 在一段视频上逐帧测试并可视化分割结果 video mmcv.VideoReader(video.mp4) for frame in video: result inference_model(model, frame) show_result_pyplot(model, frame, result, wait_time1)上面的代码可以灵活修改以测试单张图像或视频两种选项都能验证安装是否成功。从源码看这三个 API 定义在 mmseg/apis/inference.pyinit_modelmmseg/apis/inference.py#L22-L94读取配置文件构建模型对象加载 checkpoint 权重并自动完成推理前的收尾工作——清空init_cfg/pretrained防止重复加载预训练权重、置空train_cfg以切换到 eval 模式、通过MODELS.build注册表机制实例化分割模型最后将模型to(device)并调用model.eval()inference_modelmmseg/apis/inference.py#L97-L118在torch.no_grad()上下文内调用model.test_step(data)完成前向推理支持单张图片或图片列表两种输入返回SegDataSample结构show_result_pyplotmmseg/apis/inference.py#L121-L189基于SegLocalVisualizer将预测结果以调色板方式叠加到原图支持opacity、out_file、with_labels、draw_gt/draw_pred等可视化开关。此外1.x 还提供了更现代的MMSegInferencer推理封装见 mmseg/apis/mmseg_inferencer.py 与对应的 demo/image_demo_with_inferencer.py通过model名称即可从 metafile 自动定位配置适合批量推理与脚本化调用。自定义安装当默认流程不满足你的环境时可按以下分支定制安装过程。CUDA 版本选择安装 PyTorch 时需要显式指定 CUDA 版本。如果不确定选哪个官方建议基于 Ampere 架构的 NVIDIA GPU如 GeForce 30 系列、NVIDIA A100必须使用 CUDA 11较老的 NVIDIA GPU 上CUDA 11 向后兼容但CUDA 10.2 兼容性更好且更轻量。同时请确保 GPU 驱动满足 CUDA 的最低版本要求可查阅 NVIDIA 官方驱动版本兼容表。需要特别说明的是如果按最佳实践用 MIM 安装预编译的 MMCV只需安装 CUDA 运行库runtime即可因为本地无需编译 CUDA 代码但如果你要从源码编译 MMCV 或开发自定义 CUDA 算子则必须从 NVIDIA 官网安装完整的 CUDA 工具包且其版本需与 PyTorch 的 CUDA 版本即conda install中指定的 cudatoolkit 版本保持一致。不使用 MIM 安装 MMCVMMCV 包含 C 与 CUDA 扩展MIM 自动处理了其与 PyTorch 的复杂依赖关系但 MIM 并非必需品。使用 pip 安装时需参考 MMCV 安装指南手动指定基于 PyTorch 与 CUDA 版本的 find-url。例如为 PyTorch 1.10.x CUDA 11.3 安装 mmcv2.0.0pip install mmcv2.0.0 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10/index.html在仅有 CPU 的平台安装MMSegmentation 完全支持 CPU-only 环境。在 CPU 模式下你可以训练要求 MMCV 2.0.0、测试和推理模型只是速度远低于 GPU。使用命令行 Demo 时把--device设为cpu即可从源码看demo/image_demo.py 在 CPU 设备下还会调用revert_sync_batchnorm将同步 BatchNorm 还原为普通 BatchNorm以保证单卡/CPU 推理正确性。在 Google Colab 上安装Google Colab 通常已预装 PyTorch因此只需安装 MMCV 与 MMSegmentation步骤 1.使用 MIM 安装 MMCV!pip3 install openmim !mim install mmengine !mim install mmcv2.0.0步骤 2.通过源码安装 MMSegmentation!git clone https://github.com/open-mmlab/mmsegmentation.git %cd mmsegmentation !git checkout main !pip install -e .步骤 3.验证安装import mmseg print(mmseg.__version__) # 示例输出: 1.0.0注意在 Jupyter 环境中感叹号!用于调用外部 shell 命令而%cd是 IPython 的 magic command用于改变当前 Python 的工作目录。当前仓库对应的输出版本为 1.2.2见 mmseg/version.py。通过 Docker 使用 MMSegmentation仓库提供了开箱即用的 Dockerfile 用于构建镜像要求 Docker 版本 19.03以支持 GPU 透传。构建镜像默认基于 PyTorch 1.11 CUDA 11.3如需其他版本可修改 Dockerfile 顶部的ARG PYTORCH、ARG CUDA、ARG MMCV等构建参数docker build -t mmsegmentation docker/运行容器--gpus all启用全部 GPU--shm-size8g扩充共享内存避免 DataLoader 报错-v将宿主机数据目录挂载进容器docker run --gpus all --shm-size8g -it -v {DATA_DIR}:/mmsegmentation/data mmsegmentation从 docker/Dockerfile 的构建过程可以看到官方镜像的完整依赖装配逻辑基于pytorch/pytorch官方镜像先安装ninja-build、libgl1-mesa-dev等编译与图像处理系统库再依次执行mim install mmengine、mim install mmcv2.0.1最后git clone源码并以-e可编辑模式安装 MMSegmentation 本体。可选依赖GDALGDAL 是栅格与矢量地理空间数据格式的转换库。安装 GDAL 后MMSegmentation 可以读取复杂格式和极大的遥感图像仓库中projects/gid_dataset等遥感相关项目即依赖此类数据读取能力conda install GDAL问题解答如果安装过程中遇到其他问题请第一时间查阅 FAQ 文档。该文档集中回答了安装与使用中的高频问题例如版本兼容性FAQ 开篇即给出 MMSegmentation / MMCV / MMEngine / mmpretrain / mmdet 的完整版本对照表当前 1.2.2 版本要求mmcv2.0.0、MMEngine0.7.4、mmpretrain1.0.0rc7、mmdet3.0.0mmcv 相关报错出现No module named mmcv时先用pip uninstall mmcv1.x 时代旧包为mmcv-full卸载不匹配版本再按本文安装说明重装配置文件命名解读如segformer_mit-b0_8xb1-160k_cityscapes-1024x1024.py中8xb1表示训练需 8 张卡、每卡 batch size 为 1二值分割配置通过num_classes与out_channels控制输出通道可采用 CrossEntropyLoss softmaxout_channels2或 BCE Loss sigmoid 阈值out_channels1两种方案。若 FAQ 中找不到答案可在 GitHub 上按官方 issue 模板提交问题并尽可能填写完整的环境信息Python/PyTorch/CUDA 版本、报错日志等这有助于快速定位问题。【免费下载链接】mmsegmentationOpenMMLab Semantic Segmentation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmsegmentation创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考