(2023、3D シーン ジェネレーター Infinigen) 手続き型生成を使用した無限にリアルな世界

手続き型生成を使用した無限の PhotorealisticWorlds

公式アカウント:EDPJ

目次

0. 概要

1 はじめに

2.関連作品

3. 方法

4. 実験 

参考

S. まとめ

S.1 主なアイデア

S.2メソッド

S.3 シーンの生成


0. 概要

自然界のリアルな 3D シーンのプロシージャル ジェネレーターである Infinigen を紹介します。Infinigen は完全に手続き型です。形状からテクスチャに至るまで、すべてのアセットはランダムな数学的ルールを使用して最初から生成され、外部ソースを使用せず、無限のバリエーションと組み合わせが可能です。Infinigen は、植物、動物、地形、火、雲、雨、雪などの自然現象を含む、自然界のオブジェクトやシーンを幅広くカバーしています。Infinigen を使用すると、オブジェクト検出、セマンティック セグメンテーション、オプティカル フロー、3D 再構成など、幅広いコンピューター ビジョン タスク用の無限の種類のトレーニング データを生成できます。私たちは、Infinigen がコンピューター ビジョン研究やそれ以外の分野でも役立つリソースになることを期待しています。ビデオ、コード、事前生成データについては、infinigen.org にアクセスしてください。

1 はじめに

データ、特に大規模なラベル付きデータは、コンピューター ビジョンの進歩の主要な原動力となっています。同時に、多くの重要な視覚タスクには高品質のデータが依然として不足しているため、データも大きな課題です。実際の画像に対して正確な 3D グラウンド トゥルース ラベルを取得するのは難しいため、これは 3D ビジョンに特に当てはまります。

コンピュータ グラフィックスからの合成データは、このデータの課題に対する有望な解決策です。高品質のラベルを使用して合成データを無期限に生成できます。合成データは幅広いタスクで使用されており、3D ビジョンでは顕著な成功を収めており、合成データでゼロショットでトレーニングされたモデルは実際の画像でも良好に実行できます。

その期待にもかかわらず、合成データは実際の画像ほどコンピューター ビジョンで使用されていません。私たちは、主な理由は 3D アセットの多様性が限られていることであると仮説を立てています。合成データを最大限に活用するには、現実世界の多様性と複雑さを捉える必要がありますが、既存の自由合成データセットは、ほとんどの場合、かなり狭いオブジェクトのセットに限定されています。および形状、通常は運転シーンや屋内環境にある人工物です。

この研究では、特に自然界のオブジェクトやシーンについて、合成データの対象範囲を大幅に拡大することを目指しています。自然界のリアルな 3D シーンのプロシージャル ジェネレーターである Infinigen を紹介します。Infinigen は、次の機能を組み合わせているという点で、既存の合成データ ソースと比較して独特です

  • プロシージャル: Infinigen は、3D アセットや合成画像の有限なコレクションではなく、形状、テクスチャ、マテリアル、シーンの異なる組み合わせを無限に作成できるジェネレーターです。形状からテクスチャに至るまで、すべてのアセットは完全に手続き型であり、無限のバリエーションと組み合わせを可能にするランダム化された数学的ルールに従って最初から生成されます。これは、外部資産に依存するデータセットまたはデータセット ジェネレーターとは区別されます。
  • 多様性: Infinigen は、植物、動物、地形、火、雲、雨、雪などの自然現象を含む、自然界のオブジェクトやシーンを広範囲にカバーしています。
  • リアリズム: Infinigen は非常にリアルな 3D シーンを作成します。粗い構造だけでなく、ジオメトリやテクスチャの細かいディテールも手続き的に生成され、高度なリアリズムが得られます。
  • リアルなジオメトリ:テクスチャ マップを使用してジオメトリの詳細を偽装するビデオ ゲーム アセット (たとえば、でこぼこに見えるが実際は平らな表面など) とは異なり、Infinigen のすべてのジオメトリの詳細は本物です。これにより、3D 再構成タスクの正確な幾何学的グラウンド トゥルースが保証されます。
  • 無料でオープン ソース: Infinigen は、無料でオープン ソースのグラフィック ツール Blender 上に構築されています。Infinigen のコードは、Blender と同様に GPL ライセンスの下で自由に配布されています。誰でも無制限のアセットとレンダリングを備えた Infinigen を自由に使用できます。

インフィニジェンが自然界に焦点を当てるのには 2 つの理由があります。

  • まず、地質調査、ドローンナビゲーション、生態モニタリング、救助ロボット、農業オートメーションなど、多くのアプリケーションでは自然物体の正確な認識が必要ですが、既存の合成データセットでは自然界をカバーできる範囲が限られています。
  • 第 2 に、強力な「基本モデル」 (人間の視覚システムは完全に自然界で進化したもの) を事前にトレーニングするには自然界だけで十分であると仮定します。人工物にさらされる必要はありません。

Infinigen はさまざまな面で役立ちます。

  • オブジェクト検出、セマンティック セグメンテーション、姿勢推定、3D 再構成、ビュー合成、ビデオ生成など、さまざまなコンピューター ビジョン タスクのための無制限のトレーニング データ ジェネレーターとして機能します。
  • ユーザーは各 3D シーンの背後にあるすべての手順ルールとパラメータにアクセスできるため、Infinigen を簡単にカスタマイズして、さまざまなタスク固有の現実的な値を生成できます。
  • Infinigen は、物理ロボットや仮想エンティティ エージェントをトレーニングするためのシミュレート環境を構築するために使用できる 3D アセット ジェネレーターとしても使用できます。
  • 同じ 3D アセットは、3D プリント、ゲーム開発、仮想現実、映画制作、一般的なコンテンツ作成にも使用できます。

私たちは、プロシージャル生成に役立つ多くのプリミティブを提供するグラフィックス システムである Blender 上に Infinigen を構築しました。これらのプリミティブを使用して、広範囲の自然物体やシーンをカバーする手続きルールのライブラリを設計および実装します。さらに、手続き型ルールの作成を容易にし、すべての Blender ユーザー (非プログラマーを含む) が貢献できるようにするユーティリティを開発しました。これらのユーティリティには、Blender ノード グラフ (Blender アーティストがよく使用する) を直感的な視覚表現に自動的に変換するトランスレーターが含まれています。プログラム ルール) を Python コードに変換します。また、合成画像をレンダリングし、深度、オクルージョン境界、表面法線、オプティカル フロー、オブジェクト クラス、バウンディング ボックス (バウンディング ボックス)、インスタンス セグメンテーションなどの共通のグラウンド トゥルース ラベルを抽出するユーティリティも開発します。Infinigen の構築には、多くのソフトウェア エンジニアリングが必要でした。Infinigen コードベースの最新の主要ブランチは、40,485 行のコードで構成されています。

この論文では、私たちの手続きシステムについて詳しく説明します。また、生成された合成データの品質を検証するための実験も行っています。私たちの実験では、Infinigen からのデータが、特に自然物体のカバー範囲のギャップを埋めるのに実際に役立つことが示されています。最後に、生成プロセスの詳細な分析を含む、計算コストの分析を提供します。

私たちは、Infinigen がコンピューター ビジョン研究やそれ以外の分野でも役立つリソースになることを期待しています。今後の取り組みでは、コミュニティ全体とのオープンソース コラボレーションを通じて、Infinigen をビジュアル世界のほぼすべてをカバーするまで拡大するアクティブなプロジェクトにするつもりです。 

2.関連作品

コンピュータ グラフィックスからの合成データは、コンピュータ ビジョンで幅広いタスクに使用されています。包括的な調査については [65] を参照してください。以下では、アプリケーション ドメイン、生成方法、アクセシビリティに従って既存の作品を分類します。表 1 に詳細な比較を示します。

