[Paper Review] Diverse Motion Stylization_STGCN
원래는 Stylistic Locomotion Modeling and Synthesis using Variational Generative Models 이 논문이었는데 좀 더 업그레이드된 논문이다... 열심히 이해해보도록..할 것이닷..!
이 논문의 motion style transfer는 target의 각각 상태가 depressed sytle인 경우와 proud style인 경우에 따라 다른 style의 motion을 생성하는 결과를 확인할 수 있다. 위 그림은 random latent variables로 생성한 styled motion이다.
0. ABSTRACT
해당 논문은 여러개의 스타일 영역에 대해 다양한 스타일로 모션을 옮기는 것에 대한 딥러닝 기반 프레임워크이다.
📁 논문 이해
Reference Motion을 타겟 style로 Source Motion에 입혀 변환하는 모델이다. 이때 두 action의 종류가 jumping, running 처럼 완전히 다른 경우에도 변환이 가능하다. 즉 Source Motion(neutral)에 Reference의 style(depressed, childlike 등..)을 입혀서 Stylized motion을 생성하는 것이다. 이때 Source motion은 기본 걷는 동작일수도 있고, jumping, running 등 다양함.
-
Generative Adversarial Networks(GAN) 를 가지는데, 왜? 여기서 여러개의 스타일 domains을 맵핑하는 것을 support하는 목적으로, style label을 가진 unparied한 모션 클립들 collection으로부터 stylistic features를 학습시킨다.
-
Spatio-temporal Graph to modeal to model a motion sequence를 구축함
-
Spatial-temporal Graph convolution networks(ST-GCN)를 사용한다. 왜? spatial와 temporal dimensions에 따라 stylistic properties를 추출하기 위함.
- spatial은 공간적인 개념, convolution을 할 때 주변의 색 영향 받는 등..
- temporal은 시간적인 개념, 현재 프레임에 이전 프레임 값이 영향을 주는 등..
-
이를 통해, 다른 액션과 motion sequence 사이 style translation 결과값을 향상시킬 수 있음.
-
In addition, mapping network for motion stylization : 스타일에 랜덤 noise를 맵핑해줌. -> Reference Motion없이도 다양한 stylization 결과값을 생성할 수 있음.
1. INTRODUCTION
2. RELATED WORK
motion style transfer와 관련된 연구에 대한 내용이다. 이때, motion style의 domain을 image로 맵핑하는 것을 학습시켜주기 위해서 Image Style Transfer에 대한 내용도 같이 알아둔다.
2.1 Image Style Transfer
Image Style Transfer의 목표는 Source Motion domain의 image에서 Reference Motion(target) domain의 image로 mapping하는 것을 학습시키는 것이다.
- 어디서? Convolutional Layer에서 feature를 매칭함으로써 image 사이의 style transfer 하는 방법이 있음.
- 이때, image stylization의 퀄리티를 향상시키기 위해서 Instance Normalization(IN) 이 소개됨.
- IN은 channel-wise 평균과 분산과 같은 값을 매칭함으로써 style transfer에 효과적임.
- IN을 확장시켜 Adaptive Instance Normalization(AdaIN) 기법을 활용할 것임.
- style input의 평균, 분산값을 조정함으로써 content input의 정보를 주입함
- Addition, random Gaussian noise into style 코드로 transform하는 맵핑 네트워크-> style diversities 얻음(noise 값에 따라 style 차이를 보임)
2.2 Motion Style Transfer
- Gram Matrix depp learning method (나아가 CAVE based on Gram matrix) 많은 연산 시간 걸림.
- Motion data 처리 : Spatial Matching -> frame-by-frame으로 처리하여 실시간으로 생성해주는 네트워크 사용함.
- style labels을 가진 unpaired datastet을 training하는 네트워크도 활용함.
- 지금껏, 하나의 style domain에 대해 하나의 style code만 생성해서 transfer시키는 학습만 진행됨.
- random noise를 스타일에 맵핑시켜서 같은 style 내에서 다양한 stylized 결과값을 생성시키는 것을 목표로 둠.
- 이전 모델들은 human skeleton의 spatial한 구조는 고려하지 않고, joint의 temproal한 변화만 적용시킴
- ST-GCN 모델을 활용하여 joint들 사이의 spatial한 변화도 고려할 것임.
3. OVERVIEW
- network의 input으로 Source Motion에 motion sequence 구조체를 가져온다.
- input의 Source Motion은 spatio-temporal graph에서, 한 style 영역에 대해 input motion을 target style code를 이용해 Stylized motion으로 transfer시켜준다.
- 이때 Target style encoder가 Reference Motion로부터 각 style 영역별 style code값을 추출한다.
- In addtion, mapping network를 생성함-> random latent vector로부터 style code를 생성하도록 한다.
- 이것이 최종 파이프라인이다. GAN의 discriminator로 motion example이 domain으로부터 나온 real값인지 motion stylizer로부터 합성된 fake인지 분류하도록 하는 과정이다.
4. MOTION DATA PREPARATION
4.1 Dataset
우선 데이터는 한 논문에서 쓴 motion capture data를 쓴다. 이때 database를 두 종류로 나누도록 하는데, 이는 한 motion sequence에 대해 Single content인지, multiple content인지 나누기 위함이다. 이는 추후에 실험에서 long-term에 대해서도 motion transfer가 가능한지 평가하기 위해서이다.
4.2 Preprocessing
모은 데이터에 대한 format를 정해줘야한다.
뇽뇽,, 이 부분 이해 덜했다.. 이건 실습 경험 부족 문제인듯 하다..ㅎ 다음에 이해해보도록 할 것이다.
4.3 Motion Data Representation
motion data에 대한 표기는 아래와 같이 하도록 한다.
4.4 Motion Graph Construction
해당 논문에서는 ST-GCN 등을 사용하기 때문에 Motion을 그래프 구조로 구축해주어야한다. 프레임 별 가지는 Skeleton motion을 단일 graph로 변환하는 과정은 아래와 같다.
📌 그래프(Graph)란?
Graph 데이터는 여러 점(Vertex, Node)과 선(Edge)의 집합으로 이루어져있다.
- 노드 : 여기서는 mesh가 가지는 vertex, 즉 skeleton의 각 joint가 이 node라고 둘 수 있다. 여기서 그림에서와 같이 각 노드 별로 벡터를 생성하여 각 joint 노드가 가지는 특징(좌표, 등)을 저장할 수 있다.
- 엣지 : 노드들 간의 관계를 연결하기 위해서 엣지가 있는데, 이는 인접 행렬 등에 저장해서 연결 정보를 반영할 수 있다.
그림과 같이 연결되어 있는 부분에는 1을 두고, 아닌 부분에는 0을 넣어서 인접 행렬을 만들 수 있다.
Graph에 Skeleton의 관절을 저장하고 이를 엣지로 연결한다는 개념을 이해한 상태로, skeleton 이 가지는 sequence를 프레임 별로 연결해서 하나의 Graph로 변환할 수 있다.
📌 프레임 별 skeleton을 연결해 단일 Graph로 변환
- Intra-body connection
영상 내 프레임 별 Skeleton을 산출
- 인간 관절 사이에 어떠한 관절 사이 연결되어야 하는지는 정해져 있음. (엣지를 정의하지 않아도됨)
- Inter-frame connection
프레임 간, 동일한 관절에 대한 연결 생성
📌 해당 논문에서 사용한 Motion Graph
5. GRAPH CONVOLUTIONAL NETWORK
위의 GAN의 backbone으로 Spatio-Temporal Graph Convolution Network(ST-GCN) 를 사용한다.
- 위 그래프 그림은 Graph Convolutional Layer의 local neighborhood 의 시간(Temporal)과 공간(Spatial)를 종합한 노드의 정보이다.
- graph기반의 데이터를 downsampling 하기 위해 spatial pooling 으로써 finer graph를 sparser graph로 만드는 hierarchical graph clustering을 거친다.
- upsampling 은 graph pooling의 반대방향 화살표를 나타낸다.
5.1 Spatial Graph Convolution
Spatial Temporal Graph Convolutional Networks
Skeleton을 Graph로 정의하고 Graph convolutional networks(GCN) 기반 분류 모델을 제안한다.
📌 Spatial Temporal Graph Convolutional Networks (ST-GCN)
- 개별 영상 내 모든 프레임에 대해 연결 진행(Intra-body and Inter-frame connection), 1번째 그림은 모든 연결이 진행된 그래프의 모습이다.
- 그래프 내 특정 관절(노드)를 선택하고 이와 spatial, temproal으로 연결된 관절을 선택함.
- 연결된 관절 범위(D)를 지정하는 함수를 Sampling funciton이라고 정의
- 리뷰하고 있는 논문에서는 d=7로 둠.
- 특정 관절을 선택했을 때(2번째 그림), 해당 관절과 가까운 관절은 spatial으로 연결된 관절인 것이고, 또한, 다음 프레임으로 연결된 관절은 temproal으로 연결된 관절이다.
그래프에서 vertex의 집합은 다음과 같이 표기된다. T는 frame의 개수, N은 한 skeleton에서 joint의 개수를 의미한다.
V = {vti|t = 1, . . . , T, i = 1, . . . , N}
edge의 경우 두 종류로 나뉘는데 한 frame 안에서 joint의 edge는 다음과 같다.
ES = {vtivtj |(i, j) ∈ H}
다른 frame에서 같은 joint간의 연결은 다음과 같다.
EF = {vtiv(t+1)i}
📌 Spatial Temproal Graph Convolutional Networks (ST-GCN) (시간적 측면)
시간적 측면에서의 연산이다.
- 모든 프레임에 대한 skeleton을 사용해 모델을 학습하는 것은 연산적에서 비효율적이다.
- 하이퍼파라미터 Γ을 지정해 특정 시점 기준 과거 Γ/2 시점과 미래 Γ/2 시점에 대해 연산.
- 하이퍼파라미터 Γ는 특정 시점 기준 과거,미래 전후 몇개의 프레임을 선택할지를 결정함.
- Γ이 2인 경우 과거 1시점, 미래 1시점에서만 ST-GCN 연산 진행
📌 Spatial Temproal Graph Convolutional Networks (ST-GCN)
Graph Convolutional Networks(GCN) 연산 방식에 대한 설명이다.
fin은 그래프의 feature map으로 fin안의 위치에 있는 값을 갖고온다. p는 sampling function, w는 weight function, Z는 normalize function이다
(1) Sampling function
- 이미지의 2D convolution에서, 한 픽셀로부터 주변 픽셀들을 가져오는 함수이다.
- 그래프에서는 이미지처럼 정해진 인접 픽셀이 정해진 것이 아니라, 정해진 룰에 따라 가져올 수 있는 픽셀의 범위가 넓어질 수 있다. 예를 들어, D=1인 거리를 갖는다면, 한 노드의 주변 픽셀은 해당 노드와 바로 연결되어 있는 노드들이 된다. (이웃노드를 정의하는 방식에는 여러가지가 존재한다.)
(2) Weight function
- 위의 sampling function을 통해 얻어와진 픽셀들에 weight를 더하는 함수이다.
- 이미지의 경우 이미 정해진 grid가 존재하기 때문에 거리적으로 weight가 정해져있다. 반면 그래프의 경우 어떤 것이 더 가깝고 멀고가 존재하지 않기 때문에 그에 해당하는 weight를 준다.
위의 두개의 function을 정리하면 위와 같다. 수식에 대한 설명은 아래와 같다.
_fout_, _fin_
: 그래프 노드 v의 output, input feature mapneighbor set B(vti)
: d(vti, vtj)는 vti부터 vtj까지 edge hops의 최소값- 위의 값은
lti
labels로 맵핑하여 고정된 값을 가지도록 한다. (D=1)
- 위의 값은
Weight function w
: 같은 label node를 가지는 weight를 적용함.normalizing term Z
:vtk
가 속하는 각각의 subset 중복수치
이 수식의 경우 일반적인 convolution 수식과 유사해 가치가 있다. 예를 들어, 3x3 convolution와 유사하게 위 식에서도 총 9개의 subset을 갖게된다. 각각의 subset은 하나의 이웃 노드를 의미한다.
📌 Spatial Temproal Graph Convolutional Networks (ST-GCN) 모델 설명
5.2 Grpah Pooling and Unpooling
convolutional Layer 이후에 dimensionality output을 줄이기 위해서 average pooling 연산을 거친다.
- 그래프의 temporal dimension의 경우 vertices들이 시간에 따라 연속적으로 연결되어있는 uniformly한 구조이기 때문에, 전통적인 average pooling 연산을 사용할 수 있다.
- 반대로, 그래프의 spatial dimension의 경우는 non-uniform 구조이기 때문에, hierarchical graph clustering 즉, finer graph를 sparser graph로 하는 spatial pooling 연산을 고려해야한다.
- 각각의 downsampling 과정에서(pooling), 연이은 joint nodes에 대해서만 local body part(cluster) 내에서 평균을 낼 수 있다. 왜 연이은 joint node 평균 내는지? coarser-grained hierarchical graph구조를 생성하기 위해서이다.!
그림3은 pooling 과 unpooling 과정을 통해 얻은 spatio-temporal graph topology이다. pooling을 통해 coarser-grained hierarchical graph을 생성하기 위한 평균값의 연이은 joint nodes들이 얻어진다. unpooling을 통해서는 평균된 노드들이 이전 스켈레톤 구조로 다시 back mapped된다.
6. MOTION STYLE TRANSFER FRAMEWORK
7. EXPERIMENTS AND EVALUATION
Transferring to Multiple Domatins
- Source Motion인 Neutral Domain으로부터 Reference Motion의 Style Domian을 얻어 Neutral Domain에서의 fast walking motion을 생성해낼 수 있다.
- 또한, 해당 논문의 Framework는 Reference Motion의 key content 정보(locomotion phase, foot contact timing 등)없이 각 style domain을 Source Motion에도 잘 적용하는 것을 확인할 수 있다.
- reference motion에서 중간에 이동 끊겼지만, Source Motion이 걷는 이동대로, reference의 style이 잘 stylized 입혀서 나옴.
Stylization Diversity Using Random Noise
- 또한 해당 논문의 Framework에서 randomly sampled latent vecotr 값으로부터 우리가 원하는 style code를 생성해낼 수 있다. 위의 그림은 3가지 각 다른 latent code로 neutral motion을 각 style domain으로 다양한 결과를 생성해냄.
Style Transfer on Long-Term Heterogeneous Data
- random noise을 이용해서 long-term heterogeneous motion에도 적용할 수 있다.
8. DISCUSSION
9. CONCLUSION
Author And Source
이 문제에 관하여([Paper Review] Diverse Motion Stylization_STGCN), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mmindoong/Paper-Review-Diverse-Motion-StylizationSTGCN저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)