1. 程式人生 > >Detectron研讀和實踐一:detectron框架概覽

Detectron研讀和實踐一:detectron框架概覽

引言

Detectron是Facebook AI研究院(FAIR)於2018年初公開的目前為止業內最佳水平的目標檢測平臺。據介紹,該專案自 2016 年 7 月啟動,構建於 Caffe2 之上,目前支援大量機器學習演算法,其中包括 Mask R-CNN(何愷明的研究,ICCV 2017 最佳論文)和 Focal Loss for Dense Object Detection,(ICCV 2017 最佳學生論文)。Facebook 稱,該工具包已被應用與公司內部很多團隊應用於各類應用中,一旦訓練完成,這些計算機視覺模型可被部署在雲端或移動裝置上。
該工具的開源對於研究目標檢測的朋友來說有極大的幫助,可以幫助他們利用最先進的深度學習目標檢測技術快速構建自己的模型和應用,也可在其上開展進一步的研究,無論從工程上還是從學術研究上都有較大的參考價值。由於本人目前的課題方向也是目標檢測,因此準備好好研讀一番Detectron的原始碼,記錄下自己的一些理解和體會,也希望能與志同道合的朋友一起交流探討。

Detectron的安裝和使用

關於Detectron的具體安裝和使用可以參考該專案的github,英語不好的朋友也可以直接看Caffe2—Detectron初步使用這篇部落格,基本把該專案github上的相關說明和介紹翻譯過來了。

各模組簡要介紹

Detectron 框架包含 config,demo,lib,tests 和 tools 等資料夾,下面對各資料夾進行簡要地介紹。

1.config 包含著各個模型的訓練和測試引數。其中有2017年12月公佈的眾多baselines的配置引數以及Using detectron教程中提到的多種GPU方案訓練以ResNet-50-FPN為backbone的Faster R-CNN的配置引數。

2.demo主要存了一些用於detectron演示的測試圖片和輸出結果。

3.lib 是 detectron 的核心資料夾,又包含若干重要的子資料夾,例如 core,datasets,modelings,roi_data,ops,utils等。

  • core:主要包含專案預設的配置(config.py),生成rpn proposal的相關函式(rpn_generator.py)以及推理測試相關的一些檔案(test.py等)
  • datasets:主要涉及一些與資料集相關的檔案。其中data子資料夾用於儲存訓練資料集,支援訓練的資料集有COCO、PASCAL_VOC和cityspaces。注意label檔案的格式是json格式的。VOCdevkit-matlab子資料夾主要包含一些與資料集評價有關的檔案。
  • modeling:這又是lib中核心的模組,包含很多優秀的目標檢測網路的實現,如Faster R-CNN,Mask R-CNN,FPN,R-FCN,Retinanet等,且都儘可能被組織成了子模組的形式,方便進行使用。
  • ops:主要是定義了一些與生成和分配proposal相關的operators,用於輔助modeling.detector模組中的相關函式(包括GenerateProposals(),GenerateProposalLabels()和CollectAndDistributeFpnRpnProposals())。
  • roi_data:涉及各種網路minibatches的構建,載入和通用幫助函式。
  • utils:包含學習率等其它一些非核心函式。

4.tests包含對一些操作如資料載入、bbox變換等的測試檔案。

5.tools包含使用detectron進行模型訓練、測試、視覺化結果和簡單推理等操作的工具函式。