Mask R-CNN源代碼終於來了,還有它背後的物體檢測平台Detectron

夏乙 編譯整理

量子位 出品 | 公眾號 QbitAI


「等代碼吧。」

從Mask R-CNN論文亮相至今的10個月里,關於它的討論幾乎都會以這句話收尾。

現在,官方版開源代碼終於來了。同時發布的,是這項研究背後的一個基礎平台:Detectron

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=/path/to/clone/detectrongit 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開源代碼:

facebookresearch/Detectrongithub.com圖標

相關物體檢測論文:

  • Mask R-CNN:arxiv.org/abs/1703.0687
  • RetinaNet:arxiv.org/abs/1708.0200
  • Faster R-CNN和RPN:arxiv.org/abs/1506.0149
  • Fast R-CNN:arxiv.org/abs/1504.0808
  • R-FCN:arxiv.org/abs/1605.0640

性能基準和Model ZOO:github.com/facebookrese

另外,你們可能還想去RBG大神的FB帖子底下表達一波感謝(以及質問開源代碼為何拖了這麼久):

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

Have fun~

歡迎大家關注我們的專欄:量子位 - 知乎專欄

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

量子位 QbitAI · 頭條號簽約作者

?"?" ? 追蹤AI技術和產品新動態


推薦閱讀:

【小林的OpenCV基礎課 番外】Spyder下配置OpenCV
【博客存檔】TensorFlow之深入理解VGGResidual Network
YOLO:3 步實時目標檢測安裝運行教程

TAG:MaskR-CNN | Facebook | 计算机视觉 |