MMyolo报错:undefined symbol: _ZN3c105ErrorC2ENS_14SourceLocationESs 的解决方案

前提:

使用mmyolo,部署完环境和依赖库之后运行程序,遇到报错:

ImportError: /home/ms/anaconda3/envs/torchMMyolo/lib/python3.8/site-packages/mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN3c105ErrorC2ENS_14SourceLocationESs

问题:

版本不对应的问题(可能是torch或者cuda的版本和MMYOLO及其依赖包版本不对应,或者是别的问题。)

我之前是直接从别的torch虚拟环境, conda clone复制过来,确定cuda可用之后,直接部署的MMyolo和MMEngine, MMCV, MMDetection,然后出现了以上错误。

尝试把MMEngine, MMCV, MMDetection卸载,重装之后还是不行,这几个包之间的对应是没问题的,应该就是和克隆的conda (torch)环境里边原来的包之间有不对应的。

所以尝试了一种新的解决方式(以下),成功了。

解决方式:

1. 重新conda create了新的torch虚拟环境(注意torch、torchvision和cuda版本)

conda create -n mmyolo1 python=3.8 pytorch==1.10.0 torchvision==0.11.0 cudatoolkit=10.2 -c pytorch -y
conda activate mmyolo1

 torch和cuda按之前的就行,在配其他环境的时候肯定对应过,我的是torch==1.10.0,cuda10.2(显卡是2080ti,驱动是470,环境外的cuda是11.1)

不确定对应版本的,可以查看pytorch官网(链接):Previous PyTorch Versions | PyTorch

 配置完之后,查看一下cuda是否可用:

import torch
print(torch.__version__)  # 1.10.0
print(torch.version.cuda)  # 10.2
print(torch.cuda.is_available())  # True

2. 接着按照MMyolo安装教程,安装各个安装包即可

pip install openmim
mim install "mmengine>=0.3.1"
mim install "mmcv>=2.0.0rc1,<2.1.0"
mim install "mmdet>=3.0.0rc3,<3.1.0"
git clone https://github.com/open-mmlab/mmyolo.git
cd mmyolo  # 如果是直接从MMyolo官网下载、解压并创建好的project,直接在工程文件里运行后面两条指令即可
# Install albumentations
pip install -r requirements/albu.txt
# Install MMYOLO
mim install -v -e .

3. 运行demo,查看是否部署成功。

# 下载模型

mim download mmyolo --config yolov5_s-v61_syncbn_fast_8xb16-300e_coco --dest .

# 运行demo

python demo/image_demo.py demo/demo.jpg \
                          yolov5_s-v61_syncbn_fast_8xb16-300e_coco.py \
                          yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth

# 可选参数
# --out-dir ./output *检测结果输出到指定目录下,默认为./output, 当--show参数存在时,不保存检测结果
# --device cuda:0    *使用的计算资源,包括cuda, cpu等,默认为cuda:0
# --show             *使用该参数表示在屏幕上显示检测结果,默认为False
# --score-thr 0.3    *置信度阈值,默认为0.3

你可能感兴趣的:(linux,python,深度学习,计算机视觉)