3D Human Pose Estimation
https://blog.usejournal.com/3d-human-pose-estimation-ce1259979306
3D Human Pose Estimation
Human Pose Estimation is a widely researched topic in Deep Learning. Its main idea is detecting locations of people’s joints, which form a…
blog.usejournal.com
위 글을 공부해보자
Human Pose Estimation의 주 아이디어는 골격을 형성하는 관절(joint)을 찾는것으로 사람들의 행동 인식이나 움직임 캡쳐, 스포츠, 증강 및 가상현실, 로보틱 등에 적용되고 있다.
-- 추가
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 생성에 초점을 맞추고 있다.)
출처: https://ctkim.tistory.com/101?category=906618 [DEVELOPER]
--
2D로 많은 multi-person Pose Estimation 모델들이 있는데 크게 두가지 접근법으로 나뉜다.
- bottom-up : 관절을 먼저 찾고 그룹핑해서 사람의 포즈를 얻음
- top-down : 사람들을 먼저 탐지하고 개인의 포즈를 추정함
2D 벤치마크로 COCO와 MPII 데이터셋이 주로 사용된다.
3D Human Pose는 2D에 비해 상대적으로 덜 발달되어있음. 마찬가지로 두 접근방법이 있는데:
- 2D포즈를 추정하고 3D포즈로 재건(reconstruct)하는 방법
- 바로 3D포즈로 회귀(regress)하는 방법
Multi-person 3D pose estimation 연구는 다소 한계가 있는데 주된 이유는 좋은 데이터셋이 없다는 것.
대부분 주 데이터셋인 Human3.6 데이터셋을 결과로 하고있는데, 이 데이터는 한 사람(single-person)의 3차원 포즈 비교로, 어떤 방에서 한 사람의 다시점(multi-view) 비디오로 구성되어있고 포즈는 OptiTrack motion capture system을 이용하여 캡쳐했다.
대부분 연구 : single image에서 3D pose 재구성하는데 집중, single 프레임을 고려, supervision을 사용
소수 연구: multi-view를 연구, RGB 이미지에 더불어 깊이(depth)도 고려. 시간 연속성 제약(continuity constraint)을 고려. semi-supervised 또는 fully self- unsupervised
일반적으로 3D 포즈 추정은 계산 집약적이지만 많은 3D 포즈 모델은 실시간임. 좋은 성능을 가진 몇몇 모델들에 대해 더 알아보자.
구분 | 대부분 연구 | 소수 연구 |
분야 | single image에서 3D pose 재구성 | multi-view 또는 RGB이미지에 깊이를 더함 |
frame | single | 지속성 통제(continuity constraint) |
supervised? | supervision | semi-supervised 또는 fully self- unsupervised |
Single-person 3D pose
Single person 포즈를 추정하는데 대부분 single 이미지나 비디오를 사용함. dimention 깊이가 모호함에도 불구하고 3D ground truth (GT)로 훈련된 모델은 single person에 대해서 괜찮은 수행을 보여준다. 최근 깊이 추정 연구에 나와있듯, 신경망은 비슷한 모노 이미지로부터 깊이 예측을 할 수 있다.
논문 baseline model(residual connections과 fully-connected network) 2D 이미지를 넣으면 regression loss를 이용해 3D포즈를 예측했는데, MPJPE가 63mm으로 Humsn 3.6에서 괜찮은 성과를 보인다. 네트워크가 경랑이라 2D추정이 실시간이라면 full model도 실시간 가능하다.
* MPJPE : Mean per Joint Position Error 예측과 정답 좌표 거리를 평균내어 산출. 작을수록 좋음
이 논문에서는 2D, 3D 포즈들을 동시에 회귀했고 Human3.6데이터셋에서 MPJPE 65 mm로 위와 비슷한 결과를 보였다. 2D포즈 추정에 많이 쓰는 HourGlass network를 사용했는데, 모든 관졀의 히트맵을 결과로 내고, loss값은 예측값과 실제값 차이를 L2 distance로 구한다. 깊이는 바로 회귀되는 방식. 뼈 길이 비율이 인간 골격에서 상대적으로 고정되어 있다는 것을 기반으로 3D geometric constraint loss가 있어 이미지를 3D 포즈 추정으로 확장 할 수 O. 실시간 모델.
여기서는 L2 regression대신 integral regression(적분 회귀) 사용하여 2D, 3D 포즈 예측함. 히트맵에있는 모든 관절 위치를 확률에 따라 가중치를 통합(integration)하여 다른 맵 기반 방법에서 호환 가능, 효율적임. 적분회귀가 간단하면서도 non-parametric하기 때문에 realtime 가능. Resnet50과 같이 사용한 integral regression은 Human3.6에서 MPJPE 41 mm 결과를 냄.
VNect은 운동학적 골격 피팅을 채택하여 일시적으로 일관된 2D, 3D 관절 위치를 공동 회귀함. 더 강력한 3D 포즈 예측을 위해 2D 히트맵이 관절마다 세개의 위치정보를 추가하여 3D로 확장됨. 2D 히트맵에서 상응되는 관절 각각의 위치정보를 읽어낸다. 2D heatmap GT에 L2 regression loss가 가중치 매겨짐. Resnet50과 Human3.6으로 81 mm MPJPE 결과 냄.
1차원 dilated temporal convolutions network에 입력해서 2D포즈 예측하고 중간(symmetric convolutions)) 또는 다음(causal convolutions) frame 3D 포즈 예측. CPN 사용한 Human3.6에서 47 mm. 1D convolutional network는 빨라서 2D 포즈가 실시간으로 주어진다면 실시간 가능.
EpipolarPose는 fully self-supervised 방법을 이용해 다시점 이미지로 train하여 한 이미지에서 3D포즈 예측. MPII로 2D이미지를 pretrained된 ResNet50을 써서 volumetric 히트맵을 결과로 냄. 3D포즈는 많은 면(polynomial)의 삼각측량(triangulation)을 이용해 스무스한 L1 loss을 이끌어냄. 관절을 target 눈금 카메라 외부 파라미터 uknown.
61 mm MPJPE on Human3.6
여기서는 Kinnect으로 모노 이미지와 깊이를 input으로 넣어 3D CNN 사용해서 3D 포즈로 바로 회귀. Human3.6은 깊이 정보가 없으므로 비교하기가 힘들다. training으로 저자는 Multi View Kinnect Dataset 사용함.
Multi-person 3D pose
Multi-person 3D pose에서 가장 큰 문제는 겹칩(occlusions). 거기에 데이터도 찾기 힘들다. 대부분 multi-person dataset은 GT가 좋지 않거나 비현실적임.
------
Multi-person 3D pose는 다음에 더 공부해보자.