
Идея проекта
Обучить генеративную модель (Stable Diffusion с дообучением LoRA) на целевом датасете с изображениями архитектуры Рима, чтобы нейросеть умела по текстовому описанию фотографически воссоздавать сцены с узнаваемыми римскими объектами и характерной визуальной средой.
Исходные изображения
Примеры исходных изображений
Процесс обучения
Импорт необходимых библиотек
Подключение Google Drive для доступа к датасету и сохранения результатов
Задание основных параметров обучения: пути, размер изображений, количество шагов, устройство, тип данных
Фиксация случайных чисел для воспроизводимости обучения
Поиск и сбор всех изображений в папке с датасетом
Создание собственного датасета: загрузка изображений, изменение размера и добавление текстовых подписей
Подготовка данных к обучению через DataLoader
Загрузка модели Stable Diffusion и перевод UNet в режим обучения
Добавление адаптеров LoRA в слои внимания модели для дообучения стиля
Выбор оптимизатора AdamW для обновления параметров LoRA
Основной цикл обучения:
for epoch in range (Config.EPOCHS): for batch in tqdm (dl): pixel_values = batch[«pixel_values»].to (Config.DEVICE) latents = pipe.vae.encode (pixel_values).latent_dist.sample () * 0.18215 text_embeddings = pipe.text_encoder ( pipe.tokenizer (batch[«caption»], return_tensors="pt», padding=True).input_ids.to (Config.DEVICE) )[0] noise = torch.randn_like (latents) timesteps = torch.randint (0, pipe.scheduler.config.num_train_timesteps, (latents.shape[0],), device=Config.DEVICE) noisy_latents = pipe.scheduler.add_noise (latents, noise, timesteps) model_pred = unet (noisy_latents, timesteps, encoder_hidden_states=text_embeddings).sample loss = nn.functional.mse_loss (model_pred.float (), noise.float ()) optimizer.zero_grad () loss.backward () optimizer.step ()
Сохранение финальных весов LoRA для последующего использования при генерации изображений
Загрузка базовой модели Stable Diffusion 1.5 и подключение обученных LoRA-весов для генерации в нужном стиле
Случайный выбор промпта, создание изображения, сохранение файла с отметкой времени
Промпты:
«A breathtaking view of the Roman Forum at dawn, sun rays lighting up the ruins, high realism, 8k quality»,
«The majestic Colosseum standing tall under a clear sky, sharp contrast of light and shadow, realistic architecture»,
«A busy street in modern Rome with a mix of classic architecture and scooters, cinematic urban photography»,
«The Vatican at sunset, St. Peter’s Basilica illuminated with soft golden light, detailed historical buildings»,
«A stunning aerial view of Rome’s ancient ruins blending into the modern cityscape, ultra-detailed textures»,
«The Pantheon’s iconic oculus casting beams of light onto the floor, intricate detailing, ancient Roman architecture»
Итоговые изображения




Материалы
Результаты
В ходе работы удалось успешно обучить модель Stable Diffusion с использованием метода LoRA на небольшом наборе изображений, отражающих архитектуру Рима. После подключения полученных весов к базовой модели нейросеть начала уверенно воспроизводить узнаваемые черты римской городской среды.
Результаты генерации показали, что даже короткое дообучение позволяет заметно сместить визуальный стиль модели в сторону римской тематики. При этом сохраняется общий реализм, заложенный в базовой версии Stable Diffusion. На ряде изображений появились типичные элементы — Колизей, Форум, Пантеон, узкие улицы с балконами и растительностью, а также правильная передача фактур камня и света.