발표자료 : https://docs.google.com/presentation/d/1B-cKihk0mUjyKCfY2aYUlEaXZsNPtFs0/edit?usp=sharing&ouid=116507288704586191771&rtpof=true&sd=true

발표영상 : Mesh transformer 리뷰

논문링크 : METRO: End-to-End Human Pose and Mesh Reconstruction with Transformers

Implementation : https://github.com/microsoft/MeshTransformer

    오늘 소개드릴 논문은 METRO: End-to-End Human Pose and Mesh Reconstruction with Transformers입니다. CVPR 2021 accepted paper입니다.



0. Abstract

    먼저 METRO의 전반적인 내용에 대해 간략하게 소개하고 넘어가도록 하겠습니다. METRO는 single 이미지로부터 3D human posemesh vertices를 reconstruction하는 method입니다. vertex-vertex, 또는 vertex-joint간의 관계를 학습하기 위해 transformer encoder를 사용하며, output으로 3D joint와 mesh vertex의 좌표를 동시에 출력합니다. 또한 METRO는 SMPL과 같은 parametric model에 의존하지 않기 때문에, hand와 같은 다른 도메인으로 쉽게 확장이 가능합니다. 이외에도 거리에 상관없이 자유롭게 self-attetnion이 가능하게 함으로써, joint 또는 vertex간의 non-local한 관계를 학습합니다. 마지막으로, Masked Vertex Modeling이라는 기법을 사용하여, 부분적인 occlusion에 robust해질 수 있었다고 합니다.



1. Introduction

    human의 3D pose와 mesh를 reconstruction하는 task는 많은 분야에서 응용될 수 있는 매력적인 연구입니다. 하지만, 복잡한 관절의 움직임과 occlusion등으로 인해 challenging한 task이기도 합니다. 최근 3D reconstruction 연구는 rough하게 다음 2개의 카테고리로 나눌 수 있습니다.

1-1. Parametric model

    먼저, SMPL로 대표되는 Parametric model을 사용하여 3D human pose를 reconstruction 하는 방법입니다. 해당 방법으로 학습된 모델은 parametric model의 shape과 pose 파라미터를 predict하도록 학습되며, 예측된 파라미터를 parametric model에 대입하여 mesh를 reconstruction합니다. 많은 연구들이 parametric model을 사용하며, 대표적인 연구로는 HMR, VIBE등이 있습니다.

    parametric model은 대규모 데이터셋에 대해 사전 학습된 파라미터를 사용하기 때문에 다양한 환경에서도 robust합니다. 그러나 model을 구축할 때 사용된 제한된 sample로 인해서 pose와 shape space가 제한되어 있다는 단점이 존재합니다. SMPL의 경우 pose는 72, shape은 10개의 space로 제한되어 있습니다.

1-2. Non-parametric model

    이러한 parametric model의 한계를 극복하기 위해, parametric model에 의존하지 않고 human mesh를 reconstruction하는 방법도 있습니다. 대표적인 방법으로는, GCNN(Graph Convolutional Neural Network)을 사용하여 이웃한 vertex간의 관계를 모델링하는 방법이 있고, 1D heatmap을 사용하여 vertex 좌표를 regression하는 방법이 있습니다. 하지만, 이러한 방법은 global한 vertex끼리의 관계는 잘 학습하지 못한다는 단점이 존재합니다.

1-3. METRO

    METRO는 앞서 설명드린 방법들의 문제점을 해결하기 위해, Global한 interaction을 모델링합니다. 최근 연구에서 손과 발처럼 global한 vertex들 사이에 강한 correlation이 존재한다는 것이 밝혀졌다고 합니다. 따라서 저자들은 거리에 관계없이 joint 혹은 vertex들의 global한 관계를 학습하는 것이 occlusion등의 challenging을 해결하는 데 도움이 될 것이라고 주장하였으며, global interaction을 학습하기 위해 transformer를 key idea로 삼았습니다.

1-4. contribution

    따라서 METRO의 contribution을 정리해보자면 다음과 같습니다.

  • METRO는 Transformer encoder를 3D human reconsturction 분야에 최초로 적용한 연구입니다.
  • 또한 MVM이라는 기법을 사용함으로써 다양한 상황에 모델이 좀 더 robust해질 수 있도록 하였습니다.
  • METRO는 parametric model에 의존하지 않기 때문에 다른 도메인으로의 확장성이 높습니다. 따라서 human pose뿐만 아니라 Hand 분야에서도 SOTA를 달성히였습니다.



2. Method

2-1. architecture

    METRO의 전체적인 아키텍쳐는 다음과 같습니다.

    input으로는 224x224의 single image를 받으며, 이를 CNN backbone에 넣어 feature vector를 추출합니다. 그리고 추출한 feature vector에 template mesh를 사용하여 positional embedding을 해주며, embedding된 쿼리 일부에 마스킹을 해줍니다. 마스킹 된 쿼리는 Multi layer transformer encoder의 input으로 들어가, attention 연산을 통해 서로의 interation을 학습하며, 최종적으로 joint와 vertex에 대한 3D coordinates를 regression합니다.

    이제 각 파트에 대해 조금 더 자세히 살펴보도록 하겠습니다.



2-2. Backbone (CNN)

2-2-1) Large scale CNN

    먼저 backbone입니다. backbone으로는 ImageNet으로 pre-train된 CNN을 사용합니다. output feature map 채널은 일반적으로 사용하는 2048이며, HRNet과 같이 feature map의 resolution이 높은 large scale CNN을 사용했습니다. 본 논문에서, 저자는 large scale CNN을 사용한 이유에 대해, resolution이 높은 feature vector를 사용하는 것이 transformer의 performance를 높이는 데 도움을 준다고 주장하고 있고, 실제 실험에서도 feature map의 resolution이 높은 경우 performance가 더 좋게 나왔다고 합니다. 이에 대한 ablation study는 뒤에서 더 자세히 다루도록 하겠습니다.

2-2-2) Skip FC Layer

    이러한 이유로 인해 METRO의 backbone은 FC Layer를 거치지 않고 마지막 hidden layer에서 feature vector를 추출합니다. 하지만 METRO는 3차원 좌표를 regression해야하기 때문에, transformer encoder에서 채널을 2048에서 3으로 맞추어주고 있습니다. 이 내용에 대해서는 Multi-layer Transformer Encoder와 함께 뒤에서 다시 자세히 설명드리도록 하겠습니다.



2-3. Positional embedding

    지금까지 말씀드린 일련의 과정에 의해 feature vector가 추출되면, 추출된 feature vector에 대해 positional embedding을 해주게 됩니다.

2-3-1) RNN vs. Transformer

    우선, positional embedding에 대해 설명하기에 앞서 RNN based model과 transformer의 차이에 대해 간략하게 짚고 넘어가도록 하겠습니다. transformer 이전에 사용되던 RNN기반 모델들은 들어오는 input에 대해서 sequential하게 연산을 수행합니다. 따라서 연산 속도가 느리다는 단점은 있었지만, 쿼리의 position 정보를 잃지 않는다는 특징이 있었습니다. 반면, transformer의 경우 입력되는 문장을 parallel하게 한꺼번에 처리하기 떄문에 연산 속도는 빠르지만 쿼리의 position 정보를 잃는다는 단점이 존재합니다. 예를 들어, RNN의 경우 A love B와 B love A가 같지 않다는 사실을 쉽게 학습할 수 있지만, transformer는 그렇지 않습니다. 따라서 이러한 문제를 해결하기 위해 transformer based model에서는 사용자가 직접 input query에 대한 position 정보를 입력해주게 되며, 이를 positional embedding이라고 합니다.

