Etichettatura dei dati di output del lavoro - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Etichettatura dei dati di output del lavoro

L'output di un processo di etichettatura viene inserito nella posizione Amazon S3 specificata nella console o nella chiamata all'CreateLabelingJoboperazione. I dati di output vengono visualizzati in questa posizione quando i worker hanno inviato una o più attività o quando le attività scadono. Tieni presente che potrebbero essere necessari alcuni minuti prima che i dati di output vengano visualizzati in S3 Amazon dopo che il worker ha inviato l'attività o l'attività è scaduta.

Ogni riga nel file di dati di output è identica al file manifest con l'aggiunta di un attributo e un valore per l'etichetta assegnata all'oggetto di input. Il nome attributo per il valore è definito nella console o nella chiamata all'operazione CreateLabelingJob. Non puoi utilizzare -metadata nel nome attributo etichetta. Se esegui una segmentazione semantica dell'immagine, una segmentazione semantica della nuvola di punti 3D o un processo di tracciamento degli oggetti della nuvola di punti 3D, l'attributo di etichetta deve terminare con -ref. Per qualsiasi altro tipo di processo, il nome attributo non può terminare con -ref.

L'output del processo di etichettatura è il valore della coppia chiave-valore con l'etichetta. L'etichetta e il valore sovrascrivono gli eventuali dati JSON esistenti nel file di input con il nuovo valore.

Di seguito è riportato, ad esempio, l'output di un processo di etichettatura di classificazione delle immagini in cui i file di dati di input sono archiviati in un amzn-s3-demo-bucket S3 Amazon e il nome attributo di etichetta è definito come sport. In questo esempio l'oggetto JSON è formattato per la leggibilità, nel file di output effettivo dell'oggetto JSON si trova su un'unica riga. Per ulteriori informazioni sul formato dei dati, consulta JSON Lines.

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

Il valore dell'etichetta può essere qualsiasi JSON valido. In questo caso il valore dell'etichetta è l'indice della classe nell'elenco di classificazione. Altri tipi di processo, ad esempio riquadro di delimitazione, hanno valori più complessi.

Qualsiasi coppia chiave-valore nel file manifest di input diversa dall'attributo etichetta è invariata nel file di output. Puoi utilizzarla per passare i dati all'applicazione.

L'output di un processo di etichettatura può essere utilizzato come input di un altro processo di etichettatura. Questo può essere utilizzato durante la concatenazione di processi di etichettatura. Ad esempio, puoi inviare un processo di etichettatura per determinare lo sport che viene praticato. Quindi, inviane un altro utilizzando gli stessi dati per determinare se lo sport è praticato al chiuso o all'aperto. Utilizzando i dati di output del primo processo come manifest per il secondo processo, puoi consolidare i risultati dei due processi in un solo file di output per facilitare l'elaborazione delle applicazioni.

Il file di dati di output viene scritto nel percorso di output periodicamente mentre il processo è in corso. Questi file intermedi contengono una riga per ciascuna riga del file manifest. Se un oggetto è etichettato, l'etichetta viene inclusa. Se l'oggetto non è stato etichettato, viene scritto nel file di output intermedio in modo identico al file manifest.

Directory di output

Ground Truth crea più directory nel percorso di output di S3 Amazon. Queste directory contengono i risultati del processo di etichettatura e altri artefatti del processo. Il nome della directory di primo livello di un processo di etichettatura è identico a quello del processo di etichettatura; le directory di output si trovano sotto di essa. Ad esempio, se il processo di etichettatura è stato denominato find-people, l'output si trova nelle seguenti directory:

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

Ogni directory contiene l'output seguente:

Directory di apprendimento attivo

La directory activelearning è presente solo se utilizzi l'etichettatura dei dati automatica. Contiene il set di convalida di input e output per l'etichettatura dei dati automatica e la cartella di input e output per l'etichettatura dei dati automatica.

Cartella delle annotazioni

La directory annotations contiene tutte le annotazioni effettuate dalla forza lavoro. Queste sono le risposte dai singoli worker che non sono state consolidate in una singola etichetta per l'oggetto dati.

