Классификатор изображений на базе transfer learning (MobileNetV2), определяющий марку, модель и год выпуска автомобиля по фотографии — 27 классов (Acura TL Sedan 2012, Audi R8 Coupe 2012, BMW X6 SUV 2012 и др.).
Точность на тестовой выборке: 75% (2274 изображения, 27 классов). Метрика подтверждена дважды: в самом ноутбуке обучения (classification report) и независимым прогоном сохранённой модели на полном тестовом наборе (evaluate_saved_model.py).
Для сравнения: случайное угадывание среди 27 классов дало бы ~3.7%.
Car Brand Recognition (Kaggle) — 27 марок/моделей автомобилей, ~13 300 изображений:
- train: 8854
- validation: 2207
- test: 2274
Датасет не включён в репозиторий — скачайте его с Kaggle и распакуйте в standford_beta/{train,test}/<класс>/*.jpg.
Итоговое решение — MobileNetV2 (предобучена на ImageNet) с дообученной "головой" и последующим fine-tuning:
- Этап 1 — обучение головы. Базовая модель заморожена. Поверх неё:
GlobalAveragePooling2D → BatchNorm → Dropout(0.3) → Dense(256, relu) → BatchNorm → Dropout(0.3) → Dense(27, softmax). Аугментация обучающей выборки (повороты, сдвиги, зум, отражение). 20 эпох сReduceLROnPlateauиEarlyStopping, val_accuracy ~71%. - Этап 2 — fine-tuning. Размораживаются все слои MobileNetV2, кроме первых 100 (низкоуровневые признаки — края, текстуры). Дообучение 10 эпох с очень малым learning rate (1e-5). Val_accuracy выросла до ~76%.
- Финальная оценка на отложенной тестовой выборке — 75% accuracy, полный classification report по каждой из 27 марок.
Ноутбук: car_brand_classifier_mobilenetv2.ipynb.
Перед тем как перейти на transfer learning, была опробована собственная свёрточная сеть, обученная с нуля (4 блока Conv2D + BatchNorm + MaxPooling, ~1.7M параметров) — см. early_experiment_custom_cnn.ipynb. За 20 эпох она дала лишь 37.77% точности. Переход на предобученную MobileNetV2 и fine-tuning почти удвоил точность — наглядная демонстрация того, когда и зачем применять transfer learning вместо обучения с нуля на ограниченном датасете.
car_brand_classifier_mobilenetv2.ipynb— основной ноутбук: обучение, fine-tuning, оценкаearly_experiment_custom_cnn.ipynb— ранний эксперимент (CNN с нуля, 37.77%)evaluate_saved_model.py— независимая проверка сохранённой модели на тестовой выборкеcar_brand_model.keras,class_names.pkl— обученная модель и список классов
pip install -r requirements.txt
# скачать датасет с Kaggle в standford_beta/
python evaluate_saved_model.pyPython, TensorFlow / Keras, MobileNetV2 (ImageNet), ImageDataGenerator, scikit-learn (classification_report, confusion_matrix)