【MediaPipe】Face Meshを動かしてみた

2020.06.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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

今までは、Multi Hand Trackingを動かし、手の検出を行っていました。

【MediaPipe】投稿記事まとめ

今回は少し手を伸ばして、同じくMediaPipeで公開されている、Face Meshを動かしてみたいと思います。

Face Meshを動かす

今回はAndroidのAPKで動かしました。こちらのページの「Example Apps」「Mobile」「Android target」の項目に、APKへのリンクがありますので、そこからダウンロードして使用できます。(とても簡単ですね)

利用したMediaPipeのバージョンはv0.7.5でした。

WSLやUbuntuから動かしたい場合は、今までと同様にビルドと実行のコマンドを打つことで実行できます。コマンドとしては以下のようになると思われます。入出力ファイルへのパスは適宜変更してください。

bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 \
ediapipe/examples/desktop/face_mesh:face_mesh_cpu
GLOG_logtostderr=1 bazel-bin/mediapipe/examples/desktop/face_mesh/face_mesh \
--calculator_graph_config_file=mediapipe/graphs/face_mesh/face_mesh_desktop_live.pbtxt \
--input_video_path="/mnt/c/Users/yamamoto.hiroki/Pictures/Camera Roll/sample.mp4" \
--output_video_path="/mnt/c/Users/yamamoto.hiroki/Pictures/Camera Roll/output.mp4"

結果

使用したスマートフォンの機種は、ASUS Zenfone4でした。APKを起動して画面表示される結果を、画面キャプチャアプリで録画しました。

結果1:正面からの視点

顔のMeshを正しく検出できていることがわかります。顔を動かしたり、口を開けたり、目を大きくしても検出していることがわかります。

結果2:上からの視点(トップビュー)

鉛直方向に近くても時折顔が検出できています。また、鉛直方向からおおよそ30度以降だと、Meshの検出ができています。

真上にカメラを設置して顔のMeshを検出するのは難しそうですが、少し横から撮るようにすれば十分検出できそうです。

まとめ

今回はMediaPipeのFace Meshを動かしてみました。検出の様子から、カフェの天井に設定して真上から撮影するといった方法は難しそうでした。

調べてみると、検出結果を利用して、顔に画像を貼り付けるということに取り組んでいる方もいるので、VTuberになるといった楽しみ方もできそうです。