Données de sortie - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Données de sortie

La sortie d'une tâche d'étiquetage est placée dans l'emplacement Amazon S3 que vous avez spécifié dans la console ou dans l'appel à l'opération CreateLabelingJob. Les données de sortie apparaissent à cet emplacement lorsque les employés ont soumis une ou plusieurs tâches, ou lorsque les tâches expirent. Notez que l'affichage des données en sortie dans Amazon S3 peut prendre quelques minutes après que l'employé a soumis la tâche ou que la tâche expire.

Chaque ligne du fichier de données de sortie est identique au fichier manifeste et intègre un attribut et une valeur pour l'étiquette attribuée à l'objet en entrée. Le nom d'attribut de la valeur est défini dans la console ou dans l'appel à l'opération CreateLabelingJob. Vous ne pouvez pas utiliser -metadata dans le nom d'attribut de l'étiquette. Si vous exécutez une segmentation sémantique d'image, une segmentation sémantique de nuage de points 3D ou une tâche de suivi d'objets de nuage de points 3D, l'attribut d'étiquette doit se terminer par -ref. Pour tout autre type de tâche, le nom de l'attribut ne peut pas se terminer par -ref.

La sortie de la tâche d'étiquetage est la valeur de la paire clé-valeur avec l'étiquette. L'étiquette et la valeur remplacent les données JSON existantes dans le fichier d'entrée par la nouvelle valeur.

Par exemple, voici la sortie d'une tâche d'étiquetage de classification d'image dans laquelle les fichiers de données source ont été stockés dans un élément Amazon S3 AWSDOC-EXAMPLE-BUCKET et l'attribut de l'étiquette a été nommé sport. Dans cet exemple, l'objet JSON est mis en forme afin de faciliter la lecture. Dans le fichier de sortie proprement dit, l'objet JSON se trouve sur une seule ligne. Pour plus d'informations sur le format de données, consultez Lignes JSON.

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

La valeur de l'étiquette peut être n'importe quelle ligne JSON valide. Dans ce cas, la valeur de l'étiquette est l'index de la classe dans la liste de classification. D'autres types de tâche, comme le tracé d'un cadre de délimitation, comportent des valeurs plus complexes.

Toute paire clé-valeur du fichier manifeste d'entrée autre que l'attribut de l'étiquette reste inchangée dans le fichier de sortie. Vous pouvez notamment l'utiliser pour transmettre des données à votre application.

La sortie d'une tâche d'étiquetage peut être utilisée comme entrée dans le cadre d'une autre tâche d'étiquetage. Vous pouvez l'utiliser lorsque vous créez une chaîne de tâches d'étiquetage. Par exemple, vous pouvez envoyer une tâche d'étiquetage pour déterminer le sport qui est en cours de lecture. Puis, vous en envoyez une autre tâche en utilisant les mêmes données pour déterminer si le sport est joué en intérieur ou à l'extérieur. En utilisant les données de sortie à partir de la première tâche comme manifeste de la seconde tâche, vous pouvez consolider les résultats des deux tâches en un seul fichier de sortie et faciliter ainsi leur traitement par vos applications.

Le fichier de données de sortie est régulièrement écrit à l'emplacement de sortie pendant que la tâche est en cours d'exécution. Ces fichiers intermédiaires contiennent une ligne pour chaque ligne du fichier manifeste. Si un objet est étiqueté, l'étiquette est incluse. Si l'objet n'a pas été étiqueté, il est écrit dans le fichier de sortie intermédiaire identique au fichier manifeste.

Répertoires de sortie

Ground Truth crée plusieurs répertoires dans votre chemin de sortie Amazon S3. Ces répertoires contiennent les résultats de votre tâche d'étiquetage et d'autres artefacts de la tâche. Le répertoire de niveau supérieur d'une tâche d'étiquetage porte le même nom que votre tâche d'étiquetage et il comprend les répertoires de sortie. Par exemple, si vous avez nommé votre tâche d'étiquetage find-people, votre sortie se trouverait dans les répertoires suivants :

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

Chaque répertoire contient la sortie suivante :

Répertoire Active Learning

Le répertoire activelearning ne s'affiche que lorsque vous utilisez l'étiquetage automatisé des données. Il contient l'ensemble de validation en entrée et en sortie de l'étiquetage automatisé des données ainsi que les dossiers d'entrée et de sortie des données étiquetées automatiquement.

