Rilevamento di oggetti - MXNet - 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à.

Rilevamento di oggetti - MXNet

L' MXNet algoritmo Amazon SageMaker AI Object Detection rileva e classifica gli oggetti nelle immagini utilizzando un'unica rete neurale profonda. È un algoritmo di apprendimento supervisionato che accetta le immagini come input e identifica tutte le istanze degli oggetti all'interno della scena dell'immagine. L'oggetto è classificato in una delle classi in una raccolta specificata con un punteggio di attendibilità che appartiene alla classe. La posizione e la scala nell'immagine sono indicate da un riquadro di delimitazione rettangolare. Utilizza il framework Single Shot multibox Detector (SSD) e supporta due reti di base: VGG e. ResNet La rete può essere addestrata da zero o addestrata con modelli preaddestrati sul set di dati. ImageNet

Interfaccia di input/output per l'algoritmo di rilevamento oggetti

L'algoritmo SageMaker AI Object Detection supporta i tipi di contenuto reCordio (application/x-recordio) e image (image/pngimage/jpeg, eapplication/x-image) per l'addestramento in modalità file e supporta recorDio (application/x-recordio) per l'addestramento in modalità pipe. Tuttavia puoi anche addestrare in modalità Pipe utilizzando il file immagine (image/png, image/jpeg e application/x-image), senza creare file RecordIO usando il formato di manifest aumentato. Il formato di input consigliato per gli algoritmi di rilevamento degli oggetti di Amazon SageMaker AI è Apache ReCordio. MXNet Tuttavia, puoi anche utilizzare immagini non elaborate in formato. jpg o. png. L'algoritmo supporta solo application/x-image per inferenza.

Nota

Per mantenere una migliore interoperabilità con i framework di deep learning esistenti, questo si differenzia dai formati di dati protobuf comunemente usati da altri algoritmi di intelligenza artificiale di Amazon. SageMaker

Vedi Notebook di esempio di rilevamento oggetti per altri dettagli sui formati dei dati.

Addestramento con il formato RecordIO

Se utilizzi il formato RecordIO per l’addestramento, specifica i canali di addestramento e di convalida come valori per il parametro InputDataConfig della richiesta CreateTrainingJob. Specifica un file RecordIO (.rec) nel canale di addestramento e un file RecordIO nel canale di convalida. Imposta il tipo di contenuto per entrambi i canali su application/x-recordio. Un esempio di come generare un file RecordIO è disponibile nel notebook di esempio sul rilevamento oggetti. Puoi anche utilizzare gli strumenti di GluonCV per MXNet generare file RecordIO per set di dati popolari come PASCAL Visual Object Classes e Common Objects in Context (COCO).

Addestramento con il formato immagine

Se utilizzi il formato immagine per l’addestramento, specifica i canali train, validation, train_annotation e validation_annotation come valori per il parametro InputDataConfig della richiesta CreateTrainingJob. Specifica i singoli file di dati dell'immagine (.jpg o .png) per i canali di addestramento e convalida. Per i dati di annotazione, puoi utilizzare il formato JSON. Specifica i corrispondenti file .json nei canali train_annotation e validation_annotation. Imposta il tipo di contenuto per tutti e quattro i canali su image/png o image/jpeg in base al tipo di immagine. Puoi inoltre utilizzare il tipo di contenuto application/x-image nel caso in cui il set di dati contiene immagini .jpg e .png. Di seguito è riportato un esempio di file .json.

