[PIFu] 3D 모델링에서 체지방률이 나오면 너무 황당해요. [Python]

9545 단어 PIFufootballPython

입문


안녕하세요.
나는 미식축구팀상모 원화의 희야다.
코치 옆에서 미식축구계의 데이터 활용을 추진하기 위해 활동하고 있다.
지난 보도.
Django로 스포츠 코치가 팀에서 사용할 수 있는 항온 어플리케이션을 만들어 봤어요.
이번에는 선수의 전신 사진에 따라 3D 모델을 만들어 체지방률을 산출했다.
결론적으로 말하면 실용적인 수준에 미치지 못하는 정밀도입니다. 제가 소개해 드리겠습니다.

도전하다


운동팀이 되면 선수의 몸은 자본이기 때문에 선수의 컨디션 검사가 중요하다.
체중은 가장 중요한 요소 중 하나이고, 그 다음으로 중요한 것은 체지방률이다.
그러나 체지방률을 관리하려면 시중에 판매되는 수천~수만 엔의 체구성계 정밀도가 떨어져 같은 날 측정해도 5%가 일반적인 편차가 있다.
좋은 방법이 있는지 찾다가 발견했어, 코코아!
3D 신체 스캐닝 시스템 BODYGEE 일본어 버전 발표
'BODYGE'의 가장 큰 장점은 아이패드와 특수한 3D 카메라만이 매우 정밀한 실제 3D 이미지를 만들 수 있다는 것이다. 그'간편함'이다.
'신체 구성'의 중요한 요소인 신체 지방률은 스캐닝된 3D 모델과 회전판에 내장된 체중계에서 얻은 데이터에 따라 계산된다.대학의 연구에 따르면 3D 데이터를 활용한 체지방률 측정 방법은 현재 일반적인 저항 방식을 사용하는 체구성계에 비해 정밀도가 우수하다.
매달 수만 엔은 너무 비싸서 살 수 없지만 모방 기법으로 3D 모델링을 만든다.자기가 한 거 아니야.

3D 모델 생성하기


PIFu


PIFu는 페이스북과 USC(남캘리포니아대)가 공동으로 연구 개발한 전신 사진에서 3D 모델을 생성하는 기술이다.( 원문 )
최근 PIFuHD 이 고해상도화된 물건이 새로 개발되었기 때문에 사용해야 한다.
다행히도 사진을 준비해서 코코아Google Colab를 통통하게 만들면 3D 모형을 만들 수 있다.

해봤어요.


협조해준 건 등번호 4번스타 플레이어!

LB라는 수비의 중요한 위치는 목소리가 매우 큰 팀의 분위기 메이커다.
완성된 모형 이쪽!
(원본 사진은 반나체로 더럽고 색정적이어서 게재되지 않았다)

발 밑이 좀 이상하지만 간단하게 3D 모형을 만들었어요.
모델링에 사용된 것은 예전 사진으로 등 옆도 예쁘다.

눈이 너무 귀엽다.

여기서 생성된 obj 파일을 Blender로 부피로 환산합니다.

Blender를 사용하여 볼륨으로 환산


Blender는 자유로운 3차원 모델 소프트웨어입니다.
부피를 계산하는 기능이 있어서 사용합니다.
여기 사이트를 참고했습니다.

Blender에서는 91706cm3로 계산됩니다.
여기서 Blender에서는 비례자가 실제 세계와 다르기 때문에 수정이 필요하다.

블렌더의 주류로 측정하면 성야 선수는 184.4cm이다.
성야 선수는 정말 171cm이기 때문에 Blender의 비례자는 184.4/171이다.
Blender의 볼륨에 비례 역수의 세 번째 각도를 곱합니다.
체적 계산.py
blender_v = 91706
blender_h = 184.42
real_h = 171

calc_v = blender_v * (real_h/blender_h)**3

print('星野選手の体積: {} cm3'.format(round(calc_v)))
실행 결과.py
星野選手の体積: 73108 cm3
부피로 환산했기 때문에 드디어 체지방률을 계산해야 한다.

체지방률의 계산


체지방률의 계산은 시판된 체중계에 첨부된 측정법 저항법 외에 밀도법도 있다.
현실에서는 수영장에 가라앉아 물속의 체중을 측정해 환산할 수 있다.
밀도에서 체지방률로 전환하는 것은 다음과 같은 경험 공식을 알고 있다.
fat = \frac{4.570}{D} - 4.124 \hspace{50pt} Brozek.et.al.\hspace{4pt}1963
이때 D는 밀도(g/cm3)입니다.
성야 선수의 체중은 87kg이기 때문에 이 식으로 신체 지방률을 계산한다.

결과


체지방률 계산.py
blender_v = 91706
blender_h = 184.42
real_h = 171
real_w =  87

calc_v = blender_v * (real_h/blender_h)**3
D = real_w / calc_v * 1000

fat = 4.570 / D - 4.124

print('星野選手の体脂肪率: {} %'.format(round(fat*100)))
실행 결과.py
星野選手の体脂肪率: -28 %
응?

인간의 한계를 뛰어넘다.

성야 선수의 반응



나 좋아했어?

왜 안 돼요?


이번 일
① 사진에 의한 3차원 모델링
② Blender를 실제 볼륨으로 환산
③ 밀도법으로 체지방률로 환산
태그 요소의 표시 속성을 수정합니다.
어떤 과정의 원인일 수도 있다. ① 겉모습이 그렇게 어울리지 않는 모델(발밑이 더럽지만 부정적인 정도가 될까?)③ 의과학회의 권위는?이런 경험의 법칙이기 때문에 나무랄 데가 없다.
② 이상한 것 같다.

머리 빼고 다시 계산해요.


블렌더의 키를 재볼게요.
머리가 딱딱해서 눈이 줄어들면 182.16cm가 됩니다.

다시 계산해 볼게요.
체지방률 계산.py
blender_v = 91706
blender_h = 182.16
real_h = 171
real_w =  87

calc_v = blender_v * (real_h/blender_h)**3
D = real_w / calc_v * 1000

fat = 4.570 / D - 4.124

print('星野選手の体脂肪率: {} %'.format(round(fat*100)))
실행 결과.py
星野選手の体脂肪率: -14 %
-28%에서 -14%로 바뀌다니.
여전히 부정적이지만 키가 큰 효과가 있는 건 맞아요.
비례자로 세 번 곱하기 때문에 약간의 편차가 큰 영향을 미친다.
비례자의 편차가 정밀도가 부족한 것 같다.
머리카락을 생각해도 많이 달라지지만 발밑이 잘 안 나오고 사진의 시각도 많이 달라지기 때문에 원리적으로 어려운 것 같아요...

앞으로


나는 선수에게 모자를 씌우고 정지 카메라로 사진을 찍으며 절대 척도의 잣대를 준비하고 싶다.
동시에, 노키마 상모 원rise는 함께 활동할 엔지니어를 모집 중!
이쪽 표부터 스태프를 신청하세요.

좋은 웹페이지 즐겨찾기