#2018/07/03 更新
製作好訓練集之後,如何進行訓練?戳這裏:
#2018/06/29 更新
這個版本的Mask_rcnn精度和速度都沒有FAIR的detectron好,同一個數據集,detectron要高出至少20%的精度,而且由於框架的特性,detectron速度也要快得多~~要不要了解一下如何把自己的數據轉換爲detectron所需的coco格式?需要的同學點這裏:#2018/06/04 更新
使用官方的權重只檢測特定的類別看這裏:
#2018/05/22 更新
使用訓練好的Mask_RCNN模型進行預測看這裏:
#2018/05/04 更新
由於labelme的數據預處理過程還是太繁瑣,現在換成了類似於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位,請關注我的另外一篇博客: