當前位置:
首頁 > 知識 > Facebook開源Mask R-CNN的PyTorch 1.0基準,比mmdetection更快、更省內存

Facebook開源Mask R-CNN的PyTorch 1.0基準,比mmdetection更快、更省內存

選自GitHub

機器之心編輯

參與:劉曉坤

近日,Facebook AI Research 開源了 Faster R-CNN 和 Mask R-CNN 的PyTorch 1.0實現基準:MaskRCNN-Benchmark。相比 Detectron 和 mmdetection,MaskRCNN-Benchmark 的性能相當,並擁有更快的訓練速度和更低的 GPU 內存佔用。

項目地址:https://github.com/facebookresearch/maskrcnn-benchmark

MaskRCNN-Benchmark 目標檢測示例。

Detectron 和 mmdetection

mmdetection 第一個版本中實現了 RPN、Fast R-CNN、Faster R-CNN、Mask R-CNN,近期還計劃放出 RetinaNet 和 Cascade R-CNN。但更重要的是,基於 PyTorch 和基於 Caffe2 的 code 相比,易用性是有代差的。成功安裝 Detectron 的時間,大概可以裝好一打的 mmdetection。

MaskRCNN-Benchmark 項目亮點:

PyTorch 1.0:相當或者超越 Detectron 準確率的 RPN、Faster R-CNN、Mask R-CNN 實現;

非常快:訓練速度是 Detectron 的兩倍,是 mmdection 的 1.3 倍。

節省內存:在訓練過程中使用的 GPU 內存比 mmdetection 少大約 500MB;

使用多 GPU 訓練和推理;

批量化推理:可以在每 GPU 每批量上使用多張圖像進行推理;

支持 CPU 推理:可以在推理時間內於 CPU 上運行。

提供幾乎所有參考 Mask R-CNN 和 Faster R-CNN 配置的預訓練模型,具有 1x 的 schedule。

MaskRCNN-Benchmark Model Zoo 基線模型性能數據

地址:https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/MODEL_ZOO.md

硬體

8 NVIDIA V100 GPUs

軟體:

PyTorch version: 1.0.0a0+dd2c487

CUDA 9.2

CUDNN 7.1

NCCL 2.2.13-1

端到端 Mask R-CNN 和 Faster R-CNN 基線模型

所有的基線模型都使用了和 Detectron 相同的實驗設置,檢測模型權重使用 Caffe2 中的 ImageNet 權重初始化,這和 Detectron 是一樣的。預訓練模型通過下表中的 model id 鏈接獲取。

和 Detectron、mmdetection 的性能對比

訓練速度

下表中的數據單位是秒/迭代,越低越好。(mmdetection 中備註的硬體和 maskrcnn_benchmark 是不同的)

訓練內存(越低越好)

推理準確率(越高越好)

Webcam 和 Jupyter notebook demo

該項目提供了一個簡單的 webcam demo,展示如何使用 maskrcnn_benchmark 進行推理:

安裝

教程地址:https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/INSTALL.md

安裝要求:

PyTorch 1.0 的每日測試版本,安裝說明:https://pytorch.org/get-started/locally/

torchvision

cocoapi

yacs

(可選)OpenCV(用於 webcam demo)

通過幾行代碼進行推理

該項目提供了一個 helper 類來簡化編寫使用預訓練模型進行推理的流程,只要在 demo 文件夾下運行以下代碼:

在 COCO 數據集上執行訓練

為了運行以下示例,你首先需要安裝 maskrcnn_benchmark。你還需要下載 COCO 數據集,推薦按以下方式符號鏈接 COCO 數據集的路徑到 datasets/。我們使用來自 Detectron 的 GitHub 的 minival 和 valminusminival 集合。

你也可以配置你自己的到數據集的路徑。為此,你需要讓 maskrcnn_benchmark/config/paths_catalog.py 指向你的數據集保存的位置。你也可以創建一個新的 paths_catalog.py 文件,其實現了相同的兩個類,並在訓練過程中將它作為一個配置參數 PATHS_CATALOG 傳遞。

單 GPU 訓練

多 GPU 訓練

添加你自己的數據集

該項目添加了對 COCO 類型數據集的支持,為在新數據集上訓練添加支持可以通過以下方法實現:

就這樣。你可以添加額外的欄位到 boxlist,例如 segmentation masks(使用 structures.segmentation_mask.SegmentationMask),或甚至是你自己的實例類型。如果想了解 COCO 數據集實現的完整過程,可以查看:https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/maskrcnn_benchmark/data/datasets/coco.py

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

讓AI學會刨根問底和放飛自我,斯坦福最新問答數據集CoQA
看圖聊天的騷操作,MIT開發精準到單詞的語音-圖像配對系統

TAG:機器之心 |