アプリケーションフィールドさまざまなドメインをカバーするために、包括的なデータセットまたはデータセット ジェネレーターが開発されています。

  • 構築された環境、特にインテリアと都市のシーンは、既存の作品の大部分でカバーされています。構築環境の合成データの重要なソースは、AI2-THOR、Habitat、BEHAVIOR、SAPIEN、RLBench、CARLA などの組み込み人工知能用のシミュレーション プラットフォームです。
  • TartanAir や Sintel などの一部のデータセットには、建築環境と自然環境が混在しています。
  • FlyingThings、FallingThings [86]、および Kubric [24] など、実際のシーンをレンダリングせず、単純な背景上に (主に人工の) オブジェクトを散在させるデータセットも存在します。
  • 合成人間も重要な応用分野であり、顔、ポーズ、アクティビティを理解するための高品質の合成データを生成します。 
  • 一部のデータセットは、ノンリジッド再構成、ビュー合成、6D ポーズなどのオブジェクト中心のタスクを実行するために、シーン全体ではなくオブジェクトに焦点を当てています。

既存の作品では取り上げられる範囲が限られている自然物や自然風景に焦点を当てます。自然物体は多くの既存のデータセット (都市部の運転など) に出現しますが、それらはほとんどが周縁部に位置しており、多様性は限られています。 

メソッドを生成しますほとんどの合成データセットは、外部ソースまたは社内で作成された 3D アセットの静的ライブラリを使用して構築されます。静的ライブラリの欠点は、合成データが過学習になりやすいことです。

  • プロシージャル生成には、いくつかの既存のデータセットまたはジェネレーターが含まれますが、範囲は制限されています。プロシージャル生成は、オブジェクトの配置またはオブジェクトのサブセット、たとえば、車のない建物や道路のみにのみ使用できます。
  • 対照的に、Infinigen は、外部リソースに依存せず、形状からテクスチャ、マクロ構造からミクロの詳細に至るまで完全に手続き型です。

アクセシビリティ合成データセットまたはジェネレーターは、最大限のアクセシビリティを備えている場合、つまり、アセットやコードへの自由なアクセスを提供し、使用制限が最小限である場合に最も役立ちます。ただし、最大限にアクセスできる既存の作品はほとんどありません。多くの場合、レンダリングされたイメージが提供されますが、基礎となる 3D アセットは利用できないか、無料であるか、または重大な使用制限があります。また、プログラムによって生成されたコード (存在する場合) も通常は利用できません。

Infinigen は、最大限のアクセシビリティを実現するように設計されています。そのコードは GPL ライセンスの下で利用可能です。誰でも自由に Infinigen を使用して無制限のアセットを生成できます。

3. 方法

手続き型生成手続き型生成とは、共通のルールとシミュレーターを介してデータを作成することを指します。アーティストは木の構造を目で見て手動で作成できますが、手続き型システムは構造と一般的な成長をエンコードすることで無限の木を作成します。手続き型ルールの開発は、コンパクトな数学言語を使用した世界モデリングの一形式です。

ブレンダーの基本私たちは主に、さまざまなプリミティブとユーティリティを提供するオープンソース 3D モデリング ソフトウェアである Blender を使用してプログラムのルールを開発しました。Blender はシーンをポーズ オブジェクトの階層として表します。ユーザーは、オブジェクトの変換、プリミティブの追加、メッシュの編集によってこの表現を変更します。Blender は、最も一般的な 3D ファイル形式のインポート/エクスポートを提供します。最後に、Blender のすべての操作は、Python API を使用するか、オープン ソース コードを調べることによって自動化できます。

より複雑な操作のために、Blender は直感的なノード グラフ インターフェイスを提供します。アーティストは、シェーダ コードを直接編集してマテリアルを定義するのではなく、シェーダ ノードを編集してプリミティブをフォトリアリスティックなマテリアルに結合します。同様に、ジオメトリ ノードは、ポアソン ディスク サンプリング、メッシュ ブール、スクイーズなどの操作を表すノードを使用するメッシュとして定義されます。結果として得られる幾何学的ノード ツリーは、入力パラメータの組み合わせごとに固有の 3D オブジェクトを生成する一般化されたパラメトリック CAD モデルです。これらのツールは直感的であり、3D アーティストによって広く使用されています。

