Mediapipe를 이용한 수화번역AI

2021. 7. 15. 21:14Python AI

드디어 Mediapipe를 이용한 마지막프로젝트이다

 

결과물부터 보도록하자

한가지 알파벳을 1초이상 하고있을경우 지금 하고있는말에 추가하도록 만들었다

UI부분은 개선이 조금 필요할 것같다

그리고 space(띄어쓰기)와 clear(새로고침)은 내가 기존에 있는 수화와 손동작이 겹치지 않게

새로 한개 만들어서 사용했다

수화 표는 위와 같은것을 사용했다 손동작이 비슷한것이 많다보니 가끔 인식이 왔다 갔다 할때가있다

이 문제는 데이터셋을 수집할때 정밀하게, 손동작 사이의 차이를 명확하게 두면 해결될것같다

 

코드이다

22, 61~68번 94~96번은 데이터셋을 수집하기 위한 코드이다

 

원리를 설명해보자

1. 벡터의 뺄셈 연산을 통해 0번에서 1번으로 가는 벡터, 1번에서 2번으로 가는 벡터 등등

   많은 벡터를 만들어낸다

2. 그이후 백터와 벡터사이의 각도를 구한다

3. 구한 각도를 통해 KNN알고리즘을 써서 구한 각도가 어떤 제스쳐를 뜻하는지 알아낸다

    (이때 데이터셋을 사용)

이렇게 이루어져있다

 

그럼 데이터셋은 어떻게 모으는가?

나는 직접모았다

61~68번 라인을 보면 a키를 눌렀을때 test.txt 파일에 현재 각도정보가 들어가도록 만들어 놓았다

이를통해 수화 하나하나 데이터셋을 모으면서 작업해 결과물을 만들었다

데이터셋은 이런식으로 구성되어있다 앞에서부터 각도들, 그리고 마지막에 Label, 해당각도가 

어떤 제스쳐를 의미하는지로 이루어져있다

이렇게 설명을 마치겠다

 

그다음 데이터셋을 모으다가 제일처음에는 그냥 vscode에서 컴파일을 종료하는식으로 진행했더니

test.txt파일에 정보가 입력 되다가 만다 이를 찾아보니 마지막으로 close()를 해주지않으면

파일이 많이 손상된다고 한다 그래서 데이터셋을 수집할때는 끌때 b를 눌러

반복문을 나간뒤 f.close()를 호출하도록 만들었다

 

이로써 Mediapipe를 이용한 프로젝트가 끝났는데 하면서 엄청 재밌었던것같다

항상하던 게임개발이나 PS가 아닌 색다른 프로젝트를 하면서 너무 좋았고

코딩은 언제하나 재밌다는 생각이들었다

이제 다음엔 뭘할까....

 

지금 생각나는 것들은 게임AI 체스 혹은 오목 AI 둘중 하나를 생각하고있다 그리고는

절차적 맵생성이나 절차적 애니메이션을 해볼려고한다

모두 할 수 있으면 좋겠다

 

 

-2021/12/18추가

데이터셋 원하시는 분들이 많아서 추가합니다

 

-2022/09/04추가

코드는 제가 보내드리는 거랑 블로그에 적혀있는거랑 다를게 없습니다.... 오히려 필요없는 부분 정리해서 올린것입니다

제가 보내드려도 큰 도움을 못받으실거에요.... 디버깅이나 궁금한점 질문을 열심히 답변해드리겠습니다

dataSet.txt
0.18MB

'Python AI' 카테고리의 다른 글

Mediapipe를 이용한 제스쳐로 볼륨조절  (5) 2021.07.14
Mediapipe를 이용한 제스쳐인식  (49) 2021.07.14