Detectron是Facebook的物体检测平台,今天宣布开源,它基于Caffe2,用Python写成,这次开放的代码中就包含了Mask R-CNN的实现。

除此之外,Detectron还包含了ICCV 2017最佳学生论文RetinaNet,Ross Girshick(RBG)此前的研究Faster R-CNN和RPN、Fast R-CNN、以及R-FCN的实现。

Detectron的基干(backbone)网络架构包括ResNeXt{50,101,152}、ResNet{50,101,152}、FPN和VGG16。

同时,Facebook还发布了70多种ImageNet-1k预训练模型的性能基准,包括用用1、2块GPU时,上述各种基干架构和检测算法相结合做区域建议、遮罩检测以及人体关键点检测的训练时间、推理时间等。

要使用Detectron,你需要先配置英伟达GPU(是的,它还不支持CPU)、Linux系统和Python2,还要安装Caffe2和COCO API。然后,三步装上Detectron:

Clone Detectron:

# DETECTRON=/path/to/clone/detectron
git clone https://github.com/facebookresearch/detectron $DETECTRON

设置Python模块:

cd $DETECTRON/lib && make

检查Detectron的测试通过:

python2 $DETECTRON/tests/test_spatial_narrow_as_op.py

这样,就足够用预训练模型做推理了。

如果要用Detectron来训练自己的检测模型,就需要先确保能通过符号链接lib/datasets/data找到数据集,然后用CMake创建定制的运算符库:

cd $DETECTRON/lib && make ops

并检查这些运算符的测试通过:

python2 $DETECTRON/tests/test_zero_even_op.py

Facebook还贴心地写了份上手教程,教你用预训练的Mask R-CNN来做物体检测。

如果要在本地图像上运行,只需要使用infer_simple.py工具,运行:

python2 tools/infer_simple.py \
   --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
   --output-dir /tmp/detectron-visualizations \
   --image-ext jpg \
   --wts https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl \
   demo

就能得到如下图所示的输出。

如果要在COCO数据集上做推理,需要运行:

python2 tools/test_net.py \
   --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
   TEST.WEIGHTS https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl \
   NUM_GPUS 1

上面这个例子,用了端到端预训练的Mask R-CNN,在一块GPU上运行。如果要使用多个GPU,需要在第二行之后添加 —multi-gpu-testing \ 并更改最后的NUM_GPUS数量。

截至量子位发稿,Detectron在GitHub上放出7小时,已经收获738颗星标、101次Fork。

RBG在Facebook上发帖介绍说,这个项目2016年7月启动,想要基于Caffe 2构建一个快速、灵活的物体检测系统,至今已经一年半的时间。Detectron系统本来是Facebook内部使用的,我们前面提到的Mask R-CNN和RetinaNet背后,都由Detectron提供支持。

除了RBG之外,Ilija Radosavovic、Georgia Gkioxari、Piotr Dollar和何恺明也参与了Detectron项目。

在Facebook内部,Detectron不仅用于研究,还用来为增强现实、商业诚信等方面的应用训练定制化的模型。这些模型训练完成后可以部署在云端或者移动设备上,由Caffe2运行时提供支持。

RBG说,Facebook将Detectron平台开源出来,是想要加速世界各地实验室的研究,推动物体检测的进展。

Now go forth and create algorithms to detect all of the things!

想用Detectron搞物体检测算法,你可能要用到下面这些链接:

Detectron开源代码:
https://github.com/facebookresearch/Detectron

相关物体检测论文:

Mask R-CNN
https://arxiv.org/abs/1703.06870

RetinaNet
https://arxiv.org/abs/1708.02002

Faster R-CNN和RPN
https://arxiv.org/abs/1506.01497

Fast R-CNN
https://arxiv.org/abs/1504.08083

R-FCN
https://arxiv.org/abs/1605.06409

性能基准和Model ZOO:
https://github.com/facebookresearch/Detectron/blob/master/MODEL_ZOO.md

另外,你们可能还想去RBG大神的FB帖子底下表达一波感谢(以及质问开源代码为何拖了这么久):

https://www.facebook.com/ross.girshick/posts/10159910213745261

