概要
こんにちは。株式会社アイビスのTech Blog担当です。
今回は、論文Animating Pictures with Eulerian Motion Fieldsで提案された、水や煙のような流体の運動を含むシーンの1枚の静止画からリアルなループ動画を生成する手法を解説したいと思います。

導入
ループ動画を生成する既存の手法としては、ビデオテクスチャやシネマグラフ、ライブフォトなど様々なものがあります。これらの典型的な手法では、生成するループ動画よりも長い動画を入力とし、何かしらの動きの推定を行い、ループ動画を生成します。例えば、シネマグラフは一般的には、ビデオクリップのフレーム内の一部領域をユーザーがアニメーションまたは非アニメーション領域として指定し、アニメーションのループ動画を生成する手法のことを指します。
一方で、本手法では1枚の静止画を入力として、リアルなループ動画を自動的に生成します。本手法の対象は、流れる水やうねりのある煙などの連続的な流体運動を含むシーンです。本手法は、これらの流体の運動が、時間的に変化のない速度ベクトル場を積分することで再現できるという仮定に基づいています。流体力学等の物理学の分野において、流体を構成する各粒子それぞれの運動方程式により全体の運動記述するというアプローチをラグランジュ的記述といい、各点における流体の密度や速度ベクトルなどの場により運動を記述するというアプローチをオイラー的記述と言います。論文の様々な場所に出てくるEulerianとは、本手法においては流体の運動をオイラー的な方法で記述しようとしていることを意味しています。
本手法の概要を図2に示します。

本手法では、単一の静止画
本手法は、image-to-image変換ネットワークを用いて対応する速度場
それでは、本手法の構成要素について以下で詳しく説明していきます。
動きの推定
まず初めに、速度場と速度場を推定するネットワークについて述べます。
本手法では、入力画像から速度場
ここで、
上式を再帰的に適用すると、将来の全てのフレーム
動画を入力として、フレーム内の物体の位置の変位を推定する既存の手法としては、オプティカルフロー法[2]などが知られていますが、本手法では、1枚の静止画から速度場
アニメーション
続いて、推定した変位場
Forward warping
各ピクセルの変位場に基づいて画像をワープさせる(各ピクセルを移動させる)方法として、Forward warping (Splatting)と Backward warping (Sampling)の2つが知られています。下図は、2つの手法の違いを示しています。Forward warpingでは移動元画像の各ピクセルに対して、その初期位置と変位量から移動先座標を計算し、移動先画像に割り当てます。Backward warpingでは、移動先画像の各ピクセルの位置から変位場を逆向きに辿り移動元座標を計算し、移動元画像においてリニア補完を行うことでサンプリングします。

本手法では、Forward warping (Splatting)を用いて画像のワープを行いますが、Forward warpingによる画像のワープには次の2つの問題があります。
- 移動先画像において、どの入力画像のピクセルの移動先にもなっていない点、つまり穴が生成される。
- 複数の入力画像のピクセルが移動先画像において同じピクセルに割り当てられた場合に、どのように対処すれば良いのか明確ではない。
なお、Backward warpingではなくForward warpingを採用した理由については、あまり納得のいく説明がされていなかったのですが、おそらく、両者の方法を実験的に比較してみたところForward warpingの方が良い結果が得られたという理由から、本手法ではForawrd warpingを採用しているようです。
以下では、これらの問題を解決するための、深層学習ベースのDeep image warpingというアプローチを紹介します。
Deep image warping
Deep image warpingは、入力画像

Deep image warpingは以下の3つのステップから構成されます。
- エンコーダネットワークを用いて、入力画像
を特徴量マップ としてエンコードする。 - 推定した変位場
を用いて、 をForward warpingさせた特徴量マップ を計算する。 - デコーダネットワークを用いて、ワープした特徴マップを出力画像
に変換する。
学習時において、2でForward warpingにより作成された特徴量マップ
また、先ほど述べたように、Forward warpingでは複数の入力画像ピクセルが同じ移動先ピクセルに割り当てられる可能性があります。このようなピクセルにおいて、単に複数のピクセルにおける特徴量ベクトルの値を対等に平均するという方法も考えられますが、本手法ではSoftmax splattingというある種の重み付き平均をとる方法を採用し、この平均に用いる重みもエンコーダネットワークに学習させています。Softmax splattingでは、各ピクセルごとに重み係数 Z が割り当てられ、softmaxを用いて、各ピクセルの移動先画像における寄与を決定します。重み係数 Z は例えば、深度の逆数に相当すると考えられ、より距離が近いピクセルほど、移動先画像での寄与が大きくなります。
Softmax splattingを用いた、特徴量マップのワープは下式によって定義されます。
ここで、
Symmetric splatting
一般的に、速度場
本手法では、未知の領域に有効なテクスチャ情報を提供するために、Symmetric splattingという方法を用います。この手法では、下図のように、通常の現在から未来への特徴量マップシーケンスと、速度場を反転して生成した過去から現在への特徴量マップシーケンスを、各フレームにおいて合成することで、穴の少ない、密な特徴量マップシーケンスを生成することができます。

