※本記事は、Matthias Niessner氏による講演「3D生成モデル」の内容を基に作成されています。本講演は「GCV @ CVPR 2026」の一環として行われたものであり、動画の詳細情報は https://www.youtube.com/watch?v=ZFE-W7JMoLQ でご覧いただけます。本記事では、講演の内容を要約しております。なお、本記事の内容は原著作者の見解を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの動画をご視聴いただくことをお勧めいたします。
1. イントロダクション:3D生成における4つのアプローチ
1.1 データ取得という中心課題と4つの手法分類
皆さん、よろしくお願いします。私はこのトピックを大きく4つの異なる部分に分類して整理しています。まず主軸となるお話をする前に申し上げておきたいのは、この分野で一番根本的に難しい部分は、データを取得することそのものだということです。3Dのデータをどうやって手に入れるか、これがすべての手法の性格を決めていると言っても過言ではありません。
1つ目のアプローチは、2Dや動画から蒸留してくる方法です。具体的には、2Dの動画モデルや画像モデルに対して3D再構成を実行するというやり方になります。これは非常に有望だと私は考えていまして、理由は単純で、利用できるデータの量が圧倒的に多いからです。ただし、この方法には間接的であるという弱点があります。つまり、実際に3Dを生成するためには、後段で後処理的な再構成ステップを挟む必要があるということです。
2つ目のアプローチは、フィードフォワードで学習する方法です。VGGのようなスタイルのモデルを想像していただければと思いますが、こうしたモデルを使ってフィードフォワードに3Dを生成することができます。ただ、この方法では突然、ground truthのデータが必要になってきます。少なくとも深度データや2Dのデータをground truthとして用意しなければならないという制約が生じます。
3つ目のアプローチは、3D空間上で直接、拡散モデルやフローマッチングを行う方法です。この方法についても同様に、3Dのground truthデータが必要になります。
そして4つ目、これが今回の講演で少し新しい観点としてお話ししたい部分になるのですが、3D空間における自己回帰的な次トークン予測です。画像や動画のモデルにおいては、こうしたアイデアはすでにいくつも見てきていると思いますが、3Dの領域ではまだそれほど活用が進んでいないというのが現状です。
今日の講演では、この自己回帰的な次トークン予測を中心とした新しいアイデアについて簡単にご紹介し、皆さんが今後この方向性を発展させていくためのヒントになればと考えています。あわせて、私たちが3D生成AIに取り組み始めた最初期のステップについてもご紹介したいと思います。これは2017年に発表した形状補完の手法で、私たちにとって3D生成AIの最初の論文にあたるものです。
2. 3D生成AIの黎明期:形状補完から3D拡散モデルへ
2.1 2017年の形状補完手法とShape as Vector(2023年)
私たちが3D生成AIに最初に取り組んだのは2017年のことで、これは形状補完の手法でした。今振り返ると本当に古典的なやり方で、まず符号付き距離場を使います。部分的な形状を入力として与えて、それを補完するというタスクです。ボクセルグリッド上で処理を行い、お気に入りの畳み込みネットワークを走らせるだけで、トランスフォーマーもなければ拡散モデルもない、損失関数もL1損失のみというシンプルな構成でした。それでも、それなりのことはできていたと思います。これが私たちにとって生成AIへの最初の一歩でした。
ただ、もちろんそこからもっと複雑なことができるようになっていきます。ここで紹介したいのは、実際にほとんどの作業を担当してくれたPeterという、この会場にも来ている博士課程の学生の研究です。私たちはメッシュに対して直接拡散モデルを走らせることができるようになりました。当時は3Dで何をするにも本当にさまざまな実験が行われていた時期で、2Dの世界と同じようにGANを試す人たちもたくさんいました。しかし、GANを3Dに適用する試みは、私の見る限りうまくいったことがほとんどありませんでした。その一方で、拡散モデルは非常にうまく機能することが分かり、これはかなり画期的なことだったと思います。
そこで生まれた最初期の手法の一つが、いわばPLの手法、つまり「Shape as Vector」というアイデアです。これは入力形状をシーケンスへと圧縮し、それを大きめの現代的なアーキテクチャでデコードするという発想です。そうすることで、お気に入りの拡散損失をすべて使えるようになります。これは2023年の研究で、その後この方向性に対して数多くの追随研究が生まれています。アーキテクチャについても、現代的なトランスフォーマー構造をはじめとして様々なバリエーションが考えられますし、エンコードの仕方についても、点群を使うのか、符号付き距離場を使うのか、といった選択肢がいくつも存在します。結局のところ、常に問題になるのは、このトークン化と圧縮をどう行うかということです。この点にはさまざまなバリエーションがありますが、2023年当時としては、この手法はかなりインパクトのあるものだったと思います。
このモデルは比較的大きなモデルを使い、個々の形状単位で学習を行っており、得られる再構成結果は点群のような形で出力されます。これらの再構成は形状単位で見るとかなり良好な質を示しており、様々な形状に対して試してみても良い結果が得られています。私自身、これが3D形状生成というものが実際にうまく機能した最初の事例だったと感じています。これが、いわば第一世代の3D拡散モデルということになります。当時の代表的なベースラインであったShapeFormerとの比較でも、この手法は当時としてはかなり優れた結果を示していました。そして2023年以降、この分野は急速に進化を遂げていくことになります。特にスケーラビリティの向上が大きな推進力となりましたし、シーン表現の面でも、点群やメッシュに加えて、ガウシアンやNeRFといった新しい表現方法が長く使われるようになってきました。こうした新しい表現をうまく活用してこの流れを継続できないか、というのが次に考えるべき問いになります。
3. シーンスケールへの拡張:Latent 3D Scene Diffusion
3.1 TUDFと潜在木構造によるシーン全体の拡散生成
この講演ではいくつかの軸に沿ってお話を広げていきたいと思っていまして、まず最初にお見せしたいのは、オブジェクトからシーンへとどのようにスケールアップしていくかという点です。その次に、外観をどう加えていくか、つまり色を付けて見た目をより良くしていく方法、そして現代的なモデルがこの領域でどこまでのことができるのかをお見せしたいと思います。
まず最初にご紹介する論文は、シーン全体に対して拡散処理を行うものです。これはLatent 3D Scene Diffusionという手法で、TUDF、つまり切断された符号なし距離場の上で動作するという発想に基づいています。ボクセルグリッドを用意し、そこから潜在木を計算します。異なる階層レベルごとに潜在埋め込みを持たせて、この木構造を計算し、その木構造に対してデノイジングを行うという仕組みです。つまり、エンコーダー・デコーダーとデノイジングのステップがあり、デノイジングはこれらの潜在表現に対して行われます。そうすることで、このTUDFを生成していくことができ、この一連の流れをエンドツーエンドで学習することが可能です。この仕組みは、3Dシーンの特定の一部分に対してうまく機能させることができます。
ただ、ここで問題になるのが、3Dシーンには範囲に限りがないということです。画像であれば固定のピクセルサイズがありますが、シーンの場合は常に拡張され得るため、このチャンク分割の仕組みをどう作るかを考えなければなりません。どのようにシーンを拡張していくかを見極める必要があるということです。この手法では、まず単一のチャンク、私たちはこれをパッチと呼んでいますが、この単一パッチに対する潜在木の学習を行います。TUDFがあり、エンコーダーを通して潜在木を得て、デコーダーを通してTUDFに戻すという流れです。そして、より大きなシーンを生成するためには、隣接するパッチ、つまり隣接するチャンクも考慮に入れて条件付けを行う必要があります。具体的には、1つのチャンクを生成し、次のチャンクを生成し、さらにその次のチャンクを生成していくという形で、それぞれのチャンクごとに独立した拡散プロセスが走ることになります。
こうすることで、事実上任意の大きさの3D環境を自己回帰的に生成していくことができます。この手法は3Dのground truthデータを使って学習されていますが、それでもかなりうまく機能します。これは学生プロジェクトとして行われたものですが、産業レベルであればさらに大規模にスケールさせることも十分可能だと考えています。大きなシーンに対してこの手法を適用すると、パッチごとに生成が進んでいく様子が見えます。それぞれの動きが拡散のステップに対応していて、動画では少し早送りにしていますが、実際の拡散処理はまだそれほど高速ではなく、特に単一GPUで動かす場合はなおさらです。それでも、かなり興味深い環境を生成することができ、自己回帰的に非常に大規模なシーンを生成できることが分かります。局所的なディテールについても十分な質が得られていて、これは粗から密へという木構造が適用されている結果です。テスト時には、どこに、何回この処理を適用するかを制御することもできます。
当時最新の手法であったBlockFusion(2023年発表)と、昨年のCVPRで発表した私たちの手法とを比較したところ、より良い再構成、より良い生成結果が得られることを示すことができました。これは3Dシーンにおいて非常に忠実な再構成を達成した最初期の論文の一つだと考えています。
3.2 結果の検証と応用可能性
こうした手法においてしばしば問題になるのが、単にデータを記憶しているだけではないかという懸念です。そこで私たちは、生成されたパッチについて、訓練データセットの中で最も近いものを最近傍探索によって確認するというアブレーションを行いました。その結果、確かに類似している部分もあるのですが、平均的に見るとかなり新規性のある3D部分を生成できていることが分かりました。
このほかにも、確率的なシーン補完を行うことができます。具体的には、シーンの一部(赤い部分)を入力として与え、残りの部分を合成するというものです。この場合、常に同じ入力部分が与えられ、モデルは距離場の拡散によって、まだ見ていない残りの部分をデノイジングして新しいシーンを生成していきます。これはなかなか面白い結果だと思いますし、見た目も良好です。何らかの条件に基づいて複数の仮説を生成し、それをもとに入力を補完するといった使い方もできます。また、実際の3Dスキャンにこれを応用して、部分的な3Dスキャンから形状補完を行うということも少し試してみました。これはRGB-Dのシーン再構成にとってしばしば重要になる要素です。ここでは結果をお見せできませんが、今後の興味深い方向性の一つだと考えています。
このビデオはとても気に入っているのでもう一度お見せしますが、非常に大規模なスケールでもこの手法を適用でき、かなり良好な再構成結果が得られます。ただし、この段階では外観については全く焦点を当てておらず、これは純粋に幾何形状のみです。色の情報は一切持っておらず、この時点では私たちはそこにこだわっていませんでした。非常に高精度な幾何形状の予測を得ることだけを目指していたということです。そして次のステップとして、どうやって外観、つまり色を加えていくかという課題に取り組むことになります。この時点で私たちが直面した本質的な問いは、色を持つシーンを表現するために、そもそも何が適切な表現方法なのかということでした。
4. 外観(色)表現の探求:適切な3D表現の模索
4.1 表現方法の検討とNeRF拡散モデル
さて、色をどうやって加えていくかという話に移りたいと思います。メッシュというのも一つの選択肢であることは明らかで、実際に私たちはメッシュに関する研究もいくつか行っています。ただ、この講演ではその話はしないつもりです。「メッシュこそがすべてだ」というような、少し挑発的な内容の別の講演を用意しているのですが、ここでその話をするのはあまりに議論を呼びそうなので控えておきます。ここでは、規則的なシーンの上に色を格納できる表現を見つける必要があるという点についてお話しします。
このためのアイデアにはいくつかの選択肢があります。まず単純な方法として、ボクセルグリッドを使って各ボクセルに色の値を格納するというやり方が考えられますが、これは解像度が非常に低く、鮮明さに欠けます。そこで、より現代的なアプローチとして、NeRFや3D Gaussian Splatting(3DGS)の上で拡散を行うという方法が考えられます。ここで先に申し上げておきますと、これは明らかにまだ完全には解決されていない問題です。NeRFや3DGS表現の上で拡散を行うというのは、実際にはかなり難しい課題です。その理由を少しお話ししたいと思いますが、主な原因は、入力に応じて異なるNeRFや3DGS表現が得られてしまうという点にあります。
NeRF上でこれを実現した最初期の手法の一つは、当時私の研究室の博士課程学生であったNorman Müllerによるものです。これはまず単一のオブジェクトを対象としたものでした。というのも、私たちは再びオブジェクトの段階に戻って、まずNeRFの上でうまく動作させる必要があったからです。この手法の考え方は、規則的なグリッド上で動作する3D U-Netを使うというものです。このグリッドはradiance(放射輝度)の値をエンコードしており、つまりNeRF表現に対して拡散過程のデノイジングを実行する形になります。3D U-Netを走らせ、拡散プロセスからの時間埋め込みを持たせて、それに応じた3D形状を生成していきます。これは基本的に、画像拡散から3D拡散への類推としてまさに期待される通りのものですが、通常のNeRFのようなMLPの上ではなく、NeRFのグリッド上で動作するという点が異なります。
ただ、これだけではなく、私たちは再レンダリングという工夫も加えています。具体的には、出力を取り出して再レンダリングを行い、その再レンダリングを使って新しい形状を生成することができます。そして、この再レンダリングによる教師ありの学習を行いました。これはまずまずうまくいきました。この手法はオブジェクトに対してはそれなりに良好に機能しましたが、まだ誇れるようなレベルではなく、あくまで最初のステップという位置づけでした。デノイジングの過程についてもお見せしましたが、その後私たちは、NeRFはまだ計算コストが高いという課題を感じるようになりました。そこで、同じことをガウシアンの上で実現できないだろうかと考えるようになったのです。つまり、3D Gaussianの上で拡散プロセスを行うことができないか、というのが次のアイデアでした。
5. Latent 3D Gaussian Diffusion(L3DG):ガウシアンへの拡散適用
5.1 ガウシアンの潜在空間化とコードブック構築
このアイデアについても、まずはオブジェクトを対象に検討を始めました。当時これが私たちのベースラインだったからです。単一のオブジェクトをガウシアンで生成できないだろうかと考えました。ただ、ガウシアン上で拡散を行うというのも実はかなり複雑です。というのも、ガウシアンは3D空間上で不規則な点ベースの構造であるのに対して、拡散プロセスはノイズがどこにあり、そこから何が出てくるのかを把握する必要があるため、固定された領域の上で動作することを好むからです。
そこで、まずはデノイジングのプロセスを実行できるような空間を開発する必要がありました。そのために私たちが開発したのが、Latent 3D Gaussian Diffusionという手法です。学習時にまず行うのは、ground truthとなるガウシアンを大量に生成することです。このケースでは、PhotoShapeというデータセットを使用しました。いくつものビューをレンダリングし、そのビューからガウシアンを生成し、そこから多数の3Dオブジェクトを得ていきます。そして、これらのガウシアンから、まず潜在空間の計算を行います。
このために必要になるのがコードブックです。ちなみに、新しい拡散モデルや自己回帰モデルに取り組む際に一番難しいのは、実はいつもこの部分、つまり適切なコードブックを得ること、言い換えれば、その上に大きなモデルを構築するための適切な表現を得ることなのです。この場合、3Dガウシアンがあり、エンコーダー・デコーダーがあり、量子化されたコードブックを計算したいというのが目標になります。そして、そのコードブックの上でデノイジングプロセスを実行します。ここでも3D U-Netを使い、拡散ステップのための時間埋め込みを持たせて、対応する出力を得ていきます。
ここにはさらにいくつかのアイデアが加わっています。まず密化(densification)と疎化(sparsification)というステップです。密化というのは、ガウシアンの埋め込みを取り出して、それをグリッド全体に分配することを意味します。つまり、まず低解像度の規則的なグリッド構造の上でガウシアンの埋め込みを保持するということです。その後、そこから再び疎化を行い、サンプリング手続きを経て実際のガウシアンを得ていきます。すべての学習が終わった段階で生成を行う際には、純粋なノイズから始めて、この疎な潜在表現をデノイジングしていきます。この段階では表面付近にのみ値が存在する状態になっており、そこからガウシアンのデコーディングを行うことで、最終的に実際の3Dガウシアン表現が得られるという流れです。
この各ステップについてもう少し詳しくお話しします。最初のステップはガウシアンの最適化です。このステップでは、オブジェクトの様々なビューをレンダリングし、それぞれのビューについて各ガウシアンをボクセルに対応付けていきます。これは現時点では少しハック的な処理で、というのも、不規則な点群のままでは拡散を行うのが難しいためです。対応付けを行った後、私たちはこれを疎なグリッドにマッピングします。表面の近くにガウシアンが存在する箇所だけを考慮することで、このように正則化を行っています。この最適化にはいくつかの工夫を加えており、特に、ガウシアンの生成プロセスが予測可能で決定論的になるようにしています。つまり、何度実行しても常に同じ出力が得られるようにしているということで、これは後段のガウシアンプロセスにとって重要になります。この最適化は、標準的なRGB損失とSSIM損失を使って行い、その結果としてガウシアンを出力として得ます。これが、単一オブジェクトに対する、グリッドに整列したガウシアンであり、これをground truthの入力として使用します。
こうしてground truthが得られたら、次に取り組むのがコードブックをどう構築するかという部分です。率直に言って、これは私たちがこれまで手がけてきたすべてのプロジェクトの中で最も難しい部分だと感じています。ここでは、ガウシアンをエンコーダーに入力します。表面上でのみ特徴量を量子化するため、疎なエンコーダーを使用しています。そして、ガウシアンへと戻すデコーダーを用意し、これがエンコーダー・デコーダー構造となります。細かい部分はすべては説明しませんが、このプロジェクトの実に80%の時間が、このエンコーダー・デコーダーをうまく機能させるためのものだったと言ってよく、その後にどのエンコーダー・デコーダーが最も良く機能するか、どの量子化手法が最も良く機能するかを実験していくことになりました。VQ-VAEの学習を行い、知覚損失とRGB損失を用いて再構成を目指しました。これは単にガウシアンを複製するだけでなく、再レンダリングした結果がきちんと妥当なものになっているかも確認するためです。
5.2 オブジェクトからシーンへの結果と比較
このコードブックが得られたら、次にその潜在表現の最上位でデノイジングプロセスを実行します。これは潜在拡散モデルにあたり、比較的容易なプロセスです。学習された特徴グリッドと拡散モデルがあり、まずこれを密なグリッド上に展開し、32の3乗のグリッド上で実行します。ここでは1000ステップのタイムステップを使用し、最後に疎化を行い、その後デコーディングを行います。このデコーディングの部分は密なU-Netの上で実行されるという点が重要です。つまり、拡散モデルの部分は疎なU-Net、デコーディングの部分は密なU-Netという構成になっており、こうすることで3Dにおける解像度のギャップを埋めることができるわけです。
実際にこれを実行すると、見た目としては少し面白いものになりますが、オブジェクトに対してはそれなりにうまく機能します。単一オブジェクトの再構成結果が得られ、Photoshapeの椅子のデータセットで比較したところ、かなり良好な再構成が得られました。また、これらの結果が単にデータセットを複製しているのではなく、十分に新規性のあるものであることも確認しています。
こうしてオブジェクトに対してうまく機能する拡散モデルと潜在表現ができたところで、次に、同じことをシーンに対してもできないかと考えました。シーンについても同様のアプローチを取り、まずシーン全体に対してガウシアンと潜在コードを事前計算し、シーン全体でこのモデルを学習します。これはU-Netであるため、完全な畳み込み形式で実行することができ、かなり大きなシーンにも適用可能です。オブジェクトのときと同様の手法をシーンに適用したもので、まだそれほど大規模ではありませんが、部屋スケールで動作し、かなり良好な再構成が得られています。このモデルは3D-FRONTというデータセットで学習しており、このデータセットは品質面ではそれほど素晴らしいものではありませんが、それでも一定の成果を上げています。
この結果を、初期の段階で比較していたEG3Dや、先ほど紹介したNeRFベースの手法(DiffFacto)と比べると、私たちの手法の品質が生成できる形状の面で明らかに大きく上回っていることが分かります。その理由は単純で、EG3DはGANベースの手法であり、学習が非常に難しいという性質があります。また、NeRFの手法については疎化処理を持っていなかったため、あまり理想的ではありませんでした。それに対してガウシアンのバージョンでは、疎化処理があることでずっと良い見た目の結果が得られ、かなり良好な結果を出すことができました。
そして次に私たちが考えたのは、これは良い結果ではあるものの、まだシーンがかなり小さいという課題でした。私たちはもっと大きなシーンを扱いたいと考え、また、拡散という手法自体が本当に適切なアプローチなのかどうかも検討したいと思うようになりました。そこで、純粋なトランスフォーマーベースのモデルを使って、大きなトランスフォーマーによって空間を一つずつ自己回帰的に予測していくことができないか、という探求へと進んでいくことになります。
6. Gaussian GPT:トークン化とコードブック構築
6.1 自己回帰方式への転換とガウシアンのトークン化
自己回帰的な手法に切り替えることには大きな利点があります。それは、シーンのチャンクに対して特別な処理を一切必要とせずに、無限とも言えるほど大きなシーンを生成できるようになるという点です。ここから、Gaussian GPTというアイデアに至ることになりました。GPTモデルは素晴らしいものですし、LLMも素晴らしい成果を上げています。あとは、ガウシアンを適切にトークン化する方法さえ見つければよいのではないか、と私たちは考えたのです。そして、お気に入りの大きなトランスフォーマーモデルを走らせて、これがGaussian GPTということになります。ガウシアンの埋め込みを用意し、GPTモデルを実行し、予測を行っていく、という流れです。
この仕組みについて簡単にご説明したいと思います。高いレベルで言えば、まずground truthとなるガウシアンが必要になります。これはこれまでと同じ手順です。そして、ここでも一番難しいのがこの最初の部分、つまり圧縮の部分です。この点についてはこの後お話ししますが、私たちがこの領域で取り組んできたどのプロジェクトにおいても、常にこの部分が最も難しい課題であり続けています。適切な圧縮方法、適切なシーン表現を見つけるということ自体に、3Dに関するドメイン知識が非常に重要になってくるのです。2番目の部分は自己回帰的な生成の部分です。コードブックさえ得られれば、あとはこれをほぼGPTモデルのように動かすことができます。つまり、このコードブックという辞書があり、お気に入りのソフトマックスを実行して、次に予測すべきコードブックの要素がどれかを分類していく、という仕組みになります。
まず必要になるのは、ガウシアンを潜在表現に変換することです。この部分、すなわち図の上部にあたる部分ですが、その仕組みは疎な3Dオートエンコーダーを使うというものです。まずガウシアンをボクセル化し、位置オフセット、不透明度、サイズ、回転、色といった情報を格納します。各特徴量に対してエンコーディングヘッドを用意し、これによって適切な結果が得られるようにした上で、疎な3D CNNエンコーダーを実行します。これは実は、先ほどご紹介したL3DGの論文で使用した疎なエンコーダーと非常によく似た構造です。つまり、その疎なエンコーダーを再利用する形で潜在表現を得ているということになります。
この後、どのように量子化を行うか、特徴次元をどれくらいの大きさにするか、コードブックのサイズをどれくらいにするか、といった点について、私たちは実に多くの実験を重ねました。最終的には、それなりにうまく機能する構成にたどり着きました。少し時間が押してきているので、細部については一部省略させていただきますが、主な仕組みとしては次の通りです。まずコードブックがあり、ベクトルZを含む入力をエンコードします。これを、様々なアブレーションに基づいて量子化していきます。基本的には、どの手法が最も良く機能するかを一つずつ検証していくという作業です。そして最終的にコードブックが得られ、これを離散化することで語彙(ボキャブラリー)が得られます。この語彙が得られれば、その上に対応するトップ部分のモデルを走らせることができるようになります。
7. Gaussian GPT:自己回帰生成の仕組みと学習
7.1 トークン系列化と位置エンコーディングの工夫
コードブックが得られたところで、次に取り組むのが2番目の部分、つまりこのコードブックの上を走るGPTモデルです。仕組みとしては、巨大なトランスフォーマーアーキテクチャがあり、トークンと位置エンコーディングを持っています。トランスフォーマーブロックはおおよそ標準的な構成になっていて、基本的には次トークン予測を行います。3Dグリッド上には固定された順序があり、その順序に沿ってトークンを一つずつ、次々に予測していくという形です。空間の中で何もない部分についても、その情報がトークンとしてエンコードされる仕組みになっているため、比較的大規模なシーンに対しても効率的にこの処理を実行することができます。
このトークン化にあたっては、3D空間全体を系列化していく必要があります。この系列化の順序についても、私たちは非常に多くのアブレーションを行い、最適な方法を検討しました。最初はヒルベルト曲線やZフィリング曲線のような、3D空間を埋めていくための曲線を使おうと考えました。実際に試してみると、いくつか異なるバリエーションがあることが分かったのですが、最終的にはXYZ順の走査が最も良い結果を示しました。具体的には、Zを最も重要度の低い軸として扱い、まず各列の高さ方向に沿って上まで進み、その後にXY方向へと進んでいくという方式です。イメージとしては、ある列から始まって一番上まで登り、次の列に移ってまた一番上まで登り、さらに次の列に移って、というのを繰り返していく形になります。実のところ、どの系列化方式を使うかによる違いはそれほど大きくありませんでした。おそらくトランスフォーマー自体が十分に賢く、使用する系列化方式が何であれ、そこから学習できてしまうのだと思います。とはいえ、この点についていろいろと試してみるのは私たちにとってなかなか興味深い作業でした。
最後にもう一つ重要な要素として、回転位置エンコーディング(rotary positional encoding)を導入する必要がありました。これについても様々なアブレーションを行っています。ここでの主な問題は、系列化の順序が必ずしも3D空間上の近接性と一致しなくなってしまうという点です。というのも、途中に何もない空間を挟んで飛び越えてしまうような場合があるためで、そうなると系列上の順序と実際の空間的な距離との間にずれが生じてしまいます。このずれにどう対処するかを考える必要がありました。私たちが最終的に採用したのは、4次元の回転位置エンコーディングです。これによって、位置情報に基づくトークンなのか特徴量に基づくトークンなのかを区別してエンコードし、幾何情報と外観情報を分離することができるようになりました。これによって、この仕組み全体がそれなりにうまく機能するようになったのですが、ここに至るまでにも本当に数多くのアブレーションを重ねる必要がありました。最終的に、この2次元性を持つ回転位置エンコーディングという構成に収束したという経緯です。
7.2 学習設定と指導プロセスにおける経験
最後の部分は、この上での学習の設定です。これは基本的にほぼGPT-2そのものと言ってよい、因果的なトランスフォーマーです。そして、教師強制(teacher forcing)を用いたクロスエントロピー損失による次トークン予測を行います。ここで必要になるのが、トークンの状態に基づいたマスキング処理です。これは、空間の中に何もない部分をどう扱うかという課題に対処するためのものです。これが、Gaussian GPTのおおよその全体像になります。
これは口で説明すると非常にシンプルに聞こえるのですが、私は指導教員という立場からすると、これはある意味で面白い経験でもありました。学生には「これをやってほしい」と伝えただけなのですが、その学生自身が実に多くのことを自分で解明していかなければならなかったのです。実際にやってみると、これを機能させるのは本当に難しいということが分かりました。担当してくれた学生のNiklasは、実際に非常に多くのアブレーションを走らせる必要がありましたし、私自身にとっても、実際の現場でどこにどのような効果が現れるのかを見て学ぶことができたという点で、なかなか興味深い経験でした。
8. Gaussian GPTの結果と講演のまとめ
8.1 オブジェクト・シーンレベルでの生成結果
それでは、いくつかの結果をお見せしたいと思います。まずオブジェクトについてです。ここでは、これまでご紹介したDiffFactoとL3DG、そして私たちのGaussian GPTを比較しています。Gaussian GPTのほうがここではより良い結果を示していまして、少し見えづらいかもしれませんが、細い構造の部分がより鮮明で良好に見えています。そして良い点として、この手法は当然のようにシーンへも自然に拡張できるのですが、これこそがそもそも私たちがこの手法に取り組んだ最大の理由です。オブジェクトに対して劇的に良くなるとは予想していなかったのですが、シーンに対してはこれが本当に効果的で、この点が非常に気に入っています。列単位で予測を行っていくことができるようになり、これによってかなり大規模なシーンに対しても対応できるようになりました。部屋のような構造に限定される必要は必ずしもなく、実際には最初から大規模なシーンに対してこれを行うことも可能です。
また、シーン補完にもこの手法を適用することができます。シーンの一部を先に与えておき、そこから残りの部分を外挿していくというものです。これは結果として時にはうまくいき、時にはあまりうまくいかないこともありますが、おそらくもう少し学習を重ねればさらに良くなったのではないかと思います。ただ、高いレベルで見ると、この考え方自体はとても興味深いものだと感じています。自己回帰的な性質を持っているため、与えられたシーンに基づいて、単純にその自己回帰的なアプローチを継続していくだけで、それなりに妥当なシーン補完の結果が得られるのです。
さらに大規模なスケールでの例もいくつかお見せしたいと思います。ここで興味深いのは、意味的なマップ、たとえばフロアプランのようなものについて、私たちは一切の事前知識を与えていないという点です。もしフロアプランのようなものがあって、そこから外挿できればそれは素敵だったと思うのですが、これは純粋にモデルが自律的に行った結果です。そのため、ドアの数が多すぎるといったように、意味的にはやや不自然になってしまう部分もあります。ただ、これはあくまで、より大規模なスケールで実際にこの手法を動かせるということを示すためのショーケースだと捉えていただければと思います。
最終的にはこのような結果が得られており、シーンに対してこの自己回帰的な方式で生成を行うことができています。ただ、これは明らかにまだ完全に解決された問題ではありません。色の分布に関してはまだかなり基本的なレベルにとどまっていることが見て取れると思いますが、それでも、3Dに対してフルのトランスフォーマーを用いることができるということを示せたのは、非常に重要な一歩だったと感じていますし、この分野で最初期の試みの一つだったと思っています。
8.2 講演全体の総括
これで、講演もほぼ終わりに近づいてきました。最後に、この分野の全体像を簡単にまとめておきたいと思います。3Dを得るための方法にはいくつかの異なるやり方があり、そのうちのいくつかを今日の講演でご紹介できたかと思います。最終的には、自己回帰的な次トークン予測についてお話しし、また数多くの3D拡散モデルについてもお見せしました。それ以外の部分については今日の講演では触れませんでしたが、それらも同様に興味深いものであり、その方向性においても様々な面白いことができると思っています。
以上をもちまして、講演を終えたいと思います。お招きいただき、皆さんにお話しできたことに感謝いたします。まだ質疑応答のお時間が少し残っているかと思いますので、ぜひご質問があればお願いいたします。私自身、3Dというテーマを心から愛しています。