Mask R-CNN详解和安装的更多相关文章

  1. 深度学习之卷积神经网络(CNN)详解与代码实现(一)

    卷积神经网络(CNN)详解与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10430073.html 目 ...

  2. CNN详解

    CNN详解 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7450413.html 前言 这篇博客主要就是卷积神经网络(CNN) ...

  3. 详解Linux安装GCC

    为你详解Linux安装GCC方法 2009-12-11 14:05 佚名 博客园 字号:T | T 现在很多程序员都应用GCC,怎样才能更好的应用GCC.本文以在Redhat Linux安装GCC4. ...

  4. 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂安装过程详解及安装失败解决方法

    因Excel催化剂用了VSTO的开发技术,并且为了最好的用户体验,用了Clickonce的布署方式(无需人工干预自动更新,让用户使用如浏览器访问网站一般,永远是最新的内容和功能).对安装过程有一定的难 ...

  5. Windows系统Git安装教程(详解Git安装过程)

    Windows系统Git安装教程(详解Git安装过程)   今天更换电脑系统,需要重新安装Git,正好做个记录,希望对第一次使用的博友能有所帮助! 获取Git安装程序   到Git官网下载,网站地址: ...

  6. 【转载】 深度学习之卷积神经网络(CNN)详解与代码实现(一)

    原文地址: https://www.cnblogs.com/further-further-further/p/10430073.html ------------------------------ ...

  7. 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

    ——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...

  8. MVC图片上传详解 IIS (安装SSL证书后) 实现 HTTP 自动跳转到 HTTPS C#中Enum用法小结 表达式目录树 “村长”教你测试用例 引用provinces.js的三级联动

    MVC图片上传详解   MVC图片上传--控制器方法 新建一个控制器命名为File,定义一个Img方法 [HttpPost]public ActionResult Img(HttpPostedFile ...

  9. 深度学习基础(CNN详解以及训练过程1)

    深度学习是一个框架,包含多个重要算法: Convolutional Neural Networks(CNN)卷积神经网络 AutoEncoder自动编码器 Sparse Coding稀疏编码 Rest ...

  10. 详解Codis安装与部署

    Codis github上的介绍安装,里面很全,而且也有中/英文的,只不过按照github的步骤安装,会有一些坑,所以有了这么一篇文章. 在上一篇文章<Redis实用监控工具一览>中,介绍 ...

随机推荐

  1. (面试)Statement和PrepareStatement有什么区别

    (1)Statement用于执行静态sql语句,在执行时,必须指定一个事先准备好的sql语句.PrepareStatement是预编译的sql语句对象,sql语句被预编译并保存在对象中.被封装的sql ...

  2. [转]iptables 命令介绍

    iptables防火墙可以用于创建过滤(filter)与NAT规则.所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙.如果你是第一次 ...

  3. spring中InitializingBean接口使用理解(转)

    InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法. 测试程序如下: imp ...

  4. Win8.1开机自启动程序

    动机: 开机自启动goagent与锐捷 问题: goagent没有自启动选项;锐捷开启"登录后启动"却一直没有启动 解决方案: 使用计划任务启动goagent+彻底关闭UAC使锐捷 ...

  5. get the code of function in matlab

    >> edit <function>>> edit perform

  6. haproxy 日志配置

    haproxy日志配置 haproxy在默认情况不会记录日志,除了在haproxy.conf中的global段指定日志的输出外,还需要配置系统日志的配置文件.下面以centos6.4为例,haprox ...

  7. 设计模式-观察者模式(Observer Pattern)

    观察者模式(Observer Pattern):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己. 观察者 ...

  8. 腾讯云服务器 - 配置JDK环境以及Tomcat+nginx服务器

    安装完ngxin以及fastdfs后,那么jdk和tomcat是肯定要装的,本篇很简单,实在没啥好说的,都是基础,略微带一下,如果是大牛路过可以看看吐槽一下 云服务器上初识环境如果没有选择附带其他软件 ...

  9. 浅析C#中的托付

    托付是寻址方法的.NET版本号.在C++中.函数指针仅仅只是是一个指向内存位置的指针,它不是类型安全的.而.NET托付全然不同,托付是安全类型的类,它定义了返回类型和參数的类型. 当把方法传递给其它方 ...

  10. Project Euler:Problem 32 Pandigital products

    We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly o ...