Recommended
PDF
PDF
最近のDeep Learning (NLP) 界隈におけるAttention事情
PDF
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
PPTX
BuildKitによる高速でセキュアなイメージビルド
PPTX
Curriculum Learning (関東CV勉強会)
PDF
PPTX
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
PDF
PDF
PDF
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
PDF
【DL輪読会】A Path Towards Autonomous Machine Intelligence
PDF
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
PDF
PDF
【メタサーベイ】基盤モデル / Foundation Models
PDF
PDF
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
PPTX
【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...
PDF
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
【メタサーベイ】Video Transformer
PDF
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
PDF
PDF
Transformer 動向調査 in 画像認識(修正版)
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
PDF
PDF
PDF
Statistical Semantic入門 ~分布仮説からword2vecまで~
PDF
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
PPTX
物体検出フレームワークMMDetectionで快適な開発
More Related Content
PDF
PDF
最近のDeep Learning (NLP) 界隈におけるAttention事情
PDF
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
PPTX
BuildKitによる高速でセキュアなイメージビルド
PPTX
Curriculum Learning (関東CV勉強会)
PDF
PPTX
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
PDF
What's hot
PDF
PDF
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
PDF
【DL輪読会】A Path Towards Autonomous Machine Intelligence
PDF
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
PDF
PDF
【メタサーベイ】基盤モデル / Foundation Models
PDF
PDF
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
PPTX
【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...
PDF
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
【メタサーベイ】Video Transformer
PDF
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
PDF
PDF
Transformer 動向調査 in 画像認識(修正版)
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
PDF
PDF
PDF
Statistical Semantic入門 ~分布仮説からword2vecまで~
Similar to MediaPipeの紹介
PDF
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
PPTX
物体検出フレームワークMMDetectionで快適な開発
PPTX
PDF
PDF
PDF
PDF
GPU と PYTHON と、それから最近の NVIDIA
PDF
PPTX
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
PDF
Teslaにおけるコンピュータビジョン技術の調査 (2)
KEY
PDF
PPTX
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
PDF
PDF
PDF
React+Redux+Node.js+Raspberry Piで ビデオプレイヤーを作りたかった話
PPTX
6th oct2012 kobeit_webintents
PDF
PDF
PPTX
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
More from emakryo
PDF
Customizing cargo for cross compiling
PDF
Feature Store in DRIVE CHART
PDF
PDF
PDF
rustdef: Rust on jupyter notebook
PDF
PDF
Machine Learning on Graph Data @ ICML 2019
PDF
Neural networks for Graph Data NeurIPS2018読み会@PFN
MediaPipeの紹介 1. 2. 3. Mobility Technologies Co., Ltd.
MediaPipeとは
- ML solutions
- cross-platform
- customizable
- for live and streaming
- Demo: https://viz.mediapipe.dev/demo/face_detection
https://google.github.io/mediapipe/
4. 5. Mobility Technologies Co., Ltd.
- Android
- AAR / native build
- iOS
- native build
- デスクトップ(Linux/MacOS)
- Python (pip)
- C++ (native build)
- ブラウザ(Chrome/Safari)
- JavaScript(NPM, Solutionごと)
- Coral dev board(EdgeTPU, 組み込みLinux)
プラットフォーム対応
https://google.github.io/mediapipe/getting_started/building_examples.html
6. Mobility Technologies Co., Ltd.
最初から用意されているパイプライン(solution)を実行する場合
使い方: Ready-to-use solutions (Python)
import cv2
import mediapipe as mp
mp_face_detection = mp.solutions.face_detection
with mp_face_detection.FaceDetection(
model_selection=1, min_detection_confidence=0.5) as face_detection:
image = cv2.imread( "image.png")
# Convert the BGR image to RGB
# and process it with MediaPipe Face Detection.
results = face_detection.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
7. 8. Mobility Technologies Co., Ltd.
- パイプラインをグラフとして定義
- ノードはCalculatorと呼ばれ実際の処理を行う
- ノード間にストリーミングデータが流れる
- Protocol buffer (text format) で記述
- Calculatorは動的にスケジューリングされ、スレッドプール上で実行される
- Calculatorの実装はC++
- 組み込みのCalculator
- 前処理(画像フォーマットの変換、FPSの制御)
- 推論(TFLite, Tensorflow)
- 後処理(NMS, 画像へ結果のオーバーレイ)
- and more https://github.com/google/mediapipe/tree/master/mediapipe/calculators
パイプライン
9. Mobility Technologies Co., Ltd.
Python: CalculatorGraph API
import mediapipe as mp
# Define pipeline graph
config_text = """
input_stream: 'in_stream'
output_stream: 'out_stream'
node {
calculator: 'PassThroughCalculator'
input_stream: 'in_stream'
output_stream: 'out_stream'
}
"""
# Create CalculatorGraph, set callback, and start execution
graph = mp.CalculatorGraph(graph_config=config_text)
output_packets = []
graph.observe_output_stream(
'out_stream',
lambda _, packet: output_packets.append(
mp.packet_getter.get_str(packet)))
graph.start_run()
# Feed string
packet1 = mp.packet_creator.create_string(
'abc').at(0))
graph.add_packet_to_input_stream(
'in_stream', packet1)
# Feed image
rgb_img = cv2.cvtColor(cv2.imread(
'image.png'),
cv2.COLOR_BGR2RGB)
packet2 = mp.packet_creator.create_image_frame(
image_format=mp.ImageFormat.SRGB, data=rgb_img).at(1))
graph.add_packet_to_input_stream(
'in_stream', packet2)
# Destruct CalculatorGraph
graph.close()
10. Mobility Technologies Co., Ltd.
例: https://viz.mediapipe.dev/demo/face_detection
Protobuf: https://github.com/google/mediapipe/blob/master/mediapipe/framework/calculator.proto
グラフ定義
11. 12. Mobility Technologies Co., Ltd.
- 実装がC++
- Pythonを含むスクリプト言語は使えない
- クロスプラットフォームを謳っているため?
- mediapipe自体のビルドから行う必要がある
- Github: https://github.com/google/mediapipe
- Example
- https://google.github.io/mediapipe/framework_concepts/calculators.html
- 既存のCalculatorも豊富なので自分で実装することは稀
- 想定された使い方の場合
Calculator
13. Mobility Technologies Co., Ltd.
CalculatorBaseから次の4つのメソッドをoverride
- GetContract(CalculatorContract* cc)
- 入出力の型の制約
- Open(CalculatorContext*)
- 初期化
- Process(CalculatorContext* cc)
- 実際の処理を記述
- 入力: cc->Inputs().Index(n).Get<T>()
- 出力: cc->Outputs().Index(n).Add(packet)
- Close(CalculatorContext* cc)
- 終了処理
Calculatorを実装する
https://google.github.io/mediapipe/framework_concepts/calculators.html
14. 15. Mobility Technologies Co., Ltd.
構成
Framework / C++
Calculator / C++
Android
Java/C++
TFLite Preprocess Postprocess OpenGL
iOS
Swift/ObjC
Python
JavaScript
wasm
C++
API
Framework
16. Mobility Technologies Co., Ltd.
- Calculator Graph
- 実行するグラフを保持する。入力を与えたり、出力を取得したりできる
- Calculator
- グラフのノード、実際の処理を行う
- Packet
- ノード間を流れるデータの実体+タイムスタンプ
- Input / Output Stream
- ノード間を繋ぐキュー
- Stream上を流れるPacketのタイムスタンプは単調増加
- Scheduler Queue
- Calculatorの実行を管理する。CalculatorGraphが少なくとも一つ持つ
- デフォルトでスレッドプールで実行される
- Input Stream Handler
- Calculatorを実行する条件 (Input Policy) を保持する
概念(登場人物)
17. Mobility Technologies Co., Ltd.
Calculator Graph
Calc. Node / Context
Calc. Node / Context
概観図
Scheduler Queue
Scheduler Queue
Packet
Calc. Node
Calculator
Output Stream Handler
Input Stream Handler
Calc. Context
Inputs
Outputs
18. Mobility Technologies Co., Ltd.
- mediapipeではタイムスタンプを明示的に扱う(Packet生成時に指定する)
- タイムスタンプに起因する再現性の問題がなくなる
(特に複数入力がある場合)
- 実行のタイミングはInput Policyで制御
- Input policyはパイプライン定義で設定可能
- デフォルトのInput policy
- 同じタイムスタンプの入力Packetは同時に処理される
(実際の到着時刻には無関係)
- 全てのPacketは処理される
→実行時に複数入力の一部しか与えられない場合がある
その他のInput policy
- 全ての入力が揃った時のみ実行
- タイムスタンプと関係なく到着したらすぐに実行
Input Policy
19. Mobility Technologies Co., Ltd.
- Solutions
- 既に用意されているパイプラインで簡単に使える
- https://google.github.io/mediapipe/solutions/solutions.html
- パイプラインのカスタマイズ
- Calculatorを組み合わせることで様々な処理ができる
- Calculatorの追加
- mediapipeに実装を追加しビルドする必要があって難易度は上がる
まとめ