文章目录

  • 一、简介
  • 二、安装教程
    • 1. 使用conda创建Python虚拟环境(可选)
    • 2. 安装PyTorch 1.1
    • 3. 安装Cython
    • ~~4. 安装mmcv~~
    • 5. 安装mmdetection
    • 6. 测试Demo
    • 7. 准备自己的数据
    • 8. 训练

一、简介

商汤科技(2018 COCO 目标检测挑战赛冠军)和香港中文大学最近开源了一个基于Pytorch实现的深度学习目标检测工具箱mmdetection,支持Faster-RCNN,Mask-RCNN,Fast-RCNN等主流的目标检测框架,后续会加入Cascade-RCNN以及其他一系列目标检测框架。

相比于Facebook开源的Detectron框架,作者声称mmdetection有三点优势:performance稍高、训练速度稍快、所需显存稍小。

我很早就听说了这个工具箱,但是一直没有开源。现在总算是开源了,于是就迫不及待地测试一下这个框架的效果。下面将记录一下我的测试过程,已经期间所遇到的一些坑。

2019.05.26更新了网盘里的demo.py文件,现在的demo应该可以匹配官方的最新代码了。

2019.02.22上传多个mmdetection模型,检测器包括Faster-RCNN、Mask-RCNN、RetinaNet,backbone包括Resnet-50、Resnet-101、ResNext-101,网盘链接:mmdetection(密码:dpyl)

二、安装教程

本人的系统环境:

  • Ubuntu 16.04
  • Cuda 9.0 + Cudnn 7.0.5
  • Python 3.6 (mmdetection要求Python版本需要3.4+)
  • Anaconda 3 (可选)

这里推荐大家使用Anaconda,可以比较方便的创建Python虚拟环境,避免不同的Python库之间产生冲突。在安装mmdetection之前,需要安装以下几个依赖库:

  • PyTorch 0.4.1 和 torchvision
  • PyTorch 1.0 PyTorch 1.1 (Pytorch 0.4.1的版本需要切换branch,在clone了mmdetection的git之后需要git checkout pytorch-0.4.1)
  • Cython
  • mmcv

下面是我的安装和测试步骤,以Anaconda 3为例。

1. 使用conda创建Python虚拟环境(可选)

conda create -n mmdetection python=3.6
source activate mmdetection

这样就创建了名为mmdetection的Python3.6环境,并且在terminal中激活。如果不需要虚拟环境,则将下文的conda install改为pip install

2. 安装PyTorch 1.1

conda install pytorch=1.1 -c pytorch

安装好以后,进入Python环境,输入以下代码测试是否安装成功,不报错则说明安装成功

import torch

3. 安装Cython

conda install cython

4. 安装mmcv

官方代码已更新,直接运行下一步就可以自动安装所有依赖库了

5. 安装mmdetection

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

到此,我们就完成了mmdetection及其依赖库的安装

6. 测试Demo

将下方的代码写入py文件,并存放到mmdetection文件夹目录下,然后运行。该代码的功能是检测图片中的目标,测试模型是官方给出的Faster-RCNN-fpn-resnet50的模型,运行代码会自动下载模型。由于模型是存储在亚马逊云服务器上,速度可能会稍慢,如果下载失败可以通过我的网盘链接mmdetection(密码:dpyl)进行下载,存放到mmdetection文件夹目录下,然后修改下方代码的相关部分

from mmdet.apis import init_detector, inference_detector, show_result# 首先下载模型文件https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth
config_file = 'configs/faster_rcnn_r50_fpn_1x.py'
checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth'# 初始化模型
model = init_detector(config_file, checkpoint_file)# 测试一张图片
img = 'test.jpg'
result = inference_detector(model, img)
show_result(img, result, model.CLASSES)# 测试一系列图片
imgs = ['test1.jpg', 'test2.jpg']
for i, result in enumerate(inference_detector(model, imgs, device='cuda:0')):show_result(imgs[i], result, model.CLASSES, out_file='result_{}.jpg'.format(i))

7. 准备自己的数据

mmdetection支持coco格式和voc格式的数据集,下面将分别介绍这两种数据集的使用方式

  • coco数据集
    官方推荐coco数据集按照以下的目录形式存储,以coco2017数据集为例
mmdetection
├── mmdet
├── tools
├── configs
├── data
│   ├── coco
│   │   ├── annotations
│   │   ├── train2017
│   │   ├── val2017
│   │   ├── test2017

推荐以软连接的方式创建data文件夹,下面是创建软连接的步骤

cd mmdetection
mkdir data
ln -s $COCO_ROOT data

其中,$COCO_ROOT需改为你的coco数据集根目录

  • voc数据集
    与coco数据集类似,将voc数据集按照以下的目录形式存储,以VOC2007为例
mmdetection
├── mmdet
├── tools
├── configs
├── data
│   ├── VOCdevkit
│   │   ├── VOC2007
│   │   │   ├── Annotations
│   │   │   ├── JPEGImages
│   │   │   ├── ImageSets
│   │   │   │   ├── Main
│   │   │   │   │   ├── test.txt
│   │   │   │   │   ├── trainval.txt

同样推荐以软连接的方式创建

cd mmdetection
mkdir data
ln -s $VOC2007_ROOT data/VOCdevkit

其中,$VOC2007_ROOT需改为你的VOC2007数据集根目录
然后,下载 pascal_voc_mod.py 和 voc_classes.txt (上方的模型下载地址中有)存放到mmdetection根目录下,运行以下代码
mmdetection官方代码已更新,不再需要自己生成

