zoukankan      html  css  js  c++  java
  • Mask R-CNN详解和安装

    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

  • 相关阅读:
    ThinkPHP3.1快速入门(12)自动验证
    ThinkPHP CURD方法盘点:page方法
    ThinkPHP CURD方法盘点:table方法
    ThinkPHP CURD方法盘点:order方法
    ThinkPHP CURD方法盘点:data方法
    openssl安装问题导致nginx添加ssl模块失败
    rsync介绍
    基于CRF序列标注的中文依存句法分析器的Java实现
    千万级巨型汉语词库分享
    几个开源分词系统所使用标注集的来源
  • 原文地址:https://www.cnblogs.com/Anita9002/p/8335710.html
Copyright © 2011-2022 走看看