새소식

딥러닝, 머신러닝/논문리뷰

MeshGraphormer

  • -

microsoft에서 발표한 mesh recovery 관련 논문입니다.
지난 리뷰에서 살펴본 "End-to-End Human Pose and Mesh Reconstruction with Transformers" 논문의 후속 논문입니다.
이 논문에서는 graph-convolution-reinforced transformer, Mesh Graphormer라고 소개하고 있는데요.
어떻게 바뀌었는지 살펴보겠습니다.

 

MeshGraphormer

이미지가 다소 정신없는 점 양해 부탁드립니다.. (출처 : https://github.com/microsoft/MeshGraphormer)

abstract를 보면 local 및 global 상호 작용을 효과적으로 모델링하기 위해 transformer를 활용해서 graph convolution과 self attention을 결합하는 방법을 연구한다고 되어있습니다!

 

1. Introduction

그림1, 2

  • 최근 Transformers와 GCNN(Graph Convolutional Neural Networks)은 Human mesh reconstruction에서 좋은 성과를 보여주고 있음
  • 하지만 두 모델은 각각의 한계가 있다 : Transformer는 입력 token에 대한 long-range dependencies(장기적 종속성)를 모델링하는 데에 좋지만, 디테일한 local 정보를 캡처하는데는 덜 효율적이다. 반면 convolution layer는 local feature를 추출하는 데에 유용하지만, global context를 캡처하기 위해서는 많은 레이어가 필요하다.
  • 이 논문에서는 Human Mesh 3D reconstruction을 위해 self-attention과 Graph Convolution을 결합하도록 하고 있다. (그림 1)
  • 기존 METRO 논문에서는 transformer 구조를 mesh에 적용했는데, 그 모델에 Graph Residual Block을 추가해서 새 모델을 만들었습니다. (아래 METRO 이미지 참조)

METRO

 

2. Related Work

METRO과 유사하므로 생략합니다.

 

3. Graphormer Encoder

아키텍처, 그림3

3.1. Multi-Head Self Attention

  • contextual(문맥상의, 상황에 맞는) information을 학습하기 위해 여러 개의 self-attention fuction들을 병렬로 학습하는 Multi-Head Self-Attention(MHSA) 모듈을 사용함

 

3.2. Graph Residual Block

  • MHSA는 long-range dependencies를 추출하는 데 유용하지만, 3D 메쉬처럼 복잡한 구조의 fine-grained local 정보들을 캡처하기에는 효과가 덜함
  • 이 논문에서 제안한 모델 내부에 있는 Graph Residual Block은 이런 문제를 해결하려는 데에 목표를 두고 있음
  • MHSA로 만들어진 contextualized(맥락적인) feature Y(nxd차원의 실수 집합)가 주어졌을 때, local interactions를 graph convolution으로 모델링하도록 한다. 
  • 식3에서 A bar는 그래프의 인접 행렬이고, W_G는 학습 가능한 파라미터임
    σ(·)는 activation function이고, BERT에 기반하여 GeLU(Gaussian Error Linear Unit)를 사용함

식3

  • 여러 개의 graph convolution layers를 학습하기 위해, GraphCMR 모델의 설계 구조를 따르지만, transformer에 적용하기 위해 group normalization->layer normalization, ReLU->GeLU로 바꿔서 진행함
  • 이 논문에서는 본인들의 Graph Residual Block이 그래프 구조를 네트워크 내부에서 인코딩하도록 해주고, 그 점 때문에 feature 내부의 spatial(공간적인) locality를 발전시킬 수 있다고 보고 있음

 

4. Graphormer for Mesh Reconstruction

  • 그림3(a)를 보면 224x224 크기의 이미지를 input으로 사용하고 image grid feature를 CNN으로 추출함
  • Image feature는 multi-layer Graphormer Encoder에 대한 입력으로 토큰화됨
  • 결국 Graphormer는 mesh vertices와 body joint 3D 좌표를 동시에 예측하게 됨


4.1. CNN and Image Grid Features

  • METRO에서와 마찬가지로 모델의 첫 번째 부분에서는 feature 추출을 위해 pretrained CNN(HRNet, METRO에서와 동일)을 사용함 (그림 3_a와 같이 CNN의 마지막 Convolution 블록에서 Grid feature를 추출함, Grid feature의 크기는 일반적으로 7x7x1024, 즉 49개의 1024 차원의 토큰 벡터이다.
  • CNN의 마지막 hidden layer에서 2048 차원의 이미지 feature vector를 추출하고, Human template mesh에서 각 vertex와 신체 관절의 3D 좌표를 사용하여 positional encoding을 수행함 (METRO와 동일)
  • 마지막으로 모든 입력 토큰의 크기를 일관되게 만들기 위해 MLP를 적용하면, 모든 입력 토큰들은 2051차원을 가진다. 


4.2. Multi-Layer Graphormer Encoder

  • Grid Feature, joint queries, vertex queries가 주어지면 multi-layer graphormer가 차원을 순차적으로 줄여서 input을 3D body joint 및 mesh vertices에 동시에 매핑한다.
  • 그림 3_b에서 볼 수 있듯이 이 논문의 multi-layer graphormer 인코더는 3개의 인코더 블록으로 구성된다. 3개의 인코더 블록은 hidden dimension만 1024, 256, 64로 다르고 나머지(49 Grid feature token, 14 joint queries, 431 vertices queries)는 같다. METRO와 유사하게 multi-layer graphormer encoder에서도 431개의 vertices가 있는 coarse mesh를 처리한다. positional encoding을 위해 coarse template mesh를 사용하고, graphormer 인코더는 coarse mesh를 출력한다. 그런 다음 linear projection을 사용하여 coarse mesh를 원래 해상도 (SMPL Mesh topology의 6K vertices)까지 샘플링한다. 이렇게 coarse mesh를 학습한 뒤 업샘플링하는 것은 원본 mesh의 중복을 피하고 학습을 보다 효율적으로 하는 데 도움이 된다. 

결과이미지

좋게 나온 결과들을 보여주고 있습니다.

기존의 METRO 및 다른 모델들보다  뛰어난 성과를 보이며, 3DPW에서도 SOTA를 달성했습니다.

 

5. Ablation Study

5.1. Effectiveness of Grid Features

표3

  • 표3을 보면, Transformer에 Grid Feature를 추가한 경우가 더 좋은 성능을 보이고 있음이 확인됨
  • single global feature vector를 사용하는 것이 기존 기술 성능의 병목(bottleneck) 현상 중 하나임을 나타내는 것

표4
그림6

  • transformer encoder를 학습시키는데 어떤 feature map이 중요한가? : HRNet에서 다양한 feature map에 대한 분석 수행, 그림 6은 실험을 위해 선택한 6개의 feature map(A,B,C,D,E,F)을 보여줌, 표4를 보면 가장 최신의 feature map인 F가 제일 좋다는 걸 알 수 있고, 이는 feature pyramid가 transformer encoder의 성능 향상에 도움이 된다는 것을 의미함

* feature pyramid란?
- 아래 그림의 d 부분으로, 신경망을 통과하면서 단계별로 feature map을 생성하고, 최상위 레이어에서부터 다시 내려오면서 feature를 합쳐준 뒤에 Object Detection을 진행하는 방법
- 이를 통해 상위 레이어의 추상화 정보와 하위 레이어에서 가지는 작은 사이즈의 물체들에 관한 정보를 동시에 활용할 수 있게 됨

Feature pyramid

 

5.2. Effectiveness of Adding Graph Convolution

  • transformer에 graph convolution을 추가하는 것이 유용한가?

표5

  • 위의 표5를 보면, Encoder3에 Graph Convolution을 추가할 때만 PA-MPJPE가 좋아진다. 
  • Graph Convolution은 local 정보 처리에 더 효율적인 방식이므로, 위의 표를 봤을 때 하위 레이어(Encoder1, 2)는 인체의 자세를 모델링하기 위해 mesh vertices의 global interaction(상호 작용)에 초점을 맞추는 반면, 상위 레이어는 더 나은 모양 재구성을 위해 local interaction에 더 많은 관심을 기울인다는 걸로 볼 수 있음 (그림 3b를 봤을 때의 상위/하위)

 

5.3. Analysis of Encoder Architecture

  • 3가지의 다른 설계를 사용해서 MHSA(Multi-Head Self-Attention) 모듈과 Graph Convolution 모듈 간의 관계를 조사함
  • 1) "Lite transformer with long-short range attention" 논문과 유사하게 Graph Convolution 계층과 MHSA를 병렬로 사용함
  • 2) 먼저 Graph Convolution layer를 사용한 뒤 MHSA를 사용함
  • 3) 먼저 MHSA를 사용한 다음 Graph Convolution 계층을 사용함
  • 표6을 보면 3번 구조가 제일 좋은 성능이 나오는 걸 알 수 있음

