Detectron2 與其他庫的兼容性 | 十三

作者|facebookresearch 編譯|Flin 來源|Github

與其他庫的兼容性

與Detectron的兼容性(和maskrcnn-benchmark)

Detectron2解決了Detectron中遺留的一些遺留問題。結果,它們的模型不兼容:在兩個代碼庫中以相同的模型權重運行推理將產生不同的結果。

關於推斷的主要區別是:

  • 現在, 當 width = x2-x1 和 height = y2-y1 時,更自然地計算帶有角(x1,y1)和(x2,y2)的box的高度和寬度。在Detectron中,高度和寬度都添加了"+1"。
  • 請注意,Caffe2中的相關操作已採用了這種約定的更改 (https://github.com/pytorch/pytorch/pull/20550) , 並帶有額外的選項。因此,仍然有可能在Caffe2中使用Detectron2訓練的模型進行推理。
  • 分類層具有不同的分類標籤順序。 這涉及形狀爲(...,num_categories + 1,...)的任何可訓練參數。在Detectron2中,整數標籤[0,K-1]對應於K = num_categories個對象類別,標籤"K"對應於特殊的"背景"類別。在Detectron中,標籤"0"表示背景,標籤[1,K]對應於K個類別。

  • ROIAlign的實現方式有所不同。新的實現在Caffe2中可用。 Caffe2:(https://github.com/pytorch/pytorch/pull/23706).

    1. 與Detectron相比,所有ROI都移動了半個像素,以創建更好的圖像特徵圖對齊方式。有關詳細信息,請參見layers/roi_align.py。要啓用舊的行爲,請使用ROIAlign(aligned=False)POOLER_TYPE=ROIAlign代替 ROIAlignV2(默認值)。

    2. OI的最小大小不需要爲1。這將導致輸出的微小差異,但應忽略不計。

  • 掩碼推斷功能不同。

    在Detectron2中,"paste_mask"函數是不同的,應該比Detectron中的準確性更高。此更改可以使COCO上的遮罩AP絕對值提高約0.5%。

訓練上也有一些其他差異,但它們不會影響模型級別的兼容性。主要的是:

  • 我們通過RPN.POST_NMS_TOPK_TRAIN按圖像而不是按批處理修復了Detectron中的錯誤。該修復程序可能會導致某些型號的精度下降(例如,關鍵點檢測),並且需要進行一些參數調整才能匹配Detectron結果。 bug:(https://github.com/facebookresearch/Detectron/issues/459)
  • 簡單起見,我們將邊界框迴歸中的默認損失更改爲L1損失,而不是平滑的L1損失。我們已經觀察到,這往往會略微降低box AP50,同時針對較高的重疊閾值提高box AP(並導致box AP的總體改善)。
  • 我們將COCO邊界框和分段註釋中的座標解釋爲[0, width][0, height]中的座標。COCO關鍵點註釋中的座標被解釋爲範圍爲[0, width - 1][0, width - 1]的像素索引。請注意,這會影響翻轉增強的實現方式。

稍後,我們將在上述有關像素,座標和"+1"的問題背後分享更多細節和原理。

與Caffe2的兼容性

如上所述,儘管與Detectron不兼容,但相關操作已在Caffe2中實現。因此,可以在Caffe2中轉換使用detectron2訓練的模型。請參閱本教程的部署。

與TensorFlow的兼容性

TensorFlow中提供了大多數操作,儘管需要解決在調整大小/ ROIAlign /填充方面的一些微小差異。tensorpack FasterRCNN提供了一個有效的轉換腳本, 以在TensorFlow中運行標準的detectron2模型。

原文鏈接:https://detectron2.readthedocs.io/notes/compatibility.html

歡迎關注磐創AI博客站: http://panchuang.net/

sklearn機器學習中文官方文檔: http://sklearn123.com/

歡迎關注磐創博客資源彙總站: http://docs.panchuang.net/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章