简介

MMDetection是由open-mmlab开发的基于PyTorch的目标检测工具库,和Detectron2一样是目标检测领域非常著名的工具箱,open-mmlab是香港中文大学、商汤等机构联合成立的实验室,主要都是国内的开发者和研究者。MMDetection中目前包含数十种模型和方法,且为开发者提供了非常合适的高层接口以便开发者以MMDetection为基础进行项目的二次开发,这几年也有不少检测领域的论文采用MMDetection实现。

安装

MMDetection的版本已经更新到2.8.0了,因此本系列所有的教程文章均以该版本为例,且操作系统为Ubuntu18.04,显卡环境为2080Ti。

这里不建议在Windows系统下安装配置MMDetection,一方面官方的支持并不好,另一方面,现在网上很多教程在Windows上安装成功也是比较旧的版本了。此外,到我修改这篇文章的时候MMDetection2.9.0已经发布了,相比于之前的版本,有一些改动但是整体框架没有太大变化。

首先,克隆官方仓库源码到本地并切换到源码目录下,使用的命令如下。

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection

接着,在该目录下逐行执行下面的命令,这里最好安装并配置了conda国内源之后执行(课参考conda标准库国内源教程和PyTorch国内源教程),并且,由于目前MMDetection支持PyTorch1.3以上的版本,我这里推荐选用比较稳定的PyTorch1.6。(具体安装时由于每个人的操作系统版本和硬件环境不同可能会出现各种问题,遇到问题可以在本文下面留言或者参考官方文档关于安装的部分。)

conda create -n mmdet python=3.7 -y
conda activate mmdet
conda install pytorch=1.6 torchvision cudatoolkit=10.2 -y
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/index.html
pip install -r requirements/build.txt
pip install -v -e .

最后,如果安装过程是正常的,上述任何步骤不会有任何的报错,然后通过运行下面的Python脚本(在项目根目录看下新建输入如下内容并允许即可)来测试mmdetection的安装是否正确,在运行之前首先需要运行下面的命令下载预训练模型。

mkdir checkpoints
cd checkpoints/
wget http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
cd -
from mmdet.apis import init_detector, inference_detector, show_result_pyplotconfig_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
device = 'cuda:0'
# init a detector
model = init_detector(config_file, checkpoint_file, device=device)
# inference the demo image
rst = inference_detector(model, 'demo/demo.jpg')
show_result_pyplot(model, 'demo/demo.jpg', rst)

上面的Python脚本执行可能会出现一些警告,主要是新版本API的调整,不影响最后程序通过Matplotlib可视化如下的Demo图像检测结果,如果输出的确实是类似这样的检测结果图片,那代表至此的安装没什么大问题,基本成功了。

设计架构

MMDetection将检测分割等任务的Pipeline抽象成了三个大部件,分别是数据集(包括Dataset和Pipeline)、模型(包括Model)和运行时(包括Schedule和Runtime),后文会一一展开这些部件的详细内容,这里只是大体说明一下。其中数据集部分对应了标注和图像的数据处理,模型则通过堆叠backbone、neck、head等决定数据的流动和运算,运行时则控制训练和推理过程中的操作并制定整体的训练流程。

那么,在MMDetection中是什么控制整个Pipeline的设计呢?其实就是整个open-mmlab设计的框架都存在的配置文件,它们一般在根目录的configs目录中,已经包含了一些MMDetection官方复现的检测方法的配置文件,如Faster R-CNN。正是配置文件负责全局控制,因此官方文档教程上第一个步骤就是介绍配置文件相关内容,本系列也将按照这个思路展开。

其实仔细观察最基本的Faster R-CNN模型的配置文件,内容是如下的,这是因为MMDetection的配置文件有一个继承机制,该检测器的模型配置(ResNet50+FPN)、数据集配置(COCO检测数据集)、运行时配置(单倍计划和默认运行时)均继承自_base_中的内容,该文件夹是MMDetection中最基础的配置。