Répertoire annotations

Le répertoire annotations contient toutes les annotations effectuées par la main-d'œuvre. Il s'agit des réponses des employés qui n'ont pas été regroupées en une seule et même étiquette pour l'objet de données.

Le répertoire annotations comprend trois sous-dossiers :

  • Le premier, worker-response, contient les réponses des employés. Il contient un sous-répertoire pour chaque itération, qui lui-même contient un sous-répertoire pour chaque objet de données de cette itération. Les données de réponse de l'employé pour chaque objet de données sont stockées dans un fichier JSON horodaté qui contient les réponses soumises par chaque employé pour cet objet de données et, si vous utilisez une main-d'œuvre privée, des métadonnées sur ces employés. Pour en savoir plus sur ces métadonnées, veuillez consulter Métadonnées employé.

  • Le deuxième, consolidated-annotation, contient les informations requises pour consolider les annotations du lot actuel en étiquettes pour vos objets de données.

  • Le troisième, intermediate, contient le manifeste de sortie pour le lot actuel avec toutes les étiquettes réalisées. Ce fichier est mis à jour à mesure que l'étiquette de chaque objet de données est terminée.

Note

Nous vous déconseillons d'utiliser des fichiers qui ne sont pas mentionnés dans la documentation.

Répertoire inference

Le répertoire inference ne s'affiche que lorsque vous utilisez l'étiquetage automatisé des données. Ce répertoire contient les fichiers source et de sortie utilisés pour la transformation par lots de SageMaker utilisée lors de l'étiquetage des objets de données.

Répertoire du manifeste

Le répertoire manifest contient le manifeste de sortie de votre tâche d'étiquetage. Le répertoire manifest contient un sous-répertoire, output. Le répertoire output contient le fichier manifeste de sortie de votre tâche d'étiquetage. Ce fichier est nommé output.manifest.

Répertoire d'entraînement

Le répertoire training ne s'affiche que lorsque vous utilisez l'étiquetage automatisé des données. Ce répertoire comprend les fichiers d'entrée et de sortie utilisés pour entraîner le modèle d'étiquetage automatisé des données.

Score de fiabilité

Lorsque plusieurs employés annotent une tâche unique, votre étiquette résulte de la consolidation des annotations. Ground Truth calcule un score de fiabilité pour chaque étiquette. Un score de fiabilité est un nombre compris entre 0 et 1 qui indique le degré de confiance de Ground Truth concernant l'étiquette. Vous pouvez utiliser le score de fiabilité pour comparer des objets de données étiquetés et identifier les étiquettes les moins et les plus fiables.

Vous ne devez pas interpréter la valeur des scores de fiabilité comme une valeur absolue, ni les comparer d'une tâche d'étiquetage à l'autre. Par exemple, si tous les scores de fiabilité sont compris entre 0,98 et 0,998, vous devez uniquement comparer les objets de données entre eux et ne pas vous fier aux scores de fiabilité élevés.

Vous ne devez pas comparer les scores de fiabilité de données étiquetées par des humains avec ceux de données étiquetées automatiquement. Les scores de fiabilité pour les humains sont calculés à l'aide de la fonction de consolidation des annotations pour la tâche, tandis que les scores de fiabilité pour l'étiquetage automatique sont calculés à l'aide d'un modèle qui intègre les caractéristiques des objets. Les deux modèles ont généralement des échelles et une moyenne de fiabilité différentes.

Pour une tâche d'étiquetage de cadre de délimitation, Ground Truth calcule un score de fiabilité par zone. Vous pouvez comparer les scores de fiabilité d'une ou de plusieurs images pour un même type d'étiquetage (humain ou automatique). Vous ne pouvez pas comparer les scores de fiabilité de tâches d'étiquetage différentes.

Si un seul travailleur annote une tâche (NumberOfHumanWorkersPerDataObject est défini sur 1 ou, dans la console, vous saisissez 1 pour le Nombre d'employés par objet de jeu de données), le score de fiabilité est défini à 0.00.

Métadonnées employé

Ground Truth fournit des informations que vous pouvez utiliser pour suivre les employés individuels dans les données de sortie de tâche. Les données suivantes se trouvent dans les répertoires sous worker-response, situé dans Répertoire annotations :

  • acceptanceTime est l'heure à laquelle l'employé a accepté la tâche. Le format de cet horodatage est YYYY-MM-DDTHH:MM:SS.mmmZ pour l'année (YYYY), mois (MM), jour (DD), heure (HH), minute (MM), deuxième (SS) et milliseconde (mmm). La date et l'heure sont séparées par un T.

  • submissionTime est l'heure à laquelle l'employé a soumis ses annotations à l'aide du bouton Submit (Envoyer). Le format de cet horodatage est YYYY-MM-DDTHH:MM:SS.mmmZ pour l'année (YYYY), mois (MM), jour (DD), heure (HH), minute (MM), deuxième (SS) et milliseconde (mmm). La date et l'heure sont séparées par un T.

  • timeSpentInSeconds indique la durée totale, en secondes, pendant laquelle un employé a travaillé activement sur cette tâche. Cette métrique n'inclut pas l'heure à laquelle un employé s'est mis en pause ou a pris une pause.

  • Le workerId est unique à chaque employé.

  • Si vous utilisez une main-d'œuvre privée, dans workerMetadata, vous voyez ce qui suit.

    • identityProviderType est le service utilisé pour gérer la main-d'œuvre privée.

    • issuer est le groupe d'utilisateurs Cognito ou l'émetteur du fournisseur d'identité OIDC (IdP) associé à l'équipe de travail affectée à cette tâche de révision humaine.

    • Un identifiant unique sub désigne l'employé. Si vous créez une main-d'œuvre à l'aide d'Amazon Cognito, vous pouvez extraire des détails sur cet employé (par ex., son nom ou son nom d'utilisateur) à l'aide de cet ID en utilisant d'Amazon Cognito. Pour savoir comment procéder, veuillez consulter Gestion et recherche de comptes utilisateur dans le Guide du développeur Amazon Cognito.

Voici un exemple de la sortie que vous pouvez voir si vous utilisez Amazon Cognito pour créer une main-d'œuvre privée. Ceci est identifié dans identityProviderType.

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

Voici un exemple de workerMetadata que vous pouvez voir si vous utilisez votre propre IdP OIDC pour créer une main-d'œuvre privée :

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

Pour en savoir plus sur la main d'œuvre privée, veuillez consulter Utilisation d'une main-d'œuvre privée.

Métadonnées de sortie

La sortie de chaque tâche contient des métadonnées sur l'étiquette attribuée à des objets de données. Ces éléments sont les mêmes pour toutes les tâches avec des variantes mineures. L'exemple suivant montre les éléments de métadonnées :

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

Les éléments ont la signification suivante :

  • confidence – La fiabilité de Ground Truth quant à l'exactitude de l'étiquette. Pour de plus amples informations, veuillez consulter Score de fiabilité.

  • type – Le type de la tâche de classification. Pour obtenir les types de tâches, veuillez consulter Types de tâche intégrés.

  • job-name – Le nom assigné à la tâche lors de sa création.

  • human-annotated – Indique si l'objet de données a été étiqueté par un humain ou par un étiquetage de données automatisé. Pour de plus amples informations, veuillez consulter Automatiser l'étiquetage des données.

  • creation-date – La date et l'heure de création de l'étiquette.

Sortie de la tâche de classification

Voici des exemples de sorties (fichiers manifestes de sortie) d'une tâche de classification d'images et d'une tâche de classification de textes. Ils incluent l'étiquette que Ground Truth a attribuée à l'objet de données, la valeur de l'étiquette et les métadonnées qui la décrivent.

Outre les éléments de métadonnées standard, les métadonnées d'une tâche de classification incluent la valeur texte de la classe de l'étiquette. Pour de plus amples informations, veuillez consulter Classification des images – MXNet.

Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie.

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

Sortie d'une tâche de classification à plusieurs étiquettes

Voici des exemples de fichiers manifestes de sortie d'une tâche de classification d'image à plusieurs étiquettes et d'une tâche de classification de texte à plusieurs étiquettes. Ils incluent l'étiquette que Ground Truth a attribuée à l'objet de données (par exemple, l'image ou le texte) et les métadonnées qui décrivent les étiquettes que l'employé a vues lorsqu'il a exécuté la tâche d'étiquetage.

Le paramètre du nom d'attribut de l'étiquette (par exemple image-label-attribute-name) contient un tableau de toutes les étiquettes sélectionnées par au moins un des employés ayant effectué cette tâche. Ce tableau contient des clés d'entiers (par exemple, [1,0,8]) qui correspondent aux étiquettes trouvées dans class-map. Dans l'exemple de classification d'image à plusieurs étiquettes, bicycle, person et clothing ont été sélectionnés par au moins un des collaborateurs ayant exécuté la tâche d'étiquetage de l'image, exampleimage.jpg.

confidence-map indique le score de fiabilité attribué par Ground Truth à chaque étiquette qui a été sélectionnée par un employé. Pour en savoir plus sur les scores de fiabilité Ground Truth veuillez consulter Score de fiabilité.

Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie.

Voici un exemple de fichier manifeste de sortie de classification d'image à plusieurs étiquettes.

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

Voici un exemple de fichier manifeste de sortie de classification de texte à plusieurs étiquettes. Dans cet exemple, approving, sad et critical ont été sélectionnés par au moins un des collaborateurs qui ont terminé la tâche d'étiquetage de l'objet exampletext.txt trouvé dans AWSDOC-EXAMPLE-BUCKET.

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

Sortie de tâche de tracé de cadre de délimitation

Voici un exemple de sortie (fichier manifeste de sortie) d'une tâche de cadre de délimitation. Pour cette tâche, trois cadres de délimitation sont renvoyés. La valeur de l'étiquette contient des informations sur la taille de l'image et l'emplacement des cadres de délimitation.

L'élément class_id est l'index de la classe du cadre dans la liste des classes disponibles de la tâche. L'élément de métadonnées class-map contient le texte de la classe.

Les métadonnées comprennent un score de fiabilité pour chaque cadre de délimitation. Elles incluent également l'élément class-map qui mappe class_id avec la valeur texte de la classe. Pour de plus amples informations, veuillez consulter Détection d'objets : MXNet.

Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie.

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

La sortie d'une tâche d'ajustement de cadre de délimitation ressemble au code JSON suivant. Notez que le JSON d'origine est conservé intact et que deux nouvelles tâches sont répertoriées, chacune avec « adjust- » ajouté au nom de l'attribut d'origine.

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

Dans cette sortie, l'élément type de la tâche ne change pas, mais un champ adjustment-status est ajouté. Ce champ possède la valeur adjusted ou unadjusted. Si plusieurs collaborateurs ont examiné l'objet et qu'au moins un a ajusté l'étiquette, le statut est adjusted.

Reconnaissance d'entités nommées (NER)

Voici un exemple de fichier manifeste de sortie à partir d'une tâche d'étiquetage de reconnaissance des entités nommées (NER). Pour cette tâche, sept entities sont renvoyés.

Dans le manifeste de sortie, l'objet JSON annotations inclut une liste des labels (catégories d'étiquettes) que vous avez fournies.

