

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Rotulando dados de saída do trabalho
<a name="sms-data-output"></a>

A saída de um trabalho de etiquetagem é colocada no local do Amazon S3 que você especificou no console ou na chamada para a [CreateLabelingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html)operação. Os dados de saída aparecem nesse local quando os operadores enviam uma ou mais tarefas ou quando as tarefas expiram. Observe que pode levar alguns minutos para que os dados de saída apareçam no Amazon S3 depois que o operador envia a tarefa ou a tarefa expira.

Cada linha no arquivo de dados de saída é idêntica ao arquivo de manifesto com a adição de um atributo e um valor para o rótulo atribuído ao objeto de entrada. O nome do atributo para o valor é definido no console ou na chamada para a operação `CreateLabelingJob`. Você não pode usar `-metadata` no nome de atributo do rótulo. Se você estiver executando um trabalho de segmentação semântica de imagem, de segmentação semântica de nuvem de pontos 3D ou de rastreamento de objetos de nuvem de pontos 3D, o atributo de rótulo deve terminar com `-ref`. Para qualquer outro tipo de trabalho, o nome do atributo não pode terminar com `-ref`.

A saída do trabalho de rotulagem é o valor do par de chave-valor com o rótulo. O rótulo e o valor substituem quaisquer dados JSON existentes no arquivo de entrada pelo novo valor. 

