Más contenido relacionado
La actualidad más candente (20)
Similar a MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~ (20)
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
- 7. 7
● リアルタイム性
○ e.g. 自動運転・カメラの自動フォーカスや顔検出
● 外部通信をしないことによる安全性
○ e.g. スマートスピーカーのウェイクキーワード (OK, Google)の判別
■ 室内のおしゃべり全部サーバーに送ってたらプライバシーの問題がありますよね ...
● Edge上での学習による最適化
○ e.g. IME (端末上で個別ユーザーに最適化されていく )
EdgeAIが提供する価値
- 10. 10
● ML Kit (Firebase)
FirebaseSDKで気軽に使える
● CoreML (Apple)
Apple端末のための高性能なframework.
iOS内蔵なのでframework分の容量が増えないのが嬉しい
● MediaPipe (Google)
ストリーミング処理に特化、カスタマイズ性の高いframework
モバイル端末上でAIを走らせるためのframework
- 11. 11
● iOSでもAndroidでも提供したい → ML Kit / MediaPipe
● 自作モデルを利用したい → ALL
● ストリーミングメディアのリアルタイムな推論 → MediaPipe
● 電池消費を抑えるためのチューニングがしたい → MediaPipe
「かざして売れるかチェック」の技術選定
- 23. 23
TensorFlow Lite
● モバイルデバイスやIoTデバイス上でAIを利用するためのフレームワーク
● MLKitやMediaPipeの中でも使われている
● 従来のモデルを量子化することで、モデルサイズを小さくすることができる
● モバイルで利用するためにはTensorFlowのモデルTensorFlowLiteモデルに
コンバートする必要有 <自作モデルを使うとなるとこれだけでもかなり大変
○ 詳しくは: TensorflowモデルをTFLiteにconvertする方法とconvertツールの比較
モデルのTensorFlow Lite変換・量子化
- 34. 34
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_framework")
ios_framework(
name = "MediaPipe",
hdrs = glob([
"tflite/*.h", # MediaPipeの内部のtfliteをMediaPipeのframeworkから利用するため
"MediaPipe.h", # --- C++のインタフェースをあれするやつ
"MediaPipe-umbrella.h" # umbrellaヘッダ
]),
infoplists = ["Info.plist"], # --- 作り方がわからないのでどこかからコピペしたのを編集して作った
bundle_id = "xxxxxx",
bundle_name = "MediaPipe",
families = ["iphone", "ipad"],
minimum_os_version = "12.0",
deps = [
":MediaPipeLibrary",
"@ios_opencv//:OpencvFramework",
],
)
実際のBazelコード
詳細が気になった方向け (skip)
- 41. 41
この時点での追加リソース
● MediaPipe Library (5MB程度)
○ ただしTFLiteの分は既存のアプリに組込済なので微増
○ 端末ごとの最適化などがあるので、正確に増加量を計算するのは難しい
● 物体検出モデル (6MB) ←リアルタイム性を提供するため外せない
● 特徴量抽出モデル(8MB) ← 技術的にはやりたかったけど必須ではない
※アプリサイズの正確な見積もりは難しいが、+10MBには抑えたかった
アプリサイズの増加が大きい
- 58. 58
TFLiteの量子化オプション
Technique Benefits Hardware
Dynamic range quantization
重みをuint8に量子化
4x smaller
2x-3x speedup
CPU
Full integer quantization
重みと活性化関数を uint8に量子化
4x smaller
3x+ speedup
CPU, Edge TPU,
Microcontrollers
Float16 quantization
重みをfloat16に量子化
2x smaller
GPU acceleration
CPU, GPU
サーバーで学習・推論するモデルは float32 で情報が保持されている