Ausgabedaten - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ausgabedaten

Die Ausgabe eines Kennzeichnungsauftrags wird an dem Amazon-S3-Speicherort abgelegt, den Sie in der Konsole oder im Aufruf der Operation CreateLabelingJob angegeben haben. Die Ausgabedaten werden an dieser Stelle angezeigt, wenn die Auftragnehmer eine oder mehrere Aufgaben gesendet haben oder wenn Aufgaben ablaufen. Beachten Sie, dass es einige Minuten dauern kann, bis die Ausgabedaten in Amazon S3 angezeigt werden, nachdem der Auftragnehmer die Aufgabe gesendet hat oder die Aufgabe abgelaufen ist.

Jede Zeile in der Ausgabedatendatei ist identisch mit der Manifestdatei. Zusätzlich verfügt sie jedoch über ein Attribut und einen Wert für die Bezeichnung, die dem Eingabeobjekt zugewiesen ist. Der Attributname für den Wert wird in der Konsole oder im Aufruf der CreateLabelingJob-Operation definiert. Sie können -metadata nicht im Attributnamen der Bezeichnung verwenden. Wenn Sie eine semantische Bildsegmentierung, eine semantische 3D-Punktwolkensegmentierung oder einen 3D-Punktwolken-Objektverfolgungsauftrag ausführen, muss das Bezeichnungsattribut mit -ref enden. Für jede andere Art von Auftrag darf der Attributname nicht mit -ref enden.

Die Ausgabe des Kennzeichnungsauftrags ist der Wert des Schlüssel-Wert-Paares mit der Bezeichnung. Die Bezeichnung und der Wert überschreiben alle vorhandenen JSON-Daten in der Eingabedatei mit dem neuen Wert.

Das folgende Beispiel zeigt die Ausgabe eines Kennzeichnungsauftrags der Bildklassifizierung, in dem die Eingabedatendateien in einem Amazon-S3-AWSDOC-EXAMPLE-BUCKET gespeichert und der Bezeichnungsattributname als sport definiert wurde. In diesem Beispiel wird das JSON-Objekt aus Gründen der Lesbarkeit formatiert, in der tatsächlichen Ausgabedatei befindet sich das JSON-Objekt in einer einzelnen Zeile. Weitere Informationen zum Datenformat finden Sie unter JSON Lines (JSON-Zeilen).

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/image_example.png", "sport":0, "sport-metadata": { "class-name": "football", "confidence": 0.00, "type":"groundtruth/image-classification", "job-name": "identify-sport", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256" } }

Beim Wert der Bezeichnung kann es sich um jede gültige JSON handeln. In diesem Fall ist der Wert der Bezeichnung der Index der Klasse in der Klassifizierungsliste. Andere Auftragstypen, wie z. B. Begrenzungsrahmen, verfügen über komplexere Werte.

Jedes Schlüssel-Wert-Paar in der Eingabemanifestdatei mit Ausnahme des Bezeichnungsattributs bleibt in der Ausgabedatei unverändert. Auf diese Weise können Sie Daten an Ihre Anwendung übergeben.

Die Ausgabe eines Kennzeichnungsauftrags kann als Eingabe für einen anderen Kennzeichnungsauftrag verwendet werden. Sie können dies bei der Verkettung von Kennzeichnungsaufträgen verwenden. Beispielsweise können Sie einen Kennzeichnungsauftrag senden, um den Sport zu bestimmen, der gespielt wird. Anschließend senden Sie einen anderen mit denselben Daten, um zu bestimmen, ob der Sport im Innen- oder Außenbereich gespielt wird. Durch die Verwendung der Ausgabedaten aus dem ersten Auftrag als Manifest für den zweiten Auftrag können Sie die Ergebnisse der zwei Aufträge in einer Ausgabedatei für eine einfachere Verarbeitung durch Ihre Anwendungen konsolidieren.

Die Ausgabedatendatei wird in regelmäßigen Abständen in den Ausgabespeicherort geschrieben, während der Auftrag noch ausgeführt wird. Diese Zwischendateien enthalten eine Zeile für jede Zeile in der Manifestdatei. Wenn ein Objekt gekennzeichnet ist, wird die Bezeichnung eingeschlossen. Wenn das Objekt nicht gekennzeichnet wurde, wird es in die Zwischenausgabedatei genauso wie die Manifestdatei geschrieben.

Ausgabeverzeichnisse

Ground Truth erstellt mehrere Verzeichnisse in Ihrem Amazon–S3-Ausgabepfad. Diese Verzeichnisse enthalten die Ergebnisse Ihres Kennzeichnungsauftrags und andere Artefakte des Auftrags. Das Top-Level-Verzeichnis für einen Kennzeichnungsauftrag erhält den gleichen Namen wie Ihr Kennzeichnungsauftrag; die Ausgabeverzeichnisse werden darunter platziert. Wenn Sie beispielsweise den Kennzeichnungsauftrag find-people genannt haben, befindet sich die Ausgabe in den folgenden Verzeichnissen:

s3://AWSDOC-EXAMPLE-BUCKET/find-people/activelearning s3://AWSDOC-EXAMPLE-BUCKET/find-people/annotations s3://AWSDOC-EXAMPLE-BUCKET/find-people/inference s3://AWSDOC-EXAMPLE-BUCKET/find-people/manifests s3://AWSDOC-EXAMPLE-BUCKET/find-people/training

Jedes Verzeichnis enthält die folgende Ausgabe:

Verzeichnis für aktives Lernen

Das activelearning-Verzeichnis ist nur vorhanden, wenn Sie die automatisierte Datenkennzeichnung verwenden. Es enthält die Eingabe- und Ausgabevalidierung, die für die automatisierte Datenkennzeichnung festgelegt sind, und den Eingabe- und Ausgabeordner für automatisch gekennzeichnete Daten.

Verzeichnis für Anmerkungen

Das annotations-Verzeichnis enthält alle Anmerkungen der Arbeitskräfte. Dies sind die Antworten von einzelnen Workern, die nicht in eine einzige Bezeichnung für das Datenobjekt konsolidiert wurden.

Es gibt drei Unterverzeichnisse im annotations-Verzeichnis.

  • Das erste, worker-response, enthält die Antworten von einzelnen Workern. Dieses enthält für jede Iteration ein Unterverzeichnis, das wiederum ein Unterverzeichnis für jedes Datenobjekt in dieser Iteration enthält. Die Antwortdaten von Auftragnehmern für jedes Datenobjekt werden in einer JSON-Datei mit Zeitstempel gespeichert, die die Antworten enthält, die von jedem Auftragnehmer für dieses Datenobjekt gesendet wurden, und, falls Sie private Arbeitskräfte einsetzen, Metadaten über diese Auftragnehmer. Weitere Informationen zu diesen Metadaten finden Sie unter Metadaten von Auftragnehmern.

  • Das zweite, consolidated-annotation, enthält die Informationen, die erforderlich sind, um die Anmerkungen im aktuellen Stapel in Bezeichnungen für Ihre Datenobjekte zu konsolidieren.

  • Die dritte, intermediate, enthält das Ausgabemanifest für den aktuellen Stapel mit allen abgeschlossenen Bezeichnungen. Diese Datei wird aktualisiert, während die Bezeichnung für jedes Datenobjekt abgeschlossen wird.

Anmerkung

Es wird empfohlen, keine Dateien zu verwenden, die nicht in der Dokumentation erwähnt werden.

Inferenz-Verzeichnis

Das inference-Verzeichnis ist nur vorhanden, wenn Sie die automatisierte Datenkennzeichnung verwenden. Dieses Verzeichnis enthält die Eingabe- und Ausgabedateien für die SageMaker-Stapeltransformation, die während der Kennzeichnung der Datenobjekte verwendet wurde.

Manifestverzeichnis

