rlogh's picture
Update README.md
75de3fd verified
---
license: mit
tags:
- image-classification
- cheese
- texture
- computer-vision
- pytorch
- transfer-learning
- automl
datasets:
- aslan-ng/cheese-image
metrics:
- accuracy
model-index:
- name: Cheese Texture Classifier (AutoML)
results:
- task:
type: image-classification
name: Cheese Texture Classification
dataset:
type: aslan-ng/cheese-image
name: Cheese Image Dataset
metrics:
- type: accuracy
value: 80.00
name: Test Accuracy
---
# Cheese Texture Classifier (AutoML)
**Model Creator**: Rumi Loghmani (@rlogh)
**Original Dataset**: aslan-ng/cheese-image (by Aslan Noorghasemi)
This model performs 4-class texture classification on cheese images using AutoML-optimized transfer learning. The model was developed by Rumi Loghmani using the cheese image dataset created by Aslan Noorghasemi.
## Model Description
- **Architecture**: Transfer Learning with resnet34
- **Task**: 4-class texture classification (Low, Medium-Low, Medium-High, High texture)
- **Input**: 224x224 RGB images
- **Output**: 4-class probability distribution
## Training Details
- **Model Developer**: Rumi Loghmani (@rlogh)
- **Dataset**: [aslan-ng/cheese-image](https://huggingface.co/datasets/aslan-ng/cheese-image) (by Aslan Noorghasemi)
- **AutoML Method**: Optuna with 20 trials
- **Transfer Learning**: Pre-trained resnet34 backbone
- **Early Stopping**: Yes (patience=10)
- **Max Epochs**: 50
## Performance
- **Test Accuracy**: 80.00%
- **Validation Accuracy**: 50.00%
- **Test Loss**: 1.6345
## Best Hyperparameters (AutoML Optimized)
```json
{
"model_name": "resnet34",
"dropout_rate": 0.4682019316470914,
"learning_rate": 0.00027817005315620047,
"weight_decay": 1.4677013775851028e-05,
"batch_size": 2
}
```
## Usage
```python
import torch
import torch.nn as nn
from PIL import Image
import torchvision.transforms as transforms
import torchvision.models as models
# Load model (define TransferLearningModel class first)
model = TransferLearningModel(num_classes=4, dropout_rate=0.4682019316470914, model_name='resnet34')
model.load_state_dict(torch.load('pytorch_model.bin'))
model.eval()
# Preprocess image
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# Load and preprocess image
image = Image.open('cheese_image.jpg').convert('RGB')
input_tensor = transform(image).unsqueeze(0)
# Make prediction
with torch.no_grad():
output = model(input_tensor)
probabilities = torch.softmax(output, dim=1)
predicted_class = torch.argmax(probabilities, dim=1).item()
class_names = ["Low Texture", "Medium-Low Texture", "Medium-High Texture", "High Texture"]
print(f"Predicted class: {class_names[predicted_class]}")
```
## Class Definitions
- **Class 0 (Low Texture)**: Texture values <= 0.425
- **Class 1 (Medium-Low Texture)**: Texture values 0.425 < x <= 0.600
- **Class 2 (Medium-High Texture)**: Texture values 0.600 < x <= 0.775
- **Class 3 (High Texture)**: Texture values > 0.775
## AutoML Features
- **Hyperparameter Optimization**: Optuna with 20 trials
- **Architecture Search**: ResNet18 vs ResNet34
- **Transfer Learning**: Pre-trained ImageNet weights
- **Early Stopping**: Prevents overfitting
- **Fixed Budget**: 20 trials, 10-minute timeout
## Limitations
- Trained on a very small dataset (30 images)
- Texture classification may not generalize to all cheese types
- Performance may vary with different lighting conditions or image quality
## AI Usage
This notebook was developed with the assistance of AI as a coding co-pilot. AI tools were used to:
- **Suggest code snippets**: AI provided suggestions for implementing various parts of the code, such as the dataset class, model architecture, training loops, and data preprocessing steps.
- **Debug and refactor code**: AI helped identify potential errors and suggest ways to refactor code for improved readability and efficiency.
- **Generate documentation**: AI assisted in generating explanations for code sections and creating the model card for Hugging Face.
- **Explore potential issues**: AI provided insights into potential challenges, such as handling small batch sizes and implementing early stopping, and suggested strategies to address them.
The AI served as a valuable partner throughout the development process, accelerating coding and improving code quality.
## Citation
If you use this model, please cite both the model and the original dataset:
**Model Citation:**
```bibtex
@model{rlogh/cheese-texture-classifier-automl,
title={Cheese Texture Classifier (AutoML)},
author={Rumi Loghmani},
year={2024},
url={https://huggingface.co/rlogh/cheese-texture-classifier-automl}
}
```
**Dataset Citation:**
```bibtex
@dataset{aslan-ng/cheese-image,
title={Cheese Image Dataset},
author={Aslan Noorghasemi},
year={2024},
url={https://huggingface.co/datasets/aslan-ng/cheese-image}
}
```