如果需要标注自己的数据,推荐使用LabelImg工具标注
然后在运行 pascal_voc_mod.py 之前,修改 voc_classes.txt 里的类别名为你自己设定的类别名,再运行py文件
然后需要修改mmdet/datasets/voc.py文件中的CLASSES为你自己的类别

8. 训练

官方推荐使用分布式的训练方式,这样速度更快,如果是coco训练集,修改CONFIG_FILE中的pretrained参数,改为你的模型路径,然后运行下方代码

./tools/dist_train.sh <CONFIG_FILE> <GPU_NUM> [optional arguments]

如果是voc训练集,还需要修改config文件中的相关参数,可以参考 faster_rcnn_r50_mod.py (上方网盘地址中有),然后再运行上面的代码
mmdetection官方代码已更新,目前已支持voc格式的数据集,不再需要自己修改

如果不想采用分布式的训练方式,或者你只有一块显卡,则运行下方的代码

python tools/train.py <CONFIG_FILE> --gpus <GPU_NUM> --work_dir <WORK_DIR>

至此,如果一切顺利的话,你的模型应该就开始训练了

深度学习目标检测工具箱mmdetection,训练自己的数据相关推荐

  1. 深度学习目标检测---使用yolov5训练自己的数据集模型(Windows系统)

    目录 0    前言 1.从githab上克隆yolov5代码 1.1 yolov5网络project克隆 1.2 项目代码结构的整体介绍 1.3 深度学习环境的配置和安装yolov5所需要的库 2. ...

  2. 深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码)

    深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码) 目录 深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码) 1. 前言 2. 车辆检测数据集说明 (1)车 ...

  3. 深度学习目标检测:YOLOv5实现红绿灯检测(含红绿灯数据集+训练代码)

    深度学习目标检测:YOLOv5实现红绿灯检测(含红绿灯数据集+训练代码) 目录 深度学习目标检测:YOLOv5实现红绿灯检测(含红绿灯数据集+训练代码) 1. 前言 2. 红绿灯检测数据集说明 (1) ...

  4. 深度学习目标检测详细解析以及Mask R-CNN示例

    深度学习目标检测详细解析以及Mask R-CNN示例 本文详细介绍了R-CNN走到端到端模型的Faster R-CNN的进化流程,以及典型的示例算法Mask R-CNN模型.算法如何变得更快,更强! ...

  5. 姿态检测 树莓派_怎样在树莓派上轻松实现深度学习目标检测?

    原标题:怎样在树莓派上轻松实现深度学习目标检测? 雷锋网按:本文为 AI 研习社编译的技术博客,原标题 How to easily Detect Objects with Deep Learning ...

  6. 值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(下)

    作者 | 黄浴 来源 | 转载自知乎专栏自动驾驶的挑战和发展 [导读]在近日发布的<值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(上)>一文中,作者介绍了一部分各大公司和机构基于 ...

  7. 深度学习目标检测指南:如何过滤不感兴趣的分类及添加新分类?

    编译 | 庞佳 责编 | Leo 出品 | AI 科技大本营(公众号ID:rgznai100) AI 科技大本营按:本文编译自 Adrian Rosebrock 发表在 PyImageSearch 上 ...

  8. 深度学习目标检测模型全面综述:Faster R-CNN、R-FCN和SSD

    为什么80%的码农都做不了架构师?>>>    Faster R-CNN.R-FCN 和 SSD 是三种目前最优且应用最广泛的目标检测模型,其他流行的模型通常与这三者类似.本文介绍了 ...

  9. 【西安交大】2020年最新深度学习目标检测方法综述

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 目标检测的任务是从图像中精确且高效地识别.定位出大量预定义类别的物体实例.随着深度 ...

最新文章

  1. Android深度探索--HAL与驱动开发----第一章读书笔记
  2. python中导入模块用什么命令_Python导入模块的技巧
  3. 微信小程序打开红包的css_山海经攻略(微信小程序现金红包提现游戏)
  4. 深度学习~循环神经网络RNN, LSTM
  5. pl/sql里的exists和in的差别
  6. 02基于注解开发SpringMVC项目(jar包,异步,request,参数传递,多选的接收,Model传参,map传参,model传参,ajax,重定向,时间日期转换)
  7. Spring入门 IOC
  8. 利用 Azure Functions 实现无服务器体系结构
  9. sparksql 操作hive_三十六、图解SparkSQL运行原理
  10. python消费kafka逻辑处理导致cpu升高_Kafka 消费迟滞监控工具 Burrow
  11. java 正则表达式案例
  12. Submitting Applications
  13. IT项目如何做好进度管理
  14. OA选择首先要清晰概念
  15. 转:用友华表Cell报表面面观
  16. PCI-PCIE中断机制之三
  17. 软件测试面试题:智力题。
  18. 嵌套iframe页面做打印去掉页眉页脚
  19. 读论文,第十三天:DualRing: Enabling Subtle and Expressive Hand Interaction with Dual IMU Rings
  20. android sepolicy 最新小结

热门文章

  1. 远程医疗诊断、便携传感智能设备引爆新体验
  2. 人力资源机器下载方法
  3. mediaplayer网络播放错误
  4. 微软常用运行库合集自动安装 2017.06.24 X86X64
  5. 计算机排版自然段视频教程,视频画面排版方法
  6. JetBrains 专为程序员推出新字体,开源免费可商用!
  7. AD原理图元器件查找相似对象时不能多选的问题解决
  8. 通达信一根均线变色主图指标公式,实现均线向上向下变色
  9. websocket实现多用户一对一实时聊天
  10. 首个5G智慧机场落地广州 速度是4G的50倍