Цель проекта — дообучить генеративную модель Stable Diffusion XL так, чтобы она запомнила конкретный образ собаки и могла затем воспроизводить его в новых сценах по текстовому запросу.
Для этого используется датасет фотографий собак, на основе которого через DreamBooth LoRA модель связывает специальный токен DOGTOK с устойчивым визуальным образом объекта. После обучения проверяется, насколько хорошо модель переносит этот образ в разные условия — с другим фоном, освещением и дополнительными деталями. Таким образом, проект показывает, как с помощью дообучения можно сделать генерацию изображений более управляемой и персонализированной.
Исходные изображения для обучения
В качестве обучающего набора использовались фотографии собак из открытого датасета jockeroika/dogs-photo-dataset, загруженного через kagglehub. В коде из общего массива выбирается ограниченное число изображений (120 файлов), которые затем используются для обучения модели. Набор включает фотографии собак в разных ракурсах и условиях съёмки, что позволяет модели опираться не на один конкретный кадр, а на более общий визуальный образ объекта — форму тела, строение морды, фактуру шерсти и особенности фотографического изображения собаки.
Связь итоговой серии изображений с концепцией проекта
В основе проекта лежит идея дообучить генеративную модель так, чтобы она запомнила конкретный образ собаки и могла затем воспроизводить его в новых сценах по текстовому запросу. Для этого в коде используется специальный токен DOGTOK, который связывается с устойчивым визуальным образом объекта. Главная задача проекта — сделать этот образ управляемым: не просто получать случайные изображения собак, а генерировать новые сцены, в которых сохраняются основные черты одного и того же обученного объекта.
По коду видно, что проект выстроен как полный рабочий пайплайн. Сначала подключаются нужные библиотеки и задаются основные параметры проекта, а затем через kagglehub загружается датасет jockeroika/dogs-photo-dataset. Из общего массива в рабочую папку копируется ограниченное количество изображений — в данном случае 120 файлов. Датасет не используется целиком, чтобы обучение оставалось выполнимым в Colab и не требовало слишком больших вычислительных ресурсов.
Следующий важный этап — подготовка текстовых подписей для обучения. Для всех изображений формируется единая подпись «a photo of DOGTOK dog», которая записывается в metadata.jsonl. Это значит, что модель обучается не на длинных и разных описаниях каждой фотографии, а на общем представлении об объекте. Такой подход помогает привязать токен DOGTOK к устойчивому визуальному образу собаки и не перегружает пайплайн лишними деталями.
Само обучение запускается на базе stabilityai/stable-diffusion-xl-base-1.0 с отдельным VAE madebyollin/sdxl-vae-fp16-fix. При этом используется не полное переобучение модели, а LoRA-адаптация через DreamBooth, что делает проект более реалистичным с точки зрения вычислительных затрат. В коде заданы параметры resolution=512, train_batch_size=1, gradient_accumulation_steps=4, learning_rate=1e-4, max_train_steps=600, checkpointing_steps=200, а также fp16 и 8bit Adam. Такая конфигурация нацелена на стабильный и убедительный результат в доступной среде.
После завершения обучения из папки OUTPUT_DIR загружаются сохранённые веса pytorch_lora_weights.safetensors, и уже с ними собирается DiffusionPipeline для генерации итоговой серии изображений. Это важный момент, потому что проект показывает не отдельный фрагмент работы, а весь цикл целиком: от подготовки датасета и запуска обучения до подключения готовой LoRA и проверки того, как она ведёт себя на новых запросах.
Итоговая серия изображений строится как набор тестовых генераций, где один и тот же обученный объект — собака, связанная с токеном DOGTOK, — помещается в разные визуальные условия. После обучения в коде задаются несколько промптов, чтобы проверить, насколько хорошо модель переносит усвоенный образ собаки в разные среды, типы освещения и ситуации съёмки.
Отдельную роль играет negative_prompt: cartoon, painting, drawing, low quality, blurry, text, watermark. С его помощью генерация дополнительно отталкивается от нежелательных признаков — мультяшности, живописности, размытости и артефактов вроде текста или водяных знаков. Таким образом модель специально направляют в сторону реалистической фотографии.
С точки зрения анализа здесь важно не просто сказать, что картинки получились разными, а показать, в чём именно проявляется вариативность. В итоговой серии меняется пространство — парк, студия, улица, трава, — меняется освещение, но при этом должен сохраняться общий образ собаки: правдоподобные пропорции, цельная анатомия, узнаваемая структура шерсти и ощущение, что это всё ещё один и тот же объект — такая управляемая вариативность показывает, что модель усвоила не отдельный кадр, а более общий визуальный образ.
Особенно показателен отдельный тест с красным шарфом. Он нужен, чтобы проверить, может ли модель добавить новый элемент в сцену и при этом не разрушить сам образ собаки. Если генерация остаётся убедительной, это значит, что LoRA не просто повторяет тренировочные шаблоны, а действительно умеет сочетать выученный объект с новыми деталями.
Если подвести итог, проект показывает, как дообученная SDXL LoRA переносит образ собаки в несколько новых визуальных ситуаций. Главный акцент здесь сделан не на стилизации, а на реалистической вариативности: разные сцены, разный свет, разные условия съёмки, но один и тот же обученный объект, связанный с токеном DOGTOK. Именно в этом и состоит основная идея итоговой серии.
Использование ГенИИ:
в работе был использован ChatGPT для того, чтобы сделать код более чистым и удобочитаемым, а также переназвать переменные




