[MediaPipe] MediaPipe를 이용해서 수어 동작 동영상 각도값 저장하기(1/2)

지현·2022년 4월 12일
2

SONSU 프로젝트 진행 과정에서 수어의 지문자는 좌표값으로 저장하고 학습시켜보는 것이 어떨까 라는 생각이 들어 시도해보기로 했다. 시작하기에 앞서 여러가지 고민들을 적어두었다.


OpenPose에서 좌표값을 받아오는 방법

두번째 고민은 OpenPose Demo에서는 .json으로 각 랜드마크마다 좌표값을 제공해주는데 .json을 .csv로 바꾸는 과정에서 문제가 생겼었다. 따라서 다른 해결책으로는 Demo말고 설치 한 것을 활용해보는 것이었다. 이미 C++로 진행할 수 있는 환경을 모두 구축했고, 그렇다면 이를 .csv 파일로 받아올 수 있을 것이라고 생각했다.
하지만 여기서 문제는 C++을 사용해본 적이 없다는 점과 진행할 때 참고할 자료가 굉장히 적다는 것이었다.
OpenPose로 좌표값 받아오기 : 해당 자료는 OpenPose에서 제공하는 예제코드를 활용하려 짠 코드이다. Visual Studio에서 실행시켜보았으나 실패했다.

OpenPose vs MediaPipe

사전에 OpenPose와 MediaPipe를 선택하는 과정에서 Media Pipe의 좌표값을 모으는 데에 어려움을 느꼈고 좌표값으로 진행하려면 OpenPose로 진행해야한다고 생각했다. 하지만 좋은 소스코드를 찾아 MediaPipe로도 진행할 수 있게 되었다.


모델의 고민 (동적 vs 정적 데이터)

빵형 : 가위바위보 기계만들기인데 여기서는 오픈소스로 제공된 데이터셋을 사용한다. .csv파일 안에는 각도값과 각 동작의 label이 적혀있다. 원리는 Media Pipe로 손가락 인식, 손가락 마디 각도 계산, 제스쳐 인식 KNN 순서이다. 데이터셋을 구할 수 있다면 빠르게 구현이 가능하다는 점이 장점이다.

손 제스처 인식 딥러닝 인공지능 학습시키기 : 이 영상은 가위바위보처럼 멈춰있는 동작이 아니라 움직이는 동작을 인식한다. 여기서는 데이터 수집부터 시작해서 모델 구성(LSTM), 학습까지 다 진행한다.
데이터셋 구성은 제스처를 반복해서 녹화하면서 랜드마크의 각도값을 모으는 과정을 거친다.

좌표가 아니라 이미지로 이루어져야하는 지문자 외의 수어 동작은 CNN+LSTM 모델로 진행 할 것이다. (예상)
LSTM을 경험해보고 싶었고, 데이터 수집의 과정도 진행해보고 싶어서
추가로 데이터셋을 찾아보지 않고 아래 영상을 참고하여 진행하기로했다.


데이터셋 확보하기

해당 영상에서는 데이터 수집을 이렇게 진행하였다. 455/453/456은 수집한 제스처 개수이다.
총 100개의 포인트를 30개로 쪼개서(LSTM의 경우에는 시퀀스의 길이를 정해주어야 하기때문에 30으로 설정) 학습하는데 100개의 포인트가 있는 데이터가 4XX개 있다는 뜻이다.
우선 해당 영상에서 Media Pipe로 데이터셋을 구성하고 학습하는 방법을 알려주기 때문에 Media Pipe를 사용하여 데이터셋을 확보해보려고 한다.

profile
화이팅!

2개의 댓글

comment-user-thumbnail
2022년 7월 12일

안녕하세요 글너무 잘봤습니다! 혹시 mediapipe 좌표값 받아오는 방법 좀 알 수있을까요 ?! ㅜㅜ

1개의 답글