Nella directory annotations principale sono disponibili tre sottodirectory.

  • La prima, worker-response, contiene le risposte dai singoli worker. Questa directory contiene una sottodirectory per ogni iterazione, che a sua volta contiene una sottodirectory per ogni oggetto dati presente in tale iterazione. I dati di risposta del worker per ogni oggetto dati vengono archiviati in un file JSON, con data e ora, che contiene le risposte inviate da ciascun worker per quell'oggetto dati e, se utilizzi una forza lavoro privata, i metadati relativi a tali worker. Per ulteriori informazioni su questi metadati, consulta Metadati dei lavoratori.

  • La seconda, consolidated-annotation, contiene le informazioni richieste per consolidare le annotazioni nel batch corrente in etichette per gli oggetti dati.

  • La terza, intermediate, contiene il manifest di output per il batch corrente con le eventuali etichette completate. Questo file viene aggiornato quando l'etichetta per ogni oggetto dati viene completata.

Nota

Si consiglia di non utilizzare file non menzionati nella documentazione.

Directory di inferenza

La directory inference è presente solo se utilizzi l'etichettatura dei dati automatica. Questa directory contiene i file di input e output per la trasformazione batch SageMaker AI utilizzata durante l'etichettatura degli oggetti di dati.

Cartella del manifesto

La directory manifest contiene il manifest di output del processo di etichettatura. C'è una sottodirectory nella directory del file manifest, output. La directory output contiene il file manifest di output per il processo di etichettatura. Il file è denominato output.manifest.

Elenco dei corsi di formazione

La directory training è presente solo se utilizzi l'etichettatura dei dati automatica. Questa directory contiene i file di input e output utilizzati per eseguire l’addestramento del modello di etichettatura dei dati automatica.

Punteggio di fiducia

Quando più di un worker annota una singola attività, l'etichetta risulta dal consolidamento delle annotazioni. Ground Truth calcola un punteggio di attendibilità per ogni etichetta. Un punteggio di attendibilità è un numero compreso tra 0 e 1 che indica quanto Ground Truth è sicuro dell'etichetta. Puoi utilizzare il punteggio di attendibilità per confrontare gli oggetti dati etichettati tra loro e identificare le etichette più o meno attendibili.

Non occorre interpretare un valore dei punteggi di attendibilità come un valore assoluto o mettere a confronto i punteggi di attendibilità tra i processi di etichettatura. Ad esempio, se tutti i punteggi di attendibilità sono compresi tra 0,98 e 0,998, è consigliabile confrontare gli oggetti dati solo tra loro e non basarsi sui punteggi di attendibilità elevati.

Non è consigliabile confrontare i punteggi di attendibilità di oggetti dati etichettati da umani e oggetti dati etichettati automaticamente. I punteggi di attendibilità per umani vengono calcolati utilizzando la funzione di consolidamento delle annotazioni per l'attività, mentre i punteggi di attendibilità per etichettatura automatica vengono calcolati utilizzando un modello che incorpora caratteristiche oggetto. I due modelli hanno in genere scale e attendibilità media diverse.

Per un processo di etichettatura del riquadro di delimitazione, Ground Truth calcola un punteggio di attendibilità per casella. Puoi confrontare i punteggi di attendibilità all'interno di un'immagine o tra immagini per lo stesso tipo di etichettatura (umana o automatica). Non puoi confrontare punteggi di attendibilità tra processi di etichettatura.

Se un singolo worker annota un'attività (NumberOfHumanWorkersPerDataObject è impostato su 1 o nella console si immette 1 per Numero di worker per oggetto di set di dati), il punteggio di attendibilità verrà impostato su 0.00.

Metadati dei lavoratori

