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.
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 Beispiel zeigt die Ausgabe eines Kennzeichnungsauftrags der Bildklassifizierung, in dem die Eingabedatendateien in einem Amazon-S3-
gespeichert und der Bezeichnungsattributname als amzn-s3-demo-bucket
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)sport
{ "source-ref": "s3://
amzn-s3-demo-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 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://
amzn-s3-demo-bucket
/find-people/activelearning s3://amzn-s3-demo-bucket
/find-people/annotations s3://amzn-s3-demo-bucket
/find-people/inference s3://amzn-s3-demo-bucket
/find-people/manifests s3://amzn-s3-demo-bucket
/find-people/training
Jedes Verzeichnis enthält die folgende Ausgabe:
Aktives Lernverzeichnis
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 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 für Arbeitnehmer. -
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.
Verzeichnis der Inferenzen
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 AI-Batchtransformation, die bei der Kennzeichnung von Datenobjekten verwendet wird.
Manifest-Verzeichnis
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
.
Verzeichnis für Schulungen
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.
Vertrauenswert
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 für Arbeitnehmer
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 ZeitstempelsYYYY-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 ZeitstempelsYYYY-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 Private Arbeitskräfte.
Metadaten ausgeben
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 Vertrauenswert. -
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 Sie die Datenkennzeichnung. -
creation-date
– das Datum und die Uhrzeit, zu der die Kennzeichnung erstellt wurde.
Ausgabe von Klassifizierungsaufträgen
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 Bildklassifizierung - MXNet.
Der rote, kursiv formatierte Text in den folgenden Beispielen hängt von den Spezifikationen des Kennzeichnungsauftrags und den Ausgabedaten ab.
{ "source-ref":"s3://
amzn-s3-demo-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 Klassifizierungsaufträgen mit mehreren Bezeichnungen
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 Vertrauenswert.
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://
amzn-s3-demo-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
gefundene Objekt amzn-s3-demo-bucket
exampletext.txt
abgeschlossen haben.
{ "source-ref": "s3://
amzn-s3-demo-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 eines Bounding-Box-Jobs
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://
amzn-s3-demo-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
.
Erkennung benannter Entitäten
Im Folgenden finden Sie ein Beispiel für eine Ausgabemanifestdatei aus einer Labeling-Aufgabe 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 Jobs zur Labelverifizierung
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://
amzn-s3-demo-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://
amzn-s3-demo-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://
amzn-s3-demo-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://amzn-s3-demo-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 zur Objekterkennung mit Videorahmen
Es folgt die Ausgabemanifestdatei für einen Kennzeichnungsauftrag der Video-Frame-Objektverfolgung. Die Werte red, italicized text
in den folgenden Beispielen hängen von den Spezifikationen und den Ausgabedaten für die Etikettierung 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://amzn-s3-demo-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 Begrenzungsrahmenannotations
.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 Begrenzungsrahmen
Abmessungen des Rahmens:
height
undwidth
Rahmen obere linke Ecke Pixelposition:
top
undleft
Schlüsselpunkt
Eckpunkte des Schlüsselpunkts: { "x": int, "y": int }
Polygon
Eine Liste der Polygoneckpunkte:
Polygoneckpunkte:vertices
{ "x": int, "y": int }
Ein Polygon hat eine geschlossene Form, daher ist der erste Punkt auch der letzte Punkt.
Polyline
Eine Liste der Polygoneckpunkte:
Polylinieneckpunkte:vertices
{ "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 dieclass-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://
.amzn-s3-demo-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 zur Objektverfolgung per Videoframe
Es folgt die Ausgabemanifestdatei für einen Kennzeichnungsauftrag der Video-Frame-Objektverfolgung. Die Werte red, italicized text
in den folgenden Beispielen hängen von den Spezifikationen und den Ausgabedaten für die Etikettierung 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://amzn-s3-demo-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 Begrenzungsrahmenannotations
.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 Begrenzungsrahmen
Abmessungen des Rahmens:
height
undwidth
Rahmen obere linke Ecke Pixelposition:
top
undleft
Schlüsselpunkt
Eckpunkte des Schlüsselpunkts: { "x": int, "y": int }
Polygon
Eine Liste der Polygoneckpunkte:
Polygoneckpunkte:vertices
{ "x": int, "y": int }
Ein Polygon hat eine geschlossene Form, daher ist der erste Punkt auch der letzte Punkt.
Polyline
Eine Liste der Polygoneckpunkte:
Polylinieneckpunkte:vertices
{ "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 dieclass-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, dieselbeobject-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://
.amzn-s3-demo-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 Segmentierung von 3D-Punktwolken
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
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 your-label-attribute
-refcolor-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://
amzn-s3-demo-bucket
/examplefolder
/frame1.bin
", "source-ref-metadata":{ "format": "binary/xyzi
", "unix-timestamp":1566861644.759115
, "ego-vehicle-pose":{...
}, "prefix": "s3://amzn-s3-demo-bucket
/lidar_singleframe_dataset
/prefix
", "images": [{...
}] }, "lidar-ss-label-attribute
-ref": "s3://amzn-s3-demo-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 zur Erkennung von 3D-Punktwolkenobjekten
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 dieclass-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, wobeiinteger
eine eindeutige Nummer ist, um diesen Quader im Frame zu identifizieren. -
center-x
,center-y
undcenter-z
sind die Koordinaten des Mittelpunkts des Quaders in demselben Koordinatensystem wie die 3D-Punktwolken-Eingabedaten, die in Ihrem Kennzeichnungsauftrag verwendet wurden. -
length
,width
undheight
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 dieyaw
-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
undyaw
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 undyaw
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
.
Die Werte red, italicized text
in den folgenden Beispielen hängen von den Spezifikationen und den Ausgabedaten für die Etikettierung ab. Die Auslassungspunkte (...
) kennzeichnen eine Fortsetzung dieser Liste, in der weitere Objekte mit demselben Format wie das vorhergehende Objekt erscheinen können.
{ "source-ref": "s3://
amzn-s3-demo-bucket
/examplefolder/frame1.txt
", "source-ref-metadata":{ "format": "text/xyzi
", "unix-timestamp":1566861644.759115
, "prefix": "s3://amzn-s3-demo-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. Die Werte red, italicized text
in den folgenden Beispielen hängen von den Spezifikationen und den Ausgabedaten für die Etikettierung ab. Die Auslassungspunkte (...
) kennzeichnen 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://
amzn-s3-demo-bucket
/myfolder/seq1.json
", "lidar-label-attribute
-ref": "s3://amzn-s3-demo-bucket
/<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://
. Im Folgenden finden Sie ein Beispiel für diese Bezeichnungssequenzdatei.amzn-s3-demo-bucket
/<labelingJobName>
/annotations/consolidated-annotation/output/<datasetObjectId>
/SeqLabel.json
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 demclass
die Kennzeichnungskategorie identifiziert undinteger
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 dieclass-map
, um die Klasse zu identifizieren, die jeder Klassen-ID zugeordnet ist. -
center-x
,center-y
undcenter-z
sind die Koordinaten des Mittelpunkts des Quaders in demselben Koordinatensystem wie die 3D-Punktwolken-Eingabedaten, die in Ihrem Kennzeichnungsauftrag verwendet wurden. -
length
,width
undheight
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 dieyaw
-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
undyaw
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 undyaw
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
" } ] } ] }
Ausgabe der Punktwolken-Objektverfolgung für 3D-2D-Objektverfolgung
Nachfolgend finden Sie ein Beispiel für eine Ausgabemanifestdatei aus einem Kennzeichnungsauftrag der 3D-Punktwolken-Objektverfolgung. Die Werte red, italicized text
in den folgenden Beispielen hängen von den Spezifikationen und den Ausgabedaten für die Etikettierung ab. Die Auslassungspunkte (...
) kennzeichnen 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://
amzn-s3-demo-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://amzn-s3-demo-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://amzn-s3-demo-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://
. Im Folgenden finden Sie ein Beispiel für diese Bezeichnungssequenzdatei.amzn-s3-demo-bucket
/<labelingJobName>
/annotations/consolidated-annotation/output/<datasetObjectId>
/SeqLabel.json
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 demclass
die Kennzeichnungskategorie identifiziert undinteger
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 dieclass-map
, um die Klasse zu identifizieren, die jeder Klassen-ID zugeordnet ist. -
center-x
,center-y
undcenter-z
sind die Koordinaten des Mittelpunkts des Quaders in demselben Koordinatensystem wie die 3D-Punktwolken-Eingabedaten, die in Ihrem Kennzeichnungsauftrag verwendet wurden. -
length
,width
undheight
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 dieyaw
-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
undyaw
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 undyaw
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.