1
Introduzione
Il presente lavoro, il cui titolo è Sviluppo di una rete neurale convoluzionale per la
ricostruzione Multi View Stereo 3D, documenta le fasi sperimentate al fine di realizzare
un sistema in grado di stimare la profondità Multi View Stereo attraverso l’impiego di
altre due reti neurali di successo per la depth estimation: l’MVS-Net e la PyDNet.
Il primo capitolo include una propedeutica trattazione di aspetti caratterizzanti il
settore dell’intelligenza artificiale e delle reti neurali, utile ad un lettore che necessiti di
conoscenze basilari. In particolare, nella stesura si sono perseguiti i seguenti obiettivi:
far comprendere le ragioni che costituiscono il cardine delle scelte
implementative del sistema di stima della profondità realizzato e dettagliato nei
capitoli successivi;
sintetizzare i principali requisiti che caratterizzano un sistema di intelligenza
artificiale, precisando anche quali di questi vengono soddisfatti dal sistema
sviluppato nel presente lavoro. La pregnanza di tali dati emergerebbe
pienamente qualora si dovesse impiegare la rete in quelle aree, come la guida
autonoma, richiedenti il soddisfacimento di particolari proprietà del sistema,
onde ottemperare alle direttive normative imposte da vari Stati;
chiarire quali potrebbero essere le alternative dei sistemi e delle tecniche che
attualmente sono utilizzate nel campo dell’apprendimento automatico;
illustrare ad un certo livello di astrazione:
o i componenti di base costitutivi di una rete neurale;
o Il funzionamento di specifici algoritmi posti alla base dell’allenamento di
una rete neurale, ossia come una rete neurale impari a portare a termine
l’attività per la quale è stata creata;
o le diverse tipologie di architetture di reti neurali.
Il secondo capitolo, dedicato alla trattazione delle peculiarità della visione artificiale,
fornisce delucidazioni su aspetti settoriali, quali:
le tecniche di maggior successo per la visione artificiale;
2
le informazioni che un sensore digitale riesce a catturare da una scena del mondo
reale, utili per comprendere la struttura dei dataset impiegati per allenare la rete
neurale realizzata per questa sperimentazione;
il motivo della stretta dipendenza di precisione tra le reti neurali e i sistemi di
telerilevamento e fotocamere stereo, facendo emergere l’importanza di avere a
disposizione dataset di qualità, creati meccanicamente.
Sempre nel secondo capitolo sono stati analizzati vantaggi e svantaggi dell’utilizzo di reti
neurali rispetto a reti di telerilevamento e fotocamere stereo; sono stati inseriti anche
importanti dettagli sulla modalità di ricostruzione 3D multi view stereo.
Il terzo capitolo tratta delle varie reti sviluppate per il processo di ricostruzione
3D. In esso sono stati descritti: le tecnologie e gli strumenti impiegati nello sviluppo e
n e l l a v a l u t a z i o n e d e l l e p e r f o r m a n c e d e l s i s t e m a ; l ’ a r c h i t e t t u r a ed il relativo
funzionamento della rete neurale MVSNet, basandosi sul contenuto del paper intitolato
MVSNet: Depth Inference for Unstructured Multi-view Stereo [1]; le architetture delle
altre reti realizzate.
Nel medesimo capitolo sono stati riportati grafici di sintesi dei risultati delle simulazioni
relative al confronto delle varie reti. La finalità perseguita è stata quella di evidenziare i
benefici delle reti realizzate, ossia la minore occupazione di memoria e un tempo di
processamento ridotto rispetto a quella originale MVSNet. Le reti realizzate risultano
inoltre essere eseguibili anche su dispositivi hardware meno potenti di quelli richiesti
dalla MVSNet originale.
Il quarto capitolo ripercorre le modalità operative e le competenze cui si è fatto
ricorso per creare un sistema completo, fruibile via web, per la ricostruzione 3D.
Contiene, dunque, la precisazione di tutti gli strumenti e delle tecnologie impiegate per
realizzare il sistema, la descrizione delle interconnessioni dei vari componenti e
dell’architettura del sistema finale. Vi è stata evidenziata anche la cura riservata agli
aspetti di isolamento dei sistemi per proteggerli da attacchi esterni di sicurezza
aggiungendo, ad esempio, un server VPN.
Quest’ultimo capitolo è corredato anche dalla spiegazione delle modalità di
funzionamento dell’applicazione web. In particolare vi si precisa:
3
come i sistemi interagiscono tra di loro e con quali tipologie di connessioni;
come sono state configurate le connessioni HTTPS con i relativi certificati SSL;
qual è il flusso utilizzato per le ricostruzioni 3D;
quali sono i diversi ruoli degli utenti dell’applicazione e quali sono le pagine alla
quali questi possono accedere.
La trattazione è completata da considerazioni conclusive mirate ad una breve analisi
valutativa del lavoro svolto.
4
1 Intelligenza Artificiale e Reti Neurali
Lo scopo principale di questo capitolo è fornire ad un qualunque lettore una basilare
conoscenza delle tecniche e dei requisiti caratterizzanti i sistemi di intelligenza
artificiale.
In questa sezione iniziale si ritiene, pertanto, utile fornire una definizione chiara di
intelligenza artificiale, perché ne esistono molteplici. Quella accolta e impiegata nel
presente lavoro è quella proposta da un gruppo di esperti della Commissione europea
denominata “high-level expert group on artificial intelligence”, secondo la quale
possono essere definite “intelligenze artificiali” quei sistemi in grado di perseguire un
obiettivo attivando, in modo intelligentemente selettivo, autonome procedure di analisi
dell’ambiente operativo con l’attuazione di conseguenti azioni risolutive.
1.1 Approccio simbolico e percettivo
Ci sono due approcci all’intelligenza artificiale:
1. deduttivo (top-down), anche detto simbolico poiché si vede l’intelligenza come
la capacità di comprendere i simboli. L’idea è quella di dare alla macchina una
conoscenza di base che verrà sfruttata da essa (motore di inferenza) per derivare
nuova conoscenza;
2. percettivo (bottom-up), approccio basato sull’idea che deve essere il sistema a
costruire la conoscenza, cioè non viene data alla macchina una conoscenza di
base, ma vengono dati una serie di esempi quali immagini, che il sistema impara
a conoscere e processare autonomamente.
L’approccio deduttivo non permette di risolvere quei problemi in cui non riusciamo a
dare delle regole di base alla macchina per la loro risoluzione, perciò, in questi casi viene
utilizzato l’approccio percettivo.
Uno dei campi in cui tale approccio sta riscuotendo maggiore successo rispetto al
deduttivo è quello della visione artificiale, argomento oggetto di approfondimento nel
secondo capitolo della presente trattazione. In campo di visione artificiale, infatti,
vengono ampiamente utilizzate le reti neurali in cui la conoscenza è data dai neuroni e
non da qualche regola codificata nella macchina.
5
In virtù di tale costatazione si è cercato di sperimentare lo sviluppo e l’impiego di una
rete neurale per risolvere il problema della stima della profondità di una scena partendo
da viste multiple.
1.2 Proprietà dei sistemi di intelligenza artificiale
L’approccio percettivo non può essere sempre utilizzato. Infatti, i sistemi di intelligenza
artificiale devono avere, se impiegati in aree applicative specifiche, alcune proprietà
imprescindibili, tra queste:
1. Fairness, indica che le scelte fatte dal sistema intelligente non devono essere
discriminatorie. Ad esempio, una chatbot di Microsoft è stata ritirata perché
aveva appreso da alcuni utenti Twitter ad assumere comportamenti scorretti e
violenti
1
.
2. Trasparency, il sistema deve utilizzare un modello che permetta ad un tecnico
specializzato di capirne e prevedere il comportamento in ogni situazione;
3. Verifiability, ossia le proprietà del sistema devono essere verificabili;
4. Explainability, si devono poter fornire le motivazioni delle scelte fatte dal
sistema in un modo comprensibile agli umani.
I sistemi di reti neurali che adottano l’approccio percettivo, all’attuale stato delle
conoscenze, risultano meno interpretabili dei sistemi che impiegano un approccio
simbolico: Queste proprietà potrebbero, dunque, in qualche modo limitare le scelte tra
le reti neurali e i sistemi tradizionali.
Nel sistema di stima della profondità realizzato nel presente lavoro sono state impiegate
delle reti neurali; dunque, non si è reso necessario rispettare le proprietà di cui si è
parlato in precedenza, dalle quali non si potrebbe prescindere se la rete dovesse essere
impiegata in determinati campi applicativi. Ad esempio, se la si dovesse utilizzare in
applicazioni di guida autonoma, si rivelerebbe inadeguata, in quanto non rispetterebbe
tutte le prescrizioni vincolanti del settore.
1
“Microsoft Tay, utente virtuale Microsoft diventa ninfomane e nazista” [27]
6
1.3 Tipologie di apprendimento automatico
Per allenare sistemi di intelligenza artificiale, indipendentemente dall’approccio
utilizzato (percettivo o simbolico), si possono utilizzare diverse tecniche di
apprendimento automatico.
Tale definizione viene impiegata per indicare una tecnica che permette ad una macchina
di apprendere qualcosa, a seguito di immissione di dati, in maniera autonoma.
Esistono diverse tipologie di apprendimento automatico, tra le più comuni troviamo:
Apprendimento supervisionato;
Apprendimento non supervisionato;
Apprendimento mediante rinforzo.
1.3.1 Apprendimento supervisionato
L’apprendimento supervisionato prevede che vengano dati all’algoritmo una serie di
esempi nei quali siano anche presenti le cosiddette “risposte giuste”.
Ad esempio, volendo individuare la tipologia di animale mostrata in una foto, si allena il
modello di machine learning utilizzando immagini delle quali sappiamo a priori il tipo di
animale raffigurato.
Tra i task di apprendimento supervisionato abbiamo la regressione e la classificazione.
Nel presente lavoro è stata utilizzata questa tipologia di allenamento poiché, per
allenare la rete neurale creata, si aveva a disposizione un dataset gratuito e adatto ad
allenarla.
1.3.2 Apprendimento non supervisionato
Creare un dataset con le “risposte giuste” è generalmente molto costoso e richiede
tempi lunghi. Per fortuna alcuni task di machine learning non necessitano delle risposte
giuste. Ad esempio, nei problemi di apprendimento non supervisionato si ha un dataset
senza “risposte giuste”, quello che dovrà fare l’algoritmo è trovare una qualche struttura
nei dati autonomamente.
Un classico problema di apprendimento non supervisionato è quello del clustering. Un
algoritmo potrebbe raggruppare notizie correlate, quindi mettere in relazione articoli di
diversi giornali che si riferiscono alla stessa notizia.
7
1.3.3 Apprendimento mediante rinforzo
L’apprendimento mediante rinforzo permette di raggiungere un comportamento
ottimale a partire da esperienze pregresse. Questo significa che si devono operare delle
scelte, le quali potranno avere risultato positivo o negativo. Tale esito determinerà un
rinforzo conseguenziale che servirà a modificare il comportamento per avvicinarsi a
quello ottimale.
Non si hanno perciò delle risposte esatte, ma premi e punizioni in base al risultato delle
azioni.
Importante è considerare che l’apprendimento mediante rinforzo può essere utilizzato
esclusivamente in quei casi in cui è possibile fare degli errori, proprio perché il sistema
impara dagli errori.
1.4 Reti neurali
Nel seguito della trattazione di questo capitolo verranno approfonditi i componenti e gli
algoritmi di base impiegati nelle reti neurali. Questo permetterà di comprendere ad un
certo livello di astrazione il funzionamento di una rete neurale.
Una rete neurale può essere definita come un “sistema artificiale di elaborazione
dell’informazione che si pone come obiettivo l’emulazione del sistema nervoso animale”
[2].
Essa, in generale, è costituita da un gruppo di neuroni strettamente legati da connessioni
pesate.
Un neurone può essere definito come una unità di computazione che riceve un input da
un canale, esegue delle operazioni sull’input ed invia il risultato su un canale di output.
Ad ogni neurone viene assegnato un peso che quantifica l’importa n z a d e l s u o
contributo.
1.4.1 Percettrone
Il percettrone, ideato nel 1958 dallo psicologo statunitense Frank Rosenblatt, può essere
considerato come il componente di base di una rete neurale.
8
Figura 1 - Modello Perceptron [3]
Nel modello del percettrone mostrato in Figura 1 si ha:
una serie di variabili di input che rappresentano i parametri di ingresso;
si esegue una somma pesata dei parametri di ingresso;
si applica una funzione di attivazione alla somma pesata che determinerà
l’output.
Figura 2 - Funzione di attivazione Heaviside
La funzione di attivazione più semplice è l’Heaviside (Figura 2). L’output della funzione
viene calcolato nel modo seguente:
0 0
1 0
Uno dei problemi di questo modello è l’impossibilità di generali z z a r e m o d e l l i d i
classificazione dove i dati non siano separabili linearmente.
Figura 3 - Problema dello XOR [3]