Fitness 데이터 리뷰(AIHub)

김태훈·2023년 6월 23일
0

Fitness Dataset(AIHub)

개인적으로 이 데이터로 프로젝트 진행하시지 않으셨으면 좋겠습니다.


  1. 데이터셋 설명

  2. Annotation 설명

  3. 사용시 주의할 점

  4. 데이터 셋 문제점


데이터셋 설명

  • 구축년도 : 2020

  • 용량 : 1.04 TB

  • 설명 : 본 데이터셋은 피트니스 자세,종류에 대한 데이터 셋으로 해당 영상이 어떤 종류의 운동인지 특정 자세는 잘 지켜지고 있는지에 대한 데이터 셋이다. 크게 바벨/덤벨, 맨몸, 기구 세 종류로 나누어져 있다.

  • 목적 : 운동 종류 분류(Video Classification),운동 자세 상태 이진 분류(Multi Label Binary Classification)

  • 추천 모델 : 운동 종류 분류(Video Classification)을 위한 추천 모델로는 TSM(Temporal Shift Module)을 적용한 ResNet50모델을 추천하고 있다.


Annotation 설명

json 파일 내부

이 중 학습에 사용될 데이터는 다음과 같다.

  1. view1~5 : 5개의 촬영 위치를 나타냄

  2. pts : 프레임 별 관절 정보 (홀수번째 프레임에 대한 데이터만 존재)

  3. Img_key : 이미지 파일의 경로 (홀수번째 프레임에 대한 데이터만 존재)

  4. conditions : 운동 자세의 5가지 상태

  5. exercise : 운동 이름

영상 이미지

실제 영상 내에서 초당 2~3장의 이미지를 추출한 것으로 연속적인 이미지가 아닌 이산적인 이미지입니다.

해당 데이터셋으로 학습한 모델을 사용하여 추론할 때 입력 영상을 전처리하는 경우 영상파일 FPS의 절반의 프레임 간격(30FPS면 15프레임 간격으로)으로 이미지를 추출해 입력으로 사용하면 됩니다.

용량 비율

Training
    Imgs
        바벨/덤벨 372GB ( 이중 맨몸 운동이 몇개 포함됨 )
        맨몸 466GB ( 이중 바벨/덤벨 운동이 몇개 포함됨)
        기구 119GB
    Label
        바벨/덤벨 296MB ( 이중 맨몸 운동이 몇개 포함됨 )
        기구 95MB ( 이중 바벨/덤벨 운동이 몇개 포함됨)
        맨몸 354MB

Validation
    Imgs
        바벨/덤벨 48GB
        맨몸 26GB
        기구 30GB
    Label
        바벨/덤벨 24MB
        기구 27MB
        맨몸 28MB

데이터셋 사용시 주의할 점

1. 운동마다 다른 view의 위치

대부분의 바벨/덤벨 운동에서 선 운동의 경우 view3은 정면에서 찍은 영상입니다.

하지만 벤치 등을 사용하는 경우에 view3는 측면에서 찍은 영상입니다.

2. 라벨 속 이미지 파일의 경로와 실제 저장 경로가 잘못된 경우

Bady_02에는 다음과 같이 데이터가 잘못 저장된 경우가 있습니다.

  • 라벨 내 이미지 경로 : /Day01_200921_F/1/A/001-1-1-01-Z2_C/001-1-1-01-Z2_C-0000001.jpg
  • 저장 이미지 파일 경로 : /Day01_200921_F/1/A/001-1-1-01-Z2_A/001-1-1-01-Z2_A-0000001.jpg
  • Babel 02(Day03) "_C","_B"

  • Babel 05(Day12) "-Z","_Z"

  • Body 02(Day01) "_B","_A" and "_C","_A" and "_D","_A" and "_E","_A"

import os
#라벨내에서의 이미지 경로
img_key = "/Day01_200921_F/1/A/001-1-1-01-Z2_C/001-1-1-01-Z2_C-0000001.jpg"
#실제 저장된 이미지 경로
#/Day01_200921_F/1/A/001-1-1-01-Z2_A/001-1-1-01-Z2_A-0000001.jpg
if (os.path.exists(img_key) == False):
	img_key = img_key.replace("_C","_A")
    if (os.path.exists(img_key)== True):
    	print("파일이 존재합니다.");
    else :
    	print("파일이 존재하지 않습니다.");

이미지 파일의 경로를 사전에 변경해주는 것을 추천드립니다.

3. 제대로 구분되지 않은 Body, Babel

Body_03,06,07,10,14에는 Babel 데이터도 포함되어 있습니다.

Babel_에도 Body 데이터가 포함되어 있습니다.

Body_11,12에는 3d 좌표 라벨만 포함되어 있습니다.

4. Key Point 좌표 문제

  • Body 02(Day 01) 에서 일부 데이터 셋은 좌표가 이미지 해상도 1920과 1080을 벗어나는 경우가 있습니다.

  • 관절의 좌표가 바뀐 좌표도 존재합니다.


데이터 셋 문제점

  1. 5가지의 운동 상태를 신경 쓴 데이터 셋으로 이에 따라 분류 해야할 운동 상태가 5개인 경우와 3개인 경우에 따라서 운동 종류별 데이터셋의 양의 비율이 크게 달라짐 (예: 프런트 레이즈 352개 , 라잉 트라이셉스 익스텐션 2022개 )

  2. 바벨/덤벨의 경우 검증용 데이터 셋이 아예 존재 하지 않는 운동 종류가 너무 많음 학습용 데이터와 검증용 데이터를 구별하는 기준을 알 수 없음

  3. 자세 추정을 위한 프레임별 라벨 데이터가 존재하지 않는 데이터가 존재하며, 데이터 셋에 존재하는 전체 이미지 중 평균적으로 절반의 이미지만 사용하는 경우가 너무 많음

  4. 데이터의 영상 이미지가 이산적인 데이터로 자세가 중간중간 끊기게 되는데 이때 표현하지 못하는 데이터가 존재 (푸시 업의 경우 2번 운동 상태가 이완시 팔꿈치가 90도라고 되어 있는데 푸시 업 중 90도가 되는 장면이 없음)[가이드라인에 필요한 경우에 경우의 수 삭제하라고 되어있긴 함.]

  5. 데이터 셋 검증을 한 것임에도 불구하고 운동 하는 중이 아닌 그냥 돌아다니거나 사진 중 절반이 운동 중이 아닌 상태도 있음

  6. 관절 좌표가 하나도 안맞는 데이터가 있음

문제점1,2

문제점 1,2에 해당하는 사진으로 빨간색은 학습용 데이터,파란색은 검증용 데이터,초록색은 합계 (바벨/덤벨 운동의 일부 클래스)

문제점5

문제점 5에 해당하는 사진으로 행잉 레그 레이즈 운동 영상 중 돌아다니는 영상이 존재

문제점 6에 해당하는 사진으로 신경망 기반으로 이상치 탐지하는 과정이며 놀랍게도 우측 사진이 라벨이 아니라 가운데 사진이 라벨임(좌우 잘못된 거는 그렇다 쳐도 이건 어떻게 검수를 통과했을까요...)

profile
👋 인공지능을 통해 다음 세대가 더 나은 삶을 살도록

0개의 댓글