mmsegmentation 项目排坑
结果还是不行,又找不到cuda了。不行就再重来,用上个项目的torch和cuda。上次算是白忙活了,这次把新版的mmsegmentation跑通。再去看官网,发现那个mvcc对应的是torch2.1.X,还没有适配2.2.X。不会用Model zoo,在上面找了半天没找到这个文件。(上次就放弃了mim安装,用pip安装的)所以没法直接用,但他说的要看config里有没有,提醒了我。下载不到,还可以
任务
之前打算在segformer上做工作。但发现现在segformer已经被新版的mmsegmentation集成了。上次算是白忙活了,这次把新版的mmsegmentation跑通。
过程记录
创建conda环境
按照官网readme和此前经验进行:
conda create -n OPENMMLAB python=3.8 -y
conda activate OPENMMLAB
pip3 install empy rospkg pyyaml catkin_pkg
conda install pytorch torchvision -c pytorch
pip3 install -U openmim
mim install mmcv-full
中间提醒没有matplotlib,以及platformdirs版本不对,所以穿插进行了:
pip3 install matplotlib
pip install platformdirs==3.9.0
安装MMSegmentation
因为后面需要开发自己的模型,所以我选择源码安装:
git clone https://github.com/open-mmlab/mmsegmentation.git
cd mmsegmentation
pip3 install -v -e .
验证安装
下载配置文件和模型权重文件:
mim download mmsegmentation --config pspnet_r50-d8_512x1024_40k_cityscapes --dest .
报错一大堆:
不会用Model zoo,在上面找了半天没找到这个文件。搜了下,发现有个老哥跟我类似问题,但他就是执行我这条命令解决的:参考issue。所以没法直接用,但他说的要看config里有没有,提醒了我。我查了下自己的config:
find configs/pspnet/ -type f -name 'pspnet_r50-d8*cityscapes*'
发现:
configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024_dark-zurich-1920x1080.py
configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024_night-driving-1920x1080.py
configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-769x769.py
configs/pspnet/pspnet_r50-d8_4xb2-80k_cityscapes-512x1024.py
configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512x1024.py
configs/pspnet/pspnet_r50-d8-rsb_4xb2-adamw-80k_cityscapes-512x1024.py
configs/pspnet/pspnet_r50-d8_4xb2-80k_cityscapes-512x1024_dark-zurich-1920x1080.py
configs/pspnet/pspnet_r50-d8_4xb2-80k_cityscapes-512x1024_night-driving-1920x1080.py
configs/pspnet/pspnet_r50-d8_4xb2-80k_cityscapes-769x769.py
也就是我pspnet_r50-d8_512x1024_40k_cityscapes
下载不到,还可以下载别的这里有的。这时我看到了这个博客参考博客,发现下载的要和文件名匹配。
哦,那我把上述下载命令改为:
mim download mmsegmentation --config pspnet_r50-d8_4xb2-40k_cityscapes-512x1024 --dest .
果然成功了!
然后按照readme进行:
python demo/image_demo.py demo/demo.png pspnet_r50-d8_512x1024_40k_cityscapes.py pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth --device cpu --out-file result.jpg
报错:
ModuleNotFoundError: No module named 'mmengine'
执行:
pip3 install mmengine
再运行,发现糟糕了:
raceback (most recent call last):
File "demo/image_demo.py", line 6, in <module>
from mmseg.apis import inference_model, init_model, show_result_pyplot
File "/home/lcy-magic/Segment_TEST/mmsegmentation/mmseg/__init__.py", line 61, in <module>
assert (mmcv_min_version <= mmcv_version < mmcv_max_version), \
AssertionError: MMCV==1.7.2 is used but incompatible. Please install mmcv>=2.0.0rc4.
竟然版本不对!
看到当时他是这么提示我操作的:
于是我点开MMCV那个链接,看到这样的提示:
那就试试你吧:
mim install mmcv==2.0.0
结果报大错:
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for mmcv
Running setup.py clean for mmcv
Failed to build mmcv
ERROR: Could not build wheels for mmcv, which is required to install pyproject.toml-based projects
我猜可能是cuda问题,检查下:
发现没有cuda。那就装。
查看torch版本:
pip3 show torch
发现是2.2.1,然后看pytorch官网,发现是11.8的cuda,于是:
conda install cudatoolkit=11.8 -y
但还是安装不了mmcv2.0.0。于是我放弃min安装。(上次就放弃了mim安装,用pip安装的)
参考官方指示:官方文档:
pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html
成功安装。
此时运行测试:
python demo/image_demo.py demo/demo.png pspnet_r50-d8_512x1024_40k_cityscapes.py pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth --device cpu --out-file result.jpg
报错:
ModuleNotFoundError: No module named 'ftfy'
ModuleNotFoundError: No module named 'regex'
安装:
pip3 install ftfy
pip3 install regex
再运行还是报错:
ImportError: libc10_cuda.so: cannot open shared object file: No such file or directory
参考博客这篇博客说是cuda的问题。检查了下,还真是:
于是参照pytorch官网重新安装:
pip3 uninstall torch torchvision torchaudio
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
好长时间,终于装完了。再运行,还是报错了,呜呜:
ImportError: /home/lcy-magic/anaconda3/envs/OPENMMLAB/lib/python3.8/site-packages/mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN2at4_ops10zeros_like4callERKNS_6TensorEN3c108optionalINS5_10ScalarTypeEEENS6_INS5_6LayoutEEENS6_INS5_6DeviceEEENS6_IbEENS6_INS5_12MemoryFormatEEE
再去看官网,发现那个mvcc对应的是torch2.1.X,还没有适配2.2.X。所以我打算再重根据pytorch官网装一次torch:
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=11.8 -c pytorch -c nvidia
结果还是不行,又找不到cuda了。我崩溃了。决定全部推倒重来,还用python3.8,torch2.1.0,cuda11.8,mmcv2.1.0。不行就再重来,用上个项目的torch和cuda。
忘了,中间conda install时候我遇到了网络问题。估计是我的代理问题,我把他关掉就好了。
重来
创建conda环境
conda remove -n OPENMMLAB --all -y
conda create -n OPENMMLAB python=3.8 -y
conda activate OPENMMLAB
pip3 install empy rospkg pyyaml catkin_pkg
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia
pip install -U openmim
pip3 install matplotlib
pip install platformdirs==3.9.0
检查:
python -c 'import torch;print(torch.__version__);print(torch.version.cuda)'
结果:
2.1.0
11.8
没问题。然后装mmcv:
pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html
装其他:
pip install -v -e .
pip install ftfy regex
验证安装
执行:
python demo/image_demo.py demo/demo.png pspnet_r50-d8_512x1024_40k_cityscapes.py pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth --device cpu --out-file result.jpg
报错,但总归不是环境报错了:
Traceback (most recent call last):
File "demo/image_demo.py", line 51, in <module>
main()
File "demo/image_demo.py", line 32, in main
model = init_model(args.config, args.checkpoint, device=args.device)
File "/home/lcy-magic/Segment_TEST/mmsegmentation/mmseg/apis/inference.py", line 41, in init_model
config = Config.fromfile(config)
File "/home/lcy-magic/anaconda3/envs/OPENMMLAB/lib/python3.8/site-packages/mmengine/config/config.py", line 458, in fromfile
lazy_import is None and not Config._is_lazy_import(filename):
File "/home/lcy-magic/anaconda3/envs/OPENMMLAB/lib/python3.8/site-packages/mmengine/config/config.py", line 1657, in _is_lazy_import
with open(filename, encoding='utf-8') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'pspnet_r50-d8_512x1024_40k_cityscapes.py'
改成之前下载的脚本和参数文件名:
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 cpu --out-file result.jpg
警告:
/home/lcy-magic/Segment_TEST/mmsegmentation/mmseg/models/losses/cross_entropy_loss.py:250: UserWarning: Default ``avg_non_ignore`` is False, if you would like to ignore the certain label and average loss over non-ignore labels, which is the same with PyTorch official cross_entropy, set ``avg_non_ignore=True``.
warnings.warn(
Loads checkpoint by local backend from path: pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth
/home/lcy-magic/anaconda3/envs/OPENMMLAB/lib/python3.8/site-packages/mmengine/visualization/visualizer.py:196: UserWarning: Failed to add <class 'mmengine.visualization.vis_backend.LocalVisBackend'>, please provide the `save_dir` argument.
warnings.warn(f'Failed to add {vis_backend.__class__}, '
但是已经有结果了:
大功告成!
更多推荐
所有评论(0)