Mask_RCNN訓練自己的數據,其中Labelme的使用說明

#2018/07/03 更新

製作好訓練集之後,如何進行訓練?戳這裏:

Mask_RCNN訓練自己的數據

#2018/06/29 更新

這個版本的Mask_rcnn精度和速度都沒有FAIR的detectron好,同一個數據集,detectron要高出至少20%的精度,而且由於框架的特性,detectron速度也要快得多~~要不要了解一下如何把自己的數據轉換爲detectron所需的coco格式?需要的同學點這裏:

https://blog.csdn.net/qq_15969343/article/details/80848175


#2018/06/04 更新

使用官方的權重只檢測特定的類別看這裏:


Mask_RCNN:使用COCO權重進行特定類別預測(只標記出你需要的類別)


#2018/05/22 更新

使用訓練好的Mask_RCNN模型進行預測看這裏:


Mask_RCNN:使用自己訓練好的模型進行預測


#2018/05/04 更新

由於labelme的數據預處理過程還是太繁瑣,現在換成了類似於COCO數據集註釋的方式(JSON文件):


Mask_RCNN訓練自己的數據,製作類似於COCO數據集中所需要的Json註釋

#以下爲原文

該Mask_RCNN版本爲基於:Python3,Keras,TensorFlow,我使用的具體版本爲:

  • Python 3.6.3
  • TensorFlow 1.7
  • Keras 2.1.5
  • PyQt5  5.9.2
  • Labelme 2.8.0

Mask_RCNN來自matterport,地址爲:

點擊打開鏈接

使用的標記工具爲Labelme,地址如下:

點擊打開鏈接

安裝完Labelme之後,直接在CMD窗口輸入labelme,即可打開:


點擊view下面的高級模式,可以控制圖像顯示的大小:


點擊Create_Polygon在圖像上標記需要的東西,並命名:


保存該標註,可以得到一個.json文件,該文件包含了圖像文件本身以及標註的對象框,打開該文件,可以看到其中包含的內容:


如何打開json可以查看我的這篇博客:

https://blog.csdn.net/qq_15969343/article/details/79817354

該json需要轉換爲訓練程序需要的Mask數據,此時在CMD窗口輸入以下指令(以剛纔生成的json示例,你只需要把路徑轉換爲json文件所在的路徑)即可轉換:

labelme_json_to_dataset C:\Users\Administrator\Desktop\8433365521_9252889f9a_z.json

此時可以得到以json文件名而命名的一個文件夾,打開該文件夾,可以看到裏面包含了五個文件:

img.png(原圖);

info.yaml;

label.png;

label_names.txt;

label_viz.png


可以看到本來標記的只有兩類,但是打開標籤可視化文件,可以看到自動加了背景,所以是1+2=3類,打開label_viz.png可見:


但是在訓練的時候肯定是多個數據,不可能一個一個的挨着轉換,所以肯定要批轉換這些json:

linux下,使用如下命令:

str1="json路徑"
str2=".json"
for((i=1;i<圖片數量;i++))
do 
str3=${i}
labelme_json_to_dataset ${str1}${str3}${str2}
done

windows下,使用如下命令:

for /r 路徑 %i in (*.json) do labelme_json_to_dataset %i

而轉換後的label.png是其中非常重要的掩碼文件,打開卻是一片黑,這是什麼情況?出BUG了?


其實,這是因爲labelme將類別的像素值從1開始賦值,比如剛纔的3類分別賦值0,1,2,因爲值都很小,因此看着都是黑的;將圖片使用matlab讀入可以看到如上面所述:


我們可以將這些掩膜的像素值做一個映射,從而可以清楚的看到:


而從上面matlab的截圖,可以清楚看到掩碼標籤爲16位存儲,我們需要將16位轉8位,關於16位轉8位,請關注我的另外一篇博客:

點擊打開鏈接


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