그림 14
표6

 

5.4. Effectiveness of Adding Graph Residual Block

  • transformer 인코더에서 기본 graph convolution layer를 사용하는 것에서 확장해서 Graph Residual Block까지 시도함
  • Graph Convolution layer를 Graph Residual Block으로 교체한 경우 더 좋은 성능이 나오는 걸 볼 수 있음

표8

 

5.5. Relationship between Grid Features and Graph Convolution

  • Graphormer Encoder를 사용하지만 Grid Feature를 사용하지 않는다면?
  • 표8을 보면 Grid Feature를 썼을 때가 그렇지 않을 때보다 성능 개선이 됨을 볼 수 있고, Graph Convolution, Graph Residual까지 다 썼을 때의 성능이 제일 좋은 걸 볼 수 있음

 

5.6. Visualization of Local Interactions

  • 마지막 인코더(Encoder3)의 마지막 레이어에서 attention map을 추출하고 모든 attention head의 평균 attention을 계산해서 시각화
  • 그림 7을 보면, 기존 방식인 METRO는 왼쪽 무릎과 왼쪽 발의 발가락 사이의 interaction을 모델링하지 못했던 것에 비해, Graphormer에서는 이와 같은 interaction도 모델링했고, global interaction도 더 강하게 모델링한 걸 볼 수 있음
  • 그 결과 이전 작업에 비해 더 나은 재구성 결과가 나옴

