|
---
|
|
language: en
|
|
tags:
|
|
- image-classification
|
|
- nameplate-detection
|
|
- industrial
|
|
- pytorch
|
|
- computer-vision
|
|
license: mit
|
|
datasets:
|
|
- kahua-ml/nameplate-classification
|
|
base_model: mobilenet_v2
|
|
pipeline_tag: image-classification
|
|
---
|
|
|
|
# Nameplate Classifier
|
|
|
|
## Model Description
|
|
|
|
This is a lightweight binary image classifier that determines whether an image contains a readable nameplate or not. The model is based on MobileNetV2 architecture and is optimized for industrial equipment nameplate detection.
|
|
|
|
## Model Details
|
|
|
|
- **Model Type**: Image Classification (Binary)
|
|
- **Architecture**: MobileNetV2 backbone with custom classifier
|
|
- **Framework**: PyTorch
|
|
- **Model Size**: ~9.4MB
|
|
- **Input Size**: 224x224 RGB images
|
|
- **Classes**:
|
|
- `no_nameplate` (0): Image does not contain a readable nameplate
|
|
- `has_nameplate` (1): Image contains a readable nameplate
|
|
|
|
## Training Data
|
|
|
|
The model was trained on the `kahua-ml/nameplate-classification` dataset, which contains:
|
|
- **Positive examples**: 3,456 images with nameplates from industrial equipment
|
|
- **Negative examples**: 826 images without nameplates from construction safety and industry datasets
|
|
- **Total**: 4,282 images
|
|
|
|
## Performance
|
|
|
|
- **Expected Accuracy**: 85-95%
|
|
- **Training Time**: ~10-15 minutes
|
|
- **Inference Speed**: Very fast (optimized for real-time applications)
|
|
|
|
## Usage
|
|
|
|
```python
|
|
import torch
|
|
import torchvision.transforms as transforms
|
|
from PIL import Image
|
|
|
|
# Load model
|
|
model = torch.load("model.pth", map_location='cpu')
|
|
model.eval()
|
|
|
|
# Prepare 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])
|
|
])
|
|
|
|
# Predict
|
|
image = Image.open("your_image.jpg")
|
|
input_tensor = transform(image).unsqueeze(0)
|
|
|
|
with torch.no_grad():
|
|
outputs = model(input_tensor)
|
|
probabilities = torch.nn.functional.softmax(outputs, dim=1)
|
|
predicted = torch.max(outputs, 1)[1].item()
|
|
confidence = probabilities[0][predicted].item()
|
|
|
|
result = "has_nameplate" if predicted == 1 else "no_nameplate"
|
|
print(f"Prediction: {result} (Confidence: {confidence:.3f})")
|
|
```
|
|
|
|
## Applications
|
|
|
|
- Industrial equipment documentation
|
|
- Asset management systems
|
|
- Quality control in manufacturing
|
|
- Automated inventory systems
|
|
|
|
## Limitations
|
|
|
|
- Optimized for industrial nameplates
|
|
- May not work well on severely damaged or obscured nameplates
|
|
- Requires clear, readable text on nameplates
|
|
|
|
## Training Details
|
|
|
|
- **Optimizer**: Adam
|
|
- **Loss Function**: CrossEntropyLoss
|
|
- **Epochs**: 5
|
|
- **Batch Size**: 32
|
|
- **Learning Rate**: 0.001
|
|
- **Data Augmentation**: Random horizontal flip, rotation, color jitter
|
|
|
|
## Model Architecture
|
|
|
|
```
|
|
LightweightNameplateClassifier(
|
|
(backbone): MobileNetV2(
|
|
(classifier): Sequential(
|
|
(0): Dropout(p=0.2)
|
|
(1): Linear(in_features=1280, out_features=128)
|
|
(2): ReLU()
|
|
(3): Dropout(p=0.3)
|
|
(4): Linear(in_features=128, out_features=2)
|
|
)
|
|
)
|
|
)
|
|
```
|
|
|
|
## Citation
|
|
|
|
If you use this model in your research, please cite:
|
|
|
|
```
|
|
@misc{kahua-nameplate-classifier,
|
|
title={Lightweight Nameplate Classifier},
|
|
author={Kahua ML Team},
|
|
year={2024},
|
|
howpublished={\url{https://huggingface.co/kahua-ml/nameplate-classifier}}
|
|
}
|
|
```
|
|
|