Everybody Dance nowというすごいタイトルの論文を読んでみた

シェアする

  • このエントリーをはてなブックマークに追加
スポンサーリンク

はじめに

 最近、Everybody Dance Nowという衝撃的なタイトルの論文が公開された。同時にその動作をまとめた動画が公開され、興味を持ち論文を読んでみた。忘れないように私なりにまとめておこうと思う。

 また、デモ動画も公開されているので、まずこちらを見てどのような動作をするのか見るとわかりやすいと思います。


提案内容

 異なる動画内の人物間の動きを伝達する方法を提案している。 外見を合成したい対象者と対象者に動かしたい対象のもう一方の2つの動画が与えられた時、これらの対象間の動きを転送する。

 2つの動画の人物間の動きをフレームごとに転送するには、2人の画像間のマッピングを学習する必要がある。 

ポーズ情報は、任意の2つの被験者間の中間表現として役立つ。


学習時の流れ

 学習の流れは下の図のようになっている。そして、これはポーズ推定のネットワークとポーズをターゲットの人物に取らせるGAN(ポーズの情報を与えられたターゲットの人物を合成する)2つで構成されている。

 

 

 まず、元のターゲットビデオからフレーム y が与えられたとき、ポーズ検出器Pを使用し、入力に対応するポーズ x を得る。そして、トレーニング中に対応する(x,y)を使用して、ポーズ図に与えられたターゲット人物の画像を合成するマッピングGを学習する。

 そのあと、VGGNetを用いてdiscriminator D と perceptual reconstruction loss を用いた学習を通して、生成された出力G(x)を元のフレームyに近づけるように最適化する。

 そしてその学習したモデルを使って、変換する流れが図の下に示してある。トレーニングと同様に、ポーズ検出器Pによってポーズ x’ を生成される。しかし、ソース動画の人物はターゲット動画の人物と異なる位置に立っている可能性がある。そこで、ソース動画のポーズをターゲットの撮影設定といい感じに位置合わせをするために、global pose normalization  を適用することで、ソース動画のポーズ x’ をターゲット動画のポーズとより一致するように変換する。

 次に正規化されたポーズ を学習したモデルGに渡して、ソース y’ の元の画像に対応するターゲット人物の画像G(x)を作る。

ここで使用しているポーズ検出器はOpenposeでした。


Global pose normalization

 異なる動画では、被写体の肢体の比率が異なり、カメラに近づいたり遠ざかったりすることがある。 よって、2人の被験者間の動きを伝達する時、ターゲット動画に映る人物の体の形状と割合に応じて表示されるように、ソース動画の人物のポーズキーポイントを変換する必要がある。 そこで、各被験者のポーズの高さと足首の位置を分析し、両方のビデオの最も近い足首の位置と最も遠い足首の位置との間の線形マッピングを使用してこの変換を見つける。 これらの統計値を収集した後、対応する姿勢検出に基づいて各フレームのスケールと平行移動を計算する


時間の平滑化

 動画を作るために1枚の画像を生成するのではなく、隣接するフレームを生成することによって連続性を持たせるようにしている。

 こうすることで、生成した実際の動きがより現実的になるようにしている。


Face GAN

今回、全体画像のGANと顔画像のGANは学習時に別々に最適化している。まず、全体画像GANを学習し、そのあとにこの重みを固定した後で顔画像GANを最適化している。


データの集め方

 ソース動画とターゲット動画は少しことなる方法で集めている。

 ターゲット動画の場合、多くのポーズでターゲットの人物の見た目を知るためにも、動きの激しい範囲と鋭い動作のフレームを最小限のぼかしで撮ることが重要。フレームの品質を確保するためにスマホのカメラの120フレーム/秒のリアルタイム映像を20分間撮影した。また、今回のポーズの表現は衣類の情報をいれていないため、被験者にはしわを最小限に抑えるために体のラインがしっかりでる服を着用させた。

 ソース動画は、ソース動画からしっかりとしたポーズ検出が必要なだけなので同じ品質を必要としない。制限がないのであれば、ダンスをする多くの高品質の動画はインターネット上に多くあるため、そういった動画を使うことができる。また、あらかじめ平衡化したポーズ情報は出力の時間軸のゆらぎを減らすのに有効なことがわかった。

 フレームレートの高い(120fps)動画では、時間経過とともにポーズのキーポイントをガウス的になめらかにして、フレームレートの低い動画には、メディアンスムージングを使用した。


実験

・フレームの品質の評価

構造類似度(SSIM)とLPIPS の両方を測定

・ポーズ検出評価

出力に対してポーズ検出器(Openpose)を実行し、これらの再構成されたキーポイントを元の入力動画のポーズと比較し、評価


問題点

・入力ポーズの数値はフレームごとに時間的な情報を持たないポーズ推定に依存している。

・ポーズ検出器からのキーポイントの位置の欠落や誤った入力がされてしまうことがある。

1. これらの問題により、一時的な平衡化によってこれらの影響を緩和しようとしても、しばしば結果に反映されてしまうことがある。

2. また、時間の平衡化により時間的な連続性を持たせようとしてもこの結果はしばしば時間的なゆらぎが出てきてしまう。

3. 入力動画や動画の速度が学習時の動きと異なる場合は、変換した動画でエラーが出る。


まとめ

 これらの問題を解決するためには、時間的に連続性のある動画の生成と人間の動きの表現についてより多くの作業が必要である。また、今回ポーズ検出器によってよい結果が得られたけど、このモーション変換には時間的に連続な入力と表現を使用したいので、時間的な情報を持たないポーズ推定という制限を回避したい。


私なりに論文を読んで内容をざっくりとまとめてみました。面白い研究だと思うので話のネタとして友人に共有してみるのもいいと思います。

最後まで読んでいただきありがとうございました。よろしければこの記事をシェアしていただけると励みになります。よろしくお願いします。

スポンサーリンク
レクタングル広告(大)
レクタングル広告(大)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル広告(大)