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.