Eseguire il training di un piccolo modello di rilevamento oggetti con AutoML
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)
Questo articolo illustra come eseguire il training di un modello di rilevamento oggetti per rilevare oggetti di piccole dimensioni in immagini ad alta risoluzione con Ml automatizzato in Azure Machine Learning.
In genere, i modelli di visione artificiale per il rilevamento degli oggetti funzionano bene per i set di dati con oggetti relativamente grandi. Tuttavia, a causa di vincoli di memoria e di calcolo, questi modelli tendono a non funzionare in maniera ottimale quando viene richiesto di rilevare oggetti di piccole dimensioni in immagini ad alta risoluzione. Poiché le immagini ad alta risoluzione sono in genere di grandi dimensioni, vengono ridimensionate prima dell'input nel modello, che limita la capacità di rilevare oggetti più piccoli rispetto alle dimensioni iniziali dell'immagine.
Per risolvere questo problema, Machine Learning automatizzato supporta l'associazione come parte delle funzionalità di visione artificiale. La funzionalità di affiancamento in Machine Learning automatizzato si basa sui concetti in La potenza di affiancamento per il rilevamento di oggetti piccoli.
Quando si collega, ogni immagine viene divisa in una griglia di riquadri. I riquadri adiacenti si sovrappongono tra loro in dimensioni di larghezza e altezza. I riquadri vengono ritagliati dall'originale, come illustrato nell'immagine seguente.
Prerequisiti
Un'area di lavoro di Azure Machine Learning. Per creare l'area di lavoro, vedere Creare risorse dell'area di lavoro.
Questo articolo presuppone una certa familiarità con come configurare un esperimento di Machine Learning automatizzato per le attività di visione artificiale.
Modelli supportati
Il rilevamento di oggetti di piccole dimensioni tramite affiancamento è supportato per tutti i modelli supportati da Machine Learning automatizzato per le immagini con attività di rilevamento degli oggetti.
Abilitare l’affiancamento durante il training
Per abilitare l'associazione, è possibile impostare il tile_grid_size
parametro su un valore come "3x2", dove 3 è il numero di riquadri lungo la dimensione di larghezza e 2 è il numero di riquadri lungo la dimensione altezza. Quando questo parametro è impostato su '3x2'; ogni immagine è suddivisa in una griglia di 3 x 2 riquadri. Ogni riquadro si sovrappone ai riquadri adiacenti, in modo che tutti gli oggetti che cadono sul bordo del riquadro siano inclusi completamente in uno dei riquadri. Questa sovrapposizione è controllata dal tile_overlap_ratio
parametro , che per impostazione predefinita è 25%.
Quando l'affiancamento è abilitato, l'intera immagine e i riquadri generati vengono passati attraverso il modello. Queste immagini e riquadri vengono ridimensionati in base ai parametri min_size
e max_size
prima di passare attraverso il modello. Il tempo di calcolo aumenta proporzionalmente a causa dell'elaborazione di questi dati aggiuntivi.
Ad esempio, quando il tile_grid_size
parametro è "3x2", il tempo di calcolo sarebbe circa sette volte superiore a quello senza affiancamento.
È possibile specificare il valore per tile_grid_size
nei parametri di training come stringa.
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
training_parameters:
tile_grid_size: '3x2'
Il valore per il parametro tile_grid_size
dipende dalle dimensioni dell'immagine e dalle dimensioni degli oggetti all'interno dell'immagine. Ad esempio, un numero maggiore di riquadri sarebbe utile quando sono presenti oggetti più piccoli nelle immagini.
Per scegliere il valore ottimale per questo parametro per il set di dati, è possibile usare la ricerca degli iperparametri. A tale scopo, è possibile specificare una scelta di valori per questo parametro nello spazio degli iperparametri.
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)
search_space:
- model_name:
type: choice
values: ['fasterrcnn_resnet50_fpn']
tile_grid_size:
type: choice
values: ['2x1', '3x2', '5x3']
Affiancamento durante l'inferenza
Quando viene distribuito un modello sottoposto a training con affiancamento, questo si verifica anche durante l'inferenza. Machine Learning automatizzato usa il valore tile_grid_size
dal training per generare i riquadri durante l'inferenza. L'intera immagine e i riquadri corrispondenti vengono passati attraverso il modello e le proposte di oggetto da essi vengono unite per restituire stime finali, come nell'immagine seguente.
Nota
È possibile che lo stesso oggetto venga rilevato da più riquadri, il rilevamento della duplicazione viene eseguito per rimuovere tali duplicati.
Il rilevamento dei duplicati viene eseguito eseguendo NMS sulle proposte dei riquadri e dell'immagine. Quando più proposte si sovrappongono, viene selezionata quella con il punteggio più alto e le altre vengono eliminate come duplicati. Due proposte vengono considerate sovrapposte quando l'intersezione sull’unione (iou) tra di esse è maggiore del parametro tile_predictions_nms_thresh
.
È anche possibile abilitare l'affiancamento solo durante l'inferenza senza abilitarlo nel training. A tale scopo, impostare il parametro tile_grid_size
solo durante l'inferenza e non per il training.
In questo modo, potrebbe migliorare le prestazioni per alcuni set di dati e non comporta il costo aggiuntivo fornito con la tiling in fase di training.
Affiancamento degli iperparametri
Di seguito sono riportati i parametri che è possibile usare per controllare la funzionalità di affiancamento.
Nome parametro | Descrizione | Default |
---|---|---|
tile_grid_size |
Dimensioni della griglia da usare per affiancare ogni immagine. Disponibile per l'uso durante il training, la convalida e l'inferenza. Deve essere passato come stringa in '3x2' formato .Nota: l'impostazione di questo parametro aumenta il tempo di calcolo proporzionalmente, poiché tutti i riquadri e le immagini vengono elaborati dal modello. |
nessun valore predefinito |
tile_overlap_ratio |
Controlla il rapporto di sovrapposizione tra riquadri adiacenti in ogni dimensione. Quando gli oggetti che rientrano sul limite del riquadro sono troppo grandi per adattarsi completamente a uno dei riquadri, aumentare il valore di questo parametro in modo che gli oggetti si adattino completamente a uno dei riquadri. Deve essere un float in [0, 1). |
0.25 |
tile_predictions_nms_thresh |
La soglia di intersezione sull’unione da usare per eseguire l'eliminazione non massima (nms) durante l'unione di stime da riquadri e immagini. Disponibile durante la convalida e l'inferenza. Modificare questo parametro se sono presenti più caselle rilevate per oggetto nelle stime finali. Deve essere float in [0, 1]. |
0.25 |
Notebook di esempio
Per esempi dettagliati di configurazione e training di un modello di rilevamento oggetti, vedere il notebook di esempio di rilevamento degli oggetti.
Nota
Tutte le immagini contenute in questo articolo vengono rese disponibili in base alla sezione relativa all'uso consentito del contratto di licenza MIT. Copyright © 2020 Roboflow, Inc.
Passaggi successivi
- Altre informazioni su come e dove distribuire un modello.
- Per definizioni ed esempi dei grafici delle prestazioni e delle metriche fornite per ogni processo, vedere Valutare i risultati dell'esperimento di Machine Learning automatizzato.
- Esercitazione: eseguire il training di un modello di rilevamento oggetti con AutoML e Python.
- Vedere quali iperparametri sono disponibili per le attività di visione artificiale.
- Eseguire stime con ONNX nei modelli di visione artificiale da AutoML