Диффузионные модели начинают занимать лидирующую позицию и в задаче Motion Generation.



MotionDiffuse: Text-Driven Human Motion Generation with Diffusion Model



Авторы данного подхода решили использовать свойство широкой вариативности и высокого качества генерации у диффузионных моделей для анимации движения человека с помощью текстовой подсказки и получили новую SOTA в данной задаче. Предыдущие решения не справлялись со сложным текстом или со стилизацией сгенерированных движений. Также авторы указали в своём пейпере, что их решение позволяет использовать очень точные текстовые описания, которые являлись сложными для предыдущих решений, потому что MotionDiffuse делит генерируемый скелет на верхнюю и нижнюю части. Поэтому можно получить качественных результат, к примеру, с помощью текста «a person is drinking water while walking» или «a person is walking and then running».



Но перейдём к более техническим деталям, которые заставляют это решение работать.

Скажу сразу, что многие идеи в пейпере переиспользуются из GLIDE, поэтому если вы не читали ещё пейпер про эту модель, то советую ознакомиться.



В MotionDiffuse вместо U-Net-подобной архитектуры был разработан Cross-Modality Linear Transformer, с помощью которого происходит генерация движений с произвольной длительностью, которая зависит от продолжительности генерируемого движения. Cross-Modality Linear Transformer подразумевает под собой обычный трансформер с энкодером и декодером, каждый блок такого трансфомера содержит: multi-head attention module (с residual connections) и feed-forward network (с тремя линейными преобразованиями и двумя GELU-слоями между ними). Для улучшения к обобщительной способности используются веса из CLIP для инициализации первых слоёв, которые зафризили и не обновляли в обучении.



Также были использованы Linear Self-attention для учёта связности анимации между кадрами и Linear Cross-attention для учёта текста в последовательности движения.



@sonya_aesthetics