딥러닝

OpenPose로 사용자 동작 인식하기

lhg010524 2024. 8. 7. 17:22

사용자의 동작을 인식해 카페, 도서관 등 공공장소에서 자동으로 온도를 조절하는 아이디어를 주제로 공모전을 준비 중이다. 팔을 비비는 동작, 아니면 더워서 옷을 펄럭거리는 듯한 동작을 자동으로 인식해 비율을 계산해 자동으로 온도 조절을 하자는 게 메인 아이디어. 

 

구현해야 할 사항은 다음과 같다.

 

1. 카메라로 특정 동작 인식

 

2. 전체 사람들 중 특정 모션 취하는 사람의 비율 계산

 

3. 임계치 넘어가면 온도 조절하는 알고리즘 설정

 

이 포스팅에서는 1번 주제를 중점적으로 다루며, 구현 핵심이 될 OpenPose에 대해 간단히 설명한다. 

 

 

- OpenPose란?

* 인간 자세 예측의 한 분야로 카메라 한 대로 사람의 몸, 얼굴, 손가락마디 등을 정확하게 예측하는 프로그램.

* 2017년 카네기멜론대학교에서 발표했고 딥러닝 합성곱 신경망을 기반으로 신체 주요 특징점을 추출한다. 

 

기본 OpenPose에 들어있는 CNN 네트워크는  BODY-25, COCO, MPII가 있다. 각각 출력관절의 수가 다른데, 순서대로 25개, 18개, 15개로 구성된다. Body-25가 제일 구체화된 모델이라 볼 수 있다. 

 

사용된 알고리즘의 자세한 설명은 아래 블로그를 참고 바란다.

https://mickael-k.tistory.com/152

 

오픈포즈(Openpose) 공부했다. 이렇게 쉬울 줄은..

start() { 시작에 앞서 본 포스팅은 아래 순서로 작성 될 예정입니다. 이번 포스트는 1번 'OpenPose' 이론에 해당 합니다. 1. OpenPose 이론 2. OpenPose를 하기 위한 환경 설정 (Ubuntu 기반) 3. OpenPose 작동시켜

mickael-k.tistory.com

 

이제 실제 다운을 받아보자. 인터넷에 다운받는 방법 검색하면 터미널에서 하는 방법이 주로 나오지만 그렇게 하기보단 직접 github에서 다운로드 받고 실행하는 것이 가장 빠르다. 필자는 아래 블로그를 참고했다.

https://gyong0117.tistory.com/149

 

[모션 인식] Python과 OpenPose(OpenCV)를 사용하여 실시간 자세 추정하기

1. 모션 인식 - OpenPose OpenPose는 신체의 관절을 추론하는 기술입니다. 이후, 관절들을 선으로 이어서 보여줍니다. OpenPose는 얼굴, 손, 몸의 skeleton을 그릴 수 있습니다. 자세 추정이 필요한 저희 팀

gyong0117.tistory.com

다운을 마치고 파이썬을 실행시킨다. OpenCV라는 프로그램도 다운받아 카메라를 동작할 수 있게 한다. 위 블로그에 나온 코드를 토대로 실행하면 노트북에 연결된 웹캠이 뜨고 사용자의 관절을 인식한다. 

 

동작을 인식하는 것까지 성공했다. 

 

이제 특정 동작(추워하는 동작, 더워하는 동작) 등의 좌표를 추출하면 된다. 다음 포스팅에는 특정 동작을 어떻게 인식하고 레이블링할지에 대해 다뤄보겠다.