從論文到測試:Facebook Detectron開源項目初探
機器之心專欄
作者:陳惠嬋
從 RCNN 到 Faster RCNN,再到最近的 FPN 和獲得 ICCV Best Paper 的 Mask RCNN,深度學習在物體檢測中以絕對優勢從眾多機器學習演算法中脫引而出。大家對 Facebook 的計算機視覺研究項目的開源期盼已久,經過 1 年多的漫長等待,今天 Facebook 終於開源了 Detectron,Detectron 開源項目使用 caffe2 和 python 介面。實現了 10 多篇計算機視覺最新的成果。下面我們簡單介紹一下 Detectron 所實現的論文。並且對 Detectron 進行初次測試,我們會在隨後的博客中更新我們自己測試得到的 Detectron 訓練模型和速度標準。
Fast RCNN、Faster RCNN、RFCN、FPN、RetinaNet
Detectron 實現了物體檢測的標準模型,並且添加了 Feature Pyramid Network 和 RetinaNet 等 state-of-the-art 的物體檢測模型。FPN 是 two-stage 檢測的 state-of-the-art,RetinaNet 是 one-stage 的 best-performing 模型,並且也是 ICCV 的 best student paper。
ResNet,ResNeXt
Detectron 實現了 Residual Network 和 ResNeXt 等基礎的神經網路結構。ResNext 使用 depthwise convolution 的技術大大降低了參數,並且保證了分類結果。
Human-object Interaction Detection
物體檢測可以得到 bounding box 如圖(a),Human-object interaction 通過預測不同的 bounding box 之間的概率密度可以學習不同 bounding box 之間的關係。如圖(c),人和刀之間的關係是切(cut)。
Mask RCNN
Mask RCNN 通過改進 Faster RCNN 可以實現 7 FPS 的 instance segmentation 和關鍵點檢測,並且超過當時的所有方法。Mask RCNN 在 COCO 和 CITYSCAPES 數據集上面取得了好的結果。Mask RCNN 的示意圖如下。
Training Imagenet in one hour
本篇論文發現了 large batch 可以大大的提升分類網路的收斂速度,通過把 batch size 從 256 提升到 8192,將訓練時間從幾周降低到了 1 個小時,大大提升了神將網路的訓練速度。
CVPR 2018 投稿論文:Learning to segment everything
收集 mask rcnn 的標註十分昂貴,在 cityscapes 上面一張圖的標註需要 1 個小時。這篇論文提出了 weight transfer 的辦法來分割所有的物體,免去了收集分割數據的巨大時間和金錢耗費。本篇論文使用 bounding box detection branch 的權重來預測 mask branch 的權重來實現此目的。
Non Local Neural Convolution
Convolution Neural Network 只能夠傳遞鄰域的信息,本篇論文參照 non local means 和 self attention 的方法設計出了 non local convolution,從而能夠捕捉到非鄰域的信息。如下圖,中心點可以捕捉到非鄰域的重要信息。
Detectron 框架初探
要使用 Detectron 框架需要安裝 caffe2,caffe2 的安裝請參照 caffe2 官網。然後參照 INSTALL.md 安裝 Detectron,Detectron 提供了方便的測試和添加 op 功能。添加 op 具體參照 test_zero_even_op.py。
Detectron 框架包含 config,demo,lib,tests 和 tools 等文件夾。Config 包含著各個模型的訓練和測試參數,lib 是 detectron 的核心文件夾,例如 data loader,model builder,operator definition 和 utils(學習率等非核心函數)。
Detectron 安裝
Caffe2 安裝,參照網址 https://caffe2.ai/docs/getting-started.html?platform=ubuntu&configuration=compile
核心命令:
Detectron 安裝,參照 https://github.com/facebookresearch/Detectron/blob/master/INSTALL.md
Detectron 測試
使用 Mask RCNN FPN ResNet 50 進行測試,命令如下:
在 Titan X 上面測試速度:
Detectron 框架訓練
在 COCO 數據集上面使用 FPN ResNet50 進行 Faster RCNN 訓練
使用命令 :
輸出如下:
Memory 佔用如下:
總結
Detecrton 框架給予 caffe2 和 python 介面,caffe2 對 Multi-GPU 和分散式訓練提供了很好的支持,GPU 現存的利用率也大大提升,並且對很多 state-of-the-art 的方法提供了很好的 baseline 實現。相信 Detectron 框架會在未來的 computer vision 領域大放異彩。
安裝小提示 1:
方法: sudo pip install future
安裝小提示 2:
caffe2 安裝之後需要將 caffe2 添加到 PYTHONPATH 和 LD_LIBRARY_PATH 路徑
nano ~/.bashrc
輸入:
本文為機器之心專欄,轉載請聯繫原作者獲得授權。
?------------------------------------------------
※整合全部頂尖目標檢測演算法:FAIR開源Detectron
TAG:機器之心 |