Search

SMPL Regressor 만들기

리뷰완료날짜
2023/04/27
리뷰어
카테고리
기타
출판
-
파일
깃헙주소
태그
HPS
SMPL의 joint regressor는 SMPL의 vertices(vR6890×3v\in \mathbb{R}^{6890\times3})을 이용하여 관절의 위치를 추출하는 함수다. vertices에 각 관절별 가중치를 곱하여 관절의 위치값을 뽑아내기 때문에 joint regressor JR6890×jJ \in \mathbb{R}^{6890\times j} (jj는 joint의 수)의 크기를 갖게 된다.
즉, 결국 각 vertices의 가중치를 곱함으로써 관절위치를 뽑아내게 되므로 만들때 핵심은 필요한 joint의 vertices 인덱스를 추출하는것에 있다. 이를 위해 meshlab을 이용하여 필요한 vertices의 인덱스를 추출할 수 있다.
1.
meshlab을 이용하여 SMPL의 출력 obj파일을 연다.
2.
점 버튼을 눌러 vertices 시각화를 활성화 한다.
3.
i 버튼을 눌러 정보보기 버튼을 활성화 한다.
4.
필요한 vertices를 눌러 필요한 인덱스 정보를 추출한다. v# 뒤에있는 정보가 인덱스 정보이다.
위 예제에서 손가락 관절 ii(인덱스번호: 2135)만 뽑아내는 joint regressor의 경우 JiR6890×1J_{i} \in \mathbb{R}^{6890\times1}Ji={a0,a1,a2,...,ai,...,a6889},ak={1  if  k=i0  otherwise,  (kZ6890)J_{i}=\{a_0, a_1, a_2, ..., a_i, ..., a_{6889}\}, a_k=\begin{cases} 1 \space\space if \space\space k=i \\ 0\space\space otherwise\end{cases}, \space\space (k \in \mathbb{Z_{6890}}) 가 된다.
만약 세개 점(2135, 2635, 2133)의 중심점을 관절로 뽑아낸다고 하면
Ji={a0=0,a1=0,...,a2133=0.3333,0,...,a2135=0.3333,...,a2635=0.3333,...,0,0,0}J_i = \{a_0=0, a_1=0, ..., a_{2133}=0.3333, 0, ..., a_{2135}=0.3333, ..., a_{2635}=0.3333, ..., 0, 0, 0 \} 이런식의 값이 될 것이다.

MLKit joint regressor 예시 파일

J_regressor_mlkit.npy
780.6KB

참고링크