여러 사람의 3D Pose estimation에서 가장 중요한 부분은 그 사람의 3D 위치입니다.
Top-down 방식을 쓰든, Bottom-up 방식을 쓰든 결국 사람의 3D joint를 추정하고, 그 사람이 전체 3D 공간에서 어디에 위치해있는지를 맞춰주는 게 중요한데요.
위 그림의 ROMP 모델의 경우는 Bottom-up 방식을 사용해서, 각 pixel마다 해당하는 사람의 center point가 어디 있는지를 추정하고 있습니다.
대표적인 모델로, Meta 문경식님의 3DMPPE(2019) 논문을 소개해보겠습니다.
3DMPPE (2019)
이 논문은 Root joint의 위치화까지 학습 기반으로 하게끔 처음으로 제안한 논문입니다. 기존의 방식들은 3D to 2D fitting 방식을 적용했는데요. 기존 방식은 아래와 같은 문제점이 있습니다.
3D to 2D fitting
추정된 2D pose와 project된 3D pose 사이의 pixel 거리 최소화하는 방식
한계점 1) 2D pose, 3D pose 모두 추정값이기 때문에 틀릴 수 있고, 그것이 얻어진 root position에 큰 영향을 끼칠 수 있다. 2) 학습 기반의 알고리즘이 아니기 때문에 잘못된 2D/3D pose 추정치(noise)에 매우 민감하다 (학습 기반인 경우, 몇가지 에러가 있을 때 error를 correction하는 방식으로 학습 가능)
3가지의 분리된 모듈로 구성되어있고, feature 공유를 하지 않고 있습니다. 완전히 분리되어 있기 때문에, detectnet과 posenet은 성능이 개선된 최근의 모델들로 교체해서 사용할 수 있다고 합니다.
1) DetectNet : human detection network (Pre-trained Mask R-CNN 사용, 현재는 yolov5가 더 빠르고 정확하다)
2) PoseNet : cropped human image를 입력으로 받고, root-relative 3D single person pose estimation를 출력으로 한다.
3) RootNet : 이 논문에서 RootNet이 핵심인데, 하나의 cropped human image를 입력으로 받아, root joint(pelvis)의 절대위치를 추정한다.
여기서 2가지의 문제가 생긴다.
1) scale ambiguity : 만약 위와 같이 현실적으로 잘 구성된 모형이 있다고 하면, 크기가 작고 카메라에 가까이 있는 물체 vs 크기가 크고 카메라에 멀리 있는 물체를 구분할 수 없다.
2) Zoom ambiguity : focal length(=zoom), 줌을 얼마나 땡겼는지 알 수 없기 때문에, 그 사람의 절대 위치가 얼마나 카메라에서 떨어져 있는지 알 수 없다.
위의 2가지 문제를 해결하기 위해 camera pinhole model에서는 일부 가정과 데이터셋(mocap dataset에서 제공하는 focal length, 몇 mm를 1px로 바꿀지 정하는 카메라의 factor - 카메라에 담겨있음)을 활용한다.
A_real : 사람의 일반적인 면적을 상수로 가정한다 = 2m*2m 하지만 앉아있거나, 아이들처럼 키가 어른들보다 작은 경우 문제가 생긴다.
위의 2가지 문제를 RootNet에서 image feature를 활용해서 해결한다 : human pose, appearance를 통해 어느 정도 구분할 수 있기에
Multi Person 3D Pose Estimation 분야에서 비교적 최근에 나온 논문인 ROMP(2021) 모델도 참고하시면 좋을 것 같아 관련 설명글 링크 공유드립니다.