私たちは Blender を頻繁に使用していますが、すべての手続き型モデリングがノード グラフを使用して行われるわけではありません。手続き型生成の大部分は Blender の外部で行われ、Blender と緩やかに相互作用するだけです。

ノード トランスパイラー (ノード トランスパイラー)Infinigen の一環として、プロシージャル モデリングを高速化するための新しいツール セットを開発しました。注目すべき例は、図 3 に示すように、ノード グラフを Python コードに変換するプロセスを自動化するノード トランスパイラーです。生成されたコードはより一般的で、入力パラメーターだけでなくグラフ構造をランダム化することができます。このツールを使用すると、ノード グラフの表現力が向上し、Python または C++ で直接開発された他のプログラム ルールと簡単に統合できます。また、プログラマ以外でもノード グラフを作成して Python コードを Infinigen に提供できるようになります。詳細については、付録 E を参照してください。

ビルダーサブシステムInfinigen は、資産のサブクラス (山や魚など) を生成する専用の確率的プログラムであるジェネレーターで構成されています。それぞれには、ユーザーが制御可能な外部自由度を反映する一連の高レベルのパラメーター (丘の全体の高さなど) があります。デフォルトでは、自然界を反映するように調整された分布からこれらのパラメーターをランダムにサンプリングし、ユーザー入力を必要としません。ただし、ユーザーは Python API を使用してパラメータをオーバーライドし、データ生成をきめ細かく制御することもできます。 

すべての確率的手順には、多くの追加の内部低レベル自由度 (丘上の各点の高さなど) が含まれます。内部および外部の自由度をランダム化すると、無限に生成されるサンプリングが可能なアセットの分布が得られます。表 2 は、人間が解釈できる Infinigen の自由度の数をまとめたものです。ただし、すべてのパラメーターが完全に独立しているわけではないため、これらの数値は過大評価される可能性があることに注意してください。内部自由度を定量化するのは難しいため、外部自由度がシステムの合計自由度の下限として機能することに注意してください。

マテリアルジェネレーター50 種類のプロシージャル マテリアル ジェネレーターを提供しています (図 5)。それぞれは、ランダム シェーダ (色と反射率を指定する) とローカル ジオメトリ ジェネレータ (対応する細かい幾何学的詳細を生成する) で構成されます。 

正確な真のジオメトリを生成する機能は、当社のシステムの重要な機能です。これにより、バンプ マッピングやフォン補間などの多くの一般的なグラフィックス技術が使用できなくなります。どちらも面の法線を操作して詳細な幾何学的テクスチャの錯覚を与えますが、その方法はメッシュとして表現できません。同様に、アーティストは、高解像度のメッシュが存在しないかのような錯覚を与えるために、画像テクスチャやアルファ チャネル マスキングに依存することがよくあります。そのようなショートカットはすべてシステムから除外されます。この区別の具体的な例については、図 4 を参照してください。

地形ジェネレーターフラクタルノイズとシミュレーターからSDF要素を使用して地形を生成しました(図6)。マーチングキューブを使用してグリッドとして評価します。押し出し(押し出し)を繰り返すことで岩を生成し、小さな石を生成するにはBlenderの組み込みプラグインを使用します。FLIP を使用して動的流体をシミュレートし (図 7)、Nishita Sky モデルを使用して太陽/空の光をシミュレートし、Blender のパーティクル システムを使用して天候をシミュレートしました。 

