[논문] xR-EgoPose: Egocentric 3D Human Pose from an HMD Camera

eric9687·2023년 8월 15일
0
post-thumbnail

(참고로, SelfPose: 3D Egocentric Pose Estimation from a Headset Mounted Camera. 와 같은 논문입니다.)

Egocentric pose estimation관련 논문들을 찾아보면, 기본 reference로 사용하는 논문에는 지난번 리뷰한 Mo2Cap2Mo^2Cap^2과 오늘 리뷰할 논문 xr-EgoPose가 많이 등장합니다. 이 두 논문을 완벽히 이해하며 읽으면, EgoCentric pose estimation의 기본 approach는 알고 간다고 해도 무방합니다.

https://arxiv.org/pdf/1907.10045.pdf
https://github.com/facebookresearch/xR-EgoPose

xR-EgoPose는 2019년의 facebook reserach의 논문으로,Mo2Cap2Mo^2Cap^2와 비슷한 연구를 합니다. 3D joint를 뽑아내는 방법과 이에 필요한 데이터셋을 제안하죠.

자세한 내용은 아래 리뷰 본문을 읽어주시면 됩니다.

Abstract

xR-EgoPose는 fish-eye를 머리에 달아 아래 방향으로 촬영한 이미지로부터 egocentric 3D body pose를 추정하는 방법입니다. 저자들은 논문에서 아래 두가지를 이야기합니다.

  • encoder-(dual)decoder 구조를 통한 2d joint 추론
  • 대량의 egocentric 데이터셋

Introduction

논문 제목의 xR은 AR, VR, MR 기술들을 이야기합니다. 아마 저자들은 타이틀을 통해서 xR기술에 본인들의 연구가 유의미함을 강조하고 싶지 않았을까 추측해봅니다.
우선, fisheye 카메라는 코에서 2cm 정도 떨어진 HMD(Head Mounted Display)에 설치했다는 가정에서 시작합니다. 이런 뷰에서 촬영된 이미지는 lower body에 self-occ가 많이 일어나고, camera distortion으로 upper body와 lower body에 대한 resolution이 다르다는 문제점이 생길 수 밖에 없는데요. 그래서 저자들은 데이터셋을 만들고, self-occ문제와 resolution문제를 해결하기 위한 맞춤형 구조를 제안합니다.
그 구조는 두 스텝으로 되어 있는데요. 바로 3D pose를 추론하는 것이 아니라, 먼저 2D heatmap을 추론하고 두개의 decoder를 가진 auto-encoder로 3D pose를 추론하도록 구성되어 있습니다. 이런 방법으로 uncertainty에 대해 학습하여 최종 결과 정확도를 향상시켰습니다.
저자들의 main contribution을 다시 한번 간략히 정리해보자면, 아래와 같습니다.

  • 새로운 encoder-decoder 구조
  • 조정 없이, 외부 front-view에서도 일반화할 수 있는 방법
  • 383K frame을 가진 public dataset

Challenges in Egocentric Pose Estimation


Fig 3은 저자들의 HMD egocentric 셋업의 유니크함을 보여주고 있습니다. 첫번째 열에서는 어떤 부분이 egocentric 뷰에서 self-occ가 일어나는지 보여주고 있고, 초록색은 가장 높은 픽셀 resolution을, 빨간색은 낮은 픽셀 resolution을 의미합니다. 그들의 모델 구조는 upper body와 lower body간의 다양한 resolution으로 인한 uncertainty를 encode합니다.
다른 방법으로는 VR 화면에 fisheye camera를 장착하는 형태의 새로운 synthetic 데이터셋 xR-EgoPose를 만들어냅니다. 이 데이터셋은 Mo2Cap2Mo^2Cap^2 데이터셋보다 더 사진같은 느낌이 있으며, 대용량이라고 합니다. 추가로, 실제 이미지에서의 평가를 위해서 xREgoPoseRxR-EgoPose^R이라는 작은 데이터셋도 만들었다고 합니다.

xxR-EgoPose Synthetic Dataset

