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)
Argomenti
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/png
image/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. MXNetapplication/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
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'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)
Per ulteriori informazioni sull'algoritmo Amazon SageMaker AI Object Detection, consulta i seguenti post di blog: