指文字動画に対してMediaPipeの部位別追跡機能を試しました

This image is generated with ChatGPT-4, and edited by the author.
作成日:2023年09月15日(金) 00:00
最終更新日:2024年10月07日(月) 10:28
カテゴリ:コンピュータビジョン
タグ:  MediaPipe 動作解析 骨格追跡

MediaPipeの部位別追跡機能を指文字中の動画に対して適用してみました.

こんにちは.高山です.
以前の記事MediaPipeの全身追跡機能を指文字動画に適用して,距離や映っている人数の変化に対して挙動がどのように変わるかを紹介しました.
今回は,顔,身体,手の部位別追跡機能を用いて同様の実験を行った際の挙動について紹介したいと思います.

更新履歴 (大きな変更のみ記載しています)

  • 2024/09/17: タグを更新しました

1. 検証環境

検証環境は下記のとおりです.

  • OS: Ubuntu 20.04.5 LTS (on WSL2 with docker)
  • Python: 3.8.10
  • MediaPipe: 0.10.0

なお,GPUは今回の検証では使用していません.

2. 入力動画

検証には図1に示す4種類の動画を用いました.

4種類の指文字動画のサムネイルを並べた画像です.1番目は遠距離から撮影しており1名が映っています.2番目は近距離から撮影しており1名が映っています.3番目は遠距離から撮影しており3名が映っています.4番目は近距離から撮影しており3名が映っています.
本実験の入力動画

全身追跡機能の実験と同様に,遠距離と近距離から撮影した動画を用いています.
また,複数人が映っている状況をシミュレーションするために,3名が映っている状況を合成した動画も用意しました.

なお,今回は全ての追跡機能において動画モード (Holisticにおける static_image_mode=False)を使用し,かつ,複数人追跡を行う設定で実験を行いました.

3. 追跡結果

結論から述べますと,下記の表1に示すとおり身体以外の部位別追跡機能は多くのケースで追跡に失敗することが分かりました.

追跡結果
追跡部位 遠距離-1名 近距離-1名 遠距離-3名 近距離-3名
NG OK NG NG
NG OK NG NG
身体 OK OK OK NG

成功例を下記に示します.

3.1 顔追跡成功例

図2は顔追跡の成功例を示しています.

顔追跡結果(近距離-1人)

動画の前半で多少位置が乱れたり,複数の顔が検出されているものの,未検出のフレームはありませんでした.
一方,他の動画では全フレームで検出に失敗していました.

3.2 手追跡成功例

図3は手追跡の成功例を示しています.

手追跡結果(近距離-1人)

顔と同様に,いくつかのフレームで逆の手として検出されたり,背景部分を手とご検出する場合があるものの,手が写っているフレームでは追跡ができています.
一方,他の動画では全フレームで検出に失敗していました.

3.3 身体追跡成功例

図4は身体追跡の成功例を示しています.

(a): 遠距離-1人
(b): 近距離-1人
(c): 遠距離-3人
身体追跡結果

肘や前腕部の追跡に乱れがあるものの,全てのフレームで追跡ができています.
また,今回試した追跡機能の中では,唯一遠距離から撮影した動画と複数人が映る動画で追跡に成功しています.

4. 追跡失敗ケースに関する考察

MediaPipeの追跡機能は,Top-Down方式というアプローチを採用しています.
このアプローチではまず最初に,追跡部位の周辺領域を検出し,その後に周辺領域に対して追跡点生成を行います.
(*このアプローチの他にBottom-Up方式というアプローチもあります)

身体追跡と比較して顔や手の追跡が失敗するケースが多いことを考えると,前段の領域検出で失敗しているケースが多いと予想されます.
これは主に次の2点を要因として領域検出の信頼度が低くなっていることが原因と考えられます.

  • 部位の領域が小さい
  • 画像のアスペクト比が学習画像と乖離している

4.1 部位の領域が小さい

顔や手の追跡では,遠距離から撮影したケースや複数人が映っているケースで追跡に失敗していました.
これらの動画では,顔や手の領域が小さかったため,領域検出の信頼度が低くなってしまったと予想されます.

顔追跡のページ下部に記載がありますが,顔追跡では領域検出に"BlaseFase short-range"モデルが使われています.
顔領域検出のドキュメントによると,このモデルは自撮り画像に最適化されており,画面内の顔領域面積比が大きいことを前提としているようです.

手の追跡ではまず最初に手の周辺領域を検出します.
こちらの検出モデルについては手追跡のドキュメントには細かな記述が見つかりませんでしたが,症状を見た限りでは顔と同様に画面内の手領域面積比が大きいことを前提としてそうです.

4.2 画像のアスペクト比が学習画像と乖離している

身体追跡では,複数人を近距距離から撮影したケースで追跡に失敗していました.
この動画は画像合成で作成しているため横長になっており,アスペクト比が学習画像と乖離していることが予想されます.

身体追跡モデルは \(224 \times 224\) サイズの画像を入力する設計になっており,これ以外のサイズの画像は内部でリサイズが行われます.
リサイズの結果,人体部分が横につぶれた画像になることが予想でき,この影響により領域検出の信頼度が低くなってしまったと考えられます.


今回はMediaPipeの部位別追跡機能を使って指文字動画を追跡した実験を紹介しましたが,如何でしたでしょうか?
MediaPipeに限らず近年では多くの動作追跡モデルが開発されていますが,それぞれで得意なシーンや不得意なシーンがあります.
動作追跡をアプリケーションに応用する場合は,モデルの特性を考慮して設計を行っていく必要がありそうです.

今回紹介した話が,これから追跡機能を使おうとお考えの方に何か参考になれば幸いです.