Skip to content

Latest commit

 

History

History
58 lines (31 loc) · 5.58 KB

README.md

File metadata and controls

58 lines (31 loc) · 5.58 KB

AlcoNet

Классификатор изображений алкогольной продукции, основанный на ResNet50v1.

Классифицирует изображения алкоголя по 11 классам, список которых можно найти в decoder.py.

Для запуска файлов проекта необходим Python 3 и пакеты, указанные в requirements.txt

Модель

Структура модели и ее параметры описаны в model.py.

Модель состоит из модели сверточной сети ResNet50v1 без полносвязного выходного слоя и нескольких слоев, заменяющих выход ResNet, в том числе выходного полносвязного слоя на 11 классов.

Модель ResNet предобучена на датасете ImageNet, первые 146 слоев заморожены для обучения, для дополнительной настройки загружаемой модели ResNet смотрите документацию.

Для создания своей необученной модели настройте параметры в model.py и запустите его.

Необученную модель с текущими параметрами можно найти здесь.

Обучение

Для обучения созданной модели на своих данных настройте параметры обучения в fit.py и запустите его.

Данные

Данные для обучения и валидации генерируются автоматически из указанных каталогов (параметры train_path и validation_path) при помощи ImageDataGenerator.

Метод flow_from_directory() автоматически определяет количество классов данных по количеству подкаталогов в указанном каталоге и считывает все изображения из подкаталогов, ставя их в соответствие классу подкаталога. То есть структура данных должна выглядеть следующим образом:

<Каталог с данными для обучения или валидации>/<Каталоги с названиями определяемых классов>/<Изображения определенного класса>

Соответственно структура и количество классов для обучающей и валидационно выборки должны быть одинаковыми.

Так же ImageDataGenerator производит предварительную обработку данных, подаваемых на вход нейросети, в том числе может искажать изображения различным образом для увеличения разнообразия обучающей выборки. Подробнее про настройку и использование ImageDataGenerator можно прочитать в документации keras.

Сохранение обученных моделей

Обученная модель сохраняется в конце обучения по пути, указанному в параметре final_save_path.

Для сохранения модели по ходу обучения используется ModelCheckpoint. Он сохраняет обученную модель после каждой эпохи по пути, указанному в параметре save_path с соответствующим номером эпохи. Если параметр save_best_only равен True, то сохраняются только лучшие эпохи обучения, при этом критерии оценки моделей хранятся в параметрах monitor и mode. Подробнее про настройку и использование ModelCheckpoint можно прочитать в документации keras.

Обученные на 50 и 100 эпохах модели с текущими параметрами можно найти здесь.

Тестирование

Для тестирования готовых обученных моделей на отдельных изображениях или каталоге с изображениями можно воспользоваться test.py. Для этого запустите его со следующими аргументами командной строки

test.py mode [path], где

  • mode - 0 (для каталога с изображениями) или 1 (для одного изображения).
  • path - путь к тестовому каталогу или изображению.

В коде test.py можно настроить параметры тестирования: путь к тестируемой модели и пути к тестовым данным по-умолчанию.