_base_ = ['../_base_/models/faster_rcnn_r50_fpn.py','../_base_/datasets/coco_detection.py','../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]

配置文件的具体讲解我会在本专栏的第二篇文章详细讲解,包括命名原则、继承机制、书写规则等,这里只是简单介绍一下。

Benchmark

目前MMDetection官方实现的backbone和detector如下图,官方复现基本上能达到论文精度,并且推理速度和Detectron2相比也不遑多让。

总结

MMDetection由于其高度封装的机制,非常适合于科研、工程项目和竞赛,是目标检测领域最受欢迎的工具箱之一,因此学习该框架是研究目标检测相当不错的选择,该框架官方教程也是很详尽的。最后,如果我的文章对你有所帮助,欢迎点赞收藏评论一键三连,你的支持是我不懈创作的动力。

MMDetection-简介相关推荐

  1. 对象检测工具包mmdetection简介、安装及测试代码

    mmdetection是商汤和港中文大学联合开源的基于PyTorch的对象检测工具包,属于香港中文大学多媒体实验室open-mmlab项目的一部分.该工具包提供了已公开发表的多种流行的检测组件,通过这 ...

  2. 【项目实战课】快速上手目标检测任务,MMdetection框架详细解读与案例实战

    欢迎大家来到我们的项目实战课,本期内容是<MMdetection框架解读与案例实战>. 所谓项目实战课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战讲 ...

  3. 【直播课】6小时教你掌握MMdetection工程落地实践

    前言 目标检测是计算机视觉和数字图像处理的一个热门方向,广泛应用于机器人导航.智能视频监控.工业检测.航空航天等诸多领域,通过计算机视觉减少对人力资本的消耗,具有重要的现实意义.因此,目标检测也就成为 ...

  4. 2020年,那些「引爆」了机器学习社区的热门论文、库和基准

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 2020 年出现了哪 ...

  5. 2020年,那些「引爆」了ML社区的热门论文、库和基准

    2020 年出现了哪些引爆机器学习社区的论文和库呢?哪些模型和方法登顶各领域基准排行榜呢?这篇文章给你答案. 机器之心报道,作者:杜伟 不平凡的 2020 年终于过去了!这一年,由于新冠肺炎疫情的影响 ...

  6. 【目标检测】MMDetection的安装与基础使用

    前言 MMDetection是商汤和港中文大学针对目标检测任务推出的一个开源工具包,统一标准化了很多前沿模型,为研究者复现代码提供了便利.本篇就来尝试安装一下MMDetection并简单跑一下官方的示 ...

  7. 深度学习目标检测工具箱mmdetection,训练自己的数据

    文章目录 一.简介 二.安装教程 1. 使用conda创建Python虚拟环境(可选) 2. 安装PyTorch 1.1 3. 安装Cython ~~4. 安装mmcv~~ 5. 安装mmdetect ...

  8. detectron2的简介和配置

    detectron2的简介和配置 前言:距离上一篇博客过了两年,几近放弃DL和RL这非常有趣的领域,近日重拾DL,在摸索中打算整理一下深度学习框架,争取做到"探索"和"利 ...

  9. 基于mmdetection 旋转目标检测(OBB detection)+DOTA数据集自定义数据集+配docker

    这两周得益于组里的任务需求,肝了一个遥感类的飞机旋转框目标检测,在给定的4096*4096的大尺度分辨率图片上去识别检测飞机. 经过模型检测后输出结果图如下图所示: 可以看到最终的结果还是不错的,通过 ...

  10. 计算机视觉系列-轻松掌握 MMDetection 中 全景分割算法 MaskFormer(一)

    计算机视觉系列-轻松掌握 MMDetection 中 全景分割算法 MaskFormer(一) 目录 全景分割 简介 MaskFormer 简介 MaskFormer 配置代码 计算机视觉学习笔记系列 ...

最新文章

  1. 清北学堂模拟赛d2t4 最大值(max)
  2. java 反射.问题_Java知识点总结(反射-反射机制性能问题)
  3. clipse中运行maven提示org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
  4. 阿里MySQL读写一致_缓存与数据库读写一致的解决方案
  5. mysql登陆时报错PID_Mysql 启动错误:the server quit without updating pid
  6. pptp,l2tp获取登录用户信息用pppd参数即可
  7. python部署阿里云_python部署到阿里云
  8. ES6--阮一峰版笔记
  9. Photoshop:PS如何实现放大图片不模糊
  10. canal 记录 ROWDATA TRANSACTIONBEGIN
  11. 最近抖音火爆特效蚂蚁呀嘿制作教程。
  12. 微软翻译离线简体中文服务器,第一次使用微软翻译应用只有英语离线语言包
  13. shell语言简单学习
  14. vs2015c语言内嵌汇编,C#中内嵌资源的读取
  15. Web 2.0概念地图-from Tim Oreilly
  16. 南京大学网络教育计算机第二次作业,南京大学网络学院计算机基础第二次作业...
  17. 分享点22年计算机考研经验(反面)
  18. idea 分支管理插件_git flow 分支管理idea 具体操做
  19. 人脸检测算法代码python_Python有多强大!20行代码实现人脸检测与识别
  20. 【vivado IP核】第4篇:ILA使用介绍

热门文章

  1. spring发展历程
  2. URL编码 - Java加密与安全
  3. 制作bpmn html,BPMN 2.0规范详解
  4. linux安装python3教程_linux下安装python3和对应的pip环境教程详解
  5. iOS相关,过年回来电脑上的证书都失效了
  6. Active Directory 定义了五种操作主机角色
  7. 以持续集成工具实现DevOps之禅
  8. [转]SSH反向连接及Autossh
  9. linux 高级命令
  10. java服务器端编程