Integrazione con Labelbox#
Ultralytics Platform legge direttamente le esportazioni NDJSON di Labelbox. Non devi incollare alcuna chiave, mantenere attiva alcuna connessione né gestire script di conversione: esporta da Labelbox, carica il file e le tue annotazioni arriveranno come un normale dataset di Platform.
Importazione da Labelbox#
- Esporta da Labelbox. Apri il progetto di annotazione o il catalogo che vuoi importare e vai alla scheda Data Rows. Seleziona All, fai clic su Export data, scegli i campi da includere e conferma. Stai esportando dal Catalog anziché da un progetto? Abilita Export labels from project e scegli il progetto, altrimenti il file arriverà senza alcuna annotazione.
- Scarica il file. Labelbox esegue l'esportazione come processo in background. Cercala in Notifications e fai clic su Download al termine per salvare il file
.ndjson. - Carica su Platform. Crea un nuovo dataset e carica il file
.ndjson, oppure incolla un link diretto al file. Puoi anche iniziare da Settings > Integrations > Labelbox. - Addestra. Al termine dell'elaborazione, modifica le annotazioni e addestra esattamente come con qualsiasi altro dataset di Platform.

A differenza di CVAT e Label Studio, non c'è alcun formato da scegliere: l'esportazione nativa di Labelbox è quella supportata.
Esportazione con l'SDK#
Labelbox offre l'attività di esportazione anche nel suo SDK Python, che è l'opzione più semplice per una pipeline ripetibile. Trasmetti l'attività in streaming e scrivi un oggetto JSON per riga:
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 oggetto JSON per riga. json.dump(list_of_rows, f) scrive invece un singolo array e Platform ignora ogni riga che non è un oggetto JSON: l'importazione non trova alcuna riga di dati. Usa il ciclo precedente oppure "\n".join(json.dumps(r) for r in rows).
Cosa viene importato#
Platform riconosce autonomamente il formato Labelbox e associa i riquadri di delimitazione e i poligoni al corrispondente tipo di attività YOLO:
| Annotazione Labelbox | Importata |
|---|---|
| Riquadro di delimitazione | Rilevamento |
| Poligono | Segmentazione |
| Maschera di segmentazione, punto, polilinea, relazione, classificazione | Non ancora |
Il campo name di ogni oggetto diventa il nome della classe: quindi un'annotazione "name": "Dog" viene importata come classe Dog, non come il suo value in minuscolo; le coordinate dei pixel vengono normalizzate in base alle dimensioni media_attributes nell'esportazione. Ogni immagine prende il nome dal proprio data_row.external_id, ricorrendo al nome del file nell'URL firmato quando l'esportazione non contiene alcun ID esterno. Un'esportazione del catalogo senza annotazioni viene importata come dataset di immagini senza etichette, pronto per essere annotato nell'editor di annotazioni di Platform.
Una singola riga di dati è simile a questa, ridotta ai campi letti da 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 }
}
]
}
}
]
}
}
}Tutto il resto dell'esportazione — embeddings, metadata_fields, attachments, project_details — viene ignorato. È consigliabile deselezionare gli embedding durante l'esportazione: in un'esportazione di esempio rappresentavano circa i quattro quinti del file, contro un quinto per i campi effettivamente letti da Platform.
Oggi vengono letti solo riquadri di delimitazione e poligoni, e solo da un'annotazione di oggetto; le classificazioni a livello di immagine si trovano altrove nell'esportazione e vengono ignorate. Un progetto annotato interamente con lo strumento maschera di segmentazione (pennello), punti, polilinee o classificazioni importa le immagini ma nessuna annotazione, senza generare errori. Puoi verificarlo nella pagina del dataset: un dataset importato che ha conservato le etichette mostra un conteggio delle immagini con etichette e delle annotazioni accanto al conteggio delle immagini, mentre quello che le ha perse non mostra nessuno dei due.
Un'esportazione di Labelbox fa riferimento a ogni immagine tramite un URL firmato anziché incorporare i pixel, e queste firme scadono. Platform scarica le immagini da tali URL, verificandone un campione prima di iniziare; perciò un'esportazione i cui link sono tutti scaduti non va a buon fine immediatamente e ti spiega il motivo: riesporta da Labelbox e carica il nuovo file. Un'esportazione parzialmente scaduta importa le immagini ancora raggiungibili e ignora le altre, quindi caricala subito dopo l'esportazione.
Un'esportazione contenente sia riquadri di delimitazione sia poligoni viene importata come dataset di segmentazione, e un dataset di segmentazione contiene solo la geometria dei poligoni: le annotazioni dei riquadri non vengono utilizzate per l'addestramento né incluse nelle esportazioni delle versioni. Esporta riquadri e poligoni come progetti Labelbox separati se ti servono entrambi. Per essere letti, i poligoni devono inoltre avere almeno tre punti.
FAQ#
I bounding box vengono importati come un set di dati detect e i poligoni come un set di dati segment. Maschere di segmentazione, punti, polilinee, relazioni e classificazioni non vengono ancora letti, quindi un progetto etichettato solo con quegli strumenti importa le sue immagini senza annotazioni.
Platform legge NDJSON, un oggetto JSON per riga. Un'esportazione salvata come singolo array JSON viene saltata del tutto. Usa il ciclo SDK sopra o il download di Export data di Labelbox, che è già in formato NDJSON.
Le esportazioni di Labelbox fanno riferimento alle immagini tramite URL firmati e tali firme scadono. Esporta nuovamente da Labelbox e carica il nuovo file subito dopo che è stato completato.
No. Un'esportazione mista viene importata come set di dati di segmentazione e vengono usati solo i poligoni. Esporta riquadri e poligoni come progetti Labelbox separati se ti servono entrambi.