Super Kawaii Cute Cat Kaoani ZeroEGGS: Zero-shot Example-based Gesture Generation from Speech 논문세미나 준비

연구/논문 리뷰

ZeroEGGS: Zero-shot Example-based Gesture Generation from Speech 논문세미나 준비

치킨고양이짱아 2023. 8. 14. 16:22
728x90
728x90

0-1. System overview 설명

* speech와 원하는 style의 짧은 reference motion clip을 Input으로 받아 speech에 적절하면서도 원하는 style을 가지는 gesture를 생성해냄.

* framework는 총 3개의 component로 이루어져있는데, 1) speech encoder 부분, 2) style encoder 부분, 3) gesture generator 부분으로 이루어져있음

  • speech encoder 부분은 raw audio data를 받아서 speech embedding sequence로 변형시킴
  • style encoder 부분은 reference style animation clip을 받아서 style을 capture하는 fixed size embedding vector로 변형함
  • gesture generator 부분은 speech encoder를 통과한 speech embedding sequence와 style encoder 부분을 통과한 reference style embedding vector를 받아서 gesture sequence를 만들어냄

* speech encoder에 대한 자세한 설명

raw audio data을 spectrogram으로 변형하고, frame마다의 enegry도 추출해서 feature를 생성한 다음에 이걸 re-sample 시켜서 네트워크를 통과시킴. 그럼 결과적으로 audio data의 embedding vectors가 생성됨

* style encoder에 대한 자세한 설명

VAE framework를 사용하였는데

VAE는 latent space를 학습하는 확률적인 생성 모델로, 입력 데이터를 Encoding해서 latent space로 표현하고, 이를 디코딩해서 입력 데이터를 재구성하는 방식임. latent space에서 데이터의 특성을 분리하여 학습하기 때문에 Interoplation을 통해서 서로 다른 특성을 조합하는 것이 가능함.

reference motion을 feature의 sequence를 표현한 후, normalize 시켜 neural network의 Input으로 넣어줌.  2개의 layer를 통과하고 positional encoding을 해서 sequence ordering을 Encode할 수 있게 해준 뒤에, transformer를 통과시키게 되면 이제 sequence data들이 나오게 되는데 이 sequence를 average pooling 시켜 Gaussian distribution에서 평균값과 분산값을 구한 뒤에 final style embedding vector를 이 distribution을 sampling하여 얻게 됨

* gesture generator에 대한 설명

gesture generator는 conditional auto-regressive model을 사용하였는데

자기회귀 모델(Auto-regressive Model)은 시퀀스 데이터의 다음 값을 예측하는 모델인데, 이 모델은 이전 시간 단계의 출력을 입력으로 사용하여 다음 값을 예측한다. 자연어 처리에서 이전 단어들을 기반으로 다음 단어를 예측하는 경우가 이런 케이스.

조건부 자기회귀 모델(Conditional Autoregressive Model)은 추가적인 input을 넣어주면서 auto regressive 모델을 작동시키는 모델. conditioanl autoregeressive model은 추가적으로 넣어주는 Input을 고려하여 output을 넣어주기 때문에 더 의미있는 결과를 만들어낼 수 있음.

gesture generator는 speech embeddign sequence와 reference style embedding vector를 받아서 final gesture sequence를 하나씩 생성해냄.

<Recurrent decoder 블록>

Recurrent decoder가 Gestue generator의 핵심 부분인데, i번째 pose를 생성하기 위해 i-1번째 pose state vector랑 refernce style embedding vector랑 i번째 speech embedding vector를 받아서 pose encoding을 만들어냄

추가적으로 알아야될 부분이 rotational drifiting을 막기 위해 target facing direction을 정해놓는데, update character state 블록에서 이걸 root transform으로 바꾸고 이걸 i-1번째 pose state vector와 concatenate 시켜서 Recurrent decoder 블록에 제공함

<Update Character state block>

