What is Pose Estimation?
Pose Estimation이라는 말은 컴퓨터가 이미지나 비디오에서 사람의 pose를 예측하는 task를 의미한다. Pose Estimation의 경우 object의 위치를 알아야 하고, 그 object에 대해 estimate를 해야 하기 때문에 localizing과 estimating 과정으로 진행이 된다. 이 분야의 경우 최근에는 사람 뿐 만아니라 동물이나 자동차, 카메라 등 여러 분야에 적용이 되는데 이 review에서는 Human Pose Estimation [HPE]만 다루도록 하겠다.
HPE의 종류를 보면 위의 그림과 같다.
2D Pose Estimation
2D Pose Estimation은 흔히 접할 수 있는 2차원 이미지, 비디오에서 pose estimation을 수행하는 것이다. 2D Pose Estimation의 경우 2가지 종류로 분류할 수 있는데 분류하면 다음과 같다.
Top-down Approach
- Detection first
- Detection이 제대로 이뤄지지 않으면 estimation을 수행하는데 제약이 생김
- 연산량은 object의 개수와 비례함
Bottom-up Approach
- Estimation first
- 가능한 matching의 조합이 너무 많음
- Time consuming
- Accuracy를 높이는 과정이 너무 어려움
- Real-time에 적용할 수 있다는 장점이 있음
3D Pose Estimation
2D Pose Estimation을 3차원으로 확장시켜서 진행한 것이라고 보면 된다. 2D에서는 특정 joint의 좌표값만 알아도 가능했다면, 3D에서는 camera parameter를 이용해서 depth에 대한 정보도 반영을 해야 한다.
3D Mesh Estimation
3D에서 estimate를 하는데 Pose Estimation의 경우 joint들끼리 matching을 해서 진행을 했다면, Mesh Estimation에서는 실제 사람의 체형과 유사한 mesh를 예측하는 task를 진행을 한다.
이번 Posting에서는 위에서 설명한 2D Pose Estimation, 3D Pose Estimation, 3D Mesh Estimation의 대표 논문들 각각 1편씩을 review할 것이다.
- DeepPose : Human Pose Estimation via Deep Neural Networks
https://arxiv.org/abs/1312.4659
- OpenPose : Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
https://arxiv.org/abs/1812.08008
- SMPL : A Skinned Multi-Person Linear Model
https://dl.acm.org/doi/10.1145/2816795.2818013
DeepPose
HPE에서 중요한 것들 중 하나는 Localization이다. Local detector를 사용하게 되면 subset간의 관계만 파악하기 때문에 전체적인 관계를 파악하는데는 한계가 존재한다. 따라서 전체적인 관점으로 바라보기 위해 Deep Neural Network를 HPE에 적용한게 본 논문이다.
이를 위해 Pose Vector라는 것이 필요하다.
수식으로 보면, 앞의 2x2 행렬의 경우 bounding box의 가로, 세로의 길이로 normalizing을 해주는 term이고 뒤에 의 경우 가 bounding box의 중심이고 는 각각의 joint position이여서 모든 joint와 를 연결한 pose vector가 구해지게 된다.
위에서 구한 pose vector를 (Deep Neural Network)에 통과시킨 뒤 역변환을 하면 구하고자 하는 joint의 위치를 예측한 값 ()가 나오게 된다.
이 값을 실제 ground truth와의 차이를 최소화 하는 hyperparameter 의 최솟값을 구하는게 loss 함수가 된다.
Cascade of Pose Regressor
Regression 처럼 이전 값을 다음 값의 input으로 넣는 과정을 반복하면서 를 구하면 loss 함수는 다음과 같이 바뀐다.
Dataset
FLIC [Frames Labeled in Cinema]
- 유명한 Hollywood 영화에서 가져온 4,000여장의 train images, 1,000여장의 test images
- 다양한 pose와 의상들
- 상반신에서 10개의 joint들이 labeling 되어 있음
LSD [Leeds Sports Dataset]
- 11,000여장의 train images, 1,000여장의 test images
- 대부분의 사람들이 150 pixel height를 갖고 있음
- 전신이 14개의 joint들로 labeling 되어 있음
Metric
PCP [Percentage of Correct Parts]
- limbs (팔다리)의 detection rate를 측정
- 팔다리가 짧은 경우 detect하기 힘듦
PDJ [Percentage of Detected Joints]
- , 여기서 torso는 양쪽 팔을 제외한 상반신
- 대부분의 사람들이 150 pixel height를 갖고 있음
- 팔다리가 짧은 경우 detect를 잘 하지 못하는 PCP의 단점을 어느 정도 보완
Result
PDJ on FLIC dataset
위의 표의 경우 stage에 따른 detection rate의 변화를 보여주고 있다.
표를 보면 stage가 깊어질 수록 Normalized distance to true joint 값이 같을 때의 detection rate가 더 커지는 것을 알 수 있다.
그 다음 표를 보면, 동일한 x,y 축인데 여기서는 joint의 정확한 위치 파악 없이 robust한 pose를 감지하는 경우 정밀도가 낮은 영역 (x축의 값이 큰 부분)에서 DeepPose의 성능이 더 높게 측정되고 있다는 것을 보여주고 있다.
PDJ on LSP dataset
다른 SOTA model들과 비교했을 때 DeepPose의 mAP 값이 평균적으로 더 높게 측정되는 것을 알 수 있다.
OpenPose
Pose Estimation에서 가장 큰 challenge는 다음과 같다
- Each image may contain an unknown number of people that can appear at any position or scale
- Interactions between people induce complex spatial interference, making association of parts difficult
ex) Contact, Occlusion, Limb articulation ... - Run-time complexity is proportional to number of people in the image, making real-time performance difficult
이를 해결하고자 OpenPose에서는 Part Affinity Fields (PAFs) 라는 것을 처음으로 도입하였다.
Part Affinity Fields
여러 사람들을 Pose estimation 할 때 person detection을 먼저한 뒤 다른 사람들 사이의 spatial dependence를 포착해야 서로 다른 사람임을 구분할 수 있다고 한다.
이를 위해 unstructured pairwise relationship을 encoding하는 flow field를 수 많은 사람들의 body part에 포함시켜서 flow가 다른 경우 다른 사람으로 판단하도록 했다고 한다.
PAFs for Part Association
또한 이 논문에서는 unknown number of people의 detected body part로부터 전체 pose를 형성하기 위해 추가적인 midpoint를 각각의 pair 사이에 detect를 해서 part detection의 후보군 사이의 연관관계를 파악했다고 한다.
PAFs가 위치와 방향에 대한 정보를 보존한다고 한다.
Multi-Person Parsing using PAFs
여러 사람을 Parsing하는 과정은 위의 수식을 사용한다. 이 수식을 통해 선택한 edge들 중 가장 큰 weight를 갖는 matching 조합을 찾는데 이 과정에 Hungarian Algorithm이 사용된다.
https://en.wikipedia.org/wiki/Hungarian_algorithm
Method
OpenPose는 real-time으로 pose estimation이 가능하기 때문에 bottom-up approach를 사용한다. 아까 언급했었지만, 다시 그림으로 보면 아래와 같다.
Stage를 넘어갈 수록 다른 사람을 같은 사람으로 판단하는 경향이 줄어드는 것을 확인할 수 있다.
Architecture
- Part-to-part association을 encode하기 위해 iterative하게 PAFs를 예측한다
- 7x7 convolutional kernel을 3개의 연속적인 3x3 kernel로 대체하면서 연산량은 줄였지만 Receptive field는 보존할 수 있었다.
- 3개의 연속적인 3x3 kernel의 형태가 오른쪽 Figure1의 그림의 형태와 유사한데, 이는 DenseNet이라는 논문에서 참고했다고 한다.
Loss Function
Body part에 어떠한 정보도 존재하지 않는다면 다른 사람이라고 parsing을 하는 행위 자체가 불가능해진다. 따라서 이 논문에서는 각각의 stage 마지막에 loss function을 적용해서 network가 iterative하게 첫번째 branch에서는 body part들의 PAFs를 예측하고 두번째 branch에서는 confidence map을 예측할 수 있도록 guide를 했다고 한다.
Dataset
1. MPII Human Multi-Person dataset
- 3,844개의 training image와 1,758개의 test image로 구성되어 있다.
- 14개의 body part에 대해 "highly articulated pose"들로 여러 사람들이 grouping 되어 있다.
2. COCO Keypoint Challenge dataset
- 동시에 사람을 detect하는 것을 요구하고 각각의 사람마다 17개의 keypoint를 matching했다고 한다 (body -12, face -5)
3. Foot dataset
- COCO keypoint ddataset에서 15k개의 annotation subset을 사용한다.
- 다양한 시나리오에서 real-word challenge를 포함하고 있는 image들을 모았다고 한다.
Result
- SOTA 모델과 비교한 mAP
- Top-down approach vs Bottom-up approach
6a : Points / 6b : Selecting all edges / 6c : Minimal Tree edges / 6d : Greedy algorithm (this paper)
이 논문에서 제시한 greedy algorithm의 성능이 다른 방법보다 더 높은 mAP 값을 보인다.
Image는 위와 같은 형태로 출력이 되고
동영상은 이렇게 출력이 된다고 합니다.
Implementation
https://github.com/CMU-Perceptual-Computing-Lab/openpose
실제로 OpenPose github를 clone해서 동작을 시켜보면,
Visual Studio를 통해 build를 하고 작동을 시켜보았습니다.
제 컴퓨터에 카메라를 연결하고 동작시켜보니 Real-time으로 잘 되는것을 확인할 수 있었습니다.
SMPL
그래픽스 수업을 들은 사람이라면 도움이 될 수도 있지만, Mesh로 skinning을 하는 과정에는 4개의 parameter를 필요로 한다.
이 때 기존의 LBS [Linear Blend Skinning], DQS [Dual Quarternion Skinning] 방식의 경우 아래와 같이 Candy wrapper effect이나 Unnatural protrusion과 같은 현상이 발생할 수 있다.
그렇기 때문에 주어진 skeleton structure에 대해 vertice들이 얼마나 연관이 있는지에 대해 modeling을 해야 한다.
Model Formulation
Blend Skinning
Blend skinning을 수식으로 표현하면 위와 같다.
이 때 위의 식의 경우 Rodrigues Formula가 사용이 된다.
Rodrigues formula
Rodrigues formula는 쉽게 설명해서 주어진 v vector를 만큼 회전시킨 벡터를 구하는 식이다. 단순히 회전만 한 것이 아니라 비율까지 고려하기 때문에 위와 같은 수식이 나오게 된다.
SMPL model
Training
Evaluation
Quantitive Evaluation
- SMPL이 평균적으로 더 정확하다고 한다
- Pose blend shape는 LBS와 같이 할 때 더 정확하다고 한다
Visual Evaluation
shape parameter 와 pose parameter 를 변경하면서 확인한 pose들이다.
지금까지 Pose estimation이 무엇이고 2D, 3D, 3D Mesh의 대표 논문 3편을 review 해보았다.
Pose estimation의 경우 VR이나 HCI 등 여러 분야에서 활용할 수 있기 때문에 알아두면 나중에 굉장히 유용하다고 생각한다.
긴 글 읽어주셔서 감사합니다
'Paper Review' 카테고리의 다른 글
[논문] Deep Reinforcement Learning with Double Q-learning [a.k.a DDQN] (1) | 2024.09.20 |
---|---|
[논문] Emerging Properties in Self-Supervised Vision Transformers [a.k.a DINO] (2) | 2024.09.13 |
[논문] Transformer in Computer Vision (5) | 2024.09.11 |
[논문] Segmentation (0) | 2024.09.10 |
[논문] Drone Object Detection Using RGB/IR Fusion (0) | 2024.09.10 |