실시간성을 갖춘 3D Pose Estimation을 찾다가 baseline으로 가장 많이 인용된 논문 중 하나인 VNect를 읽어보았다.
실제로 사용을 해보니 공개 caffe 기반 모델이 있다는 점은 분명 장점이지만, 파이썬으로 구현된 공식open-source가 없다는 점, 공식 코드는 윈도우 기반에 C++ 기반이라는 등의 한계가 있다.
그래도 네이버에서 이걸 모바일화시킬 정도면 의미있는 모델인 거 같긴 한데, 3D Pose 초보인 내가 갖다 쓰기엔 영 불편한 면이 없지 않아 있다.
아무튼 논문의 동기, 구조 등을 확실히 잘 써놓은 훌륭한 논문이라고 생각이 든다.
Intro
- MS Kinect, AR/VR 같은 서비스들이 등장하면서 정확하면서 빠른 3D Pose Estimation 기술에 대한 니즈가 증가하고 있다고 한다.
구조
- Bounding Box Tracking : RGB 입력 영상으로부터 사람만 crop한다. VNect는 단일 인물에 대해서만 가능하며, 고도화 버전인 XNect에서는 다수 인물에 대해서도 Tracking하여 동작한다. 디테일적으로 처음 몇 프레임에 대해서는 동작하지 않고, 이후 추출된 키포인트를 모두 포함하는 직사각형 박스를 버퍼를 잡고 그리는 형태로 구현됐다.
- CNN Regression : 각 관절에 대한 히트맵과 x/y/z 위치에 대한 Location Map을 추출.
- Temporal Filter : 히트맵과 X,Y,Z값 그리고 이전 프레임들에서의 정보들과 함께 다음 프레임의 3D Pose(X,Y,Z)값을 보정하여 보다 결과를 안정적으로 생성. (논문에 수식으로 디테일 포함)
이후 최종적으로 어플리케이션에 해당 Pose를 적용한다.
학습
- 네트워크는 2D Pose 데이터(MPII & LSP)에 pretrain된 것을 사용
- 3D Pose 학습 데이터로는 MPI-INF3DHP & Human3.6m를 샘플링 및 전처리하여 사용
관련자료
[1] VNect official site : http://gvv.mpi-inf.mpg.de/projects/VNect/