Recurrent decoder의 output으로 나온 pose encoding을 받아서 pose state를 계산함. pose state를 계산하기 위해서는 pose encoding을 denormalize하고 예측된 Root linear velocity와 rotational velocity를 사용해서 Root transform을 update함. 

그리고 앞에서 말했던 것처럼, 새로운 Root transform을 기준으로 target facing direction을 다시 계산하고 pose state vector랑 합쳐서 recurrent decoder에 제공

<Hidden State Initalizer>

Hidden State Initalizer는 별도의 Network로 Recurrent Decoder를 구성하는 GRU layer의 Hidden state를 Initalize하는 역할을 함. inital pose, character facing direction, style embedding을 바탕으로 초기화를 하게 되는데, 이렇게 하면 무작위 값으로 세팅된 hidden state를 사용할 때보다 결과의 퀄리티가 더 좋아짐.

 

0-2.  Speech Encoder 부분

많은 speech application에서 사용하는 것처럼 spectrogram으로 변형할 때 log-amplitude랑 mel-frequency scale을 사용하였음. energy per frame도 supplementary feature로 사용하였고, Re-sample 시켜서 1D convolutional layer랑 non-linear operator, linear layer를 통과시켜 embedding vector sequence S를 만들어냄.

 

0-3. Style Encoder 부분

refernce style animation clip을 받아 적은 차원, fixed size를 가지는 embedding vector를 만들어냄. 언급했듯이 VAE framework를 사용하였음. 

animation clip은 feature vector의 sequence로 표현되는데 feature vector는

joint에 local한 translation, rotation, translational velocity, rotational velocity랑

character root transform에 대해 표현된 root translational velocity랑 root rotational velocity를 사용

이때 joint rotation은 2-axis rotation matrix를 사용하였고, rotational velocity 부분은 rotation vector로 표현.

root position을 계산할 때는 second spine joint를 ground에 Projected 시켜서 구했고, hip joint의 z축을 ground에 project시켜서 root orientation을 구함

이렇게 구한 M개의 Feature frame들은 Normalize되어 nerual network로 들어가 style embedding vector가 되는데, 그 과정에서 2개의 1D convolutional layer를 거치는데 각각 ReLU랑 layer normalization layer가 뒤따라옴. 그 뒤에 position encoding 과정을 거치고 feed-forward netowkr를 거치는데 이건 multi head self-attention layer랑 2개의 1D convolutional layer로 구성되어 있는데 convolutional layer는 각각 residual connection과 layer normalization이 뒤따라옴

결과적으로 vector sequence들이 나오게 되는데 이걸 그대로 쓰는게 아니라 이걸 average하여 Gaussian distribution으로 만든 다음에 여기서 style embedding vector를 sampling함.

 

0-4. Gesture Generator 부분

conditional auto-regressive model로 final gesture sequence를 만들어냅니다. 각 frame의 output pose state는 다음과 같이 표현되는데 앞에 style embedding에서 사용했던 표현과 동일하고, 추가된 부분이 root의 position과 orientation 부분. 이 각각은 root translational velocity와 root rotational velocity 부분을 사용해서 update됨

나머지 부분은 앞에서 설명했었고, update character state에서는 target facing direction을 World space에서 새롭게 계산된 character root transform로 convert시켜 pose state와 연결시키고 Normalize 시켜서 Resulting vector를 Recurrent vector로 넘겨주게 됨

hidden state initalizer는 3개의 linear layer와 ELU activation function으로 구성됨

 

0-5. Dataset and Data Preparation 부분

motion capture와 audio가 synchronized된 dataset을 사용하였고, 여기에는 67개의 monolgue가 포함되어 있고 19개의 Motion style을 커버하고 있음. 그래서 총 dataset의 길이는 135분 분량임

