深度学习目标检测工具箱mmdetection安装和测试

深度学习目标检测工具箱mmdetection安装和测试

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

相比于Facebook开源的Detectron框架,作者声称mmdetection有三点优势:performance稍高、训练速度稍快、所需显存稍小。
详细信息可以参考知乎:
知乎mmdetection介绍
安装环境:

  • Ubuntu 16.04
  • Cuda 9.0 + Cudnn 7.3.0
  • Anaconda 3
    Anaconda 3自带python版本为3.7

二、安装教程

荐大家使用Anaconda,可以比较方便的创建Python虚拟环境,避免不同的Python库之间产生冲突。每一个不同的项目可以考虑建立一个单独的环境,避免冲突,方便管理。在安装mmdetection之前,需要安装以下几个依赖库:

  • PyTorch 1.0
  • Cython
  • mmcv
    (1)新建名为mmdetection的虚拟环境
    安装虚拟环境
    (2)激活新安装的环境mmdetection,然后安装pytorch 1.0

在这里插入图片描述
(3) 安装Cython

conda install  cython

(4) 安装mmcv

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

(5)安装mmdetection

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

(6)测试Demo
将下方的代码写入py文件,并存放到mmdetection文件夹目录下,然后运行.该代码的功能是检测图片中的目标,测试模型是官方给出的Faster-RCNN-fpn-resnet50的模型,运行代码会自动下载模型。

import mmcv
from mmcv.runner import load_checkpoint
from mmdet.models import build_detector
from mmdet.apis import inference_detector, show_result

cfg = mmcv.Config.fromfile('configs/faster_rcnn_r50_fpn_1x.py')
cfg.model.pretrained = None

# 构建网络,载入模型
model = build_detector(cfg.model, test_cfg=cfg.test_cfg)

_ = load_checkpoint(model, 'https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth')
# 如果通过网盘下载,取消下一行代码的注释,并且注释掉上一行
# _ = load_checkpoint(model, 'faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth')

# 测试一张图片
img = mmcv.imread('test.jpg')
result = inference_detector(model, img, cfg)
show_result(img, result)

# 测试多张图片
imgs = ['test1.jpg', 'test2.jpg']
for i, result in enumerate(inference_detector(model, imgs, cfg, device='cuda:0')):
    print(i, imgs[i])
    show_result(imgs[i], result)

(7)准备自己的数据,将csv格式转换成Coco和voc格式
我测试的时候用的是scv格式的数据集,用来识别交通标志。需要将csv格式转换成coco或者voc,转换工具下载:
格式转换工具
本来打算转换成cocog数据格式,mmdetection优先支持coco,但是下载的转换程序报错,最后选择了转换为voc格式

你可能感兴趣的:(目标识别)