YOLO Vision 2026:

Labelbox-Integration#

Die Ultralytics Platform liest NDJSON-Exporte aus Labelbox direkt ein. Du musst keinen Schlüssel einfügen, keine Verbindung aufrechterhalten und kein Konvertierungsskript pflegen – exportiere aus Labelbox, lade die Datei hoch, und deine Beschriftungen kommen als normaler Platform-Datensatz an.

Aus Labelbox importieren#

  1. Aus Labelbox exportieren. Öffne das Beschriftungsprojekt oder den Katalog, den du importieren möchtest, und wechsle zum Tab Datenzeilen. Wähle Alle aus, klicke auf Daten exportieren, wähle die einzuschließenden Felder aus und bestätige. Exportierst du aus dem Katalog statt aus einem Projekt? Aktiviere Beschriftungen aus Projekt exportieren und wähle das Projekt aus, sonst enthält die Datei überhaupt keine Annotationen.
  2. Datei herunterladen. Labelbox führt den Export als Hintergrundauftrag aus. Suche unter Benachrichtigungen danach und klicke auf Herunterladen, sobald der Vorgang abgeschlossen ist, um die Datei .ndjson zu speichern.
  3. In Platform hochladen. Erstelle einen neuen Datensatz und lade die Datei .ndjson hoch oder füge einen direkten Link darauf ein. Du kannst auch über Einstellungen > Integrationen > Labelbox beginnen.
  4. Trainieren. Sobald die Verarbeitung abgeschlossen ist, bearbeite die Annotationen und trainiere genau wie bei jedem anderen Platform-Datensatz.

Import eines Labelbox-Datensatzes in Ultralytics Platform

Anders als bei CVAT und Label Studio musst du kein Format auswählen – der eigene Export von Labelbox ist das unterstützte Format.

Mit dem SDK exportieren#

Labelbox bietet die Exportaufgabe auch in seinem Python SDK an, was der einfachere Weg für eine wiederholbare Pipeline ist. Streame die Aufgabe und schreibe ein JSON-Objekt pro Zeile:

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 schreiben, kein JSON-Array

NDJSON besteht aus einem JSON-Objekt pro Zeile. json.dump(list_of_rows, f) schreibt stattdessen ein einzelnes Array, und Platform überspringt jede Zeile, die kein JSON-Objekt ist – der Import findet überhaupt keine Datenzeilen. Verwende die Schleife oben oder "\n".join(json.dumps(r) for r in rows).

Was importiert wird#

Platform erkennt das Labelbox-Format automatisch und ordnet Begrenzungsrahmen und Polygone dem passenden YOLO-Aufgabentyp zu:

Labelbox-AnnotationImportiert
BegrenzungsrahmenErkennen
PolygonSegmentieren
Segmentierungsmaske, Punkt, Polylinie, Beziehung, KlassifizierungNoch nicht

Das name jedes Objekts wird zum Klassennamen – eine "name": "Dog"-Annotation wird also als Klasse Dog importiert, nicht als ihr kleingeschriebenes value – und die Pixelkoordinaten werden anhand der media_attributes-Abmessungen im Export normalisiert. Jedes Bild wird nach seinem data_row.external_id benannt. Fehlt im Export eine externe ID, wird stattdessen der Dateiname aus der signierten URL verwendet. Ein Katalogexport ohne Annotationen wird als nicht beschrifteter Bilddatensatz importiert, der in Platform im Annotationseditor beschriftet werden kann.

Eine einzelne Datenzeile sieht, gekürzt auf die von Platform gelesenen Felder, so aus:

{
    "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 }
                            }
                        ]
                    }
                }
            ]
        }
    }
}

Alles andere im Export – embeddings, metadata_fields, attachments, project_details – wird ignoriert. Es lohnt sich, die Einbettungen beim Export abzuwählen: In einem Beispiel-Export machten sie etwa vier Fünftel der Datei aus, während die von Platform tatsächlich gelesenen Felder ein Fünftel belegten.

Projekte mit Masken und Punkten werden ohne Annotationen importiert

Derzeit werden nur Begrenzungsrahmen und Polygone gelesen, und zwar nur aus einer Objektannotation – bildweite Klassifizierungen befinden sich an anderer Stelle im Export und werden übersprungen. Ein Projekt, das vollständig mit dem Segmentierungswerkzeug (Pinsel), mit Punkten, Polylinien oder Klassifizierungen beschriftet wurde, importiert seine Bilder, aber keine Annotationen, ohne dass ein Fehler ausgegeben wird. Du erkennst dies auf der Datensatzseite: Bei einem importierten Datensatz, dessen Beschriftungen erhalten geblieben sind, werden neben der Bildanzahl auch die Anzahl der beschrifteten Bilder und der Annotationen angezeigt; bei einem Datensatz, bei dem sie verloren gegangen sind, fehlt beides.

Export hochladen, solange die Links gültig sind

Ein Labelbox-Export verweist auf jedes Bild über eine signierte URL, statt die Pixel einzubetten, und diese Signaturen laufen ab. Platform lädt die Bilder über diese URLs herunter und prüft vor dem Start eine Stichprobe. Ein Export, dessen Links bereits alle abgelaufen sind, schlägt daher sofort fehl und nennt den Grund – exportiere erneut aus Labelbox und lade die neue Datei hoch. Bei einem nur teilweise abgelaufenen Export werden die Bilder importiert, die noch erreichbar sind, während der Rest übersprungen wird. Lade die Datei daher bald nach dem Export hoch.

In einem gemischten Export werden die Rahmen verworfen

Ein Export mit Begrenzungsrahmen und Polygonen wird als Segmentierungsdatensatz importiert, und ein Segmentierungsdatensatz enthält nur Polygongeometrien – die Rahmenannotation wird weder zum Training verwendet noch in Versions-Exporten berücksichtigt. Exportiere Rahmen und Polygone als separate Labelbox-Projekte, wenn du beides benötigst. Polygone müssen außerdem mindestens drei Punkte enthalten, damit sie gelesen werden.

Mitwirkende

Kommentare