1. 环境准备:打好MMsegmentation安装基础
第一次接触MMsegmentation的朋友可能会被各种依赖项搞晕,其实只要按部就班来,安装过程并不复杂。我去年在团队内部部署MMsegmentation时,发现90%的安装问题都出在环境准备阶段。下面我就把踩过的坑和验证过的方案分享给大家。
首先确认你的工作站已经具备以下基础环境:
- Anaconda或Miniconda:建议使用conda管理Python环境,避免系统Python版本冲突
- CUDA Toolkit:MMsegmentation需要GPU加速,CUDA版本要与PyTorch匹配
- PyTorch:建议通过官方命令安装,比如
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
注意:PyTorch版本直接影响后续MMCV的安装,建议先确定PyTorch版本再选择对应的MMCV
我最近在RTX 3090上实测的组合是:
- CUDA 11.7
- PyTorch 1.13.1
- Python 3.8
这个组合在MMsegmentation 2.0.0上运行最稳定。如果你的环境不同,可能需要调整后续安装的MMCV版本。
2. 核心依赖安装:MMEngine与MMCV的正确姿势
安装完基础环境后,就该处理MMsegmentation的两个核心依赖了。这里最容易出问题的就是版本兼容性,我见过不少开发者因为版本不匹配导致后续推理报错。
2.1 使用MIM工具高效安装
OpenMMLab提供的mim工具能自动解决大部分依赖问题:
pip install -U openmim mim install mmengine mim install "mmcv>=2.0.0"这三条命令看似简单,但有几点需要注意:
-U参数确保openmim是最新版- mmcv的版本号要用引号包裹,避免shell解析错误
- 如果网络不稳定,可以添加
-i https://pypi.tuna.tsinghua.edu.cn/simple使用国内镜像
2.2 手动安装MMCV的细节
当自动安装失败时,就需要手动安装MMCV了。我整理了一个可靠的手动安装流程:
首先确认你的环境组合:
- CUDA版本:
nvcc --version - PyTorch版本:
python -c "import torch; print(torch.__version__)" - Python版本:
python --version
- CUDA版本:
根据组合到MMCV官网选择对应的whl文件。比如对于CUDA 11.7+PyTorch 1.13的组合,应该选择
cu117/torch1.13目录下的文件。下载后使用pip安装:
pip install mmcv_full-2.0.0-cp38-cp38m-linux_x86_64.whl实测发现,手动安装时建议使用mmcv_full而不是基础版,能避免后续一些扩展功能缺失的问题
3. MMsegmentation本体安装:两种方法详解
核心依赖搞定后,就可以安装MMsegmentation本体了。这里推荐两种方法,我都实测过多次,各有优缺点。
3.1 源码安装(推荐给开发者)
这种方法最适合需要修改源码或跟踪最新特性的开发者:
git clone -b main https://github.com/open-mmlab/mmsegmentation.git cd mmsegmentation pip install -v -e .几个关键点:
-b main确保克隆的是稳定分支-v参数显示详细安装日志,方便排查问题-e参数表示可编辑安装,修改代码后立即生效
我遇到过的典型问题:
- 克隆失败:多试几次或改用SSH协议
- 安装卡住:可能是依赖解析问题,尝试先
pip install -r requirements.txt
3.2 Pip直接安装(适合快速部署)
如果只需要使用稳定功能,可以用更简单的方式:
pip install mmsegmentation但要注意:
- 这种方式安装的是PyPI上的稳定版,可能不是最新特性
- 某些自定义模型可能需要源码中的配置文件
4. 验证安装:从模型下载到推理全流程
安装完成后,最重要的就是验证整套环境是否正常工作。我设计了一个完整的验证流程,帮你排查各个环节。
4.1 下载预训练模型
使用mim工具下载Cityscapes数据集上的PSPNet模型:
mim download mmsegmentation --config pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 --dest .这个命令会在当前目录生成两个文件:
- 配置文件:
pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py - 模型权重:
pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth
常见错误:如果看到"Config not found"报错,可能是MMsegmentation版本与模型不匹配。这时可以尝试指定版本号:
mim download mmsegmentation==2.0.0 --config...
4.2 运行推理Demo
准备好测试图像demo.png后,运行以下命令:
python demo/image_demo.py 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 - 分割效果可视化结果
4.3 编程接口验证
对于需要在代码中集成MMsegmentation的开发者,可以用这个测试脚本:
from mmseg.apis import init_model, inference_model, show_result_pyplot config = 'pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py' checkpoint = 'pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth' model = init_model(config, checkpoint, device='cuda:0') result = inference_model(model, 'demo.png') show_result_pyplot(model, 'demo.png', result, out_file='result.jpg')这个脚本验证了三个关键功能:
- 模型初始化
- 推理接口
- 结果可视化
5. 常见问题排查手册
根据我在多个项目中的部署经验,整理出这份高频问题解决方案。
5.1 版本冲突问题
症状:ImportError或AttributeError,提示某些模块不存在
解决方案:
检查版本对应表:
组件 推荐版本 MMEngine >=0.7.0 MMCV >=2.0.0 PyTorch 1.11.0-2.0.0 使用
mim list查看已安装版本重建conda环境是最彻底的解决方案
5.2 CUDA相关错误
症状:CUDA out of memory或CUDA kernel failed
排查步骤:
- 确认PyTorch能识别GPU:
import torch print(torch.cuda.is_available()) - 测试CUDA计算:
torch.randn(2,2).cuda() - 如果报错,重新安装PyTorch的CUDA版本
5.3 模型推理异常
症状:输出结果全黑或分割错误
解决方法:
- 检查输入图像是否为RGB格式
- 确认配置文件中的
num_classes与模型匹配 - 测试其他预训练模型,排除模型损坏可能
我在部署过程中发现,使用Docker容器能避免90%的环境问题。如果你需要跨平台部署,可以考虑这个方案:
FROM nvidia/cuda:11.7.1-devel-ubuntu20.04 RUN pip install openmim && \ mim install mmengine mmcv mmsegmentation