MoRecon - A tool for reconstructing missing frames in motion capture data
バンダイナムコ研究所・データサイエンス・チャレンジの優勝解法です。
result.mp4
解法解説に使用したスライドを掲載します。
本コンペでは、数フレームに1フレームだけデータが存在するモーションキャプチャデータが与えられ、欠落しているフレームのデータを補間します。マーカー全体で見るとポーズの補間であり、マーカー単体で見ると点と点の補間になります。
訓練用ファイルは全てのフレームにデータが存在し、提出用の3ファイルはそれぞれ5
、15
、45
フレームに1
フレームのみデータが存在します。
csvの中身は以下のようになっており、easyであれば5
フレームに1
フレームだけデータが入っていることが確認できます。
モーションは「手を振る」「走る」など、大きく分けて7~8
種類あります。
実際の解法の説明に入ります。まず、モーションの種類とデータの間隔によって、ルールベース手法と機械学習手法を使い分けています。
ルールベース手法は単なる線形補間と2次スプライン補間の重み付け平均です。重みは学習データを使って最適化しています。
機械学習手法の要点を先にまとめました。難しいことは何もしていません。
Transformerでは、入力データの欠落部分は無視しつつ、未来の情報を与えてあげます。
入出力データの形はcsvの2次元データそのものですが、欠落していない隣接2フレームで切り取ることで固定長にしています。そのため、データ全体を復元する際には範囲をずらしながら複数回推論していきます。
スケルトンデータは親関節からの相対座標や角度などとして計算することも可能ですが、本手法では元々格納されているワールド座標のみを使います。相対座標や角度は、ルートとなる腰マーカーの扱いが難しいというデメリットがあります。
学習データは速度を変えてデータ拡張しています。これによってかなり精度が上がります。
正規化によって特徴が潰れてしまうことを防ぐため、事前にモーションを原点に固定します。
random seed averageと線形補間を混ぜ合わせ、重みはデータから最適化します。
質問があれば Twitter かIssueでお願いします。