Ground Truth fornisce informazioni che puoi utilizzare per monitorare i singoli worker nei dati di output delle attività. I seguenti dati si trovano nelle directory sotto worker-response situato in Cartella delle annotazioni:

  • acceptanceTime è l'ora in cui il worker ha accettato l'attività. Il formato di questo indicatore di data e ora è YYYY-MM-DDTHH:MM:SS.mmmZ per l'anno (YYYY), il mese (MM), il giorno (DD), l'ora (HH), il minuto (MM), il secondo (SS) e il millisecondo (mmm). La data e l'ora sono separati da una T.

  • submissionTime è l'ora in cui il worker ha inviato le proprie annotazioni utilizzando il pulsante Invia. Il formato di questo indicatore di data e ora è YYYY-MM-DDTHH:MM:SS.mmmZ per l'anno (YYYY), il mese (MM), il giorno (DD), l'ora (HH), il minuto (MM), il secondo (SS) e il millisecondo (mmm). La data e l'ora sono separati da una T.

  • timeSpentInSeconds riporta il tempo totale, in secondi, durante il quale un worker ha lavorato attivamente su quell'attività. Questo parametro non include il tempo in cui un worker si è fermato o si è preso una pausa.

  • workerId è univoco per ogni worker.

  • Se utilizzi una forza lavoro privata, in workerMetadata, vedrai quanto segue.

    • identityProviderType è il servizio utilizzato per gestire la forza lavoro privata.

    • issuer è il pool di utenti Cognito o il gestore dell’identità digitale dell’emittente associato al team di lavoro assegnato a questa attività di revisione umana.

    • Un identificatore sub univoco che fa riferimento al worker. Se crei una forza lavoro utilizzando Amazon Cognito, puoi recuperare i dettagli su questo worker (come il nome o il nome utente) utilizzando questo ID Amazon Cognito. Per informazioni, consulta Managing and searching for user accounts nella Guida per gli sviluppatori di Amazon Cognito.

Di seguito è riportato un esempio dell'output che potresti visualizzare se utilizzi Amazon Cognito per creare una forza lavoro privata. Questo è identificato in 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" } }

Di seguito è riportato un esempio del workerMetadata che potresti visualizzare se utilizzi il tuo IdP OIDC per creare una forza lavoro privata:

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

Per ulteriori informazioni sull’uso della forza lavoro privata, consulta Forza lavoro privata.

Metadati di output

L'output di ciascun processo contiene metadati relativi all'etichetta assegnata agli oggetti dati. Questi elementi sono gli stessi per tutti i processi con variazioni minime. L'esempio seguente mostra gli elementi dei metadati:

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

Di seguito è riportato il significato degli elementi:

  • confidence: la fiducia che Ground Truth ha nella correttezza dell'etichetta. Per ulteriori informazioni, consulta Punteggio di fiducia.

  • type: il tipo di processo di classificazione. Per i tipi di processo, consulta Tipi di attività integrati.

  • job-name: il nome assegnato al processo al momento della sua creazione.

  • human-annotated: se l'oggetto dei dati è stato etichettato da un essere umano o mediante etichettatura automatica dei dati. Per ulteriori informazioni, consulta Automatizza l'etichettatura dei dati.

  • creation-date: la data e l'ora di creazione dell'etichetta.

Risultati del lavoro di classificazione

Di seguito sono riportati gli output di esempio (file manifest di output) di un processo di classificazione delle immagini e di un processo di classificazione del testo. Questi includono l'etichetta assegnata da Ground Truth all'oggetto dati, il valore dell'etichetta e i metadati che descrivono l'etichetta.

Oltre agli elementi di metadati standard, i metadati per un processo di classificazione includono il valore di testo della classe dell'etichetta. Per ulteriori informazioni, consulta Classificazione delle immagini - MXNet.

Il testo rosso in corsivo negli esempi seguenti varia a seconda delle specifiche del processo di etichettatura e dei dati di output.

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

Risultati del lavoro di classificazione multietichetta

Di seguito sono riportati i file manifest di output di esempio di un processo di classificazione delle immagini multi-etichetta e di un processo di classificazione del testo multi-etichetta. Includono le etichette assegnate da Ground Truth all'oggetto dati (ad esempio l'immagine o il testo) e i metadati che descrivono le etichette viste dal worker durante il completamento dell'attività di etichettatura.

Il parametro nome attributo etichetta (ad esempio image-label-attribute-name) contiene un array di tutte le etichette selezionate da almeno uno dei worker che hanno completato questa attività. Questo array contiene chiavi di interi (ad esempio, [1,0,8]) che corrispondono alle etichette trovate in class-map. Nell'esempio di classificazione delle immagini multi-etichetta, bicycle, person e clothing sono stati selezionati da almeno uno dei worker che ha completato l'attività di etichettatura per l'immagine trovata in exampleimage.jpg.

confidence-map mostra il punteggio di attendibilità assegnato da Ground Truth a ciascuna etichetta selezionata da un worker. Per ulteriori informazioni sui punteggi di attendibilità, consulta Punteggio di fiducia.

Il testo rosso in corsivo negli esempi seguenti varia a seconda delle specifiche del processo di etichettatura e dei dati di output.

Di seguito è riportato un esempio di un file manifest di output di classificazione delle immagini multi-etichetta.

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

Di seguito è riportato un esempio di un file manifest di output di classificazione del testo multi-etichetta. In questo esempio, approving, sad e critical sono stati selezionati da almeno uno dei worker che ha completato l'attività di etichettatura per l'oggetto exampletext.txt trovato in 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" } }

Output del lavoro Bounding Box

Di seguito è riportato un esempio di output (file manifest di output) di un processo riquadro di delimitazione. Per questa attività, vengono restituiti tre riquadri di delimitazione. Il valore dell'etichetta contiene informazioni sulle dimensioni dell'immagine e la posizione dei riquadri di delimitazione.

L'elemento class_id è l'indice della classe del riquadro nella lista di classi disponibili per l'attività. L'elemento di metadati class-map contiene il testo della classe.

I metadati hanno un punteggio di attendibilità separato per ogni riquadro di delimitazione. I metadati includono anche l'elemento class-map che mappa class_id al valore di testo della classe. Per ulteriori informazioni, consulta Rilevamento di oggetti - MXNet.

Il testo rosso in corsivo negli esempi seguenti varia a seconda delle specifiche del processo di etichettatura e dei dati di output.

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

L'output di un processo di ottimizzazione del riquadro di delimitazione è simile al seguente JSON. Si noti che il JSON originale viene mantenuto intatto e vengono elencati due nuovi lavori, ciascuno con "adjust-" anteposto al nome dell'attributo originale.

{ "source-ref": "S3 bucket location", "bounding-box-attribute-name": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 20, "top": 20, "width": 30, "height": 30} ] }, "bounding-box-attribute-name-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-dogs-and-toys" }, "adjusted-bounding-box": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 110, "top": 135, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 10, "top": 10, "width": 30, "height": 30} ] }, "adjusted-bounding-box-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "job-name": "adjust-bounding-boxes-on-dogs-and-toys", "adjustment-status": "adjusted" } }

In questo output, il type del processo non cambia, ma viene aggiunto un campo adjustment-status. Questo campo ha il valore adjusted o unadjusted. Se più worker hanno esaminato l'oggetto e almeno uno ha modificato l'etichetta, lo stato è adjusted.

Riconoscimento delle entità nominali

Di seguito è riportato un esempio di file manifest di output da un'attività di etichettatura di riconoscimento delle entità denominate (NER) Per questa attività, ne vengono restituiti sette entities.

Nel manifest di output, l'oggetto JSON, annotations, include un elenco delle labels (categorie di etichette) fornite.

Le risposte dei worker si trovano in un elenco denominato entities. Ogni entità di questo elenco è un oggetto JSON che contiene un valore label che corrisponde a uno dell'elenco labels, un valore intero startOffset per l'offset Unicode iniziale dell'intervallo etichettato e un valore intero endOffset per l'offset Unicode finale.

I metadati hanno un punteggio di attendibilità separato per ogni entità. Se un singolo worker ha etichettato ogni oggetto di dati, il valore di attendibilità per ogni entità sarà pari a zero.

Il testo in rosso e in corsivo negli esempi seguenti dipende dall'etichettatura degli input relativi al lavoro e delle risposte dei worker.

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

Output del lavoro di verifica delle etichette

L'output (file manifest di output) di un processo di verifica del riquadro di delimitazione è diverso dall'output di un'attività di annotazione riquadro di delimitazione. Ciò è dovuto al fatto che i worker hanno un diverso tipo di attività. Non stanno etichettando oggetti, ma valutando l'accuratezza dell'etichettatura precedente, emettendo un giudizio e quindi fornendo quel giudizio e forse alcuni commenti.

Se i dipendenti umani verificano o regolano le etichette dei riquadri di delimitazione precedenti, l'output di un'attività di verifica è simile al seguente JSON. Il testo rosso in corsivo negli esempi seguenti varia a seconda delle specifiche del processo di etichettatura e dei dati di output.

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

Anche se il type sull'output del riquadro di delimitazione originale era groundtruth/object-detection, il nuovo type è groundtruth/label-verification. Tieni presente inoltre che l’array worker-feedback fornisce i commenti dei worker. Se il worker non fornisce commenti, i campi vuoti vengono esclusi durante il consolidamento.

Output del processo di segmentazione semantica

Di seguito è riportato il file manifest di output di un processo di etichettatura di segmentazione semantica. Il valore dell'etichetta per il processo è un riferimento a un file PNG in un bucket S3 Amazon.

Oltre agli elementi standard, i metadati per l'etichetta includono una mappa colori che definisce quali colori sono usati per etichettare l'immagine, il nome della classe associato al colore e il punteggio di attendibilità per ogni colore. Per ulteriori informazioni, consulta Algoritmo di segmentazione semantica.

Il testo rosso in corsivo negli esempi seguenti varia a seconda delle specifiche del processo di etichettatura e dei dati di output.

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

L'attendibilità viene valutata in base all'immagine. I punteggi di attendibilità sono identici in tutte le classi all'interno di un'immagine.

L'output di un processo di regolazione della segmentazione semantica è simile al seguente 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", } }

Uscita per il rilevamento di oggetti con frame video

Di seguito è riportato il file manifest di output di un processo di etichettatura per il rilevamento di oggetti in un frame video. Quanto red, italicized text negli esempi seguenti dipende dalle specifiche del lavoro di etichettatura e dai dati di output.

Oltre agli elementi standard, i metadati includono una mappa che elenca ogni classe con almeno un'etichetta nella sequenza. I metadati includono anche job-name che è il nome assegnato al processo di etichettatura. Per le attività di regolazione, se uno o più riquadri di delimitazione vengono modificati, nei metadati per i flussi di lavoro di audit è presente un parametro adjustment-status impostato su 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 file di sequenza di output per ogni sequenza di frame video etichettata. Ogni file di sequenza di output contiene quanto segue:

  • Tutte le annotazioni per i frame in una sequenza nell'elenco detection-annotations degli oggetti JSON.

  • Per ogni frame annotato da un worker, il nome del file del frame (frame), numero (frame-no), un elenco di oggetti JSON contenenti annotazioni (annotations) e, se applicabile, frame-attributes. Il nome di questo elenco è definito dal tipo di attività che utilizzi:polylines, polygons, keypoints e, per i riquadri di delimitazione, annotations.

    Ogni oggetto JSON contiene informazioni su una singola annotazione e sull'etichetta associata. La tabella seguente descrive i parametri che verranno visualizzati per ogni tipo di attività relativa ai frame video.

    Tipo di attività Parametri

    Riquadro di delimitazione

    Dimensioni del riquadro: height e width

    Posizione dei pixel nella parte superiore del riquadro, nell'angolo sinistro: top e left

    Punto chiave

    Vertici dei punti chiave: { "x": int, "y": int }

    Poligono

    Un elenco di vertici del poligono: vertices

    Vertici del poligono: { "x": int, "y": int }

    Un poligono è una forma chiusa e quindi il primo punto rappresenterà anche l'ultimo punto.

    Polilinea

    Un elenco di vertici della polilinea: vertices

    Vertici della polilinea: { "x": int, "y": int }

    Oltre ai valori specifici del tipo di attività, in ogni oggetto JSON vedrai quanto segue:

    • Valori di tutti gli label-category-attributes specificati per quell'etichetta.

    • Il class-id del riquadro. Utilizza class-map nel file manifest di output per vedere a quale categoria di etichette corrisponde questo ID.

Di seguito è riportato un esempio di un file SeqLabel.json tratto da un processo di etichettatura di oggetti basato su frame video di un riquadro di delimitazione. Questo file si troverà sotto 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} } ] }

Uscita di tracciamento di oggetti con frame video

Di seguito è riportato il file manifest di output di un processo di etichettatura di monitoraggio di oggetti con frame video. Quanto red, italicized text negli esempi seguenti dipende dalle specifiche del lavoro di etichettatura e dai dati di output.

Oltre agli elementi standard, i metadati includono una mappa delle classi che elenca ogni classe che ha almeno un'etichetta nella sequenza di frame. I metadati includono anche il job-name che è il nome assegnato al processo di etichettatura. Per le attività di regolazione, se uno o più riquadri di delimitazione vengono modificati, nei metadati per i flussi di lavoro di audit è presente un parametro adjustment-status impostato su 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 file di sequenza di output per ogni sequenza di frame video etichettata. Ogni file di sequenza di output contiene quanto segue:

  • Tutte le annotazioni per i frame in una sequenza nell'elenco tracking-annotations degli oggetti JSON.

  • Per ogni fotogramma annotato da un worker, il fotogramma (frame), numero (frame-no), un elenco di oggetti JSON contenenti annotazioni (annotations) e, se applicabile, attributi frame (frame-attributes). Il nome di questo elenco è definito dal tipo di attività che utilizzi:polylines, polygons, keypoints e, per i riquadri di delimitazione, annotations.

    Ogni oggetto JSON contiene informazioni su una singola annotazione e sull'etichetta associata. La tabella seguente descrive i parametri che verranno visualizzati per ogni tipo di attività relativa ai frame video.

    Tipo di attività Parametri

    Riquadro di delimitazione

    Dimensioni del riquadro: height e width

    Posizione dei pixel nella parte superiore del riquadro, nell'angolo sinistro: top e left

    Punto chiave

    Vertici dei punti chiave: { "x": int, "y": int }

    Poligono

    Un elenco di vertici del poligono: vertices

    Vertici del poligono: { "x": int, "y": int }

    Un poligono è una forma chiusa e quindi il primo punto rappresenterà anche l'ultimo punto.

    Polilinea

    Un elenco di vertici della polilinea: vertices

    Vertici della polilinea: { "x": int, "y": int }

    Oltre ai valori specifici del tipo di attività, in ogni oggetto JSON vedrai quanto segue:

    • Valori di tutti gli label-category-attributes specificati per quell'etichetta.

    • Il class-id del riquadro. Utilizza class-map nel file manifest di output per vedere a quale categoria di etichette corrisponde questo ID.

    • Un object-id che identifica un'istanza di un'etichetta. Questo ID sarà lo stesso in tutti i fotogrammi se un worker identifica la stessa istanza di un oggetto in più fotogrammi. Ad esempio, se un'auto apparisse in più fotogrammi, tutti i riquadri di delimitazione utilizzati per identificare quell'auto avrebbero lo stesso valore object-id.

    • Il object-name è l'ID dell'istanza di quell'annotazione.

Di seguito è riportato un esempio di un file SeqLabel.json tratto da un processo di etichettatura per il monitoraggio di oggetti basato su frame video di un riquadro di delimitazione. Questo file si troverà sotto 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} } ] }

Output di segmentazione semantica della nuvola di punti 3D

Di seguito è riportato il file manifest di output di un processo di etichettatura di segmentazione semantica di una nuvola di punti 3D.

Oltre agli elementi standard, i metadati per l'etichetta includono una mappa colori che definisce quali colori sono usati per etichettare l'immagine, il nome della classe associato al colore e il punteggio di attendibilità per ogni colore. Inoltre, nei metadati per i flussi di lavoro di audit è presente un parametro adjustment-status che è impostato su adjusted se la maschera di colore viene modificata. Se hai aggiunti uno o più frameAttributes al file di configurazione della categoria di etichette, le risposte del worker per gli attributi dei fotogrammi si trovano nell'oggetto JSON, dataset-object-attributes.

Il parametro your-label-attribute-ref contiene il percorso di un file compresso con estensione .zlib. Quando questo file si decomprime, esso contiene un array. Ogni indice dell'array corrisponde all'indice di un punto annotato nella nuvola di punti di input. Il valore dell'array ad un determinato indice fornisce la classe del punto in corrispondenza dello stesso indice nella nuvola di punti, in base alla mappa semantica dei colori trovata nel parametro color-map di metadata.

Per decomprimere un file.zlib puoi utilizzare un codice Python simile al seguente:

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)

Il blocco di codice riportato sopra produrrà un output simile al seguente. Ogni elemento dell'array stampato contiene la classe di un punto in corrispondenza di quell'indice nella nuvola di punti. Ad esempio, my_int_array_data[0] = 1 significa che point[0] nella nuvola di punti di input ha una classe 1. Nel seguente esempio di file manifest di output, la classe 0 corrisponde a "Background", 1 con Car e 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])

Di seguito viene riportato un esempio di un file manifest di output del processo di etichettatura 3D a segmentazione semantica di una nuvola di punti. Il testo rosso in corsivo negli esempi seguenti varia a seconda delle specifiche del processo di etichettatura e dei dati di output.

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

Output di rilevamento di oggetti con nuvole di punti 3D

Di seguito è riportato un esempio di output di un processo di rilevamento di oggetti della nuvola di punti 3D. Per questo tipo di attività, i dati relativi ai cuboidi 3D vengono restituiti nel parametro 3d-bounding-box, in un elenco denominato annotations. In questo elenco, ogni cuboide 3D viene descritto utilizzando le seguenti informazioni.

  • Ogni classe o categoria di etichetta specificata nel manifest di input è associata a un oggetto class-id. Utilizza class-map per identificare la classe associata a ciascun ID classe.

  • Queste classi vengono utilizzate per assegnare a ciascun cuboide 3D un object-name nel formato <class>:<integer> dove integer è un numero univoco che identifica il cuboide nel frame.

  • center-x, center-y e center-z sono le coordinate del centro del cuboide, nello stesso sistema di coordinate dei dati di input della nuvola di punti 3D utilizzata nel processo di etichettatura.

  • length, width e height descrivono le dimensioni del cuboide.

  • yaw è usato per descrivere l'orientamento (intestazione) del cuboide.

    Nota

    yaw è ora nel sistema cartesiano destrorso. Poiché questa funzione è stata aggiunta il 2 settembre 2022 19:02:17 UTC, è possibile convertire la misurazione yaw nei dati di output precedenti utilizzando quanto segue (tutte le unità sono in radianti):

    old_yaw_in_output = pi - yaw
  • Nella nostra definizione, +x è a destra, +y è in avanti e +z è in alto rispetto al piano terra. L'ordine di rotazione è x - y - z. roll, pitch e yaw sono rappresentati nel sistema cartesiano destro. Nello spazio 3D, roll è lungo l'asse x, pitch è lungo l'asse y e yaw si trova lungo l'asse z. Tutti e tre vanno in senso antiorario.

  • Se nel file manifest di input sono stati inclusi attributi di etichetta per una determinata classe, viene incluso un parametro label-category-attributes per tutti i cuboidi per cui i worker hanno selezionato gli attributi etichetta.

Se uno o più cuboidi vengono modificati, nei metadati per i flussi di lavoro di audit è presente un parametro adjustment-status impostato su adjusted. Se hai aggiunti uno o più frameAttributes al file di configurazione della categoria di etichette, le risposte del worker per gli attributi dei frame si trovano nell'oggetto JSON, dataset-object-attributes.

Quanto red, italicized text negli esempi seguenti dipende dalle specifiche del lavoro di etichettatura e dai dati di output. Le ellissi (...) indicano una continuazione di tale elenco, in cui possono apparire oggetti aggiuntivi con lo stesso formato dell'oggetto precedente.

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

Output di tracciamento degli oggetti con nuvola di punti 3D

Quello che segue è un esempio di file manifest di output di un processo di etichettatura per il monitoraggio di oggetti in nuvola di punti 3D. Quanto red, italicized text negli esempi seguenti dipende dalle specifiche del lavoro di etichettatura e dai dati di output. Le ellissi (...) indicano una continuazione di tale elenco, in cui possono apparire oggetti aggiuntivi con lo stesso formato dell'oggetto precedente.

Oltre agli elementi standard, i metadati includono una mappa che elenca ogni classe con almeno un'etichetta nella sequenza. Se uno o più cuboidi vengono modificati, nei metadati per i flussi di lavoro di audit è presente un parametro adjustment-status impostato su 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" } }

Nell'esempio precedente, i dati del cuboide per ogni frame in seq1.json sono in SeqLabel.json nella posizione S3 Amazon, s3://amzn-s3-demo-bucket/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json. Di seguito è riportato un esempio di questo file di sequenza di etichette.

Per ogni frame della sequenza, vengono visualizzati frame-number, frame-name se applicabile, frame-attributes e un elenco di annotations. Questo elenco contiene cuboidi 3D disegnati per quel frame. Ogni frame include le seguenti informazioni:

  • Un object-name nel formato <class>:<integer> dove class identifica la categoria di etichetta e integer è un ID univoco nel set di dati.

  • Quando i worker disegnano un cuboide, questo viene associato a un unico object-id che è associato a tutti i cuboidi che identificano lo stesso oggetto su più frame.

  • Ogni classe o categoria di etichetta specificata nel manifest di input è associata a class-id. Utilizza class-map per identificare la classe associata a ciascun ID classe.

  • center-x, center-y e center-z sono le coordinate del centro del cuboide, nello stesso sistema di coordinate dei dati di input della nuvola di punti 3D utilizzata nel processo di etichettatura.

  • length, width e height descrivono le dimensioni del cuboide.

  • yaw è usato per descrivere l'orientamento (intestazione) del cuboide.

    Nota

    yaw è ora nel sistema cartesiano destrorso. Poiché questa funzione è stata aggiunta il 2 settembre 2022 19:02:17 UTC, è possibile convertire la misurazione yaw nei dati di output precedenti utilizzando quanto segue (tutte le unità sono in radianti):

    old_yaw_in_output = pi - yaw
  • Nella nostra definizione, +x è a destra, +y è in avanti e +z è in alto rispetto al piano terra. L'ordine di rotazione è x - y - z. roll, pitch e yaw sono rappresentati nel sistema cartesiano destro. Nello spazio 3D, roll è lungo l'asse x, pitch è lungo l'asse y e yaw si trova lungo l'asse z. Tutti e tre vanno in senso antiorario.

  • Se nel file manifest di input sono stati inclusi attributi di etichetta per una determinata classe, viene incluso un parametro label-category-attributes per tutti i cuboidi per cui i worker hanno selezionato gli attributi etichetta.

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

Punto di tracciamento di oggetti 3D-2D, output di tracciamento di oggetti, nuvole di oggetti

Quello che segue è un esempio di file manifest di output di un processo di etichettatura per il monitoraggio di oggetti in nuvola di punti 3D. Quanto red, italicized text negli esempi seguenti dipende dalle specifiche del lavoro di etichettatura e dai dati di output. Le ellissi (...) indicano una continuazione di tale elenco, in cui possono apparire oggetti aggiuntivi con lo stesso formato dell'oggetto precedente.

Oltre agli elementi standard, i metadati includono una mappa che elenca ogni classe con almeno un'etichetta nella sequenza. Se uno o più cuboidi vengono modificati, nei metadati per i flussi di lavoro di audit è presente un parametro adjustment-status impostato su 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" } }

Nell'esempio precedente, i dati del cuboide per ogni frame in seq2.json sono in SeqLabel.json nella posizione S3 Amazon, s3://amzn-s3-demo-bucket/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json. Di seguito è riportato un esempio di questo file di sequenza di etichette.

Per ogni frame della sequenza, vengono visualizzati frame-number, frame-name se applicabile, frame-attributes e un elenco di annotations. Questo elenco contiene cuboidi 3D disegnati per quel frame. Ogni frame include le seguenti informazioni:

  • Un object-name nel formato <class>:<integer> dove class identifica la categoria di etichetta e integer è un ID univoco nel set di dati.

  • Quando i worker disegnano un cuboide, questo viene associato a un unico object-id che è associato a tutti i cuboidi che identificano lo stesso oggetto su più frame.

  • Ogni classe o categoria di etichetta specificata nel manifest di input è associata a class-id. Utilizza class-map per identificare la classe associata a ciascun ID classe.

  • center-x, center-y e center-z sono le coordinate del centro del cuboide, nello stesso sistema di coordinate dei dati di input della nuvola di punti 3D utilizzata nel processo di etichettatura.

  • length, width e height descrivono le dimensioni del cuboide.

  • yaw è usato per descrivere l'orientamento (intestazione) del cuboide.

    Nota

    yaw è ora nel sistema cartesiano destrorso. Poiché questa funzione è stata aggiunta il 2 settembre 2022 19:02:17 UTC, è possibile convertire la misurazione yaw nei dati di output precedenti utilizzando quanto segue (tutte le unità sono in radianti):

    old_yaw_in_output = pi - yaw
  • Nella nostra definizione, +x è a destra, +y è in avanti e +z è in alto rispetto al piano terra. L'ordine di rotazione è x - y - z. roll, pitch e yaw sono rappresentati nel sistema cartesiano destro. Nello spazio 3D, roll è lungo l'asse x, pitch è lungo l'asse y e yaw si trova lungo l'asse z. Tutti e tre vanno in senso antiorario.

  • Se nel file manifest di input sono stati inclusi attributi di etichetta per una determinata classe, viene incluso un parametro label-category-attributes per tutti i cuboidi per cui i worker hanno selezionato gli attributi etichetta.

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

Il cuboide e il riquadro di delimitazione di un oggetto sono collegati tramite un id oggetto comune.