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:機器之心 |