{ "file": "your_image_directory/sample_image1.jpg", "image_size": [ { "width": 500, "height": 400, "depth": 3 } ], "annotations": [ { "class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128 }, { "class_id": 0, "left": 161, "top": 250, "width": 79, "height": 143 }, { "class_id": 1, "left": 101, "top": 185, "width": 42, "height": 130 } ], "categories": [ { "class_id": 0, "name": "dog" }, { "class_id": 1, "name": "cat" } ] }

Ogni immagine ha bisogno di un file .json per l'annotazione e il file .json deve avere lo stesso nome dell'immagine corrispondente. Il nome del file .json precedente deve essere "sample_image1.json". Ci sono quattro proprietà nel file .json dell'annotazione. La proprietà "file" specifica il percorso relativo del file immagine. Ad esempio, se le immagini di allenamento e i corrispondenti file .json sono archiviati in s3://your_bucket/train/sample_image e s3://your_bucket/train_annotation, specifica il percorso per i canali train e train_annotation come s3://your_bucket/train e s3://your_bucket/train_annotation, rispettivamente.

Nel file .json, il percorso relativo per un'immagine denominata sample_image1.jpg deve essere sample_image/sample_image1.jpg. La proprietà "image_size" specifica le dimensioni complessive dell'immagine. SageMaker L'algoritmo di rilevamento degli oggetti AI attualmente supporta solo immagini a 3 canali. La proprietà "annotations" specifica le categorie e i riquadri di delimitazione per gli oggetti all'interno dell'immagine. Ogni oggetto è annotato da un indice "class_id" e dalle quattro coordinate dei riquadri di delimitazione ("left", "top", "width", "height"). I valori "left" (coordinata x) e "top" (coordinata y) rappresentano l'angolo superiore sinistro del riquadro di delimitazione. I valori "width" (coordinata x) e "height" (coordinata y) rappresentano le dimensioni del riquadro di delimitazione. L'origine (0, 0) è l'angolo superiore sinistro dell'intera immagine. Se hai più oggetti all'interno di un'immagine, tutte le annotazioni devono essere incluse in un singolo file .json. La proprietà "categories" memorizza la mappatura tra l'indice della classe e il nome della classe. Gli indici della classe devono essere numerati successivamente e la numerazione deve iniziare da 0. La proprietà "categories" è facoltativa per il file .json dell'annotazione

Addestramento con il formato di immagine manifest aumentato

Il formato di manifest aumentato ti consente di addestrare in modalità Pipe usando i file di immagine senza dover creare file RecordIO. È necessario specificare i canali di addestramento e di convalida come valori per il parametro InputDataConfig della richiesta CreateTrainingJob. Quando si usa questo formato, è necessario generare un file manifest S3 che contenga l'elenco delle immagini e delle annotazioni corrispondenti. Il formato del file manifest deve essere in JSON Lines dove ogni riga rappresenta un esempio. Le immagini sono specificate utilizzando il tag 'source-ref' che punta al percorso S3 dell'immagine. Le annotazioni sono fornite nel valore del parametro "AttributeNames" come specificato nella richiesta CreateTrainingJob. Può anche contenere metadati aggiuntivi nel tag metadata, ma questi vengono ignorati dall'algoritmo. In questo esempio, i valori "AttributeNames sono inclusi nell'elenco ["source-ref", "bounding-box"]:

{"source-ref": "s3://your_bucket/image1.jpg", "bounding-box":{"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": 80, "height": 50}]}, "bounding-box-metadata":{"class-map":{"0": "dog", "5": "horse"}, "type": "groundtruth/object-detection"}} {"source-ref": "s3://your_bucket/image2.jpg", "bounding-box":{"image_size":[{ "width": 400, "height": 300, "depth":3}], "annotations":[{"class_id": 1, "left": 100, "top": 120, "width": 43, "height": 78}]}, "bounding-box-metadata":{"class-map":{"1": "cat"}, "type": "groundtruth/object-detection"}}

L'ordine degli "AttributeNames" nei file di input è importante nell’addestramento dell'algoritmo di rilevamento oggetti. Accetta dati reindirizzati in un ordine specifico, con image per primo, seguito da annotations. Quindi i "AttributeNames" in questo esempio vengono forniti per "source-ref" primi, seguiti da"bounding-box". Quando utilizzi il rilevamento oggetti con il manifest aumentato, il valore del parametro RecordWrapperType deve essere impostato come "RecordIO".

Per ulteriori informazioni sui file manifest aumentati, consulta File manifesto aumentati per lavori di formazione.

Addestramento incrementale

Puoi anche iniziare l'addestramento di un nuovo modello con gli artefatti di un modello che hai addestrato in precedenza con SageMaker l'intelligenza artificiale. La formazione incrementale consente di risparmiare tempo di formazione quando si desidera addestrare un nuovo modello con dati uguali o simili. SageMaker I modelli di rilevamento di oggetti AI possono essere configurati solo con un altro modello di rilevamento di oggetti integrato addestrato nell' SageMaker intelligenza artificiale.

Per usare un modello già addestrato nella richiesta CreateTrainingJob, specifica ChannelName come modello nel parametro InputDataConfig. Imposta ContentType per il canale del modello su application/x-sagemaker-model. Gli iperparametri di input del nuovo modello e del modello già addestrato che carichi nel canale del modello devono avere le stesse impostazioni per i parametri di input base_network e num_classes. Questi parametri definiscono l'architettura della rete. Per il file di modello preaddestrato, utilizza gli artefatti del modello compressi (in formato.tar.gz) generati dall'IA. SageMaker Puoi utilizzare i formati di immagine o RecordIO per i dati di input.

Per ulteriori informazioni sull’addestramento incrementale e le istruzioni per utilizzarlo, consulta Usa la formazione incrementale in Amazon SageMaker AI.

EC2 Istanza consigliata per l'algoritmo di rilevamento degli oggetti

L'algoritmo di rilevamento oggetti supporta le famiglie di istanze GPU P2, P3, G4dn e G5. Ti consigliamo di utilizzare le istanze GPU con più memoria per l’addestramento con batch di grandi dimensioni. Puoi eseguire l'algoritmo di rilevamento oggetti su impostazioni a più GPU e macchine di addestramento distribuito.

È possibile utilizzare sia le istanze di CPU (come C5 e M5) che di GPU (come P3 e G4dn) per inferenza.

Notebook di esempio di rilevamento oggetti

Per un taccuino di esempio che mostra come utilizzare l'algoritmo SageMaker AI Object Detection per addestrare e ospitare un modello su

Set di dati Caltech Birds (CUB 200 2011) che utilizza l'algoritmo Single Shot multibox Detector, vedi SageMaker Amazon AI Object Detection for Bird Species. Per istruzioni su come creare e accedere alle istanze di notebook Jupyter da utilizzare per eseguire l'esempio in AI, consulta. SageMaker Istanze Amazon SageMaker Notebook Dopo aver creato un'istanza di notebook e averla aperta, seleziona la scheda Esempi SageMaker AI per visualizzare un elenco di tutti gli esempi di IA. SageMaker Il notebook di esempio per il rilevamento oggetti che utilizza l'algoritmo di rilevamento oggetti si trova nella sezione Introduzione agli algoritmi Amazon. Per aprire un notebook, fai clic sulla relativa scheda Use (Utilizza) e seleziona Create copy (Crea copia).

Per ulteriori informazioni sull'algoritmo Amazon SageMaker AI Object Detection, consulta i seguenti post di blog: