A Hybrid Analytical-Neural Inverse Kinematics Solution for 3D Human Pose and Shape Estimation
Regressor를 통해 SMPL body model parameter를 추정하고,
추정된 parameter들은 3d human model(freezed)에 forward되어 3d mesh를 출력하는
Model Based 접근법을 이용하는 모델이다.
Forward Kinematics?
입력 : 3d 관절 회전과 T-pose에서의 3d 관절 좌표
출력: 입력의 3d 관절 회전을 적용한 3d 관절 좌표
Inverse Kinemetics?
입력 : 목표로 하는 3d 관절 좌표, T pose에서의 3d 관절 좌표
출력 : 입력의 3d 관절 좌표에 해당하는 3d 관절 회전
즉, T pose 에서 무슨 회전을 해야 목표로 하는 3d 관절 좌표가 나올지? Output이 회전임
—> Solution이 없거나 여러개일 수 있다는게 문제점.
Pipeline
Inverse Kinemetics에서 보면, 회전 추정이 어렵다는 것을 알 수 있는데, 이 모델에서는 이 문제를 살짝 relax 시킨 느낌인것 같음
Neural network 가 모든 회전을 추정하는게 아니고, 3d관절 좌표와 twist 하는 관절의 1d rotation만 추정한 후, 이를 통해 모델이 모든 3d 회전을 얻는 방식.
Swing 회전과 Twist 회전으로 3d 관절 회전을 분해.
특정 Tpose 에서 어떠한 pose를 취했을때 나오는 Axis Angle rotation을 하나의 축을 기준으로 회전하는거랑 똑같다고 표현할 수 있음.
이렇게 Swing 이랑 Twist rotation 분해하고,
Swing Rotation은 추정한 3d 관절 좌표로부터 계산.
근데 Twist rotation은 계산으로 구할 수 가 없어서 neural network로부터 구해와야함.
Naive Hybrik (Twist and Swing 분해 기반)
Input :목표하고 있는 관절 좌표, T pose 관절 좌표
Output : 추정된 twist angle로부터 3d 상대 관절 회전 을 얻음
상대 관절 회전이면 관절이 바뀌어도 상대적으로 회전이 계산이 되는거니까 twist 범위가 제한되고, 뉴럴 네트워크가 학습하기 쉬워짐.
Naive Hybrik 성능도 괜찮게 나오는데 에러가 accumulate된다는 문제가 있음.
Inverse Kinematics 이 식 부분에서
pk - ppa(k)랑 tk-tpa(k)랑 크기가 안맞아서 생기는 문제인데, 틀린 부분을 계속 누적해서 가져간다는 문제점이 있음.
이걸 해결한게
Adaptive Hybrik
알고리즘 4번줄에서 원래 naive hybrik에서는 pk-ppa(k)인데 이부분을 pk-qpa(k)로 바꾼듯 함
즉, target을 추정된 3d 관절 좌표로 fix시키지 않고 adaptive하게 바꿀 수 있도록 만들었음
정리하자면, 가장 큰 핵심 아이디어는 3d 회전을 상대적 회전으로 바꿔서, twist angle의 범위를 제한해서, neural network가 estimate하기 좋게 만들어줬다는 것 같음
Result?
성능은 좋지만,, 좌표 x,y축이 다 픽셀에 정의되어 있는 형태로 사람이 이미지 상에서 잘려져있으면 모델 적용이 어렵다는 한계가 있음