sfw
nsfw
SmallKino
SmallKino
Рейтинг:
2818.10-0.09 за неделю
Постов: 739
Комментов: 576
C нами с: 2013-09-16

Посты пользователя SmallKino

SmallKino
SmallKino
2 нед.

Расскажу как можно нейронкой ставить персонажей во всякие позы

Я уже некоторое время вожусь с открытыми моделями пытаясь решить задачу позирования персонажей. Моя предыдущая попытка с Flux.2 Klein дала неплохие результаты, но она мало того, что страдала от "стилевого сдвига", так ещё и оригинальные пропорции персонажа вообще не соблюдала (например, соотношение головы и тела). Так-то, неумение сохранять дизайн и стиль персонажей (это ещё называют согласованность/консистентность) по-прежнему остаётся слабым местом моделей редактирования изображений (особенно когда это касается стилизованных персонажей), но есть одно исключение: Wan2.2 I2V Video. И тут ничего удивительного, на самом деле - от видеомодели ожидаешь, что персонаж на одном кадре будет похож сам на себя на последующих кадрах.
Короче, после длительных экспериментов с моделью Wan 2.2 я обнаружил определённую технику промптинга, которая позволяет "поместить персонажа из image_1 в позу из image_2".
Ссылка на воркфлоу для нетерпеливых.
Итак, наша задача звучит так: "Возьми персонажа слева и заставь её скопировать позу справа"
Это можно сделать двумя способами с использованием локальных открытых моделей:
- Воркфлоу замены персонажа Flux.2 Klein
- Воркфлоу Wan 2.2 Pose Control (об этом и пойдёт речь в данной статье)
Сразу показываю как выглядит результат каждого из методов:
Давайте также сравним результаты с закрытыми моделями. Дизайн персонажа они, конечно, воспроизвести в состоянии, но не стиль. Похоже, даже большие мультимодальные модели редактирования изображений не способны достичь истинной согласованности у персонажей - тогда как для видеомоделей это буквально "врождённое" свойство.
Ладно, идея вот в чём: попросить Wan сгенерировать последовательность из 80 кадров в режиме First-Frame-Last-Frame. Эта последовательность будет состоять из 4 частей:
1. Персонаж просто стоит
2. Персонаж двигается, копируя позу из референса
3. Персонаж трансформируется в персонажа из изображения-референса позы
4. Персонаж из референса позы находится в кадре
Наша цель - получить единственный кадр, в котором наш персонаж стоит/сидит/лежит в позе из референса, но ещё не успел трансформироваться в персонажа из этого референса. Для этого необходимо структурировать текстовый промпт таким образом, чтобы переход от первого кадра к последнему был максимально плавным, ага. Таким образом, информация о персонаже (дизайн и стиль) и информация о позе встречаются в середине последовательности кадров и дают нам желаемый результат (если повезёт).
И ещё раз подчеркну: генерируем 80 кадров, из которых потом возьмём только один, а остальные 79 - побочный продукт.

Как писать структурированный промпт

Вот два промпта, использованных в примере выше:
Женщина с серебрянными волосами
0s: girl with short silver hair, in green pleated skirt and leather boots is standing
1s: girl with short silver hair, in green pleated skirt and leather boots turns to the left, kneels, places left hand on her head, puts right hand between her legs
2s: she keeps her pose frozen in place. Scene transitions into another scene
3s: her body transforms into another character with white skin, bald head at white background
Мужик с чёрной бородой
0s: black man with sharp teeth in green suit and dark pants is standing at white background
1s: black man with sharp teeth in green suit and dark pants sits in the armchair with tilted head and hand at his chin, crosses legs
2s: he keeps his pose frozen in place. Scene transitions into another scene
3s: her body transforms into another character short orange dress, orange top hat, brown hair and fishnet
Описание персонажа повторяется, чтобы его можно было извлечь с помощью Apply Text Template из расширения comfy-mtb:
или через обычную встроенную в ComfyUI ноду Replace
Можно извлечь описание персонажа и получить такой шаблон:
Женщина с серебрянными волосами
0s: {var_1} is standing
1s: {var_1} turns to the left, kneels, places left hand on her head, puts right hand between her legs
2s: she keeps her pose frozen in place. Scene transitions into another scene
3s: her body transforms into another character with white skin, bald head at white background
Мужик с чёрной бородой
0s: {var_1} is standing at white background
1s: {var_1} sits in the armchair with tilted head and hand at his chin, crosses legs
2s: he keeps his pose frozen in place. Scene transitions into another scene
3s: his body transforms into another character short orange dress, orange top hat, brown hair and fishnet
Разберём 4 части этого промпта.

