Перейти к основному контенту

ИИ для смены позы: как перенести позу с одного фото на другое (что работает и что ломается)

Перенесите позу с одного фото на человека с другого с помощью ИИ. Результаты наших запусков, три сбоя с решениями и цена.

Автор
Lydia
Опубликовано
Время чтения
8 мин чтения
Взрослая женщина в льняном костюме цвета ржавчины стоит на одной ноге, скрестив руки, на белой соляной равнине; поза перенесена с референсного фото

У вас есть хорошее фото человека и второе фото с позой, которую хотелось бы получить. ИИ для смены позы берёт оба снимка и возвращает первого человека в позе со второго фото, с его лицом и одеждой. Именно это делает Pose Changer. В статье мы показываем, что у нас получилось, где всё сломалось и как это чинится одной строкой.

Один результат стоит $0.03 при любом соотношении сторон и обычно приходит за 11–20 секунд. Все люди в наших тестах вымышленные взрослые, полностью одетые.

Как работают две фотографии

Вы отправляете два изображения. image_url — человек, чью позу нужно изменить. reference_image_url — поза, которую нужно скопировать: берётся только поза, без человека, одежды и комнаты. Меню поз и рисования «скелетика» нет: инструкция встроена, а необязательный prompt добавляется после неё.

Внутри работает открытая модель Alibaba Qwen-Image-Edit-2511 с LoRA AnyPose от lilylilith и собственной инструкцией автора для переноса позы: она просит совместить руки, ноги, наклон головы и взгляд и сохранить стиль и фон первого фото. Заслуга переноса позы принадлежит этому автору.

Мужчина в тёмно-синем костюме в библиотеке, мужчина на барном стуле с подбородком на руке и результат: мужчина в костюме на стуле в своей библиотеке

Результат примера с библиотекой: мужчина с первого фото принимает позу со стула со второго, костюм и книжные полки на месте. Seed 24, со строкой про сохранение фона, о которой речь ниже.

Первый результат, который стоит повторить

Возьмите фото одного человека в полный рост и второе фото в полный рост человека похожего сложения у однотонной стены. Добавьте в поле prompt:

text
Remove the background of image 2, and replace it with the background of image 1.

В результате с библиотекой выше мужчина стоял в кабинете с деревянными панелями, а поза была взята из студийного снимка мужчины на стуле. Он оказался на стуле, подбородок на руке, одна нога приподнята, в своём кабинете и в своём костюме. Следующий пример — женщина рядом с бледно-зелёным пикапом на соляной равнине: она приняла позу откинувшись назад, скрестив руки и подняв одну ногу, и соляная равнина осталась.

Женщина в льняном костюме цвета ржавчины, откинувшись назад на одной ноге и скрестив руки, на белой соляной равнине

Seed 23, 16:9, строка про сохранение фона использована. Пикапа с исходного фото в результате нет.

И третий пример, где мы дополнительно назвали одежду:

Женщина в коротком изумрудном атласном платье, откинувшись назад на одной ноге и скрестив руки, на сером студийном фоне

Seed 25, использованы строка про сохранение фона и "She keeps her emerald satin dress.". Фон исходного фото — серая студия, он сохранился.

Три сбоя и как их исправить

Каждый из них случился в наших запусках. Это единичные запуски, а не статистическое исследование, но такие сбои стоит ожидать.

1. Фон пришёл с фото позы. Без дополнительного prompt женщина на соляной равнине правильно приняла танцевальную позу на одной ноге, но результат поместил её в белую танцевальную студию с референса. Поза верна, сцена нет. Исправление — строка выше: она просит заменить фон изображения 2 фоном изображения 1. Вот все запуски, где она использовалась, и тот, где нет:

  • Seed 21: мужчина в костюме, поза женщины, строка использована. Фон сохранился; лицо сместилось (сбой 2).
  • Seed 22: женщина в платье, поза мужчины на стуле, строка использована. Фон сохранился; перешли спортивные штаны (сбой 3).
  • Seed 23: женщина на соляной равнине, поза откинувшись назад, строка использована. Фон сохранился; хороший результат.
  • Seed 24: мужчина в библиотеке, поза на стуле, строка использована. Фон сохранился; хороший результат.
  • Seed 25: женщина в изумрудном платье, поза откинувшись назад, строка и фраза про одежду. Фон сохранился; хороший результат.
  • Seed 424242: женщина на соляной равнине, поза танцовщицы, без строки. Фон студии заменил её фон (изображение ниже). Это более ранний пробный запуск, не один из пяти.

То есть сцена сохранилась во всех пяти запусках со строкой, включая два, которые не удались по другим причинам.

Женщина с соляной равнины в танцевальной позе на одной ноге, но в белой студии с фото позы

Поза верная, комната не та (seed 424242): в этом запуске не было строки про сохранение фона, поэтому студийный фон перешёл вместе с позой.

2. Референс другого пола потянул за собой лицо. В нашем единственном тесте с разным полом (seed 21, строка использована, фон сохранился) перенос позы женщины на мужчину в костюме сместил его лицо в сторону её лица. Запуск был один, поэтому считайте это предостережением, а не правилом: выбирайте референс того же пола и похожего сложения, как в результате с библиотекой. Этот результат мы отбросили и повторили с подходящим референсом.

