利用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可以打开图形化操作界面,如下图所示:

利用labelme制作自己的语义分割数据集_第1张图片

此时打开需要进行标注的图片,进行图片的标注。

在图像标注完成后,保存为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)

结果如下所示:

原始图像过大,因此不能够上传,原始图像为航拍的林地图像。

利用labelme制作自己的语义分割数据集_第2张图片

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

对转化后的图像进行诸如旋转分割,等操作后进行网络的训练。

 

你可能感兴趣的:(利用labelme制作自己的语义分割数据集)