- Реализовать пайплайн CV классификации изображений с помощью Pytorch.
- Создать сервис на Flask, который может классифицировать картинки собак
- Обернуть его в Docker *
- Создать телеграм бота для классификации собак *
Датасет ImageWoof
Используется 2 модели: первая определяет, есть ли на изображении собака, вторая определяет одну из 10 пород ImageWoof. Обе модели Vision Transformer(pytorch-image-models): первый пердобучен на 1000 классах ImageNet, второй -- он же, дообученный на 10 классах ImageWoof.
- На июль 2022 модели на основе Vision Transformer лидируют в классификации ImageNet
- Vision Transformer дает лучший результат, чем архитектуры из Imagewoof Leaderboard на 2020-21 (cм. сравнение в arch_compare.ipynb )
Точность классификации ImageWoof:
Validation accuracy = 0.93
Предобученная на ImageNet модель vit_large_patch16_224
из репозитория
pytorch-image-models дообучилась до этих значений за одну эпоху.
Датасет ImageWoof содержит изображения 10 классов собак, является подмножеством ImageNet, который содержит 1000 классов, из них собаки cосредоточены между 151 и 275 классами (ImageNet Classes). Модели, предобученные на ImageNet, достаточно хорошо определяют наличие собаки на картинке, но недостаточно хорошо различают 10 искомых классов ImageWoof.
Confusion matrix
Наиболее частые ошибки
[('English foxhound', 'Beagle', 41),
('Beagle', 'English foxhound', 20)]
Чаще всего ошибочно ошибочно определяет English foxhound вместо Beagle. Если подать на вход изображение собаки, не принадлежащей к одной из 10 пород ImageWoof, модель все-равно распределит ее в один из этих классов.
Обе модели имеют объем 1.2 GB, ограничение github -- 50 МB на один файл. Большие файлы можно загружать искачивать, установив git lfs:
# add repository
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
# install git-lfs for ubuntu
sudo apt-get install git-lfs
git lfs install
После этого предобученные модели загрузятся при клонировании репозитория:
git clone https://github.com/boldyshev/vit-woof
# go to project directory
cd vit-woof
Если вы не хотите устанавливать git lfs, можно скачать модели по ссылке.
Файлы должны находиться в vit-woof/models
:
wget https://github.com/boldyshev/vit-woof/raw/master/models/vit-dog.pt
wget https://github.com/boldyshev/vit-woof/raw/master/models/vit-woof.pt
docker build -t IMG_NAME .
docker run -it --rm -p 5000:5000 IMG_NAME
Перейти по https://localhost:5000/.
Если вы не хотите скачивать предобученные модели, вы можете локально дообучить предобученный трансформер из репозитория pytorch-image-models:
conda env create -f environment.yml
conda activate vit-woof
pip install telebot pyTelegramBotAPI
Дообучить модель
# the model will be saved to /models/MODEL_NAME
python finetune.py MODEL_NAME
Flask app
python flask_app.py -n MODEL_NAME
Telegram бот
python telegram_bot.py TOKEN -n MODEL_NAME
vit_woof.ipynb
xresnet50.ipynb
- https://github.com/liuyao12/imagenette_experiments
- https://github.com/walkwithfastai/walkwithfastai.github.io/blob/master/nbs/course2020/vision/04_ImageWoof.ipynb
- https://github.com/ayasyrev/imagenette_experiments
- https://github.com/Ys-Prakash/Vit-vs-xresnet/blob/master/ViT_Large_adam.ipynb
- https://github.com/imfing/keras-flask-deploy-webapp