개요
Mediapipe 는 이미지, 오디오 스트림, 비디오 스트림 데이터를 입력으로 받고, 추론을 위한 파이프라인을 구성할때 사용하는 프레임워크. 파이프라인은 컴포넌트 그래프로 정의되며 모델 추론, 멀티 미디어 데이터 전처리, 데이터 변환등이 포함될 수 있음.
장점
- 크로스 플랫폼을 지원
- 데스크톱 디바이스에서 개발, 테스트하고 모바일 디바이스에 임베드할 수 있음
- 빠른 프로토타이핑 가능
- 그래프에 여러 컴포넌트가 정의되어있을 경우 일부 컴포넌트만 대체가 가능함
컨셉
- Packet: 데이터 유닛
- Streams: 타임스탬프 정보가 있는 패킷 (ex. 비디오 스트림)
- Side packets: 타임스탬프 정보가 없는 패킷 (ex. config file, ml_model)
- Node: input-stream 혹은 input-pakcet 을 입력으로 받고, 데이터 처리를 통해 output-stream 혹은 output-packet을 내보냄
- 각 노드는 하나의 연산 파일을 가지고 있음
- Graph: 노드들의 네트워크 각 노드들의 연결관계를 나타냄
레포지토리 구조
- mediapipe/MediaPipe.tulsiproj
- Xcode 프로젝트를 생성하기 위한 파일들이 명시되어있습니다.
- mediapipe/calculators
- mediapipe에 의해서 제공되는 데이터 변환 코드 (C++로 작성(.
- inference over images, videos, audio data
- mediapipe에 의해서 제공되는 데이터 변환 코드 (C++로 작성(.
- 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를 만드는 데 유용한 종속성(계산기, 모델 등) 및 바젤 연산이 포함되어 있습니다.
- 그래프는 입력 스트림, 노드 및 출력 스트림의 도움으로 파이프라인의 흐름을 작성하는 .pbtxt 파일입니다.
- 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://learn.microsoft.com/ko-kr/windows/wsl/install-manual
참고
https://blog.gofynd.com/mediapipe-with-custom-tflite-model-d3ea0427b3c1