Come migliorare il modello di Visione personalizzata

In questa guida si apprenderà come migliorare la qualità del modello di Visione personalizzata. La qualità del classificatore o del rilevatore di oggetti dipende dalla quantità, dalla qualità e dalla varietà di dati etichettati forniti e dal modo in cui il set di dati complessivo è bilanciato. Un modello valido ha un set di dati di training bilanciato rappresentativo di ciò che verrà inviato. Il processo di creazione di tale modello è iterativo; è comune eseguire alcuni round di training per raggiungere i risultati previsti.

Di seguito è riportato un modello generale che consente di eseguire il training di un modello più accurato:

  1. Primo ciclo di training
  2. Aggiungere altre immagini e bilanciare i dati; ripetere il training
  3. Aggiungere immagini con sfondi, illuminazione, dimensioni degli oggetti, angolazioni e stili diversi; ripetere il training
  4. Usare nuove immagini per testare la stima
  5. Modificare i dati di training esistenti in base ai risultati della stima

Impedire l'overfitting

A volte un modello imparerà a eseguire stime in base a caratteristiche arbitrarie che le immagini hanno in comune. Ad esempio, se si sta creando un classificatore per mele e agrumi e sono state usate immagini di mele in mani e di agrumi su piatti bianchi, il classificatore può dare un'importanza insoddisabile alle mani e ai piatti, invece di mele e agrumi.

Per risolvere questo problema, fornire immagini con angoli, sfondi, dimensioni degli oggetti, gruppi e altre varianti. Le sezioni seguenti si espandono su questi concetti.

Quantità di dati

Il numero di immagini di training è il fattore più importante per il set di dati. È consigliabile usare almeno 50 immagini per etichetta come punto di partenza. Con un numero inferiore di immagini, c'è un rischio maggiore di overfitting e, sebbene i numeri di prestazione possano suggerire una buona qualità, il modello potrebbe avere difficoltà con i dati del mondo reale.

Bilanciamento dei dati

È anche importante valutare le quantità relative dei dati di training. Ad esempio, l'uso di 500 immagini per un'etichetta e di 50 immagini per un'altra etichetta rende sbilanciato un set di dati di training. In questo modo il modello sarà più accurato nel predire un'etichetta piuttosto che un'altra. È possibile ottenere risultati migliori se si mantiene un rapporto di almeno 1:2 tra l'etichetta con il minor numero di immagini e l'etichetta con il maggior numero di immagini. Ad esempio, se l'etichetta con più immagini contiene 500 immagini, l'etichetta con il numero inferiore di immagini dovrebbe disporre per il training di almeno 250 immagini.

Ampia gamma di dati

Assicurarsi di usare immagini rappresentative di ciò che verrà inviato al classificatore durante l'uso normale. In caso contrario, il modello potrebbe imparare a eseguire stime in base a caratteristiche arbitrarie che le immagini hanno in comune. Ad esempio, se si sta creando un classificatore per mele e agrumi e sono state usate immagini di mele in mani e di agrumi su piatti bianchi, il classificatore può dare un'importanza insoddisabile alle mani e ai piatti, invece di mele e agrumi.

Photo of fruits with unexpected matching.

