MMDetection是一款优秀的基于PyTorch的深度学习目标检测工具箱,由香港中文大学(CUHK)多媒体实验室(mmlab)开发。基本上支持所有当前SOTA二阶段的目标检测算法,比如faster rcnn,mask rcnn,r-fcn,Cascade-RCNN等。读者可在 PyTorch 环境下测试不同的预训练模型及训练新的检测分割模型。
根据 GitHub 项目所述,MMDetection的主要特征可以总结为以下几个方面:
翻译过程中难免有所疏漏,如发现错误,希望大家指出,谢谢支持。
我们已经测试了以下版本的操作系统和软件:
a. 创建一个conda虚拟环境并激活它
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
b. 按照官方说明安装PyTorch和Torchvision(https://pytorch.org/) ,例如,
conda install pytorch torchvision -c pytorch
c. 克隆mmdetection存储库
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
d. 安装构建要求,然后安装mmdetection。(我们通过github repo安装pycocotools而不是pypi,因为pypi版本较旧并且与最新的numpy不兼容。)
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"
注意:
我们提供了一个Dockerfile(https://github.com/open-mmlab/mmdetection/blob/master/docker/Dockerfile)来构建映像。
## 使用PyTorch 1.1、CUDA 10.0和CUDNN 7.5构建图像
docker build -t mmdetection docker/
建议将数据集根符号链接到$MMDETECTION/data。如果文件夹结构不同,则可能需要更改配置文件中的相应路径。
mmdetection
├── mmdet
├── tools
├── configs
├── data
│ ├── coco
│ │ ├── annotations
│ │ ├── train2017
│ │ ├── val2017
│ │ ├── test2017
│ ├── cityscapes
│ │ ├── annotations
│ │ ├── train
│ │ ├── val
│ ├── VOCdevkit
│ │ ├── VOC2007
│ │ ├── VOC2012
必须使用cityscapesScripts工具箱(https://github.com/mcordts/cityscapesScripts)将城市景观注释转换为coco格式。我们计划提供一个易于使用的转换脚本。目前,我们建议你遵循maskrcnn-benchmark工具箱(https://github.com/facebookresearch/maskrcnn-benchmark/tree/master/maskrcnn_benchmark/data) 中提供的说明 。使用此脚本时,所有图像都必须移到同一文件夹中。在linux系统上,例如可以通过以下方式对火车图像进行处理:
cd data/cityscapes/
mv train/*/*train/
这是一个完整的脚本,用于使用conda设置mmdetection并链接数据集路径(假设你的COCO数据集路径为$ COCO_ROOT)。
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
如果你的机器上有多个mmdetection,并且你想交替使用它们,则建议的方法是创建多个conda环境并对不同版本使用不同的环境。
另一种方法是插入下面的代码到主脚本(train.py,test.py或任何其他脚本运行)
import os.path as osp
import sys
sys.path.insert(0,osp.join(osp.dirname(osp.abspath(__file__)),'../'))
或者在相应文件夹的终端中运行以下命令以临时使用当前文件夹。
export PYTHONPATH=`pwd`:$PYTHONPATH