引言
LabelMe输出的JSON格式虽然灵活,却不总是兼容现有的深度学习框架和数据集标准,如VOC和COCO格式。本文通过简单使用label官方示例代码,来将LabelMe的JSON文件转换为VOC或COCO格式。
安装使用LabelMe
- 安装
首先需要Conda环境,未安装的需自行搜索安装方法。
具体步骤参考官方文档,也可以参考我这里。
conda create --name=labelme python=3
激活labelme虚拟环境。
conda activate labelme
安装labelme(ps:这里使用清华源install)
pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple
- 使用
输入labelme启动。
labelme
使用体验(ai辅助标注,可跳过)
界面左上角点击“打开目录”,打开需要标注的图片文件夹。
右键图片,选择“创建AI蒙版”
此时点击命令行窗口可以看到正在下载,等待下载完成。
LabelMe JSON解析
- 具体标注流程不做展示。标注好的文件夹如图,一个图片一个json文件。
- JSON文件结构概览。
{
"version": "5.0.1", // LabelMe软件的版本号
"flags": {}, // 用户定义的标志或注释
"shapes": [ // 图像中所有标注的集合
{
"label": "car", // 标注对象的类别标签
"points": [[10, 20], [30, 40]], // 多边形顶点坐标,对于矩形是两对角点
"group_id": null, // 可选的组ID,用于关联多个形状
"shape_type": "rectangle", // 形状类型:rectangle, polygon, points, line, etc.
"flags": {} // 形状特定的标志
},
// 更多的形状...
],
"imagePath": "path/to/image.jpg", // 原始图像的相对路径
"imageData": null, // 图像的Base64编码,如果图像文件较大,通常为空
"imageHeight": 480, // 图像的高度
"imageWidth": 640 // 图像的宽度
}
JSON到VOC/COCO转换
- 使用labelme自带示例的py代码转换。
Labelme Github地址https://github.com/labelmeai/labelme
拉取代码到本地,在命令行中挂载到examples的instance_segmentation目录。(注意conda环境是labelme)
- labels文件编写
新建txt文件(标签文件,名称随意),把自己的标签名称加在后面。
__ignore__
_background_
你的标签
你的标签
你的标签
比如我这里就是如图。
labelme转换voc,命令行运行。
python .\labelme2voc.py 你的数据文件目录 生成voc的文件目录 --labels 标签txt文件路径
# python .\labelme2voc.py data_annotated_safehat data_dataset_safehat_voc --labels labels_safehat.txt
labelme转换coco,命令行运行。
python .\labelme2coco.py 你的数据文件目录 生成coco的文件目录 --labels 标签txt文件路径
# python .\labelme2coco.py data_annotated_safehat data_dataset_safehat_coco --labels labels_safehat.txt
点开输出的目录就可以看到结果了
结束。