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

### 关于Swin Transformer用于目标检测复现教程 #### 下载并安装依赖库 为了能够顺利运行Swin Transformer的目标检测模型,需要先准备好相应的开发环境。这通常意味着要获取官方提供的源码仓库,并按照指示来构建适合实验的工作空间[^1]。 对于具体的实践操作而言,可以从GitHub上克隆`Swin-Transformer-Object-Detection`项目到本地计算机: ```bash git clone https://github.com/microsoft/Swin-Transformer.git cd Swin-Transformer/ ``` 接着依据文档说明完成必要的软件包安装过程,比如通过pip工具安装Python所需的第三方模块等。 #### 配置mmdetection框架 由于Swin Transformer的对象检测功能建立在mmdetection之上,因此还需要特别关注该平台的相关设定事项。具体来说就是调整参数选项、指定预训练权重路径以及定义新的数据集接口等方面的内容[^2]。 当一切准备就绪之后,可以参照如下命令来进行初步测试: ```bash python tools/train.py configs/swin/cascade_mask_rcnn_swin_base_patch4_window7.pth --gpus 1 ``` 上述指令将会启动单GPU模式下的Cascade Mask R-CNN算法训练流程,所使用的骨干网络即为Swin Base variant版本。 #### 自定义数据集适配指南 如果打算利用这套体系结构处理自有的图像资料,则需进一步学习有关如何创建适用于特定应用场景的数据集描述文件。这部分工作涉及到标注图片中的感兴趣区域(ROI),并将这些信息转换成符合预期输入格式的标准JSON档[^3]。 此外,在某些情况下可能还会遇到其他形式的支持资源可供选用,例如由社区成员维护的扩展版实现方案也能提供额外的帮助支持[^4]。 #### 示例代码片段展示 下面给出一段简单的Python脚本作为例子,展示了怎样加载预训练好的Swin Transformer模型并对一张给定的照片执行推理预测任务: ```python from mmdet.apis import init_detector, inference_detector, show_result_pyplot config_file = 'configs/swin/cascade_mask_rcnn_swin_tiny_patch4_window7.pth' checkpoint_file = './checkpoints/cascade_mask_rcnn_swin-t-p4-w7_fpn_1x_coco.pth' model = init_detector(config_file, checkpoint_file) img = 'demo/demo.jpg' result = inference_detector(model, img) show_result_pyplot(img, result) ``` 此段程序首先初始化了一个基于Swin Tiny架构的实例分割器对象;随后读取了一张名为'demo.jpg'的样本照片并通过调用`inference_detector()`函数获得其对应的识别结果;最后借助matplotlib库将最终可视化效果呈现出来。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值