Skip to content

v1.0.0 - Pitching Presentation Video Processing & Feedback Engine

Latest
Compare
Choose a tag to compare
@Daehyun-Bigbread Daehyun-Bigbread released this 21 Dec 06:31
· 21 commits to main since this release
0bcdb5c

릴리스 제목

v1.0.0 - Pitching 발표 영상 처리 엔진 초기 릴리스


설명

발표 영상 처리 엔진은 영상 데이터로부터 자세, 제스처, 시선 등의 피드백을 생성하여 사용자에게 제공합니다. 본 시스템은 AI 기반 Computer-vision & Vision-Language 모델과 Prompt Engineering 기술을 활용하여 사용자 맞춤형 피드백을 생성하며, 클라이언트와 서버 간 연결을 위해 FastAPI 기반 RESTful API를 제공합니다.


주요 기능

  1. 영상 처리 엔진 (Video Processing Engine)

    • 영상 프레임 추출 및 학습: OpenCV와 사용하여 입력 영상에서 프레임 데이터를 추출하고, FPS 및 영상 길이를 계산합니다.
    • AI 기반 피드백 생성: Computer VIsion 라이브러리인 Mediapipe에서 문제 행동을 탐지후, OpenAI의 GPT-4o-mini Vision API를 활용하여 영상 프레임 분석 후 피드백을 제공합니다.
    • Prompt Engineering: Few Shot Learning 및 Chain of Thought 기법을 활용하여 명확하고 사용자 맞춤형 피드백을 생성합니다.
  2. 클라이언트 연결

    • FastAPI API:
      • POST /upload-video: 클라이언트에서 영상을 업로드받아 처리합니다.
      • GET /send-feedback: 업로드된 영상에 대해 분석된 피드백을 JSON 형식으로 반환합니다.
  3. 데이터 구조화 및 전달

    • Pydantic 활용: 피드백 데이터를 구조화하여 JSON 형식으로 제공합니다.
    • 영상 피드백 결과를 JSON으로 클라이언트에 전달하여 후속 작업에 활용 가능하도록 설계되었습니다.
  4. 의존성 관리 및 배포

    • requirements.txt를 통한 Python 패키지 관리.
    • Git Flow Branch 전략을 활용하여 체계적인 버전 관리 및 안정된 배포를 지원.
  5. 문제 해결(Troubleshooting)

    • GPU 비용 관리: 클라우드 환경에서 발생하는 GPU 비용을 줄이기 위한 API 호출 최적화.
    • 정확도 향상: 피드백 정확도를 높이기 위해 Prompt 설계 및 추가 지침 제공.
  6. 프로젝트 관리

    • GitHub IssueJira Ticket을 활용하여 작업(Task)을 티켓 단위로 분할 및 관리.

데이터 파이프라인 설계

발표 영상 처리(VLM) 모델 Data Pipeline 설계

  • Video Processing Engine

    • OpenCV, Mediapipe를 활용하여 영상 프레임을 추출하고, FPS와 영상 길이를 계산합니다.
    • OpenAI Vision API를 통해 피드백을 생성하며, Prompt Engineering 기법을 사용하여 더욱 정교한 분석 결과를 도출합니다.
  • Client(FE, BE) 연결

    • FastAPI API를 통해 클라이언트와 서버 간 영상 데이터 전송 및 피드백 결과 반환을 수행합니다.
    • API는 클라이언트 요청에 따라 업로드된 영상을 분석한 후 결과 데이터를 JSON 형식으로 제공합니다.
  • JSON 피드백 데이터 구조화

    • Pydantic을 활용하여 구조화된 데이터를 생성하며, JSON 형식으로 클라이언트에 전달합니다.

폴더 구조

  • vlm_model:

    • API 라우터, 데이터 처리 유틸리티, 모델 설정 관련 모듈 포함.
  • Research:

    • Vision-Language 모델 및 Mediapipe 연구를 위한 Jupyter 노트북.
  • tests:

    • API와 유틸리티를 테스트하기 위한 단위 테스트 코드 포함.
  • storage:

    • 입력 영상(input_video)과 출력 피드백(output_feedback_frame) 저장 디렉터리.

설치 및 실행 방법

  1. 의존성 설치:

    pip install -r requirements.txt
  2. FastAPI 서버 실행:

    uvicorn main:app --host 0.0.0.0 --port 8000 --reload --log-config logging_config.json
  3. API 테스트:

    • POST /upload-video: 클라이언트에서 영상 업로드.
    • GET /send-feedback: 업로드된 영상에 대한 피드백 반환.
  4. 테스트 실행:

    pytest --cov=vlm_model tests/

의존성

  • 핵심 라이브러리

    • openai, pillow, tqdm, opencv-python, mediapipe, numpy
  • FastAPI 관련

    • fastapi, uvicorn, python-multipart
  • 로깅 및 모니터링

    • python-json-logger, colorlog, sentry-sdk[fastapi]
  • 테스트 도구

    • pytest, pytest-cov, pytest-mock, httpx

추가 정보

  • 버전 관리 전략: Git Flow를 사용하여 안정성과 개발 편의성을 확보하였습니다.
  • 프로젝트 관리 도구: GitHub Issue와 Jira를 활용하여 작업을 분할하고 진행 상황을 체계적으로 추적합니다.