Каталог керамики, которая не хотела быть идеальной
Керамика почти никогда не выходит ровной. Глина садится при обжиге, глазурь стекает на одну сторону, ручка прилипает чуть косо. Обычно это называют браком. Но мне всегда казалось, что именно в этих случайностях предмет становится живым. По нему видно, что его делали руками, а не станком.
«krivo» это исследование эстетики несовершенства через генеративную нейросеть.
Я обучила Stable Diffusion XL (через LoRA) на коллекции намеренно несовершенной керамики: кривых кружек, перекошенных ваз, тарелок с волнистым краем, чайников с деформированным носиком и сильными подтеками. Задача была не нарисовать красивую керамику, а научить модель видеть красоту в ошибке и затем сгенерировать каталог предметов, которых никогда не было, но которые могли бы стоять на полке музея несовершенства.Проект о том, что дизайн не обязан быть безупречным. Ошибка это язык. Кривизна это подпись автора, а не дефект.
Исходные изображения для обучения
Датасет — 29 квадратных изображений (1:1), сгенерированных в Google Gemini по авторским промтам. Все изображения приведены к единому стилю: студийная съёмка, нейтральный серый фон, мягкий рассеянный свет; землистая палитра: бежевый, охра, мшисто-зелёный, тёплый серый; намеренные дефекты: кривые ручки, потёки глазури, трещины, отпечатки пальцев, волнистые края; фактура: видимая глина, грубая ножка, микропузырьки в глазури.
Генерации Google Gemini по собственным промтам
Результирующая серия
Обученная LoRA-модель сгенерировала серию из 6 предметов, которых никогда не было в датасете, но которые продолжают его язык.
Чаша
Чайник
Высокая ваза
Чашка
Кувшин
Скульптурный сосуд
Что удалось передать
— Консистентность палитры. На всех шести изображениях модель воспроизводит землистую гамму: бежевый, охра, мшисто-зелёный. Это не задавалось отдельно в промптах генерации: палитра «вшита» в LoRA-веса, потому что была сквозной в датасете. Модель выучила её как часть стиля, а не как описание конкретного объекта.— Студийная постановка. Нейтральный серый фон, мягкий рассеянный свет, без указания в промпте. Модель распознала, что «krivo» это не только предметы, но и способ их съёмки.— Микротекстура. Потёки глазури у основания, тонкие трещины, отпечатки пальцев — модель воспроизводит их на уровне, достаточном для рассматривания.
Как результаты соответствуют идее
Первоначальная идея «научить модель видеть красоту в ошибке». Результат её подтверждает: модель не пытается «исправить» керамику, не выравнивает края, не делает ручки симметричными. Наоборот, она воспроизводит и даже усиливает несовершенство. Каждый сгенерированный предмет выглядит как предмет из той же мастерской, что и датасет, но сделанный «по мотивам», а не скопированный.
Детали генерации и дополнительные методы
Обучение. LoRA + DreamBooth на 29 изображениях, 500 шагов, resolution=512, batch_size=2, gradient_accumulation_steps=3. Время обучения — ~53 минуты на Tesla T4 (бесплатный Colab). LoRA применена только к U-Net (основной генеративной части SDXL), без текстовых энкодеров.
Что попало в модель. LoRA-веса (23 МБ) содержат «сжатую формулу» эстетики krivo: палитру, постановку, характер дефектов, фактуру. При генерации эти веса накладываются поверх базовой SDXL, направляя её в сторону несовершенства.
1. Подготовка окружения (ячейки 1–4)
Команда nvidia-smi проверяет, доступна ли видеокарта. В сохранённом выводе ноутбука указана Tesla T4 с 15 ГБ видеопамяти. В этом запуске её хватило для обучения с настройками, указанными далее. Затем устанавливаются библиотеки для работы с моделью и обучения: transformers, diffusers, accelerate, peft, bitsandbytes, torchao и datasets. Последняя команда скачивает скрипт Hugging Face для обучения DreamBooth LoRA на базе SDXL.
2. Создание папки и загрузка изображений
(ячейки 5–6)
Создаётся папка krivo, в которой будут храниться изображения обучающей выборки. Параметр exist_ok=True позволяет выполнить ячейку без ошибки, если папка уже существует. Открывается окно загрузки файлов Google Colab. Изображения сохраняются в созданную папку, после чего рабочая директория возвращается в /content. В этом запуске было загружено 29 фотографий с именами от 01.jpg до 29.jpg.
3. Просмотр обучающей выборки (ячейка 7)
Создаётся функция image_grid, которая собирает несколько изображений в общую сетку. Она нужна для предварительного просмотра датасета. Изображения уменьшаются до 256 × 256 пикселей для просмотра. Сами исходные файлы при этом не перезаписываются.











