공부 정리용 블로그입니다. 미숙한 실력으로 인해 표현이나 설명에서 많은 오류가 있을 수 있으니 참고 바랍니다 :)

이번 시간에는 human motion diffusion model에 대해서 알아보겠다. 3D 분야에서 대표적으로 쓰이는 모델로서 diffusion을 완전히 이해하지 못해 거시적으로 다뤄보려한다.
Introduction
motion generation에 있어서 many-to-many 문제는 항상 뒤따른다. kick이라는 단어는 태권도, 축구 등 다양한 종류의 kick을 암시한다. 또한 태권도 kick이어도 그 킥을 표현하는 motion은 다양하다. 이처럼 같은 말이라도 다양한 행동이 존재한다는 것이 many-to-many problem이다.
이전까지의 연구에서는 Auto Encoder, VAE를 사용하였다. 그러나 충분히 다양한 결과를 뽑지 못한다는 문제점이 있다. 이전 VQ-VAE 글에서 보면,

AE의 경우, 일대일 매핑 방식으로 모델이 학습하게 된다. 따라서 다양한 결과를 뽑아낼 수 없다.

VAE의 경우, 정규 분포에서 샘플링을 하여 AE보다 다양한 결과를 뽑을 수 있다. 그러나 이것도 정규분포로 한정되어서 샘플링이 진행된다는 점에서 저자는 여전히 부족하다고 주장한다.
distribution에서 free한 diffusion model을 통해 위 문제를 해결하고자 한다.
Methods
Human MDM의 가장 큰 특징은 다음과 같다.
- Transformer based
- signal prediction
기존의 diffusion model은 U-Net backbone을 이용하여 노이즈 예측을 통해 노이즈를 제거하는 방식으로 진행된다. 그러나 MDM의 경우 Transformer를 이용한다. 이는 시간 단축 및 시퀀스 데이터에 더 적합하다는 장점을 가진다.
또한, MDM은 노이즈를 예측해서 노이즈를 지우는 방식이 아니다. 노이즈가 껴있는 데이터에서 바로 signal, 즉 노이즈가 모두 제거된 깨끗한 데이터를 예측한다.
Architecture

왼쪽 그림은 MDM 모델의 구조이며, 오른쪽은 prediction 과정이다.
Input Token Ztk

MDM 모델의 구조를 먼저 살펴보자. 먼저 Text prompt를 clip을 이용하여 임베딩하고, t (noise level)을 이용하여 토큰 z를 만든다.
Transformation backbone

토큰 z와 t 시점에서의 시퀀스를 받아 transformer encoder를 거쳐 signal를 예측하게 된다. 전체적인 구조는 복잡하다고 생각되지 않는다.
Prediction
이렇게 작동하는 MDM을 가지고 예측에 어떻게 사용되는지 알아보자.

- 정규분포 형태의 노이즈에서 XT를 샘플링한다.
- T와 c를 MDM에 같이 넣어 x0를 예측한다.
- x0를 markov chain을 이용하여 XT-1로 되돌린다.
- 이 과정을 x0가 될때까지 반복한다.
Loss

loss는 총 4개의 항으로 이루어져있다. 각 loss를 자세히 살펴보자. 그 전에 한 가지 사실을 알고 가면 좋다. MDM의 output의 representation은 joint rotation or position이다.

Lsimple 같은 경우, 정답 값과 특정 t 시점에서의 차 절댓값의 평균으로 표현된다.
나머지 3개의 loss는 geometric loss로 부른다.

Lpos의 경우, MDM의 output이 joint rotation일 때만 사용된다. 그리고 여기서 FK()는 forward kinetic function으로 rotation값을 position으로 바꾸어주는 함수이다. postion 차의 절댓값 평균이라고 해석할 수 있다.

Lvel은 속도를 다루는 loss로 각 항은 프레임 간의 거리 차, 즉 속도로 해석할 수 있다. 프레임별 정답 속도와 예측 속도 차의 평균으로 볼 수 있다.

Lfoot은 바닥과 발이 닿았는지를 다루는 loss이다. 여기서 FK는 앞선 것과 달리 identity function을 의미한다. 만약 이전 프레임에서 바닥과 닿지 않았다면 f는 0으로, 닿았다면 1로 표시한다. 이렇게 하여 프레임 간의 자연스러운 변화를 이끈다.
Experiments
앞선 방법으로 학습된 MDM을 이용하여 다음과 같은 실험을 진행하였다.
- Text-to-motion

text를 주어주면 그에 맞는 motion을 뽑아준다. 그림을 보면 같은 text여도 다양한 motion을 보여주는 것을 알 수 있다. 색이 짙어질수록 나중 프레임이다.

표를 보면 T2M과 큰 차이를 보이지 않는다고 생각이 들었다. 저자도 그랬는지 User Study를 추가로 이용하였다.

31명의 user에게 각 모델의 결과물을 보여줘서 선호도를 평가한 것이다. 여기에서도 다른 모델에 비해 가장 높은 선호도를 보였으며, 심지어 GT에도 견줄만한 결과를 보여준다.
- Action-to-motion
scalar 값으로 주어지는 action class를 주어주면 그에 맞는 motion을 뽑는 것이다.

기존 모델보다 확실히 뛰어난 점수를 보인다. 그러나 foot contact을 고려하지 않았을 때 성능이 더 높은 것을 알 수 있다. 이에 대해서 필자는 다음과 같이 생각했다. VQ-VAE 글에서 다룬 내용 중, VAE는 posterior collapse 문제를 갖고 있으며, 이는 여러 loss 항으로 이루어진 loss를 학습할 때, 특정 loss 항에 편향되기 때문이라고 언급한 바 있다.
이와 같은 맥락에서 Lfoot 을 고려하지 않았기 때문에, loss 항이 줄어 보다 안정적인 학습이 가능했고 그에 따라 더 높은 성능을 보이지 않나 생각한다.
- Motion Editing
motion editing에는 In-betweening 과 Body part editing이 있다.
In-betweening은 초반과 후반 프레임이 주어지면 그 중간 프레임을 생성하는 task이다. Body part editing은 특정 신체 부위를 고정시키고 나머지 부위를 다른 motion으로 수정하는 것이다. 본 논문에서는 하체를 고정시키고 상체를 변형하였다.

- Unconstrained Synthesis
uncontrained 같은 경우에는 MDM에 c를 주지 않는다. uncondition으로 진행되는 task이다.

해당 taskl에 특화된 MoDi에 비해 낮은 성능을 보이지만, ACTOR에 견줄만하여 논문에서는 충분히 괜찮은 성능이라고 표현하였다. (achieve plausible ~)
Conclusions
MDM은 transformer based로 U-Net에 비해 속도가 빠르며 시퀀스 데이터에 더 적합한 성격을 가진다. 속도가 빨라 이전의 diffusion long inference time 문제를 해결할 수 있었다. 또한 노이즈가 아닌 signal을 예측하여 geometric loss를 적용할 수 있다는 장점을 가진다.
논문에서는 한계점이 적혀있지 않았지만 개인적으로 아쉬웠던 것으로는 Text-to-motion, Unconstrained synthesis task에서 확실히 뛰어날만한 성능이 나타나지 않았다는 것을 들 수 있다. 또한 Motion editing task에서 결과물만 있을 뿐, 수치적인 성능 평가가 없어 아쉬웠다.