그림7

 

6. Code

https://github.com/microsoft/MeshGraphormer/blob/main/src/modeling/bert/e2e_body_network.py

https://github.com/microsoft/MeshGraphormer/blob/main/src/modeling/bert/modeling_graphormer.py

 

GitHub - microsoft/MeshGraphormer: Research code of ICCV 2021 paper "Mesh Graphormer"

Research code of ICCV 2021 paper "Mesh Graphormer" - GitHub - microsoft/MeshGraphormer: Research code of ICCV 2021 paper "Mesh Graphormer"

github.com

 

GitHub - microsoft/MeshGraphormer: Research code of ICCV 2021 paper "Mesh Graphormer"

Research code of ICCV 2021 paper "Mesh Graphormer" - GitHub - microsoft/MeshGraphormer: Research code of ICCV 2021 paper "Mesh Graphormer"

github.com

graphormer_code

 

 


 

참고자료

https://arxiv.org/pdf/2104.00272.pdf

https://github.com/microsoft/MeshGraphormer

 

GitHub - microsoft/MeshGraphormer: Research code of ICCV 2021 paper "Mesh Graphormer"

Research code of ICCV 2021 paper "Mesh Graphormer" - GitHub - microsoft/MeshGraphormer: Research code of ICCV 2021 paper "Mesh Graphormer"

github.com

https://yeomko.tistory.com/44

 

갈아먹는 Object Detection [7] Feature Pyramid Network

들어가며 오늘 살펴볼 논문은 등장할 당시에도 영향력이 엄청났지만 이 후에 등장하는 모델들에 큰 영향을 준 Feature Pyramid Network 입니다. 현재 State of the Art를 기록하고 있는 EfficientDet 모델도 이

yeomko.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.