LabelMe 标注文件格式说明
LabelMe 简介
LabelMe 是一款开源的图像标注工具,由麻省理工学院计算机科学与人工智能实验室 (CSAIL) 开发。它主要用于手动标注图像数据,以便为计算机视觉任务(如目标检测、图像分割和物体识别)生成训练数据。LabelMe 提供了一个友好的用户界面,支持多种标注类型,如矩形、圆形、多边形和线条,适合各种应用场景。
标注文件示例
{
"version": "5.5.0",
"flags": {},
"shapes": [
{
"label": "is-a-label",
"points": [
[
471.7647058823529,
1020.0
],
[
537.0588235294118,
1042.3529411764707
],
[
622.9411764705883,
784.1176470588235
],
[
565.2941176470588,
764.7058823529412
]
],
"group_id": null,
"description": "",
"shape_type": "polygon",
"flags": {},
"mask": null
}
],
"imagePath": "000000331_1718860638356.jpg",
"imageData": null,
"imageHeight": 1600,
"imageWidth": 1200
}
标注文件格式解析
version 版本
version
字段表示 LabelMe 软件的版本号。在示例中,版本号是 5.5.0
。这个信息有助于确保文件格式的兼容性,特别是在不同版本之间可能存在差异的情况下。
flags 标签
flags
是一个字典对象,用于存储图像级别的标志信息。在示例中,它是一个空字典 {}
,表示没有任何特殊标志。
shapes 标注图形
shapes
是一个列表,其中每个元素代表一个标注图形。每个标注图形包含以下几个字段:
label 标注图像的标签
label
字段表示该标注图形的标签。在示例中,标签是 "is-a-label"
。这个标签用于描述图形所代表的物体或区域。
points 标记点
points
字段是一个列表,其中每个元素是一个二维点的坐标,表示标注图形的顶点。坐标的单位是像素,参考点位于图像的左上角。每个点的坐标表示相对于图像左上角的水平(x)和垂直(y)距离。
group_id 组ID
group_id
字段用于表示该标注图形所属的组。在示例中,它是 null
,表示没有分组。这个字段在处理复杂标注任务时非常有用,例如将多个形状分组为一个整体。
description 形状的描述
description
字段用于对形状进行描述。在示例中,它是一个空字符串 ""
。这个字段可以用于添加额外的注释或描述信息。
shape_type 形状的类型
shape_type
字段表示标注图形的类型。在示例中,它是 "polygon"
,表示该形状是一个多边形。LabelMe 支持多种形状类型,如矩形(rectangle
)、圆形(circle
)、线条(line
)等。
flags 形状标志
flags
是一个字典对象,用于存储形状级别的标志信息。在示例中,它是一个空字典 {}
,表示没有任何特殊标志。
mask 形状的掩码
mask
字段用于存储形状的掩码信息。在示例中,它是 null
。这个字段在某些应用场景下可能会用到,例如语义分割任务。
imagePath 图像的文件路径
imagePath
字段表示图像文件的路径。在示例中,路径是 "000000331_1718860638356.jpg"
。这个路径可以是相对路径或绝对路径,具体取决于项目的组织方式。
imageData 图像数据
imageData
字段用于存储图像的 Base64 编码数据。在示例中,它是 null
,表示没有嵌入图像数据。通常情况下,图像数据会单独存储在文件系统中,而不是嵌入到标注文件中。
imageHeight 图像的高度
imageHeight
字段表示图像的高度,单位是像素。在示例中,高度是 1600
像素。
imageWidth 图像的宽度
imageWidth
字段表示图像的宽度,单位是像素。在示例中,宽度是 1200
像素。
LabelMe 的标注文件格式结构清晰,易于理解和解析。它不仅适用于简单的标注任务,也能支持复杂的多形状、多标签标注需求。通过详细理解每个字段的含义和用途,用户可以更好地利用 LabelMe 工具进行高效的图像标注工作,为后续的深度学习模型训练提供高质量的数据支持。
欢迎关注作者公众号,获取更多技术分享