[논문리뷰] Accurate 3D Hand Pose Estimation for Whole-Body 3D Human Mesh Estimation

nextdoor.dev·2022년 6월 21일
0

논문리뷰

목록 보기
2/6

안녕하세요.
넥스트도어 장우일입니다.

오늘 소개할 논문은 META(전 페이스북) 연구원 문경식님의 Whole body 3D Pose estimation 논문입니다.

코드 : https://github.com/mks0601/Hand4Whole_RELEASE/tree/main#quick-demo
논문 : https://arxiv.org/pdf/2011.11534.pdf


이 논문 이전까지의 일반적인 3D Pose estimation (Mesh) 모델들은 body에만 초점을 맞추거나, body와 hand가 유기적으로 연결되지 않은 네트워크 구조를 지니고 있습니다.
(body, hand, face estimator 따로 해서 integration해서 합치는 방식)

이로 인해, 폐색 또는 motion blur 현상이 있을 때 손 매칭을 제대로 못하게 되어, 위의 사진(Expose, FrankMocap)과 같은 해부학적으로 불가능한 자세로 추론되기도 합니다.


결과 비교 이미지를 좀 더 보면, 폐색이나 truncation(잘림)에 비교적 강한 걸 볼 수 있습니다.
손을 별도 추정해서 해부학적으로 가능한 범위 내에서 연결시키는 구조라, 안정적으로 보이게 하는 것 같습니다.

저도 일반 이미지들로 추론을 해봤는데, 영상에 있어서는 당연히 sequence 기반인 TCMR 모델의 결과가 훨씬 부드러웠고, 하나의 이미지에 있어서는 Hand4Hole(본 논문 모델)이 더 안정적인 게 많은 걸 확인할 수 있었습니다.

(sequence 기반 모델도 좀 더 발전하면, 좋은 퍼포먼스가 나올 것 같은데 문제는 GPU 메모리가 큰 것 같습니다.. sequence 16으로만 해도 resnet50 기반과 PARE 모델의 차이는 엄청나니까요.)


모델 설명


기존의 whole body 3d pose estimation은 다음과 같은 문제가 있습니다.

1. 추론할 joint 수가 너무 많다.
: 한쪽 손만 해도 joint가 21개가 되는데, 양손 40개+body pose까지 하면 할게 많아져서 더 어렵다.
2. 하나의 모델로 모두 추론하기에는 손의 feature 크기가 너무 작다.
: 위의 이미지에서 (b)를 봤을 때(ResNet50 모델 사용), input image는 256x192로 resize되어 들어가고, layer를 거칠 수록 손의 영역은 너무 작아져서 그 안에서 joint를 또 뽑는다는 건 불가능에 가깝습니다.

이 논문에서는 1번 문제를 위 그림의 (a)의 빨간점들인 MCP joints로 해결합니다.
손의 전체 joint가 아닌 주요 joint들만을 목표로 삼아 난이도를 줄여서 문제를 해결한 것이죠.


2번 문제는 위의 아키텍처 그림에서 볼 수 있듯이, 별도의 모듈로 분리해서 해결합니다.
(hand, face, body)
여기서 중요한 건, handnet, facenet에 cropped image를 넣을 때, resized image가 아닌 원본이미지(high-resolution)를 사용한다는 것입니다.
요즘은 핸드폰 카메라로 찍어도 다 고해상도이기 때문에, 이러한 방식으로 많이 개선이 될 수 있으리라 생각합니다.

또한 hand4hole 모델은 기존 모델들과 다르게, hand의 MCP joint들을 bodynet의 joint feature와 concat해서 3d body parameter를 생성하는 데에 활용합니다.
유기적으로 연결이 되니까, 손과 인체의 관계가 보다 학습이 잘 되고, 손목의 회전도 잘 추정할 수 있겠죠.

1. HandNet
hand module의 경우, 왼손을 flip시켜 오른손처럼 만들어서 학습합니다.
이러한 방식이 3d hand pose estimation에서 standard라고 합니다.

2. BodyNet
bodynet에서 wrist를 포함한 body parameter를 추정합니다.

기존 방식의 문제점
본 논문의 저자가 지적하는 기존 방식의 문제점은 다음과 같습니다.
1) 기존 방식은 3D wrist를 추정하는데 body feature를 쓰지 않고, hand feature만 사용한다.
2) wrist는 body와 hand를 이어주는 부위기 때문에 body 정보 또한 알아야 한다.
(elbow의 자세 등 - elbow의 자세에 따라 손목의 위치도 변화하기 때문)

3D wrist에 MCP joint를 사용하는 이유
1) MCP joint들은 3d wrist rotation에 매우 필수적인 정보를 제공한다.
2) 있으면 훨씬 결과가 정확해진다
3) 21개의 모든 손 관절을 다 쓴 것보다, MCP만 쓴 게 제일 성능이 좋다.
손가락은 움직임이 매우 다양한데, 손가락이 어떻게 움직인지는 wrist에 큰 영향이 없기 때문에 굳이 필요하지 않다.

profile
동작 분석을 연구하고 있는 (주)넥스트도어 연구팀 블로그입니다.

0개의 댓글