Mask R-CNN用於目標檢測和分割代碼實現


Mask R-CNN用於目標檢測和分割代碼實現

Mask R-CNN for object detection and instance segmentation on Keras and TensorFlow

代碼鏈接:https://github.com/matterport/Mask_RCNN

這是基於Python 3,Keras和TensorFlow 的Mask R-CNN的實現。該模型為圖像中對象的每個實例生成邊界框和分割masks。基於功能金字塔網絡Feature Pyramid Network(FPN)和ResNet101主干網。

該存儲庫包括:

  • 基於FPN和ResNet101構建的Mask R-CNN的源代碼。
  • MS COCO的訓練代碼
  • MS COCO的預訓練權重
  • Jupyter說明文件電腦可在每個步驟可視化檢測管線
  • 用於多GPU訓練的Parallel Model類
  • 評估MS COCO指標(AP)
  • 自主數據集訓練示例

該代碼已記錄並設計為易於擴展。如果在研究中使用,請考慮引用該存儲庫(下面的bibtex)。如果從事3D視覺工作,可能會發現最近發布的Matterport3D數據集也很有用。該數據集是由客戶捕獲的3D重構空間創建的,這些客戶同意將其公開提供給學術用途。可以在此處看到更多示例。

開始啟動

  • demo.ipynb是最簡單的啟動方法。顯示了一個示例,該示例使用在MS COCO上進行預訓練的模型來分割自己的圖像中的對象。包括在任意圖像上運行對象檢測和實例分割的代碼。
  • train_shapes.ipynb顯示了如何在自己的數據集上訓練Mask R-CNN。本說明文件介紹了玩具數據集(形狀),以演示對新數據集的訓練。
  • model.pyutils.pyconfig.py):這些文件包含主要Mask RCNN實現。
  • inspect_data.ipynb。該說明文件可視化了准備訓練數據的不同預處理步驟。
  • inspect_model.ipynb本說明文件深入介紹了檢測和分割對象所執行的步驟。提供了管道中每個步驟的可視化。
  • inspect_weights.ipynb 此說明文件檢查經過訓練的模型的權重,並查找異常和奇數模式。

逐步檢測

為了幫助調試和理解模型,共有3個說明文件(inspect_data.ipynbinspect_model.ipynb, inspect_weights.ipynb)提供了很多可視化效果,並允許逐步運行模型以檢查每個點的輸出。這里有一些例子:

1.錨點排序和過濾

可視化第一階段區域提議網絡的每個步驟,並顯示正錨和負錨以及錨框的細化。 

2.邊界框優化

這是最終檢測框(虛線)的示例,在第二階段對其進行了改進(實線)。 

3.遮罩生成

生成的masks示例。然后將縮放並放置在正確位置的圖像上。

4,分層激活

通常,檢查不同層的激活以查找故障跡象(全零或隨機噪聲)通常很有用。

5.重量直方圖

另一個有用的調試工具是檢查重量直方圖。這些都包含在inspect_weights.ipynb說明文件中。

6.登錄到TensorBoard

TensorBoard是另一個出色的調試和可視化工具。該模型配置為記錄損失並在每個時期結束時節省權重。

7.將不同的部分組合成最終結果

MS COCO訓練

正在為MS COCO提供預訓練的權重,以使其易於啟動。可以將這些權重用作在網絡上訓練自己的變體的起點。訓練和評估代碼在中samples/coco/coco.py。可以在Jupyter說明文件中導入此模塊(有關示例,請參閱提供的說明文件),也可以直接從命令行運行,如下所示:

# Train a new model starting from pre-trained COCO weights

python3 samples/coco/coco.py train --dataset=/path/to/coco/ --model=coco

 

# Train a new model starting from ImageNet weights

python3 samples/coco/coco.py train --dataset=/path/to/coco/ --model=imagenet

 

# Continue training a model that you had trained earlier

python3 samples/coco/coco.py train --dataset=/path/to/coco/ --model=/path/to/weights.h5

 

# Continue training the last model you trained. This will find

# the last trained weights in the model directory.

python3 samples/coco/coco.py train --dataset=/path/to/coco/ --model=last

