Классификация изображений с помощью Перенос обучения + ConvNets + Python. Код опубликован в репозитории Githubhttps://github.com/lucasmfaria/image_classifier

Всем привет. Мы собираемся обучать пользовательские модели классификации изображений, используя метод переносного обучения и ConvNets (сверточные нейронные сети).

Прежде всего, вам следует клонировать репозиторий с Github. После этого можем приступать к работе:

  • Подготовьте среду Python (пока что тестировалась с python 3.9). Бегать:
pip install -r requirements.txt
  • Переместите набор данных изображения в каталог «data/dataset». Следовать примеру:

  • Используйте «create_splits.py», чтобы создать разделы для обучения, тестирования и проверки. Пример с параметрами по умолчанию:
python ./scripts/create_splits.py

Обратите внимание, что есть параметр для недостаточной выборки. Таким образом, вам не нужно делать выборку вручную перед запуском скрипта. Он передается классу RandomUnderSampler в библиотеке imblearn. Проверьте его документацию для получения дополнительной информации: https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.RandomUnderSampler.html

  • Используйте «train.py» для обучения вашей нейронной сети.
python ./scripts/train.py

Вам, вероятно, потребуется изменить некоторые параметры здесь, в зависимости от сложности вашего набора данных и его меток. Некоторые важные из них: «batch_size» (зависит от доступной памяти), «base_epochs» (количество эпох на первом этапе — замороженная модель VGG16). ), «fine_tuning_epochs» (количество эпох во время второго этапа — разморозка модели VGG16).

  • Используйте «test.py», чтобы оценить окончательную модель.
python ./scripts/test.py

  • Используйте «save_last_train.py», если вам понравилась протестированная модель и вы хотите сохранить ее в каталоге «saved_models».
python ./scripts/save_last_train.py

  • Используйте «delete_last_train.py», чтобы удалить обученную модель из каталогов «checkpoints» и «logs».
python ./scripts/delete_last_train.py

Вы также можете использовать прилагаемый блокнот jupyter для визуального интерфейса с каждой ячейкой кода.

Будущая работа

TODO:

  • Пользовательский интерфейс
  • Создайте API для обслуживания/развертывания модели.
  • Централизованное конфигурирование приложений с помощью библиотеки dynaconf
  • Сохраните «class_names» после обучения

Пожалуйста, не стесняйтесь внести свой вклад в проект, если вы заинтересованы. Спасибо!