写真から 3D 空撮画を生成する「Infinite Nature」を紹介!

写真から 3D 空撮画を生成する「Infinite Nature」を紹介!

 PC 上で雄大な風景の 3D 空撮動画を生成します。現状の方法では限られたカメラの動きしか出来ませんが Infinite Nature は違います。 Infinite Nature は任意の方向にリアルな 3D 空撮画を生成します。

概要

 「 Infinite Nature 」は、写真からリアルな3D動画を生成します。 ECCV2022 で発表された最新の「 InfiniteNature-Zero 」は、1枚の静止画から高解像度・高品質の空撮動画を生成できます。しかし通常1枚の写真から、そのシーンを通る任意の長い 3D 経路に対応するリアルな空撮動画を生成するのは見えない部分があったりするので非常に困難です。ではどうやって生成しているのでしょうか?
 

Infinite Nature-Zero で生成した空撮画例

 1枚の自然風景の画像から、その中に飛んでいく長いカメラ軌道を合成します。そして新しい風景コンテンツを生成しながら進みます。

背景

動画から 3D 空撮動画を学習する

 ICCV 2021 で発表された「 Infinite Nature : Perpetual View Generation of Natural Scenes from a Single Image 」が最初のバージョンです。このときは、海岸線に沿って飛行するドローンで撮影したオンラインビデオのセットを収集すれば、これらの実際のビデオに類似した新しい空撮画を合成し学習できると考えました。しかし、任意の 3D カメラ軌道に動的に反応するシーンを合成する方法を学習するためには、これらの動画を単にピクセルの生の集まりとして扱うだけでなく、各フレームのカメラ位置を含む基本的な 3D 幾何学を計算する必要がありました。そこで空撮画生成方法を段階的に学習していくことにしました。

 下の1枚目の画像のように、まず単一画像深度予測法を用いて深度マップを計算します。次にその深度マップを用いて中央の新しいカメラ視点で画像を前方にレンダリングし、新しい視点からの新しい画像と深度マップを生成します。しかしこの中間画像にはいくつかの問題があります。開始時の画像では見えなかった対象の背後にある領域に穴が見えたりします。これは物体に近づいたにもかかわらず前のフレームのピクセルを引き伸ばして大きくなった物体をレンダリグしているためです。

 このような問題を解決するためにニューラル画像処理ネットワークを学習し、前記の低品質の中間画像から、完全で高品質な画像とそれに対応する深度マップを出力します。そしてこの合成された画像を新たな出発点として、このステップを繰り返し行い画像と深度マップの両方を改良します。カメラが奥に進むにつれて、山、島、海などの新しい風景を生成するようにシステムが自動的に学習します。

 

 Infinite Nature の手法では、まず入力された風景とそれに対応する深度マップを受け取ります(左)。この深度マップを用いて、入力画像を新たに希望する視点にレンダリングします(中央)。この中間画像には前景のコンテンツの背後にあるピクセルが見えないなどの問題があります(マゼンタで表示)。この画像を深層学習で学習し新たな高品質な画像を生成します(右)。このプロセスを繰り返すことで長い軌跡のような画像を生成することができます。この手法を「 render-refine-repeat 」と呼んでいます。

 まず ACID ( Aerial Coastline Imagery Dataset ) と言う空撮海外線データセットを用いて学習します。特にデータセットから動画をサンプリングし、その動画から1フレームをサンプリングします。次にこの方法を用いて下図に示すように、実際の映像と同じカメラの軌道に沿ってシーンを移動する複数の新しい風景をレンダリングし、これらのレンダリング・フレームを対応する実際の映像フレームと比較して学習させます。また合成されたフレームを実画像と区別するための敵対的な設定も含まれており、生成された画像がよりリアルに見えるようしています。

 Infinite Nature は任意のカメラ軌道に対応した風景を合成することができます。学習時には学習用ビデオシーケンスから計算されたカメラの軌道に沿って T 個の風景を生成するためにシステムを T ステップ実行し、得られた合成風景を実際の地形の風景と比較します。図では各カメラ視点は、ワープ操作 R とニューラル微調整操作 gθ を行うことによって前のカメラから生成されています。

Infinite Nature-Zero : 静止画から空撮画を学習

 最初に問題となるのは、学習データとして動画を用いるのが難しいことです。また、映像の 1 コマ 1 コマの美しさは、実際に撮影された自然写真には及びません。そこで「 Infinite Nature-Zero: Learning Perpetual View Generation of Natural Scenes from Single Images 」では、上記の Render-Refine-Repeat をベースに静止画のコレクションから永続的な風景合成を学習する方法を考案しています。この方法は「ゼロ」の動画から学習するため、Infinite Nature-Zero と呼んでいます。一枚の写真からどうやって空撮画を生成するモデルを学習させられるのでしょうか?
 この問題を解決するために、最後の画像が最初の画像と同じ視点からのものであるようにカメラパスがループする場合、このパスに沿って最後に合成された画像は入力画像と同じでなければならないということです。
 このようなサイクルの一貫性は、風景生成の各ステップにおいて、モデルが欠落した領域を埋め、画像の解像度を上げる学習するのに役立っています。しかしこのようなカメラサイクルによる学習は、長く安定した風景シーケンスを生成するには不十分です。そこで上図のような長く非周期のカメラパスを考慮する敵対的戦略を含んでいます。特に開始フレームから T フレームをレンダリングする場合、識別ネットワークにおいてどれが開始フレームでどれが最終合成フレームかを識別できないように、 render-refine-repeat model を最適化します。最後に高品質な空の領域を生成するよう学習させたコンポーネントを追加し、合成結果のリアル感を向上させます。

 そこでネット上に大量にある風景写真のコレクションで InfiniteNature-Zero を学習させました。これらの動画は、多様な自然風景を任意の長さのカメラ軌道で探索することができます。その結果、以前の研究に比べてコンテンツの品質と多様性において大幅な改善を示しています。

nfiniteNature-Zero が 1 枚の写真から生成した自然界のフライスルーの数々

最後に

 Infinite Nature は非常に将来性があります。例えばこの手法は現在、前のフレームとその深度マップのみに基づいてシーンのコンテンツを合成しており、永続的な基礎となる3D表現は存在しません。つまり Infinite Nature はリアルで一貫性のある 3D 世界を生成することができる将来のアルゴリズムに向けたものになっているからです。

上記はこちらの論文の内容となります。
https://arxiv.org/abs/2012.09855