1. 程式人生 > >maskrcnn標記自己的資料集最全攻略

maskrcnn標記自己的資料集最全攻略

  1. NVIDIA顯示卡驅動+CUDA+CUDNN GPU平臺搭建。 (備註:cuda cudnn的版本一定要對應正確)
  2. 在github https://github.com/matterport/Mask_RCNN上下載maskrcnn原始碼。要求:python3以上,keras, tensorflow深度學習框架,在ubuntu下可以用 sudo pip3 install keras

pip3 install -i https://pypi.doubanio.com/simple/ keras)等命令下載相關python模組。

  1. Maskrcnn的demo是用jupyter寫的 可以用 ipython notebook開啟 Mask_RCNN /samples/demo.ipynb(因為我不會用jupyter,於是把ipython開啟的原始碼複製出來做成了demo.py,我的附件裡面是可以執行起來的demo.py,您可以下載下來直接執行 python3 demo.py)demo.py裡面是一個檢測的例子,是隨機在images裡面選取一張圖片,然後檢測並打上掩碼。
  2. 附件2是maskrcnn的coco預訓練模型,您就不用再去下載了。
  3. 訓練的過程是這樣的:
  1. 開啟samples/balloon/balloon.py
  2. 更改第66行 IMAGES_PER_GPU = 1
  3. 更改第70行 NUM_CLASSES = 1 + 3(num_classes)
  4. 更改第72行 STEPS_PER_EPOCH = 50 #100 (如果GPU效能足夠可忽略)
  5. 更改第90行 新增我們自己的分類

例如:self.add_class("balloon", 1, "object")

      self.add_class("balloon", 2, "lane lines")

        self.add_class("balloon", 3, "land)

  1. 在128行polygons下面插入

names = [r[‘region_attributes’] for r in a[‘regions’]]

NameList = [c[“name”] for c in names]

name_dict = {‘object’:1, ‘lane lines’:2, ‘land’:3}#要和(4)中數字對應

name_id = [name_dict[n] for n in NameList]

  1. 在140行下面新增class_id = name_id
  2. 把標記好的圖片和標記好的json檔案放到Mask_RCNN /datasets/balloon/train裡面。標記好的驗證圖片和json檔案放入Mask_RCNN /datasets/balloon/val裡面。
  3. 執行 python3 balloon.py train --dateset = /home/usr_name/Mask_RCNN/datasets/balloon --weights=coco 可以開始訓練。(coco.h5應放在Mask_RCNN/下)
  4. 訓練好的權重檔案放在logs/以最近的時間戳命名的資料夾下面。
  1. 標註工具我使用的是via工具,在附件三
  1. 開啟via/via.html 點選add files 匯入要標記的圖片。
  2. 點選attributes 輸入name 點選“+”鍵 在type一欄選擇dropdown
  3. 在id裡面新增自己所需要的類別名稱如:“object” “lane lines” “land”
  4. 點選左上角的 圖形—polygon region shape,標記所需要的region,然後點選左下角的toggle annotation editor為該區域選擇id類別名。

  1. 標記完成後,按左上角annotation 選擇export annotation (as json)即可得到json檔案。