最近在矩池云的的Tesla K80机子上跑MMYOLO,跟着MMYOLO官方文档《自定义数据集 标注+训练+测试+部署 全流程 》操作到 “2.1.1 软件或者算法辅助”时,利用预训练模型+官方脚本去辅助标注时,一按下回车就报错:

运行的脚本

python demo/image_demo.py ./data/cat/images \
                          ./configs/yolov5/yolov5_s-v61_syncbn_fast_8xb16-300e_coco.py \
                          ./work_dirs/yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth \
                          --out-dir ./data/cat/labels \
                          --class-name cat \
                          --to-labelme

报错信息如下:

ImportError: /root/miniconda3/envs/open-mmlab/lib/python3.8/si
te-packages/mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined
 symbol:_ZN2at4_ops5zeros4callEN3c108ArrayRefINS2_6SymIntEEENS2
_8optionalINS2_10ScalarTypeEEENS6_INS2_6LayoutEEENS6_INS2_6Dev
iceEEENS6_IbEE

我的解决方法:

  • 使用pip list查看当前环境中的mmcv版本
  • 使用pip uninstall 将查看到的mmcv删掉
  • 再用pip install将文档中指定版本的mmcv下载回来

可能原因(只是猜测):

  1. 矩池云服务器有一些预装的包看似符合我们的要求,但实际上他们可能并不适用于MMYOLO,所以需要先删掉,再重新下载合适的包。
  2. 安装mmcv包的时候安装位置应该在对应环境中的mmyolo文件夹下。

起初我将这段信息百度之后,了解到可能是mmcv的版本不匹配,但是我这mmcv是跟着官方文档下载的,而且我反复pip list查看mmcv版本,发现没问题,百思不得其解之下,我还是尝试将mmcv换成mmcv-full,结果系统提示我还是得用mmcv2.0.0rc1。但是在我重新下回来之后,阴差阳错地就将问题解决了,报错也没有了。所以我猜测是原来安装mmcv包的时候安装位置有问题。

以上解决方法仅供参考,如有不足还请大佬指点

Logo

更多推荐