Condividi tramite


Come migliorare il modello di Visione personalizzata

Questa guida illustra come migliorare la qualità del modello di Visione personalizzata. La qualità del classificatore o del rilevatore di oggetti dipende dalla quantità, qualità e varietà dei dati con etichetta che sono forniti e dal bilanciamento del set di dati a livello generale. Un buon modello ha un set di dati di training bilanciato, rappresentativo di ciò che verrà inviato al suddetto. Il processo di creazione di un modello di questo tipo è iterativo; è comune effettuare alcuni cicli 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

In alcuni casi, a un modello verrà illustrato come eseguire stime in base alle caratteristiche arbitrarie che le immagini hanno in comune. Ad esempio, se si sta creando un classificatore per mele e agrumi e si sono usate immagini di mele in mano e di agrumi su piatti bianchi, il classificatore potrebbe dare importanza non dovuta a mani e piatti bianchi anziché a mele e agrumi.

Per risolvere il problema, fornire immagini con diverse angolazioni, sfondi, dimensioni degli oggetti, gruppi e altre variazioni. Le sezioni seguenti espandono su questi concetti.

Quantità di dati

Il numero di immagini di training è il fattore più importante per il set di dati. È consigliabile usare come punto di partenza almeno 50 immagini per etichetta. 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, un modello potrebbe apprendere come eseguire stime in base alle caratteristiche arbitrarie che le immagini hanno in comune. Ad esempio, se si sta creando un classificatore per mele e agrumi e si sono usate immagini di mele in mano e di agrumi su piatti bianchi, il classificatore potrebbe dare importanza non dovuta a mani e piatti bianchi anziché a mele e agrumi.

Foto di frutta con corrispondenza imprevista.

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

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

    Foto di esempi di sfondo.

  • Illuminazione: fornire immagini con diversi tipi di illuminazione, ad esempio eseguite con flash, con un'esposizione alta e così via, soprattutto se le immagini usate per la stima hanno illuminazioni diverse. È inoltre utile usare immagini con saturazione, tonalità e luminosità variabili.

    Foto di esempi di illuminazione.

  • Dimensioni dell'oggetto: fornire immagini in cui gli oggetti variano per dimensione e numero (ad esempio, la foto di un casco di banane e il primo piano di una banana singola). Le diverse dimensioni consentono una migliore generalizzazione da parte del classificatore.

    Foto di esempi di dimensioni.

  • Angolazione: fornire immagini scattate con diverse angolazioni. In alternativa, se tutte le foto devono essere eseguite con telecamere fisse, ad esempio telecamere di sorveglianza, assicurarsi di assegnare un'etichetta diversa a ciascuna degli oggetti che ricorrono regolarmente per evitare l'overfitting nell'interpretazione di oggetti non correlati, ad esempio lampioni, come funzionalità chiave.

    Foto di esempi di angolazione.

  • Stile: specificare le immagini di stili diversi della stessa classe (ad esempio, diverse varietà degli stessi frutti). 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.

    Foto di esempi di stile.

Immagini negative (solo classificatori)

Se si utilizza un classificatore di immagini, potrebbe essere necessario aggiungere esempi negativi per rendere più preciso il classificatore. Gli esempi negativi sono immagini che non corrispondono a nessun altro 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 selezione disegnati viene considerata negativa.

Nota

Il servizio Visione personalizzata supporta alcune operazioni di gestione automatica delle immagine 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 si desidera che il rilevatore di oggetti rilevi oggetti troncati (oggetti parzialmente ritagliati dall'immagine) od occlusi (oggetti parzialmente bloccati da altri oggetti nell'immagine), sarà necessario 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 di valutazione delle prestazioni del modello. Il dispositivo di scorrimento Sovrapponi soglia nel sito Web di Visione personalizzata verifica quanto un rettangolo di selezione stimato debba sovrapporsi con il vero rettangolo di selezione per essere considerato corretto.

Usare immagini di stima per ulteriori training

Quando si usa o si testa il modello tramite l'invio di immagini per l'endpoint di stima, il servizio Visione personalizzata archivia le immagini. È quindi possibile usarle per migliorare il modello.

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

    Screenshot della scheda delle stime con immagini in vista

  2. Passare il mouse su un'immagine per visualizzare i tag previsti dal modello. Le immagini vengono ordinate in modo che vengano elencate in alto quelle che possono apportare il maggior numero di miglioramenti al modello. 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, scegliere l'immagine, impostare i tag corretti e quindi 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 della pagina dei tag.

  3. Usare quindi il pulsante Train (Eseguire il 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.

Immagine della cronologia delle iterazioni

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, si sono apprese varie tecniche per rendere più preciso il modello di classificazione di immagini personalizzate o quello di rilevamento degli oggetti. Successivamente, altre informazioni su come eseguire il test delle immagini a livello di codice inviandole all'API delle stime.