Идея проекта
Цель проекта — обучить генеративную нейросеть Stable Diffusion для создания изображений перепела по имени Скебоб. Скебоб обладает необычным рябым оперением и характерными для перепелов пропорциями, отличающимися от пропорций других птиц. Главной задачей было обучить нейросеть воспроизводить узоры на теле Скебоба, сохранять узнаваемость птицы.
Примеры исходных изображений
В качестве исходных изображений я взяла фотографии Скебоба, которые сама делала в разное время. Были отобраны фотографии в хорошем качестве, потом я обрезала их в соотношении 1:1.






Процесс обучения
Для проекта я использовала предоставленный в задании код, откорректировав его под свои нужды.
Первая попытка генерации оказалась неудачной: нейросеть правильно воссоздала узор оперения Скебоба, однако его пропорции выглядят как пропорции обычной птицы. Хвост длинный, тело маленькое и вытянутое, в то время как у «оригинала» хвост короче, тело круглое и крупное по отношению к голове.
Промпт 1: «photo of a bird» Промпт 2 и 3: «photo of a bird with a cup of coffee»
Ошибка заключалась в неправильно указанном идентификаторе токена концепции. Изначально в качестве токена я указала слово «bird», также дублируя его в промпте. Я думала, что это направит модель в нужное русло и облегчит генерацию, ведь Скебоб — птица. Однако это только запутало нейросеть, заставив ее генерировать более привычных птиц, «натягивая» на них текстуру Скебоба.
Я попыталась заменить токен и промпт на слово «quail» («перепелка»), однако и в этот раз нейросеть выдала что-то, лишь окрасом напоминающее Скебоба.
Пропорции получившийся птицы действительно перепелиные, но это — другие виды перепелки. Видимо, в базе модели недостаточно примеров именно виргинского перепела (порода Скебоба).
Чтобы исправить проблему, я создала новый токен «skebquail». В этом токене все равно есть слово quail, однако суффикс skeb делает его уникальнее. Таким образом нейросеть все еще обращается к своим знаниям о перепелках, однако при этом сильнее опирается на датасет, на котором я ее обучала. Продублировав этот токен в промпте, я получила приемлемый результат: теперь нейросеть генерирует именно Скебоба.
Если же в качестве токена указать просто «skebob», то нейросеть выдаст странные изображения, на которых нет ничего и отдаленно напоминающего перепела.
Итоговые изображения


1 промпт: photo of a skebquail with a computer 2 промпт: photo of multiple skebquail
Промпт: «photo of skebquail wearing a hat»


Промпт 1: «photo of a skebquail in the rain» Промпт 2: «photo of a skebquail wearing a bowtie»
Промпт: «photo of a skebquail wearing a bowtie»
Я также попробовала сгенерировать Скебоба с разными предметами.


Промпт: photo of a skebquail with a ball
И в разном окружении.
Промпт 1: «photo of a skebquail at the beach» Промпт 2: «photo of a skebquail at the mountains» Промпт 3: «photo of a skebquail in the forest»


Промпт 1: : photo of skebquail on a skateboard» Промпт 2: «photo of a skebquail in a bathtub»
Комментарий к результатам
Можно отметить что нейросеть по умолчанию зачастую копирует бежевый стол, который присутствует на многих фотографиях датасета. Это можно исправить более точным промптом.


Слева: моя фотография Справа: сгенерированное изображение. Промпт: «photo of a skebquail»
Таким образом, нейросеть научилась достаточно точно воспроизводить узор оперения Скебоба, его общие пропорции, а также форму глаз и клюва. Иногда встречаются неточности — например, появляется хохолок, которого нет у «оригинала», — но в целом я считаю получившиеся генерации удачными. Очевидный недостаток нейросети — изображение ног птицы с чрезмерным количеством пальцев.













