前言
用labelme對樣本圖片進行前景目標的輪廓標註後,按CTRL+S就可以將標註結果保存爲對應的json文件。但是這個json文件並不能直接用來進行訓練/它還需要另外一個腳本或工具來轉換成真正的可訓練的樣本數據。
轉換
這個工具名叫:labelme_json_to_dataset,直接可以在cmd窗口運行它,後面跟着第一個參數爲待轉換的json文件,第二個參數來指定生成的訓練數據目錄所在路徑:-o xxx/xxx。當然。也可以不輸入第二個參數,這時會指定當前目前目錄爲缺省路徑。
該工具會調用json_to_dataset.py,該python腳本在下面路徑中。如果感興趣可以去看看它的源代碼實現。
c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages\labelme\cli\
在運行該轉換工具時,有可能會遇到 TypeError: rectangle() got an unexpected keyword argument 'width'。如下圖所示。
很顯然,它的意思說,在調用rectangle()畫矩形框時,多輸入了一個width參數。
經調查,發現是本人windows平臺上安裝的Pillow包版本較低導致的。新版本中支持width這個參數來設置矩形框的線寬。所以最終的解決辦法就是 升級Pillow到5.3.0
pip install Pillow==5.3.0
轉換後的結果顯示
每個json文件轉換後就會生成一個對應的文件夾,裏面有5個文件,如下圖所示
第一個圖是原始樣本圖片;第二個是標籤類型名信息;第三個是前景目標的標註輪廓,相當於mask;第四個也是標籤類型名信息;第五個是前景目標輪廓在原圖上的顯示。 實際參與訓練的是第二和第三個文件。
當然,如果每個json文件都要這樣敲一次命令來生成訓練樣本數據集的話,那麼效率就太低了。可以自己寫一個腳本或者從網上下載來批處理一次性生成所有json文件對應的訓練集。