В этом проекте мы исследуем алгоритмы глубокого обучения для классификации изображений, используя архитектуру ResNet50. ResNet50, предобученная на датасете ImageNet, является одной из наиболее эффективных моделей, показывающих выдающиеся результаты в задачах компьютерного зрения. Наша цель - адаптировать эту модель для решения конкретной задачи классификации с 23 классами, используя технику Transfer Learning.
Для решения задачи классификации изображений с использованием архитектуры ResNet50 я предпринял следующие шаги:
Использовал предобученную модель ResNet50 как базу для извлечения признаков из изображений:
Загрузил веса, предобученные на ImageNet
Исключил верхние слои сети (include_top=False)
Заблокировал обучение базовой модели (base_model.trainable = False)
Построил новую архитектуру на основе ResNet50:
Добавил слой GlobalAveragePooling2D для уменьшения размерности
Внедрил слой Dropout (0.5) для предотвращения переобучения
Добавил полносвязный слой с 256 нейронами и функцией активации ReLU
Завершил сеть выходным слоем с 23 нейронами и функцией активации softmax
Подготовил данные:
Разделил датасет на обучающую, валидационную и тестовую выборки
Применил аугментацию данных (горизонтальное отражение, поворот, масштабирование)
Нормализовал пиксельные значения согласно требованиям ResNet50
Обучил модель:
Использовал оптимизатор Adam с уменьшенной скоростью обучения (0.0001)
Применил раннюю остановку для предотвращения переобучения
Обучал модель в течение 15 эпох с сохранением лучших весов
Реализовал точную настройку (fine-tuning):
Разблокировал верхние слои базовой модели после начального обучения
Уменьшил скорость обучения для точной настройки
Дообучил модель с частично разблокированными слоями базовой сети
Оценил производительность модели:
Проанализировал кривые обучения для выявления переобучения
Рассчитал метрики точности на тестовой выборке
Построил матрицу ошибок для выявления проблемных классов
В результате выполнения проекта была разработана модель классификации изображений с точностью 93.73% на обучающем наборе данных и 47.45% на валидационном наборе.
Основные результаты и выводы:
Модель демонстрирует высокую способность к запоминанию паттернов в обучающих данных, но недостаточную генерализацию на новых примерах.
Точная настройка верхних слоев ResNet50 позволила повысить валидационную точность с начальных 40% до 47.45%, но разрыв с обучающей точностью остаётся существенным.