ubuntu下安装mmdetection2.14记录

首先github把mmdetion包下下来,找到里面的docs文件夹下的get_started.md ;现在有中文的环境配置说明了。按里面的步骤一步一步来。
我下载安装的是mmdet2.14版本的,从github下的默认是最新版。
以下内容主要为官方安装说明文档。黄色部分是我安装时的操作,穿插在说明文档中可做参考,如果节省时间的话只看黄色部分就可以了

依赖

  • Linux 和 macOS (Windows 理论上支持)
  • Python 3.6+
  • PyTorch 1.3+
  • CUDA 9.2+ (如果基于 PyTorch 源码安装,也能够支持 CUDA 9.0)
  • GCC 5+
  • MMCV

MMDetection 和 MMCV 版本兼容性如下所示,需要安装正确的 MMCV 版本以避免安装出现问题。

MMDetection 版本MMCV 版本
mastermmcv-full>=1.3.8, <1.4.0
2.14.0mmcv-full>=1.3.8, <1.4.0
2.13.0mmcv-full>=1.3.3, <1.4.0
2.12.0mmcv-full>=1.3.3, <1.4.0
2.11.0mmcv-full>=1.2.4, <1.4.0
2.10.0mmcv-full>=1.2.4, <1.4.0
2.9.0mmcv-full>=1.2.4, <1.4.0
2.8.0mmcv-full>=1.2.4, <1.4.0
2.7.0mmcv-full>=1.1.5, <1.4.0
2.6.0mmcv-full>=1.1.5, <1.4.0
2.5.0mmcv-full>=1.1.5, <1.4.0
2.4.0mmcv-full>=1.1.1, <1.4.0
2.3.0mmcv-full==1.0.5
2.3.0rc0mmcv-full>=1.0.2
2.2.1mmcv==0.6.2
2.2.0mmcv==0.6.2
2.1.0mmcv>=0.5.9, <=0.6.1
2.0.0mmcv>=0.5.1, <=0.5.8

**注意:**如果已经安装了 mmcv,首先需要使用 pip uninstall mmcv 卸载已安装的 mmcv,如果同时安装了 mmcv 和 mmcv-full,将会报 ModuleNotFoundError 错误。

安装流程

准备环境

  1. 使用 conda 新建虚拟环境,并进入该虚拟环境;

    conda create -n open-mmlab python=3.7 -y
    conda activate open-mmlab
    

这一步没啥说的输入这俩命令,创建自己的环境,然后进入环境配置即可

  1. 基于 PyTorch 官网安装 PyTorch 和 torchvision,例如:

    conda install pytorch torchvision -c pytorch
    

    注意:需要确保 CUDA 的编译版本和运行版本匹配。可以在 PyTorch 官网查看预编译包所支持的 CUDA 版本。

    例 1 例如在 /usr/local/cuda 下安装了 CUDA 10.1, 并想安装 PyTorch 1.5,则需要安装支持 CUDA 10.1 的预构建 PyTorch:

    conda install pytorch cudatoolkit=10.1 torchvision -c pytorch
    

    例 2 例如在 /usr/local/cuda 下安装了 CUDA 9.2, 并想安装 PyTorch 1.3.1,则需要安装支持 CUDA 9.2 的预构建 PyTorch:

    conda install pytorch=1.3.1 cudatoolkit=9.2 torchvision=0.4.2 -c pytorch
    

    如果不是安装预构建的包,而是从源码中构建 PyTorch,则可以使用更多的 CUDA 版本,例如 CUDA 9.0。

这一步我在这里安装的是pytouch1.5.1 touchvision 0.6.1
对应的安装命令为:

conda install pytouch==1.5.1 touchvision==0.6.1 -c pytorch

我的CUDA是11.0的,但是在命令里也没有体现这个信息。不知道有无影响。
若要装其他版本的pytouch上pytouch官网https://pytorch.org找到相对应版本的命令即可。
这一步安装过程比较慢需要几十十分钟,没配置镜像的同学需要先配一下镜像,不然网速很慢根本下不下来。
镜像配置方法:

vi ./.condarc

然后将里面的内容替换为:

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

保存后运行命令即可。

一次没有安装成功就输入命令再试一次,这一步俺也卡了好几次。如图就是成功装上了,可以看到这几个包比较大,没有镜像的话基本就会httperror报错。

安装 MMDetection

我们建议使用 MIM 来安装 MMDetection:

pip install openmim
mim install mmdet

这里我也是按照说明依次输入上面这两个命令pip install openmim和mim install mmdet,很顺利一次就成功了
在这里插入图片描述
在这里插入图片描述
可以看到mmcv-full mmdet都成功装上了,就不用下面手都档一步一步操作了。感觉非常简便。pip list 看一下:
在这里插入图片描述
到这里就基本装完了下面的官方文档基本不用看了,直接看最后的测试mmdet的功能即可

MIM 能够自动地安装 OpenMMLab 的项目以及对应的依赖包。

或者,可以手动安装 MMDetection:

  1. 安装 mmcv-full,我们建议使用预构建包来安装:

    pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
    

    需要把命令行中的 {cu_version}{torch_version} 替换成对应的版本。例如:在 CUDA 11 和 PyTorch 1.7.0 的环境下,可以使用下面命令安装最新版本的 MMCV:

    pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
    

    请参考 MMCV 获取不同版本的 MMCV 所兼容的的不同的 PyTorch 和 CUDA 版本。同时,也可以通过以下命令行从源码编译 MMCV:

    git clone https://github.com/open-mmlab/mmcv.git
    cd mmcv
    MMCV_WITH_OPS=1 pip install -e .  # 安装好 mmcv-full
    cd ..
    

    或者,可以直接使用命令行安装:

    pip install mmcv-full
    
  2. 将 MMDetection 仓库克隆至本地:

    git clone https://github.com/open-mmlab/mmdetection.git
    cd mmdetection
    
  3. 首先安装需要的依赖包,然后安装 MMDetection:

    pip install -r requirements/build.txt
    pip install -v -e .  # 或者使用 "python setup.py develop"
    

    或者,可以使用更简单的命令安装 MMDetection:

    pip install mmdet
    

注意:

(1) 按照上述说明,MMDetection 安装在 dev 模式下,因此在本地对代码做的任何修改都会生效,无需重新安装;

(2) 如果希望使用 opencv-python-headless 而不是 opencv-python, 可以在安装 MMCV 之前安装;

(3) 一些安装依赖是可以选择的。例如只需要安装最低运行要求的版本,则可以使用 pip install -v -e . 命令。如果希望使用可选择的像 albumentationsimagecorruptions 这种依赖项,可以使用 pip install -r requirements/optional.txt 进行手动安装,或者在使用 pip 时指定所需的附加功能(例如 pip install -v -e .[optional]),支持附加功能的有效键值包括 alltestsbuild 以及 optional

只在 CPU 安装

我们的代码能够建立在只使用 CPU 的环境(CUDA 不可用)。

在CPU模式下,可以运行 demo/webcam_demo.py 示例,然而以下功能将在 CPU 模式下不能使用:

  • Deformable Convolution
  • Modulated Deformable Convolution
  • ROI pooling
  • Deformable ROI pooling
  • CARAFE: Content-Aware ReAssembly of FEatures
  • SyncBatchNorm
  • CrissCrossAttention: Criss-Cross Attention
  • MaskedConv2d
  • Temporal Interlace Shift
  • nms_cuda
  • sigmoid_focal_loss_cuda
  • bbox_overlaps

因此,如果尝试使用包含上述操作的模型进行推理,将会报错。下表列出了由于依赖上述算子而无法在 CPU 上运行的相关模型:

操作模型
Deformable Convolution/Modulated Deformable ConvolutionDCN、Guided Anchoring、RepPoints、CentripetalNet、VFNet、CascadeRPN、NAS-FCOS、DetectoRS
MaskedConv2dGuided Anchoring
CARAFECARAFE
SyncBatchNormResNeSt

注意: MMDetection 目前不支持使用 CPU 进行训练。

另一种选择: Docker 镜像

我们提供了 Dockerfile 来生成镜像,请确保 docker 的版本 >= 19.03。

# 基于 PyTorch 1.6, CUDA 10.1 生成镜像
docker build -t mmdetection docker/

运行命令:

docker run --gpus all --shm-size=8g -it -v {DATA_DIR}:/mmdetection/data mmdetection

从零开始设置脚本

假设当前已经成功安装 CUDA 10.1,这里提供了一个完整的基于 conda 安装 MMDetection 的脚本:

conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.1 -c pytorch -y

# 安装最新版本的 mmcv
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html

# 安装 MMDetection
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e .

使用多个 MMDetection 版本进行开发

训练和测试的脚本已经在 PYTHONPATH 中进行了修改,以确保脚本使用当前目录中的 MMDetection。

要使环境中安装默认的 MMDetection 而不是当前正在在使用的,可以删除出现在相关脚本中的代码:

PYTHONPATH="$(dirname $0)/..":$PYTHONPATH

验证

为了验证是否正确安装了 MMDetection 和所需的环境,我们可以运行示例的 Python 代码来初始化检测器并推理一个演示图像:

from mmdet.apis import init_detector, inference_detector

config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
# 从 model zoo 下载 checkpoint 并放在 `checkpoints/` 文件下
# 网址为: 
checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
device = 'cuda:0'
# 初始化检测器
model = init_detector(config_file, checkpoint_file, device=device)
# 推理演示图像
inference_detector(model, 'demo/demo.jpg')

如果成功安装 MMDetection,则上面的代码可以完整地运行。

现在来到最后的测试验证环节,个人测试步骤参考:
打开pycharm 设置使用刚才创建的环境。
然后按上面命令来:

from mmdet.apis import init_detector, inference_detector

这一步之前要注意将你的mmdection文件设置为根目录
然后在mmdection文件下创建checkpoints文件夹,从网上下载http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth放到chechpoints文件夹中如图:

在这里插入图片描述
接下来只要没报错,警告不用管,依次执行命令即可:

config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
checkpoint_file ='checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
device = 'cuda:0'
model = init_detector(config_file, checkpoint_file, device=device)
inference_detector(model, 'demo/demo.jpg')

即可看到结果:
在这里插入图片描述
结果的一堆数组应该是检测出的目标的数据,这里没有可视化而已。
或者在下载好了权重之后执行下面这个命令使用faster_rcnn_r50_fpn_1x_coco.py 模型进行检测,就能看到下面的图了。

python demo/image_demo.py  demo/demo.jpg configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py  checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth

在这里插入图片描述

至此就安装成功,欢迎入坑。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值