1. 查看你的mmseg版本及各种依赖的版本
(1)问题及原因
- 问题
之前训练过的模型,后来论文大修需要加实验,增加了数据集,但是模型用不了, - 原因
mmseg当时的版本是0.26.0,然后出问题,就下载了升级版的依赖包,结果有些参数就加载不了,而且过的时间比较长,自己也忘了当时下载的是什么版本的mmseg,导致依赖包总是对不上。
(2)检查版本
- mmseg版本
【mmseg】文件夹➨【version.py】文件
我的mmseg版本是0.26.0版本,现在我看mmseg最新是1.0.0。 - mmcv版本
【mmseg】文件夹 ➨【_init.py】文件
可以看到我的MMCV版本要求。
2. 安装
我在加载原来模型的时候,发现mmcv包版本不对,让安装更高版本的,结果安装后,还是不对,显示如下错误。
ImportError: cannot import name ‘revert_sync_batchnorm’ from ‘mmcv.cnn.utils’ (/home/wanghui/anaconda3/envs/mmseg/lib/python3.8/site-packages/mmcv/cnn/utils/init.py)
说明版本不对。因为我安装的mmcv和mmcv-full都比较乱,也不对应。具体看下他俩的区别。
(1)mmcv与mmcv-full的区别
MMCV 有两个版本:
-
mmcv-full: 完整版,包含所有的特性以及丰富的开箱即用的 CPU 和 CUDA 算子。注意,完整版本可能需要更长时间来编译。
-
mmcv: 精简版,不包含 CPU 和 CUDA 算子但包含其余所有特性和功能,类似 MMCV 1.0 之前的版本。如果你不需要使用算子的话,精简版可以作为一个考虑选项。
包名 | 包版本<2.0 | 包版本>=2.0 |
---|---|---|
mmcv-full | 包含 CUDA 算子 | 无 |
mmcv | 不包含 CUDA 算子 | 包含 CUDA 算子 |
mmcv-lite | 无 | 不包含 CUDA 算子 |
(2)卸载及安装
刚开始我是没卸载,都是直接安装对应版本,但是安装后还是不对,出现错误(这个错误有人用方法未引入“mmcv._ext”模块,但是我没用,我用的是下面的方法解决的,其实根本原因还是mmcv的版本问题):
ModuleNotFoundError: No module named ‘mmcv._ext’
以及错误:
AssertionError: MMCV==1.7.0 is used but incompatible. Please install mmcv>=1.3.8, <=1.7.0.
原因大概是我没有卸载干净,主要是每次只卸载mmcv或mmcv-full,后来参考 AssertionError (推荐)
- 卸载mmcv和mmcv-full
# 两个都卸载
pip uninstall mmcv
pip uninstall mmcv-full
- 查看torch和cuda版本
python -c 'import torch;print(torch.__version__)'
torch:1.12.0;cuda: 11.3
-
安装mmcv版本为1.7.0
pip install mmcv==1.7.0
说明: mmcv的版本安装了1.7.0.但是mmseg要求低于1.7.0,所以安装1.6.2.
# 安装mmcv
pip install mmcv==1.6.2 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.12/index.html
# 安装mmcv-full
pip install mmcv-full==1.6.2 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.12/index.html