これまで説明した動画生成のプロセスでは、エンコードされた特徴マップ
Looping
ここでは、生成した動画の最初と最後のフレームが同一となり、動画が滑らかにループするための工夫について述べます。
図4からわかる通り、2つの特徴量マップ列
実装詳細
ここでは、ネットワーク構造と学習方法の詳細について説明します。
ネットワーク構造
本手法で用いる、特徴量のエンコーダ、デコーダネットワークは、SynSin[4]のアーキテクチャを用いています。SynSinは単一画像を入力として新規の視点からの画像を生成するGANベースのモデルとなっています。下図に、SynSinの概要を示します。

SynSinでは、上図のProjection stepにおいて、デコードした特徴量マップ
また、速度場推定ネットワークは、Pix2PixHD[5]で提案されたアーキテクチャを用いています。
学習方法
学習データとして、滝、乱流、波の流れなどの流体テクスチャを持つ自然なシーンの1196の動画を収集し、処理しています。速度場の正解データは、PWC-Net[6]と呼ばれる既存のオプティカルフロー推定器を用いて、2秒間のウィンドウにおける隣接フレーム間のオプティカルフローの平均を計算したものを使用しています。
学習時は下図のように、ビデオクリップの最初のフレーム

各ネットワークの学習は個別に行われます。つまり、まず初めに速度場推定ネットワークの学習が行われ、次に速度場の正解データを用いてエンコーダおよびデコーダネットワークの学習が行われます。最後に、2つのネットワークを組み合わせたend-to-endの学習が行われます。
2つのネットワークの損失関数は、どちらもL1損失関数のような計測的なロスと、Discriminatorによるロスを組み合わせたものを使用しています。
結果
本手法の解説動画および、既存研究との比較動画を以下に記載いたします。
動画を見ていただくと分かる通り、非常に注意深く観察しても、本物か生成された動画のどちらなのか判断がつかないくらい説得力のある動画を生成することに成功しています。
まとめ
今回は、水の流れや煙のような流体運動を含むシーンの1枚の静止画像から、リアルなループ動画を生成する手法を紹介しました。静止画像から動画を生成する研究としては、今回紹介したものの他にも、入力画像内の周期的な構造を自動で検出してループ動画を生成する研究[7]や、人物やキャラクターを含む静止画から3Dモデルを作成してアニメーションさせる研究[8]など様々な方向から取り組みが進められています。興味がある方はぜひそちらもご参照ください。
参考文献
- Aleksander Holynski, Brian Curless, Steven M. Seitz, Richard Szeliski. Animating Pictures with Eulerian Motion Fields arxiv:2011.15128
- OpenCVでとらえる画像の躍動、Optical Flow – Qiita
- Simon Niklaus, Feng Liu. Softmax Splatting for Video Frame Interpolation arxiv:2003.05534
- Olivia Wiles, Georgia Gkioxari, Richard Szeliski, Justin Johnson. SynSin: End-to-end View Synthesis from a Single Image arxiv:1912.08804
- Ting-Chun Wang, Ming-Yu Liu, Jun-Yan Zhu, Andrew Tao, Jan Kautz, Bryan Catanzaro. High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs arxiv:1711.11585
- Deqing Sun, Xiaodong Yang, Ming-Yu Liu, Jan Kautz. PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume arxiv:1709.02371
- Tavi Halperin, Hanit Hakim, Orestis Vantzos, Gershon Hochman, Netai Benaim, Lior Sassy, Michael Kupchik, Ofir Bibi, Ohad Fried. Endless Loops: Detecting and Animating Periodic Patterns in Still Images arxiv:2105.09374
- Chung-Yi Weng, Brian Curless, Ira Kemelmacher-Shlizerman. Photo Wake-Up: 3D Character Animation from a Single Photo arxiv:1812.02246
