현재 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결과, 나의 algorithm에 의한 golf 7step 검출 결과, swing분석 data, matching data를 json_data로 return한다.
현재 https status 200, 500으로 두 가지가 있으나 조금 더 예외처리 코드가 필요하다면 추가할 예정이다.
2. compare
input : { "base" : string, "compare" : string }
output :
compare router에서는 골프 스윙을 비교할 두 영상에 대한 json file을 API Server로 부터 input으로 받는다. 나머지는 json에 비슷하게 포함되지만 첫번째 router와 가장 큰 차이점은 area 로써,
두 영상의 landmark data를 두 영상의 7step기준으로 나누고, 각 구간별로
frame을 맞춘다음(interpolation) 그 구간에서 두 영상의 landmark data가 얼마나 다른가에 대한 결과가 담겨있다.
area data를 통해 각 구간별로 내가 비교하고자 하는 두 영상의 data의 차이를 확인할 수 있다는 것이다. (x, y, (x,y), 1-(x,y) ...) 등의 구간별 data 의 차이가 여러가지 담겨있으며 결과로 나온 각 data는 특정 구간에서 어떤 차이가 있음을 크기로 나타낸다.
lambda에 대한 API Docs는 완성한 상태이고, status만 추가적으로 예외처리 더 할게 있는지 보고있다.
app.py가 lambda service로 갈 곳이고 compareRouter.py, metaDataRouter.py는 app.py에서의
각 해당 router들을 간단하게 테스트할 수 있도록 만들어 놓았으며,
7stepTestFix.py는 7step 구간이 잘 나뉘는지, 그렇지 않다면 잘 나뉘도록 알고리즘을 수정했던 용도이다.
마지막으로 하고 있는것은 smoothing.py이다.
app.py에서 7step 판별전에 convolution smoothing, 판별 후에는 자체적으로 제작한 smoothing을 적용하여 데이터를 전처리하고 swing 분석 data로써 사용하는데, 각 convolution smoothing과 자체적인 smoothing이 얼마나 신뢰도가 있는가,
를 판단하기 위해서 만들었으며
현재 계속 smoothing을 개선하고있다. (결국 mediapipe data는 튀는 점이 무조건적으로 있는데... 완벽하게 잡아주도록 이가 lambda에서 수행하는 서비스들의 성능을 좌우한다고 판단)
이것저것 하느라 branch가 좀 많아졌는데 나 같은 경우는 github - flow를 채택하여 관리하고 있다.
7step 검출은 매우 효과적으로 잘 되고 있다.
알고리즘에 따른 7step 잡힌 frame 사진들
Convolution smoothing
raw data와 smoothing 이후 데이터, (x,y)로 찍힌 것이며 각 점은 구간에 대한 점
실제로 address~finish까지 측면 (x,y)를 생각해보면,
smoothing data가 훨씬 더 실제와 가깝다는 것을 알 수 있다.
이 data 기반으로 7step을 검출하고,
7step 검출 후에 각 구간별 다른 algorithm을 통해 smoothing을 진행한다.
이 서비스에서는 7step을 얼마나 잡냐, smoothing을 얼마나 잘하냐가 관건인 것 같다.
'Project > golf_AI_Serivce' 카테고리의 다른 글
[golf_AI_Service] 1차 마무리 성능 평가 (0) | 2024.08.05 |
---|---|
[golf_AI_Service] 1차 마무리 (0) | 2024.04.01 |
[golf_AI_Service] 기능 (2) | 2023.11.26 |
[golf_AI_Service][lambda] 전체적인 흐름 (0) | 2023.08.07 |
[golf_AI_Service] Architecture, FlowChart (0) | 2023.08.07 |