LoginSignup
16
13

More than 3 years have passed since last update.

ハンドトラッキングを試してみろう!

Last updated at Posted at 2020-11-17

今回、mediapipeの動き方を調査して、ハンドトラッキングの仕組みについて話させていただきます。

伝えたいこと

  • mediapipeの概要
  • ハンドトラッキングモデルの仕組み

mediapipeの概要

MediaPipeは、クロスプラットフォーム(デスクトップ、モバイル、ウェブ、Raspberryなどのマイコン)のマルチモーダル適用MLパイプラインを構築するためのフレームワークです。

コンセプト

image.png

  • グラフ(Graph):以上の画像のようなノードのネットワークを保持します
  • パケット(Packet):基本データユニットです。パケットの中にはペイロード(テキストや画像データなど)とタイムスタンプがあります
  • ノード(Nodes):インプットストリームのパケットを処理してアウトプットストリームに新しいパケットを抽出します
  • ストリーム(Streams):一連のパケットを伝送する2つのノード間の接続です
  • 側パケット(Side packets):タイムスタンプのない単一パケット(設定値とか、静的なワンタイムインプット)

ハンドトラッキンググラフ

試しのリンク:https://viz.mediapipe.dev/demo/hand_tracking
参考:https://webbigdata.jp/ai/post-3992

 仕組み

Screenshot from 2020-11-17 21-58-12.png

ハンドトラッキンググラフ:
インプットノード(input_frames_gpu):ウェブカメラからビデオデータ

  1. インプット動画を水平方向に反転する(ImageTransformation)
  2. 後ろのフローに1つ画像だけ権限をする(FlowLimiter)
  3. 画像全体を操作し、手のバウンディングボックスを返す手のひら検出器モデル(HandDetectionというノード)
    • インプット:画像
    • アウトプット:手のバウンディングボックス(NORM_RECT)
  4. 手のひら検出器によって定義されたトリミングされた画像領域で動作し、忠実度の高い3D手のキーポイントを返す手のランドマークモデル(HandLandmarkというノード)。
    • インプットは
      • 画像(IMAGE)
      • 手があるバウンディングボックス(NORM_RECT)
    • アウトプットは
      • 手の21位置(LANDMARKS)
      • 右手か左手か(HANDEDNESS)
      • 現時点の手のバウンディングボックス(NORM_RECT)
      • そのハウンディングボックスにある手があるかどうか(PRESENCE)

一旦今回ここまでです。次、ハンドトラッキンググラフのコードを編集してみて簡単なことをやりましょう!

16
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13