詳細步驟
- 1 資料集的制作
- 1.1 資料標注
- 1.2 生成資料集
- 2 環境的搭建
- 2.1 搭建流程
- 2.2 注意事項(報錯)
- 3 開始訓練
- 4 可視化
- 4.1 修改webcam.py檔案
- 4.2 進行可視化
- 5 參考文章
1 資料集的制作
1.1 資料標注
使用 labelme=4.5.6 版本進行標注,標注檔案指定到保存圖片的路徑下,也就是json檔案和jpg檔案放在同一個檔案夾里

1.2 生成資料集
先手動劃分訓練集和測驗集(包括影像和標注檔案),然后分別整合它們的標注資訊,參考代碼:1_ships_to_coco.py
詳細的操作可以參考我的另一篇博客:mask rcnn 實體分割的資料集制作
2 環境的搭建
2.1 搭建流程
參考GitHub上面的官方檔案:INSTALL.md

一共需要下載(git clone) 4 個檔案夾,分別是
apex
cityscapesScripts
cocoapi
maskrcnn-benchmark
在下載這些檔案夾之前,個人建議先創建一個父目錄,也就是類似下圖中的MASK-RCNN,這樣比較容易操作,!!!特別要注意路徑關系,進入子檔案夾編譯完setup.py檔案后需要把路徑重新指定到原本的父目錄下,也就是下圖中MASK-RCNN的路徑下,INSTALL.md檔案中的cd ..命令就是進行這個操作,這里建議使用 os.chdir 命令來替換 cd 命令
import os
os.chdir('/content/drive/My Drive/MASK-RCNN')
!ls

Google colab 上面不能執行 conda 命令,也就是無法創建 conda 環境等操作,所以直接從 pip install ninja yacs cython matplotlib tqdm opencv-python命令開始執行

在 Google colab 上的pytorch和cuda都已經裝好,下面這一步可以忽略

2.2 注意事項(報錯)

!pip install torch==1.4.0 torchvision==0.5.0- 待定;
- 待定;
- 待定;
- 待定;
- 待定;
3 開始訓練
!!!注意:現在進入了 MASK-RCNN 的目錄下
- 上傳
datasets檔案夾到MASK-RCNN/maskrcnn-benchmark的maskrcnn_benchmark/data/datasets目錄下 (下圖中有兩個datasets是因為我把我的資料集命令為了datasets)


- 更改
maskrcnn-benchmark檔案夾下maskrcnn_benchmark/config/paths_catalog.py檔案,加入自己資料集的影像路徑和標簽檔案的路徑(大概在107行左右),還有后面的get(name)函式里面的也要改動,更改最后一個elif的后面的內容為能區分資料集的名稱;



- 在
maskrcnn-benchmark/configs/get_started目錄下新建一個yaml檔案(這是模型組態檔),沒有get_started目錄就新建一個,下面是樣例,涉及到路徑的都要改,WEIGHT,DATASETS,OUT_DIR 這三個都要根據自己要求改動;
WEIGHT: 需要使用的預訓練權重檔案的路徑
DATDSETS: 需要使用的自己的資料集的訓練集和測驗集
OUT_DIR: 需要保存模型的位置,同時也是測驗結果保存的路徑


MODEL:
META_ARCHITECTURE: "GeneralizedRCNN"
WEIGHT: /content/drive/MyDrive/SEED-MASK/maskrcnn-benchmark/PretrainedModels/R-50.pkl
BACKBONE:
CONV_BODY: "R-50-FPN"
RESNETS:
BACKBONE_OUT_CHANNELS: 256
RPN:
USE_FPN: True
ANCHOR_STRIDE: (4, 8, 16, 32, 64)
ANCHOR_SIZES: (32, 64, 128, 256, 384)
PRE_NMS_TOP_N_TRAIN: 2000
PRE_NMS_TOP_N_TEST: 400
POST_NMS_TOP_N_TEST: 200
FPN_POST_NMS_TOP_N_TEST: 100
ROI_HEADS:
USE_FPN: True
ROI_BOX_HEAD:
POOLER_RESOLUTION: 7
POOLER_SCALES: (0.25, 0.125, 0.0625, 0.03125)
POOLER_SAMPLING_RATIO: 2
FEATURE_EXTRACTOR: "FPN2MLPFeatureExtractor"
PREDICTOR: "FPNPredictor"
NUM_CLASSES: 2 #漏寫
ROI_MASK_HEAD:
POOLER_SCALES: (0.25, 0.125, 0.0625, 0.03125)
FEATURE_EXTRACTOR: "MaskRCNNFPNFeatureExtractor"
PREDICTOR: "MaskRCNNC4Predictor"
POOLER_RESOLUTION: 14
POOLER_SAMPLING_RATIO: 2
RESOLUTION: 28
SHARE_BOX_FEATURE_EXTRACTOR: False
MASK_ON: True
DATASETS:
TRAIN: ('seed_train')
TEST: ('seed_val')
DATALOADER:
SIZE_DIVISIBILITY: 32
SOLVER:
BASE_LR: 0.005
WEIGHT_DECAY: 0.0001
STEPS: (20000,40000)
MAX_ITER: 42500
IMS_PER_BATCH: 1
OUTPUT_DIR: /content/drive/MyDrive/SEED-MASK/maskrcnn-benchmark/results/cx
-
更改
maskrcnn-benchmark/demo檔案夾里面的predictor.py檔案(訓練好像沒用到,測驗時候用到);

-
把在
maskrcnn-benchmark/demo檔案夾里面的webcam.py和predictor.py檔案復制一份到maskrcnn-benchmark目錄下(也就是上一級目錄)

-
再次配置一下環境,也就是編譯setup.py檔案
提示:之前環境配置成功了,第二次只需編譯一次下面提供的整合的代碼即可
#整合代碼:(只需編譯一次)
import os
os.chdir('/content/drive/My Drive/SEED-MASK')
!ls
os.chdir('maskrcnn-benchmark/')
!ls
!pip install ninja yacs cython matplotlib tqdm opencv-python
!pip install torch==1.4.0 torchvision==0.5.0
os.chdir("../")
os.chdir('cityscapesScripts/')
!python setup.py build_ext install
os.chdir('../')
os.chdir('apex/')
!ls
!python setup.py install --cuda_ext --cpp_ext
os.chdir('../')
os.chdir('maskrcnn-benchmark/')
!python3 setup.py build develop

- 開始訓練(
--config-file指定模型的組態檔即可)
!python tools/train_net.py --config-file "configs/get_started/mango_mask_rcnn_R_50_FPN_1x.yaml"
有下圖中第一幅圖效果說明組態檔的路徑沒有問題
有下圖中第二幅圖效果說明預訓練權重檔案和模型組態檔匹配,已經開始訓練
有下圖中第三幅圖效果說明已經訓練完成,自動呼叫最后一個epoch保存的模型進行測驗,輸出測驗結果



- 測驗訓練模型
!python tools/test_net.py --config-file "configs/get_started/mango_mask_rcnn_R_50_FPN_1x.yaml"

4 可視化
4.1 修改webcam.py檔案
a = glob('./seg/v/*.*') 是指定檢測的圖片存放的路徑
os.mkdir('./seg/xu-res')
cv2.imwrite('./seg/xu-res/'+name,composite) 都是指檢測結果保存的路徑,沒有就自動創建

4.2 進行可視化
!python webcam.py --config-file "configs/get_started/mango_mask_rcnn_R_50_FPN_1x.yaml"


總結一下需要預先編譯的py檔案
| 路徑 | 編譯命令 |
|---|---|
| cocoapi/PythonAPI | python setup.py build_ext install |
| cityscapesScripts | python setup.py build_ext install |
| apex | python setup.py install --cuda_ext --cpp_ext |
| maskrcnn-benchmark | python setup.py build develop |
5 參考文章
1 使用Mask RCNN Benchmark訓練自己的資料集
2 facebookresearch/maskrcnn-benchmark 的 issues
歡迎關注:G果的博客,respect !

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/236600.html
標籤:python
