Google Mediapipe의 Holistic을 사용한 미니 프로젝트를 진행했다.

공부나 작업을 하면 노트북으로 작업을 하는데,

노트북의 웹캠을 사용하여 자세를 교정하자는 아이디어를 제안 받았다. 

https://google.github.io/mediapipe/solutions/holistic.html

 

Holistic

Cross-platform, customizable ML solutions for live and streaming media.

google.github.io

Holistic은 기존 Mediapipe의 Multi-hand, Pose, Face-Mesh를 합쳐놓은 모듈이다.

Face-Mesh의 턱 좌표와, 양 어깨 좌표의 중심과의 거리를 측정한다.

 

작업을 하다가 거북목이 되어 그 거리가 짧아지게 되면, 거북목이라고 생각하고, 알림을 제공하도록 했다.

win10toast 라이브러리를 사용하여 알림을 제공하도록 하였다.

 

해당 프로젝트를 공유해 본다.

https://github.com/updaun/Holistic.git

 

GitHub - updaun/Holistic: HolisticProject to using mediapipe python

HolisticProject to using mediapipe python. Contribute to updaun/Holistic development by creating an account on GitHub.

github.com

 

먼저 프로젝트 소스를 다운로드 받아 압축을 해제한다.

 

압축을 해제하고 폴더를 열어 들어간다. (requirments.txt 파일이 있는 곳까지 들어간다.)

 

해당 파일 탐색기의 주소창에 "cmd" 라고 입력하면 해당 경로의 명령 프롬프트를 쉽게 열 수 있다.

방금 다운로드 받은 소스 위치의 cmd 창을 열 수 있다.

 

기본적으로 Python이 설치되어 있어야 한다.

cmd 창에 ' python ' 이라고 입력하여 파이썬이 설치되어 있는지 확인한다.

python

 

만약 설치되어 있지 않다면, 아래의 글을 먼저 읽고 설치하도록 하자!

https://updaun.tistory.com/entry/python-python-low-version-install

 

[python] python low version install

Window OS 에서 여러 버전의 Python을 설치하는 방법에 대해서 알아보자! [Python 설치 주소] https://www.python.org/downloads/ Download Python The official home of the Python Programming Language www.pyt..

updaun.tistory.com

파이썬 버전은 3.7 이상 버전을 사용하도록 하자.

설치된 것을 확인했다면, ' exit() ' 를 입력하여 파이썬을 종료한다.

>> exit()

프로젝트에 필요한 라이브러리를 설치해보자.

pip install -r requirments.txt

명령어를 입력하면 OpenCV, Mediapipe, win10toast 등 필요한 라이브러리를 모두 다운로드 받게 된다.(약 2분 소요)

 

설치가 되었다면, Python을 사용하여 프로그램을 동작시켜보자!

[ 데모 1 실행 ] 

python Holistic_turtleneck_demo.py

첫 번째 데모 프로그램은 단순히 턱과 어깨 중심 사이의 거리만 측정한다.

그런데, 웹캠과 조금 멀어지게 되면 거리가 줄어든 것으로 인식되어 거북목으로 감지되었다.

거리가 줄어든다면, 윈도우 토스트 알림이 올 것이다.

 

[ 데모 2 실행 ]

python Holistic_turtleneck_demo_2.py

mediapipe 에서 제공하는 z value를 사용하여 웹캠과의 거리를  추측하고

거리에 따라 감지되는 임계치를 변경하도록 하였다.

거북목 자세를 취하면 토스트 알림이 올 거이다.

 

[ 실사용 버전 실행 ]

python Holistic_turtleneck_noimgview.py

print문 및 mediapipe의 draw 기능을 지워 연산 속도를 올렸다.

opencv의 imshow를 제거하여 웹캠을 작동하지만 사용자에게 보여지지는 않는다.

이 프로그램을 켜놓고 작업을 진행한 결과, 중간 중간 자세를 바르게 하라고 알림이 와서 나름 효과적이었다.

 

향후 보완사항

- z value를 더욱 효과적으로 사용하여 현재 목의 길이로만 측정되는 부분을 보완하고자 한다.

- 코의 3차원 좌표와 어깨의 3차원 좌표 값의 차이를 추가적으로 활용해볼 예정이다.

+ Recent posts