そろそろ忘年会の季節、ダンスの練習をしている方も多いのでは? ただ、ダンスの練習といっても一筋縄ではいきません。
「練習しなくても、自然に踊れるようになっていれば……」なんて夢のような話、AIが実現してくれます。
紹介するのは、OpenPoseとGANを組み合わせた「Everybody Dance Now」。踊りたいダンス映像を学習させることで、一瞬で踊れるようにしてくれます。
言葉で説明するよりも、まずは映像をみてください。
人物Aの動きを人物Bに転移。OpenPoseとGANを組み合わせて踊らせる
「Everybody Dance Now」で、動画に写る人物を踊らせた映像がこちら。
引用元:https://www.youtube.com/watch?v=PMivT7MJ41M
左で踊る人物のダンスを、右の人物に転移させています。
AIによる動画生成に必要な材料は、
- 真似したいダンス動画
- 別の人物が写る動画
だけです。
画像内に写る人物の関節点と骨格を検出してくれる「OpenPose」が使われています。
OpenPoseがどんな技術なのかおさらいすると、OpenPoseは静止画を入力するだけで人間の関節点と骨格を検出することができ、顔や手までも詳細に検出してくれる技術です。
OpenPoseと、画像生成を行うGAN(敵対的生成ネットワーク)を組み合わせることで、人物Aの動きを人物Bに同期できます。
Everybody Dance Nowは、カリフォルニア大学バークレー校(UC Berkeley)のCaroline. Chanらが2018年8月に論文を公開し、注目を浴びました。
それでは、Everybody Dance Nowで使われる技術をもう少し深ぼって解説していきます。
OpenPoseとGANによる「Everybody Dance Now」の仕組み
Everybody Dance NowにはOpenPoseに加え、GANの手法の1つ「pix2pixHD」も使われています。
pix2pixHDを使うことで人物Aの動き(ソース動画)を人物B(ターゲット動画)に移すことができます。
ダンスを転移させるためには、大きく分けて学習(Training)と転移(Transfer)、2つのフェーズが必要です。
学習フェーズ
学習フェーズでは人物Bの動画(ターゲット動画)のみを使います。
OpenPoseを使って推定した姿勢情報から、pix2pixHDのGenerator(生成器)を使い実物そっくりの画像を生成。生成された画像が、Generatorによって生成されたフェイク画像なのか、元画像なのかをpix2pixHDのDiscriminator(判別器)が判別します。
pix2pixHDが画像の生成と判別を繰り返し行うことで学習していきます。
このフェーズで学習させたpix2pixHDのGeneratorとDiscriminatorを使い、次の転移フェーズに利用します。
転移フェーズ
転移フェーズでは人物Aの動画(ソース動画)と、先ほど学習したGeneratorとOpenPoseを使います。
まず人物Aの動画から踊っている人の姿勢情報をOpenPoseで取り出します。取り出した姿勢情報をターゲット動画に転移させることで上図のような動画を生成できます。
大まかな仕組みは掴めたかと思いますが、さらに詳細に知りたい方に、学習フェーズ・転移フェーズそれぞれをさらに深掘って解説していきます。
※以下は技術者向けの内容です。
OpenPoseからの姿勢情報をGANで学習し、Pose2Imageを実現
出典:“Everybody Dance Now” C.Chan et al.
学習フェーズでは姿勢情報から元の画像を生成するように学習したGenerator(図中 G)と、生成された画像がフェイクなのかリアルなのかをDiscriminator(図中 D)に加えてPerceptual Lossを使用します。
Perceptual Lossは、入力画像と生成された画像をCNNに入力し、そのCNNの中間層から取り出した各特徴量の差分を小さくするように学習する方法。これにより、より鮮やかな画像を生成できるようになります。
転移フェーズでは学習フェーズと同様にOpenPoseで姿勢を推定します。Generatorに入力する前に、姿勢情報を正規化することで動きを転移した際に違和感が残らないよう、立っている位置や画像中における人物の大きさを補正します。
ここまでの処理を行うことでソース動画の動作をターゲット動画に転移することができました。
さらにEverybody Dance Nowの論文では、顔の領域を検出し顔の生成をきれいに行うFace GANや動画のフレーム間での違和感を少なくするためのTemporal Smoothingといった工夫がされています。詳しい詳細はこちらの論文でぜひご確認ください。
ただ“すごいAI”で終わらせてよいのか
以前公開した「OpenPose試してみた。〜ディープラニングで人のポーズを解析」の応用編が今回の記事です。
OpenPoseが2017年に発表され、その1年後にはOpenPose技術を使った応用的な研究が発表されるAI業界のスピード感。元となる技術を知ることで、応用技術の動向をキャッチアップしやすくなります。
2018年10月に行われたAdobeのカンファレンス「Adobe MAX 2018」では、Illustratorで描いたキャラクターを解析し、骨格を推定する技術が発表されましたが、キャラクターの骨格を推定する技術にも、OpenPoseに似た技術が使われているのかもしれません。
裏ではどのようなAI技術が使われているのか、どのような仕組みで動いているのかを大まかにも理解することで、より早く、より的確に最先端テクノロジーを自社ビジネスへ実装できるのではないでしょうか。