프로그래밍

Skinned Multi-Infant Linear model(SMIL)

개발독학 2021. 7. 16. 20:44

성인 체형에만 맞춘 SMPL을 유아 체형에 맞출 수 있도록 개선한 모델이다.

Introduction
기존의 SMPL과 같은 3d body pose 추정 모델은 성인 3D 스캔 데이터를 주로 이용하는데, 유아 체형은 shape을 학습할 수 있는 데이터가 없기 때문에 성인 체형을 억지로 축소한 듯한 추론 결과가 나타난다. 그래서 이를 보완하기 위해 노트북과, RGB-D 센서를 이용해 데이터를 수집한다. (RGB-D 센서가 3D scan 보다 비용이 저렴하고 사용하기 쉽다.) 유아의 RGB-D 데이터는 몇가지 문제가 있다. 불완전하고, 퀄리티가 낮은 데이터가 많다. 부분적인 카메라 시점(view)만 있다던지, 신체 부위가 가려진다던지, 대상자가 지시에 따를 수 없기 때문에 미리 정의된 포즈를 취할 수 없다던지 하는 이유 때문이다.

Contribution
자유롭게 움직이는 유아의 37 저품질 시퀀스에서 학습한 새로운 통계 모델 SMIL(Skinned Multi-Infair Linear)
심각한 폐색 및 빠른 움직임을 처리할 수 있는 RGB-D 시퀀스에 SMIL 모델을 등록하는 방법 제공

Related Works
생략

Learning The Skinned Multi-Infant Linear Model from low quality RGB-D Data
사용 가능한 유아 신체 모델이 없기 때문에 먼저 성인 모델을 조정해서 초기 유아 모델을 만든다.(3.2 참조) 그 후 이 모델을 움직이는 유아의 RGB-D 시퀀스에 등록하고, 각 시퀀스의 shape information을 하나의 “personalized shape”으로 만들어서 monocular setup의 불완정성을 완화한다. 마지막으로 모든 개인화된 형태에서 새로운 유아 모양 공간을 학습한다.

SMIL 모델 구성도


Data
소아 병원에서 의사의 의료 루틴에 통합해서 RGB-D 데이터를 수집했다. 

Initial model
makeHuman을 사용해서 initial infant mesh를 수동으로 생성한다. makeHuman은 3D 캐릭터를 생성하기 위한 오픈 소스 소프트웨어이다. SMPL에서 이 기본 모양을 사용하기 위해 이 모양을 등록해야 한다. 하지만 성인과의 크기 및 비율 차이로 인해 SMPL에 직접 등록하는 것은 실패한다. 우리는 shape parameters와 독립적인, makeHuman에서 export된 mesh를 활용한다. 
SMPL을 성인 makeHuman mesh에 등록하고, makeHuman vertices를 SMPL vertices의 선형 조합으로 설명한다. 이것은 우리가 유아 mesh에 적용하도록 해주고, 그걸 SMPL topology로 전송할 수 있게 해준다. 그런 다음 SMPL base adult-shape template을 등록된 유아 mesh로 교체한다.

우리는 피부 artifacts와 자세에 따라 달라지는 SMPL pose blend shapes를 유아 크기로 확대한다. 유아 키를 평균 성인 키로 나누고 blend shapes에 곱했다. SMPL joint regressor는 실험 대상 유아에게 잘 작동했기 때문에 그대로 사용했다.

직립 자세의 성인 데이터를 통해 초기 학습을 진행한다. 700개 이상의 CMU MoCap 데이터셋의 시퀀스에서 나온 포즈를 사용했다. SMPL_B의 모양 공간이 아기 배를 둥글게 설명하지 못하기 때문에 성인의 척추를 구부려 유아와 같은 배를 만든 것이다.

pose parameter로 shape deformations(변형)을 설명하는 걸 피하기 위해, 상대적으로 반듯이 누운 자세에서 일직선이 되어야 하는 척추의 굽힘에 penalty를 줬다. 유아의 발은 서있는 자세에 맞춰져 있지 않기 때문에 발목을 더 뻗도록 더 조정했다.

Optimization
shape and pose parameters, (β and θ), 그리고 global translation t까지 최적화를 해야 한다. 5프레임의 initial shape들의 평균 parager들이 shape regularizer로 이용된다. 실험결과를 봤을 때, 그렇게 하지 않으면 폐색의 경우 모양 변형이 과도하게 나타났다.
initial shape을 fix하고, 시퀀스의 모든 프레임들의 포즈를 계산한다. 우리는 pose parameter θ와 global translation t를 이용해서 다음과 같은 에너지를 계산한다.

 

Table term
Table term(2)

table term
실험 대상 유아들이 대부분 병원에서 테이블에 누워있는 상태로 수집되었기 때문에 E_table 이라는 에너지를 별도로 계산한다. E_in은 모델의 vertices인 M이 테이블 내부, 즉 추정 테이블 평면 뒤에 놓이는 것을 방지한다. E_close는 gravity term으로 작용한다. 테이블에 가까운 vertices와 카메라에서 먼 위치에 있는 vertices에 robust한 Geman-McClure 패널티 기능을 적용해서 모델의 vertices인 M을 테이블쪽으로 당긴다.

 

landmark term

landmark term
depth data의 품질이 낮아서 depth-only 방법은 머리 또는 손 회전과 같은 세부사항을 안정적으로 캡쳐할 수가 없다. 그러나 RGB 영상에서 2D landmark의 위치를 추정하여 최적화 에너지의 추가 제약조건으로 사용할 수 있다. Body landmarks[32]는 initialization(3.5)에 사용되며, 얼굴 및 손 랜드마크는 모든 프레임의 registration energy에 사용된다. 얼굴 검출에 실패한 경우 body pose estimation의 귀와 눈 랜드마크를 사용한다. RGB에서 추정된 2D 랜드마크와 3D model landmark의 거리를 측정한다. 2d 얼굴 랜드마크(코, 눈 윤곽, 입 윤곽, 귀)와 손 랜드마크(knuckles)을 사용한다.

 

data term

data term
data term은 E_m2s와 E_s2m 두가지로 구성된다. E_m2s는 visual model vertices와 scan points 사이의 거리를 설명한다.  E_s2m은 scan points와 모델 표면(surface)의 거리를 설명한다.

other terms
depth data는 특히 borders에 noise를 포함하고 있다. 그래서 noise 때문에 발생한 모델의 jitter 현상을 피하기 위해 temporal pose smoothness term(E_sm)을 추가했다. 이 term은 이전 프레임 pose에 비해 심한 변동이 일어나는 것에 penalty를 준다. 모델의 self intersection 패널티(E_sc)도 있다. Eθ는 squared Mahalanobis distance에 (θ와 pose prior간의) 패널티를 준다

Learning SMIL shape space and pose prior
모든 시퀀스의 개인화된 모양에개해 WPCA를 수행하여 새로운 유아 shapce space를 계산한다. 팔이 긴 유아, 팔이 짧은 유아, 타이즈, 기저귀 및 의류가 없는 유아들을 포함한다. 데이터세트는 총 200,000개 이상의 프레임으로 구성된다. 

손(손가락)이나 얼굴(표정)의 상세 표현은 포함하지 못한 걸 한계점으로 삼고 있다.

출처 : https://files.is.tue.mpg.de/black/papers/miccai18.pdf