用labelme制作voc数据集格式

我们先来看看voc数据集是什么样子的:
用labelme制作voc数据集格式_第1张图片
用labelme制作voc数据集格式_第2张图片
其中:Annotations里面是图像对应的XML标注信息描述,每张图像有一个与之对应同名的描述XML文件,XML前面部分声明图像数据来源,大小等元信息。举例如下:
用labelme制作voc数据集格式_第3张图片
上面表示图像对应路径为VOC2012/JPEGImages/2007_000033.jpg,来自flickr网站上,大小为WxHxC=500x366x3,是三通道的彩色图像,其中segmented为1有分割标注,0表示没有分割标注。后面的是对象检测的每个BOX标签信息极其描述信息,图示如下:
用labelme制作voc数据集格式_第4张图片
其中每个object标签是表示单独的box信息与对象描述,一张图像可以有多个object标签(boxes),

-name表示对象类别

-pose表示采用是从什么视角,常见的有Left、Right、Frontal、rear,

-difficult是否被标记为很难识别对称,0表示不是,1表示是

-truncated 是否被标记为截断,0表示没有,1表示是

-Bndbox标签描述box框在图像上的 位置
ImageSets
里面是标注类别的每个文件列表信息,Action中是所有具有Action标注信息图像文件名的txt文件列表,Layout中的txt文件表示包含Layout标注信息的图像文件名列表,Main文件夹中包含20个类别每个类别一个txt文件,每个txt文件都是包含该类别的图像文件名称列表,Segmentation则是包含语义分割信息图像文件的列表。
train.txt表示是的训练数据集合

val.txt 表示验证集数据
trainval.txt表示训练与验证集数据

test.txt表示测试集数据
JPEGImages
所有的原始图像文件,格式必须是JPG格式,这个要特别注意!如果你打算使用VOC2012格式生成数据,那么原始图像格式在采样时候请用JPG格式保存,避免后期生成使用tensorflow工具生成的时候出错。
SegmentationClass
所有分割的图像标注,分割图像安装每个类别标注的数据
SegmentationObject

所有分割的图像标注,分割图像安装每个类别每个对象不同标注的数据

最后总结一下吧,如果你利用voc数据集进行图像分割,那么你需要的文件有:
ImageSets、JPEGImages、SegmentationClass。就这三个就可以了
其中JPEGImages文件中保存的就是我们的原始图像。
ImageSets中是我们的数据用途分类列表,比如1-200用来训练,那么在这个下面就会有train.txt文件,里面是这些图像的文件名信息。
SegmentationClass是我们自己制作的分割结果png图像,如下图:
用labelme制作voc数据集格式_第5张图片
这个就需要我们用到labelme了,所以我们现在来下载labelme,利用anaconda。

打开anaconda的命令行
用labelme制作voc数据集格式_第6张图片
输入:conda create --name=labelme python=3.8
命令完成之后,我们再输入:
conda activate labelme
我们会发现前面的base已经变成了labelme环境:
这个时候我们转到我们要标注的文件夹的目录,比如我的是D:\hair_seg
那我就用cd命令转过去,
补充说明:我们这个hair_seg的目录下要有两个文件:labels.txt 以及我们的images
其中labels.txt中内容为:ignore background hair(即你的类别)一行一个
之后再输入:
labelme images --labels labels.txt --nodata --validatelabel exact
就会出现labelme的使用界面了,就可以使用了,再使用过程中,labelme会自动生成json文件,json文件里面有我们需要的标签,也有我们圈起来的坐标值。

做到这一步其实我们离可以用的voc数据集就不远了,我们只需要去github上面copy一个labelme2voc.py的代码,这个代码也在不断的更新,以最新版本的为主。将这个代码放在我们的hair_seg目录下,然后输入命令:
python labelme2voc.py images target --labels labels.txt
之后在hair_seg目录下面就会生成一个target文件,这个里面就是我们需要的三个文件。

你可能感兴趣的:(python,labelme)