mmdet代码复现:安装指定版本的mmcv和mmdet以及版本匹配问题。

解决mmcv,mmdet环境安装过程中出现的问题。

前言:

如果是复现别人论文里的代码,那么要注意mmdet和mmcv版本匹配的问题。
从论文中把代码下载下来之后首先要看一下项目文件中的mmdet/__init__.py和mmdet/version.py这两个文件:
图一
这里version.py 中的__version__指明了当前项目使用的mmdet版本,这里作者用mmdet是2.3.0版本。(ps:如果项目中没有version.py文件,虽然不能直接得知所使用的mmdet版本,但是影响不大。)
在这里插入图片描述这里的mmcv_*_version参数指明了所需要的mmcv版本,这里mmcv=1.0.5,mmcv和mmdet版本要对应好,不然容易出一些问题。(如果没有version.py文件指明mmdet版本,这里把mmcv的版本安装对也可以。)
下面是官方的版本匹配图:
在这里插入图片描述

安装指定版本的mmcv和mmdet

知道需要的版本之后开始正式安装过程。
下面简单演示一下安装:
mmcv-full=1.0.5
mmdet=2.3.0

步骤1:安装依赖项和设置环境

在开始配置之前,确保你的系统已经安装了Anaconda或Miniconda。
创建并激活虚拟环境:

conda create --name mmdetection python=3.8 -y
conda activate mmdetection

将创建一个Python版本为3.8的虚拟环境,并自动安装所有默认依赖项.

步骤2:安装pytorch

先看一眼mmcv官网的安装要求:https://mmcv.readthedocs.io/zh_CN/latest/get_started/installation.html
在这里插入图片描述看下面图片描述:
在这里插入图片描述然后进入pytorch官网:https://pytorch.org/
在这里插入图片描述找到需要的pytorch 1.6
在这里插入图片描述复制命令到刚刚创建的虚拟环境中安装pytorch:

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch

步骤3:安装mmcv-full

安装好pytorch了,进入mmcv官网刚刚打开的页面
在这里插入图片描述
可以先看一下pytorch安装状态:

python -c 'import torch;print(torch.__version__);print(torch.version.cuda)'

输出已安装的版本号。

开始安装mmcv 1.0.5:

pip install mmcv-full==1.0.5 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.6/index.html

正确执行完毕就可以了,一般不用验证。

步骤4:安装mmdet (复现别人的项目中的代码一般不需要这一步,看步骤5)

这里面找到需要的版本:
https://github.com/open-mmlab/mmdetection/tags
在这里插入图片描述
下载压缩包解压后,cd 进入mmdetection目录后直接执行:pip install -v -e .完成编译即可。
至此,完整安装了mmcv-full 1.0.5和mmdet 2.3.0。

步骤5:复现代码步骤(不需要单独下载mmdetection)

完成步骤1,2, 3之后,直接进入你所下载的项目目录中,因为框架已经包含了mmdet,其中mmdet/version.py中已经指明了mmdet的版本。
在这里插入图片描述
这个时候你已经按照上面的步骤安装好mmcv-full了,只需在项目主目录中执行:

pip install -r requirements.txt 
pip install -v -e .

完成编译即可。
执行完毕可以发现mmdet已经安装好了,pip list命令查看。

然后就可以运行代码了,如果运行失败,一般是缺少某些工具包,根据提示安装相应的包即可,如:

pip install numpy==1.23.5
pip install yapf==0.40.1
pip install git+https://github.com/lvis-dataset/lvis-api.git

如果失败,则在本地浏览器输入https://github.com/lvis-dataset/lvis-api.git,下载后将lvis-api压缩包传输到服务器,
命令行输入:pip install lvis-api-master.zip

老版本容易出现的问题:
RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling cublasSgemm( handle, opa, opb, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)
解决:unset LD_LIBRARY_PATH

问题:
[E ProcessGroupNCCL.cpp:737] [Rank 3] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=1751615, OpType=ALLREDUCE, Timeout(ms)=1800000) ran for 1800265 milliseconds before timing out…
[E ProcessGroupNCCL.cpp:414] Some NCCL operations have failed or timed out. Due to the asynchronous nature of CUDA kernels, subsequent GPU operations might run on corrupted/incomplete data. To avoid this inconsistency, we are taking the entire process down…
解决:export NCCL_P2P_DISABLE=1

  • 45
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值