一次解决:安装老版本mmdetection问题汇总

12 篇文章 0 订阅

背景

最近需要跑一个长尾目标检测相关的实验,打算基于ACSL这个代码库进行编程。结果发现这套代码库是基于mmcv 0.2.14, mmdetection 1.0进行开发的,差不多是3年前的版本吧,安装过程中出现了各种各样的问题,这里进行一个统一的汇总。


注意事项

1. 安装合适的pytorch版本

先说结论:一定要把pytorch版本安装对!!我安装的是pytorch1.2.0 + cuda10.0,实测是没有问题的,其它的版本如pytorch1.9.0pytorch1.4.0均会出现各种各样的问题。下面进行详细的说明。

报错信息

ACSL github里readme给出的安装步骤是这样的(如下),按照这个会安装最新版本的pytorch,这是不行的!!

conda create -n mmdet python=3.7 -y
conda activate mmdet

pip install cython
pip install numpy
pip install torch
pip install torchvision
pip install pycocotools
pip install matplotlib
pip install terminaltables

# download the source code of mmcv 0.2.14 from https://github.com/open-mmlab/mmcv/tree/v0.2.14
cd mmcv-0.2.14
pip install -v -e .
cd ../

git clone https://github.com/CASIA-IVA-Lab/ACSL.git

cd ACSL/lvis-api/
python setup.py develop

cd ../
python setup.py develop

按照上面的步骤,执行到最后一步会报错:

subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1

或者:

mmdet/ops/nms/src/nms_cuda.cpp:4:23: error: ‘AT_CHECK’ was not declared in this scope

网上有各种解决方案,在我这里经过测试,只有把pytorch降级到1.5以下(也就是1.4及以下)才可以

降到pytorch1.4.0之后,应该可以正常安装了,但是实际运行代码的时候会报错:

mmdetectionImportError: libcudart.so.10.0: cannot open shared object file: No such file or directory

网上给出的说法是cuda toolkit使用的版本不对,安装cuda10.0并配置好之后,报错信息改为:

ImportError: /mmdet/ops/dcn/deform_conv_cuda.cpython-37m-x86_64-linux-gnu.so: undefined symbol:

解决方案

如果背景情况与我类似,且遇到上面的报错信息,这里给一个解决方案(参考这个github的issue):

  1. 安装cuda10.0 toolkit并配置好
  2. 安装pytorch1.2.0 - cuda10.0

具体来说,cuda10.0的安装可以参考这个blog:linux安装cuda
这个教程里面给的例子是centos下安装cuda9.2,需要根据自己的情况稍作调整,比如我这里是ubuntu下安装cuda10.0,在cuda版本和系统版本上注意不要选错! cudnn就不用安装了。

接下来安装pytorch和其它需要的package,用如下命令

conda create -n ACSL python=3.7 -y

conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch
pip install pycocotools -i https://pypi.douban.com/simple
pip install terminaltables
conda install numpy matplotlib cython scipy scikit-learn PyWavelets

2. 更改pillow版本

按照上面的环境安装完之后,实际运行可能会报错:

ImportError: cannot import name 'PILLOW_VERSION'

如果有这样的报错,这说明安装的pillow版本太高了,需要降级到7.0.0以下。运行命令:

pip install 'pillow<7.0.0'

可能会出些一些警告信息,不用管。之后就不会报错了。

3. 升级gcc版本

按照上面的环境安装完之后,实际运行可能会报错:

mmdetection died with <Signals.SIGSEGV: 11>

如果出现这条报错信息,说明当前的gcc版本过低,需要升级到gcc4.9及以上,参考mmdetection安装gcc4.9.3

我在安装过程中,出现了有一些gcc包无法下载的情况,如果出现这种情况,可以参考安装gcc手动下载。

完成上面的步骤之后,可以用gcc -v查看当前版本


总体安装过程

解决完上面的问题之后就可以安装老版本mmcv和老版本mmdetection,或者基于老版本mmdetection的库了。总体过程如下:

  1. 安装cuda10.0
  2. 安装pytorch及其它package
conda create -n ACSL python=3.7 -y

conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch
pip install pycocotools -i https://pypi.douban.com/simple
pip install terminaltables
conda install numpy matplotlib cython scipy scikit-learn PyWavelets
pip install 'pillow<7.0.0'
  1. 升级gcc到4.9及以上(已经满足要求的可以跳过这一步)
  2. 安装老版本mmcv:
    下载https://github.com/open-mmlab/mmcv/tree/v0.2.14的压缩包并解压
cd mmcv-0.2.14
pip install -v -e .
  1. 安装老版本mmdetection或者基于老版本mmdetection的库(这里以ACSL为例)
git clone https://github.com/CASIA-IVA-Lab/ACSL.git
cd ACSL/lvis-api/
python setup.py develop
cd ../
python setup.py develop
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值