Das manifest-Verzeichnis enthält das Ausgabemanifest von Ihrem Kennzeichnungsauftrag. Es gibt ein Unterverzeichnis im Manifestverzeichnis, und zwar: output. Das output-Verzeichnis enthält die Ausgabemanifestdatei für Ihren Kennzeichnungsauftrag. Die Datei erhält die Bezeichnung output.manifest.

Schulungsverzeichnis

Das training-Verzeichnis ist nur vorhanden, wenn Sie die automatisierte Datenkennzeichnung verwenden. Dieses Verzeichnis enthält die Eingabe- und Ausgabedateien, die für die Schulung des automatisierten Datenkennzeichnungsmodells verwendet werden.

Zuverlässigkeitswert

Wenn mehrere Auftragnehmer eine einzelne Aufgabe mit Anmerkungen versehen haben, ergibt sich die Bezeichnung aus der Anmerkungskonsolidierung. Ground Truth berechnet einen Zuverlässigkeitswert für jede Bezeichnung. Der Zuverlässigkeitswert ist eine Zahl zwischen 0 und 1, die angibt, wie zuverlässig Ground Truth in der Bezeichnung ist. Sie können den Zuverlässigkeitswert verwenden, um gekennzeichnete Datenobjekte untereinander zu vergleichen, und zur Identifizierung der unzuverlässigsten oder zuverlässigsten Bezeichnungen.

Sie sollten den Wert für die Zuverlässigkeitsbewertung nicht als absoluten Wert interpretieren oder Zuverlässigkeitswerte mit anderen Kennzeichnungsaufträgen vergleichen. Beispiel: Wenn alle Zuverlässigkeitswerte zwischen 0,98 und 0,998 liegen, sollten Sie die Datenobjekte nur untereinander vergleichen und sich nicht auf die hohen Zuverlässigkeitswerte verlassen.

Sie sollten die Zuverlässigkeitswerte von Menschen gekennzeichneten Datenobjekten und automatisch gekennzeichneten Datenobjekten nicht vergleichen. Die Zuverlässigkeitswerte für Menschen werden unter Verwendung der Anmerkungskonsolidierungsfunktion für die Aufgabe berechnet, die Zuverlässigkeitswerte für automatisierte Kennzeichnung hingegen werden mithilfe eines Modells berechnet, das Objektfunktionen beinhaltet. Die beiden Modelle haben in der Regel unterschiedliche Skalierungen und durchschnittliche Zuverlässigkeit.

Für einen Kennzeichnungsauftrag mit Begrenzungsrahmen berechnet Ground Truth einen Zuverlässigkeitswert pro Rahmen. Sie können Zuverlässigkeitswerte innerhalb eines Bildes oder auf mehreren Bildern für den gleichen Kennzeichnungstyp (menschlich oder automatisch) vergleichen. Sie können keine Zuverlässigkeitswerte für Kennzeichnungsaufträge vergleichen.

Wenn ein einzelner Auftragnehmer eine Aufgabe verarbeitet (NumberOfHumanWorkersPerDataObject ist auf 1 festgelegt; in der Konsole geben Sie 1 für Anzahl von Auftragnehmern pro Datensatz-Objekt ein), wird der Zuverlässigkeitswert auf 0.00 festgelegt.

Metadaten von Auftragnehmern

Ground Truth bietet Informationen, mit denen Sie einzelne Auftragnehmer in Aufgabenausgabedaten verfolgen können. Die folgenden Daten befinden sich in den worker-response-Verzeichnissen unter Verzeichnis für Anmerkungen:

  • acceptanceTime ist der Zeitpunkt, zu dem der Auftragnehmer die Aufgabe angenommen hat. Das Format dieses Datums- und Zeitstempels YYYY-MM-DDTHH:MM:SS.mmmZ bezieht sich auf Jahr (YYYY), Monat (MM), Tag (DD), Stunde (HH), Minute (MM), Sekunde (SS) und Millisekunde (mmm). Datum und Uhrzeit werden durch ein T getrennt.

  • submissionTime ist die Uhrzeit, zu der der Auftragnehmer ihre Anmerkungen mit der Schaltfläche Absenden gesendet hat. Das Format dieses Datums- und Zeitstempels YYYY-MM-DDTHH:MM:SS.mmmZ bezieht sich auf Jahr (YYYY), Monat (MM), Tag (DD), Stunde (HH), Minute (MM), Sekunde (SS) und Millisekunde (mmm). Datum und Uhrzeit werden durch ein T getrennt.

  • timeSpentInSeconds gibt die Gesamtzeit in Sekunden an, die ein Auftragnehmer aktiv an dieser Aufgabe gearbeitet hat. Diese Metrik beinhaltet nicht die Zeit, in der ein Auftragnehmer die Arbeit unterbrochen oder eine Pause gemacht hat.

  • Die workerId ist für jeden Worker spezifisch.

  • Wenn Sie private Arbeitskräfte verwenden, wird in workerMetadata Folgendes angezeigt.

    • identityProviderType ist der Service, der für die Verwaltung der privaten Arbeitskräfte verwendet wird.

    • issuer ist der Cognito-Benutzerpool oder der OIDC-Identitätsanbieter (IdP), der mit dem Arbeitsteam verknüpft ist, das dieser menschlichen Überprüfungsaufgabe zugewiesen ist.

    • Eine eindeutige sub-Kennung, der sich auf den Auftragnehmer bezieht. Wenn Sie mit Amazon Cognito eine Belegschaft erstellen, können Sie mit dieser ID mithilfe von Amazon Cognito Details zu diesem Auftragnehmer (z. B. den Namen oder den Benutzernamen) abrufen. Informationen hierzu finden Sie unter Verwalten und Suchen von Benutzerkonten im Amazon Cognito-Entwicklerhandbuch.

Im Folgenden finden Sie ein Beispiel für die Ausgabe, die Sie sehen können, wenn Sie Amazon Cognito verwenden, um private Arbeitskräfte zu erstellen. Dies ist im identityProviderType identifiziert.

"submissionTime": "2020-12-28T18:59:58.321Z", "acceptanceTime": "2020-12-28T18:59:15.191Z", "timeSpentInSeconds": 40.543, "workerId": "a12b3cdefg4h5i67", "workerMetadata": { "identityData": { "identityProviderType": "Cognito", "issuer": "https://cognito-idp.aws-region.amazonaws.com/aws-region_123456789", "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" } }

Im Folgenden finden Sie ein Beispiel für die workerMetadata, die Sie sehen können, wenn Sie einen eigenen OIDC-IdP verwenden, um private Arbeitskräfte zu erstellen:

"workerMetadata": { "identityData": { "identityProviderType": "Oidc", "issuer": "https://example-oidc-ipd.com/adfs", "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" } }

Weitere Informationen zur Verwendung von privaten Arbeitskräften finden Sie unter Verwenden von privaten Arbeitskräften.

Ausgabemetadaten

Die Ausgabe von jedem Auftrag enthält Metadaten über die Bezeichnung, die Datenobjekten zugewiesen ist. Diese Elemente sind für alle Aufträge mit geringfügigen Änderungen gleich. Im folgenden Beispiel werden die Metadaten-Elemente gezeigt:

"confidence": 0.00, "type": "groundtruth/image-classification", "job-name": "identify-animal-species", "human-annotated": "yes", "creation-date": "2020-10-18T22:18:13.527256"

Die Elemente haben die folgende Bedeutung:

  • confidence – die Zuverlässigkeit, die Ground Truth aufweist, dass die Kennzeichnung korrekt ist. Weitere Informationen finden Sie unter Zuverlässigkeitswert.

  • type – der Typ des Klassifizierungsauftrags. Informationen zu Auftragstypen finden Sie unter Integrierte Aufgabentypen.

  • job-name – der Name, den Sie dem Auftrag bei seiner Erstellung zugewiesen haben.

  • human-annotated – gibt an, ob das Datenobjekt von einem Menschen oder durch automatisches Daten-Labeling beschriftet wurde. Weitere Informationen finden Sie unter Automatisieren des Daten-Labeling.

  • creation-date – das Datum und die Uhrzeit, zu der die Kennzeichnung erstellt wurde.

