Immagini sintetiche per l'object detection e tracking (Parte 2)
Affrontiamo il difficile problema di addestrare su oggetti sintetici per riconoscere oggetti reali. È un caso naturalmente molto interessante per quei problemi nei quali gli esempi a disposizione sono pochi e la data augmentation con oggetti sintetici può essere una strada da provare.
Introduzione
Nel precedente articolo, abbiamo mostrato come provare il riconoscimento di oggetti artificiali con una rete addestrata su oggetti reali.
In questo articolo affronteremo il più difficile problema inverso: addestrare su oggetti sintetici per riconoscere oggetti reali.
È un caso naturalmente molto interessante per quei problemi nei quali gli esempi a disposizione sono pochi e la data augmentation con oggetti sintetici può essere una strada da provare.
Lo sviluppo dell'ambiente
Abbiamo deciso di provare con uno scoiattolo sintetico, che abbiamo chiamato "Jennifer", perché:
- è un oggetto biologico, notoriamente più variegato e meno prevedibile dei manufatti;
- non era presente, come oggetto, in diverse reti preaddestrate di nostra conoscenza;
- abbiamo trovato un modello di scoiattolo dal quale partire che era sia economico che non eccessivamente realistico, costituendo quindi un'ulteriore sfida.
Programmando e configurando in Unreal Engine 5, abbiamo creato un piccolo mondo nel quale far muovere sia lo scoiattolo che la macchina da presa virtuale.
Siamo quindi stati in grado di creare un insieme di immagini sintetiche con posizione, pose di Jennifer e luci pseudo casuali: grazie inoltre all'ambiente virtuale programmabile, è stato possibile evitare la fase di annotazione manuale delle immagini, ottenendo già i metadati necessari per i successivi passi. Anche questo è un aspetto importante perché tipicamente richiede molto lavoro non automatizzabile: al termine di queste elaborazioni, abbiamo ottenuto un training set e un validation set.
Una sintesi video in grado di rendere l'idea è la seguente:
Il risultato ottenuto
Per la creazione del testing set, abbiamo raccolto da YouTube video di scoiattoli, scegliendo alcuni frammenti: dopo averli anche annotati (arricchendo con immagini di background, alcuni falsi positivi eccetera) un risultato della predizione da parte del modello addestrato è nel seguente video: divertente e con risultati SORPRENDENTI. Alzate il volume guardando il brevissimo video! 😎
Conclusioni
Naturalmente le prestazioni dipendono sia dalla composizione del training che del testing set ma lo scopo di questo articolo è di fornire al lettore spunti di riflessione e invitarlo a contattarci in caso avesse curiosità sul tema o volesse approfondire su un suo caso specifico.