full body motion은 60fps고, 75개의 joint를 갖는 skeleton을 사용하였는데 joint에는 손이랑 손가락도 포함된다. mirrored version도 animation data를 늘리기 위해 사용하였다. 그리고 sequence의 모든 frame의 head z축 direction을 추출하여 바닥에 projected시킨 뒤 평균 낸 값을 global target facing direction으로 사용하였음. runtime에는 global z축을 global target facing direction으로 사용하였음

audio data의 경우에는 48kHz로 Record되었는데 50ms의 FFT Hannindg window와 12.5ms의 Hop length를 사용해서 spectrogram으로 추출하고 이를 Mel frequency scale로 투영한 뒤에 log amplitude와 total frame energy를 추출하여 final speech feature를 생성해낸다. 그런 다음 다시 60fps로 Re-sampling 시키고 Normalize 시킨다.

 

0-6. Model Implementation 부분

<speech encoder>

speech encoder network는 1D convolution layer의 kernel을 조정해서 약 1초 정도의 speech를 커버하도록 하였음.

* 첫번째 convolution layer는 64개의 채널을 가지고, Kernel size는 3이며,

* 두번째 convlution layer도 64개의 채널을 가지고, Kernel size는 31이다.

각 convolution layer 뒤에는 0.2의 확률을 가지는 dropout layer가 있고, ELU activation function을 적용하고 있음. 최종적인 output의 dimension은 64이다.

<style encoder>

style embedding vector e의 차원은 64이고, 모든 convolution layer의 kernel size는 3이고 512개의 output channel을 가진다. 그리고 각 layer마다 0.2의 확률을 가지는 dropout layer이 뒤따라온다.

Feed-Forward Trnasformer block은 4-head를 가지는 Self attention layer를 가지고 0.1의 확률을 가지는 dropout layer와 2개의 1D convolution layer가 뒤따라온다. 이때 1D convolution layer는 kernel size가 3이고 64개의 channel을 가진다.

<gesture generator>

Recurrent Decoder는 2개의 GRU cell을 가지고 있고, hidden state size는 1024이다. cell state encoder는 3개의 layer를 가지는 fully connected feed-forward network이고 ELU activation function을 사용하고 Hidden size는 1024

 

0-7. Training & Loss 부분

network는 end-to-end로 학습시켰고 rectified adam optimizer를 사용하였고 learning rate는 10의 -4승으로 세팅함. batch size는 32, 120k iteration만큼 학습시켰음. batch에서 sequence T는 256 frame으로 세팅하였음.

teacher forcing을 사용하지 않았기 때문에 더 error를 잘 극복하고 robust한 모델을 만들도록 유도하였음

style example sequence A는 target sequence과 같은 animation clip에서 뽑았고, 길이는 256 frame에서 512 frame까지 random하게 설정하였는데, 어찌되었던 target sequence를 둘러싸고 있게 설정하였음. 이렇게 하면 style과 clip length의 상관관계를 없앨 수 있음

그리고 augmentation 전략으로전체 batch에서 10%는 animation이랑 speech speed를 랜덤하게 바꿨음

<loss function 부분>

여기서는 모델을 conditional VAE로 고려했는데, 이 conditional VAE의 목적은 speech sequence가 주어졌을 때 gesture motion의 marginal log likelihood의 ELBO 값을 최대화하는 것.

marginal log likelihood는 어떤 모델이 주어진 데이터를 얼마나 잘 설명하는지를 나타내는 값이고

ELBO는 VAE에서 사용되는 핵심 개념으로, ELBO 값을 최대화하면 latent variable의 사전분포와 사후분포의 차이를 줄일 수 있다. 이렇게 하면 모델은 데이터를 잘 설명하는 동시에 latent variable을 효과적으로 학습할 수 있음.

따라서 여기서는 netative ELBO 값을 training loss로 사용하였음. 식으로 나타내면 다음과 같은데 첫번째 Term은 reconstruction term으로 샘플링 함수를 이상적으로 만들었을 때 여기서 gesture motion을 얼마나 복원을 잘하는지를 의미하는 Term인데 여기서는 negative니까 -를 붙여주었고 두번째 term은 regularization term으로, style encoder에 의해 predicted된 사후분포와 사전분포의 KL-dirvergence를 의미합니다.

Reconstruction loss는 이렇게 표현되는데,

L_p는 predicted joint position이랑 target joint position의 mean absolute error(MAE) 값이고,

L_r은 predicted joint rotation이랑 target joint rotation의 MAE 값

L_vp는 predicted joint velocity랑 target joint velocity의 MAE 값

L_vr은 predicted joint rotational velocity와 target joint rotational velocity의 MAE값

L_dp와 L_dr은 translational velocity와 rotational velocity를 유한 차분법을 사용해 즉석에서 얻어낸 값을 사용해서 velocity MAE를 penalize 하는 Term

지금까지 말한 Term들은 모두 local space에 대해서도 계산되고 world space상에서도 계산됨

L_f는 world space 상에서 facing direction의 MAE 값으로, character rotational drift를 막기 위해 사용됨

weight는 다 비슷한 scale이 되도록 실험적으로 설정하였음

 

1-1. Introduction 내용 요약

첫번째 문단: human communication에서 gesture가 중요한 역할을 하고 있다고 설명하면서, realistic한 gesture를 생성하는 것이 virtual human에게 매우 중요하다고 설명

두번째 문단: 기존에 gesture animation을 생성할 때 사용하던 방법은 tag를 바탕으로 미리 Record된 animation을 Database에서 가져와 재생하는 것. 이런 방법은 효과적이긴 하나, 너무 많은 노동력이 들어감. 또한 scripted되지 않은 Dialog content에서는 사용할 수 없고, speech rhythm과 gesture가 일치하지 않는다는 단점이 있음

세번째 문단: 위의 문제를 해결하기 위해 data-driven method로 gesture를 geneartion하게 하려는 연구가 진행되었으나 여전히 어려운 문제로 남아있고 style을 control하는 것은 더욱 더 여려운 문제로 남아있다고 설명하고 있음

네번째 문단: gesture generation에서 speech가 control input으로 많이 쓰이는데, 하나의 speech에도 다양한 gesture가 적절하기 때문에 speech는 weak control signal이라고 설명하고 있음. 또한 gesture에는 사람마다의 개성이 드러나기 때문에 모델은 넓은 범위의 motion variationcharacter의 개성을 모두 캡쳐할 수 있어야함

다섯번째 문단: 이전 연구에서는 이런 문제를 character마다 다른 style을 부여하고, 손 높이나 velocity에 대한 통계를 사용해서 gesture를 수정하는 식으로 stylized gesture를 만들어냄. 이런 방법은 데이터셋에 제한된다는 단점이 있음. (모든 target speaker와 모든 style에 대해 training해야함).

Scale up 시키기 위해서는 적은 data로도 학습이 가능해야함. 그리고 word로 style을 명시하는 것은 애매한 부분이 있으므로 example로 motion style을 명시하는 것이 더 쉬움.

여섯번째 문단: 여기서는 ZeroEGGS라는 시스템을 제안하고 있는데, 이 시스템은 짧은 motion example로 zero-shot style transfer이 가능하며 확률적인 모델이기 때문에 같은 input을 넣어도 다양한 output motion을 얻을 수 있음

 

1-2. 내가 새롭게 Introudction을 작성한다면?

첫번째 문단: 최근에 그래픽스 기술의 발달과 더불어 가상현실이 대두되면서, 가상현실에서 아바타들끼리 대화를 하거나, virtual human이 서비스를 제공하는 일들이 많아지고 있음. 이러한 사람같은 agent들이 진짜 사람처럼 느껴지기 위해서는 자연스러운 gesture를 생성하는 것이 필수적.

