基于PyTorch的深度学习目标检测 MMDetection 安装

引言

MMDetection是一款优秀的基于PyTorch的深度学习目标检测工具箱,由香港中文大学(CUHK)多媒体实验室(mmlab)开发。基本上支持所有当前SOTA二阶段的目标检测算法,比如faster rcnn,mask rcnn,r-fcn,Cascade-RCNN等。读者可在 PyTorch 环境下测试不同的预训练模型及训练新的检测分割模型。

根据 GitHub 项目所述,MMDetection的主要特征可以总结为以下几个方面:

模块化设计:将检测或者分割任务分解成几个模块,通过模块的组合即可完成相应的任务。支持多个框架,开箱即用:该工具包直接支持多种流行的检测框架,如 Faster RCNN、Mask RCNN、RetinaNet 等。高效:所有基础边界框和掩码运算都在 GPU 上运行。不同模型的训练速度大约比 FAIR 的 Detectron 快 5% ~ 20%。技术发展水平: 达到了目前最先进的水平。

翻译过程中难免有所疏漏,如发现错误,希望大家指出,谢谢支持。

目录

MMDetection安装 了解如何在计算机上安装MMDetectionMMDetection入门 学习有关MMDetection用法的基本教程。基准测试和model zoo 介绍各种模型的训练环境和基准测试,比较不同模型训练的各项数据。技术细节 介绍训练检测器的主要单元:数据管道,模型和迭代管道。更新日志

安装

安装条件

Linux(不正式支持Windows)Python 3.5+PyTorch 1.1或更高版本CUDA 9.0或更高NCCL 2GCC 4.9或更高mmcv(https://github.com/open-mmlab/mmcv)

我们已经测试了以下版本的操作系统和软件:

OS: Ubuntu 16.04/18.04 and CentOS 7.2CUDA: 9.0/9.2/10.0/10.1NCCL: 2.1.15/2.2.13/2.3.7/2.4.2GCC(G++): 4.9/5.3/5.4/7.3

安装 mmdetection

a. 创建一个conda虚拟环境并激活它

<code>conda create -n open-mmlab python=3.7 -y conda activate open-mmlab/<code>

b. 按照官方说明安装PyTorch和Torchvision(https://pytorch.org/) ,例如,

<code>conda install pytorch torchvision -c pytorch/<code>

c. 克隆mmdetection存储库

<code>git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection/<code>

d. 安装构建要求,然后安装mmdetection。(我们通过github repo安装pycocotools而不是pypi,因为pypi版本较旧并且与最新的numpy不兼容。)

<code>pip install -r requirements/build.txt pip install "git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI" pip install -v -e . ## or "python setup.py develop"/<code>

注意:

git commit的id将在步骤d中写入版本号,例如0.6.0 + 2e7045c。该版本还将保存在经过训练的模型中。建议你每次从github获取一些更新时都运行步骤d。如果修改了C++/CUDA代码,则此步骤为强制性的。按照上述说明,mmdetection将安装在dev模式下,对代码进行的任何本地修改都将生效,而无需重新安装它(除非你提交了一些提交并希望更新版本号)。如果要使用 opencv-python-headless 来代替 opencv-python,可以在安装MMCV之前先安装它。一些依赖关系是可选的。只需运行 pip install -v -e .,将只会安装最低运行时间要求。要使用可选的依赖项如albumentations和imagecorruptions,并使用pip install -r requirements/optional.txt 手动安装它们,或者在调用pip时指定所需的附加项(例如pip install -v -e .[optional])。对于额外字段的有效键为:all,tests,build,和 optional。

另一个选择: Docker Image

我们提供了一个Dockerfile(https://github.com/open-mmlab/mmdetection/blob/master/docker/Dockerfile)来构建映像。

<code>## 使用PyTorch 1.1、CUDA 10.0和CUDNN 7.5构建图像 docker build -t mmdetection docker//<code>

准备数据集

建议将数据集根符号链接到$MMDETECTION/data。如果文件夹结构不同,则可能需要更改配置文件中的相应路径。

<code>mmdetection ├── mmdet ├── tools ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ ├── train2017 │ │ ├── val2017 │ │ ├── test2017 │ ├── cityscapes │ │ ├── annotations │ │ ├── train │ │ ├── val │ ├── VOCdevkit │ │ ├── VOC2007 │ │ ├── VOC2012 /<code>

必须使用cityscapesScripts工具箱(https://github.com/mcordts/cityscapesScripts)将城市景观注释转换为coco格式。我们计划提供一个易于使用的转换脚本。目前,我们建议你遵循maskrcnn-benchmark工具箱(https://github.com/facebookresearch/maskrcnn-benchmark/tree/master/maskrcnn_benchmark/data) 中提供的说明 。使用此脚本时,所有图像都必须移到同一文件夹中。在linux系统上,例如可以通过以下方式对火车图像进行处理:

<code>cd data/cityscapes/ mv train/*/*train//<code>

从零开始的安装脚本

这是一个完整的脚本,用于使用conda设置mmdetection并链接数据集路径(假设你的COCO数据集路径为$ COCO_ROOT)。

<code>conda create -n open-mmlab python=3.7 -y conda activate open-mmlab conda install -c pytorch pytorch torchvision -y git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection pip install -r requirements/build.txt pip install "git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI" pip install -v -e . mkdir data ln -s $COCO_ROOT data/<code>

使用多个MMDetection版本

如果你的机器上有多个mmdetection,并且你想交替使用它们,则建议的方法是创建多个conda环境并对不同版本使用不同的环境。

另一种方法是插入下面的代码到主脚本(train.py,test.py或任何其他脚本运行)

<code>import os.path as osp import sys sys.path.insert(0,osp.join(osp.dirname(osp.abspath(__file__)),'../'))/<code>

或者在相应文件夹的终端中运行以下命令以临时使用当前文件夹。

<code>export PYTHONPATH=`pwd`:$PYTHONPATH/<code>