Por exemplo, veja a seguir a saída de um trabalho de rotulagem de classificação de imagem em que os arquivos de dados de entrada foram armazenados em um `{{amzn-s3-demo-bucket}}` do Amazon S3 e o nome de atributo do rótulo foi definido como {{`sport`}}. Neste exemplo, o objeto JSON é formatado para legibilidade, no arquivo de saída real, e o objeto JSON está em uma única linha. Para obter mais informações sobre o formato de dados, consulte [Linhas JSON](http://jsonlines.org/). 

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

O valor do rótulo pode ser qualquer JSON válido. Nesse caso, o valor do rótulo é o índice da classe na lista de classificação. Outros tipos de trabalho, como caixa delimitadora, possuem valores mais complexos.

Qualquer par de chave/valor no arquivo de manifesto de entrada diferente do atributo de rótulo permanece inalterado no arquivo de saída. Você pode usar isso para transmitir dados à sua aplicação.

A saída de um trabalho de rotulagem pode ser usada como entrada para outro trabalho de rotulagem. Ela pode ser usada quando você estiver encadeando trabalhos de rotulagem. Por exemplo, pode enviar um trabalho de rotulagem para determinar o esporte que está sendo praticado. Em seguida, você envia outro usando os mesmos dados para determinar se o esporte está sendo praticado em ambientes fechados ou ao ar livre. Usando os dados de saída do primeiro trabalho como o manifesto do segundo trabalho, você pode consolidar os resultados dos dois trabalhos em um único arquivo de saída para facilitar o processamento pelos suas aplicações. 

O arquivo de dados de saída é gravado no local de saída periodicamente enquanto o trabalho está em andamento. Esses arquivos intermediários contêm uma linha para cada linha no arquivo manifesto. Se um objeto estiver rotulado, o rótulo será incluído. Se o objeto não tiver sido rotulado, ele será gravado no arquivo de saída intermediário de forma idêntica ao arquivo de manifesto.

## Diretórios de saída
<a name="sms-output-directories"></a>

O Ground Truth cria vários diretórios no caminho de saída do Amazon S3. Esses diretórios contêm os resultados do seu trabalho de rotulagem e outros artefatos do trabalho. O diretório de nível superior de um trabalho de rotulagem recebe o mesmo nome do seu trabalho de rotulagem; os diretórios de saída são colocados abaixo dele. Por exemplo, se você nomeou seu trabalho de rotulagem como **find-people**, sua saída estará nos seguintes diretórios:

```
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 diretório contém a seguinte saída:

### Diretório de aprendizado ativo
<a name="sms-output-activelearning"></a>

O diretório `activelearning` só está presente quando você usa a rotulagem de dados automatizada. Ele contém o conjunto de validação de entrada e saída para rotulagem de dados automatizada e a pasta de entrada e saída para dados automaticamente rotulados.

### Diretório de anotação
<a name="sms-directories-annotations"></a>

O diretório `annotations` contém todas as anotações feitas pela força de trabalho. Estas são as respostas de operadores individuais que não foram consolidadas em um único rótulo para o objeto de dados. 

Há três subdiretórios no diretório `annotations`. 
+ O primeiro, `worker-response`, contém as respostas dos operadores individuais. Ele contém um subdiretório para cada iteração, que, por sua vez, contém um subdiretório para cada objeto de dados nessa iteração. Os dados de resposta do operador para cada objeto de dados são armazenados em um arquivo JSON com carimbo de data e hora que contém as respostas enviadas por cada operador para esse objeto de dados e, se você usa uma força de trabalho privada, metadados sobre esses operadores. Para saber mais sobre este metadado, consulte [Metadados do operador](#sms-worker-id-private).
+ O segundo, `consolidated-annotation`, contém informações necessárias para consolidar as anotações no lote atual em rótulos para os objetos de dados.
+ O terceiro, `intermediate`, contém o manifesto de saída para o lote atual com qualquer rótulo completo. Esse arquivo é atualizado conforme o rótulo de cada objeto de dados é concluído.

**nota**  
Recomendamos não usar arquivos que não estejam mencionados na documentação.

### Diretório de inferência
<a name="sms-directories-inference"></a>

O diretório `inference` só está presente quando você usa a rotulagem de dados automatizada. Esse diretório contém os arquivos de entrada e saída da transformação em lote do SageMaker AI usada ao rotular objetos de dados.

### Diretório do manifesto
<a name="sms-directories-manifest"></a>

O diretório `manifest` contém o manifesto de saída do seu trabalho de rotulagem. Há um subdiretório no diretório de manifesto, `output`. O diretório `output` contém o arquivo manifesto de saída para o trabalho de rotulagem. O arquivo se chama `output.manifest`.

### Diretório de treinamento
<a name="sms-directories-training"></a>

O diretório `training` só está presente quando você usa a rotulagem de dados automatizada. O diretório contém os arquivos de entrada e saída utilizados para treinar o modelo de rotulagem de dados automatizada.

## Pontuação de confiança
<a name="sms-output-confidence"></a>

Quando você tem mais de um operador anotando uma única tarefa, seu rótulo resulta da consolidação da anotação. O Ground Truth calcula um escore de confiança para cada rótulo. Uma *pontuação de confiança* é um número entre 0 e 1 que indica a confiança do Ground Truth no rótulo. Você pode usar o escore de confiança para comparar objetos de dados rotulados entre si e identificar os rótulos menos seguros ou mais confiáveis.

Você não deve interpretar o valor de uma pontuação de confiança como um valor absoluto ou comparar pontuações de confiança entre trabalhos de rotulagem. Por exemplo, se todos os escores de confiança estiverem entre 0,98 e 0,998, você só deverá comparar os objetos de dados entre si, sem confiar nos escores de confiança altos. 

Você não deve comparar os escores de confiança de objetos de dados com rotulagem humana e objetos de dados automaticamente rotulados. Os escores de confiança para humanos são calculados usando a função de consolidação de anotações para a tarefa. As pontuações de confiança para rotulagem automatizada são calculados usando um modelo que incorpora atributos de objeto. Os dois modelos geralmente têm escalas diferentes e confiança média.

Para um trabalho de rotulagem de caixa delimitadora, o Ground Truth calcula uma pontuação de confiança por caixa. Você pode comparar os escores de confiança em uma imagem ou entre imagens para o mesmo tipo de rotulagem (humana ou automática). Não é possível comparar os escores de confiança entre trabalhos de rotulagem.

Se um único operador anotar uma tarefa (`NumberOfHumanWorkersPerDataObject` está definido como `1` ou, no console, você inserir 1 para o **Número de operadores por objeto de conjunto de dados**), a pontuação de confiança está definida como `0.00`. 

## Metadados do operador
<a name="sms-worker-id-private"></a>

O Ground Truth fornece informações que você pode usar para rastrear operadores individuais nos dados de saída da tarefa. Os dados a seguir estão localizados nos diretórios abaixo do `worker-response` localizado em [Diretório de anotação](#sms-directories-annotations):
+ A `acceptanceTime` é a hora em que o operador aceitou a tarefa. O formato desse carimbo de data e hora é `YYYY-MM-DDTHH:MM:SS.mmmZ` para o ano (`YYYY`), mês (`MM`), dia (`DD`), hora (`HH`), minuto (`MM`), segundo (`SS`) e milissegundo (`mmm`). A data e hora são separadas por um **T**. 
+ A `submissionTime` é a hora em que o operador enviou suas anotações usando o botão **Enviar**. O formato desse carimbo de data e hora é `YYYY-MM-DDTHH:MM:SS.mmmZ` para o ano (`YYYY`), mês (`MM`), dia (`DD`), hora (`HH`), minuto (`MM`), segundo (`SS`) e milissegundo (`mmm`). A data e hora são separadas por um **T**. 
+ O `timeSpentInSeconds` relata o tempo total, em segundos, em que um operador trabalhou ativamente nessa tarefa. Essa métrica não inclui o momento em que um operador fez uma pausa ou fez uma pausa.
+ O `workerId` é exclusivo para cada operador. 
+ Se você usa uma [força de trabalho privada](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-private.html) no `workerMetadata`, você vê o seguinte:
  + O `identityProviderType` é o serviço usado para gerenciar a força de trabalho privada. 
  + O `issuer` é o grupo de usuários do Cognito ou o emissor do provedor de identidade OIDC (IdP) associado à equipe de trabalho designada para essa tarefa de revisão humana.
  + Um identificador exclusivo `sub` que se refere ao operador. Se você criar uma força de trabalho usando o Amazon Cognito, poderá recuperar detalhes sobre esse operador (como nome ou nome de usuário) usando esse ID usando o Amazon Cognito. Para saber como, consulte [Gerenciamento e pesquisa de contas de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/how-to-manage-user-accounts.html#manage-user-accounts-searching-user-attributes) no [Guia do desenvolvedor do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/).

Veja a seguir um exemplo do resultado que você pode ver se usar o Amazon Cognito para criar uma força de trabalho privada. Isso é identificado no `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"
    }
}
```

 A seguir está um exemplo do `workerMetadata` que você pode ver se usar seu próprio IdP do OIDC para criar uma força de trabalho privada:

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

Para saber mais sobre como usar forças de trabalho privadas, consulte [Força de trabalho privada](sms-workforce-private.md).

## Metadados de saída
<a name="sms-output-metadata"></a>

A saída de cada trabalho contém metadados sobre o rótulo atribuído aos objetos de dados. Esses elementos são os mesmos para todos os trabalhos, com pequenas variações. O seguinte exemplo mostra os elementos de metadados:

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

Os elementos têm o seguinte significado:
+ `confidence`: a confiança que o Ground Truth tem de que o rótulo está correto. Para obter mais informações, consulte [Pontuação de confiança](#sms-output-confidence).
+ `type`: o tipo de trabalho de classificação. Para tipos de trabalho, consulte [Tipos de tarefa integrados](sms-task-types.md). 
+ `job-name`: o nome atribuído ao trabalho quando ele foi criado.
+ `human-annotated`: indica se o objeto de dados foi rotulado por uma pessoa ou pela rotulagem de dados automatizada. Para obter mais informações, consulte [Automatizar a rotulagem de dados](sms-automated-labeling.md).
+ `creation-date`: a data e hora em que o rótulo foi criado.

## Saída do trabalho de classificação
<a name="sms-output-class"></a>

Veja a seguir exemplos de saída (arquivos manifesto de saída) de um trabalho de classificação de imagens e um trabalho de classificação de texto. Eles incluem o rótulo que o Ground Truth atribuiu ao objeto de dados, o valor do rótulo e os metadados que descrevem o rótulo.

Além dos elementos de metadados padrão, os metadados de um trabalho de classificação incluem o valor de texto da classe do rótulo. Para obter mais informações, consulte [Classificação de imagens - MXNet](image-classification.md).

O texto em vermelho e itálico nos exemplos a seguir depende das especificações do trabalho de rotulagem e dos dados de saída. 

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

## Saída do trabalho de classificação multirrótulo
<a name="sms-output-multi-label-classification"></a>

Veja a seguir exemplos de arquivos manifesto de saída de um trabalho de classificação de imagens com vários rótulos e um trabalho de classificação de texto com vários rótulos. Eles incluem os rótulos que o Ground Truth atribuiu ao objeto de dados (por exemplo, a imagem ou a parte do texto) e metadados que descrevem os rótulos que o operador viu ao concluir a tarefa de rotulagem. 

O parâmetro de nome de atributo do rótulo (por exemplo, `image-label-attribute-name`) contém uma matriz de todos os rótulos selecionados por pelo menos um dos operadores que concluíram essa tarefa. Esta matriz contém chaves inteiras (por exemplo, `[1,0,8]`) que correspondem aos rótulos encontrados em `class-map`. No exemplo de classificação de imagens com vários rótulos, `bicycle`, `person` e `clothing` foram selecionados por pelo menos um dos operadores que concluíram a tarefa de rotulagem da imagem, `exampleimage.jpg`.

O `confidence-map` mostra a pontuação de confiança que o Ground Truth atribuiu a cada rótulo selecionado por um operador. Para saber mais sobre pontuações de confiança do Ground Truth, consulte [Pontuação de confiança](#sms-output-confidence).

O texto em vermelho e itálico nos exemplos a seguir depende das especificações do trabalho de rotulagem e dos dados de saída. 

Veja a seguir um exemplo de um arquivo manifesto de saída de classificação de imagens com vários rótulos. 

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

Veja a seguir um exemplo de um arquivo manifesto de saída de classificação de texto com vários rótulos. Neste exemplo, `approving`, `sad` e `critical` foram selecionados por pelo menos um dos operadores que concluíram a tarefa de rotulagem do objeto `exampletext.txt` encontrado em `{{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"
        }
}
```

## Saída do trabalho de caixa delimitadora
<a name="sms-output-box"></a>

Veja a seguir uma saída de exemplo (arquivo manifesto de saída) de um trabalho de caixa delimitadora. Para esta tarefa, três caixas delimitadoras são retornadas. O valor do rótulo contém informações sobre o tamanho da imagem e a localização das caixas delimitadoras.

O elemento `class_id` é o índice de classe da caixa na lista de classes disponíveis para a tarefa. O elemento de metadados `class-map` contém o texto da classe.

Os metadados têm uma pontuação de confiança separada para cada caixa delimitadora. Os metadados também incluem o elemento `class-map` que mapeia o `class_id` para o valor de texto da classe. Para obter mais informações, consulte [Detecção de objetos - MXNet](object-detection.md).

O texto em vermelho e itálico nos exemplos a seguir depende das especificações do trabalho de rotulagem e dos dados de saída. 

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

A saída de um trabalho de ajuste de caixa delimitadora é semelhante ao JSON a seguir. Observe que o JSON original é mantido intacto e dois novos trabalhos são listados, cada um com o nome do atributo original precedido por "adjust-". 

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

Nesta saída, o `type` do trabalho não muda, mas um campo `adjustment-status` é adicionado. Esse campo tem o valor `adjusted` ou `unadjusted`. Se vários operadores revisarem o objeto e pelo menos um ajustar o rótulo, o status será `adjusted`.

## Reconhecimento de entidades nomeadas
<a name="sms-output-data-ner"></a>

Veja a seguir um exemplo de arquivo de manifesto de saída de uma tarefa de rotulagem de reconhecimento de entidade nomeada (NER). Para essa tarefa, sete `entities` são retornados.

No manifesto de saída, o objeto JSON, `annotations`, inclui uma lista das (categorias de rótulos) `labels` que você forneceu.

As respostas dos operadores estão em uma lista chamada `entities`. Cada entidade nesta lista é um objeto JSON que contém um valor `label` que corresponde a um na lista `labels`, um valor inteiro `startOffset` para o deslocamento Unicode inicial do intervalo rotulado e um valor inteiro `endOffset` para o deslocamento Unicode final.

Os metadados têm uma pontuação de confiança separada para cada entidade. Se um único operador rotular cada objeto de dados, o valor de confiança de cada entidade será zero.

O texto em vermelho em itálico nos exemplos abaixo depende da rotulagem das entradas do trabalho e das respostas dos operadores.

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

## Saída do trabalho de verificação de rótulo
<a name="sms-output-bounding-box-verification"></a>

A saída (arquivo de manifesto de saída) de um trabalho de verificação de caixa delimitadora tem uma aparência diferente da saída de um trabalho de anotação de caixa delimitadora. Isso porque os operadores têm um tipo diferente de tarefa. Eles não estão rotulando objetos, mas avaliando a precisão da rotulagem anterior, fazendo um julgamento e fornecendo esse julgamento e, talvez, alguns comentários.

Se operadores humanos estão verificando ou ajustando rótulos de caixa delimitadora anteriores, a saída de uma tarefa de verificação será semelhante ao JSON a seguir. O texto em vermelho e itálico nos exemplos a seguir depende das especificações do trabalho de rotulagem e dos dados de saída. 

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

Embora o `type` na saída da caixa delimitadora original tenha sido `groundtruth/object-detection`, o novo `type` será `groundtruth/label-verification`. Observe também que a matriz `worker-feedback` fornece comentários do operador. Se o operador não fornecer comentários, os campos vazios serão excluídos durante a consolidação.

## Saída do trabalho de segmentação semântica
<a name="sms-output-segmentation"></a>

Veja a seguir o arquivo manifesto de saída de um trabalho de rotulagem de segmentação semântica. O valor do rótulo desse trabalho é uma referência a um arquivo PNG em um bucket do Amazon S3.

Além dos elementos padrão, os metadados do rótulo incluem um mapa de cores que define qual cor é usada para rotular a imagem, o nome da classe associada à cor e o escore de confiança de cada cor. Para obter mais informações, consulte [Algoritmo de segmentação semântica](semantic-segmentation.md).

O texto em vermelho e itálico nos exemplos a seguir depende das especificações do trabalho de rotulagem e dos dados de saída. 

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

A confiança é pontuada por imagem. As pontuações de confiança são as mesmas em todas as classes dentro de uma imagem. 

A saída de um trabalho de ajuste de segmentação semântica tem a aparência semelhante ao JSON a seguir.

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

## Saída de detecção de objetos de quadros de vídeo
<a name="sms-output-video-object-detection"></a>

Veja a seguir o arquivo manifesto de saída de um trabalho de rotulagem de detecção de objetos. Os {{red, italicized text}} exemplos abaixo dependem das especificações do trabalho de etiquetagem e dos dados de saída.

Além dos elementos padrão, os metadados incluem um classmap que lista cada classe que tem pelo menos um rótulo na sequência. Os metadados também incluem `job-name` qual é o nome que você atribuiu ao trabalho de rotulagem. Para tarefas de ajuste, se uma ou mais caixas delimitadoras forem modificadas, há um parâmetro `adjustment-status` nos metadados para fluxos de trabalho de auditoria definido 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 cria um arquivo de sequência de saída para cada sequência de quadros de vídeo rotulada. Cada arquivo de sequência de saída contém o seguinte: 
+ Todas as anotações para todos os quadros em uma sequência na `detection-annotations` lista de objetos JSON. 
+ Para cada quadro que foi anotado por um operador, o nome do arquivo do quadro (`frame`), o número (`frame-no`), uma lista de objetos JSON contendo anotações (`annotations`) e, se aplicável, `frame-attributes`. O nome dessa lista é definido pelo tipo de tarefa que você usa: `polylines`, `polygons`, `keypoints` e para caixas delimitadoras, `annotations`.

   

  Cada objeto JSON contém informações sobre uma única anotação e um rótulo associado. A tabela a seguir descreve os parâmetros que você verá para cada tipo de tarefa de quadro de vídeo.   
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/sms-data-output.html)

  Além dos valores específicos do tipo de tarefa, você verá o seguinte em cada objeto JSON:
  + Valores de qualquer um `label-category-attributes` que tenha sido especificado para esse rótulo. 
  + O `class-id` da caixa. Use o `class-map` no arquivo manifesto de saída para ver para qual categoria de rótulo esse ID é mapeado. 

A seguir está um exemplo de um `SeqLabel.json` arquivo de um trabalho de rotulagem de detecção de objetos de quadro de vídeo em caixa delimitadora. Esse arquivo estará localizado em `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}}}
        }
    ]
}
```

## Saída de rastreamento de objetos de quadros de vídeo
<a name="sms-output-video-object-tracking"></a>

Veja a seguir o arquivo manifesto de saída de um trabalho de rotulagem de rastreamento de objetos. Os {{red, italicized text}} exemplos abaixo dependem das especificações do trabalho de etiquetagem e dos dados de saída.

Além dos elementos padrão, os metadados incluem um classmap que lista cada classe que tem pelo menos um rótulo na sequência de quadros. Os metadados também incluem `job-name` qual é o nome que você atribuiu ao trabalho de rotulagem. Para tarefas de ajuste, se uma ou mais caixas delimitadoras forem modificadas, há um parâmetro `adjustment-status` nos metadados para fluxos de trabalho de auditoria definido 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 cria um arquivo de sequência de saída para cada sequência de quadros de vídeo rotulada. Cada arquivo de sequência de saída contém o seguinte: 
+ Todas as anotações para todos os quadros em uma sequência na `tracking-annotations` lista de objetos JSON. 
+ Para cada quadro anotado por um operador, o quadro (`frame`), o número (`frame-no`), uma lista de objetos JSON contendo anotações (`annotations`) e, se aplicável, os atributos de quadro (`frame-attributes`). O nome dessa lista é definido pelo tipo de tarefa que você usa: `polylines`, `polygons`, `keypoints` e para caixas delimitadoras, `annotations`.

  Cada objeto JSON contém informações sobre uma única anotação e um rótulo associado. A tabela a seguir descreve os parâmetros que você verá para cada tipo de tarefa de quadro de vídeo.   
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/sms-data-output.html)

  Além dos valores específicos do tipo de tarefa, você verá o seguinte em cada objeto JSON: 
  + Valores de qualquer um `label-category-attributes` que tenha sido especificado para esse rótulo. 
  + O `class-id` da caixa. Use o `class-map` no arquivo manifesto de saída para ver para qual categoria de rótulo esse ID é mapeado. 
  + E `object-id` que identifica uma instância de um rótulo. Esse ID será o mesmo em todos os quadros se um operador identificar a mesma instância de um objeto em vários quadros. Por exemplo, se um carro aparecesse em vários quadros, todas as caixas delimitadoras usadas para identificar esse carro teriam o mesmo `object-id`.
  + O `object-name` qual é o ID da instância dessa anotação. 

A seguir está um exemplo de um `SeqLabel.json` arquivo de um trabalho de rotulagem de rastreamento de objetos de quadro de vídeo em caixa delimitadora. Esse arquivo estará localizado em `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}}}
        }
    ]
}
```

## Saída de segmentação semântica da nuvem de pontos 3D
<a name="sms-output-point-cloud-segmentation"></a>

Veja a seguir o arquivo manifesto de saída de um trabalho de rotulagem de segmentação semântica de nuvem de ponto 3D. 

Além dos elementos padrão, os metadados do rótulo incluem um mapa de cores que define qual cor é usada para rotular a imagem, o nome da classe associada à cor e o escore de confiança de cada cor. Além disso, há um parâmetro `adjustment-status` nos metadados para fluxos de trabalho de auditoria definido como `adjusted` se a máscara de cor foi modificada. Se você adicionou um ou mais `frameAttributes` ao seu arquivo de configuração da categoria de rótulo, as respostas do operador para os atributos de quadro estarão no objeto JSON, `dataset-object-attributes`.

O parâmetro `{{your-label-attribute}}-ref` contém o local de um arquivo compactado com uma extensão .zlib. Quando você descompacta esse arquivo, ele contém uma matriz. Cada índice na matriz corresponde ao índice de um ponto anotado na nuvem de pontos de entrada. O valor da matriz em um determinado índice fornece a classe do ponto no mesmo índice na nuvem de pontos, com base no mapa semântico de cores encontrado no parâmetro `color-map` do `metadata`.

Você pode usar um código em Python semelhante ao seguinte para descompactar um arquivo .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)
```

O bloco de código acima produzirá um resultado semelhante ao seguinte: Cada elemento da matriz impressa contém a classe de um ponto nesse índice na nuvem de pontos. Por exemplo, `my_int_array_data[0] = 1` significa que `point[0]` na nuvem de pontos de entrada tem uma classe`1`. No exemplo de arquivo manifesto de saída a seguir, a classe `0` corresponde `"Background"`, com `1`, com `Car`, e `2` com`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])
```

Veja a seguir um exemplo de arquivo de manifesto de saída de saída de tarefa de rotulagem 3D de segmentação semântica. O texto em vermelho e itálico nos exemplos a seguir depende das especificações do trabalho de rotulagem e dos dados de saída. 

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

## Saída de detecção de objetos da nuvem de pontos 3D
<a name="sms-output-point-cloud-object-detection"></a>

Veja a seguir um exemplo de saída de um trabalho de detecção de objeto de nuvem de pontos 3D. Para esse tipo de tarefa, os dados sobre cuboides 3D são retornados no parâmetro `3d-bounding-box`, em uma lista chamada `annotations`. Nessa lista, cada cuboide 3D é descrito usando as informações a seguir. 
+ Cada classe, ou categoria de rótulo, especifica no manifesto de entrada está associada a um arquivo `class-id`. Use o `class-map` para identificar a classe associada a cada ID de classe.
+ Essas classes são usadas para dar a cada cuboide 3D um `object-name` no formato `<class>:<integer>`, em que `integer` é um número exclusivo para identificar esse cuboide no quadro. 
+ `center-x`, `center-y` e `center-z` são as coordenadas do centro do cuboide, no mesmo sistema de coordenadas dos dados de entrada da nuvem de pontos 3D usados em seu trabalho de rotulagem.
+ `length`, `width` e `height` são usados para descrever as dimensões do cuboide. 
+ `yaw` é usado para descrever a orientação (cabeçalho) do cuboide em radianos.
**nota**  
`yaw` agora está no sistema cartesiano destro. Como esse atributo foi adicionado em 02 de setembro de 2022 às 19:02:17 UTC, você pode converter a `yaw` medição nos dados de saída anteriores usando o seguinte (todas as unidades estão em radianos):  

  ```
  old_yaw_in_output = pi - yaw
  ```
+ Em nossa definição, \+x está para a direita, \+y está para frente e \+z está acima do plano terrestre. A ordem de rotação é x - y - z. Os `roll`, `pitch` e `yaw` são representados no sistema cartesiano destro. No espaço 3D, `roll` está ao longo do eixo x, `pitch` está ao longo do eixo y e `yaw` está ao longo do eixo z. Todos os três estão no sentido anti-horário.
+ Se você incluiu atributos de rótulo no arquivo manifesto de entrada para determinada classe, um parâmetro `label-category-attributes` é incluído para todos os cuboides para os quais os operadores selecionaram atributos de rótulo. 

Se um ou mais cuboides foram modificados, há um parâmetro `adjustment-status` nos metadados para fluxos de trabalho de auditoria que está definido como `adjusted`. Se você adicionou um ou mais `frameAttributes` ao seu arquivo de configuração da categoria de rótulo, as respostas do operador para os atributos de quadro estarão no objeto JSON, `dataset-object-attributes`.

Os {{red, italicized text}} exemplos abaixo dependem das especificações do trabalho de etiquetagem e dos dados de saída. As elipses ({{...}}) denotam uma continuação dessa lista, na qual objetos adicionais com o mesmo formato do objeto anterior podem aparecer.

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

## Saída de rastreamento de objetos da nuvem de pontos 3D
<a name="sms-output-point-cloud-object-tracking"></a>

Veja a seguir um exemplo de um arquivo de manifesto de saída de um trabalho de rotulagem de rastreamento de objetos de nuvem de pontos 3D. Os {{red, italicized text}} exemplos abaixo dependem das especificações do trabalho de etiquetagem e dos dados de saída. As elipses ({{...}}) denotam uma continuação dessa lista, na qual objetos adicionais com o mesmo formato do objeto anterior podem aparecer.

Além dos elementos padrão, os metadados incluem um classmap que lista cada classe que tem pelo menos um rótulo na sequência. Se um ou mais cuboides foram modificados, há um parâmetro `adjustment-status` nos metadados para fluxos de trabalho de auditoria que está definido como `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}}" 
    }
}
```

No exemplo acima, os dados de cuboides para cada quadro em `seq1.json` será `SeqLabel.json` no local do Amazon S3, `s3://{{amzn-s3-demo-bucket}}/{{<labelingJobName>}}/annotations/consolidated-annotation/output/{{<datasetObjectId>}}/SeqLabel.json`. Veja a seguir um exemplo desse arquivo de sequência de rótulos.

Para cada quadro na sequência, você vê o`frame-number`, `frame-name`, se aplicável `frame-attributes`, e uma lista de `annotations`. Essa lista contém cuboides 3D que foram desenhados para essa moldura. Cada anotação inclui as seguintes informações: 
+ Um `object-name` no formato `<class>:<integer>`, em que `class` identifica a categoria de rótulo e `integer` é um ID exclusivo no conjunto de dados.
+ Quando os operadores desenham um cuboide, ele é associado a um `object-id` exclusivo que está associado a todos os cuboides que identificam o mesmo objeto em vários quadros.
+ Cada classe, ou categoria de rótulo, especificada no manifesto de entrada está associada a um arquivo `class-id`. Use o `class-map` para identificar a classe associada a cada ID de classe.
+ `center-x`, `center-y` e `center-z` são as coordenadas do centro do cuboide, no mesmo sistema de coordenadas dos dados de entrada da nuvem de pontos 3D usados em seu trabalho de rotulagem.
+ `length`, `width` e `height` são usados para descrever as dimensões do cuboide. 
+ `yaw` é usado para descrever a orientação (cabeçalho) do cuboide em radianos.
**nota**  
`yaw` agora está no sistema cartesiano destro. Como esse atributo foi adicionado em 02 de setembro de 2022 às 19:02:17 UTC, você pode converter a `yaw` medição nos dados de saída anteriores usando o seguinte (todas as unidades estão em radianos):  

  ```
  old_yaw_in_output = pi - yaw
  ```
+ Em nossa definição, \+x está para a direita, \+y está para frente e \+z está acima do plano terrestre. A ordem de rotação é x - y - z. Os `roll`, `pitch` e `yaw` são representados no sistema cartesiano destro. No espaço 3D, `roll` está ao longo do eixo x, `pitch` está ao longo do eixo y e `yaw` está ao longo do eixo z. Todos os três estão no sentido anti-horário.
+ Se você incluiu atributos de rótulo no arquivo manifesto de entrada para determinada classe, um parâmetro `label-category-attributes` é incluído para todos os cuboides para os quais os operadores selecionaram atributos de rótulo. 

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

## Saída de rastreamento de objetos 3D-2D e rastreamento de objetos da nuvem de pontos
<a name="sms-output-3d-2d-point-cloud-object-tracking"></a>

Veja a seguir um exemplo de um arquivo de manifesto de saída de um trabalho de rotulagem de rastreamento de objetos de nuvem de pontos 3D. Os {{red, italicized text}} exemplos abaixo dependem das especificações do trabalho de etiquetagem e dos dados de saída. As elipses ({{...}}) denotam uma continuação dessa lista, na qual objetos adicionais com o mesmo formato do objeto anterior podem aparecer.

Além dos elementos padrão, os metadados incluem um classmap que lista cada classe que tem pelo menos um rótulo na sequência. Se um ou mais cuboides foram modificados, há um parâmetro `adjustment-status` nos metadados para fluxos de trabalho de auditoria que está definido como `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}}"
  }
}
```

No exemplo acima, os dados de cuboides para cada quadro em `seq2.json` será `SeqLabel.json` no local do Amazon S3, `s3://{{amzn-s3-demo-bucket}}/{{<labelingJobName>}}/annotations/consolidated-annotation/output/{{<datasetObjectId>}}/SeqLabel.json`. Veja a seguir um exemplo desse arquivo de sequência de rótulos.

Para cada quadro na sequência, você vê o`frame-number`, `frame-name`, se aplicável `frame-attributes`, e uma lista de `annotations`. Essa lista contém cuboides 3D que foram desenhados para essa moldura. Cada anotação inclui as seguintes informações: 
+ Um `object-name` no formato `<class>:<integer>`, em que `class` identifica a categoria de rótulo e `integer` é um ID exclusivo no conjunto de dados.
+ Quando os operadores desenham um cuboide, ele é associado a um `object-id` exclusivo que está associado a todos os cuboides que identificam o mesmo objeto em vários quadros.
+ Cada classe, ou categoria de rótulo, especificada no manifesto de entrada está associada a um arquivo `class-id`. Use o `class-map` para identificar a classe associada a cada ID de classe.
+ `center-x`, `center-y` e `center-z` são as coordenadas do centro do cuboide, no mesmo sistema de coordenadas dos dados de entrada da nuvem de pontos 3D usados em seu trabalho de rotulagem.
+ `length`, `width` e `height` são usados para descrever as dimensões do cuboide. 
+ `yaw` é usado para descrever a orientação (cabeçalho) do cuboide em radianos.
**nota**  
`yaw` agora está no sistema cartesiano destro. Como esse atributo foi adicionado em 02 de setembro de 2022 às 19:02:17 UTC, você pode converter a `yaw` medição nos dados de saída anteriores usando o seguinte (todas as unidades estão em radianos):  

  ```
  old_yaw_in_output = pi - yaw
  ```
+ Em nossa definição, \+x está para a direita, \+y está para frente e \+z está acima do plano terrestre. A ordem de rotação é x - y - z. Os `roll`, `pitch` e `yaw` são representados no sistema cartesiano destro. No espaço 3D, `roll` está ao longo do eixo x, `pitch` está ao longo do eixo y e `yaw` está ao longo do eixo z. Todos os três estão no sentido anti-horário.
+ Se você incluiu atributos de rótulo no arquivo manifesto de entrada para determinada classe, um parâmetro `label-category-attributes` é incluído para todos os cuboides para os quais os operadores selecionaram atributos de rótulo. 

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

O cuboide e a caixa delimitadora de um objeto são vinculados por meio de um ID de objeto comum.