[golf_AI_Service] 기능
·
Project/golf_AI_Serivce
1. 관절 추출 mediapipe pose landmark model을 이용하여 사람의 33개 관절 point 중 원하는 16개의 관절 데이터를 사용 2. 좌/우타 판별 엉덩이와 손의 x좌표를 기준으로 좌타와 우타를 판별 좌타일 경우 이미지를 flip하여 사용하고 마지막에 x좌표를 다시 1-x로 json에 저장하여 우타기준으로 설계한 기능들을 모두 동일하게 수행하며 json에는 좌타 원본 영상기준으로 데이터가 저장됨 3. 척추각 추출 골프에서 척추각을 spine angle이라고 부르며 중요한 요소이다. 따라서 16개의 관절데이터중 어깨 12-11번 관절과 엉덩이 23-24번 관절을 통해 척추를 추정하여 x축과의 각도를 구함 arctan을 통해 각도를 구한다. tan( θ) = y'/x', arctan(t..
[golf_AI_Service][lambda] 조금 더 자세한 내용
·
Project/golf_AI_Serivce
현재 lambda에 올리기전, python flask를 통해 lambda와 같은 환경을 만들어서 test중. router는 1. metaData 2. compareRouter로 구성됨 (이전과 router에서 수행하는 일이 조금 변경됨) API 로는 1. metaData input : { url : string } output : lambda는 dropbox API를 통해 dropbox와 연결되어있고, dropbox는 하나의 영상을 저장해놓는 데이터베이스 역할을 한다. API Server(nest.js)에서 input으로 dropbox video url or path를 받아와서, 라우터의 역할을 모두 수행했다면, https status 200과 함께 그 영상에대한 info, mediapipe결과, 나의 ..
[golf_AI_Service][lambda] 전체적인 흐름
·
Project/golf_AI_Serivce
현재 router는 2개로 구성되어있고, post형식으로 data를 취한다. 첫 라우터의 경우 video url을 post로 가져와서 mediapipe를 수행 후 결과 data를 기반으로 smoothing으로 outlier를 잡고, 골프 7step을 검출한다. (어드레스, 테이크어웨이, 하프, 탑, 임팩트, 팔로우스루, 피니쉬) 검출 후 각 구간 별로 스무딩을 다시 수행하고 json을 return한다. 이는 api server에서 return json을 db로 저장한다. 두 번째 라우터의 경우, json data를 두 개 받아온다. 나의 영상과 프로 영상에 대해 비교를 하고 싶다면 각 각 해당하는 json data가 될 것이다. 데이터를 비교하고 각 step별로 무엇이 다른지 등등을 수행하고, 나와 프로..
[golf_AI_Service] Architecture, FlowChart
·
Project/golf_AI_Serivce
스크린 골프장에서 유저가 골프를 치면 그 영상을 기반으로 골프자세를 바로잡아주는, (어느 step이 잘못됐는지 등등) service를 만드려고한다. db로는 postgreSQL api server로는 nest.js 분석 및 mediapipe로는 lambda front쪽 web view는 react.js를 사용하고있다. 타석기준 flowchart 강사기준 flowchart 강사기준 flowchart2 ERD
DTW란? Dynamic Time Warping하며 학습 + 내가 생각한 알고리즘
·
Project/DTW
우선 목표는 여러 영상에 대해 DTW를 수행하고 N개의 video, 각 video의 frame을 N(M)이라고 하였을 때,Mediapipe로 관절을 추출 ( N*N(M)*33개 ) --> 33개는 Mediapipe에서 한 frame당 사람을 33개의 관절 data로 추출이 data를 기반으로 dtw를 수행 --> 이는, 서로 다른 영상에 대해 비슷한 동작끼리 time sequence를 최대한 맞춘다는 의미여기서 그럼 문제는 무엇이 있는가 ?우선 dtw는 기본적인 algorithm에서 2개의 time  serise에 대해 수행을 하며, data 또한 1d, 1d에 대해  처리를 한다.이 말은 A=[1,2,3,4] B=[0,0,0,1,2,3,4]라는 data가 있을 경우 A의 0:3번 index B의 3:6..
using dynamic time warping in 3d data
·
Project/DTW
1. mediapipe를 통해 영상에서 data 추출 2. 추출된 관절 데이터를 관절사이의 vector로 변환후 각변환 3. 여러 영상에서 이를 반복하여 여러 영상에 대한 각변환 data 저장 4. 이를 dtw algorithm을 기반으로 차원을 추가하여 3d data에서도 적용가능하게 변형 5. output으로 path를 받고, path 기반으로 영상에서 비슷한 동작의 sequence(frame)를 재생 output : 서로 다른 타이밍에서 동작을 수행하였는데, 같은 동작의 타이밍을 잘 맞추고 있음.
여러 비디오를 dtw를 통해 타임시퀀스 맞추기
·
Project/DTW
우선 미디어파이프를 통해 여러 영상을 돌리면서 각 관절 데이터를 저장 저장은 x[video][frame][joint], y[video][frame][joint]의 형태로 저장했으며 x[1][30][2]는 두번째 영상의 31번째 프레임의 2번관절에 대한 x축 좌표가 저장되어있다. def angle_of_vectors(vec1,vec2): a,b,c,d=vec1[0],vec1[1],vec2[0],vec2[1] dotProduct = a*c + b*d modOfVector1 = math.sqrt( a*a + b*b)*math.sqrt(c*c + d*d) angle = dotProduct/modOfVector1 angleInDegree = math.degrees(math.acos(angle)) return an..
TDA Web Service summary
·
Project/TDA_Web_Service
기술개요 AI기반 실시간 자가 운동기능진단 소프트웨어 골프 스윙 퍼포먼스와 스킬 향상을 위한 기본 운동기능 AI 진단 및 트레이닝 총 5종류의 핵심 운동 기능에 대한 AI 진단 90-90 상체 검사, 발끝닿기 검사, 상체 회전 검사, 오버헤드 딥스쿼트, 한쪽다리 균형검사 기술의 경쟁력 -모션 트래킹 위주의 골프 스윙 모션분석 시스템과 차별화 -실제 스윙 스킬에 필요한 운동기능에 대한 AI 분석 및 진단 실행 -앱이 아닌 웹기반 어플리케이션 -별도의 앱을 설치해야하는 번거로움이 없음. -모바일앱은 PC에서 실행되지 않음. -어떠한 기기(스마트폰, 패드, PC 등)에서도 웹브라우저만 실행하여 접속 -시스템 사양에 상관없이 일관적인 성능보장 -클라이언트가 아닌 서버사이드에서 AI 분석이 실행 -다양한 OS 업..
황공진
공진's Repository