Введение в ключевые концепции обучения LoRA — Часть 1: Датасет
ЧАСТЬ 1 ==== ОСНОВНЫЕ ПОНЯТИЯ / FAQ / ПОДГОТОВКА ДАТАСЕТА ====
Что такое LoRA? Аббревиатура LoRA расшифровывается как Low-Rank Adaptation (низкоранговая адаптация). Это своеобразный адаптер, который вы обучаете и «надеваете» на модель, чтобы изменить результаты её генерации.
Представьте себе порт USB-C на вашем компьютере. Без подходящего кабеля подключиться к нему не выйдет. А если нужно подсоединить устройство с классическим разъемом USB-A, потребуется переходник, который «адаптирует» USB-C под нужный формат. С LoRA всё обстоит точно так же: это адаптер для модели (будь то Chroma, Qwen, Flux Klein или Z-Image).
LoRA не объясняет нейросети, как устроен мир, — базовая модель и так это прекрасно знает. LoRA лишь дает команду: «Когда увидишь это слово-триггер, смести генерацию в сторону вот этого конкретного образа».
В рамках данного руководства я буду исходить из того, что мы обсуждаем в первую очередь LoRA для генерации персонажей (Character LoRA), хотя большинство описанных концепций применимы и к другим типам адаптеров.
Краткий FAQ
Могу ли я использовать LoRA, скачанную с CivitAI для SDXL, на модели Flux? Нет. Как правило, LoRA физически несовместима с архитектурой, отличной от той, на которой она обучалась. Вы не сможете вставить переходник для USB-C в совершенно другой разъем — он подходит только для USB-C. LoRA обучается строго ПОД конкретную модель и работает только с НЕЙ.
Моя LoRA на персонажа выдает стабильный результат в 70% случаев — это нормально? Нет. Грамотно обученная LoRA должна обеспечивать около 95% сходства при адекватных вариациях промпта. Более того, на сегодняшний день это единственно надежный способ стабильно генерировать одного и того же героя, если изначально он не был знаком базовой модели. Заметьте, я говорю про 95%, а не про 100%. И это совершенно естественно. Сравните это с качественной фотосессией живого человека: лица на снимках никогда не будут совпадать пиксель-в-пиксель. Разный свет, ракурсы, мимика — но вы безошибочно узнаете на них одного и того же человека. Именно этому стандарту должна соответствовать высококлассная LoRA. Если ваша модель работает лишь «постольку-поскольку», значит, где-то закралась ошибка — скорее всего, в датасете, описаниях или параметрах обучения. Не довольствуйтесь посредственными результатами!
Можно ли скрещивать LoRA на персонажа с другими адаптерами? Нет. Я понимаю, когда листаешь бесконечные списки на CivitAI, руки так и чешутся использовать одну LoRA для фиксации персонажа, а сверху накинуть еще одну для динамичной позы или стиля. Но увы, ответ — нет: гладкой работы не выйдет. При одновременном подключении к модели веса двух LoRA просто суммируются и накладываются поверх весов базовой модели. Нейросеть понятия не имеет, что это два разных адаптера, — она видит лишь итоговый результат. Между ними нет ни «переговоров», ни системы приоритетов, ни понимания конфликтов. Это банальная математическая сумма. Например, поскольку LoRA на позу неизбежно обучается на фотографиях людей (а у людей есть лица), черты этих лиц отпечатываются в весах адаптера. Скрестите её с LoRA на персонажа, и вы потеряете сходство, потому что лицевые признаки из позирующего датасета неминуемо исказят черты вашего героя. Способы обойти эту проблему существуют, но они требуют глубоких знаний, ювелирной настройки и далеко не всегда надежны. Подробный разбор таких техник выходит за рамки этого руководства.
Кто-то поделился своими настройками. Можно ли использовать их для обучения моей LoRA? Нет. Подобными «рецептами» забит весь Reddit и интернет в целом, но они абсолютно бесполезны, если не адаптировать их под вашу конкретную задачу. Дело в том, что все гиперпараметры при обучении LoRA взаимосвязаны. Каждая ситуация уникальна. Однако к концу этого гайда вы начнете понимать смысл большинства из них и научитесь применять их на практике. Читайте дальше!
Одни говорят, что датасет вообще не нужно описывать тегами, другие — что нужно прогонять всё через автотеггер. Кому верить? Никому! Обе стратегии ошибочны и приведут к созданию либо нестабильной, либо «деревянной» (негибкой) LoRA. Ниже я объясню, почему разметка текста — критически важный этап, требующий вдумчивого составления описания к каждому изображению. Следуйте этому руководству, и качество ваших моделей взлетит до небес.
Сколько изображений нужно для датасета? Вполне достаточно как пары-тройки фотографий, так и сотни. Главное здесь другое: то, что должно повторяться, обязано присутствовать на каждом кадре стабильно, а всё остальное должно быть максимально разнообразным. Именно поэтому при создании персонажей вы зачастую добьетесь лучшего результата, используя меньшее количество кадров — при условии, что это кристально четкие, идеальные изображения, — вместо того чтобы забрасывать алгоритм горой картинок низкого качества. В большинстве случаев идеальный рецепт для персонажа — около 15 портретов и 10 кадров в полный рост.
Если вы работаете с синтетическими (сгенерированными) персонажами и черты их лица скачут от кадра к кадру, на выходе вы получите усредненную «кашу», которая окажется совсем не похожей на ваш идеал. Это правило применимо и к реальным людям: фотографии, сделанные в разные годы, разными фотографами, при разном освещении, могут сами по себе таить визуальные несоответствия. LoRA прилежно усвоит всю эту мешанину, и в результате вы получите лицо, не сильно напоминающее ни одну из исходных фотографий. Решение здесь одно: максимально придирчиво отбирать исходники, добиваясь эталонного сходства между ними.
Как именно LoRA «учится»? Она анализирует всё, что систематически повторяется в вашем датасете.
- Если повторяется некая деталь, которая вам не нужна, она неизбежно «просочится» в финальную генерацию. Пример: на большинстве кадров ваш объект снят на белом студийном фоне. При обучении этот фон может намертво вшиться в LoRA, и она будет выдавать его даже тогда, когда вы попросите нарисовать совершенно иное окружение.
- Если какая-то деталь повторяется, но вы хотите иметь возможность менять её через промпт, LoRA будет сопротивляться и отказываться генерировать вариации. Пример: в датасете преобладают снимки анфас. Из-за этого заставить модель нарисовать красивый профиль станет почти невыполнимой задачей.
Поэтому к сбору набора данных нужно подходить с хирургической точностью. Показали ли вы со всех ракурсов то, что модель должна запомнить? Убедились ли вы, что всё остальное максимально разнообразно и не дублируется?
Важность постановки цели
Чтобы создать первоклассную LoRA, необходимо чётко понимать свою конечную цель. Вы должны определить для себя следующее:
- Художественный стиль: реализм, аниме и т.д.
- Тип адаптера: в этом гайде я ориентируюсь на персонажей, но другие виды (стиль, поза, продукт, мультиконцепт) могут потребовать иных настроек.
- Что является неотъемлемой частью личности героя и НИКОГДА не должно меняться? Всегда одинаковый цвет волос и прическа или они могут варьироваться? Одежда строго фиксирована или персонаж может переодеваться? Фоновое окружение всегда одно или меняется? Тип телосложения стабилен или нет? Хотите ли вы, чтобы вон та татуировка стала частью облика, или ее можно будет убрать при генерации? Должны ли очки быть обязательным атрибутом или это просто аксессуар? И так далее.
- Должна ли LoRA научить модель совершенно новой концепции? Или она лишь конкретизирует уже известные (например, черты конкретного лица)?
Только ответив на эти вопросы, вы сможете грамотно собрать датасет и составить к нему безупречные описания.
Вдумчивая сборка датасета
Отталкиваясь от полученных ответов, приступайте к формированию набора данных. Каждое изображение должно нести в себе крупицу новой информации для обучения:
Различные ракурсы камеры:
- Вид спереди (анфас)
- Профиль (левый и правый)
- В три четверти (слева и справа)
- Вид сзади в три четверти (слева и справа)
- Вид со спины
Различная высота съемки:
- Камера смотрит сверху вниз
- Камера смотрит снизу вверх
Различная крупность плана:
- Макро (экстремальное приближение мелкой или сложной детали)
- Крупный план (зум на конкретную область)
- Портрет (голова и плечи)
- Средний план (от головы до пояса)
- Американский план (cowboy-shot, от головы до середины бедра)
- Средне-общий план (от головы до уровня чуть ниже колен)
- В полный рост (от макушки до пят)
- Общий план (издали, с широким углом обзора)
Различная композиция:
- Портрет с объектом по центру
- Объект смещен от центра (композиция по правилу третей)
- Объект далеко от камеры (общий план), расположен в разных частях кадра
- Объект очень близко к камере (например, словно снят на телеобъектив или виден частично)
- Альбомная (landscape) и портретная (portrait) ориентация
- Изображения с разными соотношениями сторон
Вариативность окружения и облика:
- Разнообразные фоны
- Разнообразные действия, которые выполняет объект
- Разнообразное освещение (золотой час, естественный свет на улице, искусственный студийный, глубокие тени)
- Разнообразная одежда (если только вы не хотите намертво привязать персонажа к одному костюму, как супергероя Marvel)
- Разнообразный макияж и аксессуары (если применимо)
- Разнообразные прически, цвет волос, текстура и длина (опять же, если вы не создаете аниме-персонажа с неизменной укладкой)
Кадры в полный рост крайне важны — они помогают LoRA выучить пропорции тела. Огромным плюсом будут исходники, где объект находится рядом со стандартными предметами (кухонные столешницы, дверные проемы или автомобили): так нейросеть поймет реальный рост персонажа в пространстве.
На каждом изображении датасета обучаемый объект должен оставаться неизменным. То есть, если у героя есть татуировка, которая является ЧАСТЬЮ его образа, она обязана присутствовать на всех кадрах ровно в одном и том же месте. Если у вашего аниме-персонажа синие волосы, они должны быть синими на всех без исключения картинках.
А вот всё остальное дублироваться не должно! Меняйте фон на каждом снимке. Переодевайте героя в разную одежду на каждом кадре, и так далее.
Для самой простой базовой LoRA постарайтесь, чтобы ваш набор состоял минимум на 50% из портретов крупным планом (именно там кроется львиная доля визуальной информации) и примерно на 25% — из кадров в полный рост.
О разрешении и усвоении информации
Фундаментальный принцип работы нейросети гласит: модель может выучить лишь то, что физически присутствует на картинке. На фото в полный рост размером в 1 мегапиксель область глаза может занимать жалкие 20х15 пикселей — там попросту нет никаких мелких деталей для обучения. Вот почему макроснимки — критически важная составляющая любого хорошего датасета: дело не только в ракурсах и охвате, дело в плотности информации. Крупный план глаза, занимающий весь кадр в высоком разрешении, даст алгоритму в десятки раз больше полезных данных, чем десять фотографий в полный рост вместе взятых.
Для создания высококлассной Character LoRA убедитесь, что в ваш датасет включены:
- Макроснимки глаз персонажа.
- Детальные планы любых специфических татуировок.
- Крупные планы веснушек и родинок.
- Крупные планы формы лица со всех возможных ракурсов: анфас, три четверти, профиль, вид сзади в три четверти, строго со спины, вид сверху, вид снизу.
- Сложные и мелкие участки тела вроде кистей рук, пальцев, стоп и так далее.
Заметка о качестве: всегда используйте для датасета максимально четкие изображения в самом высоком разрешении, какое только сможете найти. Размытые, пережатые картинки или фото в низком качестве попросту отравят вашу LoRA, и все эти артефакты перекочуют в итоговую генерацию. Один резкий макроснимок нужной детали содержит больше информации для обучения, чем десяток мыльных кадров того же самого объекта. Убедитесь, что на исходниках нет водяных знаков и нежелательных артефактов.
Тот же принцип работает и на этапе генерации: просить модель выдать кадр в полный рост и ожидать идеальной детализации на крошечном лице — значит требовать от неё невозможного, ведь у неё банально не хватит пиксельного бюджета. Решение проблемы кроется в генерации в высоком разрешении, использовании проходов для улучшения лиц (face detail passes) или локальной перерисовке (inpainting) увеличенного фрагмента.
Обучение на полностью вымышленном персонаже: замкнутый круг
Создавая LoRA для несуществующего персонажа (чей облик был сгенерирован ИИ, а не сфотографирован), вы часто сталкиваетесь с проблемой курицы и яйца. У вас есть один великолепный портрет вашего героя — но вам нужно больше. Чтобы собрать качественный датасет, нужны десятки картинок в едином стиле, а для этого требуется... обученная LoRA. Которой у вас еще нет, ведь вы только собираетесь её создать.
Существует несколько стратегий, позволяющих получить дополнительные кадры из одного стартового портрета:
- Использовать модель WAN в связке с пайплайном image2video, чтобы анимировать начальную картинку в 360-градусное видео, а затем извлечь кадры и прогнать их через апскейлер.
- Воспользоваться специализированными моделями для редактирования (например, Flux Kontext или Qwen-Image-Edit), чтобы сгенерировать новые ракурсы на основе исходника.
- Обучить LoRA «нулевой версии» (version zero).
Стратегия создания LoRA v0 — это крайне интересный поэтапный подход. Идея состоит в том, чтобы намеренно обучить черновую, минималистичную модель. Она не пойдет в работу, её единственная цель — нагенерировать качественный материал для идеального датасета. Возможно, вам придется прогнать несколько итераций таких «нулевых» версий, прежде чем вы соберете безупречную базу.
Процесс выглядит следующим образом:
- Соберите крошечный стартовый набор — хватит 5–10 тщательно отобранных картинок, формирующих основу внешности. Им необязательно быть идеальными или разнообразными. Главное — они должны быть достаточно консистентными, чтобы алгоритм уловил ключевые черты лица.
- Обучите на их основе быструю, черновую LoRA.
- Используйте эту v0 LoRA для генерации уже более разнообразных артов: с разных ракурсов, при разном освещении, в другой одежде, крупным планом.
- Поскольку v0 выйдет крайне негибкой, получить качественный результат будет сложно. Жестко отбраковывайте материал, безжалостно удаляя ЛЮБЫЕ изображения, которые хоть немного не дотягивают до внешности нужного персонажа.
- Обучите новую, финальную LoRA уже на этом очищенном датасете.
По сути, v0 выступает в роли узконаправленного генератора вашего героя. Её задача — не выдавать шедевры, а сохранять достаточное сходство, чтобы производить пригодные референсы в промышленных масштабах.
И последнее: стратегия v0 применима не только к вымышленным персонажам. Даже если вы работаете с реальными людьми, но исходных фото мало или им не хватает разнообразия, v0 поможет сгенерировать недостающие ракурсы и условия для полноценного датасета. Правда, сложность здесь на порядок выше: для вымышленного персонажа легкий дрейф от оригинального портрета допустим, если итоговый образ выглядит визуально цельным. А вот для реального человека сгенерированные кадры должны не просто согласовываться между собой, они обязаны передавать 100% сходство с оригиналом. Это превращает кураторскую работу в суровое испытание: вам придется под лупой сравнивать каждую удачную генерацию с исходными фото, прежде чем пустить её в релизный датасет v1.