![見出し画像](https://assets.st-note.com/production/uploads/images/157380843/rectangle_large_type_2_bd2400505662e553aac60855583143c7.png?width=1200)
ガウスロボット
39,204 文字
YouTube。YouTubeでテストしてます。
YouTubeでテストしてます。
よっしゃ、YouTubeは動いてるな。
Xに行きましょか。
Xでテストしてます。
Xでテストしてます。ちょっと水飲んで、このガムを吐き出さなあかんな。
Xでテストしてます。デヴァシッシュ、ミシュラ、サラ、調子どないですか?
はい、もうすぐ始まりますわ。
よっしゃ、Xでライブ配信できてるみたいですな。ちょっと確認しましょか。
Xのライブ配信はめっちゃ不安定やな。よし、動いてるわ。もうちょい優秀な人雇わなあかんな。よっしゃ、このホーンを吹いて始めましょか。
みなさん、ようこそHoopoeのストリームへ。今日は、ロボティクスのためのGothenburgスプラットについて探求していきます。ここにたくさんの論文があります。多すぎるくらいですな。全部読むんは無理やと思うんで、各論文から重要なポイントを抜き出していこうと思います。
ここに10本ほどのGothenburgスプラットに関する最近の論文があります。魚眼Gothenburgスプラットからスライディングウィンドウビデオストリーミングスプラット、さらにはGothenburgガーメントのような変わったものまであります。これらの論文を一つずつ詳しく見ていくんじゃなくて、それぞれから少しずつ重要な情報を拾っていこうと思います。
そして、できれば大きな流れを把握したいんです。ロボティクスの観点からGothenburgスプラットに何が起こっているのか、将来はどうなるんか、ロボットのパイプラインの一部をスプラットで置き換えられるんかどうか、そのメリットやデメリットは何かといったことです。これがこのストリームの目的です。
いつもの通り、このHoopo Docsというリポジトリにすべてのリンクやドキュメントがあります。今週は少し追加のものもあります。Archive APIを使って論文IDから抄録を取得するPythonスクリプトを作りました。みなさんご存知やったかもしれませんが、ArchiveにはAPIがあるんです。
それで、この10本の論文の抄録を全部スクレイピングしました。ここにそのスクレイピング結果があります。それをOpenAIのO1モデルに入力して、Gothenburgスプラットの将来について聞いてみました。後でそれを見ていきましょう。
まずはそれから始めましょか。これがOpenAIのO1が、今日見る10本の論文を元に判断したGothenburgスプラットの将来像です。効率性、つまりGothenburgスプラットをより速くレンダリングできるようになること。これはVRヘッドセットやロボットのような低スペックのエッジデバイスでもレンダリングできるようになるってことです。動的なシーン処理、つまりたくさんの物体が出入りするようなシーンです。
より長い時間スパンも対応できるようになります。今まで見てきたGothenburgは結構短かったり、Gothenburgビデオも短いものでした。AI統合、これはちょっとナンセンスな気がしますけどね。幅広い適用性、多様性、異なるセンサーやカメラモデルへの対応。深度カメラ、魚眼カメラ、ステレオカメラなどでGothenburgスプラットを使えるようにする、つまりいろんなタイプのカメラでGothenburgスプラットを簡単に作れるようにすることです。
でも、正直あんまり良い要約やないですね。まあ、O1はプロトタイプみたいなもんやからな。プログラミングや数学のモデルやし。Geminiの方が要約は上手いかもしれません。Geminiはコンテキスト長が長いから、抄録だけじゃなくて論文全体を入力できますからね。O1は抄録しか扱えへんのです。
さて、この論文から始めましょか。これはいい出発点になると思います。完全なロボティクスのユースケースで、Gothenburgスプラットを使ってるんです。カーネギーメロン大学の論文です。実は私もそこで学んでたんで、ちょっと偏りがあるかもしれません。昔はロボティクスの論文を書いてたこともあります。この研究グループは有名ではないかもしれませんが、彼らのやったことはかなりクールやと思います。
これはSplatSimと呼ばれています。シミュレーションスプラット、つまりGothenburgスプラットのシミュレーションです。「Gothenburgスプラットを使用したRGP操作ポリシーのゼロショットsim-to-real転送」というタイトルです。RGB操作ポリシーは基本的に画像を入力として受け取り、何らかの操作タスクを実行するニューラルネットワークです。
この場合、通常「プッシュタスク」と呼ばれるもので、基本的にこのT字型のオブジェクトか何かを別の位置に動かそうとするものです。または、机の上の赤いリンゴを拾い上げるようなピック&プレイスのバリエーションもあるようです。これはURロボットです。ロボットの詳細な説明もあります。
Robotique社のグリッパーを装備したUR5ロボットです。これがグリッパーで、こっちがロボットアームです。2台のIntel RealSenseカメラがあります。これは深度カメラです。これらのカメラは明示的な深度を提供し、それを使ってGothenburgスプラットを初期化できます。これは今ほとんどの人が使ってる手法です。そしてNVIDIA RTX 3080 Ti GPUがあります。これは一般的な消費者向けGPUで、Linuxワークステーションに搭載されています。
かなり標準的な操作セットアップですね。でも、Gothenburgスプラットをどう使ってるんでしょうか?それがどこに関係してくるんでしょう?そやな、sim-to-real転送を見てみましょう。シミュレーションで収集したデータをどう扱うか、そのシミュレーションデータで学習したものを実世界のデータにどう転送するかということです。
つまり、完全にシミュレーションで学習したロボットを実環境に配置すると、うまく動かへんってことです。これがsim-to-real問題と呼ばれるもんです。シミュレーションで学習したものを実世界でどう使うか、という問題です。シミュレーションでの学習はクラウドで簡単にできて、並列処理もできるし、実データよりもずっと多くのシミュレーションデータを集められます。でも、実データほど良くないんです。
じゃあ、合成データと実世界のビジュアルデータの間にある大きなドメインシフトをどう扱うんでしょうか?ここでGothenburgスプラットを使うわけです。シミュレーターの従来のメッシュ表現をGothenburgスプラットに置き換えるんです。スプラットは非常にフォトリアルな合成データを生成します。
はい、ここに図があります。今日見る多くの論文では、主に図を見ていきます。論文からα(アルファ)を得るには、図から得られるものが一番多いと思うんです。まだ読んでない論文を見るとき、最初にすることはタイトルを読んで、公開日を確認し、発表した組織を見て、抄録を読んで、それから図を見ることです。
これらの図を見るだけで、何が起こってるかよく分かります。このタイプの図は、非常に情報密度が高いものです。この図を5分くらい見つめて、何が起こってるか理解できれば、論文全体をトークンごとに言語モデルのように読むよりも、はるかに良い要約が得られます。なので、今日のストリームの多くは図に焦点を当てていきます。
ポッドキャストとして聞いてる人には申し訳ないですが、ちょっと違う感じになるかもしれません。ジョス、調子どうや?見れてうれしいわ。モシについてのストリームする予定はあるんですか?これはデヴァンシまたはデヴァシッシュからの質問です。実は昨日かその前の日にモシを走らせました。カーパシーがツイートしてるのを見たんです。モシは基本的に音声表示です。
ローカルのコンピューターで実行できる音声モデルです。実際にローカルで実行できました。Discordにコピペできるコマンドをポストしたんで、ローカルでテストしたい人はそれを見てください。かわいいですよ。そこに座って話しかけると、途中で割り込んだりできます。あなたも割り込めます。つまり、音声から音声への次世代のようなものです。
その機能はありますが、本当に賢いわけじゃないです。特に面白いことは言いません。音声から音声へのデモのためのデモみたいな感じです。でも、来週あたりにマルチモーダルな音声ベースのものの現状についてストリームするかもしれません。でも今日のストリームはビジョンと3D表現、特にガウシアンスプラットについてです。
よし、このロボティクスの論文から始めましょう。まず、シミュレーションでの専門家のデモがあります。これがシミュレーションの様子です。これはメッシュです。古典的なPBRのようなメッシュベースのシミュレーションで、各剛体にメッシュがあり、それは多くの頂点から成っています。テクスチャが適用されていて、制御できます。
これはUnreal EngineかUnityで構築されたものだと思います。どのシミュレーターを使ってるかは正確には分かりません。おそらくこの論文のどこかに書いてあると思います。でも、これらのシミュレーションはビデオゲームを制御するのと同じように制御できます。専門家がビデオゲームに座って、シミュレーションされたロボットを制御するんです。
最終的に軌跡が得られます。基本的に「この画像が与えられたらこう動く」「この画像が与えられたらこう動く」「この画像が与えられたらこう動く」というものです。ユーザーがこのボールを掴んでおそらくこの穴に入れるために取った全ての行動の軌跡があります。それらを使って、基本的にロボットシーンのガウシアンスプラットを動かすんです。
この全シーンを何かの携帯電話で録画して、完全なガウシアンスプラットを作成したんです。でも、これは静的なスプラットになります。実際にはそのスプラットを制御する方法はありません。ただの静的なスプラットです。残念ながら、ここで少しハッキーなことをする必要があります。
ロボットをスプラットシーンで動かすために、ここでこのハードコアなことをする必要があります。ロボットの異なる部分を表す異なるガウシアンを取り、それらを異なるリンクに分割します。そして基本的に、スプラット内の関節オブジェクトのように動かすことができます。特に素晴らしいわけじゃないです。シーン内で動くすべてのものに対してそれをする必要はありません。
でも、その結果、ここよりもはるかにフォトリアルなシミュレーターが得られます。シミュレーションでのこれらの軌跡を取り、基本的にこのスプラットで再レンダリングすると、すべての画像に対する専門家の制御アクションを持つRGB軌跡のセットが得られます。
これで、sim-to-real転送が非常に困難だったデータセットが、sim-to-real転送にもう少し適したものになります。拡散ポリシー、これは実際に画像を受け取り、推論時または評価時に制御アクションを出力するニューラルネットです。
拡散ポリシーの仕組みは、ノイズから始まり、取るアクションを拡散していくんです。拡散ポリシーはあまり重要ではありません。この技術は任意のタイプのポリシーで機能します。この論文で彼らが行っている特別なことは、ガウシアンスプラットレンダリングを使用していることです。
これは以前にも見たことがあります。DeepMindのOP3ロボティクス論文でも見ました。DeepMind OP3ロボティクス、これです。「二足歩行ロボットの敏捷なサッカースキルの学習」。実際にはこれを取得しませんが、この論文では、シミュレーションでのすべてのトレーニングで、背景のレンダリングにNERFを使用しました。これらのロボットのシミュレーションでは、サッカーフィールド、ゴール、ボール、ロボットはすべてメッシュとテクスチャでしたが、背景を空っぽのままにしたくなかったんです。ここの背景を見てください。この背景はNERFです。
なんでNERFやGスプラットを使うんが、メッシュとテクスチャを使うより良いんでしょうか?メッシュとテクスチャの問題は、作るんがめっちゃ大変やということです。この論文にええ要約があるんで、そこを見てみましょう。
ここに異なる3Dプリミティブの比較があります。ガウシアンスプラットは多くの3Dプリミティブの一つです。NERFは別のタイプで、ニューラルラディアンスフィールドと呼ばれます。高品質のレンダリングを適度なストレージで提供します。メッシュは、今使われてるほとんどすべてのビデオゲームで使用されてます。比較的コンパクトでレンダリングに適してますが、作成には大量の手作業が必要です。特に高品質のボリューメトリックグラフィックスには。
これがメッシュの問題なんです。このシーンをフォトリアルな方法でシミュレーションしようとすると、sim-to-real転送を簡単にするために、3Dアーティストがこれらのポスターを一つ一つ作らなあかんのです。全てのポスターを正確に作り、全てのケーブルを正確に作り、このテーブルの角を正確に作り、テーブルのテクスチャを正確に作らなあかんのです。
手動でメッシュとテクスチャを作るんがどれだけ難しいか分かりますよね?熟練した人間のアーティストが必要で、彼らがこのシーン全体を作らなあかんのです。iPhoneで全体を撮影して、それをガウシアンスプラットに入れて、小さなガウシアンスプラットを作る方がずっと簡単です。これで任意の視点からレンダリングでき、手動で作成するよりもはるかにフォトリアルになります。
もしかしたら、上手な3Dアーティストがいれば、かなりリアルに見えるシミュレーションを作れるかもしれません。でも、ガウシアンスプラットの方が格段に簡単で、そういう手動での作成プロセスが必要ないんです。DeepMindがこれを使った理由も同じです。人間のアーティストに背景や棚、その他のものを作らせるんは時間の無駄やからです。部屋全体のNERFを取得して、それを使えばええんです。そうすれば、シミュレーションがはるかにフォトリアルになります。
NERFやガウシアンスプラットの利点は、任意の視点からレンダリングできることです。1Xワールドモデルの仕組みと似てますね。でも、完全に同じじゃないです。1Xワールドモデルは文字通りピクセル空間にあると思います。実際の2D画像を生成してます。これは、NERFやガウシアンスプラットというシーンの表現があって、その中で任意の視点をレンダリングできるんです。
つまり、2D画像を直接予測するのと、3D表現があってそこから任意の2D視点を取得するのとは違うんです。わかりますか?
さて、次のロボティクス論文をちょっと見てみましょう。これは「ガウシアンスプラッティングを用いたベイジアン実体化画像ゴールナビゲーション」というタイトルです。基本的に小さなロボット飛行船があります。ここに小さなロボット飛行船がありますね。非常にゆっくり動きます。動きを少し制御できます。このマップ内のさまざまな位置に到達しようとしています。
彼らが設定した部屋があって、異なる列や物体があります。彼らが行っているのは画像ナビゲーションです。画像ゴールナビゲーションと呼ばれるもので、特定のゴール画像を与えます。「ここに行ってほしい」と。それは画像です。そして飛行船からの画像が出てきます。つまり、視覚的な知覚を使ってロボットをターゲット画像が元々撮影された場所に導く必要があります。
他の論文と非常に似ていますが、ガウシアンスプラットを使う理由は、これをメッシュとテクスチャで古典的な方法で作成するのが非常に面倒で難しいからです。この種のUnityタイプのプログラムを作るには、人間が作成する必要があります。シーンを歩き回れるようにすることができます。彼らはここで具体的にどうやったか説明しています。
OptiTrackを装備した部屋でマーカーを取り付けたiPhoneを使用して、1920x1440の解像度で534枚のRGB画像を撮影時の位置と姿勢とともに収集しました。この部屋にはトラッカーがあるので、基本的にモーションキャプチャーで使うような小さな玉があります。それを電話に付けることができます。誰かがこの部屋全体をその電話を持って歩き回りました。そのため、撮影した各画像の電話の位置が分かります。
つまり、電話の位置情報を持つすべての画像をガウシアンスプラッティングプロセスに入力するだけです。そうすると、時間とともにこれらの小さなガウシアンの位置を学習します。そして、任意の視点からレンダリングできるシーン全体の表現が得られます。これは実際には大きな近道です。
メッシュとテクスチャを作成してシミュレーションを行い、常にシミュレーションが実際のシーンほど良くないという問題に対処する代わりに、実際のシーンと非常に似た、フォトリアルなものを作成できます。作成も非常に簡単です。iPhoneを持ってシーンを歩き回るだけです。必ずしもiPhoneである必要はありません。どんなカメラでも構いません。
これらの論文は基本的に、ガウシアンスプラットが作成が非常に簡単で、手作業で作成するよりもはるかにフォトリアルなシミュレーションを生成するという事実を利用しています。でも、これらの両方に共通する主な問題は、これを変更できないことです。ここでの根本的な問題は、静的なシーンだということです。このシーンでは何も変化しません。列は常に同じ場所にあり、すべてが同じ場所にあります。
このシーンを記録してガウシアンスプラットを作成すると、実際にはそれを変更していません。つまり、非常に静的なシーン内でのみうまく機能します。この場合も同じです。このシーンで静的でないのはロボットだけです。ロボットは動き回るので、ロボットの異なる部分に関連する異なるガウシアンを動かすためにこのようなハッキーなことをする必要がありました。
つまり、静的なガウシアンスプラットモデルという問題がまだあります。でも、この部屋のような比較的静的なシーンを扱う場合、またはこのロボットがいる部屋、あるいはこの小さなロボットサッカーセットアップがある部屋のような場合、ガウシアンスプラットを基礎的なシーンプリミティブとして使うんは実際にかなりええハックになります。任意の視点からめっちゃフォトリアルなレンダリングを生成できるからです。
つまり、いつでも「このシーンのこの位置に立ってたらどう見えるやろ?」って聞けるわけです。この論文が実際にやってることは基本的にそれです。画像の類似性を、ロボットがゴールに到達したかどうかを判断する基準として使ってるんです。
つまり、何らかの画像類似性があって、最終的にロボットは古典的なモンテカルロベースのモデル予測制御のようなものを使ってるんです。モデル予測制御は、物事を予測できるモデルを持つ制御のタイプです。ここでのモデルはこのガウシアンスプラットで、あらゆる視点での画像を予測してます。任意の点でそれに問い合わせると、そこでの画像が得られます。
そして、その画像を見て「今持ってる画像とどれくらい似てるか?」って比較できます。画像が近ければ、ゴールに近いということです。画像がまったく似てなければ、ゴールから遠いってことです。基本的にはそれだけです。ここで見れますね。
実際に図を見てみましょう。ここにあります。画像ゴールがあります。これは「ここに飛行船に来てほしい」ってことです。ここに測定値があります。これが現在の位置です。これをこのモデルに入力します。これは基本的に「これらの画像はめっちゃ違う」か「これらの画像はまったく違わへん」って教えてくれます。違わへんってことは、目標位置にめっちゃ近いってことです。それによって静的シーン内のある場所が分かります。そこを通ってパスプランニングができるわけです。
T長さのレンダリングされたロールアウトのセットがあります。ロールアウトはこのモンテカルロの考え方です。ある状態から始まって、何らかのアクションを取り、次の状態に到達します。そして「その状態でどんなアクションを取るか?」「次の状態でどんなアクションを取るか?」「その次の状態でどんなアクションを取るか?」って考えていきます。ロールアウトは基本的にこれらの連続です。状態、アクション、状態、アクション、状態、アクション、状態、アクション。
この場合、状態は単に画像です。ボードゲームのある位置みたいなもんじゃないんです。ここではモンテカルロをやってますが、画像空間でやってるみたいなもんです。そう考えると結構クールですね。静的なガウシアンスプラットがあるから、シーンが動かへん限り、このシーンの任意の位置でどんな画像でもレンダリングできるんです。
これがガウシアンスプラットをシーンのプリミティブとして使う場合の大きな問題です。変更できへんってことです。両方の論文にこの問題があります。でも、その問題に対処しようとしてる論文もいくつか見ていきます。
これが2つのロボティクス論文です。これらのロボティクス論文のTL;DR(要約)は、ガウシアンスプラットがシーン表現として非常に優れてるってことです。任意の複雑なシーンに対して作成が非常に簡単やからです。すべてのアセットを手動で作成してロードして、それらのアセットでランダムなことをする必要がありません。そしてかなりフォトリアルです。
実際、この論文では具体的な数字が示されてます。ゼロショットの方法で、つまり合成シミュレーションデータでのみ学習した場合、86%のタスク成功率が得られます。この場合は、小さなTを目的の位置に押したり、リンゴを掴んだり、他の小さなタスクのバリエーションです。これに対して97%です。
実世界のデータで学習した場合、拡散ポリシーは97%の確率で成功します。ガウシアンスプラットシミュレーションの合成データだけで学習した場合、ポリシーは86%の確率で成功します。大きな違いには見えへんかもしれません。「ほな、実世界のデータの方がずっとええやん」って思うかもしれません。そやね、その通りです。でも、ここで重要なんは、どんどん近づいていってるってことです。
このsim-to-realのギャップを埋めていってるんです。いつかは、実世界のデータで学習したポリシーと同じくらい良い、ゼロショットで99%転移できるモデルが得られるかもしれません。実際に欲しいのは、この実世界のデータを収集する必要がないってことです。この実世界のデータを集めるのは大変やからです。すべてをシミュレーションでできれば、ずっと簡単になります。
ガウシアンスプラットは平らな地球みたいやな。かわいそうなロボットや。これはただのシーンの2D投影やと思います。実際のガウシアンスプラットは3Dです。こんな感じです。これが実際のガウシアンスプラットの見た目です。完全な3D空間で、これらの小さなガウシアンがあります。
ここでガウシアンスプラットが具体的に何かを話すええタイミングかもしれません。強化学習の論文をたくさん読むと、どの論文にもマルコフ決定過程について説明する小さなセクションがあるのと同じように、ガウシアンスプラットの論文にも通常、ガウシアンスプラットが何かを説明する小さなセクションがあります。
今日見てる論文の中で、これが一番ええ要約やと思います。ガウシアンスプラットは、与えられたカメラポーズでモデルを2D画像にレンダリングする方法です。つまり、カメラポーズが与えられれば、このシーンの任意の2D画像をレンダリングできます。
3Dガウシアンモデルでは、シーンはガウシアン点の集合で表現されます。各点は共分散、中心位置、色、不透明度でパラメータ化されます。つまり、ガウシアンスプラットは基本的にこれらの小さなガウシアンの集合です。各ガウシアンにはいくつかのパラメータがあります。
実際にやってることは、ガウシアンスプラットのレンダリングパイプラインが完全に微分可能であることを利用して、画像の類似性損失や画像再構成損失を取り、それらの勾配をこれらのガウシアンを表すパラメータにすべて戻すことです。そして徐々に時間とともに、これらの小さなガウシアンを動かしたり、色を変えたり、サイズや形を変えたりしていきます。そして時間とともに、シーンに近似していきます。
実際にはこんな感じです。これらのスプラットの中には非常に大きいものもあれば、小さいものもあります。これは少し問題になることもあります。他の将来の論文でも見ていきます。
でも、基本的にガウシアンスプラットを学習するときにやってることはこれです。位置Xが与えられると、共分散はさらに回転行列とスケーリング行列に分解されます。これは小さなスプラットの回転と広がりとスケールとして解釈できます。そして、カメラの中心から問い合わせたピクセルに向かって放射されるレイRがあります。そのピクセルの色は、このサブセットをZ深度の順に近いものから遠いものへとアルファブレンディングすることで計算されます。
これが微分可能なレンダリングプロセスです。実際、別の論文にこれをうまく示す図があります。ここにあります。「適応半径によるガウシアンスプラッティングの加速」という論文で、このレンダリングの仕組みが示されてます。
特定のカメラ位置があって、その特定のカメラ位置は、レンダリングしたい新しい視点の2次元画像の1つの特定のピクセルに対応します。そのレイが外に向かって進むにつれて、これらの小さなガウシアンの多くと交差します。それらを得るには、後ろから前へ、または前から後ろへソートする必要があります。両方の方法でやってると思います。
基本的にアルファ合成をしてます。つまり、カメラに近いガウシアンの方が、後ろにあるものよりも色への寄与が大きいってことです。例えば、前に不透明な赤いガウシアンがあれば、ピクセルはおそらく赤くなります。不透明度が高いので、後ろにある他のガウシアンを覆い隠すからです。
でも、ガウシアンスプラットのもう一つ重要な点は、通常タイルでレンダリングされることです。ガウシアンスプラットが人気な理由の一つは、レンダリングが非常に速いことです。完全に微分可能なパイプラインなので、勾配を伝播でき、学習アプローチを使って変更や作成ができるってことが人気の理由の一つです。
もう一つは、レンダリングが非常に速いことです。2次元画像をこれらのタイルでレンダリングし、各タイルを効果的に並列処理できるからです。並列レンダリングによって、スプラットを非常に速くレンダリングできます。実際の比較がここにあります。
3D GS、これはスプラットです。高速なレンダリング速度です。他のものも見てみましょう。ここの記述には少し同意できません。非常に高品質なレンダリングのメッシュとテクスチャもあります。低品質のレンダリングのNERFもあれば、高速なレンダリングのNERFもあります。高速なレンダリングのメッシュもあります。
低ポリゴンのメッシュなら、非常に高速にレンダリングできます。でも一般的に、これが異なる3Dプリミティブのトレードオフです。ガウシアンスプラットは、非常に高速なレンダリング速度で高品質のレンダリングを提供し、ストレージ使用量は中程度です。
なぜNERFのストレージ使用量がガウシアンスプラットより少ないんでしょうか?NERFは基本的に、多層パーセプトロンがすべての情報を格納しているという考え方です。NERFでは、ここにあるような共分散中心などの情報を明示的に格納していません。多層パーセプトロンのパラメータ内に暗黙的に格納しています。
つまり、NERFは実際にはシーンの3D表現の最も効率的または圧縮された形式です。でも、ガウシアンスプラットはより明示的です。これらの小さなガウシアンを文字通り全て格納しているからです。それがロボティクスなどに有益な理由でもあります。
ロボティクスでは、シーンの異なる部分を分離したい場合があります。例えば、この赤いリンゴの一部であるここのスプラット、小さなガウシアンに何らかの物理ベースのプロパティを持たせたい場合があります。ここでやっていることは、スプラットでのみ可能なことです。スプラットでこれができます。
なぜなら、「このアームの一部であるスプラットと、ロボットのベースの一部であるスプラットを分けたい」と言えるからです。スプラットではそれができます。NERFではそれは本当に難しいです。NERFとスプラットにはわずかに異なる利点や長所短所があるという話をしていました。
他に何があるでしょうか?ああ、なぜこの論文がロボティクスに関係するのか?この論文は、スライディングウィンドウガウシアンスプラッティングを略してSW-GSと呼んでいます。最終的には、VRヘッドセットで3Dビデオ、つまり完全なボリューメトリックビデオを実行できるようにしたいと考えています。
でも、そのVRヘッドセットには非常に小さな計算パッケージしかありません。エッジデバイスです。デスクトップコンピューターやクラウド上のコンピューターのようなGPUはありません。ローカルに非常に小さな計算能力しかありません。
将来的に欲しいような巨大な3時間のボリューメトリックビデオを送りたい場合、ストリーミングする必要があります。スプラットをどうやってチャンクごとにストリーミングするのか?実際にクライアントデバイスのGPUで何が起こっているかを見てみましょう。
これが実際のVRヘッドセットか、ロボットかもしれません。ロボットが世界を移動していて、その世界がクラウドコンピューター上のスプラットとして存在するような状況を想像できます。つまり、クラウドコンピューターに完全な世界があり、その世界がガウシアンスプラットとして存在します。ロボットは完全な世界を持っていません。
この状況では、クライアントデバイスのGPUが実際のロボットになります。そして、完全な世界を持つクラウドからボリューメトリックビデオやスプラットをストリーミングしています。これを効率的に行う方法は、基本的にこのボリューメトリックビデオからガウシアンを取り出すことです。
ガウシアンは変化します。一部のガウシアンは入ってきて、一部は出ていきます。ビデオのさまざまな部分が出入りするにつれて、おそらく背景が変わり、その異なる部分を表す異なるガウシアンが必要になります。それらをローカルデバイスのGPUメモリに出し入れしたいわけです。
ここで見れるように、レンダリング用にGPUにすでにあるスライス、新しくロードされるスライス、受信してバッファリングされたがまだロードされていないスライスがあります。他のストリーミングベースのものと非常によく似ています。基本的に新しい情報を受信し、古い情報を削除して、その新しい情報を入れる必要があります。
フレームごとに... この論文はこれですか?いいえ、これじゃないですね。これが欲しい論文です。いいえ、これでもありません。どれだったかな?引っ張り出してたはずなんですが... ああ、これです。「没入型人間中心ボリューメトリックビデオのためのロバストデュアルスプラッティング」という論文です。
これでは非常に高品質なボリューメトリックビデオを作成しています。つまり、時間次元を持つガウシアンスプラットです。単なる静的なガウシアンスプラットではなく、3Dビデオのようなものです。ここにあるのは静的なガウシアンスプラットで、これも静的です。
フレームがデコードされるたびに依存関係を取り除こうとしています。はい、実際には各フレームが新しいガウシアンスプラットになっています。どれだけオーバーヘッドがあるか考えてみてください。時間とともに変化する1つのガウシアンスプラットを持つ代わりに、ここでやっているように、スプラットの一部が入ってきて、一部が出ていくようなガウシアンスプラットがあります。
つまり、時間とともにスプラットの一部を削除し、一部を追加しているわけです。新しいガウシアンスプラットを取得しているんです。どれだけオーバーヘッドがあるか考えてみてください。時間とともに変化する1つのガウシアンスプラットを持つ代わりに、ここでやっているように、スプラットの一部が入ってきて、一部が出ていくようなガウシアンスプラットがあります。
つまり、時間とともにスプラットの一部を削除し、一部を追加しているわけです。これはボリューメトリックビデオで、基本的にガウシアンを交換しているんです。この論文ではそれをまったくやっていません。この論文では、なんと各フレームがガウシアンスプラットになってます。めっちゃ大変やと思いません?
各フレームがガウシアンスプラットになるなら、このガウシアンスプラットを非常に効率的にエンコードせなあかんわけです。そやから、ここでこんな過剰に設計されたもんを「ハイブリッド圧縮戦略」って呼んでるんです。「ガウシアンの動きを残差ベクトル量子化で圧縮し、不透明度とスケーリングをコーデック圧縮で、球面調和関数を永続的コードブックで表現する」って。
位置、回転、スケール、不透明度、球面調和関数、これらはすべてスプラットの異なるプロパティです。覚えてますか?これらは各スプラットに対してハードコードされた異なるパラメータです。非常に手作業で設計された、ビターレッスンに反するようなマインドセットです。
「位置と回転の動きを圧縮するにはどうするのがベストか?動き圧縮や。スケールと不透明度のパラメータを圧縮するにはどうするのがベストか?コーデック圧縮やな。球面調和関数を圧縮するにはどうするのがベストか?コードブックやな」って感じです。実際、これらは最近話題になったものです。残差ベクトル量子化について話してましたよね。
ここにそのブログ記事があります。たしか音声関連のことで見てたと思います。残差ベクトル量子化は音声でよく使われます。でも、これはデータポイントを格納するのに必要な情報量を減らす、つまり量子化する方法です。
例えば、これらの青いデータポイントがあるとします。これらの青い点の実際の位置をすべて格納する代わりに、各青い点のXY位置を送る代わりに、単一の数字、例えば1、2、3、4、5を送ります。その単一の数字は送るのがずっと安上がりで、コンピューターで扱うのもずっと簡単です。
でも、少し情報を失っています。青い点の正確な位置ではなく、大まかな位置しか分からなくなるからです。でも、2つ目の複数のコードブックを使う必要があります。これが球面調和関数をエンコードする方法です。
でも、ちょっと待ってください。この派手な数学や複雑なことに目を奪われすぎてしまいました。結局のところ、これはあんまりええことちゃいます。今では、青い点の正確な位置ではなく、大まかな位置しか分からなくなりました。
2つ目の複数のコードブックを使う必要があります。これが球面調和関数をエンコードする方法です。でも、ちょっと立ち止まって考えましょう。この派手な数学や複雑なことに目を奪われすぎてしまいました。結局のところ、これはあんまりええことちゃいません。
ガウシアンの異なるプロパティを圧縮するために3つの異なる人間が設計したアルゴリズムを使って、フレームごとに異なるガウシアンを送信し、各フレームが異なるガウシアンになるようにして、NVIDIA GeForce RTX 3090で... いや、これで学習したんですが、実際にはPico VRヘッドセットでレンダリングできる品質のものを得るためです。たしかそうやと思います。
はい、これがPico VRヘッドセットです。中国版のOculusヘッドセットみたいなもんです。中国には低コストの一般消費者向けVRヘッドセットがあって、これがPicoです。アメリカではQuestヘッドセットを使う傾向がありますね。
VRヘッドセットでリアルタイムでレンダリングしてるんは確かに印象的です。でも、そのためにこの非常に複雑な圧縮をせなあかんかったんです。ちょっとやりすぎな気がします。ここでのアイデアの方がずっとええと思います。
ここでは、あなたがいる建物全体からいくつかのガウシアンを取り出してるんです。その建物全体を毎回ロードしたくないですよね。この技術を使って、ここでやってることをするんです。ビデオ内の特定のフレームに関連するガウシアンスプラットだけを取得するんです。
ロボティクスの使用例では、特定のローカル環境内のガウシアンスプラットだけを取得します。さて、それに関連することで、いくつかの論文で出てきた新しいアイデアがあります。これまであまり見たことがないアイデアです。
これは問題をマルコフ連鎖モンテカルロサンプリングタスクに変換するというアイデアです。またマルコフ連鎖が出てきましたね。OpenAI O1の話をしたときにも出てきました。OpenAI O1は基本的にこの計画を効果的に行うように学習されたモデルです。
このマルコフ連鎖を使って、出力可能なトークン列の空間を探索し、その上に超過程報酬のような強化学習ループがあります。そこでこれらの推論トレースをたくさん集めて、数学やプログラミングなどでは、どの推論トレースが実際に価値があるかを判断し、それをモデルに組み込んでいきます。
マルコフ連鎖モンテカルロがいろんなところに出てきてますね。どうやらガウシアンスプラッティングをマルコフ連鎖モンテカルロとして考えることもできるようです。これはちょっとクールですね。他の論文にも出てきます。
例えばここにも... まあ、これはちょっとクレイジーなストリームになってきましたね。論文から論文へ飛び回ってるんで、追いつくのが難しいかもしれません。申し訳ないです。
ちょっと一旦止まりましょう。トラストミーブロ、アリエス、バーチャルのみんな、調子どうや?そのブログへのリンクを貼ってくれへん?ここにないなら、追加しておくわ。あるいはDiscordで聞いてくれてもええよ。ストーリーをうまくつなげてるみたいやね。
さて、まだマルコフ連鎖モンテカルロのアイデアを調べてます。これはここですぐに出てきました。最初は「これ何やねん?3D GSをマルコフ連鎖モンテカルロとして?」って感じでした。でも、ここにもう一つの論文があります。しばらく見つからなかったんですが...
これが実際のリポジトリです。これはNerf Studioプロジェクトから来てます。これは実際にかなり高品質なNerfのリポジトリです。今度はこの人たちが集まって、かなり高品質なガウシアンスプラットのリポジトリを作りました。これがめっちゃ重要な理由は、しばらくの間ガウシアンスプラットの実装がバラバラやったからです。
オリジナルの実装があって、他にもいろんなスプラットがあって、あれこれ機能がついてました。でも今はここに行けば、Pythonでガウシアンスプラットを実装したってだけやなくて、GSplatに入って、Cudaに入って、Cのソースコードに入れば、はい、ここにガウシアンスプラッティングのすべての異なる操作のための実際のCudaコードがあります。
ピクセルをラスタライズするコードがここにあります。これがそのCudaコードです。これは密かにめっちゃ大きな出来事なんです。以前は他の人のCudaコードを使わなあかんかって、オープンソースじゃなかったんで、使うのがちょっと怪しかったんです。でも今や、ようやくCudaの部分も含めた完全なオープンソースの実装ができました。
気をつけなあかんのは、オープンソースのリポジトリが1人で作られてることもあるってことです。1人で作ったリポジトリは、共同作業で作ったものほどええもんにはならへんのです。特にこういう背景を持つ人たちの共同作業はすごいです。
LumaのAIに取り組んでる人、AmazonやUC Berkeleyの人たち、さらに中国の人たちも一緒になって、オープンソースのガウシアンスプラットの実装を作ってるんです。これを使えば、いろんなことができます。これはめっちゃすごいことです。
Luma Labsがこれをやってくれたのが大好きです。LumaみたいなGA会社は、ガウシアンスプラットに関する内部の専門知識をたくさん持ってます。その秘密を守って、絶対に公開せえへんってこともできたはずです。でも、Lumaの人たちは賢くて、「これをオープンソースで公開したら、実は自分たちにもメリットがあるんや」って気づいたんです。
ガウシアンスプラットを使って、修正したり、科学的な研究をしたりできる人が増えれば増えるほど、この分野全体の進歩が速くなります。分野の進歩が速くなればなるほど、他の3D表現よりもガウシアンスプラットを使う人が増えて、結果的に彼らのスタートアップも成長するんです。
他のAI企業には分かりにくいみたいですが、彼らは自分たちのものをオープンソース化して、他の人よりも速く動くことで先を行くべきやって気づいたんです。これが研究のええやり方やと思います。
さて、これがGSplatリポジトリのええところです。でも、マルコフ連鎖モンテカルロの話に戻りましょう。ガウシアンスプラッティングの密度化戦略に対して、別のベイズ的な見方を採用してます。著者らはガウシアンスプラッティングの密度化を確率的勾配ランジュバンダイナミクス更新として再定式化しました。
はい、ここにあります。2つの異なる論文が「3D GSをMCMCとして再解釈できて、それがより良く機能する」って言及してるんです。「よし、これの底を突き止めなあかん。何が起こってるんや?」って思いました。
じゃあ、いくつか見てみましょう。初期化と密度化って何なんでしょう?初期化は、ガウシアンスプラットの元の位置をどう得るかってことです。一つの方法はランダム初期化です。これらのガウシアンスプラットのXYZ位置をランダムに選びます。
もう一つの方法はCOLMAPを使うことです。これは多くの画像から3D位置を推定する方法です。この論文で期待されるようなものです。カメラ位置を持つ多くの画像があって、それをCOLMAPに入力すると、「この点は3D空間のここにある」って教えてくれます。
点群を使うこともできます。Intel RealSenseのような深度カメラを使えば点群が得られます。そして間引きも行います。間引きと密度化は、ガウシアンを取り除いたり追加したりする問題です。最適化プロセスの過程で、ガウシアンのセットを持っていて、各ガウシアンのパラメータを勾配を使って変更していくんですが、一部のガウシアンが「死んでしまう」問題が起こることがあります。
例えば、シーンの真ん中に浮いてるガウシアンがあって、その近くに何もないとします。そうすると、そのガウシアンの不透明度が時間とともにどんどん小さくなっていきます。最終的に、完全に透明になって、何の貢献もしなくなるガウシアンができてしまいます。
こういうガウシアンを「死んでる」って呼びます。もう取り除いてしまった方がいいんです。逆の問題もあります。ガウシアンスプラットの一部に空白のスペースができることがあります。例えば、靴の底を表すガウシアンがないとか。
これがオリジナルの論文での密度化戦略です。でも、これにはどんな問題があるんでしょうか?これらの密度化戦略は、各ガウシアンの状態に応じて、クローン、分割、間引き(別名密度化)、または間引き(ガウシアンの除去)を行います。
3DGS表現内のガウシアンの数を制御する主な方法です。でも、このヒューリスティックベースのアプローチは、複数のハイパーパラメータを慎重に調整する必要があります。これらのハイパーパラメータの1つがここにあります。これを3つに分割すると決めたのはなぜでしょうか?特に理由はありません。ただ3を選んだだけです。
このハイパーパラメータを3つに分割するという恣意的な選択が問題なんです。なぜなら、調整しなければならないこのハイパーパラメータができてしまうからです。そのハイパーパラメータの魔法の値を見つけ出さなあかんのです。それがなくてもええのに...
間引きも同じような問題があります。ガウシアンを間引くときも、この論文で「コーリング」と呼んでる恣意的なものが必要になります。でも、間引き、コーリング、スパース化は全部同じ考え方です。「いくつかの複雑なものを取り除こう」ってことです。
「このバウンディングボックスの外にあるガウシアンを全部取り除こう」とか。でも、そのサイズはどうするんや?この問題をどう解決するんや?ガウシアンの集合をランダムサンプルとして考え直すことで解決できます。より具体的には、基礎となる確率分布からのマルコフ連鎖モンテカルロサンプルとして考えるんです。
基礎となる分布を仮定しますが、この分布は明示的にモデル化されません。ガウシアン自体がすでにそれを表現してるからです。分布はかなり広い用語です。例えば、拡散画像生成モデルでも、実際に何をやってるかというと、何らかの閉じた数学的形式で分布を学習してるんです。
ガウシアン全体で、その確率分布になってるんです。つまり、ガウシアンへのどんな修正も、決定論的な状態遷移として再定式化できます。ガウシアンの再配置です。サンプル、つまりガウシアンの集合を、異なる構成を持つ別のサンプル、別の集合に移動させるんです。
ちょっと分かりにくいかもしれませんが、この図を見ればはっきりします。以前は、恣意的な「分割」や「しきい値に基づいて削除」みたいなハイパーパラメータを使って密度化やスパース化をする必要がありました。
でも今は、代わりに死んだガウシアンを再配置してるんです。死んだガウシアンが見つかったら、異なる場所に効果的に移動させてるんです。結果的には似たようなことが起こってます。より多くのガウシアンが必要な領域には最終的により多くのガウシアンが配置されますが、今はガウシアンの数が同じなんです。
ガウシアンを動かしてるだけです。これがめっちゃ重要なんです。ストリーミングする場合、ストリーム可能なコンテンツのガウシアンの合計チャンクを同じにしたいからです。時間とともに均一なデータ量を維持することが重要なんです。
つまり、GPUメモリを特定のGPUメモリに対する特定の数のガウシアンで満たしたいんです。時間とともに変動させたくありません。あるフレームで100個のガウシアン、別のフレームで2個のガウシアンってのはダメなんです。均一なデータ量が必要です。
1つのガウシアンを単純に複数に分割する代わりに、3D GS MCMCは死んだガウシアンを生きてるガウシアン、つまり不透明度が高く、シーンに強く存在するガウシアンの位置に再配置します。
これで、時間とともに変化するシーンをより良く表現できるようになりました。でも、まだよく分からないことがあります。確率的勾配ランジュバンダイナミクスって何やねん?
もっと深く掘り下げてみました。どんどん深いところまで行って、「物理学者の視点からSGDを見る:パート3 ランジュバンダイナミクスとその応用」というブログ記事を見つけました。ここに1つのセクションがあって、これを見たときに「あ、なるほど!」って思いました。
ここにランジュバンのダイナミクスがあります。これを読んでみましょう。頭の中で「あ、そういうことか」ってなるまでのいい導入になると思います。1827年に植物学者がいて、水の中の花粉粒を見てたら、ランダムに動いてるのを発見しました。数年後、アルベルト・アインシュタインが論文を書いて、これらの小さな花粉粒の動きが...
化学か、シリンダー内を動くガスのダイナミクスみたいなもんやって言ったんです。このタイプのブラウン運動の数学をやることになります。これらの小さなガス分子が動き回って、お互いにぶつかり合うようなもんです。そこにはダイナミクスがあります。
それを表す方程式があって、これがランジュバン方程式です。基本的に小さな粒子の速度がどう変化するかを表してます。小さな粒子に対するF=maみたいなもんです。
これがガウシアンスプラットとどう関係するんでしょうか?ここでガウシアンスプラットについて話してるのは、まさにこれのことなんです。シーンの異なる部分にガウシアンを動かすって話をしてますよね。
そこで「あ、そういうことか」って気づいたんです。マルコフ連鎖モンテカルロと、このランジュバンダイナミクスを使ったGS MCMCは、基本的に分子動力学を取り入れてるんです。実際、ここで言及してますね。単にそれが同じだと気づいたからこの結論に至ったって。
MCMCは確率的勾配ランジュバンダイナミクスというフレームワークを使ってます。これはMCMCのフレームワークです。この学習では... ちょっと待ってください、この方程式がガウシアンの1つの更新をどう行うかを表してるんですが、これが4と5の間で驚くほど似てるって気づいたんです。
この3D GS MCMCのことは全部、分子動力学の仕事をしてた人たちの誰かが、おそらくここの人たちの誰かやと思いますが、アドバイザーの誰かがこの方程式をよく見てて、ガウシアンの方程式を見たときに「おい、これ分子動力学でやってることとめっちゃ似てるやん」って気づいたことから来てるんです。
そこからガウシアンスプラットを基本的に動き回る小さな分子として捉え直すという直感が生まれたんです。人々は小さな分子の動きを最適に表現する方法について長い間考えてきたので、確率的勾配ランジュバンダイナミクスというこのナイスな数学があるわけです。
今やそれをガウシアンスプラットに適用してるんです。これによってガウシアンスプラット内の密度化や間引き、スパース性の問題が解決されます。つまり、より複雑なシーンを効果的にストリーミングできるようになり、静的じゃなくて動的なシーンをレンダリングできるようになります。
ロボティクスではこれによってsim-to-real転送ができるようになり、最終的にはシミュレーションで学習したものが実世界で動作するようになります。つまり、結果的にロボットが実世界で実際に学習せずにクレイジーなことができるようになるんです。
これが50年前の分子動力学の研究が、実世界で学習せずにクレイジーなことができるロボットにつながるという、めっちゃ長い道筋です。はい、ここで一旦休憩しましょうか。
GraciaVRのガウシアンスプラットを使った3DデモのVRボリューメトリックビデオをご覧になりました?そうですね、そっちに向かってるんです。いつかは携帯電話みたいな中途半端な技術から脱却せなあかんのです。今は小さな2次元画面を見てるだけですからね。これはダメです。
1つのアセットタイプの世界に向かいたいんですが、ここにはちょっとごまかしがあります。新しいものが入ってこないんです。赤いボールが入ってきて、この人が立ち上がって新しい椅子を持ってくるみたいなことはないんです。同じ人が同じギターを持ってるだけです。
そやから、この論文ではガウシアンのストリーミングを出し入れするような派手なことをする必要がなかったんです。基本的に常に同じビデオで、同じガウシアンを少し動かしてるだけです。
でも、彼らがやった仕事の多くは、これをVRヘッドセットで動作させることでした。この論文の本当にすごいところは、実際にVRヘッドセットでレンダリングできる実用的なデモを作ったことです。
この論文でも同じことをやってます。WebGLを使ってレンダリングできるところまで持っていきました。これが実際のデモです。これがボリューメトリックビデオのデモです。ここで再開します。
ご覧のように、これは私のデスクトップやコンピューターでWebGLを使ってレンダリングしてるんです。WebGLって何やねんって?Web Graphics Languageの略です。今ではかなり古いですね。ChromeのブラウザーでX年に実装されました。
今では、GPUを使用できるバージョンがあります。つまり、ブラウザーを通してコンピューターのGPUを使えるんです。これがWebGLやOpenGLでやってることの基本です。こういったものを使えるようになりたいんです。
ガウシアンスプラットがこんなに速くレンダリングできる理由の一つです。ここに書いてあるように、ガウシアンスプラットは非常に速いレンダリング性能を持ってます。
WebGLとWeb用のこのGPUは、Apple、Google、Mozilla、Microsoft、Intelなどのさまざまな組織が取り組んでます。ブラウザーを持つあらゆるデバイスでガウシアンスプラットをレンダリングする標準的な方法を効果的に作れます。VRヘッドセットでこれができるんです。
この開放的な標準により、実世界やVRヘッドセットでボリューメトリックビデオを見ることができるようになります。これが将来、メタバースやシミュレーション世界と対話する方法やと思います。今やってることは全部、この小さな2次元画面の上だけです。この世界に移行する必要があります。
ランジュバンダイナミクスは拡散モデルと関係がありますか?ちょっとだけありますね。拡散モデルにも、この確率流を動かすみたいな考え方があります。似たようなところはあります。でも、このタイプのブラウン運動やダイナミックな部分については専門家じゃないんで、拡散モデルで起こってることと、ノイズ分布から始めて画像分布内の画像点に少し近づけていくこととの正確な違いは説明できません。
材料の拡散モデルで... オリジナルのDeepMindの論文では、背景をレンダリングするためにNERFを使いましたよね。この写実的な効果のために、ボールやロボット、ペンにはNERFを使わなかったんです。なぜでしょう?
ボールに物理演算が必要やったからです。物体間の動きや相互作用を可能にする物理演算があって、これはビデオゲームでの仕組みです。この物理演算の部分について、人々はこれらの表現でも取り組んでいます。
でも、本当に考えなあかんのは... 今はインタラクションがないんです。このデモでは、これらのものに触ったり、動かしたり、落としたりできません。この論文では実際にはちょっと複雑で、他にもいろいろやってます。あんまり重要じゃないかもしれませんが、基本的にテクスチャの各点に小さなガウシアンを置いてます。
実際のメッシュテクスチャ表現があって、これが実際のメッシュテクスチャです。小さな頂点があって、それぞれの小さな点にガウシアンを初期化してます。「マルチビュービデオからリアルなシミュレーション準備完了のガーメントアセットを再構築する:3Dメッシュとガウシアンテクスチャの組み合わせで、色と周波数の表面詳細の両方をエンコードする」んです。
でも、もっと重要なのはこの部分です。メッシュの頂点に貼り付けられた小さなガウシアンの見た目を得ようとしてるだけじゃなくて、これらの小さなガウシアン間のダイナミクスも見てるんです。
例えば、ガウシアンに何らかの曲げエネルギーがあるとします。隣り合う2つの小さなガウシアンが伸縮性のあるTシャツの一部やとしましょう。それらが引き離されていくと、引き離されすぎないように何かが働くはずです。
これらの小さなガウシアン間に物理ベースの関係を追加し始めてるんです。最終的には、ボリューメトリックビデオだけでなく、文字通り物を押したり、手で触ったりできるようになることを目指してます。
そうなったら本格的になります。この論文のようなものを想像してください。でも、このようなことをする必要はありません。ロボットアームの一部であるガウシアンが、望むような剛体変換で文字通り動いてるんです。リンゴの一部のガウシアンやグリッパーの一部のガウシアンが、文字通り相互作用してるんです。
シミュレーターでは、今やってるようなことをする代わりに... 今はメッシュがあって、衝突があって、古典的な物理演算があります。論文のこの部分では、基本的にこの物理の部分を導入し始めてます。
でも、この論文の気に入らない点は、ここからめっちゃ複雑なことを始めてることです。これはこのようなマルチカメラセットアップで録画されてます。こっちの方がもっとそうです。PBR顔アセットから始めて、「Goff顔アセット」って呼んでるガウシアン顔アセットを作ってます。
PBRは人間の顔を物理的に正確な照明を使ってレンダリングするために最適化する派手な方法です。基本的に、実際に光線を投射して跳ね返らせたりする照明です。メッシュ、ニューラルジオメトリー、画像テクスチャを処理して、拡散マップ、法線マップ、スペキュラーマップ、表情ブレンドシェイプなどを含めます。
残念ながら、この論文では143の顔アセットを134の照明条件下で... 10/23の組み合わせで... すでに3種類のテクスチャを持つメッシュがあるんです。実際の... スペキュラーやと思いますが、あれら3つのうちの1つです。それらを取って、基本的にそのためのガウシアンを作ってるんです。
ニワトリと卵の問題みたいなもんですね。この派手なゴー顔アセットがあって、それを速くレンダリングできます。例えば、11万のガウシアン点で、NVIDIA RTX 48 GPUで500フレーム以上/秒を達成してます。500 FPSでこのガウシアン顔アセットをレンダリングできるんです。
でも問題は、このガウシアン顔アセットを作るために、PBR顔のデータセットを使ったってことです。これを「ニワトリと卵の問題」って呼んでるんです。それをガウシアンスプラットに蒸留する方法があって、ガウシアンスプラットになったから、VRヘッドセットやPCみたいな限られたエッジデバイスで非常に速くレンダリングできるんです。
でも、これについてはよう分かりません。2024年には、こういったPBR顔を作るのがめっちゃ簡単になってるはずです。今はただ、この人物の衣服を持つPBRデータセットを作ってるだけみたいに見えます。この特定の場所にいるこの人物を、400台のPBRカメラで撮影したいとは思わへんやろ。
PBRって何かというと、81台のZカムシネマカメラを使って撮影したんです。これらのZカムカメラはめっちゃ高価なんです。1台900ドルくらいで、81台もあるんです。誰もこれを再現できへんやろ。iPhoneの単一のモノキュラーカメラからボリューメトリックビデオを作れるようになりたいんです。
この論文でもちょっとごまかしがあります。単一のiPhoneカメラですが、OptiTrack装備の部屋があるので、電話の位置が完璧に分かるんです。
高忠実度のダイナミックレンダリングを可能にするために、Vulkanベースの補助レンダリングアプリケーションを開発しました。Vulkanは基本的に... ここでも言及されてますが、CUDAみたいなもんですが、オープンソースのCUDAやと思ってください。
ガウシアンスプラットでキャラクターを撃つ必要がある場合、初期のゲーム開発の物理の時代のように、一から考える必要があるんですか?スリーピーヘッド、正確に何を聞きたいのか分からんけど、そうやね、まだ足りないものがたくさんあります。
ビデオゲームを作るとき... ハードコードされた相互作用がたくさんあります。例えば、このタイプのシミュレーションでは、おそらくロボットアームの衝突メッシュはないでしょう。このタイプのシミュレーションが得意な人間のエンジニア、Unity開発者みたいな人が、「グリッパーのパドルとボールと実際のテーブルとロボットアームにだけ衝突メッシュを置こう」って決めたんでしょう。
それぞれに特定の摩擦特性があって、それらはハードコードされてます。そして、ゲームコードやゲームロジックがあって、「このボールがここの円に触れたら、シーンをリセットしよう」みたいなことを言うんです。
オブジェクト固有のロジックがたくさんあって、ガウシアンスプラットに関連するものは見たことがありません。まだガウシアンスプラットでは、「完全にガウシアンスプラットベースのシーンを作ろう」とか「物理もガウシアンスプラットを使おう」みたいなアイデアが出始めたばかりです。それさえもまだ製品レベルには達してません。
この設定が保存と構成方程式を満たすことを確認できますか?それがどういう意味か分かりませんが、ここでの設定のことを言ってるんですね。基本的に、常に同じ数のガウシアンスプラットを持つようにしたいってことです。
死んだガウシアンスプラットを再配置することで、毎回レンダリングされるガウシアンスプラットの数が同じになることを効果的に保証してます。これによって、エッジデバイスで利用可能なメモリを最大限に活用できるんです。
1枚の画像からガウシアンスプラット表現を生成する論文はありますか?実際にはあまりないですね。そういう論文を知ってる人もいるかもしれませんが、これらの論文では1フレームだけを使ってるものはありません。
この論文では、多くの異なるフレームで全シーンを録画して、それを使ってスプラットを作ってます。こっちの論文でも同じです。iPhoneで周りを歩き回って500枚の画像を集めて、それを使ってスプラットを作ってます。この論文でも、マルチカメラセットアップを使ってます。
今のところ、これらのスプラットを作るには間違いなくマルチカメラセットアップが必要です。同時に録画する複数のカメラか、静止したシーンを動き回る1台のカメラです。1台のカメラの問題は、シーンが静的である必要があることです。
基本的に「シーンは動かない」と仮定して、カメラを動かすんです。カメラの動きから構造を得てるんです。でも、このような動的なシーンの場合、シーンが変化してるので、動くカメラ1台で録画しようとしたら、ナンセンスな結果になってしまいます。
ボリューメトリックビデオや時間次元を持つモーションスプラットを作るには、複数のカメラが必要なんです。パトリック、これで質問に答えられたかな?他に何がありましたっけ?これについて話しました。あれについても話しました。飛行船ロボットについても話しました。画像類似度を使ったパス計画についても話しました。
これがあなたのポリシーです。ポリシーは入力に基づいてアクションを選びます。これがあなたの動きモデルで、軌跡をロールアウトできます。これができる理由は、これらの点のそれぞれについて、ガウシアンスプラットに「ここではどう見えるか?」「ここではどう見えるか?」「ここではどう見えるか?」って聞けるからです。
ガウシアンスプラットなので、かなりフォトリアルな画像が得られます。画像ゴールナビゲーション、画像ゴール、カメラ画像... これら2つがとても似てるのが分かりますね。画像の類似度がおそらく非常に高いので、基本的にゴールに到達したってことです。
魚眼... そうそう、これについては話してませんでしたね。これはちょっとクールな論文で、基本的にこれらのガウシアンスプラットを作るとき、カメラに対するこれらのスプラットの位置と、たくさんの画像があります。
でも、魚眼カメラは実際にロボティクスでよく使われます。それほど多くはないかもしれませんが、ロボティクスにはめっちゃ便利です。はるかに広い視野が得られるからです。
魚眼カメラを使えば、ずっと多くの情報が得られます。ずっと多くのものが見えるからです。でも、魚眼カメラを使うのはちょっと面倒くさいです。基本的に補正したり、この奇妙な魚眼効果を取り除くために歪めたりする必要があるからです。
この論文では基本的に、魚眼カメラから来る画像を取って、それらをガウシアンスプラットを学習するために使う画像として使う方法を見つけ出しました。6つの屋内シーンがあります。これがCOLMAP構造からモーションで、カメラの位置を得る方法です。
でも、この論文にはあまり多くのことはありません。文字通り、ガウシアンスプラットを魚眼カメラから得るために魚眼効果をどう補正するかについて読むだけです。
この論文が一番クールだと思います。図がめっちゃきれいだったからってのもあります。図のいいのには弱いんです。このちっちゃなデモもかなりクールです。
見てください!これめっちゃええやん!メッシュとテクスチャでこれをやるのを想像してみてください。メッシュテクスチャでの布の変形は... めっちゃ複雑です。Tシャツがこんな風に変形したり動いたりするのを、メッシュとテクスチャで表現するのは... 方法はありますよ。
ケープが動いたり変形したりするビデオゲームはありますが、それはめっちゃ複雑です。このタイプのものみたいになってしまいます。ただめっちゃ過剰に設計されたパイプラインになるんです。
ガウシアンスプラットはめっちゃシンプルなプリミティブで、最終的にはずっと良い解決策になると思います。将来、みんながVRヘッドセットを被ってこれらの仮想的なボリューメトリックな世界を探索してる状況を想像すると、ガウシアンスプラットがそのための完璧なプリミティブだと思うんです。これらの論文は全部その方向を指し示してます。
時空間ガウシアンを使ったスライディングウィンドウ... そうそう。この論文でも、マルコフ連鎖モンテカルロを使って基本的に死んだガウシアンを再割り当てしてます。
残念ながら、ここでも追加のハイパーパラメータがたくさんあります。このスライディングウィンドウのサイズや、寿命のアイデアを扱わなきゃいけません。一部のガウシアンスプラットが特定の時間だけ存在して、それから消えるみたいな。
一方で、それはええことでもあります。例えば、この人が突然帽子を掴んで被ったとしたら、その帽子を表すガウシアンの束を作れます。以前は存在しなくて、今は存在するみたいな。あるいは、死んでるガウシアンが再割り当てされるってことですね。
でも、これらの異なるハイパーパラメータがあるのは好きじゃないです。これらのハイパーパラメータの数字を見てみましょう。GS成熟ストリーム、swinサイズ、num GS再配置期間反復... これら全部ハイパーパラメータです。
後続のスライスはクライアントによって受信、処理、バッファリングされます。それらのスライスはGPUメモリに挿入され、期限切れのスライスと置き換えられます。これは単なるボリューメトリックビデオを超えて、特にこのような世界を動き回るロボットにとって意味があると思います。
この世界は十分小さいので、静的なスプラットで全体を表現できます。でも、実際の環境、特に変化する環境をナビゲートするロボットをやりたい場合、このガウシアンの引退や成熟のアイデア、そして新しいガウシアンの導入... これはめっちゃいいアブストラクションだと思います。
WebGLは、この論文ではCOLMAPから初期化してます。これはおそらくガウシアンスプラットを初期化する最も一般的な方法です。
過大なswinサイズによるアーティファクトがいくつかあります。これが問題の1つです。ハイパーパラメータは、ガウシアンスプラットだけでなく、あらゆる種類の学習アプローチ、あるいはあらゆる種類のエンジニアリングアプローチで問題になります。
ハイパーパラメータが多ければ多いほど、面倒くさくなります。一部のハイパーパラメータの値では、うまく機能しないかもしれません。例えば、ここでのswinサイズというハイパーパラメータは、4を選べばいいですが、16を選ぶとこういったエラーが出ます。
このswinサイズに正しい数を選ばなあかんのですが、その数を知る唯一の方法は、基本的に実験的にいろんな値を試すことです。
いい図がいくつかありますね。ちっちゃなWebGLレンダリング。WebGLの背景について... WebGLの機能には、コンピュートシェーダー、より動的な詳細を追加できるアルゴリズム、物理現象のシミュレーションなどがあります。
より速いML推論... Web GPUのもう一つのことは、最終的にはブラウザーでGPU上でニューラルネット推論を実行できるようになるってことです。ブラウザーからGPUにアクセスできるようになるのは、めっちゃ大きな勝利やと思います。
これは実際にガウシアンスプラットの基本レベルに興味がある人にはめっちゃええ論文です。ガウシアンスプラットの全ての異なる操作を正確に知りたい場合、これがその論文です。なぜなら、全部一から作ったからです。一から作った理由は、レガシーなものを一切使いたくなかったからです。
彼らは本当にApache 2ライセンスが欲しかったんです。「ガウシアンスプラットの公開で利用可能なオープンにライセンスされた実装が、全てのCUDAの部分も含めて一から必要や」って言ったんです。この論文は文字通り、必要な全ての部分があります。
勾配の全ての方程式、深度合成の全ての方程式、ヤコビアンの全ての方程式があります。全部徹底的に調べて、一から作って、全ての数学を書き下ろし、全てのCUDAカーネルを書き下ろし、それを全部公開したんです。
これが実際のメインG-Splatの順伝播と逆伝播の計算グラフです。計算グラフは、実際にTensorFlowやPyTorchのコードを書くとき、PyTorchで書いて、最終的にこの計算グラフにコンパイルされるんです。これが実際に順伝播と逆伝播を得るのに使われてるものです。
順伝播は推論をすることです。何かを入力して、それが何かを生成し、それがまた何かを生成し、というようになります。逆伝播は勾配を得て、その連鎖則を使って、元のガウシアンのプロパティまで全部戻っていくんです。
ここにガウシアンの中心、つまり位置があります。ここにガウシアンの不透明度があります。ここにヤコビアンがあって、これは後ろに戻ります。ここに回転とスケール行列があります。そしてここに損失関数があります。
損失関数は、画像Aが実際にiPhoneで撮影した実際の画像で、これが順伝播で行ったときにレンダリングした画像だと言ってます。順伝播では、ここにあるこの全てのものを取って、ここまで上がって画像を得ます。そしてそれらの画像間で何らかの再構成損失を取ります。
これがガウシアンの最終的な色を実際に作成する方程式です。ここを見ると、勾配が最初に行く場所は色だということが分かります。だから色の方が速く変化するんでしょうね。でも、ガウシアンの位置や不透明度まで全部戻るのに少し時間がかかるのが分かります。
この論文はかなりええです。ガウシアンの基本的なレベルに興味がある人にはおすすめです。
それからマルコフ連鎖モンテカルロがあって、これはめっちゃクールやと思いました。確率的勾配ランジュバンダイナミクスについてはまだ完全には理解できてませんが、これはブラウン運動と分子動力学から来てるってことが分かる程度には理解できました。基本的に小さなボールを動かすことから来てるんです。
以上です!
機械学習のバックグラウンドがある人は、この方程式をちょっと見てみてください。エネルギーと物理学と機械学習の損失関数が類似してるって言ったの覚えてますか?上の方程式、ちょっと見覚えありませんか?そう、これは乱数項が追加された勾配降下の更新式です。
これらの多くは... これが数学の問題の一部なんです。一般的に、数学は過度に専門用語化されてるんです。「過度に専門用語化されてる」が正しい表現かどうか分かりませんが、人々は全ての異なるものに自分の名前を付けたがるんです。
ブラウン運動はブラウンって人がいたからで、他の人もブラウンで、また別の人がブラックで、別の人がランジュバンって名前を何かに付けたがって、また別の人が自分の名前を何かに付けたがったんです。
これらのことを読み始めると「うわ、ここに10個も異なる用語があるやん」って思うんですが、その用語の半分は誰かの名前なんです。それを作った人の名前です。実際の根底にある考え方は他のものとめっちゃ似てるんです。
つまり、数学の用語の多様性は、実際の数学の真の多様性を表してないんです。実際には限られた数学的概念のセットしかないんです。ただ、異なる人々が同じ数学的概念を扱ってて、異なる視点から見て、自分たちの用語や名前を付けてるだけなんです。
だから数学は一種の歴史的な分野になってしまって、ただ人々がものを解釈する方法をたくさん暗記してるだけになってしまってて、これら全ての異なるものが実際には同じものだってことに気づいてない。時々それがイライラします。
さて、ADR Gaussian、「適応半径によるガウシアンスプラッティングの加速」、この論文はちょっとラスタライズパイプラインがまだ不必要なオーバーヘッドに悩まされてて、避けられるシリアルなガウシアンのカリングと、ピクセル間で描画されるガウシアンの数が異なることによる不均一な負荷が原因です。
避けられるシリアルなガウシアンのカリング、これはこの論文でも実際に取り除かれてます。ここでのポイントは、このカリングと密度化をする必要がないってことです。基本的に、ガウシアンを動かすだけだと考えられます。
ピクセル間で描画されるガウシアンの数が異なることによる不均一な負荷について話してるのは、新しい視点から2次元画像をレンダリングするとき、タイルに分割して各タイルを独立して処理できるんですが、一部のタイルにはめっちゃたくさんのガウシアンがあるってことです。
例えば、ここのタイルにはこの角のタイルよりもずっと多くのガウシアンがあります。この角のタイルにはガウシアンが0個です。並列処理のような場合、一番遅いものに引っ張られるんです。
これら2つを速くできても、これを待ってしまうんです。これが一番遅いからです。この論文では、負荷分散を何らかの方法で行って、特定の領域に多すぎるガウシアンがないようにしてます。
この適応半径のことは好きじゃないです。これはただの過剰設計されたハイパーパラメータのクソみたいなものに見えます。
この論文、これはデモがちょっとクールだったからええなと思いました。かなりのお金をかけてます。とても高価なシネマカメラを使って、プロのアーティストやプロのミュージシャンに来てもらって録音してます。これは大金をかけたガウシアンスプラットの研究です。
でも、大金をかけたガウシアンスプラットの研究の問題は、この種の過剰設計されたソリューションを作れてしまうことです。この論文は本当に過剰設計されてると思います。4つの異なるガウシアンパラメータに対して3つの異なる圧縮を使うなんて...
最終的にはかなりクールな結果が得られて、比較的少量のエッジコンピューティングでリアルタイムレンダリングができるんですが、誰もこれを使わへんでしょう。めっちゃ複雑すぎます。
残差ベクトル量子化、これも過剰設計で複雑すぎます。PBR顔アセットからこれらのガウシアンアセットを作り始めるってのも好きじゃないです。でも、この人たちはめっちゃいい図を作りますね。
50人もの人が名を連ねてる論文は、常にめっちゃきれいな図があります。誰か1人が全ての時間を使って、可能な限り最もきれいな図を作ることに費やしてるからです。
ここで見れるように、この顔は基本的にここではメッシュです。そしてここが実際のガウシアンアセットです。小さなサーフェルみたいに見えますが、このクソみたいなもの全部見てください!ピクセル位置合わせサンプリングと遅延プルーニング、なんやねんこれ!
このコードベースを想像してみてください。このコードベースがどれだけ複雑か想像してみてください。基本的に再現不可能です。再現不可能な研究をする意味は何でしょうか?
500フレーム以上/秒を達成してるのはすごいですね。Meta Quest Pro VRで同様のパフォーマンスを出してる... それについて考えてみてください。今、Quest VRヘッドセットを持ってたら、最大でレンダリングできるのは120 FPSくらいです。
これらのVRヘッドセットでレンダリングしてるものは通常、めっちゃ最適化されてます。例えば、Beat Saberみたいなゲームをプレイするとき、テクスチャを最小限に抑えるために多くの設計と労力が費やされてます。
メッシュとテクスチャを使ってBeat Saberをレンダリングしてるので、全てのノートが異なる色だったら、もっと面倒くさくなります。背景に全ての異なる色があったら、もっと面倒くさくなります。
だから、大幅に簡略化して、全てに低ポリゴンメッシュを使って、この距離ベースのレンダリングを行う必要があります。今のVRヘッドセットでメッシュとテクスチャを効率的にレンダリングするには、めっちゃたくさんの工夫が必要なんです。
でも、ガウシアンスプラットは本質的にレンダリングがめっちゃ速いんです。だからガウシアンスプラットとVRはめっちゃ相性がいいんです。VRのゲームやエクスペリエンスを設計するときに必要な、この不必要な最適化を全部解決してくれるからです。
これはゲームの初期の頃に起こったことと似てます。ジョン・カーマックの時代に、Doomみたいなゲームを作ってたとき、努力の90%は、異なるものの数を減らすこと、異なるテクスチャの数を減らすこと、90年代や2000年代のコンソールやPCのめっちゃ小さな計算能力で、どうやって全てを十分速くレンダリングするかを考えることに費やされてたんです。
VRでも今、似たような状況があります。低ポリゴンバージョンを作るのに、めっちゃ多くの努力が払われてます。適度に速くレンダリングできるようにするために。でも、ガウシアンスプラットは、より良い3D表現であることで、本質的にこれらの問題の多くを解決してくれると思います。
それから「シミュレーション準備完了の衣服の再構築」という論文がありました。これもちょっと過剰設計やと思いましたが、まあ...
あ、これはほとんど関係ないんですが、すみません。ガウシアンスプラットに興味があるなら、私はガウシアンスプラットの趣味人です。ガウシアンスプラット愛好家ですが、本当にガウシアンスプラットに深く入り込みたいなら、「View Dependent」という新しい技術ポッドキャストが出てます。
これはMr. NERFと呼ばれる人がやってるんですが、おそらくガウシアンスプラット論文の第一人者です。これらの論文のほとんど全てがこの人から来てるんです。もし深掘りしたいなら、これをチェックしてください。この人が実際にこれをやってる異なる人々と話して、「あ、実際に論文を書いたんですね」みたいな感じです。
ガウシアンスプラットやNerf論文についてもっと深く知りたいなら、これをおすすめします。
それから、この論文... そうそう、これです。この論文では基本的に「マーブル」と呼ばれるものがあります。実際に言おうとしてるのは、「等方性ガウシアンマーブル:各ガウシアンの自由度を減らし、局所的な形状よりも動きと外観に最適化を集中させる」ってことです。
この論文で彼らがやりたかったのは、これらのガウシアンの問題の1つを解決することです。ここでこの大きなガウシアンがあって、ここで異なる向きがあるのが分かりますね。ここでは、各ガウシアンが異なる形と向き、スケールを持ってるのが分かります。それらの全てがパラメータで、勾配を押し込んでるんです。
この論文で彼らが言ったのは、「もっとシンプルにしよう」ってことです。「等方性ガウシアンマーブルを使おう」って。等方性は基本的に、どの方向から見ても同じってことです。つまり、これらの広がった異なる形のガウシアンを持つ代わりに、全て同じにしようってことです。
ただの小さな円、小さなボール、小さなマーブルです。彼らが言ってるのは、「ここにあるガウシアンのパラメータのいくつかを取り除いて、これらのより奇妙な形を考慮するんじゃなくて、全部をこれらの小さなボールやガウシアンマーブルに単純化すれば、もっと速くレンダリングできる」ってことです。
ここで見れるように、4Dガウシアンの82 FPSに対して、ガウシアンマーブルは200 FPSです。4Dガウシアンは完全な異方性ガウシアンです。
でも、基本的にはこれだけです。これが私のガウシアンスプラットの現状と、それがどういう意味を持つかについての簡単な概要です。ロボットにとっての基本的な質問を作ってます。いくつか質問に答えましょう。ちょっと水を飲んで、それから終わりにします。
完全なまとめはしません。今やったばかりやと思うので。
ガウシアンスプラットを作るのにiPhoneしか必要ない状況に、どうやって持っていくんでしょうか?衣服のガウシアンスプラットを作るのにiPhoneだけでいいような。基礎モデルみたいなもんになるんでしょうか?
そうですね、すでにダスターがあります。以前読んだ論文で、事前学習済みのトランスフォーマーを使って、その情報の一部を得ようとしてるものがありました。これらの基礎モデル、事前学習済みの画像エンコーダーや事前学習済みの拡散モデルには、その事前学習済みの重みの中にめっちゃ多くの知能が入ってるんです。
ダスターのような研究は、基本的に基礎モデルからの事前学習を活用して、ガウシアンスプラットを改善し、特に必要な画像の総数と初期化を減らそうとしてます。基礎モデルを使ってガウシアンスプラットを改善する方法はあると思いますが、まだ初期段階です。
拡散を「GD Gradient descent」と呼ぶ人がいるのを聞きました。拡散と勾配降下のことですか?それがどういう意味か分かりません。
メッシュについてあまり詳しくないんですが、三角形の集まりで、ガウシアンスプラットはガウシアンの... そうですね、メッシュは基本的にこれです。ここにたくさんのメッシュがあって、実際にここにたくさんのものがあります。これが完璧な例です。
メッシュは、全て接続された多くの頂点があります。これらの間の接続を効果的に格納する必要があります。そして、テクスチャも格納する必要があります。これのような基礎となるテクスチャがあります。
この画像はPNGやJPEGです。この2次元画像はUV展開によって、実際のテクスチャにマッピングされます。そして、接続された多くの頂点があります。このUV展開によって、実際のテクスチャにマッピングされるんです。
これはスプラットよりもずっと複雑です。スプラットは順序のないものです。ここに順序はありません。順序のないリストのようなものです。これらの順序は重要ではありません。それぞれに小さな色と不透明度があります。
基本的に、この複雑な接続を持つメッシュと、別のファイルにある複雑なテクスチャを取り除いて、順序のない小さなスプラットのセットに単純化してるんです。それぞれがその情報をエンコードしてます。
ガウシアンは衣服に適してるんですか?衣服に特に適してるとは思いません。この論文では、ただ新しいことをしたかったから変形可能な衣服を作ったんだと思います。これらの論文の多くは、新規性を追求してます。だから、ちょっと変わったことをやってるんです。変わってるから変わってることをやってるんです。
これらの論文の半分は、必要だからってわけじゃないんです。ガウシアンスプラットが衣服を扱うのに最適な方法だからじゃないんです。ただ、他に衣服の論文がないから、衣服の論文を発表すれば、私たちが唯一のガウシアンスプラット衣服論文になるってことです。
誰かが何かをするたびに、これを参照することになります。研究するテーマを選ぶときの最適化の一部として、新規性があります。だから、ガウシアンスプラットが衣服のための最適なものだとは思いません。ただ、変形可能なオブジェクトの表現としては、メッシュよりもガウシアンスプラットの方が優れてると思います。
ガウシアンスプラットは検索可能ですか?そうですね、LangSplatってのがあります。この論文を見直したと思いますが、これはガウシアンに意味的なプロパティを追加するアイデアです。
以前見たように、これらのガウシアンにはこれらのプロパティがあります。最も単純な方法では、単に色、位置、不透明度です。そこに勾配を押し込めます。でも、各ガウシアンに小さなベクトルを追加することもできます。これが効果的に意味的な、これが何かを表すんです。
この論文では基本的にそれをやってます。各スプラットが何に属するかを教えてくれる小さな情報を持つガウシアンスプラットを作ってます。つまり、セグメンテーションだけをやってるんですが、ロボティクスの使用例ではこの種の情報が非常に有用だと想像できます。
全てのオブジェクトの全ての部分に結び付けられたこの種の意味的な情報です。オープンボキャブラリの3Dクエリができるんです。「箸が欲しい」って言えば、はい、これが箸です。
ギーコバンからの質問:研究は誘電体や導体のようなより複雑な材料のレンダリングにも焦点を当てるべきですか?(導体が何かは分かりません)GSは現実的ですが、時々それらを正確にレンダリングするのに失敗します。
そうですね、髪の毛のようなものでさえ、メッシュとテクスチャでも失敗することがめっちゃ多いです。この論文を見てください。何に気づきますか?髪の毛がありません。どの顔にも髪の毛がありません。
透明なガラスや煙、髪の毛のような奇妙なものがたくさんあって、ガウシアンスプラットもまだそれらを特に上手く扱えてません。髪の毛については、もし計算能力がどんどん向上していけば、最終的にはガウシアンスプラットが髪の毛の完璧な3D表現になるかもしれません。
各髪の毛の束に小さなガウシアンスプラットの列があるようなイメージです。煙についても、煙全体を表す小さなガウシアンスプラットがあると想像できます。今のメッシュとテクスチャの状況で煙をどう表現するか想像するのは、ガウシアンスプラットで想像するよりもずっと難しいです。
だから、煙や透明なオブジェクト、ガラスのようなこれらのより難しいものについて、ガウシアンスプラットはまだ苦戦してるけど、メッシュとテクスチャよりも根本的に表現するのが難しくないと思います。
ガウシアンスプラットにどうやって動きを適用するんですか?動きを適用する方法はいくつかあります。例えば、この論文ではこの位置と回転があるので、小さなガウシアンの各々が動き回れます。ダイナミクスもあると思います。ちょっと見てみましょう。
基本的に、ガウシアンスプラットはこれらの小さなもののために任意の値を持てるので、もっと追加できます。速度を追加したり、他の任意の動きのパラメータを追加したりできます。それをガウシアンスプラットに追加して、最適化できます。
ユーニからの質問:GSや3D再構築はまだロボットにとって贅沢なものではないでしょうか?視覚的な結果のためのシミュレーションのようで、高価なレンダリングはゲームにより適してるように思えます。
贅沢とは言えないと思います。むしろ、DeepMindの論文が完璧な例で、これは実際の製品レベルの使用例です。彼らはNERFをレンダリングする方が、3Dアーティストに研究室の内部を再現してもらうよりも簡単だと判断したんです。
この論文が示してるのは、まさにそれです。この全てのシーン、これらのポスターや木製のテーブル、こういったクソみたいなものを全部再現するのはめっちゃ大変ですが、小さなスプラットを作るのははるかに簡単です。
スプラットはすでにロボティクスで使われ始めてると思います。メッシュとテクスチャよりも高品質で現実的なレンダリングを達成でき、作成も簡単だからです。完全なシーンを作るには、基本的にゲーム開発者が必要で、UnityやUnrealの使い方を知ってて、モデルを作成し、ライティングを扱う必要があります。
メッシュとテクスチャを使ってアセットやアセットで現実的なシミュレーションを作成するには、スプラットと比べてめっちゃ多くのことをする必要があります。まだ初期段階ですが、スプラットはすでにロボティクスで使用されてると思います。
これからどんどん明らかになっていくと思います。特に今、このG-Splatプロジェクトのような、きれいでオープンソースの実装が使えるようになったからです。LumaのようなGA会社があって、ウェブサイトに画像をアップロードするだけでスプラットを作ってくれるんです。
スプラットの周りのツールがどんどん良くなっていくにつれて、ロボティクスには間違いなく使えるようになると思います。
高品質の画像を扱う場合、どのバージョンのGSを使うべきですか?最高品質を求めるなら、Luma AIのようなスタートアップを使うのがええと思います。おそらく彼らが一番ええ実装を持ってるでしょう。でも、本当にオープンソースのものを使いたいなら、これを使えます。
いつ最初のガウシアンスプラッティング用ASICを組み込んだGPUが登場するんでしょうか?実際、すでにそうやと言えるかもしれません。最初のガウシアンスプラッティング用ASICを組み込んだGPUって何やねん?GPUって何やねん?GPUはレンダリングのためのASIC、つまりアプリケーション特化型集積回路です。
GPUはもともとレンダリングのために設計されたんです。それが元々の目的です。後になって機械学習や勾配の伝播にも使えることが分かったんです。そして、ガウシアンスプラットにも非常に適してることが分かったんです。
GPUをガウシアンスプラット用ASICと呼ぶのはちょっと大げさかもしれません。元々ガウシアンスプラット用に設計されたわけじゃないからです。でも、かなり近いものです。
ガウシアンスプラットに特化したGPUが出てくるかもしれません。VRヘッドセットの将来について想像してみてください。ここにあるPicoヘッドセットみたいなものを想像してください。Meta Quest 7とか、そんな感じです。
全てがガウシアンスプラットになる時代が来るかもしれません。全てのボリューメトリックビデオがガウシアンスプラットになり、全てのビデオゲームがガウシアンスプラットになる。ガウシアンスプラットが全ての表現空間を占めるようになったら、そうですね、VRヘッドセットにガウシアンスプラット専用のチップが搭載されるかもしれません。
でも今のところ、そうじゃありません。これらのVRヘッドセット内の小さなSnapdragonは、物理ベースのレンダリングに最適化されてるんです。
画像からガウシアンスプラットに変換するアイデアはどういうものですか?画像を使ってスプラットを作るんです。最終的に、iPhoneで撮った画像は、ここでレンダリングされた画像と比較するために使われます。
G-splatは本当にこれらの変数だけです。これらの変数があって、それぞれのスプラットに対してこれらの変数があります。シーンに11万のスプラットがあるなら、結局はこれらの値を変更してるだけです。
時間とともにゆっくりと、これらを変更するために勾配を押し込んでいきます。その勾配はどこから来るんでしょう?その勾配は、iPhoneカメラで撮影した画像から来てるんです。
iPhoneカメラで撮影した画像がここに入力され、現在のガウシアンスプラットからレンダリングされた画像と一緒に使われます。それらの差を見て、それが損失関数になり、全て戻って勾配を押し込んで、これらを適応させることができます。
これらを適応させると、次に作成する画像は少し良くなり、撮影した画像に近づきます。これが、撮影した画像をガウシアンスプラットに変換する基本的なプロセスです。ガウシアンスプラットはこれです。これらの数字やパラメータです。
アリエス、人間のための視覚化は障壁です。計算された数学空間の体積解決セットを目指すべきです...って、正確にはどういう意味か分かりませんが、1Xワールドモデルでさえ、これは単にピクセルに直接行ってるんですよね。3Dの下層はないんです。1Xワールドモデル...そうですね、私の理解では、これは単にピクセルに直接行ってます。3Dの表現はありません。
3Dがあるかどうか確認してみましょう。Ctrl+Fで3Dを検索... 3Dはありません。2D画像...そうですね、ここで「画像シーケンス」と言ってるのが分かります。このワールドモデルへの入力は2次元画像のシーケンスで、ワールドモデルの出力は基本的に別の2次元画像です。
ここに根本的な問題があります。実世界は3Dなんです。実際のロボティクスのワールドモデルは、もっと...ガウシアンスプラットのような3Dプリミティブを基礎に持つべきだと思います。この2次元画像は...単に正しい表現じゃないんです。
2次元画像は、実際の3Dシーンの奇妙な低次元の投影みたいなものです。明らかに、これらの人たちは画像シーケンスを使ってます。おそらく事前学習済みの拡散モデルを使って画像を生成してるんでしょう。生成的な2Dのものは全て、生成的な3Dのものよりもずっと優れてます。
でも、ガウシアンスプラットが十分に良くなれば、実際の3D表現であるという事実、つまりコアで本当に3Dであるという事実が、ロボティクスのワールドモデルを作るための根本的により良い方法になると思います。
ここでやってるのは、基本的に画像シーケンス、つまり2Dフレーム、2Dフレーム、2Dフレーム、2Dフレームがあって、そこから別の2Dフレームを予測してるだけです。将来のことを考えると、コアに3D表現がないといけないと思います。この2次元画像だけじゃダメなんです。
スプラットに物理を組み込む方法についてのストリームをやりませんか?そうですね、いくつか論文がありました。「バウンシースプラット」みたいなのがあったと思います。ガウシアンバウンシースプラット...これらはかなりクールでした。
これはガウシアンスプラットに物理特性を持たせた論文です。最終的に、このようなものが得られます。ガウシアンスプラットと実際に相互作用できて、バウンシーさがあるみたいな。この論文は絶対に見つからないと思いますが、いつかは読みますよ。
これがガウシアンスプラットを見る最後じゃありません。おそらく数ヶ月後にまた同じことをして、この人のページをスクロールして、気に入った論文を10個くらい見つけて、「ガウシアンの論文はどうなった?」って言うでしょう。その時点で、もっと物理ベースの論文があると思います。そこでどうなってるか見てみましょう。
異なる研究分野をチェックして、人々がどこで進歩してるか見るのが好きなんです。
さて、もう行かないといけないので、ここで終わりにします。付き合ってくれてありがとう。アリエス、スワッティB、パトリック・シャブ、トムキャット、ゲコバンド、サラ・スヌークス、スリーピーヘッド・マジェッティ、フリゴ、ブライアン、パトリック、トラストミーブロ、オマビバ、ジョス、みんなありがとう。
何か得るものがあったらええですね。なかったとしても、素晴らしい週末を。また会いましょう。