저자들의 데이터셋은 캐릭터, 주변 환경, 조명, 액션등의 다양한 환경에서의 scale에 초점을 두었습니다. 액션은 mocap 데이터셋을 사용했고, 카메라의 위치는 headset의 랜덤 위치에 두도록하였습니다.

  • Chracters: 다양한 인종과 피부 parameter, 23 male, 23 female

  • Chothing: 다양한 의상과 신발

  • Actions: Table 1

  • images: 1024×10241024\times 1024, 16-bit color depth, 30 fps, RGB, depths, normals, body segmentation 제공

    • 학습시에는 color depth 8로 축소
  • Render quality: Maya를 사용한 rednering, V-Ray setup

  • 383K frame

    • Train: 252K
    • Validation: 16K
    • Test: 115K
    • gender distribution
      • Train: 13M/11F
      • Validation: 3M/3F
      • Test: 7M/5F

Architecture


저자들이 제안한 구조는 Fig.4에서 볼 수 있듯, 두개의 module을 가진 두개의 step이루어져있습니다.

  • Module 1: ResNet 구조, 2D joint heatmap 생성
  • Module 2: dual branch auto encoder 구조,2D joint heatmap에서 3D 좌표 추론

이렇게 두 개의 모듈로 나뉘었을때, 데이터를 더 잘 활용할 수 있었고, fine-tuning도 용이하기 때문입니다. 또한, 두번째 branch의 경우는 학습에만 필요하고, test에는 필요없기 때문이기도 해서 더 좋은 결과와 성능을 보인다고 합니다.

2D Pose Detection

  • Input: RGB image IR368×368×3I \in R^{368\times 368 \times 3}, normalized
  • Output: heatmap HMR47×47×15HM \in R^{47\times 47 \times 15}
  • ResNet 101
    • 마지막 avg pooling과 FC layer는 deconv(kernel=3, stride=2)로 대체
  • Xavier로 weight 초기화
  • Loss: L2D=mse(HM,HM^)L_{2D}=mse(HM,\widehat{HM})

2D-to-3D Mapping

  • Input: heatmap HMR47×47×15HM \in R^{47\times 47 \times 15}
    • 2d 좌표를 넣을때 보다, heatmap을 넣으면 uncertainty에 더 좋음
  • Output: 3D pose PR16×3P \in R^{16\times 3}
    • 15 조인트 + head
  • Encoder에서 embedding z^\hat z
    • Decoder 1: 3D 좌표 추론
    • Decoder 2: heatmapHM~\widetilde{HM} 생성
      • 2D heatmap의 probability density function을 encode하도록 하기위해서
  • Loss: LAE=λp(PP^2+R(P,P^)+λhmHM^HM~)L_{AE}=\lambda_p(||P-\hat{P}||^2 + R(P,\hat{P})+\lambda_{hm}||\widehat{HM}-\widetilde{HM}||)
    • R(Pl,Pl^)=λθθ(P,P^)+λLL(P,P^)R(P_l,\hat{P_l})=\lambda_\theta\theta(P,\hat{P})+\lambda_LL(P,\hat{P})
    • cosine similarilty error θ(P,P^)=lLPlPl^PPl^\theta(P,\hat{P})=\sum_l^L\frac{P_l\cdot \hat{P_l}}{||P||* ||\hat{P_l}||}
    • limb length error L(P,P^)=lLPlPl^L(P,\hat{P})=\sum^L_l||P_l-\hat{P_l}||
    • PlR3P_l \in R^3, lthl^{th} limb of the pose
    • λp=0\lambda_p=0: 데이터셋에 2D annotation만 있을때

Training Details

  • training set으로 3 epoch
  • lr: 1e31e^{-3}
  • batch normalization on a mini-batch of size 16
  • encoder conv & deconv: kernel 3, stride 2
  • all layers of encoder use leaklyReLU
  • λhm=103,λp=101,λθ=102,λL=0.5\lambda_{hm}=10^{-3}, \lambda_p=10^{-1}, \lambda_\theta=-10^{-2}, \lambda_L=0.5

Evaluation






profile
그러나 먼저 된 자로서 나중되고 나중 된 자로서 먼저될 자가 많으니라(마:19:30)

1개의 댓글

comment-user-thumbnail
2023년 8월 15일

이렇게 유용한 정보를 공유해주셔서 감사합니다.

답글 달기