Integración con Labelbox#
Ultralytics Platform lee directamente las exportaciones NDJSON de Labelbox. No hace falta pegar ninguna clave ni mantener una conexión activa, y tampoco tienes que 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. En un proyecto de etiquetado, abre la pestaña Data Rows, selecciona All, haz clic en Export data, elige los campos que quieras incluir y confirma. Desde Catalog, selecciona las filas de datos y elige Manage selection > Export data; después, activa Export labels from project y selecciona el proyecto. De lo contrario, el archivo llegará sin anotaciones.
- Descarga el archivo. Labelbox ejecuta la exportación como una tarea en segundo plano. Busca el aviso en Notifications y haz clic en Download 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. También puedes empezar desde Settings > Integrations > 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 hay que elegir un formato: se admite la exportación propia de Labelbox.
Exporta 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 crear 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() # transmitir una tarea que no está COMPLETE genera una excepción
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 sola matriz, y Platform omite todas las líneas que no sean objetos JSON, por lo que 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 automáticamente el formato de Labelbox y asigna los cuadros delimitadores y los polígonos al tipo de tarea YOLO correspondiente:
| Anotación de Labelbox | Importado |
|---|---|
| Cuadro delimitador | Detectar |
| Polígono | Segmentar |
| 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 ejemplo, una anotación "name": "Dog" se importa como la clase Dog, no como su value en minúsculas. Las coordenadas de píxel se normalizan según las dimensiones media_attributes de la exportación, así que conserva los atributos multimedia en la exportación: las filas sin anchura ni altura importan la imagen sin anotaciones. Solo los objetos que Platform puede importar registran una clase, por lo que las herramientas de máscara, punto y polilínea no añaden clases vacías al conjunto de datos. Cada imagen recibe el nombre de su data_row.external_id y, si no está disponible, de su global_key; si la exportación no incluye ninguno de los dos, se utiliza el nombre de archivo de la URL firmada. Se importan las filas de datos de imágenes; se omiten las filas de datos de vídeo, texto y otros tipos que no sean imágenes. Una exportación de catálogo sin anotaciones se importa como un conjunto de datos de imágenes sin etiquetar, listo para etiquetarse en el editor de anotaciones de Platform.
Una fila de datos tiene este aspecto, reducida a los campos que lee Platform:
{
"data_row": {
"external_id": "000000000307.jpg",
"global_key": "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 }
}
]
}
}
]
}
}
}Se ignora todo lo demás en la exportación: embeddings, metadata_fields, attachments, project_details. Conviene deseleccionar los embeddings al exportar: en una exportación de muestra, ocupaban alrededor de cuatro quintas partes del archivo, frente a una quinta parte correspondiente a los campos que Platform sí lee.
Por ahora, solo se leen cuadros delimitadores y polígonos, y únicamente si forman parte de una anotación de objeto: las clasificaciones a nivel de imagen se encuentran en otra parte de la exportación y se omiten. Si un proyecto está etiquetado únicamente con la herramienta de máscara de segmentación (pincel), puntos, polilíneas o clasificaciones, se importan las imágenes, pero no las anotaciones, y no se muestra ningún error. Puedes comprobarlo en la página del conjunto de datos: si un conjunto de datos importado conserva las etiquetas, junto al número de imágenes se muestran los recuentos de elementos etiquetados y de anotaciones; si las ha perdido, no se muestra ninguno.
Una exportación de Labelbox hace referencia a cada imagen mediante una URL firmada, en lugar de incluir los píxeles, y esas firmas caducan. Platform descarga las imágenes desde esas URL y comprueba una muestra antes de empezar; por eso, si ya han caducado todos los enlaces de una exportación, la importación falla inmediatamente y te indica el motivo. Vuelve a exportar desde Labelbox y sube el archivo nuevo. Si solo han caducado algunos enlaces, se importan las imágenes a las que aún se puede acceder y se omiten las demás, así que sube el archivo poco después de exportarlo.
Una exportación que contiene cuadros delimitadores y polígonos se importa como un conjunto de datos de segmentación, que solo conserva la geometría de los polígonos: las anotaciones de cuadros delimitadores no se utilizan para el entrenamiento ni se incluyen en las exportaciones de versiones. Si necesitas ambos, exporta los cuadros delimitadores y los polígonos como proyectos de Labelbox separados. Además, los polígonos deben tener al menos tres puntos para poder leerse.
Preguntas frecuentes#
Los cuadros delimitadores se importan como un conjunto de datos de detección y los polígonos, como uno de segmentación. Todavía no se leen las máscaras de segmentación, los puntos, las polilíneas, las relaciones ni las clasificaciones, por lo que los proyectos etiquetados únicamente con esas herramientas importan las imágenes sin anotaciones.
Platform lee NDJSON, con un objeto JSON por línea. Si la exportación se guarda como una única matriz JSON, se omite por completo. Usa el bucle del SDK anterior o la descarga Export data de Labelbox, que ya está en formato NDJSON.
Las exportaciones de Labelbox hacen referencia a las imágenes mediante URL firmadas, y esas firmas caducan. Vuelve a exportar desde Labelbox y sube el archivo nuevo poco después de que termine.
No. Una exportación mixta se importa como un conjunto de datos de segmentación y solo se utilizan los polígonos. Si necesitas ambos, exporta los cuadros delimitadores y los polígonos como proyectos de Labelbox separados.