plantClassification / README.md
ademaulana's picture
Create README.md
80bea10 verified
# 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}
}
```