1.はじめに
以前、1枚の画像からドローンで空撮したような動画を生成する 3D-Ken Burns Effect をご紹介しましたが、これはあくまでも短時間に限定したものでした。今回、ご紹介するのは、1枚の画像からドローンで空撮したような動画を無限に生成できる Infinite nature という技術です。
*この論文は、2020年12月に提出されました。
2.Infinite nature とは?
Infinite nature とは、海岸線にドローンを飛ばして空撮したような画像のデータセットを学習させると、1枚の画像から自動で空撮動画を生成するモデルです。
そのためには、現在のフレームを新しいビューポイントからレンダリングするだけではなく、現在は見えていないが新規追加する処理(インペイント)、現在は見えているが削除する処理(アウトペイント)、拡大部分の詳細を追加する処理(超解像)を行う必要があります。
下記は、Infinite nature のフローです。まず、Render では、視差を利用して現在のフレームを新しいビューポイントからレンダリングします。次に、Refineでは、インペイント・アウトペイント・超解像をGANの手法を使って行い、新たなコンテンツを合成します。そして、Repeart でそれらを繰り返します。
各プロセスは微分可能なので、データセットを使って誤差逆伝播を行えばパラメータの最適化が可能なわけです。
では、コードを動かしてみましょう。
3.コード
コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。
Google が公式に出している Google Colab もあるのですが、インタラクティブ再生のスピードがあまりにも遅くて臨場感がないので、再生したフレームを保存しておいて後で動画にすることで、爽快なスピードで再生ができるように改造しました。
今回は、コードを非表示にしています(必要があればセルをクリックするとコードは見えます)ので、シンプルです。セットアップは下記[1]〜[4]を順番にクリックするだけです。
次に、ビデオ生成です。まず、「1.静止画保存フォルダークリア」を実行し、そして「2.インタラクティブデモ(静止画自動保存)」を実行します。
そうすると、下記のようなインタラクティブ再生画面になるので、スタート画面を 「IMAGE1」,「 IMAGE2」,「 IMAGE3」 の中から選択して、「PLAY」を押すと自動再生が始まります(遅いですが)。画面が切り替わるタイミングで、画像が ./pic に自動保存されます。
色々試した後で気に入ったものが見つかったら、「PAUSE」で止めて再度「1.静止画保存フォルダークリア」を押して、./pic をクリアします。そして、「RESET」、「PLAY」と押せばOKです。
進行方向が赤字の+で表示されていますので、必要に応じてマウスで進行方向の調整が可能です。画面左下にある赤枠で囲まれた数字は現在保存している最新のフレームナンバーを表示します。
必要なフレーム数に達したら「PAUSE」を押して再生を止めます。「3.静止画からmp4動画を作成」を実行すると ./pic に保存されている静止画からmp4を作成します。最後に、「4.mp4動画の再生」を実行すれば、爽快なスピードで動画が再生されます。
では、また。
(オリジナルGithub) https://github.com/google-research/google-research/tree/master/infinite_nature
速度を落とすにはどうすれば良いでしょうか。
また、他に変えられる点はありますか。
田中さん
コメントありがとうございます。
速度を落とすには、まず ビデオ生成/3.静止画からmp4動画を作成 の部分をダブルクリックします。そうすると、コードが現れます。その中の ! ffmpeg -r 10 -i pic/%6d.png\ の行の -r 10 の10がフレームレート(フレーム/秒)なので、この数字を小さくします。
ffmpeg はgoogle colab にインストール済みなのでインポートするだけで使えます。静止画を動画にする場合にも動画を変換する場合にも、様々オプションがありますので、「ffmpeg」でググってチェックしてみて下さい。