Esercitazione su CNNs

Transcript

Esercitazione su CNNs
Machine Learning
Traccia dell’esercitazione di laboratorio a BVLC Caffe e CNNs
In questa esercitazione prenderemo confidenza con l’implementazione di reti a convoluzione
(Convolutional Neural Networks o CNNs) mediante il framework BVLC Caffe.
In particolare applicheremo una CNN per classificare immagini naturali mediante un dataset molto
famoso nella comunità del Machine Learning, chiamato CIFAR-10. Esso consiste di 60,000
immagini 32x32, a colori (RGB) e suddivise in 10 classi distinte (6,000 immagini per classe). In
tutto, 50,000 immagini sono dedicate al training set, 10,000 al set di test.
Figura 1 Esempi di immagini per ogni classe presente nel dataset CIFAR-10
1) INTRODUZIONE A BVLC CAFFE
a. Il framework “Caffe” (molto conosciuto per il deploy rapido di CNN allo stato dell’arte) è
mantenuto
dal
“Berkeley
Vision
and
Learning
Center”)
al
link
http://caffe.berkeleyvision.org/tutorial/
Attraverso la seguente documentazione on-line è possibile acquisire competenze minime per
utilizzare il framework:





Nets, Layers, and Blobs: Comprendere le basi per la definizione di una rete.
Forward / Backward: Comprendere le computazioni fondamentali di un modello
basato su livelli.
Loss: La definizione della Loss Function per la definizione del task da apprendere.
Solver: Il solver come configurazione di alto livello per la definizione del processo
di ottimizzazione.
Layer Catalogue: Catalogo dei livelli disponibili in Caffe.


Interfaces: Interfacce mediante le quali è possibile utilizzare Caffe.
Data: Come caricare pattern ed etichette.
2) ACCEDERE AD UN SERVER REMOTO PER LA COMPUTAZIONE
a. Collegarsi al server linux messo a disposizione per l’esercitazione via ssh mediante
l’eseguibile Putty (o ssh da terminale in ambiente Unix):
Username: [email protected]
Password: studente_ml_2016
b. Una volta effettuato l’accesso creare la directory con il proprio nome e cognome oppure
il nome del gruppo al quale si appartiene. (Per approfondimenti sull’uso della shell Unix,
si veda qui).
3) ADDESTRARE UNA CNN (SU CIFAR-10) MEDIANTE CAFFE
a. Per prima cosa scaricare il materiale aggiuntivo dell’esercitazione presente sul sito del
corso. Analizzare i due file prototxt all’interno dello stesso e comprenderne il contenuto.
b. Sostituire il punto interrogativo “?” nel solver della rete con il learning rate che si
ritiene più opportuno.
c. All’interno del Solver scegliere il tipo di hardware su cui lanciare l’esperimento
solver_mode: GPU oppure solver_mode: CPU
d. Caricare sul server linux i file di configurazione indispensabili per il training e test della
rete
(“cifar10_net_definition.prototxt” e “cifar10_solver.prototxt”)
mediante WinSCP e dentro la propria directory creata al punto precedente.
e. Per addestrare e testare la rete invocare da terminale il programma “submit_solution
[path]“ presente nella home directory studente_ml. Al posto di path sostituire il
percorso relativo del solver che codifica la propria soluzione.
f. Il programma “submit_solution” invocherà per voi Caffe mediante la sua interfaccia a
linea di comando ma cercando di gestire l’hardware a disposizione il meglio possibile
nel rispetto dei vostri colleghi. In caso di attese prolungate potete terminare il
programma usando CTRL-C e tentare di cambiare l’hardware su cui lanciare
l’esperimento (la CPU potrebbe essere più libera…).
g. Trovare il learning rate ottimale mediante una procedura di “trial and error” e
consultare le curve di Accuracy e Loss.