Skip to content

kambizaur/DLS_TG_BOT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cat2Tiger CycleGAN бот

Проект DLS осеннего семестра 2023 года (

Telegram @zzZaur

1. Идея бота

Бот получает изображение кошки и выдает изображение, стилизованное под тигра.

2. Архитектура модели

CycleGAN-архитектура модели взята из статьи:

  1. Мы работаем с изображениями 256х256.

  2. Генераторы содержат 3 сверточных слоя и 9 ResNet блоков.

  3. Финальный сверточный слой дискриминаторов на выходе имеет не число, а тензор 70х70 (т.е. содержит оценку для разных перекрывающихся частей изображения).

3. Датасеты

Обучение проводилось на kaggle-датасетах для кошек и тигров.

Из датасетов исключены слишком маленькие изображения (меньше 10 Кбайт). Также отфильтрованы некачественные фото тигров (оригинальный датасет собирался из кадров разных видео).

4. Алгоритм обучения

  1. Из датасетов берутся два изображения (один кот и один тигр).

  2. Генерируется фейковый тигр (кот после генератора cat2tiger) и фейковый кот (тигр после генератора tiger2cat).

  3. Дискриминатор котов обучается на правильно размеченной паре (кот, фейковый кот), дискриминатор тигров обучается на паре (тигр, фейковый тигр). Функция потерь MSE.

  4. Фейковый тигр пропускается через tiger2cat и получается кот (будем называть его цикличным). Так же получаем цикличного тигра.

  5. Далее обучаем генераторы. Функция потерь состоит из двух частей: первая - MSE от выхода дискриминатора на фейковой картинке до противоположного класса (т.е. пытаемся обмануть дискриминатор) и L1 между оригинальным и цикличным фото.

Чтобы дать фору генератору, для обучения дискриминатора изображения поступают через буфер.

Обучение проводилось в Google Colab (notebook).

5. Установка и использование

Бот написан с помощью модуля aiogram.

Необходимые модули можно подгрузить с помощью команды:

pip install -r requirements.txt

Перед запуском нужно положить токен бота в переменную среды TG_BOT_TOKEN:

export TG_BOT_TOKEN="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
python app.py

Параметры обученного генератора должны лежать в той же директории, что и бот, в файле model.pt (в colab они сохраняются в файл gen_TT_NNN.pt, где NNN - номер эпохи, т.е. для загрузки в бота его нужно переименовать). Файл хранит словарь, в котором параметры лежат по ключу "state_dict".

6. Примеры работы

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages