深度学习目标检测工具箱mmdetection,训练自己的数据
文章目录
- 一、简介
- 二、安装教程
- 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,训练自己的数据相关推荐
- 深度学习目标检测---使用yolov5训练自己的数据集模型(Windows系统)
目录 0 前言 1.从githab上克隆yolov5代码 1.1 yolov5网络project克隆 1.2 项目代码结构的整体介绍 1.3 深度学习环境的配置和安装yolov5所需要的库 2. ...
- 深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码)
深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码) 目录 深度学习目标检测:YOLOv5实现车辆检测(含车辆检测数据集+训练代码) 1. 前言 2. 车辆检测数据集说明 (1)车 ...
- 深度学习目标检测:YOLOv5实现红绿灯检测(含红绿灯数据集+训练代码)
深度学习目标检测:YOLOv5实现红绿灯检测(含红绿灯数据集+训练代码) 目录 深度学习目标检测:YOLOv5实现红绿灯检测(含红绿灯数据集+训练代码) 1. 前言 2. 红绿灯检测数据集说明 (1) ...
- 深度学习目标检测详细解析以及Mask R-CNN示例
深度学习目标检测详细解析以及Mask R-CNN示例 本文详细介绍了R-CNN走到端到端模型的Faster R-CNN的进化流程,以及典型的示例算法Mask R-CNN模型.算法如何变得更快,更强! ...
- 姿态检测 树莓派_怎样在树莓派上轻松实现深度学习目标检测?
原标题:怎样在树莓派上轻松实现深度学习目标检测? 雷锋网按:本文为 AI 研习社编译的技术博客,原标题 How to easily Detect Objects with Deep Learning ...
- 值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(下)
作者 | 黄浴 来源 | 转载自知乎专栏自动驾驶的挑战和发展 [导读]在近日发布的<值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(上)>一文中,作者介绍了一部分各大公司和机构基于 ...
- 深度学习目标检测指南:如何过滤不感兴趣的分类及添加新分类?
编译 | 庞佳 责编 | Leo 出品 | AI 科技大本营(公众号ID:rgznai100) AI 科技大本营按:本文编译自 Adrian Rosebrock 发表在 PyImageSearch 上 ...
- 深度学习目标检测模型全面综述:Faster R-CNN、R-FCN和SSD
为什么80%的码农都做不了架构师?>>> Faster R-CNN.R-FCN 和 SSD 是三种目前最优且应用最广泛的目标检测模型,其他流行的模型通常与这三者类似.本文介绍了 ...
- 【西安交大】2020年最新深度学习目标检测方法综述
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 目标检测的任务是从图像中精确且高效地识别.定位出大量预定义类别的物体实例.随着深度 ...
最新文章
- Android深度探索--HAL与驱动开发----第一章读书笔记
- python中导入模块用什么命令_Python导入模块的技巧
- 微信小程序打开红包的css_山海经攻略(微信小程序现金红包提现游戏)
- 深度学习~循环神经网络RNN, LSTM
- pl/sql里的exists和in的差别
- 02基于注解开发SpringMVC项目(jar包,异步,request,参数传递,多选的接收,Model传参,map传参,model传参,ajax,重定向,时间日期转换)
- Spring入门 IOC
- 利用 Azure Functions 实现无服务器体系结构
- sparksql 操作hive_三十六、图解SparkSQL运行原理
- python消费kafka逻辑处理导致cpu升高_Kafka 消费迟滞监控工具 Burrow
- java 正则表达式案例
- Submitting Applications
- IT项目如何做好进度管理
- OA选择首先要清晰概念
- 转:用友华表Cell报表面面观
- PCI-PCIE中断机制之三
- 软件测试面试题:智力题。
- 嵌套iframe页面做打印去掉页眉页脚
- 读论文,第十三天:DualRing: Enabling Subtle and Expressive Hand Interaction with Dual IMU Rings
- android sepolicy 最新小结