利用labelme制作自己的语义分割数据集
本文硬件环境为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
对转化后的图像进行诸如旋转分割,等操作后进行网络的训练。