In this project, I first developed code for an image classifier built with TensorFlow (Part 1 - Jupyter notebook), then i converted it into a command line application to predict new images using the trained model (Part 2 - Command Line Application).
My First Machine Learning Project with Tensorflow
I have used tensorflow_datasets
to load the Oxford Flowers 102 dataset. This dataset has 3 splits: 'train'
, 'test'
, and 'validation'
. The training data was normalized and resized to 224x224 pixels as required by the pre-trained networks.
The validation and testing sets are used to measure the model's performance on data it hasn't seen yet (the data was normalized and resized the images to the appropriate size).
In this part, i worked through a Jupyter notebook to implement an image classifier with TensorFlow. The output of this part is a saved classifier my_model_1.h5
Now that i built and trained a deep neural network on the flower data set, it's time to convert it into an application that others can use. The application is a Python script that run from the command line. For testing, i used the saved Keras model saved in the first part to predict images from the folder ./test_images
.
This part includes a predict.py
file that uses the previously trained network in part-1 to predict the class for an input image. There is a helper_functions.py
file that holds the needed functions to preprocess the images and make the predictions using the pretrained classifier.
$ python predict.py /path/to/image saved_model
-
--top_k
: Return the top$K$ most likely classes (default is 5):
$ python predict.py /path/to/image saved_model --top_k K
--category_names
: This is a boolean switch that displays the class name of the predicted flower that is pertinent to the label.
$ python predict.py /path/to/image saved_model --category_names
For the following examples, we assume we have a file called orchid.jpg
in a folder named /test_images/
that contains the image of a flower. We also assume that we have a Keras model saved in a file named my_model.h5
.
$ python predict.py ./test_images/orchid.jpg my_model.h5
- Return the top 3 most likely classes:
$ python predict.py ./test_images/orchid.jpg my_model.h5 --top_k 3
- Adding the option
--category_names
will list the class names that are included in thelabel_map.json
file to map labels to flower names:
$ python predict.py ./test_images/orchid.jpg my_model.h5 --category_names