Il Deep Learning si propone di replicare il processo di apprendimento umano all’interno di un sistema informatico.

Lo strumento software ideato per raggiungere questo ambizioso scopo è chiamato rete neurale, in analogia alla biologia del cervello umano. Quest’ultima è composta da un insieme di neuroni artificiali, ciascuno dei quali è specializzato nello studio di determinate caratteristiche dell’input (ad esempio le varie direzioni degli edge, particolari forme ricorrenti…).

I neuroni sono suddivisi in livelli successivi. All’interno di ciascun livello ogni neurone lavora individualmente, ricevendo l’elaborazione effettuata nel livello precedente. Una volta effettuata la loro analisi, i neuroni trasferiscono l’output ai componenti del livello seguente. La modalità di scambio di informazioni e l’elaborazione all’interno di ciascun livello è determinata da un’operazione matematica.

L’elaborazione successiva dei dati permette l’analisi di caratteristiche sempre più complesse mano a mano che le informazioni avanzano nei livelli, permettendo così di assemblare tra di loro informazioni diverse e restituire all’utente una risposta.

Il primo step fondamentale è la scelta tra i molteplici modelli di rete neurale, la quale avviene in base alla tipologia e alla difficoltà del compito da risolvere. Una volta determinata la tipologia di software da utilizzare, è necessario studiare quale sia la forma più corretta di presentare i dati alla rete neurale. Conseguentemente si può procedere con l’acquisizione delle immagini, tenendo presente che la capacità di generalizzazione della rete neurale è maggiore quanto più i dati rappresentano un ampio spettro di tutte le casistiche possibili.

La fase conclusiva per la preparazione del materiale è l’assegnazione a ciascuna immagine della “verità”, cioè la risposta che vorremmo ricevere dalla rete neurale. Questa procedura viene anche chiamata “etichettamento” e i nuovi dati vengono chiamati “immagini etichettate”.

La prima fase è dedicata all’addestramento; ciò significa che durante questo periodo la rete neurale sfrutta tutte le informazioni presenti nei dati etichettati per apprendere concetti utili per la risoluzione del task.
L’apprendimento evolve grazie alla modifica dell’elaborazione che avviene in ciascun neurone e tale variazione è mirata alla minimizzazione degli errori.
La durata di questa fase può variare da qualche ora, giorno o settimana!

Lo step successivo è dedicato alla verifica di ciò che la rete ha appreso. È possibile giudicare la rete neurale visualizzando i risultati che presenta in seguito all’elaborazione di nuove immagini. Durante questa fase il passaggio dei dati lungo la rete avviene molto rapidamente, in quanto i neuroni applicano quanto già hanno appreso senza dover indagare nuovi aspetti.
Nel caso in cui si decidesse di migliorarne le prestazioni, è necessaria un’analisi degli errori più frequenti con lo scopo di evidenziare le caratteristiche e le particolarità che traggono in inganno la rete neurale. In base a quanto emerge, è possibile introdurre adeguate strategie di miglioramento.

Uno dei principali vantaggi del Deep Learning è l’aver sviluppato tecniche che rendono possibile l’apprendimento da parte di macchine. Imparando l’idea base dei concetti, la macchina è in grado di gestire le varie sotto-casistiche che le si presentano. Questo porta ad una diminuzione esponenziale del codice da implementare.

L’addestramento di una rete neurale richiede un numero elevato di immagini che devono venire etichettate cioè associate a quella informazione che la rete deve apprendere. Per esempio immagini di prodotti difettosi devono venire etichettate con la classe di non conformità oppure con le coordinate di regioni nell’immagine che evidenziano il difetto.

Un altro ostacolo è l’impossibilità da parte dell’utente di intervenire durante l’addestramento. Questa caratteristica porta i programmatori di reti neurali a formarsi un’esperienza specifica nell’ottimizzare le fasi e i tempi dell’addestramento delle reti che implementano.

Nel percorso di ricerca applicata all’industria, orientato alle prestazioni reali sulle linee di produzione dei clienti, Specialvideo ha realizzato anche sistemi di visione che comprendono sia reti neurali che algoritmi tradizionali. Il sistema di visione ibrido così ottenuto ha capacità fondate sui punti di forza di entrambe le tipologie di software: affidabilità, precisione e generalizzazione.

La scelta di hardware performante è un passaggio chiave nella progettazione di un sistema di visione basato su reti neurali.

Durante l’addestramento di una qualsiasi rete neurale è preferibile e talvolta necessario l’uso di una scheda video. È però bene sottolineare che questa fase corrisponde alla creazione e preparazione della rete neurale che solitamente avviene presso la nostra sede.

Per l’esecuzione runtime solitamente non è richiesto hardware specifico, ma la scelta avviene in base alle prestazioni che si vogliono ottenere.