본문 바로가기

미니 프로젝트

AI 허브 - 피트니스 자세 이미지 데이터 읽기

728x90

피트니스 자세 이미지 | AI 허브 (aihub.or.kr)

 

피트니스 자세 이미지

다양한 자세와 체형을 가신 사람들로부터 홈트레이닝(운동자세 분석 및 추천), AR/MR 서비스(5G 기반 증강현실 컨텐츠), 피트니스 수집 플랫폼(머신러닝 모델 적용), 의료분야(재활치료 및 재활운

aihub.or.kr

AI 허브 데이터 읽기

 

크게 Training 데이터와 Validation데이터가 있고

 

Training 데이터는 다시 [라벨] 데이터와 [원천] 데이터로 나뉜다. 

 

그 안에서 다시 '맨몸' - '바벨/덤벨' - '기구' 로 나뉜다.  

 

하지만 이 분류가 그렇게 정확하게 되어있는 편은 아니라서 따로 확인을 해야한다. 

 

예를 들어서 body_03 압축파일을 받는 다고해서 그 안에 맨몸 운동만 담겨있지는 않다

 

[라벨]맨몸운동_Labeling.zip 안에 담겨있는 '맨몸운동_03.zip'을 풀면 'Day02_200922_F' 폴더가 나오는데 

 

그 안에 들어있는 D02-1-193.json 파일같은 경우 '바벨/덤벨' 운동인 '프런트 레이즈'에 대한 Annotation파일이다. 

 

그렇기 때문에 전체 데이터를 모두 다운 받아서 사용하더라도 필요한 데이터가 어디에 어떻게 들어있는지는 확인이 필요하며 

 

부분적으로 필요한 데이터만 받으려고 한다면, 미리 라벨 데이터를 뜯어보고 확인한 후에 받는게 좋다. 

 

 


 

위 데이터 중 푸시업 데이터만을 이용해서 바른 자세로 푸시업을 했을 때만 카운트를 세려주는 서비스를 만들어보려고 하는데 데이터가 좀 엉망인거 같아서 ai hub측에 문의를 남겼더니 아래와 같이 유저 친화적이지 않아서 미안하지만 알아서 찾아보라는 대답을 받았다 ㅋㅋ

 

어쨋든. 라벨링 데이터부터 설명을 하자면 

 

'[라벨]맨몸운동_Labeling.zip'을 풀면 '맨몸운동_01.zip' 부터 '맨몸운동_17.zip'이 나오고 이걸 다시 압축을 모두 풀면 Day01부터 Day38까지 나온다. 물론 1부터 17까지이므로 듬성듬성하게 1, 2, 5, 9, 10 이런 식이다.  

 

문제는 '맨몸운동_01.zip'을 푼다고 Day01이 나오면 좋을탠데 Day05가 나오고 '맨몸운동_02.zip'은 Day01이다. ㅋㅋ 

아래는 맨몸운동 라벨 폴더만 정리를 한거다. 노란색으로 칠해둔건 내가 사용할 '푸시업' 운동이 담긴 폴더들.

 

보통 한 폴더에 운동이 대여섯개씩은 들어있는거 같았고 좀 많은건 여덟개도 들어있는거 같았다. 모두 까본건 아니라 열어본 '푸시업' 운동만 예시를 들자면 

 

'body_08.tar' 파일을 받아서 압축을 풀면 'Day33_201105_F'폴더가 나오고 그 안에는 1번부터 7번까지로 다시 폴더가 나뉘어져 있다. 

 

각 번호는 사람을 뜻하는데 즉 7명의 사람이 등장한다는 거고, 다시 각 번호 안에는 A~E까지 폴더가 들어있다. 이는 카메라 시점을 뜻하는데 대략 아래와 같은 느낌이다. 푸쉬업을 하려고 엎드려 있으면 각 알파벳의 위치에서 사람을 찍엇다고 생각하면 된다. 무슨 기준으로 정해진지는 알 수가 없었다.

 

 

그리고 각 폴더에 들어가보면 A폴더에는 473-1-2-21-Z87_A부터 632-1-3-29-Z87_A 폴더 까지 들어있고, B에는 473-1-2-21-Z87_B부터 632-1-3-29-Z87_B까지가 들어있다. 마지막 알파벳은 카메라 위치를 뜻하고, Z_87은 Body_08.tar폴더 내에서 1번 모델(사람)이 Z87(모델)인 것이다. 즉 Body_09.tar의 1번 폴더 모델은 다른 사람(Z18)이다. 그리고 앞에 네 숫자는 차례대로 '운동의 상태 - 운동종류 - 자세 - 운동명'을 뜻한다. 

 

예를 들어서 푸시업 운동은 27번이고 엎드린 자세는 3번이다. 맨몸운동은 1번이고, 운동상태는 정자세는 561번이다. 이를 조합하면 

561-1-3-27이 나온다. 

 

운동상태는 운동마다 다른데 푸시업 운동같은경우에는 '척추의 중립' '이완시 팔꿈치 90도', '가슴의 충분한 이동', '손의 위치 가슴 중앙 여부', '고개 젖힘/숙임 여부' 다섯 가지 상태에 대한 True or Falth를 가지고 모두 True일때만 정자세가 된다. 즉 2의 5제곱; 32가지 자세가 있고 이중에 단 한가지 자세만 정자세고 31가지의 틀린 자세가 있다. 가령 562번은 척추 중립이 지켜지지 않은 자세, 563번은 이완시 팔꿈치 90도가 지켜지지 않은 자세. 이런 식이다. 

 

이러한 설명이 구축 가이드에 짧게 나오긴 하는데 문제는 각 번호가 어떤 상태나 운동을 뜻하는지를 알려주는 테이블이 별도로 존재하지 않기때문에 수고스럽더라도 json파일을 봐가며 따로 테이블을 만들어야 한다.