
Идея и описание
Три оранжевые собаки — это проект про три поколения рыже-белых восточносибирских лаек.

Знакомьтесь: Гайда, Марта и Юта
Гайда, Марта и Юта (собака-бабушка, дочка и внучка соответственно) живут в деревне у бабушки и дедушки. У собак есть одна черта, передающаяся из поколения в поколение — рыже-белый окрас. Из-за этого очень часто незнакомые с ними люди путают их.

prompt = «three LAIKAA dogs standing on the porch of a wooden house, waiting at the door, returned home, evening light, cozy cottage, detailed fur, realistic photo, domestic scene»
Но дело в том, что ни одной из них ни секунды не сидится на месте и при любой удобной возможности они бегут исследовать всё, что за пределами двора. Однажды, все трое вернулись только ближе к ночи.
Так я выявила две задачи, которые хочу решить обучением модели. Во-первых попробовать пофантазировать, куда пропали три оранжевые лайки на весь день. Во-вторых, я собрала датасет из 55 фотографий 512/512 с изображением всех трёх собак, где постаралась равномерно распределить количество фото с каждой из трёх. И мне стало интересно, чья мордочка и чьи очертания станут ведущими в создания образа рыжей собаки. Или нейросеть сможет их дифференцировать?
Я начала с базовых генераций одной-трёх собак по самым простым промптам, чтобы понять, насколько нейросеть способна прочитать образ собаки в целом. Изначально все собаки на изображениях выглядели в основном как Марта.


prompt = «LAIKAA dogs having picnic in the park»
Далее я попросила Deepseek помочь скорректировать промпт, чтобы уйти от резких анатомических искажений и абсолютного непонимания заданного количества собак в кадре. Нейросеть составила для меня дополняющий негативный промпт: «ugly, bad anatomy, extra limbs, missing limbs, deformed, mutated, disfigured, 3 legs, 5 legs, bad proportions, blurry, malformed, distorted, poorly drawn».
prompt = «LAIKAA dogs having picnic in the park» + negative_prompt
prompt = «baby LAIKAA dog sitting on the bench» + negative_prompt
Такие базовые генерации были сделаны с целью не только оценить возможности обученной нейросети, но и понять примерный уровень дифференциации образов трёх собак. Первое время нейросеть выдавала только образ Марты, но стоило ей чуть больше поработать, другие тоже стали проглядываться.
Так где же были три оранжевые собаки?
prompt = «two LAIKAA dogs sitting near to the pond» + negative_prompt
Кажется, сначала рыжие собаки могли пойти в парк, смотреть на уток. Но свернули в магазин…
prompt = «one LAIKAA dog looking through a supermarket window at food products, modern grocery store interior, clean floors, shopping carts, fluorescent lighting, photorealistic»
Генерации в магазине кажутся одними из наиболее удачных в проекте, потому что мы видим трёх разных собак на всех фото. И интеграция объектов в среду получилась пока что самой приятной.


prompt = «two LAIKAA dogs wearing large headphones at a live concert, crowd in the background, stage lights, realistic photo», prompt = «two LAIKAA dogs trying to fit on flamingo at the pool»
И неожиданно оказались в Париже.
prompt = «two LAIKAA dogs sitting together with Eiffel Tower in background, Paris cityscape, Champs de Mars, realistic photo, detailed fur, looking at the tower»
Чем больше нейросеть тренируется генерировать собак, тем отчётливее проявляются разности мордочек получаемых животных. И с какой-то периодичностью окраска тоже начинает варьироваться.


prompt = «one LAIKAA dog in a spacesuit floating in space, Earth in the background, detailed suit, realistic astronaut dog», «one LAIKAA dog inside spaceship cockpit, viewing Earth from window, detail
И всё же, рыжие собаки смогли вернуться домой.
prompt = «tree LAIKAA dogs standing on the porch of a wooden house, waiting at the door, returned home, evening light, cozy cottage, detailed fur, realistic photo, domestic scene»
Как это было сделано?
Для генерации изображений была обучена нейросеть Stable Diffusion, используя метод DreamBooth с LoRA. Для начала были подгружены необходимые библиотеки.
Затем подгружаем собранную базу для обучения в коллаб и выводим изображения, чтобы убедиться.
Далее настраиваем GPU, ускоряем работу чисткой и подгружаем Hugging Face для последующего хранения обученной модели.
Обучаем модель на примерах собранного датасета.
Сохраняем обученную нейросеть в Hugging Face.
Загружаем обученную модель для генерации и вводим промпты.
Выводы
В первую очередь мне удалось обучить Stable Diffusion работать с объектом. Нейросеть запомнила трёх рыжих собак, благодаря чему смогла помещать их в разные среды. А я смогла визуализировать, где же они так долго были.
prompt = «one LAIKAA dog standing on the porch of a wooden house, waiting at the door, returned home, evening light, cozy cottage, detailed fur, realistic photo, domestic scene»
На мой взгляд, чем дольше нейросеть обучалась генерировать запрашиваемый контент, тем лучше она начинала различать Гайду, Марту и Юту между собой, хотя изначально любимицей была выбрана очевидно Марта. Но в итоге их образ не слился в один.