Les réponses des employés sont dans une liste nommée entities. Chaque entité de cette liste est un objet JSON qui contient une valeur label correspondant à une valeur de la liste labels, une valeur startOffset entière pour le décalage Unicode de début de la portée étiquetée, et une valeur endOffset entière pour le décalage Unicode de fin.

Les métadonnées comprennent un score de fiabilité pour chaque entité. Si un seul employé étiquetait chaque objet de données, la valeur de confiance pour chaque entité sera zéro.

Le texte en italique rouge dans les exemples ci-dessous dépend des entrées de la tâche d'étiquetage et des réponses des employés.

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

Sortie du travail de vérification des étiquettes

La sortie (fichier manifeste de sortie) d'une tâche de vérification de cadre de délimitation est très différente de la sortie d'une tâche d'annotation de cadre de délimitation. Cela est dû au fait que les employés possèdent un type de tâche différent. Il ne s'agit pas d'étiqueter des objets, mais d'évaluer l'exactitude de l'étiquetage antérieur, de formuler un jugement, puis de fournir ce jugement et peut-être de faire quelques commentaires.

Si des employés vérifient ou ajustent les étiquettes de cadre de délimitation, le résultat d'une tâche de vérification ressemblera au JSON suivant. Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie.

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

Même si le type de la sortie de la boîte de délimitation d'origine était groundtruth/object-detection, le nouveau type est groundtruth/label-verification. Notez également que le tableau worker-feedback fournit les commentaires du collaborateur. Si le collaborateur ne fournit pas de commentaires, les champs vides sont exclus lors de la consolidation.

