Questo corso e' stato decisamente piu' ostico dei precedenti
martedì 7 gennaio 2020
sabato 4 gennaio 2020
Analisi degli errori rete neurale foraminiferi
Aggiornamento
ho visto che il programma label_inmage.py prevede anche degli switch che settano i valori di input_mean e input_std (di default sono impostati a 127.5 entrambi i valori)
modificando questi parametri cambiano anche in maniera sensibili i risultati dello stesso file di modello tflite. Con una configurazione differente non ci sono classi particolarmente penalizzate
allo stesso modo anche make_image_classifier possono essere cambiate le epoch, il learning rate, batch size, momentum (gradient descent)
====================================================================
Questo al momento e' il miglior risultato della rete neurale sui foraminiferi
Si nota abbastanza chiaramente che la classe Globigerinita Glutinata ha un tasso di riconoscimento del tutto errato. Le altre classi hanno prestazioni migliori con risultati intorno al 60% di corrette identificazioni
Per cercare di isolare il problema ho isolato gli errori del set di test
Globigerina Bulloides
Gli score di corretti riconoscimenti sono compresi tra 0.83 e 0.33
GB 280 |
Globigerina Bulloides 280 scambiata per Globigerinoides Sacculifer score 0.51
GB 315 |
Globigerina Bulloides 315 scambiata per Globigerinoides Ruber score 0.51
Globigerinita Glutinata
Gli score di corretti riconoscimenti sono compresi tra 0.59 e 0.35
GG 1406 |
Globigerinita Glutinata 1406 identificata dalla rete neurale come Globigerina Bulloides con score 0.35. La seconda piu' probabile identificazione con score 0.33 era Gobigerinita Glutinata ovvero la classe corretta
GG 1449 |
GG 265 |
GG 564 |
GG 68 |
Globigerinita Glutinata 68 identificata dalla rete neurale come Globigerinoides Sacculifer con score 0.55.
Globigerinita Glutinata 765 identificata dalla rete neurale come Neogloboquadrina Pachyderma con score 0.65.
GG 765 |
GG 822 |
Globigerinita Glutinata 882 identificata dalla rete neurale come Neogloboquadrina Pachyderma
GG 955 |
Globigerinita Glutinata 955 identificata dalla rete neurale come Globigerinoides Ruber con score 0.7.
venerdì 3 gennaio 2020
Colab e TensorFlow
Colab e' una piattaforma cloud offerta da Google per sviluppare utilizzando i Jupiter Notebook..con la possibilita' di utilizzare anche una GPU con ovvi vantaggi nell'uso di Tensorflow
I dati si possono caricare su Google Drive ed essere condivisi con Colab tramite il codice sottostante.
Prima di poter utilizzare Colab si deve cliccare sul link, ottenere una chiave che dovremo incollare sulla pagina
La configurazione della GPU si trova su Notebook settings e dai log di Tensorflow risulta essere una Tesla P100-PCIE-16GB (la disponibilita' della CPU non e' garantita)
Di seguito la rete neurale dei foraminiferi in esecuzione su Colab. Da notare che dalla seconda epoch
entra in funzione la GPU con un significativo incremento delle prestazioni
I dati si possono caricare su Google Drive ed essere condivisi con Colab tramite il codice sottostante.
Prima di poter utilizzare Colab si deve cliccare sul link, ottenere una chiave che dovremo incollare sulla pagina
La configurazione della GPU si trova su Notebook settings e dai log di Tensorflow risulta essere una Tesla P100-PCIE-16GB (la disponibilita' della CPU non e' garantita)
Di seguito la rete neurale dei foraminiferi in esecuzione su Colab. Da notare che dalla seconda epoch
entra in funzione la GPU con un significativo incremento delle prestazioni
martedì 31 dicembre 2019
lunedì 30 dicembre 2019
Retrain Model con dati di foraminiferi
Aggiornamento
Ho provato a fare girare il modello con dataset di train di 1000 e 1500 immagini
=======================================================================
Al posto di creare da zero un modello in Tensorflow per addestrare il riconoscimento di foraminiferi ho provato ad aggiungere le mie classi ad una rete gia' addestrata
Per fare cio' si deve aggiungere il supporto a Tensorflow HUB con
pip install "tensorflow~=2.0"
Ho provato a fare girare il modello con dataset di train di 1000 e 1500 immagini
Dataset 1000 immagini per classe
57% di attribuzioni corrette
Dataset 1500 immagini per classe
56% di attribuzioni corrette
=======================================================================
Al posto di creare da zero un modello in Tensorflow per addestrare il riconoscimento di foraminiferi ho provato ad aggiungere le mie classi ad una rete gia' addestrata
Per fare cio' si deve aggiungere il supporto a Tensorflow HUB con
pip install "tensorflow~=2.0"
pip install "tensorflow-hub[make_image_classifier]~=0.6"
Si lancia quindi il comando
make_image_classifier \
--image_dir train \
--tfhub_module https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4 \
--saved_model_dir fora \
--labels_output_file class_labels.txt \
--tflite_output_file fora_mobile_model.tflite
Le immagini devono essere conformi al formato di mobilenet quindi devono avere una dimensione di 224x224 pixels
I risultati sono leggermente peggiori del precedente post : 22 corretti e 25 errati (46% corretti 54% errati) ma si nota in maniera netta come il riconoscimento di Globigerinita Glutinata sia totalmente sballato
Si lancia quindi il comando
make_image_classifier \
--image_dir train \
--tfhub_module https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4 \
--saved_model_dir fora \
--labels_output_file class_labels.txt \
--tflite_output_file fora_mobile_model.tflite
Le immagini devono essere conformi al formato di mobilenet quindi devono avere una dimensione di 224x224 pixels
di default vengono selezionate 5 epoche ma si puo' cambiare il valore con lo switch --train_epochs
Ho iniziato con il dataset completo di 1500 immagini per 5 classi ma in modo non prevedibile il processo veniva killato senza preavviso. Si tratta di un problema di memoria cosi' sono sceso a 500 elementi per classe con una ram di 8Gb
Per effettuare l'inferenza (ovvero la previsione del modello su una immagine non contenuta nel training si usa lo script label_image.py
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/examples/python/label_image.py
Ho iniziato con il dataset completo di 1500 immagini per 5 classi ma in modo non prevedibile il processo veniva killato senza preavviso. Si tratta di un problema di memoria cosi' sono sceso a 500 elementi per classe con una ram di 8Gb
Per effettuare l'inferenza (ovvero la previsione del modello su una immagine non contenuta nel training si usa lo script label_image.py
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/examples/python/label_image.py
python label_image.py -m fora_mobile_model.tflite -l class_labels.txt -i test/a_globigerina_bulloides.1102.jpg
I risultati sono leggermente peggiori del precedente post : 22 corretti e 25 errati (46% corretti 54% errati) ma si nota in maniera netta come il riconoscimento di Globigerinita Glutinata sia totalmente sballato
Corso How Google does Machine Learning
Visto che il precedente corso dava dei crediti su Coursera ho provato il corso offerto da Google
Non avevo mai provato Coursera, anche perche' i corsi interessanti sono costosi. Il livello delle lezioni non e' altissimo ed i test sono piuttosto banali rispetto al corso tenuto direttamente da Google ma c'e' stata la possibilita' di avere sessioni gratuite di utilizzo di Google Cloud...non male
Non avevo mai provato Coursera, anche perche' i corsi interessanti sono costosi. Il livello delle lezioni non e' altissimo ed i test sono piuttosto banali rispetto al corso tenuto direttamente da Google ma c'e' stata la possibilita' di avere sessioni gratuite di utilizzo di Google Cloud...non male
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...