MediaPipeとは
顔検出・姿勢推定・手指トラッキング等のリアルタイム推論パイプラインをモバイル/Web/エッジ上に構築できるGoogleのオープンソースフレームワーク
ひとことで言うと
顔や手、姿勢の動きをスマホやブラウザ上でリアルタイムに認識できるGoogle製の無料ツール集。
概要
MediaPipeとは、Googleが開発したオープンソースのクロスプラットフォームフレームワークで、映像・音声・センサー等のストリームデータに対しリアルタイムに機械学習推論を適用するパイプラインを構築できる。 処理単位「Calculator」をノードとし、Calculator間をデータストリームでつなぐ有向グラフとしてパイプラインを記述する設計が特徴で、入力取得から前処理・モデル推論・後処理・出力までを一貫した流れとして表現する。 顔検出・顔ランドマーク推定・手指トラッキング・姿勢推定・物体検出・画像セグメンテーション等、あらかじめ用意された「ソリューション(Solutions)」を通じ、モデルを一から実装せずに主要な知覚タスクを組み込める。Android・iOS・Web(WASM)・Python・組み込み機器等、多様なプラットフォーム上でCPU/GPUを用いた低遅延な推論を実現できる。
背景
モバイルアプリやWebアプリで顔・手・姿勢等をリアルタイム認識する機能を実装する場合、プラットフォームごとに推論パイプラインを個別開発する必要があり、開発・保守コストが高かった。MediaPipeは、この推論パイプラインの構築をグラフベースの共通フレームワークとして抽象化し、同一のパイプライン定義を複数プラットフォームへ展開できるよう開発された。
歴史
2019年: Googleの研究チームが論文「MediaPipe: A Framework for Building Perception Pipelines」(Lugaresi et al.)を発表し、MediaPipeをオープンソース化。 以降、顔検出・姿勢推定・物体検出等のソリューションが順次追加され、2023年以降はより簡易に利用できる「MediaPipe Tasks API」への統合、およびオンデバイスLLM推論向けの「LLM Inference API」の追加が進んでいる。
アーキテクチャ
処理単位となる「Calculator」をノードとし、Calculator間をデータストリーム(Packet)でつなぐ有向グラフとしてパイプラインを定義する。グラフ構成はprotobuf形式の設定ファイルで記述し、パイプラインの一部を差し替えたり複数モデルを組み合わせた処理を柔軟に構築できる。
コード例
MediaPipe Tasks APIによる手指ランドマーク検出
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
base_options = python.BaseOptions(model_asset_path="hand_landmarker.task")
options = vision.HandLandmarkerOptions(base_options=base_options, num_hands=2)
detector = vision.HandLandmarker.create_from_options(options)
image = mp.Image.create_from_file("image.jpg")
result = detector.detect(image)
print(result.hand_landmarks)利点
- Android・iOS・Web・Python等、複数プラットフォームで同一のパイプライン定義を再利用できる
- 顔検出や姿勢推定等の主要タスクが「ソリューション」として提供され、モデルを一から学習・実装せずに組み込める
- グラフベースの設計により、CPU/GPUを活用した低遅延なリアルタイム推論に最適化されている
欠点
- グラフベースの記述方式は独自の学習コストがあり、通常のモデル呼び出しAPIと比べて習得に時間がかかる
- 提供されているソリューションの精度・仕様は固定的で、独自データでの再学習・カスタマイズには制約がある
比較
関連用語
よくある質問
参考文献
- Official WebsiteGoogle AI Edge - MediaPipe
- GitHubgoogle-ai-edge/mediapipe
- Research PaperMediaPipe: A Framework for Building Perception Pipelines