Sortie de tâche de segmentation sémantique

Voici le fichier manifeste de sortie d'une tâche d'étiquetage de segmentation sémantique. La valeur de l'étiquette pour cette tâche est une référence à un fichier PNG d'un compartiment Amazon S3.

Outre les éléments standard, les métadonnées de l'étiquette incluent une carte de couleurs qui définit la couleur utilisée pour étiqueter l'image, le nom de classe associé à la couleur et le score de fiabilité de chaque couleur. Pour de plus amples informations, veuillez consulter Algorithme de segmentation sémantique.

Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie.

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

La fiabilité est évaluée image par image. Les scores de fiabilité sont les mêmes pour toutes les classes au sein d'une image.

La sortie d'une tâche d'ajustement de segmentation sémantique ressemble au code JSON suivant.

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

Fichier de sortie de détection d'objet de trame vidéo

Vous trouverez ci-après le fichier manifeste de sortie d'une tâche d'étiquetage de détection d'objets. Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie.

En plus des éléments standard, les métadonnées incluent une carte des classes qui répertorie chaque classe ayant au moins une étiquette dans la séquence. Les métadonnées incluent également job-name qui est le nom que vous avez attribué à la tâche d'étiquetage. Pour les tâches d'ajustement, si une ou plusieurs cadres de délimitation ont été modifiées, il existe un paramètre adjustment-status dans les métadonnées des flux de travail d'audit qui est défini sur adjusted.

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

Ground Truth crée un fichier de séquence de sortie pour chaque séquence de trames vidéo étiquetées. Chaque fichier de séquences de sortie contient les éléments suivants :

  • Toutes les annotations pour toutes les trames d'une séquence dans la liste d'objets JSON detection-annotations.

  • Pour chaque trame annotée par un employé, le nom du fichier de trame (frame), nombre (frame-no), une liste d'objets JSON contenant des annotations (annotations) et, s'il y a lieu, frame-attributes. Le nom de cette liste est défini par le type de tâche que vous utilisez : polylines, polygons, keypoints et annotations pour les cadres de délimitation.

    Chaque objet JSON contient des informations sur une annotation unique et une étiquette associée. Le tableau suivant décrit les paramètres que vous verrez pour chaque type de tâche de trame vidéo.

    Type de tâche Paramètres

    Bounding Box

    Dimensions de la zone : height et width

    Emplacement du pixel en haut de la zone, coin gauche : top et left

    Point clé

    Sommets du point clé : { "x": int, "y": int }

    Polygone

    Liste des sommets de polygone : vertices

    Sommets de polygone : { "x": int, "y": int }

    Un polygone est une forme fermée et donc le premier point représentera également le dernier point.

    Polyline

    Liste des sommets de polyligne : vertices

    Sommets de polyline : { "x": int, "y": int }

    En plus des valeurs spécifiques au type de tâche, vous verrez ce qui suit dans chaque objet JSON :

    • Valeurs de n'importe quel label-category-attributes spécifiées pour cette étiquette.

    • Le class-id de la zone. Utilisation de class-map dans le fichier manifeste de sortie pour voir à quelle catégorie d'étiquette cet ID correspond.

Voici un exemple de fichier SeqLabel.json à partir d'une tâche d'étiquetage de détection d'objet de trame vidéo de cadre de délimitation. Ce fichier se trouve sous 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} } ] }

Fichier de sortie de suivi d'objets dans les trames vidéo

Vous trouverez ci-après le fichier manifeste de sortie d'une tâche d'étiquetage de suivi d'objets. Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie.

En plus des éléments standard, les métadonnées incluent une carte des classes qui répertorie chaque classe ayant au moins une étiquette dans la séquence de trames. Les métadonnées incluent également job-name qui est le nom que vous avez attribué à la tâche d'étiquetage. Pour les tâches d'ajustement, si une ou plusieurs cadres de délimitation ont été modifiées, il existe un paramètre adjustment-status dans les métadonnées des flux de travail d'audit qui est défini sur adjusted.

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

Ground Truth crée un fichier de séquence de sortie pour chaque séquence de trames vidéo étiquetées. Chaque fichier de séquences de sortie contient les éléments suivants :

  • Toutes les annotations pour toutes les trames d'une séquence dans la liste d'objets JSON tracking-annotations.

  • Pour chaque cadre annoté par un employé, la trame (frame), nombre (frame-no), une liste d'objets JSON contenant des annotations (annotations) et, le cas échéant, les attributs de trame (frame-attributes). Le nom de cette liste est défini par le type de tâche que vous utilisez : polylines, polygons, keypoints et annotations pour les cadres de délimitation.

    Chaque objet JSON contient des informations sur une annotation unique et une étiquette associée. Le tableau suivant décrit les paramètres que vous verrez pour chaque type de tâche de trame vidéo.

    Type de tâche Paramètres

    Bounding Box

    Dimensions de la zone : height et width

    Emplacement du pixel en haut de la zone, coin gauche : top et left

    Point clé

    Sommets du point clé : { "x": int, "y": int }

    Polygone

    Liste des sommets de polygone : vertices

    Sommets de polygone : { "x": int, "y": int }

    Un polygone est une forme fermée et donc le premier point représentera également le dernier point.

    Polyline

    Liste des sommets de polyligne : vertices

    Sommets de polyline : { "x": int, "y": int }

    En plus des valeurs spécifiques au type de tâche, vous verrez ce qui suit dans chaque objet JSON :

    • Valeurs de n'importe quel label-category-attributes spécifiées pour cette étiquette.

    • Le class-id de la zone. Utilisation de class-map dans le fichier manifeste de sortie pour voir à quelle catégorie d'étiquette cet ID correspond.

    • Un object-id qui identifie une instance d'une étiquette. Cet ID sera le même entre les trames si un employé identifie la même instance d'un objet dans plusieurs trames. Par exemple, si une voiture apparaissait dans plusieurs cadres, tous les cadres de délimitation utilisés pour identifier cette voiture auraient le même object-id.

    • Le object-name qui est l'ID d'instance de cette annotation.

Voici un exemple de fichier SeqLabel.json résultant d'une tâche d'étiquetage de détection d'objet de trame vidéo par cadre de délimitation. Ce fichier se trouve sous 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} } ] }

Fichier de sortie de segmentation sémantique de nuage de points 3D

Voici le fichier manifeste de sortie d'une tâche d'étiquetage de segmentation sémantique de nuage de points 3D.

Outre les éléments standard, les métadonnées de l'étiquette incluent une carte de couleurs qui définit la couleur utilisée pour étiqueter l'image, le nom de classe associé à la couleur et le score de fiabilité de chaque couleur. En outre, il existe un paramètre adjustment-status dans les métadonnées pour les flux de travail d'audit qui est défini sur adjusted si le masque de couleur a été modifié. Si vous avez ajouté une ou plusieurs frameAttributes à votre fichier de configuration de catégorie d'étiquettes, les réponses des employés pour les attributs de trame se trouvent dans l'objet JSON dataset-object-attributes.

Le paramètre your-label-attribute-ref contient l'emplacement d'un fichier compressé avec une extension .zlib. Lorsque vous décompressez ce fichier, il contient un tableau. Chaque index du tableau correspond à l'index d'un point annoté dans le nuage de points en entrée. La valeur du tableau à un index donné indique la classe du point au même index dans le nuage de points, en fonction de la carte de couleurs sémantique trouvée dans le paramètre color-map de metadata.

Vous pouvez utiliser un code Python similaire à l'exemple suivant pour décompresser un fichier .zlib :

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)

Le bloc de code ci-dessus produira une sortie similaire à la sortie suivante. Chaque élément du tableau imprimé contient la classe d'un point à cet index dans le nuage de points. Par exemple, my_int_array_data[0] = 1 signifie point[0] dans le nuage de points d'entrée est de classe 1. Dans l'exemple de fichier manifeste de sortie suivant, la classe 0 correspond à "Background", 1 à Car, et 2 à Pedestrian.

>> 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])

Voici un exemple de fichier manifeste de sortie d'une tâche d'étiquetage de segmentation sémantique de nuage de points 3D. Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie.

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

Fichier de sortie de détection d'objets de nuage de points 3D