Ausgabe des Klassifizierungsauftrags

Im Folgenden sehen Sie Beispielausgaben (Ausgabemanifestdateien) aus einem Bildklassifizierungsauftrag und einem Textklassifizierungsauftrag. Sie enthalten die Kennzeichnung, die Ground Truth dem Datenobjekt zugeordnet hat, den Wert für die Kennzeichnung und Metadaten zur Beschreibung der Kennzeichnung.

Zusätzlich zu den standardmäßigen Metadatenelementen umfassen die Metadaten für einen Klassifizierungsauftrag den Textwert der Bezeichnungsklasse. Weitere Informationen finden Sie unter Bildklassifikation - MXNet.

Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab.

{ "source-ref":"s3://AWSDOC-EXAMPLE-BUCKET/example_image.jpg", "species":"0", "species-metadata": { "class-name": "dog", "confidence": 0.00, "type": "groundtruth/image-classification", "job-name": "identify-animal-species", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256" } }
{ "source":"The food was delicious", "mood":"1", "mood-metadata": { "class-name": "positive", "confidence": 0.8, "type": "groundtruth/text-classification", "job-name": "label-sentiment", "human-annotated": "yes", "creation-date": "2020-10-18T22:18:13.527256" } }

Ausgabe von Multi-Label-Klassifizierungsaufträgen

Im Folgenden finden Sie Beispiel-Ausgabemanifestdateien aus einem Multi-Label-Bildklassifizierungsauftrag und einem Multi-Label-Textklassifizierungsauftrag. Diese umfassen die Kennzeichnungen, die Ground Truth dem Datenobjekt zugewiesen hat (z. B. das Bild oder Textstück), sowie Metadaten, die die Kennzeichnungen beschreiben, die dem Auftragnehmer beim Abschluss der Kennzeichnungsaufgabe angezeigt wurden.

Der Parameter Kennzeichnungsattributname (z. B. image-label-attribute-name) enthält ein Array aller Kennzeichnungen, die von mindestens einem der Auftragnehmer ausgewählt wurden, die diese Aufgabe abgeschlossen haben. Dieses Array enthält Schlüssel aus Ganzzahlen (z. B. [1,0,8]), die den Kennzeichnungen in class-map entsprechen. Im Beispiel für die Multi-Label-Bildklassifizierung wurden bicycle, person und clothing von mindestens einem der Auftragnehmer ausgewählt, die die Kennzeichnungsaufgabe für das Bild exampleimage.jpg abgeschlossen haben.

Die confidence-map zeigt den Konfidenzwert an, den Ground Truth den einzelnen Bezeichnungen zugeordnet hat, die von einem Auftragnehmer ausgewählt wurden. Weitere Informationen zu den Ground Truth-Konfidenzwerten finden Sie unter Zuverlässigkeitswert.

Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab.

Im Folgenden finden Sie ein Beispiel für eine Ausgabemanifestdatei für eine Multi-Label-Bildklassifizierung.

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_image.jpg", "image-label-attribute-name":[1,0,8], "image-label-attribute-name-metadata": { "job-name":"labeling-job/image-label-attribute-name", "class-map": { "1":"bicycle","0":"person","8":"clothing" }, "human-annotated":"yes", "creation-date":"2020-02-27T21:36:25.000201", "confidence-map": { "1":0.95,"0":0.77,"8":0.2 }, "type":"groundtruth/image-classification-multilabel" } }

Im Folgenden finden Sie ein Beispiel für eine Ausgabemanifestdatei für eine Multi-Label-Textklassifizierung. In diesem Beispiel wurden approving, sad und critical von mindestens einem der Auftragnehmer ausgewählt, die die Kennzeichnungsaufgabe für das in AWSDOC-EXAMPLE-BUCKET gefundene Objekt exampletext.txt abgeschlossen haben.

{ "source-ref": "AWSDOC-EXAMPLE-BUCKET/text_file.txt", "text-label-attribute-name":[1,0,4], "text-label-attribute-name-metadata": { "job-name":"labeling-job/text-label-attribute-name", "class-map": { "1":"approving","0":"sad","4":"critical" }, "human-annotated":"yes", "creation-date":"2020-02-20T21:36:25.000201", "confidence-map": { "1":0.95,"0":0.77,"4":0.2 }, "type":"groundtruth/text-classification-multilabel" } }

Ausgabe des Begrenzungsrahmenauftrags

Im Folgenden finden Sie eine Beispielausgabe (Ausgabemanifestdatei) aus einem Auftrag mit Begrenzungsrahmen. Für diese Aufgabe werden drei Begrenzungsrahmen zurückgegeben. Der Kennzeichnungswert enthält Informationen über die Größe des Bildes und den Speicherort der Begrenzungsrahmen.

Das class_id-Element ist der Index der Rahmenklasse in der Liste der verfügbaren Klassen für die Aufgabe. Das class-map-Metadatenelement enthält den Text der Klasse.

Die Metadaten verfügen über einen separaten Zuverlässigkeitswert für jeden Begrenzungsrahmen. Die Metadaten enthalten auch das class-map-Element, das die class_id dem Textwert der Klasse zuweist. Weitere Informationen finden Sie unter Objekterkennung – MXNet.

Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab.

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_image.png", "bounding-box-attribute-name": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 20, "top": 20, "width": 30, "height": 30} ] }, "bounding-box-attribute-name-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-dogs-and-toys" } }

Die Ausgabe eines Anpassungsauftrags für Begrenzungsrahmen sieht wie der folgende JSON aus. Beachten Sie, dass das ursprüngliche JSON intakt bleibt und zwei neue Aufträge aufgelistet werden, deren ursprünglichen Attributsnamen jeweils „adjust-“ vorangestellt wird.

{ "source-ref": "S3 bucket location", "bounding-box-attribute-name": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 20, "top": 20, "width": 30, "height": 30} ] }, "bounding-box-attribute-name-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-dogs-and-toys" }, "adjusted-bounding-box": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 110, "top": 135, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 10, "top": 10, "width": 30, "height": 30} ] }, "adjusted-bounding-box-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "job-name": "adjust-bounding-boxes-on-dogs-and-toys", "adjustment-status": "adjusted" } }

In dieser Ausgabe ändert sich zwar der type des Auftrags nicht, es wird jedoch ein adjustment-status-Feld hinzugefügt. Dieses Feld weist den Wert adjusted oder unadjusted auf. Wenn mehrere Worker das Objekt überprüft haben und mindestens einer die Kennzeichnung angepasst hat, lautet der Status adjusted.

Named Entity Recognition

Im Folgenden finden Sie ein Beispiel für eine Ausgabemanifestdatei aus einer Kennzeichnungsaufgabe zur Erkennung benannter Entitäten (Named Entity Recognition, NER). Für diese Aufgabe werden sieben entities zurückgegeben.

Im Ausgabemanifest enthält das JSON-Objekt annotations eine Liste der labels (Kennzeichnungskategorien), die Sie angegeben haben.

Die Antworten der Auftragnehmer befinden sich in einer Liste mit dem Namen entities. Jede Entität in dieser Liste ist ein JSON-Objekt, das einen label-Wert enthält, der einem Wert in der labels-Liste entspricht, einen startOffset-Ganzzahlwert für den bezeichneten Anfang des Unicode-Offset-Bereichs und einen endOffset-Ganzzahlwert für das Ende des Unicode-Offset-Bereichs.

Die Metadaten verfügen über einen separaten Zuverlässigkeitswert für jede Entität. Wenn ein einzelner Auftragnehmer jedes Datenobjekt beschriftet, ist der Zuverlässigkeitswert für jede Entität Null.

Der rote, kursiv gedruckte Text in den folgenden Beispielen hängt von den Eingaben des Kennzeichnungsauftrags und den Antworten der Arbeitnehmer ab.

{ "source": "Amazon SageMaker is a cloud machine-learning platform that was launched in November 2017. SageMaker enables developers to create, train, and deploy machine-learning (ML) models in the cloud. SageMaker also enables developers to deploy ML models on embedded systems and edge-devices", "ner-labeling-job-attribute-name": { "annotations": { "labels": [ { "label": "Date", "shortDisplayName": "dt" }, { "label": "Verb", "shortDisplayName": "vb" }, { "label": "Thing", "shortDisplayName": "tng" }, { "label": "People", "shortDisplayName": "ppl" } ], "entities": [ { "label": "Thing", "startOffset": 22, "endOffset": 53 }, { "label": "Thing", "startOffset": 269, "endOffset": 281 }, { "label": "Verb", "startOffset": 63, "endOffset": 71 }, { "label": "Verb", "startOffset": 228, "endOffset": 234 }, { "label": "Date", "startOffset": 75, "endOffset": 88 }, { "label": "People", "startOffset": 108, "endOffset": 118 }, { "label": "People", "startOffset": 214, "endOffset": 224 } ] } }, "ner-labeling-job-attribute-name-metadata": { "job-name": "labeling-job/example-ner-labeling-job", "type": "groundtruth/text-span", "creation-date": "2020-10-29T00:40:39.398470", "human-annotated": "yes", "entities": [ { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 }, { "confidence": 0 } ] } }

Ausgabe des Auftrags zur Bezeichnungsverifizierung

Die Ausgabe (Ausgabemanifestdatei) eines Verifizierungsauftrags für Begrenzungsrahmen unterschiedet sich von der Ausgabe eines Anmerkungsauftrags für Begrenzungsrahmen. Das liegt daran, dass die Auftragnehmer einen anderen Aufgabentyp haben. Sie kennzeichnen keine Objekte, sondern bewerten die Genauigkeit der vorherigen Kennzeichnung, beurteilen diese und geben daraufhin dieses Urteil sowie vielleicht einige Kommentare ab.

Wenn menschliche Mitarbeiter vorherige Bezeichnungen für Begrenzungsrahmen überprüfen oder anpassen, sieht die Ausgabe eines Verifizierungsauftrags wie das folgende JSON aus. Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab.

{ "source-ref":"s3://AWSDOC-EXAMPLE-BUCKET/image_example.png", "bounding-box-attribute-name": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 20, "top": 20, "width": 30, "height": 30} ] }, "bounding-box-attribute-name-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-dogs-and-toys" }, "verify-bounding-box-attribute-name":"1", "verify-bounding-box-attribute-name-metadata": { "class-name": "bad", "confidence": 0.93, "type": "groundtruth/label-verification", "job-name": "verify-bounding-boxes", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "worker-feedback": [ {"comment": "The bounding box on the bird is too wide on the right side."}, {"comment": "The bird on the upper right is not labeled."} ] } }

Obwohl der type der ursprünglichen Begrenzungsrahmenausgabe groundtruth/object-detection war, lautet der neue type groundtruth/label-verification. Beachten Sie auch, dass das worker-feedback-Array Worker-Kommentare bereitstellt. Wenn der Worker keine Kommentare bereitstellt, werden die leeren Felder während der Konsolidierung ausgeschlossen.

Ausgabe des semantischen Segmentierungsauftrags

Es folgt die Ausgabemanifestdatei für einen semantischen Segmentierungskennzeichnungsauftrag. Der Wert der Bezeichnung für diesen Auftrag ist eine Referenz auf eine PNG-Datei in einem S3-Bucket.

Zusätzlich zu den Standardelementen enthalten die Metadaten für die Bezeichnung eine Farbkarte, die definiert, welche Farbe für die Kennzeichnung des Bildes verwendet wurde, den Klassennamen, der mit der Farbe verknüpft ist, und den Zuverlässigkeitswert für jede Farbe. Weitere Informationen finden Sie unter Semantischer Segmentierungsalgorithm.

Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab.

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_city_image.png", "city-streets-ref": "S3 bucket location", "city-streets-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "confidence": 0.9, "hex-color": "#ffffff" }, "1": { "class-name": "buildings", "confidence": 0.9, "hex-color": "#2acf59" }, "2": { "class-name": "road", "confidence": 0.9, "hex-color": "#f28333" } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "label-city-streets", }, "verify-city-streets-ref":"1", "verify-city-streets-ref-metadata": { "class-name": "bad", "confidence": 0.93, "type": "groundtruth/label-verification", "job-name": "verify-city-streets", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "worker-feedback": [ {"comment": "The mask on the leftmost building is assigned the wrong side of the road."}, {"comment": "The curb of the road is not labeled but the instructions say otherwise."} ] } }

Die Vertrauensstellung wird pro Abbild bewertet. Die Vertrauenswerte sind für alle Klassen in einem Abbild gleich.

Die Ausgabe eines semantischen Segmentierung-Anpassungsauftrags sollte dem folgenden JSON ähnlich sehen.

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_city_image.png", "city-streets-ref": "S3 bucket location", "city-streets-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "confidence": 0.9, "hex-color": "#ffffff" }, "1": { "class-name": "buildings", "confidence": 0.9, "hex-color": "#2acf59" }, "2": { "class-name": "road", "confidence": 0.9, "hex-color": "#f28333" } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "label-city-streets", }, "adjusted-city-streets-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_city_image.png", "adjusted-city-streets-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "confidence": 0.9, "hex-color": "#ffffff" }, "1": { "class-name": "buildings", "confidence": 0.9, "hex-color": "#2acf59" }, "2": { "class-name": "road", "confidence": 0.9, "hex-color": "#f28333" } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "job-name": "adjust-label-city-streets", } }

Ausgabe der Video-Frame-Objekterkennung

Es folgt die Ausgabemanifestdatei für einen Kennzeichnungsauftrag der Video-Frame-Objektverfolgung. Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab.

Zusätzlich zu den Standardelementen enthalten die Metadaten eine Klassenzuordnung, die jede Klasse auflistet, die mindestens eine Bezeichnung in der Sequenz enthält. Zu den Metadaten gehört auch der Name job-name, den Sie dem Kennzeichnungsauftrag zugewiesen haben. Wenn bei Anpassungsaufgaben ein oder mehrere Begrenzungsrahmen geändert wurden, gibt es in den Metadaten für Prüfungs-Workflows einen adjustment-status-Parameter, der auf adjusted festgelegt ist.

{ "source-ref": "s3://DOC-EXAMPLE-BUCKET/example-path/input-manifest.json", "CarObjectDetection-ref": "s3://AWSDOC-EXAMPLE-BUCKET/output/labeling-job-name/annotations/consolidated-annotation/output/0/SeqLabel.json", "CarObjectDetection-ref-metadata": { "class-map": { "0": "car", "1": "bus" }, "job-name": "labeling-job/labeling-job-name", "human-annotated": "yes", "creation-date": "2021-09-29T05:50:35.566000", "type": "groundtruth/video-object-detection" } }

