Классификатор изображений алкогольной продукции, основанный на 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
можно настроить параметры тестирования: путь к тестируемой модели и пути к тестовым данным по-умолчанию.