The Web Application is live at: https://myflowerclassificationapp.streamlit.app/
Programming Language: Python
IDE: PyCharm
The application utilizes a jupyter notebook to create a Machine Learning model, and uses the open-source python framework, streamlit, to host the application.
Jupyter Notebook File: FlowerCalssificationNotebook.ipynb
Web App Source Code: webapp.py
The data used for the model was collected from the official TensorFlow dataset catalog labeled "tf_flowers." The link to download the dataset is, https://www.tensorflow.org/datasets/catalog/tf_flowers. The dataset of images was stored in the '/Images' subdirectory of the main project folder and divided into their appropriate labels; daisy, dandelion, roses, sunflowers, and tulips.
A supervised machine-learning method was used. A machine learning image classification model was created to classify a type of plant found in an image. The model was trained on the flower dataset by TensorFlow. The flower dataset contains a mixed collection of 3670 images labeled as daisy, dandelion, rose, sunflower, or tulip. The method was developed using the Python programming language along with the sci-kit-learn library. For the training and validation of the model, The images where split into an 80/20 split, 80% of the images were used for training and 20% were used for the validation of the machine learning model. This 80/20 split was accomplished when programming the training and validation datasets in Python. By using the Keras library "validation_split" parameter on dataset creation we were able to specify the 80/20 split. The method used was able to read images and proved to have an adequate prediction accuracy that we deemed sufficient to complete the task.
The machine learning model is currently only capable of distingushing between the following 5 flowers:
| daisy |
| dandelion |
| roses |
| sunflowers |
| tulips |
| Training and validation accuracy | Training and Validation Loss |
|---|---|
![]() |
![]() |
For the machine learning model that was created, a hold-out validation method was used. The dataset that was collected was split into an 80/20 split; 80% of the dataset was used for training the model, and 20% was used for testing. The results of using this validation method show the training accuracy of the model was 75%, and the validation accuracy was 70%. The training loss was 65% and the validation loss was approximately 80%.




