電通総研 テックブログ

電通総研が運営する技術ブログ

BlazePoseを用いてダンスの類似モーションを取得する

こんにちは。電通国際情報サービス(ISID) 金融ソリューション事業部の若本です。AIを活用した新規事業に取り組んでおり、業務では主に自然言語処理の実装に携わっていますが、今回は画像処理分野の記事になります。

私は趣味でブレイクダンスを練習しているのですが、自分の練習動画を見ていると「この動きは最近癖になっているな」ですとか、「あの動きは最近していないな」といった気付きを得ることが多々あります。しかし、過去の動画をいちいち見返すのはかなり億劫な作業です。
そこで、過去の自分の練習動画から同じような動きを取得することを考えました。BlazePoseを使い、他の動画の中から似ている動きを検索します。

BlazePoseとは?

Googleが開発した、動画から骨格情報を検出するAIモデルです1。BlazePoseを使用することで、手軽かつ高速に骨格検出を実施できます。奥行情報の推定やセグメンテーション(人が映っている場所だけを切り出すこと)も可能です。それでいて、リアルタイム検出に対応できる動作速度を持ち合わせています。
類似の骨格検出AIにはMoveNet2などもあります。こちらはモーションブラー(動きのブレ)に強いことが特長です。
動きの激しいブレイクダンスを解析対象としているため、本来であればMoveNetを使いたいところですが、今回は奥行の情報も使いたいためBlazePoseを採用しました。以下がBlazePoseの出力例になります。

類似度の計算

以前に撮影した複数の練習動画を入力として、他の動画に似た動きがないか検索します。処理の概要は以下の図のようになります。

1つの動画内には多くの動きが含まれているため、まず動画を小分けに保存してBlazePoseにかけています。
BlazePoseを使い、小分けにした動画の各フレームの骨格情報を取得することができれば、あとは骨格情報の推移から類似度を計算するだけです。
これらを以下の手順で実装します。
① 座標の情報を変換する
② 他の動画と比較して類似度を算出する

① 座標の情報を変換する

BlazePoseで取得した骨格情報は、部位ごとに空間座標(X、Y、Z)の情報を持っています。
このとき、全く同じ動きをしていても空間座標の値は異なります。なぜなら、動画を撮影している角度や位置などが動画ごとに異なるからです。
これらを統一するため、座標を以下のようにして変換します。

  • 基準となる1つの部位を決め、その部位が原点になるよう全ての空間座標を平行移動させる
  • 基準となる部位をもとに全ての空間座標を回転させる

ここでは、体の場所と向きの情報をそろえています。体の向きさえ一致させることができれば、上記の方法でなくとも問題はありません。

② 他の動画と比較して類似度を算出する

ブレイクダンスについて、以下のような特徴を考慮して類似度を計算します。
Ⅰ. 動きに個人差の大きい部位がある
Ⅱ. 同じ動きでも早かったり遅かったりする
Ⅰ. には部位ごとの重みづけを、Ⅱ. には類似度計算にDTW(Dynamic Time Warping)を使うことで対応すればよさそうです。このとき、類似度の計算は以下のように行います。

  • 部位ごとにDTWを計算する
  • 部位ごとに設定した重みをスコアにかけ、総和を取る
  • 総和が閾値より小さければ、類似している動画とみなす
  • 上記を小分けにした動画のすべての組み合わせについて繰り返す

また、BlazePoseから出力される骨格情報は33箇所もあるため、特定の部位の情報のみを使用して類似度を算出しています。

結果

以下が類似と判定された動きのキャプションになります。

服装が似ていることもあってわかりづらいですが、別動画から類似モーションを取得することには成功しています。ただ、BlazePoseで取得した奥行の情報が不正確なためか、似た角度の動画が多く見られました。現時点のロジックでは、少なくとも撮影角度が似ているほうが有利になる傾向はありそうです。

おわりに

今回はブレイクダンスの練習動画をもとに、類似モーション検索のチューニング・検証を行いました。
今後はより複雑な動き・速い動きでも類似モーションを取得できるよう改良したいと思います。また、撮影角度によっては類似モーションの見逃しが発生していることも今後の課題です。とはいえ、近年の骨格検出AIの発展は目覚ましく、より安定して骨格情報を捉えられるようになってきているため、改良するより早く解決してしまうかもしれません。

今後も単眼カメラの情報をベースとした様々な骨格検出モデルの登場が予想されます。今後どのように技術が発展していくのか、そしてどのように応用されていくのか、非常に楽しみです。

執筆:@wakamoto.ryosuke、レビュー:@sato.taichiShodoで執筆されました


  1. BlazePose: On-device Real-time Body Pose tracking(https://arxiv.org/abs/2006.10204

  2. MoveNet: A Deep Neural Network for Joint Profile Prediction Across Variable Walking Speeds and Slopes(https://ieeexplore.ieee.org/document/9406043)