3. Одежда с референса перешла на результат. В одном запуске (seed 22, строка использована, фон сохранился) серые спортивные штаны с фото позы появились на женщине в атласном платье. Назовите в prompt то, что должно остаться, например: "She keeps her emerald satin dress." В повторном запуске мы изменили сразу три вещи: референс-мужчину заменили на референс-женщину, добавили эту строку и сменили seed. Платье сохранилось, но изменения по отдельности мы не проверяли, поэтому делайте все. Если одежда важна, указывайте её каждый раз.

Что добавляют файлы позы

Мы сделали одно сравнение с одним seed (424242): те же два фото и та же инструкция, один раз с файлами AnyPose и один раз без них. Без них модель не изменила позу женщины, а вырезала танцовщицу с фото позы и вставила в первую сцену. С ними женщина приняла позу танцовщицы. Это одна пара запусков на одной паре фото, так что она показывает, что сделали файлы здесь, а не как ведёт себя любой другой редактор.

Как добиться результата на своих фото

  • Показывайте тело целиком на обоих фото. Если на снимке только верхняя часть, модели приходится выдумывать ноги и пол.
  • Один человек на фото. Групповые снимки путают, какое тело двигать; сначала обрежьте и обрабатывайте каждого отдельно.
  • Для референса позы лучше однотонный фон. Однотонный фон оставляет модели меньше лишнего для переноса, поэтому в наших референсах были ровные стены. Это наша практика, а не проверенный результат: в сбое 1 фон студии всё равно перешёл, так что строку про фон добавляйте в любом случае.
  • Используйте один seed для сравнения. Если меняете только prompt, оставьте seed, чтобы увидеть, какая строка дала разницу.
  • Выберите формат. Оставьте aspect_ratio пустым, чтобы сохранить форму фото при примерно одном мегапикселе, либо выберите одно из девяти соотношений для перекадрирования; цена не меняется.
  • Заложите бюджет на повторы. Каждый завершённый результат оплачивается по $0.03, даже если он вам не нравится, и каждый повторный запуск стоит столько же: четыре попытки обойдутся примерно в $0.12.

Попробовать в Studio или вызвать из кода

В веб-версии Studio откройте Pose Changer, загрузите человека и позу, вставьте строку про сохранение фона, если хотите оставить свою сцену, и запустите. Оба фото можно передать публичной HTTPS-ссылкой или загрузкой, в форматах JPEG, PNG или WebP, до 10 МБ каждое. Тот же запрос через API:

bash
curl https://api.spicyapi.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $SPICY_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "spicyapi/pose-changer-v1/edit",
    "input": {
      "image_url": "https://example.com/person.jpg",
      "reference_image_url": "https://example.com/pose.jpg",
      "prompt": "Remove the background of image 2, and replace it with the background of image 1.",
      "seed": 24
    }
  }'

curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=TASK_ID" \
  -H "Authorization: Bearer $SPICY_API_KEY"

Первый вызов возвращает ID задачи; вызывайте с ним recordInfo, пока задача не завершится, затем скачайте изображение. Полный порядок работы с задачами описан в справочнике API, а все параметры перечислены на странице модели.

Где это может пригодиться

Мы проверили только примеры выше, поэтому это идеи, а не проверенные процессы:

  • Каталоги одежды: из одного снимка наряда, возможно, получатся версии стоя, сидя и откинувшись назад без повторного приглашения модели. На товарных фото мы не пробовали, а одежда с фото позы может переходить на вещь (сбой 3), поэтому каждый раз называйте нужную одежду.
  • Персонажи и раскадровки: сохранять лицо, меняя позу под сцену. Дальше одного персонажа не проверяли; для длинных серий смотрите процесс с постоянным персонажем.

Используйте фото людей, которые на это согласились. Если нужно заменить не позу, а лицо, это другой инструмент — Face Swap, и он требует такого же согласия: используйте только те лица, на которые у вас есть право, и не создавайте изображения, вводящие в заблуждение относительно реального человека.

Вопросы и ответы

Можно ли описать позу словами вместо референсного фото?

В этом инструменте нет. Он создан, чтобы копировать позу со второго изображения; поле prompt лишь добавляет указания, например сохранить ваш фон или назвать предмет одежды.

Сохраняет ли он моё лицо и одежду?

В трёх результатах, которые мы оставили, да: лицо и одежда сохранились, и во всех трёх референс был того же пола и похожего сложения. В нашем единственном запуске с разным полом лицо сместилось, а в другом одежда с референса перешла, пока мы не назвали нужную одежду. Двух запусков недостаточно для гарантии, поэтому проверяйте каждый результат.

Меняется ли цена от соотношения сторон?

Нет. Цена фиксирована за изображение при любом соотношении. Неудачные запросы не списываются, но завершённый результат, который вам не понравился, оплачивается, и каждый повторный запуск стоит $0.03.

Другие языки English · 日本語 · 한국어 · Español