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