Mask R-CNN原始碼終於來了,還有它背後的物體檢測平臺

2020-12-04 量子位

夏乙 編譯整理量子位 出品 |

「等代碼吧。」

從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:

# 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.pyFacebook還貼心地寫了份上手教程,教你用預訓練的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-CNNhttps://arxiv.org/abs/1703.06870

RetinaNethttps://arxiv.org/abs/1708.02002

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

Fast R-CNNhttps://arxiv.org/abs/1504.08083

R-FCNhttps://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/105261

Have fun~

作者系網易新聞·網易號「各有態度」籤約作者

加入社群

量子位AI社群13群開始招募啦,歡迎對AI感興趣的同學,加小助手入群;

此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。

進群請加小助手,並務必備註相應群的關鍵詞~通過審核後我們將邀請進群。(專業群審核較嚴,敬請諒解)

誠摯招聘

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

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

'' 追蹤AI技術和產品新動態

相關焦點

  • .| 深度學習理論與實戰:提高篇(14)——​Mask R-CNN代碼簡介
    > 檢測結果r包括rois(RoI)、masks(對應RoI的每個像素是否屬於目標物體)、scores(得分)和class_ids(類別)。 下圖是運行的效果,我們可以看到它檢測出來4個目標物體,並且精確到像素級的分割處理物體和背景。
  • 在多目標識別方面,maskr-cnn已經取得了一些進展
    maskr-cnn是業界首款實用的全卷積神經網絡模型,為計算機視覺中的多目標識別與自動對焦,開創性的成為計算機視覺發展的新方向。無論是基於計算機視覺的自動對焦系統、模式識別系統,還是圖像識別,maskr-cnn都是有標誌性意義的。它強調平滑準確的計算輸入、檢測框和定位點,訓練過程與特徵提取過程採用多級感受野融合技術進行自動優化提高目標解析度及精度,以及做出精度更高的語義推理判斷。
  • 潮科技行業入門指南 | 深度學習理論與實戰:提高篇(14)——Mask R...
    class_names, r['scores'])檢測結果r包括rois(RoI)、masks(對應RoI的每個像素是否屬於目標物體)、scores(得分)和class_ids(類別)。下圖是運行的效果,我們可以看到它檢測出來4個目標物體,並且精確到像素級的分割處理物體和背景。
  • FAIR最新視覺論文集錦:FPN,RetinaNet,Mask 和 Mask-X RCNN(含代碼...
    FPN, RetinaNet,,Mask 和 Mask-X RCNN   翻譯 | 李石羽 林立宏 整理 | 凡江   這篇文章會從 FAIR 在基本模塊上的創新開始談到CNN,再到one-shot 物體檢測。之後會講實例分割的創新。最後聊聊依靠弱半監督模型來擴展實例分割。
  • 經典目標檢測方法Faster R-CNN和Mask R-CNN|基於PaddlePaddle深度...
    機器視覺領域的核心問題之一就是目標檢測 (object detection),它的任務是找出圖像當中所有感興趣的目標 (物體),確定其位置和大小。作為經典的目標檢測框架 Faster R-CNN,雖然是 2015 年的論文,但是它至今仍然是許多目標檢測算法的基礎,這在飛速發展的深度學習領域十分難得。
  • Mask R-CNN官方實現「又」來了!基於PyTorch,訓練速度是原來2倍
    曉查 發自 凹非寺量子位 報導 | 公眾號 QbitAI來自官方的Mask R-CNN實現終於「又」來了!PyTorch官方Twitter今天公布了一個名為Mask R-CNN Benchmark的項目。10個月前Facebook曾發布過名叫Detecron的項目,也是一款圖像分割與識別平臺,其中也包含Mask R-CNN。
  • 資源丨用PyTorch實現Mask R-CNN
    10個月後,FAIR官方公布了原始碼,以及基於Caffe 2的開源物體檢測平臺Detectron。但是,再好的「黑科技」也有人吐槽啊,比如,MIT的周博磊博士就曾經在知乎爆料,FAIR的實習生們對不常使用的Caffe 2一直叫苦不迭;還有人翹首以盼官方PyTorch版本;還有人想起TensorFlow成熟的可視化工具和文檔,看著Caffe 2就開始思考人生……「Caffe 2,從安裝到放棄……」還好最近,量子位發現有人做出了Mask
  • 先理解Mask R-CNN的工作原理,然後構建顏色填充器應用
    在訓練過程中,我們將真實的掩碼縮小為 28x28 來計算損失函數,在推斷過程中,我們將預測的掩碼放大為 ROI 邊框的尺寸以給出最終的掩碼結果,每個目標有一個掩碼。代碼提示:掩碼分支網絡在 build_fpn_mask_graph() 中。
  • 輕鬆學Pytorch –Mask-RCNN圖像實例分割
    Pytorch中使用Mask-RCNN實現實例分割,是基於torchvision的預訓練模型庫,首先需要下載預訓練模型,並檢查是否可以支持GPU推理,相關的代碼如下:model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)model.eval
  • 從R-CNN到YOLO,一文帶你了解目標檢測模型(附論文下載)
    大數據文摘作品編譯:Yanruo、小魚這是一份詳細介紹了目標檢測的相關經典論文、學習筆記、和代碼示例的清單,想要入坑目標檢測的同學可以收藏了!在大數據文摘後臺回復「目標檢測」可打包下載全部論文~R-CNNR-CNN是2014年出現的。
  • Facebook 發布 Detectron2:基於 PyTorch 的新一代目標檢測工具
    雷鋒網 AI 開發者按:Detectron 是 FAIR 在 2018 年初公開的目標檢測平臺,包含了大量業內最具代表性的目標檢測、圖像分割、關鍵點檢測算法,該框架主要基於 python 和 caffe2 實現,開源項目已獲得了超 2.2w 的星標數。
  • 卷積神經網絡 物體檢測 Faster-RCNN
    繼204年rcnn,2015年SPPnet、fast rcnn後,2016年,hekaiming和rbg合作提出了faster rcnn(一作是renshaoqing),以解決region proposal的耗時問題;
  • OpenMMLab 第二版發布:吸引業界「目光」的史上最完整的目標檢測...
    這個工具箱由 MMDet 團隊主導開發,該團隊曾打破了 2018 年 COCO 挑戰賽的檢測記錄並獲得冠軍。此後,MMDetection 逐漸發展成為一個統一的平臺,涵蓋了許多主流檢測方法和現代模塊。它不僅包括訓練和推理代碼,而且還為 200 多個網絡模型提供了權重參數。我們相信這個工具箱是迄今為止最完整的檢測工具箱。本文介紹了該工具箱的各種特點。
  • 卷積神經網絡 物體檢測 FPN
    2017年,kaiming和rbg再次合作(一作Tsung-Yi Lin),提出了FPN解決小物體檢測的問題FPN(feature pyramid network)從rcnn到fater rcnn,物體的分類都是在最後conv層的feature map上做的,而此時feature map每個點對應的是原圖的一個區域,如果我們要檢測的物體比較小,很容易漏檢;所謂低層的特徵淺但是位置精細,高層的特徵深但是位置粗糙,因此如何加入多尺度特徵是本篇要解決的問題,如下是幾種方案:(a)通過多尺度圖片分別獲取多尺度特徵
  • 視覺工具包torchvision重大更新:支持分割模型、檢測模型
    終於來到torchvision 0.3了。這次,工具包裡增加了許多新模型:做語義分割的,做目標檢測的,做實例分割的……也增加了許多數據集,比如ImageNet,CelebA,Caltech 101等等等等。另外,torchvision還有了不少視覺專用的C++/Cuda算子。消息一出,小夥伴們紛紛奔走相告。
  • ICIP 2019 積水容器檢測第一名比賽心得
    首先這個比賽就是一個檢測的比賽,然後它最後只要求在小物體上做評估,小物體的標準遵守COCO,是小於1024pixels的物體。代碼這邊我用了mmdetection。它所謂的積水容器就是瓶瓶罐罐,輪胎,塑膠袋什麼的。一開始是想只訓練小物體的,發現不行,然後就試著拿所以數據跑了一個帶fpn的基於resnet101的faster rcnn,後來發現效果不如resnet50好。
  • 【OpenCV】Meanshift、Camshift物體跟蹤
    >需要注意的是,這裡除了mask以外,其餘的幾個參數都要加上[],如下所示:hist=cv2.calcHist([img],[0],mask,[181],[0,180]) 這個時候我們還需要使用一種歸一化的方法來對彩色直方圖中的數量值進行規範化。
  • 詳解目標檢測Faster R-CNN
    即,數學地表述,如果圖片尺寸 w×h,特徵圖的尺寸則是 w/r×h/r. 其中,r 是下採樣率(subsampling ratio). 如果在卷積特徵圖空間位置定義 anchor,則最終的圖片會是由 r 像素劃分的 anchors 集. 在 VGG 中,r=16.
  • 深度| 像玩樂高一樣拆解Faster R-CNN:詳解目標檢測的實現過程
    Luminoth 實現:https://github.com/tryolabs/luminoth/tree/master/luminoth/models/fasterrcnn 在閱讀本文之前,若想了解 R-CNN 網絡家族的發展,可以參看機器之心的文章: 深度