在运行MMsegmentation的训练脚本时,遇到了MMCV版本不兼容的断言错误,核心原因是:MMsegmentation必须依赖编译版的mmcv-full,而非纯Python版的mmcv,当前安装的MMCV==2.1.0大概率是普通版,或是版本与mmsegmentation/mmengine的适配性不匹配(即便版本号满足>=2.0.0rc4,非full版也会触发该错误)。
下面给出Windows环境(MINGW64/CMD/PowerShell通用)的完整解决步骤,从卸载冲突包到安装适配的依赖,一步到位解决问题。
步骤1:卸载现有冲突的mmcv/mmcv-full
首先卸载当前的mmcv(无论是不是full版),避免版本冲突,在终端执行:
pip uninstall -y mmcv mmcv-full-y表示直接确认卸载,无需手动输入y。
步骤2:安装适配的mmcv-full(核心步骤)
mmcv-full的安装必须匹配你的PyTorch版本和CUDA版本(CPU版直接装cpu版即可),这是OpenMMLab系列库的核心要求,新手如果没有配置GPU环境,直接装CPU版即可。
先确认你的PyTorch+CUDA版本(关键)
在Python终端执行以下代码,查看当前环境的PyTorch和CUDA版本:
importtorchprint(torch.__version__)# 输出PyTorch版本,如2.0.1print(torch.version.cuda)# 输出CUDA版本,CPU版会显示None,GPU版如11.7- 如果
torch.version.cuda显示None→ 你是CPU版PyTorch,直接装CPU版mmcv-full; - 如果显示具体版本(如11.7/12.1) → 你是GPU版PyTorch,装对应CUDA版本的mmcv-full。
安装mmcv-full(分CPU/GPU版)
OpenMMLab提供了官方的mmcv-full安装命令生成工具,也可以直接用以下通用命令,替换对应版本即可(推荐用清华源加速,避免下载超时)。
情况1:CPU版PyTorch(新手最常见,无GPU)
直接执行以下命令,安装适配PyTorch2.0+的CPU版mmcv-full(适配mmsegmentation主分支):
pipinstallmmcv-full -f https://download.openmmlab.com/mmcv/dist/cpu/torch2.0.0/index.html -i https://pypi.tuna.tsinghua.edu.cn/simple如果你的PyTorch是1.13.x,把命令中的torch2.0.0换成torch1.13.0即可。
情况2:GPU版PyTorch(有CUDA环境)
以PyTorch2.0.1 + CUDA11.7为例(最常用),执行:
pipinstallmmcv-full -f https://download.openmmlab.com/mmcv/dist/cu117/torch2.0.0/index.html -i https://pypi.tuna.tsinghua.edu.cn/simple- 若CUDA是11.8,把
cu117换成cu118; - 若PyTorch是1.12.1,把
torch2.0.0换成torch1.12.0; - 其他版本组合,参考MMCV官方安装文档。
步骤3:检查并升级mmengine(确保版本适配)
mmsegmentation主分支对mmengine有版本要求,需确保其为最新适配版,执行升级命令:
pipinstall-U mmengine -i https://pypi.tuna.tsinghua.edu.cn/simple-U表示升级到最新版。
步骤4:验证依赖安装是否正确
在Python终端执行以下代码,验证mmcv-full是否安装成功,且版本适配:
importmmcvprint(mmcv.__version__)# 输出mmcv-full版本,如2.0.1importmmengineprint(mmengine.__version__)# 输出mmengine版本,如0.10.0无报错即表示安装成功。
步骤5:重新运行训练命令
回到你的mmsegmentation目录,重新执行训练脚本:
python tools/train.py configs/segformer/segformer_mit-b0_512x512_160k_ade20k.py --work-dir work_dirs/segformer_exp此时不会再触发MMCV版本不兼容的AssertionError,若有新的警告(如TorchScript的DeprecationWarning),可忽略(不影响训练)。
额外注意:避免环境混淆
如果你的电脑有多个Python环境,需确保MINGW64中使用的python/pip是你安装了PyTorch/mmcv-full的环境:
- 可通过
which python(MINGW64)或where python(CMD)查看当前python路径; - 若pip和python不匹配,用
python -m pip代替pip执行所有命令(如python -m pip install mmcv-full),确保依赖装到当前python环境。
总结
- 本次报错的核心不是MMCV版本号不够,而是安装了普通版mmcv,而非mmsegmentation必需的mmcv-full;
- 安装mmcv-full的关键是匹配PyTorch和CUDA版本,CPU版直接装对应torch版本的cpu版即可;
- 用
python -m pip代替pip可避免多环境下的依赖安装路径错误,新手优先使用; - 清华源
-i https://pypi.tuna.tsinghua.edu.cn/simple能大幅提升下载速度,避免超时失败。
按上述步骤操作后,即可正常启动SegFormer的训练流程。