目的检测神器mmdetection
作者头像
  • Alter
  • 2019-12-21 15:03:05 3

mmdetection

mmdetection 是由商汤科技和香港中文大学基于 PyTorch 开源的一个深度学习目标检测工具。该工具包含多种检测算法,例如 RPN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD 和 RetinaNet,以及 Cascade R-CNN。此外,它还提供了多种骨干网络,如 ResNet、ResNeXt、SENet、VGG 和 HRNet,以及其他特性如 DCN、Group Normalization、Soft-NMS 和 Generalized Attention。

mmdetection 曾经成为目标检测竞赛的重要工具。

模型下载

你可以从 GitHub 上的 MODELZOO 文件中下载预训练模型。这些模型是基于 COCO2017train 数据集训练,并在 COCO2017_val 上进行评估的。训练过程中使用了 8 块 NVIDIA Tesla V100 GPU,每个批次大小为 16(每块显卡 2 张图片)。默认的下载地址可能较慢,建议使用阿里云镜像加速下载,将链接中的 https://s3.ap-northeast-2.amazonaws.com/open-mmlab 改为 https://open-mmlab.oss-cn-beijing.aliyuncs.com

环境要求

  • Linux
  • Python 3.5+
  • PyTorch 1.1+
  • CUDA 9.0+
  • NCCL 2
  • GCC (G++) 4.9+

安装

首先,安装 Anaconda:

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

接着,安装 PyTorch:

bash conda install pytorch torchvision -c pytorch

如果你使用的是 CUDA 9.0,可以使用以下命令安装特定版本的 PyTorch:

bash conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=9.0 -c pytorch

然后,下载并安装 mmdetection 项目:

bash git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection pip install mmcv python setup.py develop

如果在安装 mmcv 时遇到问题,可能是由于 pip 源的问题,可以尝试更换 pip 源。

使用预训练模型进行测试

首先,根据提供的模型下载地址下载预训练模型。以下是一个示例代码,展示了如何使用预训练模型进行目标检测:

```python from mmdet.apis import initdetector, inferencedetector, show_result import mmcv

configfile = 'configs/fasterrcnnr50fpn1x.py' checkpointfile = 'checkpoints/fasterrcnnr50fpn1x_20181010-3d1b3351.pth'

model = initdetector(configfile, checkpoint_file, device='cuda:0')

img = 'test.jpg' # 或者 img = mmcv.imread(img),这只会加载一次 result = inference_detector(model, img)

showresult(img, result, model.CLASSES) showresult(img, result, model.CLASSES, out_file='result.jpg')

video = mmcv.VideoReader('video.mp4') for frame in video: result = inferencedetector(model, frame) showresult(frame, result, model.CLASSES, wait_time=1) ```

训练自己的模型

如果你希望在一个自定义的数据集上训练一个目标检测模型,首先需要标记数据。可以使用 labelme 或 labelImg 工具进行标注。

数据格式

使用 mmdetection/mmdet/datasets/custom.py 类来加载数据。数据格式如下:

json [ { 'filename': 'a.jpg', 'width': 1280, 'height': 720, 'ann': { 'bboxes': (n, 4), 'labels': (n, ), 'bboxes_ignore': (k, 4), # 可选字段 'labels_ignore': (k, 4) # 可选字段 } }, ... ]

配置文件设置

根据选择的模型,在 mmdetection/configs/ 目录下找到对应的配置文件,根据需求修改参数和网络结构。特别注意 datasettype 参数,根据数据格式进行修改。例如,如果使用 custom.py 文件,则需要将 datasettype 设置为 'CustomDataset'。

其他重要参数包括:

  • data_root:数据存放目录
  • ann_file:合成数据文件路径
  • img_prefix:图片存放路径
  • checkpoint_config = dict(interval=1):保存模型的间隔,1 表示每次 epoch 后都保存模型
  • total_epochs:总训练 epoch 数量
  • work_dir:模型保存目录
  • load_from:预训练模型路径,从 0 开始训练
  • resume_from:重新训练模型路径,根据保存模型时的 epoch 开始训练
训练模型

单个 GPU 训练:

bash python tools/train.py ${CONFIG_FILE}

多 GPU 训练:

bash ./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM}

可选参数:

  • --validate:每多少次 epoch 在验证集上评估结果,默认为 1
  • --work_dir:模型保存目录
  • --resumefrom ${CHECKPOINTFILE}:预训练或重新开始训练模型路径

以上是改写后的内容,确保符合你的要求。

    本文来源:图灵汇
责任编辑: : Alter
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
神器mmdetection目的检测
    下一篇