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 Labeling-Jobs wird an dem Amazon S3 S3-Speicherort platziert, den Sie in der Konsole oder im Aufruf des CreateLabelingJobVorgangs 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 ist beispielsweise die Ausgabe eines Labeling-Jobs zur Bildklassifizierung, bei dem die Eingabedatendateien in einem Amazon S3 gespeichert wurden AWSDOC-EXAMPLE-BUCKET und der Name des Label-Attributs definiert wurde als Sport. In diesem Beispiel ist das JSON Objekt aus Gründen der Lesbarkeit formatiert. In der eigentlichen Ausgabedatei befindet sich das JSON Objekt in einer einzigen Zeile. Weitere Informationen zum Datenformat finden Sie unter JSON Linien.

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

Der Wert des Labels kann ein beliebiger gültiger Wert seinJSON. 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 Labeling-Auftrag 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 das automatisierte Daten-Labeling verwenden. Es enthält die Eingabe- und Ausgabevalidierung, die für das automatisierte Daten-Labeling 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 der Mitarbeiter für jedes Datenobjekt werden in einer JSON Datei mit Zeitstempel gespeichert, die die Antworten enthält, die von jedem Mitarbeiter für dieses Datenobjekt eingereicht wurden, und, falls Sie eine private Belegschaft verwenden, Metadaten zu diesen Mitarbeitern. 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 das automatisierte Daten-Labeling verwenden. Dieses Verzeichnis enthält die Eingabe- und Ausgabedateien für die SageMaker Batch-Transformation, die bei der Kennzeichnung von Datenobjekten verwendet wird.

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.

Trainingsverzeichnis

Das training-Verzeichnis ist nur vorhanden, wenn Sie das automatisierte Daten-Labeling verwenden. Dieses Verzeichnis enthält die Eingabe- und Ausgabedateien, die für das Training des automatisierten Daten-Labeling-Modells 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 Dienst, der für die Verwaltung der privaten Arbeitskräfte zuständig ist.

    • Der issuer ist der Cognito-Benutzerpool oder der OIDC Identity Provider (IdP) -Aussteller, der dem Arbeitsteam zugeordnet 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 in der 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 das, was workerMetadata Sie sehen können, wenn Sie Ihren eigenen OIDC IdP verwenden, um eine private Belegschaft aufzubauen:

"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 Labeling-Aufgabe 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 Labeling-Aufgabe 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 Labeling-Aufgabe für das in AWSDOC-EXAMPLE-BUCKET gefundene Objekt exampletext.txt abgeschlossen haben.

{ "source-ref": "AWSDOC-EXAMPLE-BUCKET/exampletext.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 Auftrags zur Anpassung der Begrenzungsbox sieht wie folgt aus. JSON Beachten Sie, dass das Original erhalten JSON bleibt und zwei neue Jobs aufgelistet werden, denen jeweils „adjust-“ dem Namen des ursprünglichen Attributs vorangestellt ist.

{ "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 Ausgabe-Manifestdatei aus einer Label-Task mit dem Namen Entity Recognition (NER). Für diese Aufgabe werden sieben entities zurückgegeben.

Im Ausgabemanifest enthält das JSON Objekt,annotations, eine Liste der labels (Labelkategorien), 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 Wert enthält, der einem label Wert in der labels Liste entspricht, einen startOffset Ganzzahlwert für den Unicode-Startoffset von Labeled Span und einen endOffset Ganzzahlwert für den letzten Unicode-Offset.

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 frühere Bezeichnungsfelder überprüfen oder anpassen, würde die Ausgabe eines Bestätigungsauftrags wie folgt aussehen. JSON 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 des Labels für diesen Job ist ein Verweis auf eine PNG Datei in einem Amazon S3 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 Jobs zur Anpassung der semantischen Segmentierung sieht in etwa wie folgt aus. JSON

{ "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. Das Tool red, italicized text hängt in den folgenden Beispielen von der Kennzeichnung der Auftragsspezifikationen und der 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://amzn-s3-demo-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 JSON Objektliste.

  • Für jeden Frame, der von einem Worker mit Anmerkungen versehen wurde, der Name der Frame-Datei (frame), die Nummer (frame-no), eine Liste von JSON Objekten, 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 über eine einzelne Anmerkung und die zugehörige Bezeichnung. In der folgenden Tabelle sind die Parameter aufgeführt, die Sie für jeden Video-Frame-Aufgabentyp sehen werden.

    Aufgabentyp Parameter

    Begrenzungsrahmen

    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 aufgabentypspezifischen 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. Das Tool red, italicized text hängt in den folgenden Beispielen von der Kennzeichnung der Auftragsspezifikationen und der 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://amzn-s3-demo-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 JSON Objektliste.

  • Für jeden Frame, der von einem Worker mit Anmerkungen versehen wurde, der Frame (frame), die Nummer (frame-no), eine Liste von JSON Objekten, die Anmerkungen (annotations) enthalten, und, falls zutreffend, die Rahmenattribute (). 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 über eine einzelne Anmerkung und die zugehörige Bezeichnung. In der folgenden Tabelle sind die Parameter aufgeführt, die Sie für jeden Video-Frame-Aufgabentyp sehen werden.

    Aufgabentyp Parameter

    Begrenzungsrahmen

    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 aufgabentypspezifischen 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 Ihrer Label-Kategorie-Konfigurationsdatei einen oder mehrere frameAttributes hinzugefügt haben, befinden sich die Antworten der Worker für Rahmenattribute im JSON Objektdataset-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 02. September 2022 19:02:17 hinzugefügt wurdeUTC, können Sie die yaw Messung in den Ausgabedaten davor 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 Ihrer Label-Kategorie-Konfigurationsdatei eine oder mehrere frameAttributes hinzugefügt haben, befinden sich Worker-Antworten für Rahmenattribute im Objekt,. JSON dataset-object-attributes

Das Tool red, italicized text hängt in den folgenden Beispielen von den Spezifikationen für den Labeling-Job und den Ausgabedaten ab. Die Ellipsen (...) steht für eine Fortsetzung dieser Liste, in der weitere Objekte mit demselben Format wie das vorhergehende Objekt erscheinen 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. Das Tool red, italicized text hängt in den folgenden Beispielen von der Kennzeichnung der Auftragsspezifikationen und der Ausgabedaten ab. Die Ellipsen (...) steht für eine Fortsetzung dieser Liste, in der weitere Objekte mit demselben Format wie das vorhergehende Objekt erscheinen 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 Datensatz 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 02. September 2022 19:02:17 hinzugefügt wurdeUTC, können Sie die yaw Maßeinheit 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. Das Tool red, italicized text hängt in den folgenden Beispielen von den Spezifikationen für den Label-Job und den Ausgabedaten ab. Die Ellipsen (...) steht für eine Fortsetzung dieser Liste, in der weitere Objekte mit demselben Format wie das vorhergehende Objekt erscheinen 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 Datensatz 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 02. September 2022 19:02:17 hinzugefügt wurdeUTC, können Sie die yaw Maßeinheit 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.