두번째 문단: human gesture의 본질적인 특징에 대해 설명

- 다양한 context의 영향을 받음

- word의 rhythm과 일치되는 경향이 있으며

- 같은 speech라도 다양한 gesture를 생성할 수 있으며

- 사람마다의 개성이 드러난다는 특징이 있음.

--> 자연스러운 gesture를 생성하기 위해서는 model이 이러한 gesture의 특징을 잘 포착할 수 있어야함.

세번째 문단: 기존에 많이 사용되는 방법은 tag를 바탕으로 한 pre-recorded motion을 재생하는 방법은, 효과적이나 노동력이 많이 들어가고, 두번째 문단에서 설명한 gesture의 본질적인 특징을 잘 반영하지 못함. 그리고 dataset에 너무 한정되기 때문에 data-driven 방식이 시도되었음

네번째 문단: data-driven 방식에도 어려움이 많음. Style의 표현이 제한적이다. 그리고 data의 양에 너무 제한적임

다섯번째 문단: 우리는 기존 data-driven 방식의 문제를 해결하기 위해 새로운 framework를 제안

< framework의 특징>

- style을 examle motion을 사용해 받아와 모호함을 줄였으며,

- 확률적인 성질을 가지는 VAE 모델을 사용해 다양한 range를 가지는 Gesture의 특징을 살림

- 적은 data로도 사용이 가능. zero-shot style transfer를 한다.

 

2-1.  Related work 내용 요약

첫번째 문단: gesture motion을 automatic하게 생성하는 연구에는 두가지 접근법이 존재) rule-based, data-driven 

두번째 문단: Rule-based method에 대한 설명을 하고 있음

설명) Rule-based method는 speech marker를 gesture와 mapping시키는 방법

장점) motion 자체는 높은 완성도를 가지지만

단점) 다양성이 한정되어있고, 노동력이 많이 필요해서 scale 키우기가 어려움.

세번째 문단: Data-driven method에 대한 설명을 하고 있음

설명) Data-driven method는 speech와 motion feature의 상관관계를 모델링하는 방법

Data-driven method에서는 1) database의 일부로부터 이와 연결되는 새로운 모션을 생성하기도 하고, 2) 그냥 아예 모션을 generate하기도 함.

아예 generate하는 접근법에서는 모델이 speech와 gesture의 mapping을 학습해야하는데 이게 one-to-many problem이라 mean collapse나 모션의 움직임이 둔한 문제 등이 나타날 수 있음.

이러한 문제들을 해결하기 위해 GAN를 사용함

네번째 문단: 이러한 노력에도 불구하고, 생성된 모션들은 자연스럽지 않음

다섯번째 문단: 이때까지 설명한 방법들은 speech에만 condition된 방법들. 최근 몇몇 연구는 gesture style에 대한 control을 제공함. (아래의 예시들이 그러한 연구들)

하지만 이러한 연구들 모두 handcrafted control feature에만 의존하고 있는데 이런 feature들은 충분히 descriptive하지 않음. 그래서 모델이 학습할 수 있는 넓은 범위의 스타일을 커버하기엔 부족함

  • [AHKB20] -> gesture speed, height, spacial extent, lateral symmetry(좌우대칭) 을 통한 style control 제공
  • [YPJ*21] -> speed, spacial extent, handedness(손의 사용방향) parameter를 통한 style control 제공
  • [SGD21] -> Laban Effort, Shape qualities을 사용한 animation modifier 제공

여섯번째 문단: hand crafted feature의 단점을 극복하기 위해 style example이 사용되었음

  • [AWL*20] -> human locomotion에서 style을 transfer하기 위해 example clip을 사용하였음. Unseen styles도 일반화할 수 있지만 discriminator를 학습시키기 위해 labeled data가 필요
  • [VPHB*21] -> dance motion을 style example motion과 music에 조건화시켜 생성함. 그런데 Unseen style을 커버하지 못함.