2-3-2) Embedding vector

    METRO는 positional embedding의 embedding vector로 template jointvertex를 사용합니다. 우선 template mesh를 만들기 위해 SMPL에 dummy parameter를 input으로 넣어줍니다. dummy parameter는 pose와 shape 파라미터에 맞게 각각 72와 10의 dimension을 가지며 모두 0으로 이루어져 있습니다. 이를 바탕으로 template mesh를 만들어내고, 여기서 template joint와 vertex를 추출합니다. 추출된 joint와 vertex template은 앞서 backbone에서 뽑아낸 feature vector와 concat되어 transformer encoder의 input으로 들어가게 되며 dimension은 2048+3=2051을 갖게 됩니다.

2-3-3) Expression

    다음은 지금까지 말한 내용을 수식으로 표현한 것인데, 지금까지 설명한 내용과 동일하기 때문에 설명은 생략하도록 하겠습니다.



2-4. Masked Vertex Modeling (MVM)

    input query에 대해 positional embedding이 끝나면, 모든 쿼리에 대해 무작위로 mask를 씌우게 되며, 저자는 이를 Masked Vertex Modeling, 줄여서 MVM이라고 명명하였습니다.

2-4-1) MLM vs MVM

    MVM에 대해서 설명드리기에 앞서 선행연구인 MLM을 먼저 소개드리도록 하겠습니다. 아래 figure에서 왼쪽이 MLM, 오른쪽이 MVM을 나타낸 것입니다. MLM은 주로 NLP task에서 사용되며, input에 mask를 씌우고 input을 예측합니다. 하지만 METRO는 input query를 예측하는 것이 아니라 input query에 대한 vertex와 joint의 3D coordinates를 regression해야합니다. 따라서 저자는 MVM이라는 새로운 method를 제시하였습니다.

2-4-2) MVM

    MVM은 MLM과 동일하게 input에 mask를 씌우지만, 모델이 input이 아니라 jointvertex들을 regress하도록 학습시킵니다. 따라서 모델은, mask된 쿼리에 대한 output을 predict하기 위해 다른 연관된 쿼리를 사용하는 법을 학습하게 됩니다. 그리고 이는 부분적인 occlusion 상황과 매우 유사하기 때문에 모델이 다양한 상황에서 robust해질 수 있도록 도움을 줍니다. 결과적으로, MVM은 transformer가 관련성이 있는 vertex혹은 joint끼리 attention연산을 할 수 있도록 도와준다고 할 수 있습니다. 이 때, attention 연산은 거리나 mesh topology에 관계없이 이루어지며, 이를 통해 non-parametric model이 잘 학습하지 못했던 global interaction에 대해 학습할 수 있게 됩니다.



2-5. Multi-Layer Transformer Encoder with Progressive Dimensionality Reduction

    앞에서 잠깐 언급한 바와 같이, METRO의 backbone은 FC layer를 거치지 않기 때문에 encoder로 들어오는 vector의 dimension은 2051입니다. 하지만 METRO의 최종 output은 joint와 vertex에 대한 3차원 좌표이기 때문에 dimension을 3으로 맞추어 줘야 합니다. 반면, vanila Transformer Encoder는 constant한 dimension을 가집니다.

    따라서 METRO는 Encoder layer를 여러개 쌓고 각 layer의 끝에 linear layer를 붙여서 차원을 점진적으로 줄여나가는 방식을 채택하였습니다. 따라서 METRO의 multi-layer Trnasformer encoder는, 다음 figure에서 보이는 것처럼 encoder와 linear layer가 서로 번갈아가며 나오는 구조를 가지고 있으며, dimension을 점차 줄여나가서 3으로 맞추어줍니다. CNN의 FC Layer와 비슷한 역할을 한다고 이해하시면 될 것 같습니다.



2-6. 정리

    지금까지의 내용을 다시 한번 정리해보겠습니다. 먼저, single image를 input으로 받아, backbone에서 feature vector를 추출하게 되는데, 이때 feature vector의 높은 resolution을 유지하기 위해 FC Layer를 생략하게 됩니다. 추출된 feature vector는, position 정보를 보존하기 위해 SMPL의 template mesh와 positional embedding을 해주게 되며, 중간에 확률적으로 mask를 씌워 occlusion 상황을 가정합니다. mask된 query는 Transformer encoder의 input으로 들어가, multi-head attention을 통해 global한 interaction을 학습하며, encoder layer가 끝날 때마다 linear layer를 붙여주어 dimension을 점진적으로 감소시킵니다. 그리고 여러번의 encoder-linear layer를 거친 뒤 최종적으로 vertex와 joint의 3D coordinates를 regression합니다.



2-7. Loss

2-7-1) Notation

    Loss를 설명하기에 앞서 노테이션 먼저 짚고 넘어가도록 하겠습니다. 먼저, 사용한 데이터셋은 다음과 같습니다. 각각 $I$는 RGB image, $\bar{V_{3D}}$는 3D vertex GT, $\bar{J_{3D}}$는 3D joint GT를, $\bar{J_{2D}}$는 body joint에 대한 2D GT를 의미합니다. 또한, $T$는 전체 데이터셋의 개수를 의미하고, $M$, $K$는 각각 vertex와 joint의 개수를 의미합니다. 마지막으로 model의 output은 $V_{3D}$와 $J_{3D}$로 표현되었습니다.

2-7-2) Entire Loss

    Training Loss는 다음과 같이 간단하게 구성되어 있습니다.

2-7-3) Vertex & Joint loss

    먼저, vertex와 joint에 대한 loss는 다음과 같이 3D GT와 모델 output간에 L1 loss를 걸어 구합니다.

2-7-4) Regression loss

    다음으로 regression loss입니다. 3D joint는 예측된 vertex에 특정한 regression matrix를 곱해서 얻을 수도 있습니다. 따라서 저자는 다른 연구에서 충분히 실험된 regression matrix를 사전에 정의하고, 이를 모델에서 예측된 vertex와 곱해 3D regression joint를 얻었습니다. 그리고 이 3D regression joint와 GT간에 L1 loss를 걸어 regression loss를 정의하였습니다.

2-7-5) Re-projection loss

    마지막으로, re-projection loss입니다. METRO의 re-projection loss는 HMR이나 VIBE등의 선행연구들과 유사합니다. 우선, camera parameter를 사용하여 3D joint를 2D space로 projection한 뒤, 2D projection과 2D GT와의 L1 loss를 계산하게 됩니다. cametra parameter의 경우 transformer encoder 뒤에 붙어있는 linaer layer에 의해 학습됩니다.

2-7-6) Binary flag

    alpha와 beta의 경우 binary flag인데, 3D 또는 2D GT의 유무에 따라 0과 1로 설정하여 자유롭게 loss를 구성할 수 있습니다. (e.g. 2D GT가 없을 경우 $\beta=0$)



3. Experiments

3-1. Ablation study

3-1-1) MVM

    MVM의 경우 사용하는 쪽이 사용하지 않는 쪽보다 더 좋은 performance를 보여주고 있습니다. Table 3는 input query의 masking 비율에 따른 PA-MPJPE를 나타내고 있는데, 쿼리의 30%정도를 마스킹 했을 때 가장 에러가 작게 나오는 것을 확인하였다고 합니다.

3-1-2) backbone

    backbone의 경우 feature map의 resolution이 커질수록 에러가 감소하는 것을 확인하였다고 합니다.



3-2. Performance

3-2-1) evaluation

    해당 테이블은 METRO가 human pose 도메인 뿐만 아니라 hand에서 SOTA를 달성했음을 보여주면서, METRO의 강력한 확장성에 대해 설명하고 있습니다.

3-2-2) Global interaction

    다음 figure에서 볼 수 있듯이, joint 혹은 vertex끼리 global한 interaction을 잘 이용하고 있다는 것을 확인할 수 이습니다. 첫 번째 행과 같이 몸이 반쯤 가려있는 occlusion 상황에서도 mesh를 잘 생성하고 있고, 마지막 행과 같이 어려운 포즈도 잘 예측하고 있는 모습을 확인할 수 있습니다.



댓글남기기