本文硬件環境爲DELL,GPU 1060TI,軟件環境爲windows10 64位操作系統,python 3。
首先在windows系統下基於anaconda安裝labelme:
# python3
conda create --name=labelme python=3.6
source activate labelme
pip install pyqt5
pip install labelm
安裝完成後在anaconda promote中輸入labelme可以打開圖形化操作界面,如下圖所示:
此時打開需要進行標註的圖片,進行圖片的標註。
在圖像標註完成後,保存爲json格式的文件,但是json格式的文件沒有辦法直接利用,因此需要對json文件進行後續的處理:
1.找到json文件的位置,以及設置處理後文件的位置
labelme_json_to_dataset 存放位置/文件名稱.json -o 處理後文件位置/文件名稱
處理完畢後,將會在文件夾中出現5個文件,接下來對5個文件進行處理
5個文件分別爲:原始文件.png,info.yaml,label.png,label_names.txt,label_viz.png
其中label.png爲圖像的標籤圖像
2.爲label.png進行着色
利用python程序進行批處理,程序如下所示:
import PIL.Image
import numpy as np
from skimage import io,data,color
import matplotlib.pyplot as plt
for i in range(1,7):
img=PIL.Image.open("文件路徑/label.png"%i)
img=np.array(img)
dst=color.label2rgb(img,bg_label=0,bg_color=(0,0,0))#背景的標籤爲0,顏色爲黑色
io.imsave("文件路徑.png"%i,dst)
結果如下所示:
原始圖像過大,因此不能夠上傳,原始圖像爲航拍的林地圖像。
3.利用matlab將24位圖轉爲8位圖
dirs=dir('文件路徑/*.JPG');
for n=1:numel(dirs)
strname=strcat('文件路徑/',dirs(n).name);
img=imread(strname);
[x,map]=rgb2ind(img,256);
newname=strcat('結果存儲路徑/',dirs(n).name);
imwrite(x,map,newname,'JPG');
end
對轉化後的圖像進行諸如旋轉分割,等操作後進行網絡的訓練。