【MediaPipe】カフェで手が検出できるか確かめてみた

2020.05.20

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

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

前回は、MediaPipeのMulti Hand Trackingの性能を大まかに確かめるために、自宅で撮影した動画と、カフェに記録されていた動画を入力し、出力結果を確認しました。

【MediaPipe】テスト動画で検出性能を確かめてみた

今回は、Multi Hand Trackingが性能よく動作する条件を調べるため、新たにカフェで撮影した動画に対して検出を実行し、結果を見ていきます。

結論として、以下のことがわかりました。

  • 自宅で撮影した動画では、ほぼ検出できた
  • カフェの記録映像では、ほとんど検出できなかった

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

【MediaPipe】投稿記事まとめ

対象データ

前回のカフェの記録動画と、今回の撮影した動画は以下のように異なります(今回の動画の方が高品質です)。手元にあった3つの機材で動画を撮影しました。また、そのうち1つのWebカメラに関しては、距離を変えながら撮影を行いました。

  • 今回(新たに撮影した動画)
    • 映っている人数:1人(2人)
    • フレームレート:30 fps
    • 解像度:1280*720、1920*1080 px
    • 撮影機材:Webカメラ*2種、iPhone XR
    • (加工:なし)
  • 前回(Developers IO Cafeで確認用に記録されていた動画)
    • 映っている人数:2人
    • フレームレート:2 fps
    • 解像度:640*480 px
    • 撮影機材:Webカメラ
    • (加工:撮影映像を縮小、時間方向に間引き)

検出結果

今回検出した様子はこちら(YouTube の再生リスト)にまとめています。

共通の結果

  • 検出範囲は、商品棚の全体をカバーできる程度あった。(床面近くでも手を検出できた)
  • 手は2つ以上検出できませんでした。(今回のプログラムの設定では)

iPhoneXRで撮影した動画

天井(床から3m程度)近くから撮影しました。解像度は1920*1080です。

検出に失敗することがほとんどなく、うまく検出できました(今回のテストの中でこれが一番うまく検出できました

Webカメラ(1)で撮影

いくつか条件を変化させながら撮影しました。解像度は1920*1080です。

距離を変化させながら撮影

距離を変えながら撮影しました。照明はついています。(数字は床からの距離です)

  • 2.2m程度
  • 2.4m程度
  • 2.6m程度
  • 2.8m程度

距離が近い方が、検出が外れることが少なく、手に商品をもっていても検出できることが多かったです。

照明を消して撮影

カフェの設備の照明を消して撮影しました。

  • 2.4m程度
  • 2.8m程度

照明がある場合よりも、少し精度よく取れているようでした。

人数を増やして撮影

人数を2人にして撮影し、照明なし・ありで撮影しました。撮影距離は床から2.2m程度です。どちらの状況でも同様にうまく検出できました

  • 照明なし
  • 照明あり

Webカメラ(2)で撮影

天井付近(床から3m程度)から撮影しました。解像度は1280*720です。

ときどき検出できないことが発生しました

分析・わかったこと

  • 前回はカフェの動画ではうまく動作しませんでしたが、今回の動画でうまくいったことから、カフェのような環境でも動作することがわかりました。
  • 検出領域は広く、商品棚をカバーできる
  • 商品を持っていても手を検出できる場合がある。
  • ただし、撮影の仕方が適していないと検出性能が落ちることがわかりました。できなかった原因としては、解像度、カメラの画角、映っている手の大きさ、各機材における映像の補正などが影響したことが考えられます。
  • 現在の設定では、手は2つまでしか検出できませんでした。どこか設定を変更する必要がありそうです。
  • 今回のカフェの状況では、照明をつけていても、消していても手の検出ができました。

まとめ

条件をうまく整えれば、カフェの環境でも手の検出ができることができることがわかりました。今後は、どのような条件が適しているのかさらに調べていきます。

次↓

【MediaPipe】Multi Hand Trackingの性能を確かめてみた(解像度)