mmsegmentation 项目排坑

任务

之前打算在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__}, '

但是已经有结果了:
在这里插入图片描述
大功告成!

  • 14
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Debug的魔法小马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值