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