Автор: Александр Ковальчук Редактура: Кирам Аль-Харба
В прошлом посте мы рассмотрели разные методы файнтюна модели Stable Diffusion, которые помогают добавлять новые стили или объекты в процесс генерации. Они могут быть полезны для получения более качественных результатов и расширения знаний модели в какой-то области.
Да, результаты генерации модели устраивают нас. Но что делать, если хочется управлять генерацией? Как добиться того, чтобы сами генерации были похожи на референс (например, соответствовали скетчу ребенка или позе человека на фотографии), или по-другому, чтобы сгенерированный контент отвечал дополнительному условию?
Рисунок 1. Условная генерация Stable Diffusion с использованием скетча как дополнительного условия
Умение генерировать изображение по дополнительному условию (кроме текста) — полезное умение. Оно позволяет ограничивать генеративную способность модели и держать ее в нужных нам рамках, получать вариации и быстрее выбирать наилучшую из них.
В этом посте мы обсудим способы, с помощью которых можно добавлять дополнительные условия в генерацию диффузионными моделями, а также определим достоинства и недостатки каждого из них.
Сначала рассмотрим полезные для генерации дополнительные условия. Все виды перечислить будет сложно, поэтому давайте пройдемся по основным группам.
Счетчи — наброски рисунков в виде черно-белого изображения: границы объектов, прямые линии, произвольные рисунки и др.
Частично их можно создавать самостоятельно от руки. Но также есть автоматические алгоритмы (например, Canny Edge, HED Boundary).
Рисунок 2. Примеры условия в виде скетчей. Слева направо: оригинал, Canny Edge, Lineart, Scribble, SoftEdge
Контроль генерации позой персоны особенно важен при генерации людей или персонажей.
Поза может быть автоматически найдена предобученными нейросетевыми моделями типа OpenPose (в том числе с модификациями для нахождения точек рук и лица).
Рисунок 3. Примеры условия с позой. Слева направо: оригинал, OpenPose, OpenPose+Hands, OpenPose+Hands+Face
Карта глубины — черно-белое изображение с градациями серого, которое кодирует удаленность содержимого сцены от камеры.