• 💡 프로젝트 개요

    일반적인 카메라에서 얻은 동영상에서, 정확하지는 않더라도 얻기 힘든 다양한 야구 정보를 얻는 것을 목표로 하는 웹 애플리케이션 개발 프로젝트입니다.

    이 프로젝트는 AI 도구 Gemini를 이용하여 개발하였습니다. Gemini를 이용하여 자세 인식 및 공 인식, 일부 시각화 기능(three.js를 이용한 3d 자세, chart.js를 이용한 그래프)를 구현하였습니다.

  • 🔧 기능 (Developments)

    🏃 자세 분석: 자세 분석 및 관절 정보 추출

    • MideaPipe를 이용하여 영상 속 인물의 자세를 인식합니다.
      • 모델을 선택하여 분석의 정확도, 시간을 선택할 수 있습니다.
    • 관절의 각도 정보를 추출하여 힘의 사용이 효율적인지 확인을 돕습니다.
    • 관절의 속도 정보를 추출하여 힘의 사용 시작 시점 확인을 돕습니다.
    • 관절의 높이 정보를 추출하여 선수에게 적합한 자세 확인을 돕습니다.
  • 🔧 기능 (Developments)

    💫 추적: 공 추적 및 정보 추출

    • YOLO의 객체 인식을 이용하여 영상에서 공을 추적합니다.
      • 모델을 선택하여 분석의 정확도, 시간을 선택할 수 있습니다.
    • 지면 대비 공의 이동 각도를 분석합니다.
    • 공의 크기를 기반으로 공의 이동 속도를 추측합니다.
    • 추출되는 정보는 공이 촬영자 기준으로 전후 운동을 하지 않는다고 가정한 결과입니다.
      • 촬영 환경이 그렇지 않다면 지면 대비 각도는 더 크게, 공의 속도는 더 느리게 출력됩니다.
  • 🔧 기능 (Developments)

    💫 추적: 배트 궤적 시각화

    • YOLO의 객체 세그멘테이션 인식을 이용하여 영상에서 공을 추적합니다.
      • 모델을 선택하여 분석의 정확도, 시간을 선택할 수 있습니다.
    • 프레임 사이의 배트 궤적을 시각화합니다.
    • 시각화된 정보를 동영상(mp4)로 저장합니다.
  • 🛠️ 기여

    🔥 리팩토링: 모듈화

    • 개선 전: 기존에는 동영상 이미지 추출과 자세 인식, 객체 인식과 인식 내용 기반의 정보 추출이 통합
      • 자세 인식, 객체 인식 라이브러리 수정 시 큰 개발 비용 소모
      • 새로운 정보 추출 개발 시 중복 개발이 필요
    • 개선 후: 동영상 이미지 추출, 자세 인식, 객체 인식과 인식 내용 기반의 정보 추출을 모듈화하여 분리
      • github 블로그를 이용한 웹 앱 배포시 Shared Array Buffer를 사용 못하여 오류가 생기던 것을 해결
        • Shared Array Buffer를 사용하지 않고 동영상 이미지 추출을 수행하는 클래스 개발을 통해 배포 성공
        • 기존의 Shared Array Buffer를 이용하는 방법은 다른 플랫폼에 배포 시 사용하여 플랫폼에 적절한 기능 제공이 가능해짐
      • 객체 인식, 자세 인식 라이브러리 수정 시 유연성 확보
      • 새로운 정보 추출 기능을 효율적으로 추가
        • 관절의 속도, 높이 분석 기능 추가
        • 공의 지면 대비 각도 계산 기능 추가