
Тема
Дообучение модели Stable Diffusion (через LoRA-адаптацию) на изображениях горных пейзажей с целью генерации новых реалистичных видов гор.
Концепция
Проект направлен на исследование того, как генеративная нейросеть способна улавливать природные закономерности (освещение, рельеф, атмосферную перспективу) и создавать новые изображения, сохраняющие ощущение естественности. После обучения модель должна формировать серию пейзажей, близких по стилистике к фотографиям гор, но отличающихся композицией и цветом.
Исходные изображения для обучения
В обучающую выборку вошло около 300 изображений с видами гор: снежные вершины, хребты, облака и долины. Изображения приведены к формату RGB.

Комментарии к коду
1. Подключение и базовые настройки
Подключает Google Drive к Colab, чтобы сохранять данные, веса модели и результаты обучения прямо в твоей папке /MyDrive/Colab_Notebooks/project. Так файлы не теряются после завершения сессии.
Подключение и базовые настройки
2. Импорт библиотек и определение путей
Создает пути к основным директориям проекта: DATA_PATH — где лежат обучающие изображения (датасет). SAVE_DIR — куда будут сохраняться промежуточные и финальные LoRA-веса. MODEL_NAME — базовая предобученная модель Stable Diffusion v1-5.
Импорт библиотек и определение путей
3. Параметры обучения
Определяет гиперпараметры обучения: Размер батча (1 изображение за итерацию). Скорость обучения (1e-4). Количество эпох и шагов (400 итераций). Частота сохранения промежуточных чекпоинтов (каждые 50 шагов).
Параметры обучения
4. Настройка устройства
Определяет, будет ли обучение идти на GPU (CUDA) или CPU. Если есть GPU, данные обрабатываются быстрее и хранятся в float16, иначе — в float32.
Настройка устройства
5. Сбор изображений
Проходит по всем подпапкам и собирает пути ко всем изображениям нужных форматов, чтобы использовать их для обучения модели.
Сбор изображений
6. Класс MountainDataset (подготовка данных)
Создает объект-датасет, совместимый с PyTorch. Загружает изображения из папки.Приводит их к одному размеру и нормализует. Для каждого изображения случайно выбирает caption — текстовое описание сцены. Caption используется как текстовая подсказка (prompt), чтобы модель училась связывать изображение и текст.
Класс MountainDataset (подготовка данных)
7. Создание модели Stable Diffusion + LoRA
Загружает базовую модель Stable Diffusion. Из неё берётся часть unet — это основная сеть, которая «учится» восстанавливать изображение из зашумленных данных. Затем добавляется LoRA (Low-Rank Adaptation) — это компактный слой, который позволяет дообучать модель под новый стиль (в данном случае — пейзажи) без изменения оригинальных весов. Так обучение становится значительно быстрее и менее ресурсоёмким.
Создание модели Stable Diffusion + LoRA
8. Цикл обучения
Что происходит в каждой итерации: Загружается одно изображение и его caption. Модель кодирует изображение в латентное пространство (через VAE). К изображению добавляется шум — имитируется процесс диффузии (разрушение изображения). UNet пытается предсказать этот шум, используя текстовое описание (caption) как контекст. Вычисляется ошибка (MSE Loss) между предсказанным и настоящим шумом. Ошибка используется для обновления весов LoRA через optimizer.step (). Таким образом, модель постепенно учится восстанавливать «пейзажи с горами» из шума, ассоциируя их с текстовыми подписями.
Цикл обучения
9. Сохранение результатов
Периодически сохраняет промежуточные чекпоинты обучения, чтобы можно было остановить и продолжить. После завершения сохраняет финальные LoRA-веса в папку /lora/final.
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) для составления промптов для генерации.