| # MobileNetV3 Model for Plant Classification | |
| ## Model Description | |
| This model is a fine-tuned **MobileNetV3Small** trained to classify different types of plants. It was trained using transfer learning on a dataset obtained from Kaggle. | |
| - **Base Model:** MobileNetV3Small (pretrained on ImageNet) | |
| - **Dataset:** [Plants Classification Dataset](https://www.kaggle.com/datasets/marquis03/plants-classification) | |
| - **Accuracy:** 88% | |
| - **Fine-Tuning:** Last 20 layers of MobileNetV3Small were unfrozen for fine-tuning. | |
| ## Dataset | |
| The dataset consists of images of various plant species, divided into training and validation sets: | |
| - **Training Images:** Preprocessed with data augmentation (rotation, shifting, zoom, brightness adjustment, etc.) | |
| - **Validation Images:** Rescaled without augmentation | |
| ## Model Training | |
| The model was trained using **TensorFlow** and **Keras**, with categorical crossentropy loss and the Adam optimizer. The training process involved: | |
| 1. **Data Augmentation** using `ImageDataGenerator`. | |
| 2. **Transfer Learning** by leveraging MobileNetV3Small's pretrained weights. | |
| 3. **Fine-Tuning** of the last 20 layers. | |
| 4. **Learning Rate Scheduling** using `ReduceLROnPlateau`. | |
| 5. **Evaluation** using classification reports and a confusion matrix. | |
| 6. **Exporting the Model** as a `.tflite` file for mobile deployment. | |
| ## Model Performance | |
| - **Training Accuracy:** 88% | |
| - **Validation Accuracy:** 88% | |
| - **Loss Function:** Categorical Crossentropy | |
| - **Optimizer:** Adam (learning rate = 0.0001) | |
| ## Usage | |
| To use the model for inference, load it using TensorFlow: | |
| ```python | |
| import tensorflow as tf | |
| from tensorflow.keras.models import load_model | |
| # Load the model | |
| model = load_model("mobilenetv3_tanaman.h5") | |
| # Preprocess an input image | |
| import numpy as np | |
| from tensorflow.keras.preprocessing import image | |
| img_path = "path_to_image.jpg" | |
| img = image.load_img(img_path, target_size=(224, 224)) | |
| img_array = image.img_to_array(img) / 255.0 | |
| img_array = np.expand_dims(img_array, axis=0) | |
| # Make a prediction | |
| predictions = model.predict(img_array) | |
| class_idx = np.argmax(predictions) | |
| print(f"Predicted class: {class_idx}") | |
| ``` | |
| ## Deployment | |
| This model can be deployed for: | |
| - Mobile applications (converted to `.tflite` for TensorFlow Lite compatibility) | |
| - Web-based applications | |
| - Embedded AI systems for plant classification | |
| ## License | |
| This model is provided for research and educational purposes. Please ensure to cite the original dataset from Kaggle if used in any publication. | |
| ## Citation | |
| If you use this model, please cite: | |
| ``` | |
| @misc{PlantClassification2024, | |
| title={MobileNetV3 Model for Plant Classification}, | |
| author={Ade Maulana}, | |
| year={2024}, | |
| url={https://huggingface.co/your-huggingface-repo} | |
| } | |
| ``` | |