Per risolvere questo problema, includere un'ampia gamma di immagini per garantire che il modello possa generalizzare correttamente. Di seguito sono illustrati alcuni modi in cui è possibile diversificare il set di training:

  • Sfondo: fornire immagini dell'oggetto davanti a sfondi diversi. Le foto in contesti naturali sono migliori delle foto con sfondi neutri in quanto forniscono informazioni aggiuntive al classificatore.

    Photo of background samples.

  • Illuminazione: fornire immagini con illuminazione varia (ovvero scattata con flash, esposizione elevata e così via), soprattutto se le immagini usate per la stima hanno illuminazione diversa. È anche utile usare immagini con saturazione, tonalità e luminosità variabili.

    Photo of lighting samples.

  • Dimensioni oggetto: fornire immagini in cui gli oggetti variano in dimensioni e numero (ad esempio, una foto di mazzi di banane e una chiusura di una singola banana). Le diverse dimensioni consentono una migliore generalizzazione da parte del classificatore.

    Photo of size samples.

  • Angolazione: fornire immagini scattate con diverse angolazioni. In alternativa, se tutte le tue foto devono essere scattate con fotocamere fisse (come le telecamere di sorveglianza), assicurati di assegnare un'etichetta diversa a ogni oggetto che si verifica regolarmente per evitare l'overfitting, interpretando oggetti non correlati (ad esempio lampioni) come caratteristica chiave.

    Photo of angle samples.

  • Stile: specificare immagini di stili diversi della stessa classe (ad esempio, varietà diverse dello stesso frutto). Tuttavia, se si dispone di oggetti con stili drasticamente diversi (ad esempio, un'immagine di Mickey Mouse rispetto a un topo vero), è consigliabile etichettarle come classi separate in modo da rappresentare meglio le caratteristiche distinte.

    Photo of style samples.

Immagini negative (solo classificatori)

Se si usa un classificatore di immagini, potrebbe essere necessario aggiungere campioni negativi per rendere il classificatore più accurato. I campioni negativi sono immagini che non corrispondono ad altri tag. Quando si caricano queste immagini, applicarvi la speciale etichetta Negative (Negativa).

I rilevatori di oggetti gestiscono automaticamente campioni negativi, perché qualsiasi area dell'immagine al di fuori dei rettangoli di delimitazione disegnati viene considerata negativa.

Nota

Il servizio Visione personalizzata supporta una gestione automatica delle immagini negative. Se, ad esempio, si sta creando un classificatore di uva e banane e per la stima si invia l'immagine di una scarpa, il classificatore deve segnare un punteggio per quell'immagine più vicino possibile allo 0%, sia per l'uva che per le banane.

D'altra parte, nei casi in cui le immagini negative sono soltanto una variazione delle immagini usate nel training, è probabile che il modello classificherà le immagini negative come una classe con etichetta a causa delle molte analogie. Se, ad esempio, si ha un classificatore di arance e di pompelmi e si invia un'immagine di una clementina, è possibile che la clementina sia classificata come un'arancia perché molte sue caratteristiche sono simili a quelle delle arance. Se le immagini negative sono di questo tipo, è consigliabile creare uno o più tag aggiuntivi, ad esempio Altro, e assegnare un'etichetta alle immagini negative con questo tag durante il training per consentire al modello di distinguere meglio queste classi.

Occlusione e troncamento (solo rilevatori di oggetti)

Se vuoi che il rilevatore oggetti rilevi oggetti troncati (oggetti parzialmente ritagliati dall'immagine) o oggetti occlusi (oggetti parzialmente bloccati da altri oggetti nell'immagine), dovrai includere immagini di training che coprono tali casi.

Nota

Il problema di oggetti che vengono occlusi da altri oggetti non deve essere confuso con La soglia di sovrapposizione, un parametro per le prestazioni del modello di classificazione. Il dispositivo di scorrimento Sovrapposizione soglia sul sito Web di Visione personalizzata gestisce quanto un rettangolo di selezione stimato deve sovrapporsi al rettangolo di delimitazione reale per essere considerato corretto.

Usare immagini di stima per ulteriori training

Quando si usa o si testa il modello inviando immagini all'endpoint di stima, il servizio Visione personalizzata archivia tali immagini. È quindi possibile usarle per migliorare il modello.

  1. Per visualizzare le immagini inviate al modello, aprire la pagina Web Visione personalizzata, passare al progetto e selezionare la scheda Stime. La visualizzazione predefinita mostra le immagini dell'iterazione corrente. È possibile usare il menu a discesa Iteration (Iterazione) per visualizzare le immagini inviate durante le iterazioni precedenti.

    screenshot of the predictions tab, with images in view

  2. Passare il puntatore del mouse su un'immagine per visualizzare i tag stimati dal modello. Le immagini vengono ordinate in modo che quelle che possono apportare i miglioramenti migliori al modello siano elencate nella parte superiore. Per usare un metodo di ordinamento diverso, effettuare una selezione all'interno della sezione Sort (Ordinamento).

    Per aggiungere un'immagine ai dati di training esistenti, selezionare l'immagine, impostare i tag corretti e selezionare Salva e chiudi. L'immagine verrà rimossa da Predictions (Stime) e aggiunta alle immagini di training. È possibile visualizzarla selezionando la scheda Training Images (Immagini di training).

    Screenshot of the tagging page.

  3. Usare quindi il pulsante Train (Esegui training) per ripetere il training del modello.

Controllare visivamente le stime

Per esaminare le stime delle immagini, passare alla scheda Training Images (Immagini di training), selezionare l'iterazione di training precedenti nel menu a discesa Iteration (Iterazione) e selezionare uno o più tag nella sezione Tags (Tag). La visualizzazione dovrebbe ora mostrare una casella rossa intorno a ciascuna delle immagini per le quali il modello non è riuscito a prevedere correttamente l'etichetta data.

Image of the iteration history

A volte un'ispezione visiva può identificare modelli che è possibile correggere aggiungendo più dati di training o modificando quelli esistenti. Un classificatore di mele rispetto a lime potrebbe ad esempio etichettare erroneamente tutte le mele verdi come lime. È perciò possibile risolvere il problema aggiungendo e fornendo dati di training che contengono immagini con tag di mele verdi.

Passaggi successivi

In questa guida sono state apprese diverse tecniche per rendere il modello di classificazione delle immagini personalizzato o il modello di rilevamento oggetti più accurato. Successivamente, altre informazioni su come eseguire il test delle immagini a livello di codice inviandole all'API delle stime.