Etiquetar los datos de salida del trabajo - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Etiquetar los datos de salida del trabajo

El resultado de un trabajo de etiquetado se coloca en la ubicación de Amazon S3 que especificó en la consola o en la llamada a la CreateLabelingJoboperación. Los datos de salida aparecen en esta ubicación cuando los trabajadores han enviado una o más tareas o cuando las tareas caducan. Tenga en cuenta que los datos de salida pueden tardar unos minutos en aparecer en Amazon S3 después de que el trabajador envíe la tarea o de que la tarea caduque.

Cada línea del archivo de datos de salida es idéntica al archivo de manifiesto con la adición de un atributo y valor para la etiqueta asignada al objeto de entrada. El nombre de atributo para el valor se define en la consola o en la llamada a la operación CreateLabelingJob. No puede utilizar -metadata en el nombre de atributo de la etiqueta. Si está ejecutando una segmentación semántica de imagen, una segmentación semántica de nube de puntos 3D o un trabajo de rastreo de objetos de nube de puntos 3D, el atributo de etiqueta debe terminar en -ref. Para cualquier otro tipo de trabajo, el nombre del atributo no puede terminar con -ref.

El resultado del trabajo de etiquetado es el valor del par de clave-valor con la etiqueta. La etiqueta y el valor sobrescriben todos JSON los datos existentes en el archivo de entrada con el nuevo valor.

Por ejemplo, el siguiente es el resultado de un trabajo de etiquetado y clasificación de imágenes en el que los archivos de datos de entrada se almacenaron en un Amazon S3 amzn-s3-demo-bucket y el nombre del atributo de la etiqueta se definió como deporte. En este ejemplo, el JSON objeto está formateado para facilitar la lectura; en el archivo de salida real, el JSON objeto está en una sola línea. Para obtener más información sobre el formato de datos, consulte JSON Líneas.

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

El valor de la etiqueta puede ser cualquier valor válidoJSON. En este caso, el valor de etiqueta es el índice de la clase en la lista de clasificación. Otros tipos de trabajos, como por ejemplo un cuadro delimitador, tienen valores más complejos.

Todos los pares de clave-valor del archivo de manifiesto de entrada que no sean un atributo de etiqueta se mantienen sin cambios en el archivo de salida. Puede utilizarlos para transferir datos a su aplicación.

El resultado de un trabajo de etiquetado se puede utilizar como entrada a otro trabajo de etiquetado. Puede utilizarlo cuando encadene trabajos de etiquetado. Por ejemplo, puede enviar un trabajo de etiquetado para determinar el deporte que se está practicando. Después puede enviar otro con los mismos datos para determinar si el deporte se está practicando en interiores o en el exterior. Al usar los datos de salida del primer trabajo como manifiesto para el segundo trabajo, puede consolidar los resultados de los dos trabajos en un archivo de salida para facilitarle a sus aplicaciones la tarea de procesamiento.

El archivo de datos de salida se escribe en la ubicación de salida de forma periódica mientras el trabajo está en curso. Estos archivos intermedios contienen una línea por cada línea del archivo de manifiesto. Si se etiqueta un objeto, se incluye la etiqueta. Si el objeto no ha sido etiquetado, se escribe en el archivo de salida intermedio de manera idéntica al archivo de manifiesto.

Directorios de salida

Ground Truth crea varios directorios en su ruta de salida de Amazon S3. Estos directorios contienen los resultados de su trabajo de etiquetado y otros artefactos del trabajo. Al directorio de nivel superior de un trabajo de etiquetado se le da el mismo nombre que a su trabajo de etiquetado y los directorios de salida se colocan debajo. Por ejemplo, si ha denominado find-people a su trabajo de etiquetado, el resultado deberá estar en uno de los siguientes directorios:

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

Cada directorio contiene la salida siguiente:

Directorio de aprendizaje activo

El directorio activelearning solo está presente cuando se utiliza el etiquetado de datos automatizado. Contiene la validación de entrada y salida establecida para el etiquetado de datos automatizado y la carpeta de entrada y salida para datos etiquetados de forma automática.

Directorio de anotaciones

El directorio annotations contiene todas las anotaciones realizadas por el personal. Se trata de respuestas de trabajadores individuales que no se han consolidado en una sola etiqueta para el objeto de datos.

Hay tres subdirectorios en el directorio annotations.

  • El primero, worker-response, contiene las respuestas de trabajadores individuales. Contiene un subdirectorio para cada iteración, que a su vez contiene un subdirectorio para cada objeto de datos en esa iteración. Los datos de respuesta de los trabajadores para cada objeto de datos se almacenan en un JSON archivo con fecha y hora que contiene las respuestas enviadas por cada trabajador para ese objeto de datos y, si utiliza un personal privado, los metadatos sobre esos trabajadores. Para obtener más información sobre estos metadatos, consulte Metadatos de trabajadores.

  • El segundo, consolidated-annotation, contiene información necesaria para consolidar las anotaciones del lote actual en etiquetas para los objetos de datos.

  • El tercero, intermediate, contiene el manifiesto de salida para el lote actual con toda etiqueta completada. Este archivo se actualiza a medida que la etiqueta de cada objeto de datos se completa.

nota

No es recomendable usar archivos que no se mencionen en la documentación.

Directorio de inferencias

El directorio inference solo está presente cuando se utiliza el etiquetado de datos automatizado. Este directorio contiene los archivos de entrada y salida de la transformación por SageMaker lotes que se utilizan al etiquetar los objetos de datos.

Directorio de manifiestos

El directorio manifest contiene el manifiesto de salida de su trabajo de etiquetado. Hay un subdirectorio en el directorio de manifiesto, output. El directorio output contiene el archivo de manifiesto de salida de su trabajo de etiquetado. El archivo se denomina output.manifest.

Directorio de formación

El directorio training solo está presente cuando se utiliza el etiquetado de datos automatizado. Este directorio contiene los archivos de entrada y salida utilizados para entrenar el modelo de etiquetado de datos automatizado.

Puntuación de confianza

Cuando más de un trabajador anota una misma tarea, su etiqueta se deriva de la consolidación de anotaciones. Ground Truth calcula una puntuación de confianza para cada etiqueta. Una puntuación de confianza es un número entre 0 y 1 que indica la confianza que tiene Ground Truth en la etiqueta. Puede utilizar la puntuación de confianza para comparar objetos de datos etiquetados entre sí y para identificar las etiquetas de mayor o menos confianza.

No interprete el valor de una puntuación de confianza como un valor absoluto ni lo compare con trabajos de etiquetado. Por ejemplo, si todas las puntuaciones de confianza están entre 0,98 y 0,998, solo debe comparar los objetos de datos entre sí y no confiar en las puntuaciones de confianza altas.

No debe comparar las puntuaciones de confianza de objetos de datos etiquetados por personas y objetos de datos etiquetados automáticamente. Las puntuaciones de confianza para las personas se calculan mediante la función de consolidación de anotaciones para la tarea, mientras que las puntuaciones de confianza del etiquetado automatizado se calculan utilizando un modelo que incorpora características de objetos. Los dos modelos, por lo general, tienen diferentes escalas y una confianza media.

Para un trabajo de etiquetado de cuadros delimitadores, Ground Truth calcula una puntuación de confianza por cuadro. Puede comparar las puntuaciones de confianza de una imagen o de varias imágenes para el mismo tipo de etiquetado (personas o automático). No se pueden comparar las puntuaciones de confianza de los trabajos de etiquetado.

Si un solo trabajador incluye una anotación en una tarea (NumberOfHumanWorkersPerDataObject se establece en 1 o, en la consola se escribe 1 para Número de trabajadores por objeto de conjunto de datos), la puntuación de confianza se establece en 0.00.

Metadatos de trabajadores

Ground Truth proporciona información que puede utilizar para realizar un seguimiento de trabajadores individuales en los datos de salida de las tareas. Los siguientes datos se encuentran en los directorios situados debajo de worker-response, que se encuentra enDirectorio de anotaciones:

  • acceptanceTime es la hora a la que el trabajador aceptó la tarea. El formato de esta marca temporal es YYYY-MM-DDTHH:MM:SS.mmmZ para el año (YYYY), el mes (MM), el día (DD), la hora (HH), el minuto (MM), el segundo (SS) y el milisegundo (mmm). La fecha y la hora están separadas por una T.

  • submissionTime es la hora a la que el trabajador envió sus anotaciones mediante el botón Enviar. El formato de esta marca temporal es YYYY-MM-DDTHH:MM:SS.mmmZ para el año (YYYY), el mes (MM), el día (DD), la hora (HH), el minuto (MM), el segundo (SS) y el milisegundo (mmm). La fecha y la hora están separadas por una T.

  • timeSpentInSeconds indica el tiempo total, en segundos, que un trabajador trabajó activamente en esa tarea. Esta métrica no incluye el tiempo en que un trabajador hizo una pausa o se tomó un descanso.

  • El workerId es único para cada trabajador.

  • Si utiliza personal privado, en workerMetadata verá lo siguiente.

    • identityProviderType es el servicio que se utiliza para administrar al personal privado.

    • issuerEs el grupo de usuarios de Cognito o el emisor del proveedor de OIDC identidad (IdP) asociado al equipo de trabajo asignado a esta tarea de revisión humana.

    • Un identificador sub único hace referencia al trabajador. Si crea personal con Amazon Cognito, puede recuperar los detalles de este trabajador (como el nombre o el nombre de usuario) con este identificador mediante Amazon Cognito. Para obtener más información, consulte Gestión y búsqueda de cuentas de usuario en la Guía para desarrolladores de Amazon Cognito.

A continuación, tenemos un ejemplo del resultado que puede ver si utiliza Amazon Cognito para crear personal privado. Esto se identifica en 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" } }

El siguiente es un ejemplo de workerMetadata lo que puede ver si utiliza su propio OIDC IdP para crear una fuerza laboral privada:

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

Para obtener más información sobre el uso de personal privado, consulte Fuerza laboral privada.

Metadatos de salida

El resultado de cada trabajo contiene metadatos sobre la etiqueta asignada a los objetos de datos. Estos elementos son los mismos para todos los trabajos con variaciones menores. En el ejemplo siguiente se muestran los elementos de metadatos.

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

Los elementos tienen el significado siguiente:

  • confidence: la confianza que Ground Truth tiene de que la etiqueta es correcta. Para obtener más información, consulte Puntuación de confianza.

  • type: el tipo de trabajo de clasificación. Para los tipos de trabajo, consulte Tipos de tareas integrados.

  • job-name: el nombre asignado al trabajo cuando se creó.

  • human-annotated: si el objeto de datos lo ha etiquetado una persona o mediante un etiquetado de datos automatizado. Para obtener más información, consulte Automatice el etiquetado de datos.

  • creation-date: la fecha y hora en que se creó el plan.

Resultado del trabajo de clasificación

A continuación, se muestran ejemplos de salida de un trabajo de clasificación de imágenes y un trabajo de clasificación de texto. Incluye la etiqueta que Ground Truth ha asignado al objeto de datos, el valor de la etiqueta y los metadatos que describen la etiqueta.

Además de los elementos de metadatos estándar, los metadatos de un trabajo de clasificación incluyen el valor de texto de la clase de etiqueta. Para obtener más información, consulte Clasificación de imágenes - MXNet.

El texto rojo en cursiva en los ejemplos siguientes depende de las especificaciones del trabajo de etiquetado y de los datos de salida.

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

Resultado de un trabajo de clasificación con múltiples etiquetas

Los siguientes son archivos de manifiesto de salida de ejemplo de un trabajo de clasificación de imágenes con etiquetas múltiples y un trabajo de clasificación de texto con etiquetas múltiples. Incluyen las etiquetas que Ground Truth ha asignado al objeto de datos (por ejemplo, la imagen o el fragmento de texto) y los metadatos que describen las etiquetas que el trabajador vio al completar la tarea de etiquetado.

El parámetro de nombre de atributo de etiqueta (por ejemplo, image-label-attribute-name) contiene una matriz de todas las etiquetas seleccionadas por al menos uno de los trabajadores que completó esta tarea. Esta matriz contiene claves enteras (por ejemplo, [1,0,8]) que corresponden a las etiquetas encontradas en class-map. En el ejemplo de clasificación de imágenes de etiquetas múltiples, bicycle, person y clothing se seleccionaron de la mano de al menos uno de los trabajadores que completó la tarea de etiquetado de la imagen, exampleimage.jpg.

confidence-map muestra la puntuación de confianza que Ground Truth asigna a cada etiqueta seleccionada por un trabajador. Para obtener más información sobre las puntuaciones de confianza de Ground Truth, consulte Puntuación de confianza.

El texto rojo en cursiva en los ejemplos siguientes depende de las especificaciones del trabajo de etiquetado y de los datos de salida.

A continuación se muestra un ejemplo de un archivo de manifiesto de salida de clasificación de imágenes de etiquetas múltiples.

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

A continuación se muestra un ejemplo de un archivo de manifiesto de salida de clasificación de texto con etiquetas múltiples. En este ejemplo, approving, sad y critical se seleccionaron de la mano de al menos uno de los trabajadores que completó la tarea de etiquetado del objeto exampletext.txt encontrado en amzn-s3-demo-bucket.

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

Salida del trabajo en forma de cuadro delimitador

A continuación se muestra un ejemplo de salida (archivo de manifiesto de salida) de un trabajo de cuadro delimitador. Para esta tarea, se devuelven tres cuadros delimitadores. El valor de la etiqueta contiene información sobre el tamaño de la imagen y la ubicación de los cuadros delimitadores.

El elemento class_id es el índice de la clase de cuadro en la lista de clases disponibles para la tarea. El elemento de metadatos class-map contiene el texto de la clase.

Los metadatos tienen una puntuación de confianza independiente para cada cuadro delimitador. Los metadatos también incluyen el elemento class-map que mapea el class_id con el valor de texto de la clase. Para obtener más información, consulte Detección de objetos - MXNet.

El texto rojo en cursiva en los ejemplos siguientes depende de las especificaciones del trabajo de etiquetado y de los datos de salida.

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

El resultado de un trabajo de ajuste de un cuadro delimitador tiene el siguiente aspecto. JSON Tenga en cuenta que el original JSON se mantiene intacto y aparecen dos nuevos trabajos, cada uno con «adjust-» antes del nombre del atributo original.

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

En este resultado, el type del trabajo no cambia, pero se agrega un campo adjustment-status. Este campo tiene el valor de adjusted o unadjusted. Si varios trabajadores han revisado el objeto y al menos uno ha ajustado la etiqueta, el estado es adjusted.

Reconocimiento de entidades con nombre

A continuación, se muestra un ejemplo de archivo de manifiesto de salida de una tarea de etiquetado denominada entity recognition (NER). Para esta tarea, se devuelven siete entities.

En el manifiesto de salida, el JSON objeto incluye una lista de las labels (categorías de etiquetas) que has proporcionado. annotations

Las respuestas de los trabajadores se encuentran en una lista denominada entities. Cada entidad de esta lista es un JSON objeto que contiene un label valor que coincide con uno de los de la labels lista, un startOffset valor entero para el desplazamiento Unicode inicial del tramo etiquetado y un endOffset valor entero para el desplazamiento Unicode final.

Los metadatos tienen una puntuación de confianza independiente para cada entidad. Si un solo trabajador ha etiquetado cada objeto de datos, el valor de confianza de cada entidad será cero.

El texto rojo y en cursiva de los ejemplos siguientes depende del etiquetado de las entradas de trabajo y las respuestas de los trabajadores.

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

Etiqueta el resultado del trabajo de verificación

La salida (archivo de manifiesto de salida) de un trabajo de verificación de cuadros delimitadores será diferente a la salida de un trabajo de anotación de cuadros delimitadores. El motivo es que los trabajadores tienen un tipo diferente de tarea. No están etiquetando objetos, sino evaluando la precisión del etiquetado anterior, valorándolo y proporcionando después su decisión y, opcionalmente, algunos comentarios.

Si los trabajadores humanos están verificando o ajustando las etiquetas de las cajas delimitadoras anteriores, el resultado de un trabajo de verificación tendría el siguiente aspecto. JSON El texto rojo en cursiva en los ejemplos siguientes depende de las especificaciones del trabajo de etiquetado y de los datos de salida.

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

Aunque el valor de type en la salida original del cuadro delimitador era groundtruth/object-detection, el nuevo valor de type será groundtruth/label-verification. Tenga en cuenta también que la matriz de worker-feedback proporciona comentarios de los trabajadores. Si el trabajador no proporciona comentarios, los campos vacíos se excluirán durante la consolidación.

Salida de trabajos de segmentación semántica

A continuación, se muestra la salida de un trabajo de etiquetado de segmentación semántica. El valor de la etiqueta de este trabajo es una referencia a un PNG archivo de un bucket de Amazon S3.

Además de los elementos estándar, los metadatos de la etiqueta incluyen un mapa de color que define qué color se ha utilizado para etiquetar la imagen, el nombre de la clase asociada al color y la puntuación de confianza de cada color. Para obtener más información, consulte Algoritmo de segmentación semántica.

El texto rojo en cursiva en los ejemplos siguientes depende de las especificaciones del trabajo de etiquetado y de los datos de salida.

{ "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 confianza se puntúa por imagen. Las puntuaciones de confianza son las mismas en todas las clases dentro de una imagen.

El resultado de un trabajo de ajuste de segmentación semántica es similar al siguiente. JSON

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

Salida de detección de objetos de fotogramas de vídeo

El siguiente es el archivo de manifiesto de salida de un trabajo de etiquetado con seguimiento de objetos de un fotograma de vídeo. La red, italicized text en los ejemplos siguientes, depende de las especificaciones del trabajo de etiquetado y de los datos de salida.

Además de los elementos estándar, los metadatos incluyen un mapa de clase que enumera cada clase que tiene al menos una etiqueta en la secuencia. Los metadatos también incluyen job-name, que es el nombre que asignó al trabajo de etiquetado. Para las tareas de ajuste, si se modificaron uno o más cuadros delimitadores, existe un parámetro adjustment-status en los metadatos de los flujos de trabajo de auditoría que se establece como 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 crea un archivo de secuencia de salida para cada secuencia de fotogramas de vídeo etiquetada. Cada archivo de secuencia de salida contiene lo siguiente:

  • Todas las anotaciones de todos los fotogramas de una secuencia de la detection-annotations lista de JSON objetos.

  • Para cada fotograma anotado por un trabajador, el nombre del archivo del marco (frame), el número (frame-no), una lista de JSON objetos que contienen anotaciones (annotations) y, si procede,. frame-attributes El nombre de esta lista viene definido por el tipo de tarea que utilice: polylines, polygons, keypoints y, para los cuadros delimitadores, annotations.

    Cada JSON objeto contiene información sobre una única anotación y la etiqueta asociada. En la siguiente tabla, se describen los parámetros que verá para cada tipo de tarea de fotograma de vídeo.

    Tipo de tarea Parámetros

    Cuadro delimitador

    Dimensiones del cuadro: height y width

    Ubicación de los píxeles de la esquina izquierda de la parte superior del cuadro: top y left

    Punto clave

    Vértices de puntos clave: { "x": int, "y": int }

    Polygon

    Una lista de vértices de polígonos: vertices

    Vértices de polígonos: { "x": int, "y": int }

    Un polígono es una forma cerrada, por lo que el primer punto también representará el último.

    Polilínea

    Una lista de vértices de polilíneas: vertices

    Vértices de polilíneas: { "x": int, "y": int }

    Además de los valores específicos del tipo de tarea, verá lo siguiente en cada JSON objeto:

    • Valores de cualquiera de los label-category-attributes que se especificaron para esa etiqueta.

    • El class-id del cuadro. Use el class-map del archivo de manifiesto de salida para ver a qué categoría de etiquetas corresponde este identificador.

El siguiente es un ejemplo de un archivo SeqLabel.json de un trabajo de etiquetado de detección de objetos de un fotograma de vídeo de un cuadro delimitador. Este archivo se colocará en 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} } ] }

Salida de seguimiento de objetos de fotogramas de vídeo

A continuación, tenemos un archivo de manifiesto de salida de un trabajo de etiquetado con seguimiento de objetos en fotogramas de vídeo. La red, italicized text en los ejemplos siguientes, depende de las especificaciones del trabajo de etiquetado y de los datos de salida.

Además de los elementos estándar, los metadatos incluyen un mapa de clases que enumera cada clase que tiene al menos una etiqueta en la secuencia de fotogramas. Los metadatos también incluyen job-name, que es el nombre que asignó al trabajo de etiquetado. Para las tareas de ajuste, si se modificaron uno o más cuadros delimitadores, existe un parámetro adjustment-status en los metadatos de los flujos de trabajo de auditoría que se establece como 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 crea un archivo de secuencia de salida para cada secuencia de fotogramas de vídeo etiquetada. Cada archivo de secuencia de salida contiene lo siguiente:

  • Todas las anotaciones de todos los fotogramas de una secuencia de la tracking-annotations lista de JSON objetos.

  • Para cada marco anotado por un trabajador, el marco (frame), el número (frame-no), una lista de JSON objetos que contienen anotaciones (annotations) y, si corresponde, los atributos del marco (). frame-attributes El nombre de esta lista viene definido por el tipo de tarea que utilice: polylines, polygons, keypoints y, para los cuadros delimitadores, annotations.

    Cada JSON objeto contiene información sobre una única anotación y la etiqueta asociada. En la siguiente tabla, se describen los parámetros que verá para cada tipo de tarea de fotograma de vídeo.

    Tipo de tarea Parámetros

    Cuadro delimitador

    Dimensiones del cuadro: height y width

    Ubicación de los píxeles de la esquina izquierda de la parte superior del cuadro: top y left

    Punto clave

    Vértices de puntos clave: { "x": int, "y": int }

    Polygon

    Una lista de vértices de polígonos: vertices

    Vértices de polígonos: { "x": int, "y": int }

    Un polígono es una forma cerrada, por lo que el primer punto también representará el último.

    Polilínea

    Una lista de vértices de polilíneas: vertices

    Vértices de polilíneas: { "x": int, "y": int }

    Además de los valores específicos del tipo de tarea, verá lo siguiente en cada JSON objeto:

    • Valores de cualquiera de los label-category-attributes que se especificaron para esa etiqueta.

    • El class-id del cuadro. Use el class-map del archivo de manifiesto de salida para ver a qué categoría de etiquetas corresponde este identificador.

    • Y object-id, que identifica una instancia de una etiqueta. Este identificador será el mismo en todos los fotogramas si un trabajador identificó la misma instancia de un objeto en varios fotogramas. Por ejemplo, si un automóvil aparece en varios fotogramas, todos los cuadros delimitadores utilizados para identificar ese automóvil tendrán el mismo object-id.

    • El object-name, que es el identificador de instancia de esa anotación.

A continuación, tenemos un ejemplo de un archivo SeqLabel.json de un trabajo de etiquetado con seguimiento de objetos de un fotograma de vídeo de cuadro delimitador. Este archivo se colocará en 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} } ] }

Salida de segmentación semántica de nubes de puntos 3D

A continuación, se muestra la salida de un archivo de manifiesto de un trabajo de etiquetado con segmentación semántica de nube de puntos 3D.

Además de los elementos estándar, los metadatos de la etiqueta incluyen un mapa de color que define qué color se ha utilizado para etiquetar la imagen, el nombre de la clase asociada al color y la puntuación de confianza de cada color. Además, hay un parámetro adjustment-status en los metadatos para los flujos de trabajo de auditoría que se establece en adjusted si se ha modificado la máscara de color. Si ha añadido una o más frameAttributes al archivo de configuración de categorías de etiquetas, las respuestas de los trabajadores a los atributos del marco se encuentran en el JSON objeto,. dataset-object-attributes

El parámetro your-label-attribute-ref contiene la ubicación de un archivo comprimido con una extensión.zlib. Al descomprimir este archivo, contiene una matriz. Cada índice de la matriz corresponde al índice de un punto anotado en la nube de puntos de entrada. El valor de la matriz en un índice dado proporciona la clase del punto en el mismo índice de la nube de puntos, según el mapa semántico de colores que se encuentra en el parámetro color-map de metadata.

Puede usar un código Python similar al siguiente para descomprimir un archivo .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)

El bloque de código anterior producirá un resultado similar al siguiente. Cada elemento de la matriz impresa contiene la clase de un punto en ese índice de la nube de puntos. Por ejemplo, my_int_array_data[0] = 1 significa que en la nube de puntos de entrada point[0] tiene una clase 1. En el siguiente ejemplo del archivo de manifiesto de salida, la clase 0 se corresponde con "Background", 1 con Car y 2 con 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])

A continuación, se muestra un ejemplo de un archivo de manifiesto de salida de un trabajo de etiquetado de nube de puntos 3D con segmentación semántica. El texto rojo en cursiva en los ejemplos siguientes depende de las especificaciones del trabajo de etiquetado y de los datos de salida.

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

Salida de detección de objetos de nube de puntos 3D

A continuación se muestra un ejemplo de salida de un trabajo de detección con objetos de nube de puntos 3D. Para este tipo de tarea, los datos sobre cuboides 3D se devuelven en el parámetro 3d-bounding-box, en una lista denominada annotations. En esta lista, cada cuboide 3D se describe utilizando la siguiente información.

  • Cada clase o categoría de etiqueta que especifique en el manifiesto de entrada está asociada a un class-id. Utilice el class-map para identificar la clase asociada a cada ID de clase.

  • Estas clases se utilizan para dar a cada cuboide 3D un object-name con el formato <class>:<integer>, donde integer es un número único para identificar dicho cuboide en el fotograma.

  • center-x, center-y y center-z son las coordenadas del centro del cuboide, en el mismo sistema de coordenadas que los datos de entrada de la nube de puntos 3D que se utilizan en el trabajo de etiquetado.

  • length, width y height describen las dimensiones del cuboide.

  • yaw se utiliza para describir la orientación (rumbo) del cuboide en radianes.

    nota

    yaw está ahora en el sistema cartesiano para diestros. Dado que esta función se agregó el 2 de septiembre de 2022 a las 19:02:17UTC, puede convertir la yaw medida en los datos de salida anteriores utilizando lo siguiente (todas las unidades están en radianes):

    old_yaw_in_output = pi - yaw
  • En nuestra definición, +x está a la derecha, +y está hacia adelante y +z está hacia arriba desde el plano del suelo. El orden de rotación es x - y - z. roll, pitch y yaw están representados en el sistema cartesiano para diestros. En el espacio 3D, roll está a lo largo del eje x, pitch está a lo largo del eje y y yaw está a lo largo del eje z. Los tres giran en sentido contrario a las agujas del reloj.

  • Si ha incluido atributos de etiqueta en el archivo de manifiesto de entrada para una clase determinada, se incluye un parámetro label-category-attributes para todos los cuboides para los que los trabajadores seleccionaron atributos de etiqueta.

Si se modificaron uno o más cuboides, hay un parámetro adjustment-status en los metadatos para los flujos de trabajo de auditoría que se establece en adjusted. Si ha añadido una o más frameAttributes al archivo de configuración de categorías de etiquetas, las respuestas de los trabajadores a los atributos del marco se encuentran en el JSON objeto,. dataset-object-attributes

La red, italicized text en los ejemplos siguientes, depende de las especificaciones del trabajo de etiquetado y de los datos de salida. Las elipses (...) indican una continuación de esa lista, en la que pueden aparecer objetos adicionales con el mismo formato que el objeto anterior.

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

Salida de rastreo de objetos de nube de puntos 3D

A continuación, se muestra un ejemplo de archivo de manifiesto de salida de un trabajo de etiquetado con seguimiento de objetos de nubes de puntos 3D. La red, italicized text en los ejemplos siguientes, depende de las especificaciones del trabajo de etiquetado y de los datos de salida. Las elipses (...) indican una continuación de esa lista, en la que pueden aparecer objetos adicionales con el mismo formato que el objeto anterior.

Además de los elementos estándar, los metadatos incluyen un mapa de clase que enumera cada clase que tiene al menos una etiqueta en la secuencia. Si se modificaron uno o más cuboides, hay un parámetro adjustment-status en los metadatos para los flujos de trabajo de auditoría que se establece en adjusted.

{ "source-ref": "s3://amzn-s3-demo-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" } }

En el ejemplo anterior, los datos del cuboide para cada fotograma de seq1.json están en SeqLabel.json en la ubicación de Amazon S3, s3://<customerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json. A continuación, se muestra un ejemplo de este archivo de secuencia de etiquetas.

Para cada fotograma de la secuencia, verá frame-number, frame-name, si corresponde, frame-attributes, y una lista de annotations. Esta lista contiene los cuboides 3D que se dibujaron para ese fotograma. Cada anotación incluye la siguiente información:

  • Un object-name con el formato <class>:<integer>, donde class identifica la categoría de etiqueta y integer es un identificador único en el conjunto de datos.

  • Cuando los trabajadores dibujan un cuboide, se asocia con un object-id único que está asociado a su vez con todos los cuboides que identifican el mismo objeto en varios fotogramas.

  • Cada clase o categoría de etiqueta, especificada en el manifiesto de entrada está asociada a un class-id. Utilice el class-map para identificar la clase asociada a cada ID de clase.

  • center-x, center-y y center-z son las coordenadas del centro del cuboide, en el mismo sistema de coordenadas que los datos de entrada de la nube de puntos 3D que se utilizan en el trabajo de etiquetado.

  • length, width y height describen las dimensiones del cuboide.

  • yaw se utiliza para describir la orientación (rumbo) del cuboide en radianes.

    nota

    yaw está ahora en el sistema cartesiano para diestros. Dado que esta función se agregó el 2 de septiembre de 2022 a las 19:02:17UTC, puede convertir la yaw medida en los datos de salida anteriores utilizando lo siguiente (todas las unidades están en radianes):

    old_yaw_in_output = pi - yaw
  • En nuestra definición, +x está a la derecha, +y está hacia adelante y +z está hacia arriba desde el plano del suelo. El orden de rotación es x - y - z. roll, pitch y yaw están representados en el sistema cartesiano para diestros. En el espacio 3D, roll está a lo largo del eje x, pitch está a lo largo del eje y y yaw está a lo largo del eje z. Los tres giran en sentido contrario a las agujas del reloj.

  • Si ha incluido atributos de etiqueta en el archivo de manifiesto de entrada para una clase determinada, se incluye un parámetro label-category-attributes para todos los cuboides para los que los trabajadores seleccionaron atributos de etiqueta.

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

Salida de rastreo de objetos en 3D-2D, nube de puntos

A continuación, se muestra un ejemplo de archivo de manifiesto de salida de un trabajo de etiquetado con seguimiento de objetos de nubes de puntos 3D. La red, italicized text en los ejemplos siguientes depende de las especificaciones del trabajo de etiquetado y de los datos de salida. Las elipses (...) indican una continuación de esa lista, en la que pueden aparecer objetos adicionales con el mismo formato que el objeto anterior.

Además de los elementos estándar, los metadatos incluyen un mapa de clase que enumera cada clase que tiene al menos una etiqueta en la secuencia. Si se modificaron uno o más cuboides, hay un parámetro adjustment-status en los metadatos para los flujos de trabajo de auditoría que se establece en adjusted.

{ "source-ref": "s3://iad-groundtruth-lidar-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://iad-groundtruth-lidar-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://iad-groundtruth-lidar-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" } }

En el ejemplo anterior, los datos del cuboide para cada fotograma de seq2.json están en SeqLabel.json en la ubicación de Amazon S3, s3://<customerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json. A continuación, se muestra un ejemplo de este archivo de secuencia de etiquetas.

Para cada fotograma de la secuencia, verá frame-number, frame-name, si corresponde, frame-attributes, y una lista de annotations. Esta lista contiene los cuboides 3D que se dibujaron para ese fotograma. Cada anotación incluye la siguiente información:

  • Un object-name con el formato <class>:<integer>, donde class identifica la categoría de etiqueta y integer es un identificador único en el conjunto de datos.

  • Cuando los trabajadores dibujan un cuboide, se asocia con un object-id único que está asociado a su vez con todos los cuboides que identifican el mismo objeto en varios fotogramas.

  • Cada clase o categoría de etiqueta, especificada en el manifiesto de entrada está asociada a un class-id. Utilice el class-map para identificar la clase asociada a cada ID de clase.

  • center-x, center-y y center-z son las coordenadas del centro del cuboide, en el mismo sistema de coordenadas que los datos de entrada de la nube de puntos 3D que se utilizan en el trabajo de etiquetado.

  • length, width y height describen las dimensiones del cuboide.

  • yaw se utiliza para describir la orientación (rumbo) del cuboide en radianes.

    nota

    yaw está ahora en el sistema cartesiano para diestros. Dado que esta función se agregó el 2 de septiembre de 2022 a las 19:02:17UTC, puede convertir la yaw medida en los datos de salida anteriores utilizando lo siguiente (todas las unidades están en radianes):

    old_yaw_in_output = pi - yaw
  • En nuestra definición, +x está a la derecha, +y está hacia adelante y +z está hacia arriba desde el plano del suelo. El orden de rotación es x - y - z. roll, pitch y yaw están representados en el sistema cartesiano para diestros. En el espacio 3D, roll está a lo largo del eje x, pitch está a lo largo del eje y y yaw está a lo largo del eje z. Los tres giran en sentido contrario a las agujas del reloj.

  • Si ha incluido atributos de etiqueta en el archivo de manifiesto de entrada para una clase determinada, se incluye un parámetro label-category-attributes para todos los cuboides para los que los trabajadores seleccionaron atributos de etiqueta.

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

El cuboide y el cuadro delimitador de un objeto están enlazados mediante un identificador de objeto común.