Integración con Labelbox#
Ultralytics Platform lee exportaciones NDJSON de Labelbox directamente. No hay clave que pegar, ni conexión que mantener activa, ni script de conversión que mantener: exporta desde Labelbox, sube el archivo y tus etiquetas llegan como un conjunto de datos normal de Platform.
Importar desde Labelbox#
- Exporta desde Labelbox. Abre el proyecto de etiquetado o catálogo que quieras traer y ve a la pestaña Data Rows. Selecciona All, haz clic en Export data, elige los campos a incluir y confirma. ¿Vas a exportar desde Catalog en lugar de un proyecto? Habilita Export labels from project y elige el proyecto, o el archivo llegará completamente sin anotaciones.
- Descarga el archivo. Labelbox ejecuta la exportación como un trabajo en segundo plano. Búscalo en Notifications y haz clic en Download cuando termine para guardar el archivo
.ndjson. - Sube a Platform. Crea un nuevo conjunto de datos y sube el archivo
.ndjson, o pega un enlace directo a él. También puedes empezar desde Settings > Integrations > Labelbox. - Entrena. Una vez que termine el procesamiento, edita las anotaciones y entrena exactamente igual que con cualquier otro conjunto de datos de Platform.

A diferencia de CVAT y Label Studio, no hay ningún formato que elegir; la propia exportación de Labelbox es la compatible.
Exportar con el SDK#
Labelbox también ofrece la tarea de exportación en su Python SDK, que es la ruta más fácil para una canalización repetible. Transmite la tarea y escribe un objeto JSON por línea:
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())El NDJSON consta de un objeto JSON por línea. json.dump(list_of_rows, f) escribe una sola matriz en su lugar, y Platform omite cualquier línea que no sea un objeto JSON; la importación no encuentra ninguna fila de datos. Utiliza el bucle anterior o "\n".join(json.dumps(r) for r in rows).
Qué se importa#
Platform reconoce el formato de Labelbox por sí solo y asigna los cuadros delimitadores y polígonos al tipo de tarea YOLO correspondiente:
| Anotación de Labelbox | Importado |
|---|---|
| Cuadro delimitador | Detect |
| Polígono | Segment |
| Máscara de segmentación, punto, polilínea, relación, clasificación | Todavía no |
Cada objeto name se convierte en el nombre de clase —por lo que una anotación "name": "Dog" se importa como la clase Dog, no su value en minúsculas— y las coordenadas de píxeles se normalizan según las dimensiones de media_attributes en la exportación. Cada imagen recibe el nombre de su data_row.external_id, recurriendo al nombre de archivo en la URL firmada cuando la exportación no incluye un ID externo. Una exportación de catálogo sin anotaciones se importa como un conjunto de datos de imágenes sin etiquetar, listo para etiquetar en el editor de anotaciones de Platform.
Una sola fila de datos tiene este aspecto, recortada a los campos que lee 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 }
}
]
}
}
]
}
}
}Todo lo demás en la exportación (embeddings, metadata_fields, attachments, project_details) se ignora. Vale la pena deseleccionar las incrustaciones al exportar: en una exportación de muestra representaban alrededor de cuatro quintas partes del archivo, frente a una quinta parte para los campos que Platform realmente lee.
Actualmente solo se leen los cuadros delimitadores y los polígonos, y únicamente a partir de una anotación de objeto; las clasificaciones a nivel de imagen se encuentran en otra parte de la exportación y se omiten. Un proyecto etiquetado enteramente con la herramienta de máscara de segmentación (pincel), puntos, polilíneas o clasificaciones importa sus imágenes pero sin anotaciones, y no se genera ningún error. Puedes detectarlo en la página del conjunto de datos: un conjunto de datos importado que conservó sus etiquetas muestra un recuento de etiquetas y anotaciones junto al recuento de imágenes, y uno que las perdió no muestra ninguno.
Una exportación de Labelbox hace referencia a cada imagen mediante una URL firmada en lugar de incrustar los píxeles, y esas firmas caducan. Platform descarga las imágenes de esas URL, probando una muestra antes de comenzar, por lo que una exportación cuyos enlaces hayan caducado por completo falla inmediatamente y te indica el motivo: vuelve a exportar desde Labelbox y sube el nuevo archivo. Una exportación que solo ha caducado parcialmente importa las imágenes a las que todavía puede acceder y omite el resto, así que súbela poco después de exportar.
Una exportación que contiene tanto cuadros delimitadores como polígonos se importa como un conjunto de datos de segmentos, y un conjunto de datos de segmentos incluye únicamente la geometría de los polígonos; las anotaciones de cuadros no se utilizan para el entrenamiento ni se incluyen en las exportaciones de versiones. Exporta los cuadros y los polígonos como proyectos de Labelbox separados si necesitas ambos. Los pol también necesitan al menos tres puntos para ser leídos.