Voici un exemple de sortie d'une tâche de détection d'objets de nuage de points 3D. Pour ce type de tâche, les données concernant les cuboïdes 3D sont renvoyées dans le paramètre 3d-bounding-box, dans une liste nommée annotations. Dans cette liste, chaque cuboïde 3D est décrit à l'aide des informations suivantes.

  • Chaque classe ou catégorie d'étiquette que vous spécifiez dans votre manifeste source est associée à un class-id. Utilisez l'élément class-map pour identifier la classe associée à chaque ID de classe.

  • Ces classes sont utilisées pour donner à chaque cuboïde 3D un élément object-name au format <class>:<integer>, où integer est un nombre unique permettant d'identifier ce cuboïde dans la trame.

  • center-x, center-y et center-z sont les coordonnées du centre du cuboïde, dans le même système de coordonnées que les données source du nuage de points 3D utilisées dans votre tâche d'étiquetage.

  • length, width et height sont utilisés pour décrire les dimensions du cuboïde.

  • yaw est utilisé pour décrire l'orientation (le cap) du cuboïde en radians.

    Note

    yaw figure désormais dans le système cartésien droitier. Comme cette fonctionnalité a été ajoutée le 2 septembre 2022 à 19:02:17 UTC, vous pouvez convertir la mesure de yaw dans les données de sortie antérieures en utilisant la formule suivante (toutes les unités sont en radians) :

    old_yaw_in_output = pi - yaw
  • Dans notre définition, +x est vers la droite, +y vers l'avant et +z vers le haut par rapport au plan du sol. L'ordre de rotation est x - y - z. roll, pitch et yaw sont représentés dans le système cartésien droitier. Dans l'espace 3D, roll est le long de l'axe x, pitch est le long de l'axe y et yaw est le long de l'axe z. Les trois s'exercent dans le sens antihoraire.

  • Si vous avez inclus des attributs d'étiquette dans votre fichier manifeste source pour une classe donnée, un paramètre label-category-attributes est inclus pour tous les cuboïdes pour lesquels les employés ont sélectionné des attributs d'étiquette.

Si un ou plusieurs cuboïdes ont été modifiés, les métadonnées des flux de travail d'audit contiennent un paramètre adjustment-status défini sur adjusted. Si vous avez ajouté une ou plusieurs frameAttributes à votre fichier de configuration de catégorie d'étiquettes, les réponses des employés pour les attributs de trame se trouvent dans l'objet JSON dataset-object-attributes.

Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie. Les ellipses (...) indiquent une continuation de cette liste (des objets supplémentaires avec le même format que l'objet traité peuvent apparaître).

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

Fichier de sortie de suivi d'objets de nuage de points 3D

Vous trouverez ci-après le fichier manifeste de sortie d'une tâche d'étiquetage de suivi d'objets de nuage de points 3D. Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie. Les ellipses (...) indiquent une continuation de cette liste (des objets supplémentaires avec le même format que l'objet traité peuvent apparaître).

En plus des éléments standard, les métadonnées incluent une carte des classes qui répertorie chaque classe ayant au moins une étiquette dans la séquence. Si un ou plusieurs cuboïdes ont été modifiés, les métadonnées des flux de travail d'audit contiennent un paramètre adjustment-status défini sur adjusted.

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

Dans l'exemple ci-dessus, les données cuboïdes de chaque trame de seq1.json se trouvent dans SeqLabel.json, dans l'emplacement Amazon S3 s3://<customerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json. Voici un exemple de ce fichier de séquence d'étiquettes.

Pour chaque trame de la séquence, vous voyez le frame-number, frame-name, s'il y a lieu frame-attributes, et une liste d'annotations. Cette liste contient des cuboïdes 3D dessinés pour cette trame. Chaque trame contient les informations suivantes :

  • Un élément object-name au format <class>:<integer>, où class identifie la catégorie d'étiquette et integer est un ID unique dans le jeu de données.

  • Lorsque les employés dessinent un cuboïde, il est associé à un élément object-id unique qui est associé à tous les cuboïdes identifiant le même objet dans plusieurs trames.

  • Chaque classe ou catégorie d'étiquette que vous avez spécifiée dans votre manifeste d'entrée est associée à un élément class-id. Utilisez l'élément class-map pour identifier la classe associée à chaque ID de classe.

  • center-x, center-y et center-z sont les coordonnées du centre du cuboïde, dans le même système de coordonnées que les données source du nuage de points 3D utilisées dans votre tâche d'étiquetage.

  • length, width et height sont utilisés pour décrire les dimensions du cuboïde.

  • yaw est utilisé pour décrire l'orientation (le cap) du cuboïde en radians.

    Note

    yaw figure désormais dans le système cartésien droitier. Comme cette fonctionnalité a été ajoutée le 2 septembre 2022 à 19:02:17 UTC, vous pouvez convertir la mesure de yaw dans les données de sortie antérieures en utilisant la formule suivante (toutes les unités sont en radians) :

    old_yaw_in_output = pi - yaw
  • Dans notre définition, +x est vers la droite, +y vers l'avant et +z vers le haut par rapport au plan du sol. L'ordre de rotation est x - y - z. roll, pitch et yaw sont représentés dans le système cartésien droitier. Dans l'espace 3D, roll est le long de l'axe x, pitch est le long de l'axe y et yaw est le long de l'axe z. Les trois s'exercent dans le sens antihoraire.

  • Si vous avez inclus des attributs d'étiquette dans votre fichier manifeste source pour une classe donnée, un paramètre label-category-attributes est inclus pour tous les cuboïdes pour lesquels les employés ont sélectionné des attributs d'étiquette.

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

Fichier de sortie de suivi d'objets de nuage de points de suivi d'objets 3D-2D

Vous trouverez ci-après le fichier manifeste de sortie d'une tâche d'étiquetage de suivi d'objets de nuage de points 3D. Le texte en italique rouge dans les exemples ci-dessous dépend des spécifications des tâches d'étiquetage et des données de sortie. Les ellipses (...) indiquent une continuation de cette liste (des objets supplémentaires avec le même format que l'objet traité peuvent apparaître).

En plus des éléments standard, les métadonnées incluent une carte des classes qui répertorie chaque classe ayant au moins une étiquette dans la séquence. Si un ou plusieurs cuboïdes ont été modifiés, les métadonnées des flux de travail d'audit contiennent un paramètre adjustment-status défini sur adjusted.

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

Dans l'exemple ci-dessus, les données cuboïdes de chaque trame de seq2.json se trouvent dans SeqLabel.json, dans l'emplacement Amazon S3 s3://<customerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json. Voici un exemple de ce fichier de séquence d'étiquettes.

Pour chaque trame de la séquence, vous voyez le frame-number, frame-name, s'il y a lieu frame-attributes, et une liste d'annotations. Cette liste contient des cuboïdes 3D dessinés pour cette trame. Chaque trame contient les informations suivantes :

  • Un élément object-name au format <class>:<integer>, où class identifie la catégorie d'étiquette et integer est un ID unique dans le jeu de données.

  • Lorsque les employés dessinent un cuboïde, il est associé à un élément object-id unique qui est associé à tous les cuboïdes identifiant le même objet dans plusieurs trames.

  • Chaque classe ou catégorie d'étiquette que vous avez spécifiée dans votre manifeste d'entrée est associée à un élément class-id. Utilisez l'élément class-map pour identifier la classe associée à chaque ID de classe.

  • center-x, center-y et center-z sont les coordonnées du centre du cuboïde, dans le même système de coordonnées que les données source du nuage de points 3D utilisées dans votre tâche d'étiquetage.

  • length, width et height sont utilisés pour décrire les dimensions du cuboïde.

  • yaw est utilisé pour décrire l'orientation (le cap) du cuboïde en radians.

    Note

    yaw figure désormais dans le système cartésien droitier. Comme cette fonctionnalité a été ajoutée le 2 septembre 2022 à 19:02:17 UTC, vous pouvez convertir la mesure de yaw dans les données de sortie antérieures en utilisant la formule suivante (toutes les unités sont en radians) :

    old_yaw_in_output = pi - yaw
  • Dans notre définition, +x est vers la droite, +y vers l'avant et +z vers le haut par rapport au plan du sol. L'ordre de rotation est x - y - z. roll, pitch et yaw sont représentés dans le système cartésien droitier. Dans l'espace 3D, roll est le long de l'axe x, pitch est le long de l'axe y et yaw est le long de l'axe z. Les trois s'exercent dans le sens antihoraire.

  • Si vous avez inclus des attributs d'étiquette dans votre fichier manifeste source pour une classe donnée, un paramètre label-category-attributes est inclus pour tous les cuboïdes pour lesquels les employés ont sélectionné des attributs d'étiquette.

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

Le cuboïde et le cadre de délimitation d'un objet sont liés par un identifiant d'objet commun.