【MediaPipe】v0.7.4 → v0.7.5 の変更点を調べて、Android APKを動かしてみた

2020.05.31

カフェチームの山本です。

MediaPipeが5/22にv0.7.4からv0.7.5変更されました。自分はハマって困ったこともあったのですが、嬉しい更新もありました。

今回は、Hand Trackingに関するところでアップデートされた内容を簡単にまとめていこうと思います。

(MediaPipeに関連する記事はこちらにまとめてあります。)

【MediaPipe】投稿記事まとめ

Android APKが増えた

Hand TrackingのReadmeを見てみると、「Example Apps」が増えていました。今までは、Hand Tracking(リンク先のMain Example)しかAPKが公開されていませんでした。v0.7.5では、それに加えて、Multi-hand SupportとPalm/Hand Detection Onlyが増えていました。こういうのが用意されちえるすぐに性能を確認できるので良いですね。(自分もMediaPipeの最初の記事でこれを動かしました)

早速動かしてみた

Main Example(=Hand Tracking)

前回と大きく変わった点は、「Right/Left」が表示されているところです(注:映像が判定しているので、左手右手が逆です。判定が間違って見えますが、実際は正しく検出されています)。今やっている中でもほしい情報だったので、この機能追加は嬉しいです。

今まで2D版と3D版がありましたが、今回は3D版がデフォルトとなっているようです。

(若干検出性能が悪くなっている気がするのですが、撮影の仕方が悪いのかもしれません)

6/5 追記:右手の裏と左手の表は同じ形をしていますが、どちらも正しく右手・左手を判別してくれます(逆もできる)。なので、手の表裏を判別できます(例:映っているのが右手で、親指と人差し指の付け根が手首→中指のベクトルよりも右側にあれば表 と判別する)。

Multi-hand Support(=Multi Hand Tracking)

こちらも3Dがデフォルトになっているようです。大きな変更点はなさそうです。(これがすぐに試せるのは嬉しいですね)

Hand/Palm Detection Only

こちらも追加されていたので動かしてみました。HandDetection自体は、上の2つのGraphの中に含まれているので、こちらは途中結果ということもできます。HandDetectionはかなり精度良くできているのがわかります。このAPKでは1つ手しかDetectionはしないようです。

Graphが更新された

先程動かした、Hand Trackingの様子から、Hand TrackingのGraphが変わっていそうです。また、コミットのdiffを見てみると、HandLandmarkが変更されているようです。

Hand Tracking

Hand Landmarkから出力されるHANDEDNESSが新しく追加されており、これが右手左手を表しているようです。

Hand Landmark

構造は以下のようになっていました(小さくて見づらいと思いますので、Visualizerで mediapipe/graphs/hand_tracking/subgraphs/hand_landmark_cpu.pbtxt を可視化してみるのをオススメします)。

新しく追加された箇所はhand_presence_scoreとhandednedの出力が追加されているところだと思います。Hand TrackingのGraphでは使われていませんが、誤検出を弾くのに使える有用な情報なので、出力させて使いたいところです。

まとめ

今回は、v0.7.5へのアップデート情報を簡単にまとめました。右手左手の判定が追加されるなど、かなり嬉しいアップデートな気がしますので、活用していきたいところです。

参考にさせていただいたページ

MediaPipe Hand https://github.com/google/mediapipe/blob/master/mediapipe/docs/hand_tracking_mobile_gpu.md