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.
Étiquetage des données de sortie des tâches
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'CreateLabelingJobopération. 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
et l'attribut de l'étiquette a été nommé amzn-s3-demo-bucket
. 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 JSONsport
{ "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
" } }
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://
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
Chaque répertoire contient la sortie suivante :
Répertoire d'apprentissage actif
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 des 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 relatives aux travailleurs. -
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 d'inférence
Le répertoire inference
ne s'affiche que lorsque vous utilisez l'étiquetage automatisé des données. Ce répertoire contient les fichiers d'entrée et de sortie pour la transformation par lots SageMaker AI utilisée lors de l'étiquetage des objets de données.
Répertoire des manifestes
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 des formations
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 confiance
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 relatives aux travailleurs
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 des annotations :
-
acceptanceTime
est l'heure à laquelle l'employé a accepté la tâche. Le format de cet horodatage estYYYY-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 estYYYY-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 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 confiance. -
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 Automatisez l'étiquetage des données. -
creation-date
– La date et l'heure de création de l'étiquette.
Résultat du travail 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://
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
" } }
Résultat du travail de classification multi-é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 confiance.
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://
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" } }
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
.amzn-s3-demo-bucket
{ "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" } }
Résultat de la tâche Bounding Box
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://
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
" } }
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 des 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
} ] } }
Résultat de la tâche 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://
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.
"} ] } }
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://
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.
"} ] } }
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://
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
", } }
Sortie de détection d'objets par image vidéo
Vous trouverez ci-après le fichier manifeste de sortie d'une tâche d'étiquetage de détection d'objets. Les red, italicized text
exemples ci-dessous dépendent des spécifications de la tâche 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://
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 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
etannotations
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 Cadre de délimitation
Dimensions de la zone :
height
etwidth
Emplacement du pixel en haut de la zone, coin gauche :
top
etleft
Point clé
Sommets du point clé : { "x": int, "y": int }
Polygone
Liste des sommets de polygone :
Sommets de polygone :vertices
{ "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 :
Sommets de polyline :vertices
{ "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 declass-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://
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
} } ] }
Sortie de suivi d'objets par image vidéo
Vous trouverez ci-après le fichier manifeste de sortie d'une tâche d'étiquetage de suivi d'objets. Les red, italicized text
exemples ci-dessous dépendent des spécifications de la tâche 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://
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 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
etannotations
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 Cadre de délimitation
Dimensions de la zone :
height
etwidth
Emplacement du pixel en haut de la zone, coin gauche :
top
etleft
Point clé
Sommets du point clé : { "x": int, "y": int }
Polygone
Liste des sommets de polygone :
Sommets de polygone :vertices
{ "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 :
Sommets de polyline :vertices
{ "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 declass-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êmeobject-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://
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
} } ] }
Sortie de segmentation sémantique d'un 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
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 your-label-attribute
-refcolor-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://
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
} } }
Sortie de détection d'objets en 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émentclass-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
etcenter-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
etheight
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 deyaw
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
etyaw
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 etyaw
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
.
Les red, italicized text
exemples ci-dessous dépendent des spécifications de la tâche d'étiquetage et des données de sortie. Les points de suspension (...
) indiquent une suite de cette liste, où des objets supplémentaires ayant le même format que l'objet précédent peuvent apparaître.
{ "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
} } }
Sortie de suivi d'objets en 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. Les red, italicized text
exemples ci-dessous dépendent des spécifications de la tâche d'étiquetage et des données de sortie. Les points de suspension (...
) indiquent une suite de cette liste, où des objets supplémentaires ayant le même format que l'objet précédent 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://
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
" } }
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://
. Voici un exemple de ce fichier de séquence d'étiquettes.amzn-s3-demo-bucket
/<labelingJobName>
/annotations/consolidated-annotation/output/<datasetObjectId>
/SeqLabel.json
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 etinteger
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émentclass-map
pour identifier la classe associée à chaque ID de classe. -
center-x
,center-y
etcenter-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
etheight
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 deyaw
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
etyaw
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 etyaw
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
" } ] } ] }
Point de suivi d'objets 3D-2D, sortie de suivi d'objets dans le cloud
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. Les red, italicized text
exemples ci-dessous dépendent des spécifications de la tâche d'étiquetage et des données de sortie. Les points de suspension (...
) indiquent une suite de cette liste, où des objets supplémentaires ayant le même format que l'objet précédent 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://
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
" } }
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://
. Voici un exemple de ce fichier de séquence d'étiquettes.amzn-s3-demo-bucket
/<labelingJobName>
/annotations/consolidated-annotation/output/<datasetObjectId>
/SeqLabel.json
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 etinteger
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émentclass-map
pour identifier la classe associée à chaque ID de classe. -
center-x
,center-y
etcenter-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
etheight
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 deyaw
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
etyaw
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 etyaw
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.