
ИДЕЯ ПРОЕКТА
В Санкт-Петербурге наступила осень, а значит что световой день значительно уменьшился… Но что же делать, если хочешь выложить новые фоточки в соц сети, а сделать это при таком режиме дня стало невозможно? Правильно, нужно обучить нейросеть генерировать твои селфи
Список использованных в проекте инструментов:
— Stable Diffusion — обучение генеративной нейросети под свой стиль; — Google Colab — выполнение кода и генераций; — Hugging Face — получение токена для обучения нейросети, загрузка полученной модели на сайт; — Adobe Photoshop — для обработки готовых работ.
МОИ СЕЛФИ

Для обучения я использовала 18 селфи, на которых мое лицо было видно с разных ракурсов (чтобы в генерациях не было слишком частых повторений одного и того же ракурса).
Все изображения были преобразованы в png-формат размером 512×512 пикселей
ПРОЦЕСС ОБУЧЕНИЯ
Первоначально были установлены все нужные для обучения библиотеки: diffusers, dreambooth и dependencies
Подключаем импорт фотографий с компьютера и загружаем наши селфи, обозначаем local_dir как «./cher/» и удостоверяемся, что наши фотографии точно загружены и нормально отображаются
Загружаем модель Blip для генерации подписей к каждому селфи и далее выводим список (картинка — промт) для того, чтобы удостовериться, что содержимое картинок было распознано правильно.
Из-за того, что я обучаю модель на генерации определенного человека, в качестве основного промта я использовала «photo of TOK girl», не забывая о токене TOK, который ссылается на определенный объект
Датасет для обучения был полностью готов, после чего начался этап подготовки непосредственного к самому обучению. Для этого я получила токен на Huggingface для записи необходимых данных на сайт
В качестве разрешения итоговых картинок я выбрала размер 1024×1024 пикселя, в качестве максимальных шагов обучения взяла 500, а сброс состояния обучения на диск 250.
Процесс обучения прошел успешно и занял у меня порядка ±55 минут.
Далее ввожу код для автоматического сохранения модели на Hugging Face Hub.
ГЕНЕРАЦИЯ НОВЫХ СЕЛФИ
Загружаем Stable Diffusion Xl и присоединяем к ней Lora для генерации новых селфи. Для генерации мы всегда используем исходный промт «photo of TOK girl», дополняя его в случае новых генераций
Далее начался полет фантазий и ниже слева направо будут фотографии по следующим промтам: «photo of TOK girl, blonde girl with flower in hair»; «photo of TOK girl, blonde girl in the street»; «photo of TOK girl, blonde girl on the sunset»;
Поскольку после второго чекпоинта новые селфи были несколько «кукольными» и уже не так сильно похожими на меня, я решила откатить модель до первого чекпонита. Вдобавок также увеличила количество шага при генерации новых картинок до 35, что в итоге дало более качественные и проработанные селфи.
Слева: селфи, сгенерированное с помощью ИИ по промту «photo of TOK girl, girl in room», справа: селфи из датасета
Удивительно, но ИИ идентично «поймал» форму и размер носа, а также структуру волос. С губами и глазами есть некоторые проблемы, однако на всех генерациях мой внешний вид и образ остаются узнаваемыми.
promt «photo of TOK girl, girl in autumn forest», «photo of TOK girl, girl in room», «photo of TOK girl, girl in room»
Слева: селфи, сгенерированное с помощью ИИ по промту «photo of TOK girl, blonde girl on the beach», справа: селфи из датасета
В качестве эксперимента мною были созданы «ИИ-близнецы», результат всё также супер схож с реальностью, а у меня появились сёстры-близнецы в кибервселенной…
promt «photo of TOK girl, two blonde girls in room»
ВЫВОД

Нейросеть действительно генерировала селфи, очень схожие со мной: особенно это видно в уголках лица, форме носа, положении глаз и структуре волос.
Однако были косяки в глазах и губах, что подталкивает меня в будущем на дополнительное обучение, а также расширение датасета на большее количество селфи и разные ракурсы фото.
Мне кажется, что будущее уже здесь, ведь с совсем небольшого кол-ва селфи (18 фотографий) получились довольно убедительные генерации. Будет здорово в дальнейшем попробовать обучение не только на селфи, а на изображении меня целиком!