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.
![Immagini sintetiche per l'object detection e tracking (Parte 2)](https://digitalpress.fra1.cdn.digitaloceanspaces.com/b1c48dx/2023/01/j2.jpg)
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.
![](https://digitalpress.fra1.cdn.digitaloceanspaces.com/b1c48dx/2023/01/Screenshot-2023-01-26-alle-16.35.24.png)
![](https://digitalpress.fra1.cdn.digitaloceanspaces.com/b1c48dx/2023/01/Screenshot-2023-01-26-alle-16.35.29.png)
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.
![](https://digitalpress.fra1.cdn.digitaloceanspaces.com/b1c48dx/2023/01/Screenshot-2023-01-26-alle-16.35.34.png)
![](https://digitalpress.fra1.cdn.digitaloceanspaces.com/b1c48dx/2023/01/Screenshot-2023-01-26-alle-16.35.38.png)
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.