일곱번째 문단: style을 naming 시키는 것의 모호함과 style dataset을 확보하는 어려움은 animation 뿐만 아니라 다른 분야에서도 마찬가지임. speech synthesis 분야에서도 example을 통한 style generalization과 style generlization 연구가 진행되고 있음.

  • [HZW*19, WSZ*18, ZSvNC21] -> 이 모델들은 새로운 style을 generalize할 뿐만 아니라 style latent space에서의 interpolation도 제공하고 있음. 본 연구는 이 부분에서 영감을 받아 이러한 아이디어를 gesture generation에 적용함

 

3-1. Experiment and Result

ZEROEGGS의 generalization, style control flexibility, subjective quality를 평가하기 위한 실험을 진행함.

 

3-2. Unseen styles and speakers

style encoder는 unseen gesture motion sample에서도 style encoder feature를 뽑아낼 수 있는데, 이를 테스트하기 위해서 training dataset에서 oration style sample을 전부 제거했음. 이 oration style에 속한 동작들은 손의 높이가 다른 style에 비해 눈에 띄게 높음.

5a) 이렇게 oration을 제외하고 training을 시킨 뒤에 oration style의 reference motion clip을 넣어줬을 때 잘 따라하는 것을 볼 수 있음.

5b) 각 스타일별로 하나의 recording sample을 보관하고 Inference time에 보여줬을 때 모델이 적절한 스타일을 만들어냄

6) 모델의 일반화 능력을 평가하기 위해, male speaker의 audio에 본적 없는 Oration style의 motion을 넣어줘서 결과를 생성함

그리고 zeroeggs는 speech spectrum amplitude에만 의존하기 때문에 training set에 포함되어있지 않은 language에 대해서도 잘 동작함

 

3-3. Manipulating style in the style embedding space

<Blending styles>

Style Encoder가 변형가능하고 continuous한 style embedding space를 제공함. 그래서 linaer interoplation을 통해 여러 sample의 style을 linear interoplation하는 것이 가능하다.

7) Old style과 Oration style을 interpolation한 결과가 figure 7. interpolation하는 비율에 따라 character의 자세와 손의 position이 점진적으로 변하는 것을 볼 수 있음.

<Control via PCA Component>

style embedding vector를 PCA 공간에 투영하고, component들을 manipulate해서 style 특성을 control할 수 있음.

8a) 서로 다른 스타일의 샘플들에 대한 두 주요 성분의 scatter plot(산점도)을 보여주고 있음

이걸 관찰하면 첫번째 PCA component가 몸의 흔들림에 해당하는 것을 알 수 있음. Still이나 Sad처럼 정적인 스타일은 그림의 왼쪽에 위치하고 Happy와 Angry처럼 다이나믹한 스타일은 그림의 오른쪽에 위치함

그리고 두번째 PCA component는 손의 움직임 높이및 반지름과 관련이 있음. 손이 일반적으로 위에 있는 Oration sample의 경우에는 상단쪽에 위치하고, Tired같은 경우에는 손을 무릎위에 올리는 동작들이 많이 나오는데 이 sample 같은 경우에는 하단에 위치함

이러한 Gesture 특성을 PCA space에서 수정하고 다시 style embedding space로 투영하는 것이 가능함

8b) b는 몸의 흔들림과 관련된 첫번째 주요 성분을 수정한 결과. 중간이 중립상태이고 왼쪽이 첫번째 pca component를 감소시킨건데 Root velocity mean이 감소하는 것을 볼 수 있음. 오른쪽은 pca compoennt를 증가시킨건데 Root velocity mean이 증가함.

8c) c는 손의 움직임과 관련된 두번째 주요 성분을 수정한 결과인데 양손의 움직임 경로를 Hip 관절에 대한 전면 뷰에서 나타낸거. 빨간색이 중립상태이고 노란색이 2번째 pca component를 감소시킨거 파란게 증가시킨거. 감소시킨 경우 손의 움직임이 주로 아래쪽에서 나타나고 증가시킨 경우에는 손의 움직임이 위쪽에서 나타남

3-4. User study

3가지 측면에서 user study를 진행함: (1) naturalness (2) speech에 얼마나 적절한지 (3) 스타일의 인식가능성

모델의 성능을 ground truth reference motion이랑 세가지 베이스라인을 사용해서 비교하였음 (mismated motion이랑 our model이랑 MoGlow라는 모델)

실험에는 총 131명이 참가하였고, 각 연구당 최소 20명 이상이 참여하였음. 나이는 20~55세 사이였고, rating page의 순서는 랜덤하게 설정하였음

naturalness 평가에서는 참가자들이 캐릭터의 동작이 얼마나 자연스러운지 평가하고, appropriatness 평가에서는 참가자들이 speech에 gesture가 얼마나 적절한지 평가함, Style portrayal 항목에서는 비디오가 sound 없이 평가되고 참가자들은 주어진 style을 모션이 얼마나 잘 표현하는지 평가하였음. 여기서 style은 6가지로 고정되었고 참가자들은 각각 두 개의 샘플을 평가함

GT는 given speech segment의 original motion이고, MM도 capture 된 모션이긴 한데 wrong context의 Motion임. 자연스러움과 적절성 평가에서 MM은 같은 스타일이지만 다른 speech segment의 모션을 사용하음. style 인식가능성 평가에서는 다른 스타일의 모션을 사용하였음. 

그리고 MoGlow는 style을 3개의 gesture feature를 사용해서 표현함. 손 높이랑 속도 그리고 반지름으로 표현함. 모델과 관련된 통계를 table2에 나타나있음. 처음에 MoGlow 모델을 ZeroEGGS랑 동일한 데이터셋을 사용해서 다시 학습시키려 하였으나 성능이 저하되는 문제가 있어서 original dataset인 TSG 데이터셋을 사용하도록 하였음.

TSG 데이터셋은 4시간 분량의 한명의 남성이 4시간동안 자발적으로 대화하는 걸 담은 독백 형식으로 전부 자연스러운 style로 되어있음. 공평하게 비교하기 위해서 두개의 버전으로 비굘르 시행했는데 첫번째 버전은 원래 데이터셋을 사용하였고 두번째 버전은 tsg 데이터셋을 사용하였음. style 적절성 연구에서 tsg에는 style data가 없기 때문에 tsg 버전에서도 style input은 our dataset에서 가져옴.

3-5. Results

데이터를 분석하기 위해 perceptual data를 ANOVA(분산분석)해서 사용함. 정규성 가정(데이터의 분포가 정규분포를 따른다는 가정)에 위배되지 않고 구면성(독립 변수들의 분산이 모두 동일하다는 가정)이 위배된 경우에는 Greenhouse-Geisser를 사용하여 수정된 자유도를 계산하였음

정규성 가정이 위배된 경우에는 ANOVA 대신 Aligned Rank Transform을 사용하였음. 그리고 Estimated MArginal Means를 사용해서 post-hoc comparision을 수행하였음

(Estimated Marginal Means는 다양한 조건에서의 평균값을 추정하고 비교하는 방법. Post-hoc comparision은 실험에서 얻은 그룹 간 차이를 더 자세히 분석하고 비교하는 방법.)

자연스러움과 적절성을 평가하기 위한 내부 주체 요인은 한가지였고(시스템), style 인식가능성 평가에서는 추가적으로 스타일 요인이 있었음. figure 9랑 table 2에 결과가 요약되어있음. 

user study 결과 ZeroEGGS가 비교 대상이였던 MoGlow 모델을 모든 항목에서 능가하고 있는 것을 볼 수 있음. 예상대로 ground truth가 모든 항목에서 가장 우수한 결과를 보이고 있음

naturalness의 경우) mismatched도 capture된 motion이기 때문에 ground turth와 유사한 결과를 보일거라 예상하였으나, ground truth보다 낮게 나타남. 이는 음성과 동작의 일치가 자연스럽다고 느끼는데 중요한 역할을 한다는 것을 의미함. 또한 our dataset에서는 zeroeggs가 mismatched와 비슷한 수준의 결과를 보여주고 있음

적절성 평가의 경우) (our dataset) 우리 모델이 mismatched보다 높은 평가를 받음. 이는 speech와 motion 간의 상관관계를 모델이 capture해서 나머지 2개의 baseline보다 더 적절한 모션을 만들어냈다고 볼 수 있음. 그리고 mismatched의 경우 같은 스타일의 다른 motion segment를 썼는데 sync가 맞이 않다보니 낮은 평가를 받음. TSG dataset의 경우를 보면 우리 모델이 mismatched랑 moglow보다 살짝 높은 평가를 받긴 하지만 셋 다 비슷한 평가를 받은 것을 알 수 있음. 

style 인식가능성 평가의 경우) mismatched는 다른 style 세션의 captured motion을 사용했는데 mismatched가 ground truth보다 현저하게 나쁜 결과를 받았음. 그리고 mismatched는 ZeroEGGS보다도 성능이 떨어진다. 

그리고 전체적으로 봤을때 ZeroEGGS가 MoGlow보다 우수한 성능을 보인다고 판단할 수 있음. 우선, MoGlow를 our dataset으로 학습시키려 하였으나 MoGlow의 성능이 너무 저하되어 두 개로 나눠서 학습을 시켰는데 TGA 데이터셋을 사용할 때도 여전히 our model이 MoGlow보다 좋은 평가를 받음. 

naturalness 측면에서 MoGlow로 생성된 애니메이션은 떨림이 있었는데, 낮은 frame rate가 영향을 미친 것으로 보임. style 인식가능성 측면에서는 살펴보면, MoGlow가 3개의 style feature만 사용해서 버려지는 많은 정보를 우리 모델이 포착하는 것으로 보임. MoGlow같은 경우 스타일 정보를 몇가지 손동작에 관련된 feature로만 표현했기 때문에, 동일한 움직임 강도를 가질 경우 제스처의 스타일 차이를 정확하게 포착못함. 또한 손과 관련된 feature만 사용하기 때문에 몸의 하반신의 스타일도 포착하지 못함. 

 

 

4. Discussion

기존 모델보다는 우수하지만, 실제 모션보다는 뒤떨어짐.

특정 스타일에 특화된 미묘한 동작들은 생성되지 않는 경우가 있음. 예를 들어 Argreement 스타일의 Training data에는 머리 끄덕임 동작이 풍부하지만, argreement 스타일의 동작을 생성했을 때 머리 끄덕임 동작은 잘 안나옴. style embeding space에서 명시적으로 disentanglement(분리)를 시행하면 몸의 특정 부분에 국한된 동작을 포착하는데 도움이 될 수 있음

그리고 정적인 dataset에서는 잘 동작하지만, 이동이 빈번한 데이터셋에서는 잘 동작하지 않음.

그리고 foot sliding이 발생하는데 이건 inverse kinematics로 해결할 수 있음.

그리고 ZeroEGGS는 raw spectral audio feature에만 의존하기 때문에 speech content의 semantic information을 사용하지 않음. 이것 때문에 speech에 대한 적절성 평가에서 ground truth에 비해 낮은 점수를 받음. future work에서는 speech에서의 semantic marker를 model의 Input으로 받을거임.

5. Conclusion

  • 미래의 작업 방향으로는
  • 스타일 잠재 공간에서 명시적인 분리
  • 의미 있는 제스처 지원
  • 그리고 어파인 변환 커플링 레이어를 기반으로 한 새로운 아키텍처 탐색
728x90
728x90