Labelbox 集成#
Ultralytics Platform 直接读取 Labelbox NDJSON 导出。无需粘贴密钥、无需维持连接、也无需维护转换脚本——从 Labelbox 导出、上传文件,你的标签就会作为普通的 Platform 数据集导入。
从 Labelbox 导入#
- 从 Labelbox 导出。 打开你要导入的标注项目或目录,转到 Data Rows 标签页。选择 All,点击 Export data,选择要包含的字段并确认。从目录而非项目导出?请启用 Export labels from project 并选择项目,否则下载的文件将完全不包含任何注释。
- 下载文件。 Labelbox 会在后台运行导出作业。请留意通知,在完成后点击 Download 来保存
.ndjson文件。 - 上传至 Platform。 创建一个新数据集并上传
.ndjson文件,或者粘贴它的直连。你也可以从 Settings > Integrations > Labelbox 开始。 - 训练。 处理完成后,就像对待其他任何 Platform 数据集一样,直接编辑注释并训练。

与 CVAT 和 Label Studio 不同,这里无需选择格式——Labelbox 自身的导出格式就是受支持的格式。
使用 SDK 导出#
Labelbox 还在其 Python SDK 中提供了导出任务,这对于可重复的管道来说是更简便的途径。流式传输任务并写入每行一个 JSON 对象:
import json
import labelbox
client = labelbox.Client(api_key="YOUR_LABELBOX_API_KEY")
export_task = labelbox.ExportTask.get_task(client, "YOUR_EXPORT_TASK_ID")
export_task.wait_till_done() # streaming a task that isn't COMPLETE raises
with open("dataset.ndjson", "w") as f:
f.writelines(json.dumps(data_row.json) + "\n" for data_row in export_task.get_buffered_stream())NDJSON 是每行一个 JSON 对象。json.dump(list_of_rows, f) 写入的则是单个数组,因此 Platform 会跳过任何不是 JSON 对象的行,导致导入找不到任何数据行。请使用上面的循环,或 "\n".join(json.dumps(r) for r in rows)。
导入内容说明#
Platform 会自动识别 Labelbox 格式,并将边界框和多边形映射到对应的 YOLO 任务类型:
每个对象的 name 会成为类名——因此 "name": "Dog" 标注导入时的类名为 Dog,而不是其小写的 value——并且像素坐标会根据导出的 media_attributes 尺寸进行归一化。每张图片都以其 data_row.external_id 命名,当导出不包含外部 ID 时,则退回到签名 URL 中的文件名。不带标注的目录导出将作为未标注的图片数据集导入,随时可以在 Platform 的标注编辑器中进行标注。
单条数据行精简到 Platform 读取的字段后如下所示:
{
"data_row": {
"external_id": "000000000307.jpg",
"row_data": "https://storage.labelbox.com/...?Expires=...&Signature=..."
},
"media_attributes": { "height": 480, "width": 640, "mime_type": "image/jpeg" },
"projects": {
"<project-id>": {
"labels": [
{
"annotations": {
"objects": [
{
"name": "Dog",
"annotation_kind": "ImageBoundingBox",
"bounding_box": { "top": 200.0, "left": 407.0, "height": 172.0, "width": 176.0 }
}
]
}
}
]
}
}
}导出中的其余内容——embeddings、metadata_fields、attachments、project_details——将被忽略。导出时建议取消勾选嵌入向量:在示例导出中,它们约占文件大小的五分之四,而 Platform 实际读取的字段仅占五分之一。
目前只读取边界框和多边形,并且仅从对象标注中读取——图像级别的分类存在于导出的其他位置并会被跳过。完全使用分割掩码(画笔)工具、点、折线或分类标记的项目会导入其图像但没有标注,并且不会引发错误。你可以在数据集页面上发现这一点:保留了标签的导入数据集会在图像计数旁边显示已标记和标注计数,而丢失了标签的数据集则两者都不显示。
Labelbox 导出是通过签名 URL 而不是嵌入像素来引用每个图像的,这些签名会过期。Platform 会从这些 URL 下载图像,并在开始前对样本进行探测,因此如果链接全部失效的导出文件会立即失败并告诉你原因——请从 Labelbox 重新导出并上传新文件。仅部分过期的导出可以导入仍然能够访问的图像并跳过其余部分,因此请在导出后尽快上传。
包含边界框和多边形的导出将作为分段数据集导入,而分段数据集仅承载多边形几何图形——框标注不用于训练,也不包含在版本导出的文件中。如果两者都需要,请将框和多边形作为单独的 Labelbox 项目导出。多边形还需要至少三个点才能被读取。