☞ 문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다.
☞ 틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.
Basics
Pose Estimation은 이미지나 비디오에서 사람의 관절(key point -Head, Neck, Sholder, Elbow, Wrist, Hip Knee, Ankle 등)이 어떻게 구성되어 있는지 위치를 측정(Localization)하고 추정하는 문제이다.
Pose Estimation은 2D Pose Estimation, 3D Pose Estimation으로 나눌 수 있다. 2D Pose Estimation은 RGB 이미지에서 픽셀 공간의 각 관절에 대한 2D Pose(x, y)좌표를 추정한다. 3D Pose Estimation은 RGB 또는 RGB-D 이미지를 사용하여 metric space의 3D Pose(x, y, z)를 추정한다. (최근 연구는 2D 이미지, 비디오에서 3D pose 생성에 초점을 맞추고 있다.)
Pose를 추정하는 방식에는 Top-down방식과 Bottom-up방식이 있다. Top-down 방식은 영상에서 사람을 먼저 감지를 한 다음 Bounding Box 내부에서 사람의 자세를 추정하는 방식으로 문제점은 사람을 인식하지 못하면 자세 자체를 측정할 수 없고 사람의 수가 많아지면 계산량도 많아진다. Bottom-up방식은 관절 부위(key point)를 먼저 감지하여 서로 연결해 모든 사람의 자세를 추정하는 방식으로 문제점은 찾은 관절을 매칭할 수 있는 조합이 매우 많고 이를 적절하게 매칭하는데 시간이 많이 걸리며 정확도를 높이는 것도 힘들다. 하지만 사람을 먼저 감지하는 과정을 거치지 않기 때문에 Real-time에 적용이 가능하다.
Loss-Function
가장 일반적으로 사용되는 loss function은 Mean Squared Error - MSE이다. 이것은 회귀 문제로 모델은 정확한 좌표로 회귀하려고 시도한다. 즉 ground truth coordinate로 조금씩 이동한다.
Evaluation metrics
2D Pose Estimation은 주로 Percentage of Correct Keypoints와 Average Precision라는 지표가 사용된다. 3D Pose Estimation은 Mean Per Joint Position Error와 3D Percentage of Correct Keypoints 지표가 주로 사용된다.
Percentage of Correct Parts - PCP
[1] V.Ferrari,M.Marin-Jimenez,andA.Zisserman.Progressive search space reduction for human pose estimation. In CVPR, 2008 의 논문 중 3장 다음과 같이 나와있다.
『A body part returned by the algorithm is considered correct if its segment endpoints lie within 50% of the length of the ground-truth segment from their annotated location.』
예를 들어 왼쪽 팔꿈치의 경우 ground truth의 왼쪽 팔 꿈치를 중심으로 왼쪽 팔의 절반을 반경으로 하는 원내에 왼쪽 팔꿈치의 추정치가 들어 있다면 맞다고 가정한다. 아래와 같은 이미지의 경우 푸른 원내에 왼쪽 팔꿈치의 추정치가 들어가 있으면 된다. 단점은 관절 사이의 거리가 짧다면 검출이 매우 어렵다. 예를 들어, 팔이 그림 처럼 앞에 있을 때 어깨 관절과 팔꿈치 관절 사이의 거리가 이미지에서 몇 픽셀 밖에 안될 수도 있다.
계산법
PCP = (전체 데이터 세트에 대한 올바른 관절)/ (전체 데이터 세트에 대한 총 관절)
10개의 이미지와 이미지 당 1개의 포즈가 있는 데이터 세트를 가져온다.
각 포즈는 8개 파트로 구성된다(upper arm, lower arm, upper leg, lower leg) x 2
upper arms의 수 = 10 * 2 = 20
lower arms의 수 = 10 * 2 = 20
lower legs = upper legs = 20
upper arm이 20개 중 17개가 감지(오른쪽 팔 10개, 왼쪽 7개) → PCP = 17/20 = 85%
PCPm
[2] M. Andriluka, L. Pishchulin, P. Gehler, and B. Schiele. 2d human pose estimation: New benchmark and state of the art analysis. In CVPR’14. 의 논문 중 2장 다음과 같이 나와있다.
『We define a new metric denoted as “PCPm” that uses 50% of the mean ground-truth segment length over the entire test set as a matching threshold, but otherwise follows the definition of “PCP”.』
PCP 방법을 사용하면 사람이 작게 찍힌 경우, 원이 작아져 올바르다고 판정 받는 것이 어려울 수 있다. 이 점을 개선한 것이 PCPm이다. 기존 PCP의 파란색 원의 반경을 테스트 데이터 전체의 평균치로 변경하여 사용하는 방법이다.
Percentage of Correct Keypoints - PCK
[3] Y. Yang and D. Ramanan. Articulated pose estimation with flexible mixtures-of-parts. In CVPR, 2011. 의 논문 중 7.2장에 다음과 같이 나와있다.
『We define a candidate keypoint to be correct if it falls within α · max(h, w) pixels of the ground-truth keypoint, where h and w are the height and width of the bounding box respectively, and α controls the relative threshold for considering correctness.』
PCK에서는 관절점의 추정 좌표와 정답 좌표의 거리가 어느 임계값 보다 작다면 그 관절점이 옳다고 판단한다. PCK의 임계값은 인물 머리 크기에 따라 결정되는 경우가 많다. 이것을 PCKh라 부른다. 예를 들면 PCKh @0.5의 경우, 머리 사이즈의 0.5를 임계값으로 설정해 평가 한다.
Percentage of Detected Joints- PDJ
예상 관절과 실제 관절 사이의 거리가 몸통 지름을 이용하여 생성하는 특정 임계값 내에있는 경우 관절이 감지 된것으로 간주된다. 이 임계값은 변경이 가능하여 다양한 localization 정밀도에 대한 검출 속도를 얻을 수 있다. 예를 들어 이미지에서 신체 크기가 300px라고 가정하고 특정 임계값을 5%로 했을 때 300px * 0.05 = 15px로 15px인 원을 그리고 예측이 그 원안에 있는 경우 예측이 성공했다고 측정한다. 여기서 주의할 점은 몸통 지름의 경우 사람이 옆으로 돌면 지름이 0으로 나타날 수 있다는 것이다.
아래 수식에서
di 는 Ground Truth Key point와 예측된 Keypoint 사이의 유클리드 거리
bool (Condition)은 조건이 참이면 1을 반환하고 거짓이면 0을 반환하는 함수이다.
n 은 이미지의 키 포인트 수
Average Precision
Average Precision(AP)는 여러 인물 자세 추정의 평가에 이용되는 지표로, COCO 데이터 세트와 AI Challenger 데이터 세트가 이 지표를 채용하고 있다. AP는 추정 자세와 정답 자세의 유사성을 나타내는 척도이다. Object Keypoint Similarity(OKS)에 따라 계산된다. OKS는 주석되는 관절의 추정 좌표와 정답 좌표의 유사성 평균을 나타내는 값이며 다음 식으로 표시된다. OKS는 인물의 추정 자세와 정답 자세가 완전히 일치하면 1이 된다. 물체 검출의 AP에서의 평가에서 IoU와 같은 역할을하는 지표이다. 직관적인 논리는 PDJ와 동일하다. 그러나 각 키포인트에 값이 정해져있다.
아래 수식에서
di는 관절 점 i의 추정 좌표와 정답 좌표의 거리
s는 인물의 크기(COCO는 주석이 달린 사람 영역을 사용함)
ki는 관절 점의 종류 마다 설정되는 상수
vi 관절 점이 주석되어 있는지 여부를 나타낸다.
Mean Per Joint Position Error - MPJPE
MPJPE는 모든 관절의 추정 좌표와 정답 좌표의 거리(단위 : mm)를 평균하여 산출되는 지표이다. 이것이 작을 수록 정확도가 좋다고 말할 수 있다. Estimated and groundtruth 3D Pose의 root 관절(일반적으로 골반)을 정렬 한 후 계산한다. 관절은 또한 root 관절로 정규화된다.
Percentage of Correct 3D Keypoints - 3D PCK
3D PCK는 2차원 자세 추정에 이용되는 지표를 3차원으로 확장 한 것으로, 관절 점의 추정 좌표와 정답 좌표의 거리가 설정한 임계 값보다 작은 경우 그 관절 점의 추정을 올바른 것으로 추정이 제대로 된 비율을 그 평가 값으로 한다.