Использование нейросетей для автопозинга — опыт авторов программы для создания анимации Cascadeur

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

Разработчики из студии Banzai, которые работают над программой для создания анимации Cascadeur, в своей колонке для DTF рассказывают, как они комбинируют несколько нейросетей в одном инструменте автопозинга, о котором шла речь в их статье на «Хабре». В этом тексте будет рассмотрен подход, позволивший им реализовать достаточно продвинутые функции, используя лишь стандартные deep learning методы.

Постановка задачи

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

Использование полносвязных нейросетей предполагает фиксированные вход и выход, поэтому мы сделали несколько нейросетей с разным количеством входных точек: 6, 15, 20, 28 из всех 43 точек персонажа. На картинках ниже в зелёный окрашены те точки, которые подаются на вход нейросети соответствующего уровня детализации.

В чём же проблема использования уровней детализации? Если мы хотим подвинуть точку из 4 уровня, то нам нужно подать на вход все 28 точек. Но мы не хотим заставлять пользователя ставить их все. Наша цель — дать ему возможность подвинуть только несколько из них. Как в таком случае добиться хорошего результата?

Наше решение предполагает вложенность входных данных, комбинирование результатов и использование физической модели.

Вложенность входных данных

Мы выбрали такие уровни детализации, которые имеют особое свойство иерархической вложенности.

Множество входных точек нейросети каждого уровня содержит в себе все точки с предыдущего уровня и добавляет к ним несколько новых. Это позволяет нам использовать выходные данные с одной сети как входные для следующей.

Комбинирование результатов

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

Как только вы меняете ещё одну точку, кроме основных шести, инструмент запоминает её и начинает использовать в вычислении позиции других точек.

Работа инструмента происходит в несколько этапов в зависимости от отредактированных точек. В данном случае весь процесс схематично изображен на картинке ниже.

Использование нейросетей для автопозинга — опыт авторов программы для создания анимации Cascadeur

Сперва используется сеть первого уровня — она выставляет все 43 точки персонажа по шести основным. Затем по очереди вызываются сети более детальных уровней. Каждая последующая принимает на вход всё более детальные входные данные — либо уточнённые пользователем, либо из результата работы предыдущего уровня. Таким образом, мы получаем возможность использовать нескольких нейросетей с разной детализацией одновременно.

Физическая корректность

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

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

Заключение и планы

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

Также мы исследуем возможности, которые дарят нам более универсальные deep learning подходы. Например, уже сегодня можно восстанавливать части фотографий с заданными характеристиками, а также переносить стиль и другие характеристики между изображениями. В будущем мы могли бы использовать этот метод и при создании анимации, например, чтобы добавить в неё или же в позу желаемые характеристики.

Мы продолжаем развивать наш инструмент автопозинга. Уже в ближайшее время Cascadeur войдет в стадию открытого бета-теста. Обязательно следите за новостями на cascadeur.com и в социальных сетях проекта.

140140
62 комментария

Вот, отличная статья, с полным (пусть и максимально общим) описанием пайплайна работы программы
Не то, что ИИ Ведьмака
Вообще, советую не брать интервью у людей, которые не могут вот на таком же уровне объяснить, что и как у них работает

22
Ответить

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

3
Ответить

что сказать круто и давно пора.

К сожалению 3дс макс как был с простой IK ( ещё в 2000 году) так и остался. Приходится качать шесть гигабайт какой то воды что бы просто импортировать в FBX который корректно прочитает Юнити.

Будь ты проклят Аутодеск со своим автокадом.

7
Ответить

Будь ты проклят АутодескАминь

13
Ответить

Давно пора переходить на Blender.

3
Ответить

Для этого они купили майю

Ответить

используя лишь стандартные deep learning методыЭто какой-то англицизм. По-русски будет так: "используя лишь стандартные методы deep learning".

2
Ответить