


Фотографии кота Семена, возраст 4 года
Это мой кот Семен, которого по паспорту на самом деле зовут Диор. Конечно, такое грандиозное имя не дает ему забыть о своем величии, и он мечтает о своем королевстве.
Идея проекта заключается в том, чтобы показать, как в своих мечтах Диор видит себя уважаемым королем своего государства. Поэтому было решено сгенерировать изображения, напоминающие портреты монархов 16–18 веков и совместить с фотографиями Семена.
Генерации изображений
Для генерации изображений было выбрано дополучить модель Stable Diffusion.
Для дообучения были взять 28 фотографий кота Семена в формате 1:1. В датасете преимущественно использовались фотографии с крупным планом кота.

Пример нескольких изображений из датасета
Первые изображения были сгенерированы с использованием максимально простых промтов, чтобы модель могла выдать изображение максимально похожее на те, которые были в обучающей выборке. Так, грубо говоря, оценивалось качество модели на трейне, то, насколько она запомнила персонажа, под которого генирировалось изображение.


Промт 1: «a photo of SEMEN cat, portrait of a cat»; промт 2: «a photo of SEMEN cat, the cat yawns»
Модель достаточно хорошо справилась с заданием, теперь посмотрим не переобучилась ли она, и можно ли оптимизировать ее работу. Для этого посмотрим на ее качество на промежуточной стадии, когда модель еще не успела полностью обучиться.

Промт: «a photo of SEMEN cat, cat lying on the bed»
Из этого изображения видно, что переобучения у модели явно нет и возможно имеет смысл увеличить количество шагов при обучении, так как промежуточный результат работы модели гораздо хуже, чем финальный. Модель выучила основные общие черты главного объекта, но достоверно передать его не может. Делаем вывод, что предположительно модель может быть обучена с еще лучшим качеством, если увеличить в ней количество шагов.


Промт 1: «a photo of SEMEN cat, cat with a crown walking in the royal park»; промт 2: «a photo of SEMEN cat, a cat sitting on a throne with a crown and looking like a royal monarch»
При этом при самостоятельном написании промтов, модель выдает сомнительные результаты, неплохо создавая объект, но плохо окружающую среду. Далее попробуем генерить промты с помощью нейросети DeepSeek.
Для генерации изображений была в итоге выбрана модель, обученная с 1000 шагами, а для промтов использовались более подробные описания со словами маркерами (отсылки на авторов портретов конкретного стиля) для достижения наилучшего качества генераций


Промт 1: «a photo of SEMEN cat, Portrait of a cat with a pearl earring, in the style of Johannes Vermeer.»; промт 2: «A cat in a powdered wig and velvet coat, 18th century royal portrait.»
Промт: «a photo of SEMEN cat, A majestic cat king sitting on a throne, wearing an ermine robe and crown, baroque oil painting, dramatic lighting»
Промт: «a photo of SEMEN cat, 18th century French royal portrait of a cat in an elaborate powdered wig, hand resting on a globe»
Промт: «a photo of SEMEN cat, A royal naval portrait of a cat admiral, wearing an elaborate navy uniform, standing on the deck of a ship with a turbulent sea and stormy skies behind him.»
Промт: «a photo of SEMEN cat, A cat king of the Elizabethan era, wearing an immense ruff and a gown embroidered with celestial patterns, her court of other animals blurred and shadowy in the deep back
Промт: «a photo of SEMEN cat, A lavish Baroque still life and portrait hybrid, featuring a serene cat monarch amidst symbols of power: a crown, a sceptre, globes, and rich, draped fabrics, all in dram
Промт: «An intimate, candle-lit portrait of a cat king in a dark blue silk gown, his fur adorned with strands of pearls, his gaze direct and enigmatic, in the style of Johannes Vermeer»
Благодаря тому, что нейросеть была преимущественно обучена на фотографиях с близкими кадрами мордочки Семена, итоговые генерации королевских портретов получились максимально схожими с оригиналом.
Принцип работы кода
Сначала устанавливаем все необходимые библиотеки и делаем просмотр нескольких случайных фотографий в датасете.
Далее с помощью BLIP к каждой фотографии из датасета были сгенерированы подписи, которые служили в качестве промтов. Это было необходимо, так как модель Stable Diffusion обучается обязательно на данных, в которых есть связки промт — результирующее изображение.
Затем происходит обучение самой модели. В параметрах задаем побольше шагов (1000), чтобы модель смогла показать результат лучше. Также обязательно передаем префикс к промтам, который у нас обязательно присутствовал в обучающей выборке.
Сохраняем модель на Hugging Face, где с помощью нее можно будет генерировать изображения.
Или переносим модель на GPU и генерируем изображения сразу в ноутбуке. В проекте в качестве среды разработки использовалась платформа Kaggle, поэтому для нее дополнительно был прописан код для автоматического сохранения готовых изображений, чтобы их можно было в дальнейшем скачать на устройство.