0s — Начальное описание

Здесь вы описываете первый кадр. В большинстве случаев достаточно 'is standing', но можно также указать начальную позу персонажа.

1s — Собственно позирование

Здесь вы указываете движения, которые персонаж должен совершить, чтобы перейти из начальной позы в целевую. Лучше всего работают простые движения (turns left, sits down, crouches, raises hand), перечисленные через запятую. Также можно добавить 'Camera follows his movement', если целевая поза требует другого угла камеры.

2s — Пауза перед переходом сцены

Всегда одинаковая: he/she keeps his pose frozen in place. Scene transitions into another scene. Часть 'Scene transitions into another scene' здесь наиболее важна — Wan 2.2 соблюдает эту границу (что удивительно, на самом деле).

3s — Привязка последнего кадра

Выглядит так: body transforms into another character <описание персонажа в последнем кадре>. Мы хотим, чтобы Wan 2.2 понял, что персонаж в начале видео отличается от персонажа в конце.

Практический пример

Отработаем полученные знания на практике. Вот наш персонаж и изображение с позой:
1. Начинаем с описания персонажа. Тут ничего сложного:
,нейронные сети,гайды,comfyui
Жёлтый робот-гуманоид
2. Следующий шаг - описание движений:
Поворачивается к зрителям, держа чёрный пистолет двумя руками
3. И наконец, пишем переход к последнему кадру:
,нейронные сети,гайды,comfyui
"Его тело трансформируется в другого персонажа с короткими чёрными волосами в чёрном костюме и короткой чёрной юбкой"
К сожалению, это не срабатывает:
,нейронные сети,гайды,comfyui
Wan 2.2 смог уловить положение пистолета, но не позу
Главная причина в том, что тёмная одежда на целевом изображении не даёт модели "считать" позу. К счастью, это можно исправить в Flux.2
,нейронные сети,гайды,comfyui
"Remove hair, remove clothes and draw this person bald and in skin tone underwear. Turn into white wireframe figure"
Снова запускаем воркфлоу Pose Control, но уже с обновлённым промптом:
,нейронные сети,гайды,comfyui
"Его тело трансформируется в другого персонажа с лысой головой и белой кожей"
На этот раз результат значительно лучше:
Ссылка на воркфлоу (там есть заметка о рекомендуемом файнтюне Wan 2.2)
Несколько советов:
- Весь процесс работает лучше всего, когда между первым и последним кадром есть заметный контраст: разный цвет волос, цвет кожи, фон и т.д. Можно даже заранее обработать референс позы другой моделью - превратить его в фигуру-манекен, чтобы у Wan было больше шансов считать позу.
- Если некоторые элементы дизайна персонажа исчезают (перчатки, например, имеют свойство пропадать слишком рано), добавьте их в промпт с описанием персонажа, чтобы модель помнила об этом элементе дизайна.
- Если изображение персонажа и изображение-референс позы имеют разные размеры, попробуйте добавить "Camera zooms in capturing new view" или "Camera zooms out capturing new view".
Если ещё не разобрались как установить себе ComfyUI и Wan 2.2, посмотрите гайды типа этого:
Вот так.
SmallKino
SmallKino
2 мec.

Отличный комментарий!

Начал учиться рисовать и ситуация с гайдами на ютубе это какой то ужас. Та мемная картинка про "как нарисовать сову" отражает буквально 99% гайдов. Начинаешь смотреть, вроде все идет нормально, повторяешь что говорят, даже получается, а потом идет золотая фраза "добавьте деталей / развлекайтесь / выплесните вашу творческую душу". А так как ты только учишься рисовать, ты понятия не имеешь как и куда добавлять эти самые загадочные детали в итоге сидишь с наполовину законченным рисунком и не знаешь что с ним делать дальше. Аналог блядских рецептов где пишут "добавьте специи по вкусу", а ты из специй знаешь только соль и перец.
Рисунок красивый, нытье выше не к нему. Просто захотелось поныть на наболевшую тему 😭
SmallKino
SmallKino
2 мec.

Пост в честь возвращения из бана