文章目录[隐藏]
1.首选使用labelme进行数据集制作,制作完成后,会获取到图片和.json的文件,如下:
2.转换数据集为coco或者voc数据集
其实官方已经提供了,转换一个实例的代码,但是没有批量的转换代码,于是网上很多批量转换代码,其实呢,官方作者已经完成了转换代码,大家可以去官网看看:labelme官网,从官网获取两个文件:labelme2coco.py和labelme2voc.py,使用方法,作者有教程,大家研究一下,我这里以转换为voc数据集为例实现一下:
./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt
这里简单介绍一下,data_annotated就是你标注的数据集的目标,就是第一步的包含图片和.json的路径, data_dataset_voc是转换后的路径,这里说明转换结果在本路径下的data_dataset_voc文件下, --labels labels.txt 就是你的标签信息了,
这里提醒一下,制作标签时应该首先把类别确定下来为labels.txt,然后标注时读入这个信息就可以了,如下:
labelme data_annotated --labels labels.txt
转换完成后会在对应的目录出现如下的文件:
这里就说明转换完成了。
3.这时你会发现标签图片居然是彩色的,是不是需要转换呢?如果想要黑色的那种如何转换呢?
其实这个问题,网上的人说需要转换,说明他根本不懂,这个彩色的只是伪彩色,显示用的,其实他的信息还是8位,对应的像素值就是类别值,如果我们通过代码就可以观察,大家可以看我的另一篇博客,使用labelme进行图片语义分割数据的标注(如何转换为训练的灰度图,即像素值为类别值), 这里我只是简单的说明了一下,并没有细说,但是发现还是有很多人不懂,我这里仔细的说明一下,其实很简单,但是看一下转换代码就好了,就是对应得labelme2voc.py,这里代码很清晰,可以修改代码生成你们习惯的黑色的那种,下面我们来看看代码:
从图中可以看到保存我们标签的代码是labelme.utils.lblsave(out_png_file, lbl), 那我们进入看看 :
通过上面大家不难看出,其实在伪彩色的情况下,直接使用PIL.Image进行读取数据即可,但是使用opencv无法读取,只能转换为灰度即L模式,这里给大家链接一个他们模式的讲解:model的讲解。
4.总结
其实有时候一件事如果你觉得很麻烦,多数可能是方法错了,这是你需要深入源码全看他是怎么生成的,而不是其他乱七八糟的转换,所以知其然更要知其所以然。
版权声明:本文为CSDN博主「zsffuture」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42398658/article/details/115355988
暂无评论