mmdetection 学习小结

笔者最近由于项目学习了一下 mmdetection 工具箱,这里记录一下心得体会!笔者的 mmdetection 版本为 v1.0rc0 (27/07/2019)

 

目录

参考网址

安装教程

1.打开终端,使用conda创建一个虚拟环境

2.安装Pytorch(2019.09.24安装的是 Pytorch1.2)

3.安装Cython

4.安装mmcv

5.安装mmdetection

6. 测试demo

训练自己的COCO数据

1. 准备coco数据

2. 训练前修改文件

3. 训练

Tips


 

参考网址

  • mmdetection,在COCO数据集上跑通faster R-CNN(测试、训练)
  • mmdetection github官方安装方法
  • mmdetection使用自定义的coco格式数据集进行训练及测试
  • mmdetection - 基于PyTorch的开源目标检测系统
  • 详解目标检测Faster R-CNN
  • mmdetection的configs中的各项参数具体解释
  • Labelimg标注的VOC格式数据集转成coco格式
  • mmdetection源码阅读笔记(0)–创建模型
  • mmdetection源码阅读笔记(1)–创建网络

 

安装教程

笔者最开始尝试将mmdetection安装在windows系统中,试了一天也没有成功,果断放弃。然后在linux系统中,半小时就配置完了!所以还是建议参考官方安装配置方法,装在linux系统中较方便!

环境支持:

  • cuda 9.0 + cudnn 9.1
  • python 3.7
  • Anaconda 3

依赖库:

  • Pytorch 1.2+ (2019.09.24时,python3.7需要搭配pytorch 1.2 ,笔者最开始安装1.1时报错)
  • cython
  • mmcv

步骤:

1.打开终端,使用conda创建一个虚拟环境

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

这两句官方配置代码,conda activate open-mmlab 在笔者的linux系统中并不好用,换成 source activate open-mmlab 才激活虚拟环境。

2.安装Pytorch(2019.09.24安装的是 Pytorch1.2)

conda install pytorch=1.2 -c pytorch

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

3.安装Cython

conda install cython

4.安装mmcv

mmcv也是mmdetection团队开发的一个CV库,提供了很多基本功能,所以需要先安装这个。后续你也可以根据自己的需要对这个库进行修改,但是每次修改好你都需要使用如下命令重新安装mmcv,否则你的修改是起不了作用的。

git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
pip install .

注意最后一句 pip install . 后面有个点!!!

笔者在这里遇到过一些问题,安装mmcv之前需要预先安装 pycocotools、terminaltables、Pillow、scikit-image、scipy、matplotlib等依赖库,需要先用 conda install xxx 或者 pip install xxx 等命令安装,再安装mmcv。

5.安装mmdetection

最新的(2019.09.24)官方安装代码如下:

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

笔者注意到,一些之前的安装教程需要先编译  ./compile.sh 再进行安装,但是最新的库已经取消 ./compile.sh 编译过程!

所以在安装mmdetection时,最主要的还是参考最新的官方安装教程!

6. 测试demo

将下方的代码写入py文件,并存放到mmdetection文件夹目录下,然后运行。该代码的功能是检测图片中的目标,测试模型是官方给出的Faster-RCNN-fpn-resnet50的模型,运行代码会自动下载模型。由于模型是存储在亚马逊云服务器上,速度可能会稍慢,如果下载失败可以通过网盘链接mmdetection(密码:dpyl)进行下载,存放到mmdetection文件夹目录下,然后修改下方代码的相关部分
注:感谢CSDN博主「藏云阁主」的网盘分享,原文链接:https://blog.csdn.net/hajlyx/article/details/83542167

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))

上述demo代码笔者亲测可用,附上跑出的第一张图片,虽然fp高的惊人,但还是证明 安装的mmdetection 已经好用了!

mmdetection 学习小结_第1张图片

也可以在官方给的链接下载预训练模型

https://github.com/open-mmlab/mmdetection/blob/master/MODEL_ZOO.md

 

训练自己的COCO数据

注:这里主要参考CSDN博主「Yee_Ko」的原创文章,原文链接:https://blog.csdn.net/gaoyi135/article/details/90613895

1. 准备coco数据

需要说明的是官方提供的所有代码都默认使用的是coco格式的数据集,所以不想太折腾的话就把自己的数据集转化成coco数据集格式吧。各种类型数据转coco格式脚本见:转换工具箱 。推荐使用其中的labelme2coco.py文件。

制作好数据集之后,官方推荐coco数据集按照以下的目录形式存储:

mmdetection
├── mmdet
├── tools
├── configs
├── data
│   ├── coco
│   │   ├── annotations
│   │   ├── train2017
│   │   ├── val2017
│   │   ├── test2017
 

2. 训练前修改文件

笔者用的模型是 ‘configs/faster_rcnn_r50_fpn_1x.py

1). 修改 configs/faster_rcnn_r50_fpn_1x.py data_root 为自己的COCO数据集绝对路径

2). 修改 configs/faster_rcnn_r50_fpn_1x.py work_dir 为训练后模型存储路径

3. 训练

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

./tools/dist_train.sh /home/*****/mmdetection/configs/faster_rcnn_r50_fpn_1x.py  [optional arguments]

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

python tools/train.py /home/*****/mmdetection/configs/faster_rcnn_r50_fpn_1x.py --gpus 0

至此,网络已经开始训练了!训练完成后,利用上述测试demo.py的代码测试即可!

 

Tips

笔者在安装mmdetection的过程中,还遇到过显卡驱动不兼容的问题!

参考了 Linux安装NVIDIA显卡驱动的正确姿势 这篇博文后,只用了两行语句完美解决了问题。

ubuntu-drivers devices   # 查询所有ubuntu推荐的驱动
sudo ubuntu-drivers autoinstall

查看显卡信息:

watch -n 0.1 nvidia-smi

 

你可能感兴趣的:(mmdetection)