• Non ci sono risultati.

Deep learning per l'identificazione della fauna selvatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Deep learning per l'identificazione della fauna selvatica"

Copied!
54
0
0

Testo completo

(1)

Università degli Studi di Pisa

Facoltà di Ingegneria

Corso di Laurea Triennale in

Ingegneria delle Telecomunicazioni

Tesi di Laurea

Deep Learning per

l’identificazione della fauna

Relatori: Candidato:

Prof. Ing. Stefano Giordano Alessandro Vaselli

Prof. Ing. Michele Pagano

(2)

A mio fratello, mio padre, mia madre e a tutta la mia famiglia che hanno sempre creduto in me e mi ha sostenuto in questo percorso. A Barbara fonte di ispirazione e grande forza che mi permette di affrontare e superare ogni ostacolo.

(3)

I

Indice

Prefazione ... III

1 Reti Neurali

1.1 Introduzione alle reti neurali e al deep learning 1

1.1.1 Generalità sulle reti neurali ... 1

1.1.2 Ambiti applicativi delle reti neurali ... 6

1.2 Apprendimento in una rete neurale ... 9

1.3 Tipologie realizzative delle reti neurali ... 12

2 Image Recognition

2.1 Introduzione all’image recognition ... 14

2.1.1 Cenni sulla rete Alexnet ... 15

2.1.2 Cenni sulla rete Googlenet ... 18

2.2 Confronto tra Alexnet e Googlenet ... 23

2.3 Identificazione della fauna selvatica ... 25

3 Edge/Cloud computing

3.1 Cenni di Edge/Cloud computing ... 33 3.2 Analisi dell’approccio Edge/Cloud computing 36

(4)

II

4 Risultati e conclusioni

Documentazione ... 42

Bibliografia ... 47

(5)

III

Prefazione

Negli ultimi anni è aumentata sempre più la richiesta di dispositivi intelligenti e per soddisfare tale richiesta è cresciuta in maniera esponenziale la ricerca e lo sviluppo nell’ambito dell’intelligenza artificiale. In questo contesto, le reti neurali e il Deep learning stanno subendo uno sviluppo fortissimo, in quanto con le nuove tecnologie e centri di calcolo sempre più performanti, si riesce ad effettuare operazioni che fino ad un decennio fa sembravano impossibili a causa di tempi di processing troppo elevati.

Nel caso specifico, analizzeremo il problema dell’image recognition sfruttando tecniche di deep learning. L’image recognition consiste nell’individuare oggetti, animali, persone, trame specifiche, dette pattern, presenti in un immagine o in un video. Una volta individuato ciò che serve, possiamo poi attivare un sistema o un servizio legato a ciò che stiamo osservando, come per esempio l’arresto immediato di un veicolo in caso di pericolo imminente. Si può sfruttare l’image recognition anche in ambito medico per fare diagnosi a partire da una

(6)

IV

risonanza magnetica, da una PET, raggi X e cosi via oppure per riconoscere un animale nocivo o pericoloso in avvicinamento ad un confine.

In questa tesi inoltre si affronterà brevemente la possibilità di sfruttare una configurazione Edge/Cloud che permette di ottenere velocità nell’addestramento delle reti neurali, capacità di operare real-time, elasticità, resistenza dell’intero sistema in caso di guasti. Tale configurazione permette di avere costi ridotti grazie all’utilizzo di strumenti meno costosi nella regione di sensing e nella regione di Edge. E’ stato inoltre simulato un sistema di riconoscimento della fauna grazie all’utilizzo di codice Matlab, con il fine di trasformare una rete neurale pre-addestrata al riconoscimento di oggetti comuni, come penne, matite, finestre, ecc… , in una rete addestrata strettamente all’identificazione di daini,cinghiali e lupi in ambito boschivo.

(7)

1

1 Reti neurali

1.1 Introduzione alle reti neurali

deep learning

Le reti neurali nascono prendendo spunto dai neuroni e dal cervello umano.

Fig 1.1 Illustrazione schematica di un neurone biologico

I neuroni umani sono approssimabili a delle elettricamente attive (Nodi) rappresentabili un interruttore ON/OFF la cui uscita (Output) funzione di uno o più ingressi (Input)

Introduzione alle reti neurali e al

Le reti neurali nascono prendendo spunto dai

Illustrazione schematica di un neurone biologico

a delle celle rappresentabili come (Output) è (Input); inoltre

(8)

2

ognuno di essi può essere più o meno influente a seconda del peso associato.

La somma pesata degli ingressi costituisce il valore tramite il quale si valuta la funzione di attivazione di ogni nodo, ciò determina se il passaggio dallo stato OFF allo stato ON può avvenire.

Una rete neurale viene realizzata collegando le uscite del livello precedente, con gli ingressi dello stato successivo, creando così una struttura in cascata. Ogni stadio della cascata è detto strato della rete o layer. I neuroni degli stadi centrali sono detti neuroni nascosti (Hidden).

(9)

3

Fig1.2 Rete neurale ad uno strato con 4 input, 3 output e 3 unità hidden

Le funzioni di attivazione possono essere di più tipi, ad esempio funzioni lineari,funzioni non lineari come tangenti iperboliche,funzioni softmax o funzioni ReLU (Rectified Linear Unit)

(10)

4

Fig 1.3 Schematizzazione di un nodo di una rete neurale

Se la funzione di attivazione è una funzione a gradino viene detta Perceptron.

Fig 1.4 Funzione di attivazione a gradino

Un’altra funzione spesso utilizzata nella costruzione delle reti neurali è la funzione

Schematizzazione di un nodo di una rete neurale

Se la funzione di attivazione è una funzione a

Funzione di attivazione a gradino

Un’altra funzione spesso utilizzata nella costruzione delle reti neurali è la funzione

(11)

5

sigmoide è può essere rappresentata seguente funzione:

𝜑(𝑣) = 1 1 + 𝑒

dove il parametro 𝑎 rappresenta la pendenza della funzione. Maggiore è il parametro, maggiore la pendenza.

Fig 1.5 funzione sigmoide al variare del parametro a

sigmoide è può essere rappresentata con la

rappresenta la pendenza della maggiore sarà

(12)

6

Le reti neurali trovano impiego in ambito di:  Riconoscimento delle immagini

 Elaborazione del linguaggio

 Riconoscimento automatico del discorso  Diagnostica

 Controlli nella produzione e nei processi industriali

 Classificazione

 Predizioni in ambito economico

Ad esempio, nei sistemi di controllo industriale le reti neurali possono costituire un supporto fondamentale in grado di fornire le soluzioni per il controllo qualità della produzione. Questo ovviamente dopo aver definito a priori, le tolleranze massime accettabili sui prodotti realizzati.

E’ sufficiente far osservare al sistema vari esempi di prodotti il cui standard qualitativo sia già stato riconosciuto, segnalandolo opportunamente alla rete. A quel punto la rete neurale stessa costruirà al suo "interno", tramite un training opportuno, un modello di tolleranze per poter giudicare i successivi pezzi prodotti, associando infine il tutto ad un sistema optomeccanico atto ad individuare e scartare i pezzi prodotti non conformi agli standard richiesti.

(13)

7

Un altro esempio applicativo di una rete neurale è il riconoscimento di pattern.

Alla rete, sottoposta ad una sessione di training iniziale, vengono presentati ripetutamente un insieme di pattern di addestramento con specificato per ognuno di essi la categoria a cui appartengono. Conclusa questa fase si può procedere al riconoscimento vero e proprio e anche quando verrà presentato un pattern sconosciuto, ma appartenete ad una stessa categoria del set di apprendimento, la rete sarà in grado di classificarla grazie alle informazioni apprese durante la fase di training. Questa capacità di poter apprendere più livelli di rappresentazioni e di astrazioni e la possibilità di apprendere informazioni da dati come immagini, testo e suoni, non è più machine learning, ma è Deep Learning il quale ci permette di raggiungere l’obiettivo principale per il quale è stata fatta ricerca in questo campo: l’intelligenza artificiale. Tutto ciò può essere utilizzato, ad esempio, per riconoscere volti o altre parti del corpo all'interno di un grande database fotografico: un compito arduo e lungo da svolgere per un solo computer, ma che può essere svolto da una rete neurale artificiale in un tempo relativamente breve.

(14)

8

Fig 1.6 Esempio di un set di pattern

Nel caso preso in esame utilizzeremo le reti neurali principi del deep learning per effettuare riconoscimento di animali come cinghiali,lupi e daini all’interno di foto o video.

I primi strati della rete neurale utilizzata, servono per identificare ed estrarre particolari pattern

immagini, mentre gli strati finali sfrutteranno i risultati degli strati precedenti per effettuare

classificazione, che darà come output un’insieme di score relativi a cosa possa essere presente

nelle immagini o video analizzati.

Per poter essere precisi ed accurati è necessario rete utilizzata sia molto profonda, ovvero costituita da molti strati di estrazione di pattern (ogni strato estrae un dettaglio diverso), seguiti da strati convoluzionali che fungono da filtri e da strati di pooling, necessari per ridurre la quantità di dati generati durante l’elaborazione, che rischierebbero di aumentare Nel caso preso in esame utilizzeremo le reti neurali e i principi del deep learning per effettuare riconoscimento di animali come cinghiali,lupi e daini servono per pattern dalle gli strati finali sfrutteranno i risultati degli strati precedenti per effettuare una che darà come output un’insieme di o meno è necessario che la costituita da i estrazione di pattern (ogni strato estrae seguiti da strati convoluzionali , necessari generati durante rischierebbero di aumentare

(15)

9

esponenzialmente fino a rendere impraticabile ogni altra operazione a causa della richiesta di calcolatori e memorie enormi per operare con migliaia e migliaia di ingressi e dati.

1.2 Apprendimento in una rete neurale

L’aspetto principale e fondamentale delle reti neurali e del deep learning è la possibilità di imparare e apprendere (training) con lo scopo di ottimizzare sempre di più la loro risposta ai vari ingressi.

Il training è il processo tramite il quale la rete varia il proprio comportamento grazie a variazioni adattative e iterative dei pesi attribuiti ad ogni ingresso e ad ogni connessione tra i vari strati della rete (l’equivalente delle connessioni tra sinapsi biologiche), con lo scopo di rendere l’output finale quanto più possibile simile ad un certo risultato desiderato. Ogni iterazione del processo di training è detta Epoca.

Importante al fine del training è la valutazione dell’errore commesso tra il risultato ottenuto al termine di ogni iterazione di allenamento e il risultato voluto. Solitamente questo calcolo viene effettuato tramite la tecnica della discesa del gradiente (riducendo in questo modo l’errore quadratico commesso tra valore stimato e valore reale desiderato).

(16)

10

I metodi di apprendimento più importanti sono l’apprendimento supervisionato (Supervised learning) e quello non supervisionato (Unsupervised learning). Analizzeremo ora l’apprendimento supervisionato dal momento che è stato utilizzato largamente durante la fase di sperimentazione.

Questa tipologia di addestramento viene utilizzata quando si dispone di un set per l’addestramento (training set) comprendente ogni tipologia di ingresso necessaria alla rete ed ogni corrispondente valore di uscita.

Tramite degli algoritmi, i dati del training set vengono utilizzati come input per la rete, che cerca di approssimare le relazioni incognite tra input e output, modificando i vari parametri della rete come ad esempio i pesi.

Una volta conclusa questa fase, la rete sarà in grado di effettuare previsioni e classificazioni basandosi su ciò che ha appreso in precedenza, risultando più precisa ed efficace, tanto più sono grandi i set di addestramento. Infatti la stessa rete opera meglio se allenata con un set di 10000 immagini contro la stessa rete allenata con sole 1000 immagini.

(17)

11

Fig 1.7 Diagramma del Supervised learning

Un algoritmo di addestramento supervisionato molto diffuso è l’algoritmo di back propagation che suddivide l’allenamento in due fasi diverse.

Nella prima fase, ogni elemento del set di training viene presentato in ingresso, calcolando per ognuno di essi la risposta della rete e l’errore commesso da ogni nodo dello strato di uscita (Forward phase).

La seconda e ultima fase, propaga dall’uscita verso l’ingresso, i segnali di errore attraverso i quali vengono modificati i pesi attribuiti ad ogni connessione tra nodi (Backward phase).

Questo algoritmo soffre però alcuni difetti, come la lenta convergenza o l’instabilità della rete sotto particolari condizioni sfavorevoli.

(18)

12

1.3 Tipologie realizzative delle reti neurali

Le tipologie realizzative delle reti neurali, dipendono strettamente dal modo in cui sono collegati i vari livelli; ciò influenza pesantemente la scelta dell’algoritmo di addestramento e i risultati ottenuti dalla rete stessa. Inoltre, la scelta della struttura interna dipende dalla problematica che vogliamo risolvere, dal momento che non tutti i problemi possono essere risolti con una sola tipologia di reti. Le strutture più utilizzate sono:

 Feed Forward Network (FFN)  Recurrent Neural Network (RNN)  Auto Encoder (AE)

 Boltzmann Machine (BM)

 Restricted Boltzmann Machine (RBM)  Deep Convolutional Network (DCN)

(19)

13

Fig 1.8 Grafi di alcune reti neurali

Per poter effettuare l’image recognition,

utilizzate principalmente le reti DCN e le reti RBM dal momento che, le prime risultano essere molto efficaci durante la fase di elaborazione delle immagini, ricerca dei pattern, filtraggio e fase di pooling, mentre le seconde sono molto efficaci ed efficenti come classificatori e quindi come livello finale della rete.

Vengono utilizzate le reti RBM anziché le BM

nonostante il minor numero di collegamenti tra i nodi risultano essere più veloci ed efficaci durante la fase di training e nell’applicazione dell’algoritmo della discesa del gradiente. Questo vantaggio risulta determinante poiché gran parte della potenza di calcolo richiesta per questi metodi è impegnata nella fase di training.

vengono utilizzate principalmente le reti DCN e le reti RBM, le prime risultano essere molto efficaci durante la fase di elaborazione delle immagini, ricerca dei pattern, filtraggio e fase di mentre le seconde sono molto efficaci ed efficenti come classificatori e quindi come livello Vengono utilizzate le reti RBM anziché le BM, perché nonostante il minor numero di collegamenti tra i nodi risultano essere più veloci ed efficaci durante la fase di training e nell’applicazione dell’algoritmo della sto vantaggio risulta determinante poiché gran parte della potenza di calcolo richiesta per questi metodi è impegnata nella

(20)

14

2 Image recognition

2.1 Introduzione all’image recognition

L’image recognition è quella tecnica che permette di poter riconoscere oggetti, animali o persone presenti all’interno di immagini o video.

Grazie al forte sviluppo dell’image recognition e del deep learning, molti settori come quello industriale o medico si stanno evolvendo raggiungendo obiettivi fino a qualche decennio fa non raggiungibili.

Per esempio l’industria automobilistica investe e sfrutta sempre più queste tecnologie, al fine di garantire standard di sicurezza e guida assistita migliori, fino a raggiungere il sogno della guida automatica senza autista.

In questo ambito, l’image recognition è la chiave per poter permettere alle auto di “leggere” e riconoscere cartelli stradali per modificare il proprio comportamento in base alle regole stradali. Questo sistema permette di evitare pericolosi incidenti, riconoscendo ostacoli attorno a sé, anche quelli che potrebbero presentarsi all’improvviso reagendo con prontezza assoluta.

(21)

15

Nel caso preso in esame in questa tesi, utilizzeremo tutto quanto descritto in precedenza per individuare ed identificare animali come lupi, cinghiali e daini in immagini e video raccolti grazie a fotocamere nascoste in un contesto boschivo.

Il poter riconoscere questi animali ci permette di attivare in futuro, servizi come protezione dei confini dei territori, censimento della fauna o attivazione intelligente di registrazione video con lo scopo di evitare lunghe sequenze prive di animali che risulterebbero solo una grande, inutile quantità di dati raccolti e trasmessi in rete occupando preziose risorse e tempo di trasmissione.

Inoltre, se addestrate correttamente, si può effettuare il riconoscimento in ambito diurno e notturno in condizioni climatiche svariate senza richiedere costosissime tecnologie.

Nel corso degli anni si sono succedute reti neurali profonde, capaci di riconoscere qualsiasi oggetto o animale con precisioni sempre maggiori, tra esse spiccano le reti AlexNet e GoogleNet.

AlexNet (o SuperVision) è una Deep Convolutional Neural Network sviluppata da Alex Krizhevsky,Ilya Sutskever e Geoffrey E.Hinton, nota per aver vinto l’ImageNet Large Scale Visual Recognition Challenge (ILSVRC) nel 2012.

(22)

16

Fig 2.1 Architettura interna di AlexNet

AlexNet è costituita da cinque strati convoluzionali, che si occupano della elaborazione dei dati in ingresso, seguiti da tre strati completamente connessi responsabili della fase di classificazione, da circa 650.000 neuroni, 630 milioni di connessioni interne e convoluzionali, borazione dei dati in seguiti da tre strati completamente connessi classificazione, da circa 650.000 neuroni, 630 milioni di connessioni interne e

(23)

17

da oltre 60 milioni di parametri ed è progettata per lavorare con Gpu.

Gli ingressi di questa rete sono costituiti da sole immagini aventi 227x227 pixel di grandezza e caratterizzate dalla scala dei colori RGB.(Per semplicità diremo che l’ingresso è del formato 227x227x3 dove 3 indica il numero dei colori necessari a descrivere l’immagine, in questo caso il rosso (R),verde (G) e blu (B)).

Inoltre i neuroni presenti nei vari strati convoluzionali hanno tutti come funzione di attivazione una funzione ReLU del tipo 𝑓(𝑥) = max (𝑜, 𝑥), che permette un addestramento fino a sei volte più veloce di una rete realizzata con neuroni aventi funzione di attivazione 𝑓(𝑥) = 𝑡𝑎𝑛ℎ (𝑥).

Fig 2.2 Funzioni di attivazione tanh e ReLU

ri ed è progettata per Gli ingressi di questa rete sono costituiti da sole immagini aventi 227x227 pixel di grandezza e caratterizzate dalla scala dei colori RGB.(Per semplicità diremo che l’ingresso è del formato il numero dei colori necessari a descrivere l’immagine, in questo caso il Inoltre i neuroni presenti nei vari strati convoluzionali hanno tutti come funzione di attivazione una funzione ermette un addestramento fino a sei volte più veloce di una rete realizzata con neuroni aventi funzione di attivazione

(24)

18

Fig 2.3 Grafico della velocità di convergenza al risultato.In linea continua la velocità convergenza della funzione ReLU in linea

tratteggiata la velocità di convergenza della funzione tanh

Da sottolineare che la presenza di oltre sette strati rende questa rete neurale una rete profonda. La profondità della rete è proprio la chiave per ottenere risultati precisi, a costo però di costi computazionali maggiori.

Oltre ad AlexNet è stata presa in analisi la più recente rete neurale GoogleNet (vincitrice dell’ILSVRC 2014) sviluppata da C.Szegedy, W.Liu, Y.Jia, P.Sermanet, S.Reed, D.Anguelov, D.Erhan, V.Vanhoucke, A.Rabinovich.

(25)

19

GoogleNet è una rete neurale molto profonda, realizzata da 22 strati che la rendono ideale per compiti come classificazione ed identificazione.

Fig 2.4 Tabella delle caratteristiche interne di GoogleNet

Nella tabella sopra riportata possiamo individuare dei campi Inception. Essi sono blocchi innovativi che permettono di approfondire la rete senza causare una crescita smisurata di dati e di potenza computazionale richiesta.

L’idea alla base di Inception (versione naïve) è quella di prendere i dati di uno strato precedente e farlo elaborare, in parallelo, da 4 diversi blocchi (“1x1 convolution”,”3x3 convolution”,”5x5 convolution” e “3x3 max pooling”) le cui uscite saranno mandate ad un filtro che concatenerà i vari risultati.

(26)

20

Fig 2.5 Inception versione naïve

Questa tecnica riesce a superare il problema delle strutture dati sparse, ma non riduce veramente l’incremento degli output prodotti attraversando ogni strato, anzi ne fa crescere esponenzialmente il numero fino a causare un fallimento della tecnica e dell’operazione in generale.

Si è passati quindi alla seconda versione, quella attuale, che effettivamente riesce a contenere il fenomeno della crescita smisurata di output.

Questo avviene ponendo prima dei blocchi convoluzionali 3x3, 5x5 e in uscita al blocco di 3x3 max pooling, dei blocchi convoluzionali 1x1 che riducono il numero di dati in ingresso, di conseguenza le dimensioni dei vari output.

riesce a superare il problema delle ma non riduce veramente l’incremento degli output prodotti attraversando ogni esponenzialmente il numero fino a causare un fallimento della tecnica e Si è passati quindi alla seconda versione, quella attuale, che effettivamente riesce a contenere il dei blocchi in uscita al blocco di 3x3 max pooling, dei blocchi convoluzionali 1x1 che di conseguenza

(27)

21

Fig 2.6 Inception con pre-riduzione delle dimensioni

Tutti i neuroni nei blocchi di convoluzione, anche quelli all’interno dei blocchi di Inception, hanno funzione di attivazione le ReLU.

Un altro punto di forza di GoogleNet è la capacità di operare non solo con CPU in parallelo, ma anche con le GPU, le quali, grazie alle loro caratteristiche risultano molto più veloci ed efficaci nella fase di training, riducendo sensibilmente i tempi richiesti (4% di riduzione dei tempi necessari ogni 8 epoche).

I dati in input devono avere la caratteristica di essere immagini 224x224x3 (Colori definiti dalla scala RGB), pertanto ognuna di esse prima di essere elaborata deve subire un’operazione di riduzione di grandezza (pre-scaling).

e delle dimensioni

Tutti i neuroni nei blocchi di convoluzione, anche , hanno come

capacità di ma anche con alle loro caratteristiche risultano molto più veloci ed efficaci nella fase di sensibilmente i tempi richiesti (4% di riduzione dei tempi necessari ogni 8 epoche).

aratteristica di essere immagini 224x224x3 (Colori definiti dalla scala prima di essere elaborata deve subire un’operazione di riduzione di

(28)

22

(29)

23

L’addestramento della rete avviene tramite l’algoritmo di discesa del gradiente, ma per poter garantire una convergenza del risultato è necessario introdurre dei classificatori nei livelli intermedi della rete, per sostenere e rigenerare il valore del gradiente nella fase di backward.

Questi classificatori sono realizzati con piccole reti convoluzionali poste in testa agli output dei moduli Inception 4a e 4d. (Vedere Fig 2.4).

Durante la fase di training, i risultati relativi alle perdite (loss) di questi classificatori ausiliari, vengono aggiunti alla perdita totale della rete, con un peso solitamente pari a 0.3, mentre, durante la fase di identificazione e classificazione, tali dati saranno scartati a priori.

2.2 Confronto tra AlexNet e GoogleNet

Dal punto di vista strutturale GoogleNet gode di una profondità molto maggiore rispetto ad AlexNet (22 livelli contro appena 8), che permette alla prima di essere molto più precisa ed accurata in fase di identificazione.

La maggiore profondità della rete potrebbe risultare svantaggiosa per GoogleNet, dal punto di vista della velocità di esecuzione e velocità di training, ma come visto in precedenza, i blocchi Inception snelliscono le

(30)

24

prestazioni permettendo la possibilità di analizzare video in realtime fino a 30 FPS senza alcun problema. GoogleNet pertanto, risulta una scelta ideale per effettuare image recognition, dal momento che rispetto ad AlexNet è in grado di poter discriminare più dettagli, riducendo cosi la possibilità di falsi allarmi o errate identificazioni. Inoltre non sacrifica l’aspetto real-time mantenendo contenuti i costi richiesti per sostenere la potenza di calcolo, rappresentando quindi un upgrade tecnologico importante a bassa differenza di costo tra le due implementazioni.

Fig 2.8 Tabella comparativa delle prestazioni di alcune reti neurali partecipanti al ILSVRC dal 2012 al 2014

In virtù dei risultati sopra citati GoogleNet è stata scelta come rete neurale per la fase di sperimentazione.

(31)

25

2.3 Identificazione della fauna selvatica

La fase sperimentale della tesi si è occupata di identificare lupi, cinghiali e daini all’interno di foto e video.

Inizialmente è stata effettuata una ricerca su come poter implementare algoritmi di deep learning e quindi una ricerca del software più adatto. Le scelte possibili sono molte come ad esempio Tensorflow, Caffè, Matlab, OpenCv, Torch e molti altri ma alla fine è stato scelto di procedere con Matlab.

Dopo di che sono stati analizzate le varie possibilità per quanto riguarda la scelta della rete neurale da utilizzare.

Innanzi tutto sono state confrontate le reti AlexNet e GoogleNet, fornite come Add-On di Matlab, risultate essere già addestrate per un compito di recognition generico. Il confronto è avvenuto comparando gli score delle due reti di fronte ad uno stessa immagine, notando che AlexNet risultava già meno precisa (score troppo bassi o sbagliando totalmente l’identificazione) rispetto alla rete concorrente Googlenet.

(32)

26

Fig 2.9 Cucciolo di lupo bianco analizzato da AlexNet pre addestrata

L’esempio di fig 2.9 ci dà un idea dell’errore commesso dalla rete AlexNet nella versione pre addestrata. Lo score assegnato all’immagine è pari al 46,88% per la lince, risultato non soddisfacente non solo per la bassissima percentuale ma soprattutto per l’errata etichetta “Lince” anziché lupo o lupo bianco. GoogleNet invece riesce a riconoscere esattamente che animale stiamo analizzando con una percentuale maggiore rispetto ad AlexNet (64,63%) ma ancora insoddisfacente come score.

Cucciolo di lupo bianco analizzato da AlexNet

pre-di fig 2.9 ci dà un idea dell’errore commesso dalla rete AlexNet nella versione pre-addestrata. Lo score assegnato all’immagine è pari al 46,88% per la lince, risultato non soddisfacente non solo per la bassissima percentuale ma soprattutto per

ichetta “Lince” anziché lupo o lupo bianco. GoogleNet invece riesce a riconoscere esattamente che animale stiamo analizzando con una percentuale maggiore rispetto ad AlexNet (64,63%) ma ancora

(33)

27

Fig 2.10 Cucciolo di lupo bianco analizzato da GoogleNet pre addestrata

Dal punto di vista della capacità di distinguere i vari animali, entrambe le reti pre-addestrate

rilevate efficaci con i cinghiali, sbagliando in pochissimi casi il riconoscimento vero e proprio, meno ottimali nel caso dei lupi e molto male per quanto riguarda i daini dal momento che il loro training generico non prevedeva i daini come possibile risultato finale, adattando quindi l’uscita al risultato più simile loro conosciuto.

analizzato da GoogleNet

pre-Dal punto di vista della capacità di distinguere i vari si sono rilevate efficaci con i cinghiali, sbagliando in pochissimi casi il riconoscimento vero e proprio, nel caso dei lupi e molto male per quanto riguarda i daini dal momento che il loro training generico non prevedeva i daini come possibile risultato finale, adattando quindi l’uscita al risultato

(34)

28

Fig 2.11 Daino analizzato dalla rete GoogleNet pre-addestrata

Nel esempio di fig 2.11 viene assegnato lo score del 28,27% per impala, un mammifero artiodattilo della famiglia dei bovidi, quindi una famiglia totalmente diversa da quella del daino essendo un cervide.

Fig 2.12 Foto di un impala

addestrata

Nel esempio di fig 2.11 viene assegnato lo score del un mammifero artiodattilo della , quindi una famiglia totalmente diversa da quella del daino essendo un cervide.

(35)

29

Una volta terminata la fase di confronto ed aver scelto GoogleNet come base di partenza per le successive fasi della parte sperimentale è stato effettuato un nuovo training della rete, molto più specifico per il nostro ambito.

In pratica, l’addestramento ha comportato la perdita di ogni conoscenza precedente con conseguente perdita di ogni etichetta conosciuta e tramite l’analisi di un set di apprendimento la rete ha imparato nuove etichette più adatte al nostro esperimento.

Per poter procedere al nuovo addestramento è stato necessario suddividere in varie cartelle le immagini relative ad ogni futura etichetta da noi voluta, quindi è stata creata una cartella “daino” contenente tutte le immagini di daini del set di addestramento, una cartella “lupo” con tutte le immagini di lupi,una cartella “cinghiale” con tutte le immagini dei cinghiali ed infine una cartella “scenario” contenenti tutti sfondi boschivi privi di animali.

Quest’ultima cartella è stata inserita in un secondo momento per poter rendere migliore e più efficace l’intero sistema, dal momento che con solo le tre etichette relative agli animali, la rete neurale etichettava tutto ciò che vedeva come lupo,cinghiale o daino durante la fase di osservazione successiva all’addestramento.

(36)

30

L’osservazione è stata realizzata utilizzando ancora codice Matlab e una webcam collegata tramite porta USB del computer su cui girava Matlab. In seguito, eseguendo il codice Matlab per l’image recognition real-time, realizzato in fase di sperimentazione, abbiamo potuto analizzare pure video ripresi dalla webcam e non più solo fotografie o immagini statiche. Il vantaggio di avere etichette pilotate dal nome delle cartelle in cui sono salvate le immagini, permette una gestione agile ed elastica di ciò che vogliamo che il sistema riconosca o meno. Infatti nel caso in cui dovessimo aggiungere un quarto animale, basterà semplicemente aggiungere una cartella oltre a quelle già esistenti e inserirvi un numero abbastanza elevato di immagini per costituire un dataset di training adeguato. Ciò comporterà, solo nella fase di training, un allungamento dei tempi richiesti.

Una volta completata la fase di addestramento è stato effettuato un test, con immagini escluse dal dataset di allenamento per non falsare i risultati e per verificare l’effettivo miglioramento degli score assegnati.

(37)

31

Fig 2.13 Cucciolo di lupo bianco analizzato da GoogleNet sperimentale

Come si può notare dalla Fig 2.13 la rete identifica correttamente la presenza di un lupo e riesce a assegnare un valore superiore al 99%, un miglioramento rispetto a GoogleNet pre-addestrata del 34% circa.

I miglioramenti sono stati notati in tutte le altre categorie, ma il più significativo è quello ottenuto per i daini dal momento che siamo riusciti, non solo ad ottenere score molto alti, ma soprattutto la corretta etichetta (inizialmente si otteneva come etichetta Impala).

Cucciolo di lupo bianco analizzato da GoogleNet

Come si può notare dalla Fig 2.13 la rete identifica correttamente la presenza di un lupo e riesce ad assegnare un valore superiore al 99%, un addestrata del I miglioramenti sono stati notati in tutte le altre ma il più significativo è quello ottenuto per non solo ad prattutto la corretta nizialmente si otteneva come etichetta

(38)

32

Fig 2.14 Daino analizzato dalla rete GoogleNet sperimentale

Effettuando test con varie immagini esposte a

ore del giorno, si scopre che la rete neurale riesce comunque ad essere operativa subendo un degrado delle prestazioni minimo e può funzionare anche nel periodo notturno utilizzando fotocamere ad infrarossi anziché normali fotocamere.

Daino analizzato dalla rete GoogleNet sperimentale

esposte a diverse si scopre che la rete neurale riesce comunque ad essere operativa subendo un degrado e può funzionare anche nel utilizzando fotocamere ad infrarossi

(39)

33

3 Edge/Cloud Computing

3.1 Cenni di Edge/Cloud Computing

Al giorno d’oggi si tende a memorizzare dati non più unicamente nei nostri dispositivi, ma anche e sempre di più, nei Cloud.

Il cloud computing può essere pensato come una “nuvola informatica” costituita da un insieme di risorse che vengono allocate on-demand in base alle esigenze di ogni utente. Una volta allocate queste risorse, l’utente le configurerà a suo piacimento e quando non saranno più necessarie o richieste, queste saranno riconfigurate allo stato iniziale e messe nuovamente a disposizione per gli altri utenti.

Questo approccio è vantaggioso dal momento che tutte le risorse come file, calcolatori, memorie di massa, non devono essere per forza presenti nel luogo in cui verranno utilizzate, dove la loro presenza potrebbe risultare del tutto impossibile o poco adatta.

(40)

34

Fig 3.1 Cloud Computing

Nel nostro caso in esame, senza la possibilità di sfruttare il paradigma del cloud computing,

necessario avere potentissimi centri di calcolo per il training e recognition nei pressi di dove vengono raccolti i nostri dati, ovvero in zone boschive mantenendo sempre un collegamento diretto

con tutte le telecamere sparse nel territor controllo.

Grazie al cloud, invece possiamo eseguire la fase di training ed elaborazione a distanza mantenendo nella possibilità di , sarebbe necessario avere potentissimi centri di calcolo per il di dove vengono zone boschive un collegamento diretto e attivo nel territorio sotto invece possiamo eseguire la fase di training ed elaborazione a distanza mantenendo nella

(41)

35

zona boschiva solo le fotocamere e i sistemi di trasmissione dati. Questo approccio però non è sempre ottimale dato che si possono presentare

problematiche, come l’eccessivo tempo di trasmissione, l’eccessiva occupazione del canale trasmissivo (e di conseguenza di energia) e instabilità della trasmissioni. Si è pensato quindi di suddividere ulteriormente il problema utilizzando un nuovo paradigma: l’edge computing.

L’edge computing sostanzialmente si preoccupa di portare le risorse vicine a dove saranno utilizzate, sfruttando sempre il principio del cloud, ovvero di tenere separata la catena di acquisizione dati da quella di elaborazione.

Fig 3.2 Schema sistema edge/cloud computing

zona boschiva solo le fotocamere e i sistemi di trasmissione dati. Questo approccio però non è sempre presentare pesanti come l’eccessivo tempo di trasmissione, l’eccessiva occupazione del canale trasmissivo (e di conseguenza di energia) e instabilità Si è pensato quindi di suddividere do un nuovo L’edge computing sostanzialmente si preoccupa di icine a dove saranno utilizzate, ovvero di tenere separata la catena di acquisizione dati da quella

(42)

36

3.2 Analisi dell’approccio Edge/Cloud

computing

L’idea quindi è quella di suddividere il sistema in tre parti principali anziché due: una parte di sensori e fotocamere, una parte di identificazione e una parte di addestramento che saranno localizzate nella zona di sensing, nella regione di edge e nella regione di Cloud. Così facendo, nella regione di sensing si avrà bisogno di installare fotocamere, fotocamere ad infrarossi per l’acquisizione notturna delle immagini, apparati capaci di effettuare il riconoscimento e allo stesso tempo in grado di trasmettere foto e video acquisiti nella sezione di Edge. Data la non pesantezza delle operazioni da effettuare è possibile utilizzare un dispositivo Raspberry PI, capace di ospitare le due fotocamere e dotato di base di connettività wireless LAN e Bluetooth Low Energy (BLE). Nella regione di edge, saranno ricevute le immagini e i video, tramite collegamenti a bassa latenza e grande larghezza di banda, che saranno raccolti ed inviati nella sezione di cloud per essere etichettati in automatico. Una volta eseguita l’etichettatura i dati saranno poi ritrasmessi all’edge pronti per la fase di training della rete neurale, svolta proprio in questa regione. Il risultato del training viene quindi trasmesso ai dispositivi nella regione di sensing per poter effettuare rivelazioni più accurate. La trasmissione tra edge e cloud avviene

(43)

37

tramite un link ad alta latenza, con larghezza di banda variabile, ma mai grande come quella disponibile tra edge e sensing. Questo collegamento viene utilizzato per il backup dei dati a lungo termine e per processing on-demand con tolleranza ai ritardi come il training della rete. Il cloud sarà ibrido, ovvero sarà in parte privato e in parte pubblico. Nel cloud privato verranno mantenute in memoria le immagini e i video raccolti mentre nel cloud pubblico saranno inviate le immagini prive di etichette per subire l’operazione di etichettatura. Viene effettuata questa divisione dal momento che il costo richiesto per l’etichettatura in un cloud pubblico è irrisorio rispetto a quello richiesto per la memorizzazione dei dati (storage). L’etichettatura automatica nel cloud può essere effettuata se i risultati provenienti da tale regione sono corretti al 100%. Queste prestazioni non sono raggiungibili al momento, pertanto per avere un’affidabilità sui dati è necessario utilizzare nel cloud varie reti neurali di diversa profondità e tipologia. A questo punto se la maggioranza di esse identifica un risultato particolare con altissima precisione possiamo supporre che l’identificazione sia giusta e possiamo procedere con l’etichettatura automatica.

Inoltre la struttura del sistema è elastica, infatti possono essere aggiunti o tolti sensori senza problemi, possiamo modificare il numero e la qualità dei dispositivi nelle regioni di edge e cloud senza che

(44)

38

siano richieste conoscenze tecniche profonde

richiesto modificare il funzionamento del sistema stesso. In più abbiamo trasparenza perché gli utenti, che acquisiscono dati dalla regione di edge per scopi personali o per ricerca, non avvertiranno mai le modifiche apportate alla struttura interna del sistem Inoltre l’intero sistema è tollerante ai guasti dal momento che è capace di attivare risorse di emergenza in tempi molto brevi e quindi riconfigurarsi tornando allo stato precedente al guasto.

Fig 3.3 Edge/cloud computing

o che sia iesto modificare il funzionamento del sistema perché gli utenti, per scopi non avvertiranno mai le modifiche apportate alla struttura interna del sistema.

nte ai guasti dal di attivare risorse di emergenza e quindi riconfigurarsi tornando

(45)

39

4 Risultati e conclusioni

4.1 Analisi dei risultati

L’utilizzo del deep learning e delle reti neurali rappresentano potentissimi mezzi per effettuare compiti di image recognition che fino a pochi decenni fa erano irrealizzabili. Inoltre, la forte ricerca dietro alla creazione di reti neurali sempre più profonde, sta permettendo di ottenere score molto precisi ed errori come falso allarme o mancata identificazione sempre più bassi. Nello specifico sono state studiate le reti AlexNet e GoogleNet, dalla quale è stata sviluppata una versione sperimentale specifica per l’identificazione di lupi, cinghiali e daini. Per ottenere prestazioni ideali è necessario effettuare un training con un dataset molto più ampio di quello usato in fase sperimentale (circa mille/duemila immagini per categoria), che potrebbe richiedere tempi lunghi per addestramento della rete. La combinazione di queste tecniche con la possibilità di adottare paradigmi di edge/cloud computing permette al sistema in generale, di essere elastico sia dal punto di vista operativo che strutturale, robusto ai guasti, efficiente dal punto di vista energetico e veloce nella fase di addestramento senza appesantire o bloccare l’identificazione grazie alla separazione delle due operazioni (come detto in precedenza l’identificazione e l’addestramento

(46)

40

avvengono in regioni separate). Inoltre è stata considerata l’idea di poter rendere il sistema completamente automatico eseguendo l’etichettatura delle nuove immagini nella sezione di cloud pubblico. Ciò rende possibile un aggiornamento continuo della rete che con il passare del tempo avrà performance sempre migliori e la capacità di essere adattivo nel caso in cui si presentino spesso oggetti o animali sconosciuti alla rete stessa (essi infatti saranno riconosciuti ed etichettati nel cloud pubblico e in seguito utilizzati nella regione di edge come elementi del training set).

Confrontando GoogleNet con la sua versione sperimentale, si è ottenuto maggiore precisione sia nell’identificazione dei lupi che dei daini che dei cinghiali, si è ottenuta la capacità di riconoscere i daini visto che la versione base di GoogleNet attribuisce etichette errate come “impala” a causa del suo allenamento generico dove molto probabilmente non erano presenti immagini contenenti daini.

Abbiamo inoltre creato un’etichetta per gli scenari vuoti permettendo di poter distinguere i casi “immagine vuote” dai casi “immagini con animali” acquistando quindi la possibilità di attivare servizi diversi a seconda dei casi.

(47)

41

Infine è fondamentale sottolineare la possibilità di trasformare il codice e le variabili Matlab in codice Python e conseguentemente di sfruttare altri ambienti come Torch, Caffè, OpenCv e Tensorflow senza alcun problema di compatibilità e portabilità. Così facendo possiamo prelevare i dati in uscita dalla fase di training (formato Matlab), trasformarli in Python e infine utilizzarli nei vari dispositivi Raspberry PI o Arduino presenti nella regione di sensing.

(48)

42

Documentazione

Di seguito saranno riportati i codici Matlab utilizzati per effettuare le prove di image recognition.

Script “GoogleNet” versione standard

net=googlenet; x=imread('001.jpg'); image(x); I = imresize(x,[224,224]); sz = net.Layers(1).InputSize; I = I(1:sz(1), 1:sz(2), 1:sz(3)); [label,score]= classify(net,I); title({char(label),strcat(num2str(max(score )*100,4),'%')}); drawnow

Script “AlexNet” versione standard

net=alexnet;

x=imread('001.jpg');

picture = imresize(x,[227,227]);

[label,score] = classify(net, picture); image(picture);

title({char(label),

strcat(num2str(max(score)*100,4),'%')}); drawnow;

(49)

43

Script per l’addestramento della rete GoogleNet

images =

imageDatastore('Immagini','IncludeSubfolder s',true,'LabelSource','foldernames'); images.ReadFcn = @(loc)imresize(imread(loc),[224,224]); [trainImages,valImages] = splitEachLabel(images,0.7,'randomized'); net = googlenet; lgraph = layerGraph(net);

lgraph = removeLayers(lgraph, { 'loss3-classifier','prob','output'});

numClasses = numel(categories(trainImages.Labels)); newLayers = [ fullyConnectedLayer(numClasses,'Name','fc', 'WeightLearnRateFactor',20,'BiasLearnRateFa ctor', 20)

softmaxLayer('Name','softmax')

classificationLayer('Name','classoutput')]; lgraph = addLayers(lgraph,newLayers);

lgraph = connectLayers(lgraph, 'pool5-drop_7x7_s1','fc');

(50)

44 options = trainingOptions('sgdm',... 'MiniBatchSize',10,... 'MaxEpochs',3,... 'InitialLearnRate',1e-4,... 'VerboseFrequency',1,... 'ValidationData',valImages,... 'ValidationFrequency',3); net1 = trainNetwork(trainImages,lgraph,options); predictedLabels = classify(net1,valImages); accuracy = mean(predictedLabels == valImages.Labels)

Script GoogleNet versione sperimentale

rete=net1; x=imread('001.jpg'); image(x); I = imresize(x,[224,224]); sz = net.Layers(1).InputSize; I = I(1:sz(1), 1:sz(2), 1:sz(3)); [label,score]= classify(rete,I); title({char(label), strcat(num2str(max(score)*100,4),'%')}); drawnow

(51)

45

Script per Image recognition da webcam ed utilizzo di GoogleNet versione sperimentale

camera = webcam; % Connect to the camera

rete = net1; % Load the neural net

while true

picture = camera.snapshot;

% Take a picture

image(picture)

picture = imresize(picture,[224,224]);

% Resize the picture

sz = net.Layers(1).InputSize;

picture = picture(1:sz(1), 1:sz(2), 1:sz(3));

[label,score] = classify(rete, picture); % Classify the picture

title({char(label),

strcat(num2str(max(score)*100,4),'%')}); drawnow;

end

Script per Image recognition da video con utilizzo di GoogleNet versione sperimentale

rete=net1;

a=VideoReader('s1_cam5B_13.11.16_133735_ss. AVI');

for img = 1:a.NumberOfFrames;

filename=strcat('frame',num2str(img),'.jpg'

);

picture = read(a,img); image(picture)

(52)

46

picture = imresize(picture,[224,224]);

% Resize the picture

sz = net.Layers(1).InputSize;

picture = picture(1:sz(1), 1:sz(2), 1:sz(3));

[label,score] = classify(rete, picture); % Classify the picture

title({char(label),

strcat(num2str(max(score)*100,4),'%')}); drawnow;

end

movie(img)

Script per l’estrazione dei frame dai video

clc;

clear all; close all; tic;

vid=VideoReader('C:\Alex\Google drive-Francesca

Brivio\cinghiali\Video\s38_cam7_09.12.16_14 3658_ss.AVI');

numFrames = vid.NumberOfFrames; n=numFrames;

Folder = 'C:\Alex\Google drive-Francesca Brivio\cinghiali\frame\s38_cam7_09.12.16_14 3658_ss';

for iFrame = 1:n

frames = read(vid, iFrame);

imwrite(frames, fullfile(Folder, sprintf('%06d.jpg', iFrame)));

end

FileList = dir(fullfile(Folder, '*.jpg'));

for iFile = 1:length(FileList) aFile = fullfile(Folder, FileList(iFile).name);

img = imread(aFile);

(53)

47

Bibliografia

[1] Ian Goodfellow, Yoshua Bengio, Aaron Courville, “Deep learning”, The MIT Press, 2016

[2] Li Deng, Dong Yu, “Deep learning: Methods and Applications”, Now Publishers, 2014

[3] Zubair Md. Fadlulah, Fengxiao Tang, Bomin Mao, Nei Kato, Osamu Akashi, Takeru Inoue, Kimihiro Mizutani, “State-of- The-Art Deep Learning: Evolving Machine Intellingence Toward Tomorrow’s Intelligent Network Traffic Control System”, Communications Surveys & Tutorials, IEEE, 2017, vol.19, issue: 4, pag. 2432-2455, Fourthquarter 2017

[4] Andy Rosales Elias, Nevena Golubovic, Chandra Krintz, Rich Wolski, “Where’s The Bear?- Automating Wildlife Image Processing Using IoT and Edge Cloud Systems”, Proceedings of The 2nd ACM/IEEE International Conference on Internet-of-Things Design and Implementation, IoTDI ’17, pag. 247-258

[5] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent

(54)

48

Vanhoucke, Andrew Rabinovich, “Going deeper with convolutions”, Computer Vision and Pattern Recognition (CPVR), 2015 IEEE Conference on, IEEE, 15 October 2015 [6] Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, ”ImageNet Classification with Deep Convolutional Neural Networks, Advances in Neural Information Processing System 25, NIPS 2012

Riferimenti

Documenti correlati

Per validare le funzionalita di CrossROAD con ulteriori risultati sperimentali, abbiamo analizzato un possibile scenario di partizionamento della rete, cercando di rilevare

Consentire ai piccoli e ai gran- di mammiferi, agli anfibi, ai rettili e agli uccelli di attraversare una strada senza rischiare di essere in- vestiti significa non solo contribui-

© 2003 Pier Luca Montessoro – Mario Baldi (si veda la nota a pagina 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e

L'impatto delle specie aliene sulla gestione sanitaria della fauna selvatica Dott.

of Molecular and Critical Area Surgical Pathology, Laboratory of Forensic Genetics, Legal Medicine, University of Pisa, Italy p Public Health Institute, Section of Forensic

L’Istituto Superiore per la Protezione e la Ricerca Ambientale (ISPRA) e le persone che agiscono per conto dell’Istituto non sono responsabili per l’uso che può essere fatto

The randomized phase III, open-label, multicenter clinical trial, based on 205 patients with extensive-disease (ED) of small-cell lung cancer (SCLC), evaluated the efficacy and

Questo aspetto si lega al problema della sovrapposizione tra CSR e valore condiviso e alla conseguente possibilità di usare gli strumenti di misurazione della