Ground Truth erstellt eine Ausgabesequenzdatei für jede Sequenz von Video-Frames, die beschriftet wurde. Jede Ausgabesequenzdatei enthält Folgendes:

  • Alle Anmerkungen für alle Frames in einer Sequenz in der detection-annotations-Liste der JSON-Objekte.

  • Für jeden Frame, der von einem Auftragnehmer mit Anmerkungen versehen wurde, der Name der Frame-Datei (frame), die Nummer (frame-no), eine Liste der JSON-Objekte, die Anmerkungen enthalten (annotations), und, falls zutreffend, frame-attributes. Der Name dieser Liste wird durch den Aufgabentyp definiert, den Sie verwenden: polylines, polygons, keypoints und für Begrenzungsrahmen annotations.

    Jedes JSON-Objekt enthält Informationen zu einer einzelnen Anmerkung und der zugehörigen Bezeichnung. In der folgenden Tabelle sind die Parameter aufgeführt, die Sie für jeden Video-Frame-Aufgabentyp sehen werden.

    Aufgabentyp Parameter

    Bounding Box

    Abmessungen des Rahmens: height und width

    Rahmen obere linke Ecke Pixelposition: top und left

    Schlüsselpunkt

    Eckpunkte des Schlüsselpunkts: { "x": int, "y": int }

    Polygon

    Eine Liste der Polygoneckpunkte: vertices

    Polygoneckpunkte: { "x": int, "y": int }

    Ein Polygon hat eine geschlossene Form, daher ist der erste Punkt auch der letzte Punkt.

    Polyline

    Eine Liste der Polygoneckpunkte: vertices

    Polylinieneckpunkte: { "x": int, "y": int }

    Zusätzlich zu den für den Aufgabentyp spezifischen Werten werden Sie in jedem JSON-Objekt Folgendes sehen:

    • Werte aller label-category-attributes, die für diese Bezeichnung angegeben wurden.

    • Die class-id des Rahmens. Verwenden Sie die class-map-Datei in der Ausgabemanifestdatei, um zu sehen, welcher Kennzeichnungskategorie diese ID zugeordnet ist.

Im Folgenden finden Sie ein Beispiel für eine SeqLabel.json-Datei aus einem Kennzeichnungsauftrag der Video-Frame-Objekterkennung mit Begrenzungsrahmen. Diese Datei befindet sich unter s3://your-output-bucket/output-prefix/annotations/consolidated-annotation/output/annotation-number/.

{ "detection-annotations": [ { "annotations": [ { "height": 41, "width": 53, "top": 152, "left": 339, "class-id": "1", "label-category-attributes": { "occluded": "no", "size": "medium" } }, { "height": 24, "width": 37, "top": 148, "left": 183, "class-id": "0", "label-category-attributes": { "occluded": "no", } } ], "frame-no": 0, "frame": "frame_0000.jpeg", "frame-attributes": {name: value, name: value} }, { "annotations": [ { "height": 41, "width": 53, "top": 152, "left": 341, "class-id": "0", "label-category-attributes": {} }, { "height": 24, "width": 37, "top": 141, "left": 177, "class-id": "0", "label-category-attributes": { "occluded": "no", } } ], "frame-no": 1, "frame": "frame_0001.jpeg", "frame-attributes": {name: value, name: value} } ] }

Ausgabe der Video-Frame-Objektverfolgung

Es folgt die Ausgabemanifestdatei für einen Kennzeichnungsauftrag der Video-Frame-Objektverfolgung. Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab.

Zusätzlich zu den Standardelementen enthalten die Metadaten eine Klassenzuordnung, die jede Klasse auflistet, die mindestens eine Bezeichnung in der Sequenz enthält. Zu den Metadaten gehört auch der Name job-name, den Sie dem Kennzeichnungsauftrag zugewiesen haben. Wenn bei Anpassungsaufgaben ein oder mehrere Begrenzungsrahmen geändert wurden, gibt es in den Metadaten für Prüfungs-Workflows einen adjustment-status-Parameter, der auf adjusted festgelegt ist.

{ "source-ref": "s3://DOC-EXAMPLE-BUCKET/example-path/input-manifest.json", "CarObjectTracking-ref": "s3://AWSDOC-EXAMPLE-BUCKET/output/labeling-job-name/annotations/consolidated-annotation/output/0/SeqLabel.json", "CarObjectTracking-ref-metadata": { "class-map": { "0": "car", "1": "bus" }, "job-name": "labeling-job/labeling-job-name", "human-annotated": "yes", "creation-date": "2021-09-29T05:50:35.566000", "type": "groundtruth/video-object-tracking" } }

Ground Truth erstellt eine Ausgabesequenzdatei für jede Sequenz von Video-Frames, die beschriftet wurde. Jede Ausgabesequenzdatei enthält Folgendes:

  • Alle Anmerkungen für alle Frames in einer Sequenz in der tracking-annotations-Liste der JSON-Objekte.

  • Für jeden Frame, der von einem Auftragnehmer mit Anmerkungen versehen wurde, der Frame (frame), die Nummer (frame-no), eine Liste der JSON-Objekte, die Anmerkungen enthalten (annotations), und, falls zutreffend, frame-attributes. Der Name dieser Liste wird durch den Aufgabentyp definiert, den Sie verwenden: polylines, polygons, keypoints und für Begrenzungsrahmen annotations.

    Jedes JSON-Objekt enthält Informationen zu einer einzelnen Anmerkung und der zugehörigen Bezeichnung. In der folgenden Tabelle sind die Parameter aufgeführt, die Sie für jeden Video-Frame-Aufgabentyp sehen werden.

    Aufgabentyp Parameter

    Bounding Box

    Abmessungen des Rahmens: height und width

    Rahmen obere linke Ecke Pixelposition: top und left

    Schlüsselpunkt

    Eckpunkte des Schlüsselpunkts: { "x": int, "y": int }

    Polygon

    Eine Liste der Polygoneckpunkte: vertices

    Polygoneckpunkte: { "x": int, "y": int }

    Ein Polygon hat eine geschlossene Form, daher ist der erste Punkt auch der letzte Punkt.

    Polyline

    Eine Liste der Polygoneckpunkte: vertices

    Polylinieneckpunkte: { "x": int, "y": int }

    Zusätzlich zu den für den Aufgabentyp spezifischen Werten werden Sie in jedem JSON-Objekt Folgendes sehen:

    • Werte aller label-category-attributes, die für diese Bezeichnung angegeben wurden.

    • Die class-id des Rahmens. Verwenden Sie die class-map-Datei in der Ausgabemanifestdatei, um zu sehen, welcher Kennzeichnungskategorie diese ID zugeordnet ist.

    • Eine object-id, die eine Instance einer Bezeichnung identifiziert. Diese ID ist für alle Frames dieselbe, wenn ein Auftragnehmer dieselbe Instance eines Objekts in mehreren Frames identifiziert hat. Wenn ein Auto beispielsweise in mehreren Frames angezeigt wird, hätten alle Begrenzungsfelder, die zur Identifizierung dieses Autos verwendet werden, dieselbe object-id.

    • Der object-name, der die Instance-ID dieser Anmerkung ist.

Im Folgenden finden Sie ein Beispiel für eine SeqLabel.json-Datei aus einem Kennzeichnungsauftrag der Video-Frame-Objektverfolgung mit Begrenzungsrahmen. Diese Datei befindet sich unter s3://your-output-bucket/output-prefix/annotations/consolidated-annotation/output/annotation-number/.

{ "tracking-annotations": [ { "annotations": [ { "height": 36, "width": 46, "top": 178, "left": 315, "class-id": "0", "label-category-attributes": { "occluded": "no" }, "object-id": "480dc450-c0ca-11ea-961f-a9b1c5c97972", "object-name": "car:1" } ], "frame-no": 0, "frame": "frame_0001.jpeg", "frame-attributes": {} }, { "annotations": [ { "height": 30, "width": 47, "top": 163, "left": 344, "class-id": "1", "label-category-attributes": { "occluded": "no", "size": "medium" }, "object-id": "98f2b0b0-c0ca-11ea-961f-a9b1c5c97972", "object-name": "bus:1" }, { "height": 28, "width": 33, "top": 150, "left": 192, "class-id": "0", "label-category-attributes": { "occluded": "partially" }, "object-id": "480dc450-c0ca-11ea-961f-a9b1c5c97972", "object-name": "car:1" } ], "frame-no": 1, "frame": "frame_0002.jpeg", "frame-attributes": {name: value, name: value} } ] }

Ausgabe der semantischen 3D-Punktwolkensegmentierung

Es folgt die Ausgabemanifestdatei für einen semantischen Segmentierungskennzeichnungsauftrag für eine 3D-Punktwolke.

Zusätzlich zu den Standardelementen enthalten die Metadaten für die Bezeichnung eine Farbkarte, die definiert, welche Farbe für die Kennzeichnung des Bildes verwendet wird, den Klassennamen, der mit der Farbe verknüpft ist, und den Zuverlässigkeitswert für jede Farbe. Darüber hinaus gibt es einen adjustment-status-Parameter in den Metadaten für Prüfungs-Workflows, der auf adjusted festgelegt wird, wenn die Farbmaske geändert wird. Wenn Sie der Konfigurationsdatei für die Kennzeichnungskategorie eine oder mehrere frameAttributes hinzugefügt haben, befinden sich die Auftragnehmerantworten für Frame-Attribute im JSON-Objekt, dataset-object-attributes.

Der Parameter your-label-attribute-ref enthält den Speicherort einer komprimierten Datei mit der Erweiterung .zlib. Wenn Sie diese Datei entpacken, enthält sie ein Array. Jeder Index im Array entspricht dem Index eines mit Anmerkungen versehenen Punkts in der Eingabepunktwolke. Der Wert des Arrays an einem bestimmten Index gibt die Klasse des Punkts an demselben Index in der Punktwolke an, basierend auf der semantischen Farbkarte, die im color-map-Parameter von metadata gefunden wurde.

Sie können Python-Code ähnlich dem folgenden Beispiel verwenden, um eine .zlib-Datei zu entpacken:

import zlib from array import array # read the label file compressed_binary_file = open(zlib_file_path/file.zlib, 'rb').read() # uncompress the label file binary_content = zlib.decompress(compressed_binary_file) # load labels to an array my_int_array_data = array('B', binary_content); print(my_int_array_data)

Der obige Codeblock erzeugt eine Ausgabe ähnlich der folgenden. Jedes Element des gedruckten Arrays enthält die Klasse eines Punktes an diesem Index in der Punktwolke. In Beispiel bedeutet my_int_array_data[0] = 1 point[0] in der Eingabe-Punktwolke, die Klasse 1 hat. Im folgenden Beispiel für eine Ausgabemanifestdatei entspricht Klasse 0 "Background", 1 mit Car und 2 mitPedestrian.

