Этот проект демонстрирует дообучение модели ResNet-18 на датасете Oxford 102 Flowers для классификации изображений.
В проекте обучаются две модели:
- ResNet-18 с нуля (без предобученных весов).
- ResNet-18 с Fine-Tuning (дообучение на ImageNet).
Модель | Train Accuracy | Valid Accuracy | Время обучения |
---|---|---|---|
С нуля | 91.49% | 94.44% | ~6m 29s |
Предобученная | 96.45% | 100% | ~2m 32s |
- Google Colab
- PyTorch
- Torchvision
- ResNet-18
- Oxford 102 Flowers Dataset
- Откройте блокнот в Google Colab.
- Запустите ячейки последовательно.
🔹 Что делает блокнот?
✔ Загружает датасет Oxford 102 Flowers (классификация цветов).
✔ Преобразует данные, распределяя их по нужным папкам (train, valid, test).
✔ Использует PyTorch для подготовки данных и аугментации.
✔ Обучает две версии ResNet-18:
* С нуля (ResNet-18 from scratch).
* Предобученную на ImageNet (Fine-tuning pretrained ResNet-18).
✔ Сравнивает точность моделей:
* Обученная с нуля – 91.49% (train) / 94.44% (valid).
* Предобученная модель – 96.45% (train) / 100% (valid).
✔ Выводит графики, проверяет, есть ли пустые папки или некорректные данные.
🔗 Дополнительные ссылки:
📄 Oxford 102 Flowers Dataset - публичный датасет на Kaggle.
📜 ResNet Paper - научная статья "Deep Residual Learning for Image Recognition" (2015) от Microsoft Research, в которой была представлена архитектура ResNet (Residual Networks).
-
Структура репозитория
📂 fine-tuning_resnet/ ├── fine_tuning_oxford102.ipynb # Блокнот с кодом (Colab) ├── README.md # Описание проекта └── dataset_info.txt # Описание датасета
-
Дальнейшее развитие проекта 🔥 Этот проект можно расширить и улучшить!
1️⃣ Сравнение с другими моделями
- Добавить в эксперимент другие архитектуры нейросетей: * VGG-16 / VGG-19 * EfficientNet * Vision Transformer (ViT)
- Провести тесты и сравнить точность, скорость обучения, потребление памяти.
2️⃣ Использование аугментации данных
- Добавить data augmentation (torchvision.transforms): RandomRotation, RandomCrop, ColorJitter, HorizontalFlip.
- Это поможет сделать модель устойчивее к изменениям изображений.
3️⃣ Гиперпараметрический тюнинг
- Оптимизировать learning rate, batch size, количество эпох.
- Использовать Optuna или GridSearch для поиска лучших параметров.
4️⃣ Функция Grad-CAM для интерпретации модели
- Визуализировать, на какие части изображения смотрит модель при классификации.
- Поможет понять, почему нейросеть делает ошибки.
5️⃣ Добавить поддержку собственного датасета
- Сейчас модель работает с Oxford 102 Flowers.
- Можно адаптировать код для других датасетов, например: Custom Dataset (свои изображения цветов, животных, товаров); Imagenette / CIFAR-10 / Food-101.
6️⃣ Оптимизация модели для мобильных устройств
- Конвертировать модель в TorchScript / ONNX.
- Использовать TensorRT или CoreML, чтобы запустить нейросеть на мобильных устройствах.
- 📝 Лицензия: MIT