植物および水中オブジェクトのジェネレーター

  • ランダム ウォークとスペース コロニー形成を通じて樹木の成長をシミュレーションし、その結果、さまざまな樹木、低木、さらには一部のサボテンをカバーするシステムが得られます (図 9)。
  • 当社は、差分成長、ラプラシアン成長、反応拡散を使用したさまざまなサンゴ用のジェネレーターを提供しています (図 10)。
  • 幾何学的なノード グラフを使用して、葉 (図 8)、花、海藻、昆布、軟体動物、クラゲを生成します。 

表面散乱ジェネレータ一部の自然環境は、小さな物体が密集して覆われているのが特徴です。この目的を達成するために、1 つまたは複数の既存の資産を高密度レイヤーで結合するいくつかの分散型ジェネレーターを提供します (図 11)。林床の例では、樹木システムから樹木全体を手順に従って破壊することで倒木を生成します。 

スペースの制限のため、上記の具体的な実装の詳細はすべて付録 G に記載されています。 

クリーチャージェネレーター各生物のゲノムはツリー状のデータ構造として表されます (図 12a)。これは、手足が閉じたループを形成していない実際の生き物のトポロジーを反映しています。ノードにはパーツ パラメータが含まれ、エッジにはパーツのアタッチメントが指定されます。図 12 に示すように、5 種類の実際の生物学的ゲノムのジェネレーターを提供しています。生物学的部分をランダムに組み合わせたり、類似したゲノムを挿入したりすることもできます。詳細については、付録 G.6 を参照してください。 

各パート ジェネレーターは、変換されたノード グラフまたは不均一有理基底スプライン (NURBS) のいずれかです。NURBS パラメータ空間は高次元であるため、中心曲線からの偏差からなるロフティングにインスピレーションを得た分解に基づいて NURBS パラメータをランダム化します。ランダムな分布を調整するために、30 の頭と体の例をモデル化し、分布がそれらをサポートしていることを確認しました。 

動的な解像度スケーリング固定カメラ位置を使用して、レンダリング時に各顔のサイズが 1 ピクセル未満になるように、正確な詳細レベルでプロシージャル アセットを評価します。このプロセスを図 14 に示します。ほとんどのアセットでは、これには特定のピクセル サイズのパラメトリック カーブを評価するか、Blender の組み込みサブディビジョンまたは再メッシュを使用する必要があります。地形については、球面座標の SDF ポイント上で立方体の移動を実行します。密に分散したアセット (図 11 のすべてのアセットを含む) の場合は、インスタンス化を使用します。つまり、各タイプの固定数のアセットを生成し、ランダムな変換を使用してシーン内で再利用します。この取り組みは最適化されていませんが、完全なシーンには依然として平均 1,600 万のポリゴンがあります。 

画像のレンダリングとグラウンド トゥルースの抽出Blender の物理ベースのパス トレーシング レンダラーである Cycles を使用して画像をレンダリングします。図 2 に示すように、一般的なタスクのグラウンド トゥルースを抽出するコードが提供されています。 

Cycles は光のフォトンを個別に追跡し、拡散反射と鏡面反射、透明な屈折、体積効果を正確にシミュレートします。ピクセルあたり 10,000 個のランダム サンプルを使用して 1920 × 1080 の解像度でレンダリングします。これは、ブレンダー アーティストの標準であり、最終画像にサンプリング ノイズがほとんどないことを保証します。

以前のデータセットは、高密度のグラウンド トゥルースを実現するために Blender の組み込みレンダリング パスに依存していました。ただし、これらのレンダー パスはレンダリング プロセスの副産物であり、ニューラル ネットワークのトレーニングには使用されません。具体的には、半透明のサーフェス、体積効果、モーション ブラー、フォーカス ブラー、サンプリング ノイズなどが原因で不正確になることがよくあります。これらの質問の例については、付録 C.2 を参照してください。 

代わりに、ブレンダーに依存せずにメッシュから直接サーフェス法線、深度、オクルージョン境界を抽出する OpenGL コードを提供します。このソリューションには精度以外にも多くの利点があります。ユーザーは、レンダリングされるかどうかに関係なく、自分のタスクに関係のないオブジェクト (水、雲、その他のオブジェクトなど) を除外できます。また、Blender はオクルージョン ボーダーなどの多くのアノテーションをサポートしていないようです。最後に、私たちの実装はモジュール式であり、ユーザーがコード ベースの単純な拡張を通じて、上記で説明されていないタスク固有のグラウンド トゥルースを生成することが期待されます。

実行時間2 つの Intel(R) Xeon(R) Silver 4114 @ 2.20GHz CPU と 1 つの NVidia-GPU で 1000 回の独立したトライアルで Infinigen のベンチマークを行いました。1080p 画像のペアを生成するのにかかる所要時間は 3.5 時間です。統計を図 15 に示します。

4. 実験 

Infinigen を評価するために、補正されたステレオ マッチングのためのグラウンド トゥルースとともに 30,000 個の画像ペアを生成します。これらの画像で RAFTStereo を最初からトレーニングし、ミドルベリー検証 (表 3) とテスト セット (図 16) の結果を比較します。野生の自然写真の定性的結果については、付録を参照してください。

参考

Raistrick A、Lipson L、Ma Z 他 プロシージャル生成を使用した無限のフォトリアリスティックな世界[C]//コンピューター ビジョンとパターン認識に関する IEEE/CVF 会議の議事録。2023: 12630-12641。

[65] セルゲイ1世ニコレンコ。深層学習用の合成データ、第 174 巻。Springer、2021 年。

S. まとめ

S.1 主なアイデア

著者は、自然界の現実的な 3D シーンのための手続き型ジェネレーターである Infinigen を提案しています。これは、無限のさまざまな形状、テクスチャ、マテリアル、シーンの組み合わせを作成できるジェネレーターであり、形状からテクスチャまでのすべてのアセット (資産) が生成されます。ランダムな数学的ルールによってゼロから作成され、外部ソースを使用せず、無限のバリエーションと組み合わせが可能です。

S.2メソッド

手続き型生成:共通のルールとシミュレーターを通じてデータを作成します。アーティストは木の構造を目で見て手動で作成できますが、手続き型システムは構造と一般的な成長をエンコードすることで無限の木を作成します。

Infinigen は Blender 上に構築されています。

Blender : 手続き型生成に役立つ多くのプリミティブを提供するグラフィック システム。これらのプリミティブを使用して、著者らは、広範囲の自然物体やシーンをカバーする手続きルールのライブラリを設計および実装します。

Blender はシーンをポーズ オブジェクトの階層として表現します。ユーザーは、オブジェクトの変換、プリミティブの追加、メッシュの編集によってこの表現を変更します。

より複雑な操作のために、Blender は直感的なノード グラフ インターフェイスを提供します。アーティストは、シェーダ コードを直接編集してマテリアルを定義するのではなく、シェーダ ノードを編集してプリミティブをフォトリアリスティックなマテリアルに結合します。

ノード トランスパイラー:著者は、手続き型ルールの作成を容易にし、すべての Blender ユーザー (非プログラマを含む) が貢献できるようにするユーティリティも開発しました。これらのユーティリティには、Blender ノードを自動的にグラフ (手続き型ルールの直観的な視覚表現) に自動的に変換するトランスパイラーが含まれています。 Blender アーティストによって使用される) は Python コードに変換されます。生成されたコードはより一般的で、入力パラメーターだけでなくグラフ構造をランダム化することができます。このツールを使用すると、ノード グラフの表現力が向上し、Python または C++ で直接開発された他のプログラム ルールと簡単に統合できます。

S.3 シーンの生成

シーン生成プロセスを上の図に示します。合計 4 つのステップがあります。

  • 複合シーンのレイアウト: 主にシーンの背景
  • 各メッシュ面の色を表示しながら、必要なすべてのアセットを生成します
  • プロシージャルマテリアルに置き換える
  • フォトリアリスティックな画像のレンダリング

おすすめ

転載: blog.csdn.net/qq_44681809/article/details/131346207