>> array('B', [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

Nachfolgend finden Sie ein Beispiel einer Ausgabemanifestdatei eines 3D-Punktwolken-Kennzeichnungsauftrags mit semantischer Segmentierung. Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab.

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/examplefolder/frame1.bin", "source-ref-metadata":{ "format": "binary/xyzi", "unix-timestamp": 1566861644.759115, "ego-vehicle-pose":{...}, "prefix": "s3://AWSDOC-EXAMPLE-BUCKET/lidar_singleframe_dataset/prefix", "images": [{...}] }, "lidar-ss-label-attribute-ref": "s3://your-output-bucket/labeling-job-name/annotations/consolidated-annotation/output/dataset-object-id/filename.zlib", "lidar-ss-label-attribute-ref-metadata": { 'color-map': { "0": { "class-name": "Background", "hex-color": "#ffffff", "confidence": 0.00 }, "1": { "class-name": "Car", "hex-color": "#2ca02c", "confidence": 0.00 }, "2": { "class-name": "Pedestrian", "hex-color": "#1f77b4", "confidence": 0.00 }, "3": { "class-name": "Tree", "hex-color": "#ff7f0e", "confidence": 0.00 } }, 'type': 'groundtruth/point_cloud_single_frame_semantic_segmentation', 'human-annotated': 'yes', 'creation-date': '2019-11-12T01:18:14.271944', 'job-name': 'labeling-job-name', //only present for adjustment audit workflow "adjustment-status": "adjusted", // "adjusted" means the label was adjusted "dataset-object-attributes": {name: value, name: value} } }

Ausgabe der 3D-Punktwolken-Objekterkennung

Im Folgenden finden Sie eine Beispielausgabe von einem 3D-Punktwolken-Objekterkennungsauftrag. Für diesen Aufgabentyp werden die Daten zu 3D-Quadern im Parameter 3d-bounding-box in einer Liste mit dem Namen annotations zurückgegeben. In dieser Liste wird jeder 3D-Quader anhand der folgenden Informationen beschrieben.

  • Jede Klasse oder Kennzeichnungskategorie, die Sie in Ihrem Eingabemanifest angegeben haben, ist mit einer class-id verknüpft. Verwenden Sie die class-map, um die Klasse zu identifizieren, die jeder Klassen-ID zugeordnet ist.

  • Diese Klassen werden verwendet, um jedem 3D-Quader einen object-name im Format <class>:<integer> zu geben, wobei integer eine eindeutige Nummer ist, um diesen Quader im Frame zu identifizieren.

  • center-x, center-y und center-z sind die Koordinaten des Mittelpunkts des Quaders in demselben Koordinatensystem wie die 3D-Punktwolken-Eingabedaten, die in Ihrem Kennzeichnungsauftrag verwendet wurden.

  • length, width und height beschreiben die Dimensionen des Quaders.

  • yaw wird verwendet, um die Ausrichtung (Fahrkurs) des Quaders zu beschreiben.

    Anmerkung

    yaw befindet sich jetzt im kartesischen System für Rechtshänder. Da diese Funktion am 2. September 2022 19:02:17 UTC hinzugefügt wurde, können Sie die yaw-Messung in den vorherigen Ausgabedaten wie folgt umrechnen (alle Einheiten sind im Bogenmaß angegeben):

    old_yaw_in_output = pi - yaw
  • In unserer Definition befindet sich +x rechts, +y vor und +z über der Grundebene. Die Rotationsreihenfolge ist x - y - z. roll, pitch und yaw werden im kartesischen System für Rechtshänder dargestellt. roll befindet sich im 3D-Raum entlang der X-Achse, pitch befindet sich entlang der Y-Achse und yaw befindet sich entlang der Z-Achse. Alle drei sind gegen den Uhrzeigersinn ausgerichtet.

  • Wenn Sie Kennzeichnungsattribute in Ihre Eingabemanifestdatei für eine bestimmte Klasse aufgenommen haben, wird ein label-category-attributes-Parameter für alle Quader eingeschlossen, für den Auftragnehmer Kennzeichnungsattribute ausgewählt haben.

Wenn ein oder mehrere Quader geändert wurden, gibt es in den Metadaten für Prüfungs-Workflows einen adjustment-status-Parameter, der auf adjusted festgelegt ist. Wenn Sie der Konfigurationsdatei für die Kennzeichnungskategorie eine oder mehrere frameAttributes hinzugefügt haben, befinden sich die Auftragnehmerantworten für Frame-Attribute im JSON-Objekt, dataset-object-attributes.

Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab. Die Ellipsen (...) bezeichnen eine Fortsetzung dieser Liste, in der zusätzliche Objekte mit dem gleichen Format wie das fortlaufende Objekt angezeigt werden können.

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/examplefolder/frame1.txt", "source-ref-metadata":{ "format": "text/xyzi", "unix-timestamp": 1566861644.759115, "prefix": "s3://AWSDOC-EXAMPLE-BUCKET/lidar_singleframe_dataset/prefix", "ego-vehicle-pose": { "heading": { "qx": -0.02111296123795955, "qy": -0.006495469416730261, "qz": -0.008024565904865688, "qw": 0.9997181192298087 }, "position": { "x": -2.7161461413869947, "y": 116.25822288149078, "z": 1.8348751887989483 } }, "images": [ { "fx": 847.7962624528487, "fy": 850.0340893791985, "cx": 576.2129134707038, "cy": 317.2423573573745, "k1": 0, "k2": 0, "k3": 0, "k4": 0, "p1": 0, "p2": 0, "skew": 0, "unix-timestamp": 1566861644.759115, "image-path": "images/frame_0_camera_0.jpg", "position": { "x": -2.2722515189268138, "y": 116.86003310568965, "z": 1.454614668542299 }, "heading": { "qx": 0.7594754093069037, "qy": 0.02181790885672969, "qz": -0.02461725233103356, "qw": -0.6496916273040025 }, "camera_model": "pinhole" } ] }, "3d-bounding-box": { "annotations": [ { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": -2.616382013657516, "center-y": 125.04149850484193, "center-z": 0.311272296465834, "length": 2.993000265181146, "width": 1.8355260519692056, "height": 1.3233490884304047, "roll": 0, "pitch": 0, "yaw": 1.6479308313703527 }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:2", "class-id": 0, "center-x": -5.188984560617168, "center-y": 99.7954483288783, "center-z": 0.2226435567445657, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.6243170732068055 } ] }, "3d-bounding-box-metadata": { "objects": [], "class_map": { "0": "Car", }, "type": "groundtruth/point_cloud_object_detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-3d-objects", "adjustment-status": "adjusted", "dataset-object-attributes": {name: value, name: value} } }

Ausgabe der 3D-Punktwolken-Objektverfolgung

Nachfolgend finden Sie ein Beispiel für eine Ausgabemanifestdatei aus einem Kennzeichnungsauftrag der 3D-Punktwolken-Objektverfolgung. Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab. Die Ellipsen (...) bezeichnen eine Fortsetzung dieser Liste, in der zusätzliche Objekte mit dem gleichen Format wie das fortlaufende Objekt angezeigt werden können.

Zusätzlich zu den Standardelementen enthalten die Metadaten eine Klassenzuordnung, die jede Klasse auflistet, die mindestens eine Beschriftung in der Sequenz enthält. Wenn ein oder mehrere Quader geändert wurden, gibt es in den Metadaten für Prüfungs-Workflows einen adjustment-status-Parameter, der auf adjusted festgelegt ist.

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/myfolder/seq1.json", "lidar-label-attribute-ref": "s3://<CustomerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json", "lidar-label-attribute-ref-metadata": { "objects": [ { "frame-no": 300, "confidence": [] }, { "frame-no": 301, "confidence": [] }, ... ], 'class-map': {'0': 'Car', '1': 'Person'}, 'type': 'groundtruth/point_cloud_object_tracking', 'human-annotated': 'yes', 'creation-date': '2019-11-12T01:18:14.271944', 'job-name': 'identify-3d-objects', "adjustment-status": "adjusted" } }

Im obigen Beispiel befinden sich die Quaderdaten für jeden Frame in seq1.json in SeqLabel.json am Amazon–S3-Speicherort s3://<customerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json. Im Folgenden finden Sie ein Beispiel für diese Bezeichnungssequenzdatei.

Für jedes Bild in der Sequenz sehen Sie frame-number, frame-name, falls zutreffend frame-attributes und eine Liste von annotations. Diese Liste enthält 3D-Quader, die für diesen Frame gezeichnet wurden. Jede Anmerkung enthält die folgenden Informationen:

  • Ein object-name im Format <class>:<integer>, bei dem class die Kennzeichnungskategorie identifiziert und integer eine eindeutige ID im gesamten Dataset darstellt.

  • Wenn Auftragnehmer einen Quader zeichnen, wird er mit einer eindeutigen object-id verknüpft, die allen Quadern zugeordnet ist, die dasselbe Objekt über mehrere Frames hinweg identifizieren.

  • Jede Klasse oder Beschriftungskategorie, die Sie in Ihrem Eingabemanifest angegeben haben, ist mit einer class-id verknüpft. Verwenden Sie die class-map, um die Klasse zu identifizieren, die jeder Klassen-ID zugeordnet ist.

  • center-x, center-y und center-z sind die Koordinaten des Mittelpunkts des Quaders in demselben Koordinatensystem wie die 3D-Punktwolken-Eingabedaten, die in Ihrem Kennzeichnungsauftrag verwendet wurden.

  • length, width und height beschreiben die Dimensionen des Quaders.

  • yaw wird verwendet, um die Ausrichtung (Fahrkurs) des Quaders zu beschreiben.

    Anmerkung

    yaw befindet sich jetzt im kartesischen System für Rechtshänder. Da diese Funktion am 2. September 2022 19:02:17 UTC hinzugefügt wurde, können Sie die yaw-Messung in den vorherigen Ausgabedaten wie folgt umrechnen (alle Einheiten sind im Bogenmaß angegeben):

    old_yaw_in_output = pi - yaw
  • In unserer Definition befindet sich +x rechts, +y vor und +z über der Grundebene. Die Rotationsreihenfolge ist x - y - z. roll, pitch und yaw werden im kartesischen System für Rechtshänder dargestellt. roll befindet sich im 3D-Raum entlang der X-Achse, pitch befindet sich entlang der Y-Achse und yaw befindet sich entlang der Z-Achse. Alle drei sind gegen den Uhrzeigersinn ausgerichtet.

  • Wenn Sie Kennzeichnungsattribute in Ihre Eingabemanifestdatei für eine bestimmte Klasse aufgenommen haben, wird ein label-category-attributes-Parameter für alle Quader eingeschlossen, für den Auftragnehmer Kennzeichnungsattribute ausgewählt haben.

{ "tracking-annotations": [ { "frame-number": 0, "frame-name": "0.txt.pcd", "frame-attributes": {name: value, name: value}, "annotations": [ { "label-category-attributes": {}, "object-name": "Car:4", "class-id": 0, "center-x": -2.2906369208300674, "center-y": 103.73924823843463, "center-z": 0.37634114027023313, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.5827222214406014, "object-id": "ae5dc770-a782-11ea-b57d-67c51a0561a1" }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": -2.6451293634707413, "center-y": 124.9534455706848, "center-z": 0.5020834081743839, "length": 4, "width": 2, "height": 2.080488827301309, "roll": 0, "pitch": 0, "yaw": -1.5963335581398077, "object-id": "06efb020-a782-11ea-b57d-67c51a0561a1" }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:2", "class-id": 0, "center-x": -5.205611313118477, "center-y": 99.91731932137061, "center-z": 0.22917217081212138, "length": 3.8747142207671956, "width": 1.9999999999999918, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.5672228760316775, "object-id": "26fad020-a782-11ea-b57d-67c51a0561a1" } ] }, { "frame-number": 1, "frame-name": "1.txt.pcd", "frame-attributes": {}, "annotations": [ { "label-category-attributes": {}, "object-name": "Car:4", "class-id": 0, "center-x": -2.2906369208300674, "center-y": 103.73924823843463, "center-z": 0.37634114027023313, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.5827222214406014, "object-id": "ae5dc770-a782-11ea-b57d-67c51a0561a1" }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": -2.6451293634707413, "center-y": 124.9534455706848, "center-z": 0.5020834081743839, "length": 4, "width": 2, "height": 2.080488827301309, "roll": 0, "pitch": 0, "yaw": -1.5963335581398077, "object-id": "06efb020-a782-11ea-b57d-67c51a0561a1" }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:2", "class-id": 0, "center-x": -5.221311072916759, "center-y": 100.4639841045424, "center-z": 0.22917217081212138, "length": 3.8747142207671956, "width": 1.9999999999999918, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.5672228760316775, "object-id": "26fad020-a782-11ea-b57d-67c51a0561a1" } ] } ] }

3D-2D-Objektverfolgung, Punktwolke, Ausgabe der Objektverfolgung

Nachfolgend finden Sie ein Beispiel für eine Ausgabemanifestdatei aus einem Kennzeichnungsauftrag der 3D-Punktwolken-Objektverfolgung. Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab. Die Ellipsen (...) bezeichnen eine Fortsetzung dieser Liste, in der zusätzliche Objekte mit dem gleichen Format wie das fortlaufende Objekt angezeigt werden können.

Zusätzlich zu den Standardelementen enthalten die Metadaten eine Klassenzuordnung, die jede Klasse auflistet, die mindestens eine Beschriftung in der Sequenz enthält. Wenn ein oder mehrere Quader geändert wurden, gibt es in den Metadaten für Prüfungs-Workflows einen adjustment-status-Parameter, der auf adjusted festgelegt ist.

