Meskipun Kerangka Kerja Klasifikasi Logo Brand Berbasis MobileNetV2 + FastAPI Saat Ini Dilatih Untuk Logo Mobil, Namun Dapat Digunakan Juga Untuk Kasus Lain Yang Lebih Luas. Seperti, Mengenali Logo Brand Populer Dari Berbagai Bidang/Sektor Global (F&B, Finance, Fashion, dan Sebagainya) Cukup Dengan Menyesuaikan Datasetnya.
Dataset: Car Brand Logos - 8 Kelas: Hyundai, Lexus, Mazda, Mercedes, Opel, Skoda, Toyota, Volkswagen.
- Transfer Learning MobileNetV2 + Fine-Tuning Opsional.
- Deteksi Struktur Dataset Otomatis (
Train/Testatau Folder Per Kelas). - REST API: Prediksi Top-3 dan Metrik Evaluasi.
- Web Interface: Upload Gambar, Akurasi + Confusion Matrix.
- Normalisasi Piksel Konsisten (
-1..1) Antara Rraining dan Inferensi.
| Tahap | Akurasi | Loss |
|---|---|---|
| Head Only | 0.7100 | 1.2015 |
| + Fine-Tuning | 0.8175 | 1.0545 |
car-brand-classifier/
├─ backend/
│ ├─ config.py # Konstanta & Hyperparameter
│ ├─ preprocessing.py # Preprocessing Gambar (-1..1)
│ ├─ dataset.py # Scan Folder, Split, tf.data Pipeline
│ ├─ metrics.py # Confusion Matrix & Precision/Recall/F1
│ ├─ train.py # Training + Fine-Tuning + Tulis metrics.json
│ ├─ evaluate.py # Hitung Ulang Metrik Dari Model Tersimpan
│ ├─ predictor.py # Inferensi Top-K
│ ├─ main.py # FastAPI: /health /classes /metrics /predict
│ ├─ requirements.txt
│ ├─ models/ # Artefak Hasil Training (model.keras, *.json)
│ └─ tests/ # Unit Test (Tanpa TensorFlow)
├─ frontend/ # index.html, css/, js/
└─ dataset/ # Diisi sendiri (Lihat "Dataset")
cd backend
python -m venv .venv
# Linux/Mac: source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtDataset Tidak Disertakan Dalam Repo. Download Lalu Ekstrak Ke dataset/:
pip install kaggle
kaggle datasets download -d volkandl/car-brand-logos -p dataset --unzipdataset/
└─ Car_Brand_Logos/
├─ Train/<brand>/*.jpg
└─ Test/<brand>/*.jpg
Jika Hanya Tersedia Subfolder Per Kelas Tanpa `Train/Test`, Data Dibagi Otomatis Secara Stratified. Lokasi Dataset Dapat Ditimpa Lewat Variabel Lingkungan `IMAGES_DIR`.
Training
cd backend
python train.py --fine-tune-at 30 --fine-tune-epochs 10Menghasilkan models/model.keras, models/class_indices.json, dan models/metrics.json.
Argumen Utama: --epochs, --batch-size, --learning-rate, --min-images-per-class, --fine-tune-at, --fine-tune-epochs, --val-split.
Evaluasi Ulang (Tanpa Melatih Ulang, Memperbarui metrics.json):
python evaluate.pyMenjalankan Server
uvicorn main:app --reload --port 8000| Method | Endpoint | Keterangan |
|---|---|---|
| GET | /health |
Status API & kesiapan model |
| GET | /classes |
Daftar kelas/brand yang dikenali |
| GET | /metrics |
Akurasi, loss, confusion matrix, per-kelas |
| POST | /predict |
Multipart file → prediksi Top-3 |
Contoh Respons /predict:
{
"label": "toyota",
"confidence": 0.93,
"top_k": [
{ "label": "toyota", "confidence": 0.93 },
{ "label": "lexus", "confidence": 0.04 },
{ "label": "mazda", "confidence": 0.02 }
]
}cd backend
python -m unittest discover -s tests -t .Mencakup Preprocessing, Pemuatan Dataset, Metrik Evaluasi, dan Logika Predictor - Tanpa Memerlukan TensorFlow Maupun Dataset Asli.
- Training Dan Inferensi Memakai Normalisasi
0..255 → -1..1(Konvensi MobileNetV2). Bila Pernah Melatih Dengan Skema Lama (/255), Hapusmodels/Model.kerasDanmodels/Class_indices.jsonSebelum Melatih Ulang. - Pesan "GPU Support Is Not Available On Native Windows" Bersifat Informatif, Training Berjalan Di CPU. Untuk GPU Gunakan WSL2.
MIT.

