단 한 장의 사진으로 체지방률을 측정해보세요!
Global PyTorch Summer Hackathon 2019에 제출한 작품입니다. 5%(1466명의 참가자 중) 프로젝트가 해커톤 갤러리에 소개됩니다.
이 코드는 Ubuntu, PyTorch 1.2, Python 3.6 및 Nvidia GTX 940MX에서 테스트되었습니다. Python 가상 환경을 설정하고 다음 패키지를 설치하는 것이 좋습니다.
저장소 복제
아래를 설치하세요:
apt-get install tk-dev python-tk
가상 활성화 가상 환경에 필요한 Python 패키지 설치
(pytorch)$ pip3 install torch torchvision (pytorch)$ pip3 install scikit-image opencv-python pandas h5py (pytorch)$ pip3 install cffi (pytorch)$ pip3 install cython (pytorch)$ pip3 install requests (pytorch)$ pip3 install future
NMS 확장 빌드
cd lib/ python3 setup3.py build_ext --inplace
python3 measure_body.py
이는 data/inputs
에서 샘플 사진을 찍어 체지방 비율을 예측합니다.
사진 촬영 지침
모델은 목과 허리 둘레를 추정하여 체지방률을 예측합니다. 따라서 사진에서 목과 허리 부분이 선명하게 보여야 합니다. 또한 모델은 카메라에서 최소 1m 떨어져 있을 때 가장 잘 작동합니다. 몇 가지 예:
좋은 예
data/inputs/
에 그림을 붙여넣으세요.
python3 measure_body.py --image_name <name_of_your_image>.jpg
실행
결과가 화면에 표시됩니다.
단안 깊이 추정 네트워크를 사용하여 픽셀 수준 깊이 맵을 생성합니다. 이는 CVPR 2019 논문 '얼어붙은 사람을 보면서 사람을 움직이는 깊이를 배운다'를 바탕으로 한 것입니다. 동시에 RetinaNet 객체 감지 모델은 신체 부위의 위치를 추정하도록 미세 조정되었습니다. PyTorch는 두 네트워크 모두에 사용되었습니다. 이 정보를 결합하여 신체 측정값과 체지방률을 계산합니다. EXIF 데이터의 일부 카메라 내장 기능도 추정에 사용됩니다. 계산에는 해군 체지방 공식을 사용합니다.
깊이 추정 코드는 이 저장소(이 멋진 Google AI 문서의 구현)에서 빌려서 수정했습니다.
Retinanet 코드는 이 PyTorch 구현에서 차용 및 수정되었습니다.
여기에서 NMS 코드를 확인하세요.