{ "source-ref": "s3://iad-groundtruth-lidar-test-bucket/artifacts/gt-point-cloud-demos/sequences/seq2.json", "source-ref-metadata": { "json-paths": [ "number-of-frames", "prefix", "frames{frame-no, frame}" ] }, "3D2D-linking-ref": "s3://iad-groundtruth-lidar-test-bucket/xyz/3D2D-linking/annotations/consolidated-annotation/output/0/SeqLabel.json", "3D2D-linking-ref-metadata": { "objects": [ { "frame-no": 0, "confidence": [] }, { "frame-no": 1, "confidence": [] }, { "frame-no": 2, "confidence": [] }, { "frame-no": 3, "confidence": [] }, { "frame-no": 4, "confidence": [] }, { "frame-no": 5, "confidence": [] }, { "frame-no": 6, "confidence": [] }, { "frame-no": 7, "confidence": [] }, { "frame-no": 8, "confidence": [] }, { "frame-no": 9, "confidence": [] } ], "class-map": { "0": "Car" }, "type": "groundtruth/point_cloud_object_tracking", "human-annotated": "yes", "creation-date": "2023-01-19T02:55:10.206508", "job-name": "mcm-linking" }, "3D2D-linking-chain-ref": "s3://iad-groundtruth-lidar-test-bucket/xyz/3D2D-linking-chain/annotations/consolidated-annotation/output/0/SeqLabel.json", "3D2D-linking-chain-ref-metadata": { "objects": [ { "frame-no": 0, "confidence": [] }, { "frame-no": 1, "confidence": [] }, { "frame-no": 2, "confidence": [] }, { "frame-no": 3, "confidence": [] }, { "frame-no": 4, "confidence": [] }, { "frame-no": 5, "confidence": [] }, { "frame-no": 6, "confidence": [] }, { "frame-no": 7, "confidence": [] }, { "frame-no": 8, "confidence": [] }, { "frame-no": 9, "confidence": [] } ], "class-map": { "0": "Car" }, "type": "groundtruth/point_cloud_object_tracking", "human-annotated": "yes", "creation-date": "2023-01-19T03:29:49.149935", "job-name": "3d2d-linking-chain" } }

Im obigen Beispiel befinden sich die Quaderdaten für jeden Frame in seq2.json in SeqLabel.json am Amazon–S3-Speicherort s3://<customerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json. Im Folgenden finden Sie ein Beispiel für diese Bezeichnungssequenzdatei.

Für jedes Bild in der Sequenz sehen Sie frame-number, frame-name, falls zutreffend frame-attributes und eine Liste von annotations. Diese Liste enthält 3D-Quader, die für diesen Frame gezeichnet wurden. Jede Anmerkung enthält die folgenden Informationen:

  • Ein object-name im Format <class>:<integer>, bei dem class die Kennzeichnungskategorie identifiziert und integer eine eindeutige ID im gesamten Dataset darstellt.

  • Wenn Auftragnehmer einen Quader zeichnen, wird er mit einer eindeutigen object-id verknüpft, die allen Quadern zugeordnet ist, die dasselbe Objekt über mehrere Frames hinweg identifizieren.

  • Jede Klasse oder Beschriftungskategorie, die Sie in Ihrem Eingabemanifest angegeben haben, ist mit einer class-id verknüpft. Verwenden Sie die class-map, um die Klasse zu identifizieren, die jeder Klassen-ID zugeordnet ist.

  • center-x, center-y und center-z sind die Koordinaten des Mittelpunkts des Quaders in demselben Koordinatensystem wie die 3D-Punktwolken-Eingabedaten, die in Ihrem Kennzeichnungsauftrag verwendet wurden.

  • length, width und height beschreiben die Dimensionen des Quaders.

  • yaw wird verwendet, um die Ausrichtung (Fahrkurs) des Quaders zu beschreiben.

    Anmerkung

    yaw befindet sich jetzt im kartesischen System für Rechtshänder. Da diese Funktion am 2. September 2022 19:02:17 UTC hinzugefügt wurde, können Sie die yaw-Messung in den vorherigen Ausgabedaten wie folgt umrechnen (alle Einheiten sind im Bogenmaß angegeben):

    old_yaw_in_output = pi - yaw
  • In unserer Definition befindet sich +x rechts, +y vor und +z über der Grundebene. Die Rotationsreihenfolge ist x - y - z. roll, pitch und yaw werden im kartesischen System für Rechtshänder dargestellt. roll befindet sich im 3D-Raum entlang der X-Achse, pitch befindet sich entlang der Y-Achse und yaw befindet sich entlang der Z-Achse. Alle drei sind gegen den Uhrzeigersinn ausgerichtet.

  • Wenn Sie Kennzeichnungsattribute in Ihre Eingabemanifestdatei für eine bestimmte Klasse aufgenommen haben, wird ein label-category-attributes-Parameter für alle Quader eingeschlossen, für den Auftragnehmer Kennzeichnungsattribute ausgewählt haben.

{ "lidar": { "tracking-annotations": [ { "frame-number": 0, "frame-name": "0.txt.pcd", "annotations": [ { "label-category-attributes": { "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": 12.172361721602815, "center-y": 120.23067521992364, "center-z": 1.590525771183712, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 0, "object-id": "505b39e0-97a4-11ed-8903-dd5b8b903715" }, { "label-category-attributes": {}, "object-name": "Car:4", "class-id": 0, "center-x": 17.192725195301094, "center-y": 114.55705365827872, "center-z": 1.590525771183712, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 0, "object-id": "1afcb670-97a9-11ed-9a84-ff627d099e16" } ], "frame-attributes": {} }, { "frame-number": 1, "frame-name": "1.txt.pcd", "annotations": [ { "label-category-attributes": { "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": -1.6841480600695489, "center-y": 126.20198882749516, "center-z": 1.590525771183712, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 0, "object-id": "505b39e0-97a4-11ed-8903-dd5b8b903715" }, { "label-category-attributes": {}, "object-name": "Car:4", "class-id": 0, "center-x": 17.192725195301094, "center-y": 114.55705365827872, "center-z": 1.590525771183712, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 0, "object-id": "1afcb670-97a9-11ed-9a84-ff627d099e16" } ], "frame-attributes": {} }, { "frame-number": 2, "frame-name": "2.txt.pcd", "annotations": [ { "label-category-attributes": { "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": -1.6841480600695489, "center-y": 126.20198882749516, "center-z": 1.590525771183712, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 0, "object-id": "505b39e0-97a4-11ed-8903-dd5b8b903715" }, { "label-category-attributes": {}, "object-name": "Car:4", "class-id": 0, "center-x": 17.192725195301094, "center-y": 114.55705365827872, "center-z": 1.590525771183712, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 0, "object-id": "1afcb670-97a9-11ed-9a84-ff627d099e16" } ], "frame-attributes": {} } ] }, "camera-0": { "tracking-annotations": [ { "frame-no": 0, "frame": "0.txt.pcd", "annotations": [ { "label-category-attributes": { "Occlusion": "Partial" }, "object-name": "Car:2", "class-id": 0, "width": 223, "height": 164, "top": 225, "left": 486, "object-id": "5229df60-97a4-11ed-8903-dd5b8b903715" } ], "frame-attributes": {} }, { "frame-no": 1, "frame": "1.txt.pcd", "annotations": [ { "label-category-attributes": {}, "object-name": "Car:4", "class-id": 0, "width": 252, "height": 246, "top": 237, "left": 473, "object-id": "1afcb670-97a9-11ed-9a84-ff627d099e16" } ], "frame-attributes": {} } ] } }

Der Quader und der Begrenzungsrahmen eines Objekts sind durch eine gemeinsame Objekt-ID verknüpft.