Original size 2480x3500

Генерация изображений гор на основе Stable Diffusion

PROTECT STATUS: not protected

Тема

Дообучение модели Stable Diffusion (через LoRA-адаптацию) на изображениях горных пейзажей с целью генерации новых реалистичных видов гор.

Концепция

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

Исходные изображения для обучения

В обучающую выборку вошло около 300 изображений с видами гор: снежные вершины, хребты, облака и долины. Изображения приведены к формату RGB.

big
Original size 1774x950

Комментарии к коду

1. Подключение и базовые настройки

Подключает Google Drive к Colab, чтобы сохранять данные, веса модели и результаты обучения прямо в твоей папке /MyDrive/Colab_Notebooks/project. Так файлы не теряются после завершения сессии.

Original size 2979x331

Подключение и базовые настройки

2. Импорт библиотек и определение путей

Создает пути к основным директориям проекта: DATA_PATH — где лежат обучающие изображения (датасет). SAVE_DIR — куда будут сохраняться промежуточные и финальные LoRA-веса. MODEL_NAME — базовая предобученная модель Stable Diffusion v1-5.

Original size 2979x411

Импорт библиотек и определение путей

3. Параметры обучения

Определяет гиперпараметры обучения: Размер батча (1 изображение за итерацию). Скорость обучения (1e-4). Количество эпох и шагов (400 итераций). Частота сохранения промежуточных чекпоинтов (каждые 50 шагов).

Original size 2979x615

Параметры обучения

4. Настройка устройства

Определяет, будет ли обучение идти на GPU (CUDA) или CPU. Если есть GPU, данные обрабатываются быстрее и хранятся в float16, иначе — в float32.

Original size 2979x263

Настройка устройства

5. Сбор изображений

Проходит по всем подпапкам и собирает пути ко всем изображениям нужных форматов, чтобы использовать их для обучения модели.

Original size 2979x325

Сбор изображений

6. Класс MountainDataset (подготовка данных)

Создает объект-датасет, совместимый с PyTorch. Загружает изображения из папки.Приводит их к одному размеру и нормализует. Для каждого изображения случайно выбирает caption — текстовое описание сцены. Caption используется как текстовая подсказка (prompt), чтобы модель училась связывать изображение и текст.

Original size 2979x1891

Класс MountainDataset (подготовка данных)

7. Создание модели Stable Diffusion + LoRA

Загружает базовую модель Stable Diffusion. Из неё берётся часть unet — это основная сеть, которая «учится» восстанавливать изображение из зашумленных данных. Затем добавляется LoRA (Low-Rank Adaptation) — это компактный слой, который позволяет дообучать модель под новый стиль (в данном случае — пейзажи) без изменения оригинальных весов. Так обучение становится значительно быстрее и менее ресурсоёмким.

Original size 2979x1466

Создание модели Stable Diffusion + LoRA

8. Цикл обучения

Что происходит в каждой итерации: Загружается одно изображение и его caption. Модель кодирует изображение в латентное пространство (через VAE). К изображению добавляется шум — имитируется процесс диффузии (разрушение изображения). UNet пытается предсказать этот шум, используя текстовое описание (caption) как контекст. Вычисляется ошибка (MSE Loss) между предсказанным и настоящим шумом. Ошибка используется для обновления весов LoRA через optimizer.step (). Таким образом, модель постепенно учится восстанавливать «пейзажи с горами» из шума, ассоциируя их с текстовыми подписями.

0

Цикл обучения

9. Сохранение результатов

Периодически сохраняет промежуточные чекпоинты обучения, чтобы можно было остановить и продолжить. После завершения сохраняет финальные LoRA-веса в папку /lora/final.

Original size 2979x428

10. Как модель обучается

Берём изображение → превращаем его в латент → добавляем шум. Модель учится предсказывать, какой шум был добавлен. LoRA адаптирует нейросеть, чтобы она делала это хорошо именно для горных пейзажей.

Итоговая серия изображений

Модель сгенерировала 20 новых изображений, используя случайные промпты вроде: «majestic mountain landscape under warm light», «misty valley with sunrise», «snow-covered peaks with dramatic clouds».

Результаты демонстрируют разнообразие света, погоды и ракурсов — от ярких дневных сцен до мягких утренних тонов.

Развернутый комментарий и визуальный анализ

Что удалось передать:

1. Фактура скал и снега выглядит естественно. 2. Переданы мягкие градиенты света и цвета. 3. Модель уловила пространственную глубину и атмосферу тумана.

Недочёты: В ряде генераций встречались искажения — деформированные пики, неестественная текстура облаков, пересвеченные области. Это связано с ограниченностью выборки и отсутствием точных описаний.

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

Параметры обучения: r=4, lora_alpha=16, dropout=0.1, lr=1e-4, steps=400.

Jupiter/Colab Notebook

ссылка

lora — обучает модель photo — создает фотки data — фотки которые использовались для обучения output — фотки которые получились

Использование GenaAI

В проекте использовался ChatGPT (GPT-5) для составления промптов для генерации.

Генерация изображений гор на основе Stable Diffusion
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more