還可以使用以下命令運行COCO評估代碼:

# Run COCO evaluation on the last trained model

python3 samples/coco/coco.py evaluate --dataset=/path/to/coco/ --model=last

訓練時間表,學習率和其參數應在中設置samples/coco/coco.py。

訓練自己的數據集

首先閱讀有關氣球顏色飛濺示例的博客文章。涵蓋了從注釋圖像到訓練再到在示例應用程序中使用結果的過程。

總之,要在自己的數據集上訓練模型,需要擴展兩個類:

Config 此類包含默認配置。對其進行子類化,然后修改需要更改的屬性。

Dataset 此類提供了使用任何數據集的一致方式。允許使用新的數據集進行訓練,而無需更改模型的代碼。還支持同時加載多個數據集,如果要檢測的對象在一個數據集中並非全部可用,這將很有用。

見例子samples/shapes/train_shapes.ipynb,samples/coco/coco.py,samples/balloon/balloon.py,和samples/nucleus/nucleus.py。

與官方文件的差異

此實現大部分遵循Mask RCNN論文,但是在少數情況下,偏向於代碼簡單和通用化。這些是知道的一些差異。如果遇到其差異,請告訴。

  • 圖像調整大小:為了支持每批訓練多幅圖像,將所有圖像調整為相同大小。例如,在MS COCO上為1024x1024px。保留寬高比,因此,如果圖像不是正方形,則將其填充為零。在本文中,進行了調整大小,以使最小的一面為800像素,最大的一面為1000像素。
  • 邊界框:某些數據集提供邊界框,而某些數據集僅提供masks。為了支持對多個數據集的訓練,選擇忽略數據集隨附的邊界框,而是動態生成。選擇封裝masks所有像素的最小框作為邊界框。這簡化了實現,並且還使圖像增強很容易應用,否則圖像增強將很難應用於邊界框,例如圖像旋轉。

為了驗證這種方法,將計算出的邊界框與COCO數據集提供的邊界框進行了比較。發現〜2%的邊界框相差1px或更多,〜0.05%的邊界相差5px或更多,只有0.01%的相差10px或更多。

  • 學習率:本文使用的學習率是0.02,但發現該值太高,通常會導致權重爆炸,尤其是在使用小批量時。這可能與Caffe和TensorFlow計算梯度之間的差異(批次與GPU之間的總和與均值)之間的差異有關。或者,也許官方模型使用漸變修剪來避免此問題。確實使用了梯度裁剪,但不要設置得太過激。發現,較小的學習率無論如何都會收斂得更快,因此繼續這樣做。

引文

使用以下bibtex引用此存儲庫:

@misc{matterport_maskrcnn_2017,

  title={Mask R-CNN for object detection and instance segmentation on Keras and TensorFlow},

  author={Waleed Abdulla},

  year={2017},

  publisher={Github},

  journal={GitHub repository},

  howpublished={\url{https://github.com/matterport/Mask_RCNN}},

}

貢獻

歡迎對該存儲庫做出貢獻。可以做出貢獻的示例:

  • 速度改進。就像在TensorFlow或Cython中重寫一些Python代碼一樣。
  • 訓練其數據集。
  • 精度提高。
  • 可視化和示例。

也可以加入團隊,並幫助建立更多像這樣的項目。

要求

列出了Python 3.4,TensorFlow 1.3,Keras 2.0.8和其常見軟件包requirements.txt。

MS COCO要求:

要對MS COCO進行訓練或測試,還需要:

如果使用Docker,則代碼已通過驗證可在此Docker容器上工作 。

安裝

  1. copy此存儲庫
  2. 安裝依賴

pip3 install -r requirements.txt

  1. 從存儲庫根目錄運行安裝程序

python3 setup.py安裝

  1. 發布頁面下載預訓練的COCO權重(mask_rcnn_coco.h5)。
  2. (可選)pycocotools從這些存儲庫之一中進行MS COCO安裝的訓練或測試。是原始pycocotools的分支,具有針對Python3和Windows的修復(官方倉庫似乎不再處於活動狀態)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM