Dati di output - Amazon SageMaker

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à.

Dati di output

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 tutti JSON i dati esistenti nel file di input con il nuovo valore.

Ad esempio, quanto segue è l'output di un processo di etichettatura di classificazione delle immagini in cui i file di dati di input sono stati archiviati in un Amazon AWSDOC-EXAMPLE-BUCKET S3 e il nome dell'attributo label è stato definito come sport. In questo esempio l'JSONoggetto è formattato per la leggibilità, nel file di output effettivo l'JSONoggetto si trova su una singola riga. Per ulteriori informazioni sul formato dei dati, vedere LineeJSON.

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/image_example.png", "sport":0, "sport-metadata": { "class-name": "football", "confidence": 0.00, "type":"groundtruth/image-classification", "job-name": "identify-sport", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256" } }

Il valore dell'etichetta può essere qualsiasi valore validoJSON. 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://AWSDOC-EXAMPLE-BUCKET/find-people/activelearning s3://AWSDOC-EXAMPLE-BUCKET/find-people/annotations s3://AWSDOC-EXAMPLE-BUCKET/find-people/inference s3://AWSDOC-EXAMPLE-BUCKET/find-people/manifests s3://AWSDOC-EXAMPLE-BUCKET/find-people/training

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.

Directory 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 lavoratore per ogni oggetto dati vengono archiviati in un JSON file con data e ora che contiene le risposte inviate da ciascun lavoratore per quell'oggetto dati e, se si utilizza una forza lavoro privata, i metadati relativi a tali lavoratori. Per ulteriori informazioni su questi metadati, consulta Metadati del worker.

  • 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 delle inferenze

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

Directory del manifest

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.

Directory dell’addestramento

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 attendibilità

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 del worker

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 Directory 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.

    • issuerSi tratta del pool di utenti di Cognito o dell'emittente dell'OIDCIdentity Provider (IdP) 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 di workerMetadata ciò che potresti vedere se utilizzi il tuo OIDC IdP 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 Utilizzo di una 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 attendibilità.

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

  • 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 Automatizzare l'etichettatura dei dati.

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

Output del processo 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://AWSDOC-EXAMPLE-BUCKET/example_image.jpg", "species":"0", "species-metadata": { "class-name": "dog", "confidence": 0.00, "type": "groundtruth/image-classification", "job-name": "identify-animal-species", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256" } }
{ "source":"The food was delicious", "mood":"1", "mood-metadata": { "class-name": "positive", "confidence": 0.8, "type": "groundtruth/text-classification", "job-name": "label-sentiment", "human-annotated": "yes", "creation-date": "2020-10-18T22:18:13.527256" } }

Output del processo di classificazione multi-etichetta

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 attendibilità.

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://AWSDOC-EXAMPLE-BUCKET/example_image.jpg", "image-label-attribute-name":[1,0,8], "image-label-attribute-name-metadata": { "job-name":"labeling-job/image-label-attribute-name", "class-map": { "1":"bicycle","0":"person","8":"clothing" }, "human-annotated":"yes", "creation-date":"2020-02-27T21:36:25.000201", "confidence-map": { "1":0.95,"0":0.77,"8":0.2 }, "type":"groundtruth/image-classification-multilabel" } }

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 AWSDOC-EXAMPLE-BUCKET.

{ "source-ref": "AWSDOC-EXAMPLE-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 processo riquadro di delimitazione

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 degli 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://AWSDOC-EXAMPLE-BUCKET/example_image.png", "bounding-box-attribute-name": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 20, "top": 20, "width": 30, "height": 30} ] }, "bounding-box-attribute-name-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-dogs-and-toys" } }

Il risultato di un lavoro di regolazione del bounding box è simile al seguente. JSON Notate che l'originale JSON viene mantenuto intatto e vengono elencati due nuovi lavori, ciascuno con «adjust-» aggiunto 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à denominate

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

Nel manifesto di output, l'JSONoggetto include un elenco delle labels (categorie di etichette) che avete fornito. annotations

Le risposte dei worker si trovano in un elenco denominato entities. Ogni entità in questo elenco è un JSON oggetto che contiene un label valore che corrisponde a uno nell'labelselenco, un startOffset valore intero per l'offset Unicode iniziale di Labeled span e un endOffset valore intero 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 processo di verifica dell'etichetta

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 lavoratori umani stanno verificando o modificando le precedenti etichette dei riquadri di selezione, il risultato di un processo di verifica sarebbe 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://AWSDOC-EXAMPLE-BUCKET/image_example.png", "bounding-box-attribute-name": { "image_size": [{ "width": 500, "height": 400, "depth":3}], "annotations": [ {"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 30, "height": 30}, {"class_id": 5, "left": 20, "top": 20, "width": 30, "height": 30} ] }, "bounding-box-attribute-name-metadata": { "objects": [ {"confidence": 0.8}, {"confidence": 0.9}, {"confidence": 0.9} ], "class-map": { "0": "dog", "5": "bone" }, "type": "groundtruth/object-detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-dogs-and-toys" }, "verify-bounding-box-attribute-name":"1", "verify-bounding-box-attribute-name-metadata": { "class-name": "bad", "confidence": 0.93, "type": "groundtruth/label-verification", "job-name": "verify-bounding-boxes", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "worker-feedback": [ {"comment": "The bounding box on the bird is too wide on the right side."}, {"comment": "The bird on the upper right is not labeled."} ] } }

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 questo lavoro è un riferimento a un PNG file in un bucket Amazon S3.

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://AWSDOC-EXAMPLE-BUCKET/example_city_image.png", "city-streets-ref": "S3 bucket location", "city-streets-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "confidence": 0.9, "hex-color": "#ffffff" }, "1": { "class-name": "buildings", "confidence": 0.9, "hex-color": "#2acf59" }, "2": { "class-name": "road", "confidence": 0.9, "hex-color": "#f28333" } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "label-city-streets", }, "verify-city-streets-ref":"1", "verify-city-streets-ref-metadata": { "class-name": "bad", "confidence": 0.93, "type": "groundtruth/label-verification", "job-name": "verify-city-streets", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "worker-feedback": [ {"comment": "The mask on the leftmost building is assigned the wrong side of the road."}, {"comment": "The curb of the road is not labeled but the instructions say otherwise."} ] } }

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 lavoro di regolazione della segmentazione semantica è simile al seguente. JSON

{ "source-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_city_image.png", "city-streets-ref": "S3 bucket location", "city-streets-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "confidence": 0.9, "hex-color": "#ffffff" }, "1": { "class-name": "buildings", "confidence": 0.9, "hex-color": "#2acf59" }, "2": { "class-name": "road", "confidence": 0.9, "hex-color": "#f28333" } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "label-city-streets", }, "adjusted-city-streets-ref": "s3://AWSDOC-EXAMPLE-BUCKET/example_city_image.png", "adjusted-city-streets-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "confidence": 0.9, "hex-color": "#ffffff" }, "1": { "class-name": "buildings", "confidence": 0.9, "hex-color": "#2acf59" }, "2": { "class-name": "road", "confidence": 0.9, "hex-color": "#f28333" } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2018-11-20T22:18:13.527256", "job-name": "adjust-label-city-streets", } }

Output del 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. Il red, italicized text negli esempi seguenti dipende dall'etichettatura delle specifiche del lavoro 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://AWSDOC-EXAMPLE-BUCKET/output/labeling-job-name/annotations/consolidated-annotation/output/0/SeqLabel.json", "CarObjectDetection-ref-metadata": { "class-map": { "0": "car", "1": "bus" }, "job-name": "labeling-job/labeling-job-name", "human-annotated": "yes", "creation-date": "2021-09-29T05:50:35.566000", "type": "groundtruth/video-object-detection" } }

Ground Truth 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 tutti i frame in una sequenza nell'detection-annotationselenco degli JSON oggetti.

  • Per ogni frame annotato da un worker, il nome del file del frame (frame), il numero (frame-no), un elenco di JSON oggetti 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 JSON oggetto 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 JSON oggetto verrà visualizzato 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://your-output-bucket/output-prefix/annotations/consolidated-annotation/output/annotation-number/

{ "detection-annotations": [ { "annotations": [ { "height": 41, "width": 53, "top": 152, "left": 339, "class-id": "1", "label-category-attributes": { "occluded": "no", "size": "medium" } }, { "height": 24, "width": 37, "top": 148, "left": 183, "class-id": "0", "label-category-attributes": { "occluded": "no", } } ], "frame-no": 0, "frame": "frame_0000.jpeg", "frame-attributes": {name: value, name: value} }, { "annotations": [ { "height": 41, "width": 53, "top": 152, "left": 341, "class-id": "0", "label-category-attributes": {} }, { "height": 24, "width": 37, "top": 141, "left": 177, "class-id": "0", "label-category-attributes": { "occluded": "no", } } ], "frame-no": 1, "frame": "frame_0001.jpeg", "frame-attributes": {name: value, name: value} } ] }

Output del monitoraggio 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. Il red, italicized text negli esempi seguenti dipende dall'etichettatura delle specifiche del lavoro 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://AWSDOC-EXAMPLE-BUCKET/output/labeling-job-name/annotations/consolidated-annotation/output/0/SeqLabel.json", "CarObjectTracking-ref-metadata": { "class-map": { "0": "car", "1": "bus" }, "job-name": "labeling-job/labeling-job-name", "human-annotated": "yes", "creation-date": "2021-09-29T05:50:35.566000", "type": "groundtruth/video-object-tracking" } }

Ground Truth 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 tutti i frame in una sequenza nell'tracking-annotationselenco degli JSON oggetti.

  • Per ogni frame che è stato annotato da un worker, il frame (frame), il numero (frame-no), un elenco di JSON oggetti contenenti annotazioni (annotations) e, se applicabile, gli 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 JSON oggetto 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 JSON oggetto verrà visualizzato 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://your-output-bucket/output-prefix/annotations/consolidated-annotation/output/annotation-number/

{ "tracking-annotations": [ { "annotations": [ { "height": 36, "width": 46, "top": 178, "left": 315, "class-id": "0", "label-category-attributes": { "occluded": "no" }, "object-id": "480dc450-c0ca-11ea-961f-a9b1c5c97972", "object-name": "car:1" } ], "frame-no": 0, "frame": "frame_0001.jpeg", "frame-attributes": {} }, { "annotations": [ { "height": 30, "width": 47, "top": 163, "left": 344, "class-id": "1", "label-category-attributes": { "occluded": "no", "size": "medium" }, "object-id": "98f2b0b0-c0ca-11ea-961f-a9b1c5c97972", "object-name": "bus:1" }, { "height": 28, "width": 33, "top": 150, "left": 192, "class-id": "0", "label-category-attributes": { "occluded": "partially" }, "object-id": "480dc450-c0ca-11ea-961f-a9b1c5c97972", "object-name": "car:1" } ], "frame-no": 1, "frame": "frame_0002.jpeg", "frame-attributes": {name: value, name: value} } ] }

Output della segmentazione semantica con nuvole 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 ne hai aggiunti uno o più frameAttributes al file di configurazione della categoria di etichette, le risposte dei worker per gli attributi del frame si trovano nell'JSONoggetto,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://AWSDOC-EXAMPLE-BUCKET/examplefolder/frame1.bin", "source-ref-metadata":{ "format": "binary/xyzi", "unix-timestamp": 1566861644.759115, "ego-vehicle-pose":{...}, "prefix": "s3://AWSDOC-EXAMPLE-BUCKET/lidar_singleframe_dataset/prefix", "images": [{...}] }, "lidar-ss-label-attribute-ref": "s3://your-output-bucket/labeling-job-name/annotations/consolidated-annotation/output/dataset-object-id/filename.zlib", "lidar-ss-label-attribute-ref-metadata": { 'color-map': { "0": { "class-name": "Background", "hex-color": "#ffffff", "confidence": 0.00 }, "1": { "class-name": "Car", "hex-color": "#2ca02c", "confidence": 0.00 }, "2": { "class-name": "Pedestrian", "hex-color": "#1f77b4", "confidence": 0.00 }, "3": { "class-name": "Tree", "hex-color": "#ff7f0e", "confidence": 0.00 } }, 'type': 'groundtruth/point_cloud_single_frame_semantic_segmentation', 'human-annotated': 'yes', 'creation-date': '2019-11-12T01:18:14.271944', 'job-name': 'labeling-job-name', //only present for adjustment audit workflow "adjustment-status": "adjusted", // "adjusted" means the label was adjusted "dataset-object-attributes": {name: value, name: value} } }

Output del rilevamento di oggetti della nuvola 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 02 settembre 2022 UTC 19:02:17, potete convertire la yaw misurazione 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 ne hai aggiunti uno o più frameAttributes al file di configurazione della categoria di etichette, le risposte dei lavoratori per gli attributi del frame si trovano nell'oggetto,. JSON dataset-object-attributes

Il red, italicized text negli esempi seguenti dipende dall'etichettatura delle specifiche del lavoro e dei 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://AWSDOC-EXAMPLE-BUCKET/examplefolder/frame1.txt", "source-ref-metadata":{ "format": "text/xyzi", "unix-timestamp": 1566861644.759115, "prefix": "s3://AWSDOC-EXAMPLE-BUCKET/lidar_singleframe_dataset/prefix", "ego-vehicle-pose": { "heading": { "qx": -0.02111296123795955, "qy": -0.006495469416730261, "qz": -0.008024565904865688, "qw": 0.9997181192298087 }, "position": { "x": -2.7161461413869947, "y": 116.25822288149078, "z": 1.8348751887989483 } }, "images": [ { "fx": 847.7962624528487, "fy": 850.0340893791985, "cx": 576.2129134707038, "cy": 317.2423573573745, "k1": 0, "k2": 0, "k3": 0, "k4": 0, "p1": 0, "p2": 0, "skew": 0, "unix-timestamp": 1566861644.759115, "image-path": "images/frame_0_camera_0.jpg", "position": { "x": -2.2722515189268138, "y": 116.86003310568965, "z": 1.454614668542299 }, "heading": { "qx": 0.7594754093069037, "qy": 0.02181790885672969, "qz": -0.02461725233103356, "qw": -0.6496916273040025 }, "camera_model": "pinhole" } ] }, "3d-bounding-box": { "annotations": [ { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:1", "class-id": 0, "center-x": -2.616382013657516, "center-y": 125.04149850484193, "center-z": 0.311272296465834, "length": 2.993000265181146, "width": 1.8355260519692056, "height": 1.3233490884304047, "roll": 0, "pitch": 0, "yaw": 1.6479308313703527 }, { "label-category-attributes": { "Occlusion": "Partial", "Type": "Sedan" }, "object-name": "Car:2", "class-id": 0, "center-x": -5.188984560617168, "center-y": 99.7954483288783, "center-z": 0.2226435567445657, "length": 4, "width": 2, "height": 2, "roll": 0, "pitch": 0, "yaw": 1.6243170732068055 } ] }, "3d-bounding-box-metadata": { "objects": [], "class_map": { "0": "Car", }, "type": "groundtruth/point_cloud_object_detection", "human-annotated": "yes", "creation-date": "2018-10-18T22:18:13.527256", "job-name": "identify-3d-objects", "adjustment-status": "adjusted", "dataset-object-attributes": {name: value, name: value} } }

Output del monitoraggio di oggetti della 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. Il red, italicized text negli esempi seguenti dipende dall'etichettatura delle specifiche del lavoro e dei 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://AWSDOC-EXAMPLE-BUCKET/myfolder/seq1.json", "lidar-label-attribute-ref": "s3://<CustomerOutputLocation>/<labelingJobName>/annotations/consolidated-annotation/output/<datasetObjectId>/SeqLabel.json", "lidar-label-attribute-ref-metadata": { "objects": [ { "frame-no": 300, "confidence": [] }, { "frame-no": 301, "confidence": [] }, ... ], 'class-map': {'0': 'Car', '1': 'Person'}, 'type': 'groundtruth/point_cloud_object_tracking', 'human-annotated': 'yes', 'creation-date': '2019-11-12T01:18:14.271944', 'job-name': 'identify-3d-objects', "adjustment-status": "adjusted" } }

Nell'esempio precedente, i dati del cuboide per ogni frame in seq1.json sono in SeqLabel.json nella posizione S3 Amazon, s3://<customerOutputLocation>/<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 02 settembre 2022 UTC 19:02:17, è possibile convertire la yaw misurazione 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" } ] } ] }

Output del monitoraggio di oggetti nuvola di punti 3D-2D

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. Il red, italicized text negli esempi seguenti dipende dall'etichettatura delle specifiche del lavoro e dei 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://iad-groundtruth-lidar-test-bucket/artifacts/gt-point-cloud-demos/sequences/seq2.json", "source-ref-metadata": { "json-paths": [ "number-of-frames", "prefix", "frames{frame-no, frame}" ] }, "3D2D-linking-ref": "s3://iad-groundtruth-lidar-test-bucket/xyz/3D2D-linking/annotations/consolidated-annotation/output/0/SeqLabel.json", "3D2D-linking-ref-metadata": { "objects": [ { "frame-no": 0, "confidence": [] }, { "frame-no": 1, "confidence": [] }, { "frame-no": 2, "confidence": [] }, { "frame-no": 3, "confidence": [] }, { "frame-no": 4, "confidence": [] }, { "frame-no": 5, "confidence": [] }, { "frame-no": 6, "confidence": [] }, { "frame-no": 7, "confidence": [] }, { "frame-no": 8, "confidence": [] }, { "frame-no": 9, "confidence": [] } ], "class-map": { "0": "Car" }, "type": "groundtruth/point_cloud_object_tracking", "human-annotated": "yes", "creation-date": "2023-01-19T02:55:10.206508", "job-name": "mcm-linking" }, "3D2D-linking-chain-ref": "s3://iad-groundtruth-lidar-test-bucket/xyz/3D2D-linking-chain/annotations/consolidated-annotation/output/0/SeqLabel.json", "3D2D-linking-chain-ref-metadata": { "objects": [ { "frame-no": 0, "confidence": [] }, { "frame-no": 1, "confidence": [] }, { "frame-no": 2, "confidence": [] }, { "frame-no": 3, "confidence": [] }, { "frame-no": 4, "confidence": [] }, { "frame-no": 5, "confidence": [] }, { "frame-no": 6, "confidence": [] }, { "frame-no": 7, "confidence": [] }, { "frame-no": 8, "confidence": [] }, { "frame-no": 9, "confidence": [] } ], "class-map": { "0": "Car" }, "type": "groundtruth/point_cloud_object_tracking", "human-annotated": "yes", "creation-date": "2023-01-19T03:29:49.149935", "job-name": "3d2d-linking-chain" } }

Nell'esempio precedente, i dati del cuboide per ogni frame in seq2.json sono in SeqLabel.json nella posizione S3 Amazon, s3://<customerOutputLocation>/<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 02 settembre 2022 UTC 19:02:17, è possibile convertire la yaw misurazione 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.