Integración con Labelbox#
Ultralytics Platform lee directamente las exportaciones NDJSON de Labelbox. No tienes que pegar ninguna clave, mantener ninguna conexión activa ni mantener ningún script de conversión: exporta desde Labelbox, sube el archivo y tus etiquetas llegarán como un conjunto de datos normal de Platform.
Importar desde Labelbox#
- Exporta desde Labelbox. Abre el proyecto de etiquetado o el catálogo que quieras importar y ve a la pestaña Filas de datos. Selecciona Todo, haz clic en Exportar datos, elige los campos que quieras incluir y confirma. ¿Exportas desde el catálogo en lugar de un proyecto? Activa Exportar etiquetas del proyecto y selecciona el proyecto; de lo contrario, el archivo llegará sin ninguna anotación.
- Descarga el archivo. Labelbox ejecuta la exportación como una tarea en segundo plano. Búscala en Notificaciones y haz clic en Descargar cuando termine para guardar el archivo
.ndjson. - Sube el archivo a Platform. Crea un conjunto de datos nuevo y sube el archivo
.ndjson, o pega un enlace directo a él. También puedes empezar desde Ajustes > Integraciones > Labelbox. - Entrena. Cuando termine el procesamiento, edita las anotaciones y entrena igual que con cualquier otro conjunto de datos de Platform.

A diferencia de CVAT y Label Studio, no tienes que elegir ningún formato: la exportación propia de Labelbox es la compatible.
Exportar con el SDK#
Labelbox también ofrece la tarea de exportación en su SDK de Python, que es la opción más sencilla para una canalización reproducible. 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())NDJSON contiene un objeto JSON por línea. json.dump(list_of_rows, f) escribe una única matriz, y Platform omite cualquier línea que no sea un objeto JSON; la importación no encuentra ninguna fila de datos. Usa el bucle anterior o "\n".join(json.dumps(r) for r in rows).
Qué se importa#
Platform reconoce por sí sola el formato de Labelbox y asigna los cuadros delimitadores y los polígonos al tipo de tarea de YOLO correspondiente:
| Anotación de Labelbox | Importado |
|---|---|
| Cuadro delimitador | Detección |
| Polígono | Segmentación |
| Máscara de segmentación, punto, polilínea, relación, clasificación | Todavía no |
El name de cada objeto se convierte en el nombre de la clase; por tanto, una anotación "name": "Dog" se importa como la clase Dog, no como su versión en minúsculas value; y las coordenadas de píxel se normalizan según las dimensiones de media_attributes de la exportación. Cada imagen recibe el nombre de su data_row.external_id, y se utiliza como alternativa el nombre del archivo de la URL firmada cuando la exportación no contiene un ID externo. Una exportación del catálogo sin anotaciones se importa como un conjunto de datos de imágenes sin etiquetar, listo para etiquetarlo en el editor de anotaciones de Platform.
Una única fila de datos tiene este aspecto, limitada 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 de la exportación —embeddings, metadata_fields, attachments, project_details— se ignora. Conviene no seleccionar los embeddings al exportar: en una exportación de ejemplo ocupaban aproximadamente cuatro quintas partes del archivo, frente a una quinta parte correspondiente a los campos que realmente lee Platform.
Actualmente solo se leen cuadros delimitadores y polígonos, y únicamente 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 por completo con la herramienta de máscara de segmentación (pincel), puntos, polilíneas o clasificaciones importa sus imágenes, pero no sus anotaciones, y no se genera ningún error. Puedes comprobarlo en la página del conjunto de datos: un conjunto de datos importado que conserva sus etiquetas muestra un recuento de elementos etiquetados y anotaciones junto al recuento de imágenes, mientras que uno que las ha perdido no muestra ninguno de los dos.
Una exportación de Labelbox hace referencia a cada imagen mediante una URL firmada en lugar de insertar los píxeles, y esas firmas caducan. Platform descarga las imágenes desde esas URL y comprueba una muestra antes de empezar, 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 archivo nuevo. Una exportación cuyos enlaces solo hayan 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 exportarla.
Una exportación que contiene tanto cuadros delimitadores como polígonos se importa como un conjunto de datos de segmentación, y un conjunto de datos de segmentación solo conserva 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 independientes si necesitas ambos. Además, los polígonos deben tener al menos tres puntos para poder leerse.