프레임워크

[프레임워크] - Mediapipe

파커초 2024. 2. 4. 22:10

개요

Mediapipe 는 이미지, 오디오 스트림, 비디오 스트림 데이터를 입력으로 받고, 추론을 위한 파이프라인을 구성할때 사용하는 프레임워크. 파이프라인은 컴포넌트 그래프로 정의되며 모델 추론, 멀티 미디어 데이터 전처리, 데이터 변환등이 포함될 수 있음.

장점

  • 크로스 플랫폼을 지원
    • 데스크톱 디바이스에서 개발, 테스트하고 모바일 디바이스에 임베드할 수 있음
  • 빠른 프로토타이핑 가능
    • 그래프에 여러 컴포넌트가 정의되어있을 경우 일부 컴포넌트만 대체가 가능함

컨셉

  • Packet: 데이터 유닛
  • Streams: 타임스탬프 정보가 있는 패킷 (ex. 비디오 스트림)
  • Side packets: 타임스탬프 정보가 없는 패킷 (ex. config file, ml_model)
  • Node: input-stream 혹은 input-pakcet 을 입력으로 받고, 데이터 처리를 통해 output-stream 혹은 output-packet을 내보냄
    • 각 노드는 하나의 연산 파일을 가지고 있음
  • Graph: 노드들의 네트워크 각 노드들의 연결관계를 나타냄

출처:  https://blog.gofynd.com/mediapipe-with-custom-tflite-model-d3ea0427b3c1

 

레포지토리 구조

  • mediapipe/MediaPipe.tulsiproj
    • Xcode 프로젝트를 생성하기 위한 파일들이 명시되어있습니다.
  • mediapipe/calculators
    • mediapipe에 의해서 제공되는 데이터 변환 코드 (C++로 작성(.
      • inference over images, videos, audio data
  • mediapipe/docs
  • mediapipe/examples
    • android, ios, coral, desktop build 예시
  • mediapipe/framework
    • input streams, node creation, graph creation workflow 의 생성 및 검증이 정의되어있습니다.
  • mediapipe/gpu
  • mediapipe/graphs
    • 그래프는 입력 스트림, 노드 및 출력 스트림의 도움으로 파이프라인의 흐름을 작성하는 .pbtxt 파일입니다.
      각 폴더에 있는 BUILD 파일에는 바이너리 그래프를 빌드하고 cc_library 및 android_library를 만드는 데 유용한 종속성(계산기, 모델 등) 및 바젤 연산이 포함되어 있습니다.
  • mediapipe/java/com/google/mediapipe
    • 안드로이드에서 계산기로 입력 패킷을 전송하기 위해 프레임 처리, OpenGL 처리 등과 같은 작업을 위한 프레임워크의 자바 파일이 포함되어 있습니다. 수정할 필요가 없습니다.
  • mediapipe/models
    • 주어진 예제에 대한 tflite 모델이 포함되어 있습니다.
  • mediapipe/objc
    • IOS용 프로젝트를 빌드하는 데 필요한 Objective C++로 작성된 파일이 포함되어 있습니다.
  • mediapipe/util
    • 프레임 흐름 관리자, 프레임 선택, 에셋 관리자 등을 위한 몇 가지 기본 유틸리티 계산기가 포함되어 있습니다.
  • third_party
    • 이 폴더에는 TensorFlow, OpenCV 등과 같은 미디어파이프의 third_party 종속성에 대한 빌드 파일이 들어 있습니다. 앞서 언급했듯이 미디어파이프는 bazel 빌드 시스템을 기반으로 합니다. 따라서 bazel에서 패키지를 생성하려면 해당 폴더에 BUILD 파일을 생성해야 합니다.
  • WORKSPACE
    • 작업 공간은 빌드하려는 소프트웨어의 소스 파일이 들어 있는 파일 시스템의 디렉터리입니다. 모든 워크스페이스 디렉터리에는 WORKSPACE 파일이 있습니다.WORKSPACE 파일은 앞서 살펴본 third_party 폴더에서 외부 종속성을 빌드합니다.
  • BUILD
    • 패키지는 BUILD라는 파일이 포함된 디렉토리로 정의됩니다. 바젤 프로젝트를 빌드할 때 이 파일이 있어야 합니다.

설치

https://developers.google.com/mediapipe/framework/getting_started/install#installing_on_windows

공식문서에서는 Window 운영체제에서 android 앱 빌드가 불가능하기 때문에 WSL 을 사용할것을 권장하고 있다.

WSL 설치

https://tech.cloud.nongshim.co.kr/2023/11/14/windows%EC%97%90%EC%84%9C-wsllinux-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0/

https://learn.microsoft.com/ko-kr/windows/wsl/install-manual

참고

https://blog.gofynd.com/mediapipe-with-custom-tflite-model-d3ea0427b3c1