(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-10
(45)【発行日】2024-05-20
(54)【発明の名称】3次元オブジェクトの多角形メッシュの生成のための自己回帰ニューラルネットワーク
(51)【国際特許分類】
G06T 19/00 20110101AFI20240513BHJP
G06N 3/0455 20230101ALI20240513BHJP
G06N 3/0499 20230101ALI20240513BHJP
【FI】
G06T19/00 A
G06N3/0455
G06N3/0499
(21)【出願番号】P 2022548004
(86)(22)【出願日】2021-02-08
(86)【国際出願番号】 EP2021052984
(87)【国際公開番号】W WO2021156514
(87)【国際公開日】2021-08-12
【審査請求日】2022-10-04
(32)【優先日】2020-02-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517030789
【氏名又は名称】ディープマインド テクノロジーズ リミテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】チャーリー・トーマス・カーティス・ナッシュ
(72)【発明者】
【氏名】ヤロスラフ・ガニン
(72)【発明者】
【氏名】セイエド・モハマダリ・エスラミ
(72)【発明者】
【氏名】ピーター・ウィリアム・バッタリア
【審査官】中田 剛史
(56)【参考文献】
【文献】米国特許出願公開第2020/0027269(US,A1)
【文献】特開2011-243016(JP,A)
【文献】特開2006-318232(JP,A)
【文献】C.Nash et al.,PolyGen: An Autoregressive Generative Model of 3D Meshes,[online], arXiv:2002.10880v1,2020年02月23日,p.1-16,インターネット< https://arxiv.org/abs/2002.10880>
【文献】S.Yongbin et al.,PointGrow: Autoregressively Learned Point Cloud Generation with Self-Attention,[online], arXiv: 1810.05591v3,2019年11月06日,p.1-8,インターネット< https://arxiv.org/abs/1810.05591>
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
G06N 3/0455
G06N 3/0499
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のコンピュータによって実行される方法であって、
自己回帰メッシュ生成ニューラルネットワークを使用して、オブジェクトの3次元メッシュの頂点と面を指定する出力シーケンスを生成するステップであって、前記出力シーケンスが、複数の出力位置の各々においてそれぞれのメッシュトークンを備え、生成する前記ステップが、前記複数の出力位置のそれぞれにおいて、
前記出力位置の可能なメッシュトークンの確率分布を生成するために、任意の以前の出力位置においてすでに選択されている少なくとも任意のメッシュトークンに対して調整された前記自己回帰メッシュ生成ニューラルネットワークを使用して前記出力位置の入力を処理するステップと、
前記確率分布を使用して、前記出力位置の前記可能なメッシュトークンから前記出力位置において前記メッシュトークンを選択するステップと
を備える、方法。
【請求項2】
前記出力シーケンスから、前記オブジェクトの前記3次元メッシュを生成するステップをさらに備える、請求項1に記載の方法。
【請求項3】
前記確率分布を使用して、前記出力位置において前記メッシュトークンを選択するステップが、
前記確率分布からメッシュトークンをサンプリングするステップを備える、請求項1または2に記載の方法。
【請求項4】
出力位置の第1のセットにおける前記メッシュトークンが、前記
3次元メッシュの複数の頂点の各々のそれぞれの座標である、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記自己回帰メッシュ生成ニューラルネットワークが、頂点デコーダを含む頂点生成ニューラルネットワークを備え、生成する前記ステップが、出力位置の前記第1のセットの出力位置ごとに、
頂点エンコーダを使用して任意の以前の出力位置においてすでに選択されている任意の頂点座標のそれぞれの埋め込みを生成するステップと、
前記確率分布を生成するために前記頂点デコーダを使用して前記それぞれの埋め込みを処理するステップと
を備える、請求項4に記載の方法。
【請求項6】
前記頂点デコーダが注意ベースのデコーダニューラルネットワークである、請求項5に記載の方法。
【請求項7】
前記頂点デコーダがTransformerアーキテクチャを有する、請求項6に記載の方法。
【請求項8】
生成する前記ステップが、前記選択されたメッシュトークンがあらかじめ定められた停止トークンになるまで頂点座標を生成するステップを備える、請求項4から7のいずれか一項に記載の方法。
【請求項9】
出力位置の第2のセットにおける前記メッシュトークンが、前記
3次元メッシュの複数の面の各々を構成す
る複数の頂点から頂点を識別する、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記
自己回帰メッシュ生成ニューラルネットワークが面デコーダを備え、生成する前記ステップが、
(i)前記複数の頂点の各々、(ii)新しい面トークン、および(iii)停止トークンのそれぞれのコンテキスト埋め込みを生成するステップと、
出力位置の前記第2のセットの各々において、
前記第2のセット内の任意の以前の出力位置において生成された各メッシュトークンのそれぞれの埋め込みを含むデコーダ入力を生成するステップと、
ポインタベクトルを生成するために、前記面デコーダを使用して前記デコーダ入力を処理するステップと、
前記ポインタベクトルと、(i)前記複数の頂点の各々、(ii)前記新しい面トークン、および(iii)前記停止トークンの前記それぞれのコンテキスト埋め込みから、(i)前記複数の頂点の各々、(ii)前記新しい面トークン、および(iii)前記停止トークンの確率分布を生成するステップと
を備える、請求項9に記載の方法。
【請求項11】
前記
自己回帰メッシュ生成ニューラルネットワークが面エンコーダを備え、(i)前記複数の頂点の各々、(ii)新しい面トークン、および(iii)停止トークンのそれぞれのコンテキスト埋め込みを生成するステップが、
前記面エンコーダを使用して(i)前記複数の頂点の各々、(ii)新しい面トークン、および(iii)停止トークンを処理するステップを備える、請求項10に記載の方法。
【請求項12】
前記面エンコーダがTransformerアーキテクチャを有する、請求項11に記載の方法。
【請求項13】
前記面デコーダがTransformerアーキテクチャを有する、請求項10から12のいずれか一項に記載の方法。
【請求項14】
前記第2のセット内の任意の以前の出力位置において生成された各メッシュトークンの前記それぞれの埋め込みが、前記メッシュトークンの前記コンテキスト埋め込みに基づいて生成される、請求項10から13のいずれか一項に記載の方法。
【請求項15】
前記面デコーダが、前記コンテキスト埋め込みに相互注意を適用する、請求項13または14に記載の方法。
【請求項16】
前記出力位置の可能なメッシュトークンの前記確率分布を生成するステップが、以前の位置において選択された前記メッシュトークンが与えられた場合に有効ではない前記出力位置の任意の可能なメッシュトークンのロジットをマスクするステップを備える、請求項1から15のいずれか一項に記載の方法。
【請求項17】
前記3次元メッシュのコンテキストを指定するコンテキスト入力を受信するステップをさらに備え、
生成する前記ステップが、前記複数の出力位置の1つまたは複数において、
(i)任意の以前の出力位置においてすでに選択されている少なくとも任意のメッシュトークンに対して調整され、また(ii)前記出力位置の可能なメッシュトークンの確率分布を生成するために、前記コンテキスト入力に対して調整される、前記自己回帰メッシュ生成ニューラルネットワークを使用し
てタイムステップの入力を処理するステップを備える、請求項1から16のいずれか一項に記載の方法。
【請求項18】
前記コンテキスト入力が前記オブジェクトのオブジェクトクラスを識別する入力であり、前記コンテキスト入力に対して前記自己回帰メッシュ生成ニューラルネットワークを調整するステップが、前記オブジェクトクラスの埋め込みを生成し、前記埋め込みに対して前記
自己回帰メッシュ生成ニューラルネットワークを調整するステップを備える、請求項17に記載の方法。
【請求項19】
前記コンテキスト入力が前記オブジェクトの画像であり、前記コンテキスト入力に対して前記自己回帰メッシュ生成ニューラルネットワークを調整するステップが、画像埋め込みのシーケンスを生成するために画像エンコーダニューラルネットワークを使用して前記画像を処理し、画像埋め込みの前記シーケンスに対して前記
自己回帰メッシュ生成ニューラルネットワークを調整するステップを備える、請求項17に記載の方法。
【請求項20】
前記コンテキスト入力が前記オブジェクトを表すボクセルのセットであり、前記コンテキスト入力に対して前記自己回帰メッシュ生成ニューラルネットワークを調整するステップが、ボクセル埋め込みのシーケンスを生成するためにボクセルエンコーダニューラルネットワークを使用してボクセルの前記セットを処理して、ボクセル埋め込みの前記シーケンスに対して前記
自己回帰メッシュ生成ニューラルネットワークを調整するステップを備える、請求項17に記載の方法。
【請求項21】
前記面デコーダが
、画像埋め込みの前記シーケンスに相互注意を適用する、請求項13に従属する請求項
19に記載の方法。
【請求項22】
前記面デコーダが、ボクセル埋め込みの前記シーケンスに相互注意を適用する、請求項13に従属する請求項20に記載の方法。
【請求項23】
前記頂点デコーダが
、画像埋め込みの前記シーケンスに相互注意を適用する、請求項6に従属する請求項
19に記載の方法。
【請求項24】
前記頂点デコーダが、ボクセル埋め込みの前記シーケンスに相互注意を適用する、請求項6に従属する請求項20に記載の方法。
【請求項25】
1つまたは複数のコンピュータによって遂行されると、前記1つまたは複数のコンピュータに、請求項1から
24のいずれか一項に記載の方法
の動作を実行させる命令を記憶する、1つまたは複数のコンピュータ可読ストレージ媒体。
【請求項26】
1つまたは複数のコンピュータと、前記1つまたは複数のコンピュータによって遂行されると、前記1つまたは複数のコンピュータに、請求項1から
24のいずれか一項に記載の方法
の動作を実行させる命令を記憶する1つまたは複数のストレージデバイスとを備える、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、ニューラルネットワークを使用してオブジェクトの3次元メッシュを生成することに関する。
【背景技術】
【0002】
ニューラルネットワークは、受信した入力の出力を予測するために、非線形ユニットの1つまたは複数の層を使用する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワーク内の次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、それぞれのパラメータセットの現在の値に従って、受信した入力から出力を生成する。
【先行技術文献】
【非特許文献】
【0003】
【文献】Vaswaniらによる、Attention Is All You Need、arXiv:1706.03762
【文献】Raffelらによる、Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer、arXiv:1910.10683
【文献】Devlinらによる、BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, arXiv:1810.04805
【発明の概要】
【課題を解決するための手段】
【0004】
本明細書は、3次元(3D)メッシュを生成する、すなわち、オブジェクトの3次元メッシュの頂点と面を指定する出力シーケンスを生成するために、自己回帰メッシュ生成ニューラルネットワークを使用する、1つまたは複数の物理的な場所にある1つまたは複数のコンピュータのシステムについて説明する。
【0005】
本明細書に記載される主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実装することができる。
【0006】
オブジェクトの表現を生成するためにニューラルネットワークを使用して従来の手法では、たとえば、ボクセル、点群、占有関数、およびサーフェスなどのオブジェクト形状の代替表現を使用して3Dオブジェクトを生成していた。これらの従来の手法では、メッシュの再構築は後処理ステップとして残され、結果として得られるメッシュの品質は、良くても異なる程度である。一方、説明されている技法は、自己回帰ニューラルネットワークを使用して3Dメッシュを直接生成し、メッシュに存在する順序付けされていない要素および個別の面構造を効果的に説明する。これにより、多様で現実的なジオメトリを有し、様々なグラフィックスアプリケーションにおいて直接使用することができるメッシュが得られる。
【0007】
さらに、生成されたメッシュは、様々なコンテキスト入力のいずれかにおいて効果的に調整することができるため、システムは、現実的なジオメトリを有しながら、コンテキスト入力によって特徴付けられる特定のタイプのオブジェクトのメッシュを効果的に生成することができる。
【0008】
本明細書に記載される主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に示される。主題の他の機能、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0009】
【
図1】メッシュ生成システムの一例を示す図である。
【
図2】メッシュ生成ニューラルネットワークの動作の一例を示す図である。
【
図3】メッシュを指定する出力シーケンスを生成するための例示的なプロセスの流れ図である。
【
図4】メッシュの頂点を生成するための例示的なプロセスの流れ図である。
【
図5】メッシュの面を生成するための例示的なプロセスの流れ図である。
【発明を実施するための形態】
【0010】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【0011】
本明細書は、3次元メッシュを生成する、すなわち、オブジェクトの3次元メッシュの頂点と面を指定する出力シーケンスを生成するために、自己回帰メッシュ生成ニューラルネットワークを使用する、1つまたは複数の物理的な場所にある1つまたは複数のコンピュータのシステムについて説明する。
【0012】
たとえば、メッシュ生成ニューラルネットワークは、メッシュの頂点の頂点座標を含む第1のシーケンスを生成する頂点生成ニューラルネットワークと、メッシュの面の各々を構成する頂点を識別するメッシュトークンを含む第2のシーケンスを生成する面生成ニューラルネットワークとを含むことができる。
【0013】
メッシュ生成ニューラルネットワークは自己回帰であるため、各出力位置においてニューラルネットワークによって生成された確率分布からサンプリングすることによって同じコンテキスト入力が与えられた場合に、多くの異なる高品質のメッシュを生成するためにメッシュ生成ニューラルネットワークを使用することができる。
【0014】
出力シーケンスが生成されると、システムはメッシュを生成してレンダリングすることもでき、メッシュの生成とレンダリングのためにシーケンスを別のシステムに提供することもできる。たとえば、システムは、任意の所与のコンテキスト入力から1つまたは複数のメッシュを生成することができ、生成されたメッシュを、たとえば、ビデオゲーム、仮想現実シーン、映画、または別の仮想世界に挿入するための候補として、ユーザに提示するために提供することができる。別の例として、生成されたメッシュは、コンピュータビジョンシステムの出力として使用することもでき、たとえば、ロボットの制御ポリシの学習の一部として、ロボットによって相互作用される仮想環境に挿入することもできる。
【0015】
したがって、1つまたは複数の他のニューラルネットワークは、出力メッシュに基づいてトレーニングされ得る。たとえば、コンピュータビジョンニューラルネットワークは、出力メッシュの形状を認識するようにトレーニングされ得る。あるいは、仮想環境内の出力メッシュによって表されるオブジェクトに対してタスクを実行するようにエージェントがトレーニングされ得る。これは、出力メッシュを仮想環境内に配置し、タスクを実行するために出力メッシュによって表されるオブジェクトに対してアクションを実行するように強化学習エージェントに指示することを含み得る。強化学習エージェントは、仮想環境において行われたアクションに応じて受信した報酬に基づいてトレーニングされ得る。
【0016】
生成されたメッシュは、オブジェクトを含む画像(たとえば、オブジェクトの画像、または仮想環境などのシーン内のオブジェクトの画像)をレンダリングするために使用され得る。レンダリングプロセスは、オブジェクトを含む3次元(3D)シーンのビューを表す2次元(2D)画像を生成し得る。このプロセスによって、環境内にオブジェクトの位置を割り当てることができる。これは、仮想現実または拡張現実のレンダリングプロセスの一部であり得る。したがって、環境のビュー(たとえば、視野)の位置および/または向きは、物理的(実世界)環境のビュー(たとえば、視野)の位置および/または向き(たとえば、仮想現実または拡張現実ヘッドセット内の1つまたは複数のセンサなどの、1つまたは複数のセンサからの位置および/または向きの測定値に基づく)に依存し得る。
【0017】
1つまたは複数の生成されたメッシュは、コンピュータグラフィックスエンジン(たとえば、グラフィックスプロセッサユニット、GPU)に直接統合され得る。これらは、前述のように、仮想環境の画像をレンダリングするためにコンピュータグラフィックスエンジンによって使用することができる。コンピュータグラフィックスエンジンは、1つまたは複数の生成されたメッシュを記憶し、1つまたは複数の生成されたメッシュによって表される1つまたは複数のオブジェクトをレンダリングする必要がある場合(たとえば、1つまたは複数のオブジェクトが仮想環境の一部を形成する場合)、それらにアクセスし得る。変形は、レンダリングプロセスの一部として記憶されたメッシュに適用され得る(たとえば、レンダリングされるオブジェクトの構造における変化を反映するため)。メッシュは、レイトレーシングのために使用され得る。たとえば、レイトレーシングは、仮想環境内で仮想光線がモデル化され、特定のメッシュによって表されるオブジェクトからの反射がレンダリングプロセスの一部としてモデル化されるレンダリングであり得る。これは、光線とメッシュの間の交差を識別し、オブジェクトのプロパティに基づいて交差をシェーディングすることを含み得る。
【0018】
さらなる例として、生成されたメッシュは、生成されたメッシュによって記述された形状を有する1つまたは複数のオブジェクトを製造するために、1つまたは複数の(付加的な)製造デバイスに出力され得る。この出力は、メッシュのスライスおよび/または製造に適した形式へのメッシュの変換(たとえば、積層造形による)を含み得る。このフォーマットは、1つまたは複数の製造デバイスによって遂行されると、1つまたは複数の製造デバイスに1つまたは複数のオブジェクトを製造させる命令のセット(たとえば、Gコード)であり得る。命令のセットは、コンピュータ可読命令であり得る。製造用のフォーマットへのメッシュの変換は、積層造形の場合の層の厚さなどの、ユーザの好みに基づく場合がある。
【0019】
図1は、メッシュ生成システム100の一例を示している。メッシュ生成システム100は、1つまたは複数の場所にある1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムの一例であり、以下に説明するシステム、コンポーネント、および技法を実装することができる。
【0020】
メッシュ生成システム100は、自己回帰メッシュ生成ニューラルネットワーク110を使用して、オブジェクトの3次元メッシュ152を指定する出力シーケンス150を生成するシステムである。
【0021】
3次元オブジェクトの3次元メッシュは、3次元オブジェクトの形状を定義する頂点と多角形面の集合である。
【0022】
場合によっては、すべての多角形面が同じサイズ、すなわち同じ数の頂点を有することもある。具体例として、すべての多角形面を3つの頂点を有する三角形にすることができる。
【0023】
いくつかの他の場合では、面は可変サイズ、すなわち可変数の頂点を有することができる。面が異なる数の頂点を有することを許可すると、オブジェクトのよりコンパクト表現、すなわち、面の数がより少ない表現になり得る。たとえば、オブジェクトの大きな平面は、複数の三角形の集合としてではなく、多くの頂点を有する単一の面として表すことができる。
【0024】
本明細書では、システム100は、可変数の頂点を有する多角形面から構成されるメッシュを生成するように構成されていると説明されている。しかし、システム100は、各面が同じ数の頂点を有するように、メッシュ内の各面の頂点の数を制限するように代わりに構成することもできることを理解されたい。
【0025】
いくつかの実装形態では、システム100は、無条件のメッシュ生成を実行する、すなわち、入力に対する明示的な調整なしで出力シーケンス150を生成する。これらの場合、システム100は、自己回帰メッシュニューラルネットワーク110をトレーニングするために使用されるトレーニングデータに現れたメッシュを表す現実的なメッシュを生成する。
【0026】
いくつかの他の実装形態では、システム100は条件付きメッシュ生成を実行する。これらの場合、システム100は、生成されるメッシュのコンテキストを指定するコンテキスト入力102を受信し、ニューラルネットワーク110を使用して、コンテキスト入力102によって特徴付けられるオブジェクトの現実的なメッシュを生成する。
【0027】
システム100は、様々なコンテキスト入力のいずれかを受信するように構成することができる。
【0028】
一例として、コンテキスト入力は、オブジェクトのオブジェクトクラスを識別する入力、すなわち、生成されたメッシュが表すオブジェクトが属するオブジェクトクラスを指定する入力であり得る。
【0029】
別の例として、コンテキスト入力は、オブジェクトの画像、すなわち、生成されたメッシュが表すオブジェクトの画像である入力とすることができる。
【0030】
別の例として、コンテキスト入力は、オブジェクトのボクセル化された表現、すなわち、生成されたメッシュが表すオブジェクトを表すボクセルのセットとすることができる。
【0031】
条件付きメッシュ生成の実行、すなわち、コンテキスト入力102においてニューラルネットワーク110をどのように調整するかについては、
図3~
図5を参照して以下でより詳細に説明する。
【0032】
一般に、システム100によって生成される出力シーケンス150は、オブジェクトの3次元メッシュ152の頂点および面を表す。特に、出力シーケンスは、メッシュの頂点の頂点座標を含む第1のサブシーケンスと、メッシュの面の各々を構成する頂点を識別するメッシュトークンを含む第2のサブシーケンスを含むことができる。
【0033】
出力シーケンス150が生成されると、システム100はメッシュ152を生成してレンダリングすることもでき、メッシュの生成とレンダリングのためにシーケンス150を別のシステムに提供することもできる。たとえば、システム100は、任意の所与のコンテキスト入力102から1つまたは複数のメッシュを生成することができ、生成されたメッシュを、たとえば、ビデオゲーム、仮想現実シーン、映画、または別の仮想世界に挿入するための候補として、ユーザに提示するために提供することができる。別の例として、生成されたメッシュは、コンピュータビジョンシステムの出力として使用することもでき、たとえば、ロボットの制御ポリシの学習の一部として、ロボットによって相互作用される仮想環境に挿入することもできる。
【0034】
したがって、1つまたは複数の他のニューラルネットワークは、出力メッシュに基づいてトレーニングされ得る。たとえば、コンピュータビジョンニューラルネットワークは、出力メッシュの形状を認識するようにトレーニングされ得る。あるいは、仮想環境内の出力メッシュによって表されるオブジェクトに対してタスクを実行するようにエージェントがトレーニングされ得る。これは、出力メッシュを仮想環境内に配置し、タスクを実行するために出力メッシュによって表されるオブジェクトに対してアクションを実行するように強化学習エージェントに指示することを含み得る。強化学習エージェントは、仮想環境において行われたアクションに応じて受信した報酬に基づいてトレーニングされ得る。
【0035】
生成されたメッシュは、オブジェクトを含む画像(たとえば、オブジェクトの画像、または仮想環境などのシーン内のオブジェクトの画像)をレンダリングするために使用され得る。レンダリングプロセスは、オブジェクトを含む3次元(3D)シーンのビューを表す2次元(2D)画像を生成し得る。このプロセスによって、環境内にオブジェクトの位置を割り当てることができる。これは、仮想現実または拡張現実のレンダリングプロセスの一部であり得る。したがって、環境のビュー(たとえば、視野)の位置および/または向きは、物理的(実世界)環境のビュー(たとえば、視野)の位置および/または向き(たとえば、仮想現実または拡張現実ヘッドセット内の1つまたは複数のセンサなどの、1つまたは複数のセンサからの位置および/または向きの測定値に基づく)に依存し得る。
【0036】
1つまたは複数の生成されたメッシュは、コンピュータグラフィックスエンジン(たとえば、グラフィックスプロセッサユニット、GPU)に直接統合され得る。これらは、前述のように、仮想環境の画像をレンダリングするためにコンピュータグラフィックスエンジンによって使用することができる。コンピュータグラフィックスエンジンは、1つまたは複数の生成されたメッシュを記憶し、1つまたは複数の生成されたメッシュによって表される1つまたは複数のオブジェクトをレンダリングする必要がある場合(たとえば、1つまたは複数のオブジェクトが仮想環境の一部を形成する場合)、それらにアクセスし得る。変形は、レンダリングプロセスの一部として記憶されたメッシュに適用され得る(たとえば、レンダリングされるオブジェクトの構造における変化を反映するため)。メッシュは、レイトレーシングのために使用され得る。たとえば、レイトレーシングは、仮想環境内で仮想光線がモデル化され、特定のメッシュによって表されるオブジェクトからの反射がレンダリングプロセスの一部としてモデル化されるレンダリングであり得る。これは、光線とメッシュの間の交差を識別し、オブジェクトのプロパティに基づいて交差をシェーディングすることを含み得る。
【0037】
さらなる例として、生成されたメッシュは、生成されたメッシュによって記述された形状を有する1つまたは複数のオブジェクトを製造するために、1つまたは複数の(付加的な)製造デバイスに出力され得る。この出力は、メッシュのスライスおよび/または製造に適した形式へのメッシュの変換(たとえば、積層造形による)を含み得る。このフォーマットは、1つまたは複数の製造デバイスによって遂行されると、1つまたは複数の製造デバイスに1つまたは複数のオブジェクトを製造させる命令のセット(たとえば、Gコード)であり得る。命令のセットは、コンピュータ可読命令であり得る。製造用のフォーマットへのメッシュの変換は、積層造形の場合の層の厚さなどの、ユーザの好みに基づく場合がある。
【0038】
出力シーケンス150は、出力シーケンス150内の複数の出力位置の各々に、それぞれのメッシュトークンを含む。システム100は、自己回帰方式でメッシュトークンを生成するために、自己回帰メッシュ生成ニューラルネットワーク110を使用し、すなわち、メッシュトークンを1つずつ生成することによって、任意の所与の位置におけるメッシュトークンの生成は、出力シーケンス150内の任意の以前の出力位置においてすでに生成されたメッシュトークンに調整される。出力位置に応じて、メッシュトークンは、メッシュの頂点の座標の値、メッシュの頂点の識別子、停止トークン、または新しい面トークンのいずれかを含むことができる。これらの各々について、以下でより詳細に説明する。
【0039】
言い換えれば、任意の所与の出力位置において、システム100は、所与の出力位置の可能なメッシュトークンの確率分布を生成するために、自己回帰メッシュ生成ニューラルネットワーク110を使用して所与の出力位置の入力を処理することによって、所与の出力位置においてメッシュトークンを生成し、ニューラルネットワーク110は、(少なくとも)出力シーケンス内の任意の以前の出力位置においてすでに選択されている任意のメッシュトークンに基づいて調整される。
【0040】
次いで、システム100は、確率分布を使用して、出力位置の可能なメッシュトークンから出力位置においてメッシュトークンを選択する。
【0041】
システム100が所与の出力位置の入力を生成する方法、および所与の出力位置に対してどのトークンが可能なメッシュトークンであるかは、所与の出力位置が出力シーケンス150のどこに位置するかに依存する。
【0042】
特に、以下でより詳細に説明されるように、システム100は、第1に、メッシュ内の多角形面の頂点の座標を表すメッシュトークンを生成し、次いで、メッシュ内の複数の面の各々を構成する頂点を識別するメッシュトークンを生成する。
【0043】
したがって、出力シーケンス150は、出力位置の第1のセットと、それに続く出力位置の第2のセットとを含む。出力位置の第1のセットにあるメッシュトークンは、メッシュ頂点の座標を表し、出力位置の第2のセットにあるメッシュトークンは、複数の面の各々を構成する頂点を識別する。
【0044】
言い換えれば、システム100は、頂点および面にわたる結合分布を条件付き分布の積に因数分解し、1つは可能な頂点座標(すべての頂点座標が、すでに選択された座標に調整されている)に対するものであり、もう1つは面頂点(各面頂点が、すでに選択されている面頂点に調整されている)に対するものである。
【0045】
メッシュを定義するデータを生成する、すなわち、出力シーケンス150を生成するために、システムはまず頂点分布から頂点をサンプリングし、次いで、サンプリングされた頂点を条件とする面分布から面をサンプリングする。
【0046】
これは、
図2を参照して、以下でより詳細に説明する。
【0047】
図2は、自己回帰メッシュ生成ニューラルネットワーク110の動作の一例を示している。
【0048】
図2の例では、ニューラルネットワーク110は、頂点生成ニューラルネットワーク210および面生成ニューラルネットワーク220を含む。
【0049】
図2に示されるように、システムは第1に、頂点生成ニューラルネットワークを使用してメッシュ頂点を生成し、次いで、生成された頂点に調整されたメッシュ面を生成する。
図2の例において、頂点生成ニューラルネットワーク210は、3つの出力位置において頂点のz、y、およびx座標を生成するように示されている。
【0050】
特定のメッシュ頂点を生成するために、システムは頂点のx、y、およびz座標を3次元座標系で生成し、ここで、zは垂直軸である。
【0051】
より具体的には、システムは、連結された値のタプルの平坦化されたシーケンスとして頂点座標を生成し、各タプルは、メッシュ頂点の異なる1つの3つの座標を表す。具体例として、各タプル内で、3つの値がメッシュの(z、y、x)座標をこの順序で表すことができる。
【0052】
したがって、出力シーケンス150は、メッシュの頂点の座標を指定する出力位置の第1のセットを含む。すなわち、第1のセットにおける各出力位置は、メッシュの頂点のうちの1つのz、y、またはx座標のいずれかに対応する。
【0053】
特に、第1のサブセットの任意の出力位置において座標を生成するために、システムは、頂点生成ニューラルネットワークを使用して、所与の出力位置の前の出力位置においてすでに生成された座標のシーケンスを処理する。
【0054】
頂点生成ニューラルネットワークは、すでに生成された各座標の各々の埋め込みを生成する頂点デコーダ(図面において、「頂点Transformer(vertex Transformer)」と呼ばれる)と、所与の出力位置における座標の可能な値の確率分布を生成するために埋め込みのシーケンスを処理する頂点デコーダとを含む。これは、頂点エンコーダを使用して埋め込みを生成し、次いで頂点デコーダを使用して埋め込みのシーケンスを処理することと同等に参照することができる。
【0055】
本明細書で使用される埋め込みは、トークンの数値表現である。特に、埋め込みは、埋め込み空間の数値表現、すなわち、固定数の数値の順序付けられた集合であり、数値の数は埋め込み空間の次元に等しくなる。たとえば、埋め込みは、浮動小数点またはその他のタイプの数値のベクトルにすることができる。
【0056】
たとえば、システムは、可能な座標値の空間を量子化することができ、第1のセットにおける出力位置ごとに、頂点デコーダは、結果として得られる量子化されたセットにおける量子化された座標値に対して確率分布、すなわちカテゴリ分布を生成することができる。次いで、システムは、確率分布を使用して、指定された出力位置のメッシュトークン、すなわち座標値を選択する。これについては、
図4を参照して以下でより詳細に説明する。
【0057】
いくつかの実装形態では、システムは、特定の出力位置に対して無効なメッシュトークンをマスクするために、頂点生成ニューラルネットワークによって出力されるロジットにマスキングを適用する。これについても、
図4を参照して以下で説明する。
【0058】
頂点エンコーダは、様々な方法のいずれかで、所与の座標値の埋め込みを生成することができる。具体例として、埋め込みは、(1)入力トークンがx、y、またはz座標のいずれであるかを示す座標埋め込み、(2)トークンがシーケンス内のどの頂点に属するかを示す位置埋め込み、または(3)トークンの量子化された座標値を表す値埋め込みの2つ以上の組合せ、たとえば、連結、合計、または平均であり得る。埋め込み(1)、(2)、および(3)は、事前に決定することもでき、頂点生成ニューラルネットワークのトレーニングと一緒に学習することもできる。
【0059】
いくつかの実装形態では、頂点の個々の座標を表す、すなわち、各トークンがx、y、またはz座標の1つだけを表すメッシュトークンを生成するのではなく、代わりに、システムは各々が所与の頂点の3つの座標すべてを表す、すなわち、各タプルが1つの頂点の座標のタプル全体を表すことができるメッシュトークンを生成することができる。たとえば、システムは、頂点の3つの座標にわたる確率分布をモデル化するために、離散化されたロジットの混合を使用することができる。
【0060】
頂点座標のシーケンス、すなわち、出力シーケンス150内の位置の第1サブセットにおけるメッシュトークンが生成されると、システムは、オブジェクトの3次元メッシュ内の面を指定するデータを生成するために、面生成ニューラルネットワーク220を使用する。
図2の例は、結果として得られたメッシュの矩形面を構成する4つの頂点を識別する4つのメッシュトークンを生成するニューラルネットワーク220を示している。
【0061】
各面は、出力シーケンス150内の位置の第1のサブセットによって指定される3つ以上の頂点によって定義(「作成」)される。特に、システムは、出力シーケンス150における出力位置の第2のサブセットにおいてメッシュトークンを生成するために、面生成ニューラルネットワークを使用する。第2のサブセットにおけるいずれかの位置にある各メッシュトークンは、(i)頂点生成ニューラルネットワークによって生成された頂点のうちの1つを識別するか、または(ii)前の面が完了し、次の出力位置において次のメッシュトークンから新しい面が開始されることを示す新しい面トークンである。
【0062】
したがって、出力位置の第2のサブセットにおいてメッシュトークンが生成されると、メッシュ内の面は、(i)第2のサブセットにおける第1の新しい面トークンの前にメッシュトークンによって識別される頂点で構成される第1の面、(ii)第2のサブセットにおける任意の2つの新しい面トークンの間の位置にあるメッシュトークンで構成されるそれぞれの面、および(iii)出力シーケンス内の最後の新しい面トークンの後にあるメッシュトークンによって識別される頂点で構成される最後の面である。
【0063】
第2のサブセットにおいてメッシュトークンを生成するために、面生成ニューラルネットワークは、(i)頂点生成ニューラルネットワークの出力によって特定される複数の頂点の各々、(ii)新しい面トークン、および(iii)停止トークンから構成される入力のセットのそれぞれのコンテキスト埋め込みを生成する面エンコーダを含む。
【0064】
面生成ニューラルネットワークはまた、入力のセットのそれぞれのコンテキスト埋め込みに対して調整された面を定義する位置の第2サブセットにおいてメッシュトークンを自己回帰的に生成する面デコーダを含む。
【0065】
第2のサブセットにおけるコンテキスト埋め込みおよびメッシュトークンの生成については、
図5を参照して以下で説明する。
【0066】
システム(または、別のシステム)は、トレーニングデータセット内のメッシュを指定するトレーニング出力シーケンスを含むトレーニングデータ上で自己回帰メッシュ生成ニューラルネットワークをトレーニングし、システムが条件付きメッシュ生成を実行する場合、トレーニング出力シーケンスごとのそれぞれのコンテキスト入力をトレーニングする。
【0067】
特に、自己回帰メッシュ生成ニューラルネットワークが頂点生成ニューラルネットワークおよび面生成ニューラルネットワークを含む場合、システムは、頂点生成ニューラルネットワークによってトレーニング出力シーケンス内のグラウンドトゥルース頂点座標に割り当てられた確率を測定する1つの目的関数を最適化するために、頂点生成ニューラルネットワークをトレーニングすることができる。システムはまた、面生成ニューラルネットワーク(グラウンドトゥルーストレーニングシーケンスからのグラウンドトゥルース頂点で調整された)によってグラウンドトゥルース出力シーケンスによって指定された面に割り当てられた確率を測定する第2の目的関数を最適化するために、面生成ニューラルネットワークをトレーニングする。
【0068】
具体例として、システムは、出力位置の第1のサブセット内の対応する位置において頂点生成ニューラルネットワークによって生成された確率分布によって、所与のグラウンドトゥルース出力シーケンス内のグラウンドトゥルース頂点座標に割り当てられた対数尤度を測定する対数尤度目標を最大化することによって、頂点生成ニューラルネットワークをトレーニングすることができる。
【0069】
別の具体例として、システムは、出力位置の第2のサブセット内の対応する位置における確率分布によって、所与のグラウンドトゥルース出力シーケンス内のグラウンドトゥルース頂点に割り当てられた対数尤度を測定する対数尤度目標を最大化することによって、面生成ニューラルネットワークをトレーニングすることができる。
【0070】
図3は、3次元メッシュを定義する出力シーケンスを生成するための例示的なプロセス300の流れ図である。便宜上、プロセス300は、1つまたは複数の場所に配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、メッシュ生成システム、たとえば、適切にプログラムされた
図1のメッシュ生成システム100は、プロセス300を実行することができる。
【0071】
任意で、システムはコンテキスト入力を取得する(ステップ302)。特に、上述のように、システムは、システムが任意の入力に対して調整されていない現実的なメッシュを生成する無条件のメッシュ生成を実行するか、システムがコンテキスト入力によって特徴付けられているオブジェクトの現実的なメッシュを生成する条件付きメッシュ生成を実行することができる。
【0072】
システムは、自己回帰メッシュ生成ニューラルネットワークを使用して、オブジェクトの3次元メッシュの頂点と面を指定する出力シーケンスを生成する(ステップ304)。
【0073】
出力シーケンスは、複数の出力位置の各々においてそれぞれのメッシュトークンを含み、システムはメッシュトークンを順番に、すなわち1つずつ生成する。
【0074】
所与の出力位置においてメッシュトークンを生成するために、システムは自己回帰メッシュ生成ニューラルネットワークを使用してタイムステップの入力を処理し、ニューラルネットワークは、所与の出力位置の可能なメッシュトークンの確率分布を生成するために、任意の以前の出力位置においてすでに選択されている少なくとも任意のメッシュトークンに対して調整される。可能なメッシュトークンは、通常、出力シーケンス内の出力位置によって異なる。コンテキスト入力が取得されると、自己回帰メッシュ生成ニューラルネットワークはまた、出力位置のうちの少なくともいくつかのコンテキスト入力に対して調整される。
【0075】
具体例として、出力シーケンスは、出力位置の第1のセットと、それに続く出力位置の第2のセットとを含むことができる。出力位置の第1のセットにおけるメッシュトークンは、メッシュの複数の頂点の各々のそれぞれの座標とすることができ、すなわち、第1の出力位置の1つにおける各メッシュトークンは、メッシュの頂点のうちの1つの座標である。出力位置の第2のセットにあるメッシュトークンは、メッシュの複数の面の各々を構成する複数の頂点から頂点を識別し、すなわち、第2の出力位置のうちの1つにある各メッシュトークンは、メッシュの面の1つのそれぞれの頂点を識別する。
【0076】
出力位置の第1のセットにおける位置の確率分布を生成することは、
図4を参照して以下で説明する。
【0077】
出力位置の第2のセットにおける位置の確率分布を生成することは、
図5を参照して以下で説明する。
【0078】
次いで、システムは、確率分布を使用して、所与の出力位置の可能なメッシュトークンから出力位置にあるメッシュトークンを選択する。たとえば、システムは、最も高い確率を有する可能なメッシュトークンを選択することもでき、確率分布からメッシュトークンをサンプリングすることもできる。
【0079】
システムが確率分布からサンプリングするように構成されている場合、システムは、計算の自己回帰の性質により、同じコンテキスト入力が与えられた場合に、複数の異なる現実的なメッシュを生成することもできる。
【0080】
図4は、出力位置の第1のサブセット内の所与の出力位置においてメッシュトークンを生成するための例示的なプロセス400の流れ図である。便宜上、プロセス400は、1つまたは複数の場所に配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、メッシュ生成システム、たとえば、適切にプログラムされた
図1のメッシュ生成システム100は、プロセス400を実行することができる。
【0081】
システムは、メッシュのすべての頂点のそれぞれの座標を生成するために、プロセス400を繰り返し実行することができる。システムによって生成されるメッシュは、一般に可変数の頂点を有するため、システムは、停止基準が満たされるまで、プロセス400を繰り返し実行することができる。
【0082】
たとえば、システムは、システムがあらかじめ定められた停止トークンを選択するまで出力位置の第1のサブセットに座標を追加するために、プロセス400を繰り返し実行することができる。あらかじめ定められた停止トークンが選択されると、システムは、停止トークンの前に選択されたメッシュトークンを、出力位置の第1のサブセットのトークンとして扱う。
【0083】
システムは、出力シーケンス内の任意の以前の出力位置においてすでに選択されている任意の頂点座標のそれぞれの埋め込みを生成する(ステップ402)。特に、システムは、
図2を参照して上述したように、頂点エンコーダを使用して埋め込みを処理することによって、それぞれの埋め込みを生成することができる。
【0084】
システムは、所与の出力位置の確率分布を生成するために、頂点デコーダを使用してそれぞれの埋め込みを処理する(ステップ404)。
【0085】
具体例として、頂点デコーダは、Transformerアーキテクチャを有するニューラルネットワークであり得、すなわち、Transformer内にデコーダのアーキテクチャを有する場合がある。
【0086】
Transformerは、出力生成の一部として、その入力に対して注意メカニズムを繰り返し適用するニューラルネットワークである。Transformerは、Transformerの構成に応じて、エンコーダとデコーダの両方、エンコーダのみ、またはデコーダのみを含むことができる。Transformerの構成の例と、Transformerのコンポーネントの詳細、たとえば注意層、注意ネットワークの層内のフィードフォワード層、ネットワーク出力を生成する注意ニューラルネットワークの出力層については、Vaswaniらによる、Attention Is All You Need、arXiv:1706.03762、Raffelらによる、Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer、arXiv:1910.10683、およびDevlinらによる、BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, arXiv:1810.04805において詳細に説明されており、その内容全体が参照により本明細書に組み込まれる。
【0087】
一般に、頂点デコーダの出力は、すべての可能な座標および停止トークンについて、それぞれのロジット、すなわちそれぞれのスコアを含む。いくつかの実装形態では、確率分布を生成するために、システムは次にソフトマックスをそれぞれのロジットに適用する。
【0088】
いくつかの他の実装形態では、システムは、第1のサブセットの以前の位置において選択されたメッシュトークンが与えられた場合に有効ではない、出力位置の任意の可能なメッシュトークンのロジットを最初にマスクし、次いで、マスキングの後、確率分布を生成するためにソフトマックスを適用する。メッシュトークンのロジットをマスクすることは、ロジットを、たとえば負の無限大などの値に設定することを指し、ソフトマックスによって処理されると、メッシュトークンの結果として得られる確率がゼロになるようにする(したがって、分布からサンプリングするとき、または分布における最高の確率を選択するときに、メッシュトークンはシステムによって選択されない)。
【0089】
たとえば、システムは、直前の座標が頂点の最後の座標、たとえば、タプルが(z、y、x)である場合の頂点のx座標でない限り、停止トークンのロジットをマスクすることができ、すなわち、最後の頂点の座標が部分的にしか生成されていないときに、システムが座標の生成を停止しないようにする。
【0090】
別の例として、システムは頂点の生成に追加の要件を課し、次いで、出力位置の一部またはすべてにおいて、それらの要件が確実に満たされるようにするためにロジットをマスクすることができる。
【0091】
具体例として、システムは、頂点の3つの座標のうちの指定された1つの位置に基づいて、頂点が生成される順序に要件を課すことができる。各頂点の指定された座標を生成するとき、システムは、順序に課せられた要件に違反する指定された座標の値のロジットをマスクすることができる。
【0092】
たとえば、システムは、頂点のz座標が単調に増加すること、すなわち、最小のz座標値を持つ頂点が最初に生成され、頂点のz座標がそれ以降単調に増加することを要求することができる。この例では、第1の頂点以外の任意の頂点のz座標を生成するときに、システムは、前の頂点のz座標の値以下の任意の可能な座標値(または同等の、先行するすべての頂点のすべてのz座標値よりも大きくない任意の可能な座標値)のロジットをマスクすることができる。
【0093】
システムは、確率分布を使用して、たとえば確率分布からメッシュトークンをサンプリングすることによって、出力位置においてメッシュトークンを選択する(ステップ406)。上述のように、システムが停止トークンをサンプリングまたは選択すると、システムはすでに生成された頂点をメッシュ内の唯一の頂点として識別する。
【0094】
図5は、出力位置の第2のサブセット内の出力位置においてメッシュトークンを生成するための例示的なプロセス500の流れ図である。便宜上、プロセス500は、1つまたは複数の場所に配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、メッシュ生成システム、たとえば、適切にプログラムされた
図1のメッシュ生成システム100は、プロセス500を実行することができる。
【0095】
システムは、(i)複数の頂点の各々、(ii)新しい面トークン、および(iii)停止トークンから構成される入力セットのそれぞれのコンテキスト埋め込みを生成する(ステップ502)。セット内の任意の所与の入力の埋め込みはセット内の他の入力の値に依存するため、埋め込みは「コンテキスト」埋め込みと呼ばれる。
【0096】
それぞれのコンテキスト埋め込みを生成するために、システムは、面エンコーダを使用して(i)複数の頂点の各々、(ii)新しい面トークン、および(iii)停止トークンを処理する。上述のように、新しい面トークンは指定されたトークンであり、選択されると、現在の面が完成し、次のメッシュトークンが新しい面における次の頂点を示すことを示す。
【0097】
面エンコーダは、シーケンス内の入力の各々のそれぞれの埋め込みを生成するために入力シーケンスを処理するように構成されるニューラルネットワークである。具体例として、面エンコーダは、Transformerアーキテクチャを有するニューラルネットワークであり得、すなわち、Transformer内のエンコーダのアーキテクチャを有することができる。
【0098】
次いで、システムは、3次元メッシュの面を生成するために、すなわち、3次元メッシュの面ごとに、面を構成する頂点を識別するために、ステップ504~510を繰り返し実行することができる。システムによって生成されるメッシュは一般に可変数の面を有するため、システムは、停止基準が満たされるまでステップ504~510を繰り返し実行することができる。
【0099】
たとえば、システムは、システムが停止トークンを選択するまで面の頂点を識別するために、ステップ504~510を繰り返し実行することができる。停止トークンが選択されると、システムは停止トークンの前に選択されたメッシュトークンによって定義された面をメッシュの面として扱う。
【0100】
言い換えれば、システムは、出力位置においてメッシュトークンを選択するために、出力位置の第2のセット内の出力位置ごとにステップ504~510を実行する。
【0101】
特に、出力位置の第2のセット内の特定の出力位置においてメッシュトークンを選択するために、システムは、第2のセット内の任意の以前の出力位置において生成された各メッシュトークンのそれぞれの埋め込みを含む所与の出力位置に対するデコーダ入力を生成する(ステップ504)。特に、システムは、メッシュトークンのそれぞれの埋め込みのシーケンスを生成する。
【0102】
システムは、様々な方法のいずれかで、所与のメッシュトークンの埋め込みを計算することができる。具体例として、システムは、メッシュ内のメッシュトークンによって識別される頂点の位置を特徴付ける1つまたは複数の埋め込みを生成し、次いで、これらの埋め込みをメッシュトークンのコンテキスト埋め込みと結合、たとえば連結、平均、または合計することができる。頂点の位置を特徴付ける埋め込みは、頂点が属する面の識別子の埋め込み、面内の頂点の位置の埋め込み、またはその両方を含むことができる。埋め込みは、事前に決定することもでき、ニューラルネットワークのトレーニングと一緒に学習することもできる。
【0103】
システムは、ポインタベクトルを生成するために、面デコーダを使用してデコーダ入力を処理する(ステップ506)。ポインタベクトルは、コンテキスト埋め込みと同じ次元を有するベクトルである。
【0104】
面デコーダは、入力のシーケンスを処理することと、出力としてベクトルを生成することとを行うように構成されるニューラルネットワークである。具体例として、面デコーダは、Transformerアーキテクチャを有することができ、すなわち、マスクされたTransformerデコーダアーキテクチャを有することができ、ポインタベクトルは、Transformerデコーダによって生成されるデコーダ入力における最後の埋め込みの出力埋め込みにすることができる。
【0105】
いくつかの実装形態では、マスクされたTransformerデコーダ内の各注意層は、デコーダ入力に対してマスクされた自己注意のみを適用する。いくつかの他の実装形態では、頂点に対する追加の調整を可能にするために、マスクされたTransformerデコーダは、頂点のコンテキスト埋め込みに相互注意を適用する1つまたは複数の注意層も含む。
【0106】
システムは、ポインタベクトルと、(i)複数の頂点の各々、(ii)新しい面トークン、および(iii)停止トークンのそれぞれのコンテキスト埋め込みから、(i)複数の頂点の各々、(ii)新しい面トークン、および(iii)停止トークンの確率分布を生成する(ステップ508)。
【0107】
特に、コンテキスト埋め込みごとに、システムはコンテキスト埋め込みとポインタベクトルとの間の内積を計算して、ロジットを生成する。
【0108】
いくつかの実装形態では、次いで、システムは確率分布を生成するためにロジットにソフトマックスを適用する。
【0109】
いくつかの実装形態では、システムは、以前の位置において選択されたメッシュトークンが与えられた場合に有効ではない出力位置の任意の可能なメッシュトークンのロジットをマスクし、次いで、確率分布を生成するためにソフトマックスを適用する。たとえば、システムは、各頂点が少なくとも1つの面に含まれるまで、停止トークンのロジットをマスクすることができる。別の例として、特定の面内で、システムは面の一部としてすでに含まれている頂点のロジットをマスクすることができる。
【0110】
システムは、確率分布を使用して、たとえば確率分布からサンプリングすることによって、所与の位置においてメッシュトークンを選択する(ステップ510)。
【0111】
上述のように、いくつかの実装形態では、システムはコンテキスト入力を受信し、受信したコンテキスト入力上で生成された出力シーケンスを調整する。
【0112】
システムは様々な方法でこの条件付けを実装することができるが、一般に、出力シーケンス内の出力位置の少なくともいくつかについて、システムは、コンテキスト入力に対して調整されたメッシュ生成ニューラルネットワークを使用して、出力シーケンスにおいてメッシュトークンを生成する。
【0113】
コンテキスト入力上でメッシュ生成ニューラルネットワークを調整するいくつか特定の例を次に示す。
【0114】
上述のように、いくつかの実装形態では、コンテキスト入力は、たとえば、オブジェクトのオブジェクトクラスの識別子など、メッシュ全体を記述するグローバルな機能である。これらの実装形態では、システムはオブジェクトクラスの学習済み埋め込みを生成し、必要に応じて、頂点生成および面生成ニューラルネットワークによって動作される埋め込みと同じ次元に埋め込みを投影することができる。次いで、システムは埋め込みを、ニューラルネットワークの隠れ層のうちのいくつかまたはすべての出力と組み合わせることができる。具体例として、頂点生成および面生成のニューラルネットワークがTransformerアーキテクチャを備えている場合、システムは、Transformerの各ブロック内の自己注意層に続く中間表現と埋め込みを組み合わせることができる。
【0115】
いくつかの他の実装形態では、コンテキスト入力は、画像またはボクセルのセットなどの高次元入力である。高次元のコンテキスト入力の場合、システムは共同で、すなわち、メッシュ生成ニューラルネットワークと共同で、コンテキスト入力のコンテキスト埋め込みのシーケンスを出力するドメインに適したエンコーダをトレーニングする。
【0116】
次いで、頂点デコーダ、面デコーダ、またはその両方を、コンテキスト埋め込みのシーケンスに対して調整することができる。特に、頂点デコーダ、面デコーダ、またはその両方は、コンテキスト埋め込みのシーケンスに相互注意を適用する1つまたは複数の注意層を含むことができる。
【0117】
特に、コンテキスト入力がオブジェクトの画像である場合、システムは、画像埋め込みのシーケンスを生成するために画像エンコーダニューラルネットワークを使用して画像を処理し、上記のように画像埋め込みのシーケンス上でメッシュ生成ニューラルネットワークを調整する。具体例として、画像エンコーダニューラルネットワークは、一連のダウンサンプリング残差ブロックで構成される2次元畳み込みニューラルネットワークにすることができる。
【0118】
同様に、コンテキスト入力がオブジェクトを表すボクセルのセットである場合、システムは、ボクセル埋め込みのシーケンスを生成するためにボクセルエンコーダニューラルネットワークを使用してボクセルを処理し、上記のようにボクセル埋め込みのシーケンス上でメッシュ生成ニューラルネットワークを調整する。具体例として、ボクセルエンコーダニューラルネットワークは、一連のダウンサンプリング残差ブロックで構成される3次元畳み込みニューラルネットワークにすることができる。
【0119】
本明細書は、システムおよびコンピュータプログラムコンポーネントに関連して「構成される(configured)」という用語を使用する。特定の動作またはアクションを実行するように構成された1つまたは複数のコンピュータのシステムは、システムに、動作中にシステムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せがインストールされていることを意味する。特定の動作またはアクションを実行するように構成された1つまたは複数のコンピュータプログラムは、その1つまたは複数のプログラムが、データ処理装置によって遂行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。
【0120】
本明細書で説明される主題および機能動作の実施形態は、デジタル電子回路、具体的に具現化されたコンピュータソフトウェアまたはファームウェア、本明細書で開示される構造およびそれらの構造的等価物を含むコンピュータハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することができる。本明細書で説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による遂行のために、またはデータ処理の動作を制御するために、有形の非一時的ストレージ媒体上にエンコードされたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。コンピュータストレージ媒体は、機械可読ストレージデバイス、機械可読ストレージ基板、ランダムまたはシリアルアクセスメモリデバイス、あるいはそれらのうちの1つまたは複数の組合せとすることができる。代替的または追加的に、プログラム命令は、人工的に生成された伝搬信号、たとえば、データ処理装置による遂行のために適切な受信装置に送信するための情報をエンコードするために生成される機械生成の電気信号、光信号、または電磁気信号においてエンコードすることができる。
【0121】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例としてプログラム可能なプロセッサ、コンピュータ、あるいは複数のプロセッサまたはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置はまた、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路であってもよく、またはさらにそれを含んでもよい。装置は、ハードウェアに加えて、コンピュータプログラムの遂行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組合せを構成するコードを任意で含むことができる。
【0122】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれる、または記述されることもあるコンピュータプログラムは、コンパイラ型またはインタープリタ型言語、宣言型または手続き型言語を含む、任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、あるいはモジュール、コンポーネント、サブルーチン、またはコンピューティング環境における使用に適した他のユニットとしてなど、任意の形式で展開することができる。プログラムは、ファイルシステム内のファイルに対応する場合があるが、必ずしもそうである必要はない。プログラムは、他のプログラムまたはデータ、たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプトを保持するファイルの一部、問題のプログラム専用の単一のファイル、あるいは複数の調整されたファイル、たとえば1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルに記憶することができる。コンピュータプログラムは、1つのコンピュータ、または1つのサイトに配置されているか、複数のサイトに分散され、データ通信ネットワークによって相互接続されている複数のコンピュータにおいて遂行されるように展開することができる。
【0123】
本明細書では、「データベース(database)」という用語は、データの任意の集合を指すために広く使用されており、データは任意の特定の方法で構造化する必要はなく、またはまったく構造化する必要がなく、1つまたは複数の場所にあるストレージデバイスに記憶することができる。したがって、たとえば、索引データベースは、データの複数の集合を含むことができ、その各々が異なる方法で編成およびアクセスされ得る。
【0124】
同様に、本明細書では、「エンジン(engine)」という用語は、1つまたは複数の特定の機能を実行するようにプログラムされたソフトウェアベースのシステム、サブシステム、またはプロセスを指すために広く使用されている。通常、エンジンは1つまたは複数のソフトウェアモジュールあるいはコンポーネントとして実装され、1つまたは複数の場所にある1つまたは複数のコンピュータにインストールされる。場合によっては、1つまたは複数のコンピュータが特定のエンジン専用になり、他の場合では、複数のエンジンを同じコンピュータにインストールして実行することもできる。
【0125】
本明細書で説明するプロセスおよび論理フローは、入力データ上で動作して出力を生成することによって機能を実行するために、1つまたは複数のコンピュータプログラムを遂行する1つまたは複数のプログラマブルコンピュータによって実行することができる。プロセスおよび論理フローはまた、たとえばFPGAまたはASICなどの専用論理回路によって、あるいは専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによって実行することができる。
【0126】
コンピュータプログラムの遂行に適したコンピュータは、汎用マイクロプロセッサまたは専用マイクロプロセッサまたはその両方、あるいは他の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実行または遂行するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。中央処理装置およびメモリは、専用論理回路によって補足または組み込むことができる。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば磁気、光磁気ディスク、または光ディスクを含むか、そこからデータを受信する、そこにデータを転送する、あるいはその両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを備えている必要はない。さらに、コンピュータは、たとえば、ほんの数例を挙げると、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、あるいはポータブルストレージデバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブなどの別のデバイスに組み込むことができる。
【0127】
コンピュータプログラム命令およびデータを記憶することに適したコンピュータ可読媒体は、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。
【0128】
ユーザとの相互作用を提供するために、本明細書に記載された主題の実施形態は、ユーザに情報を表示するための表示デバイス、たとえば、CRT(陰極線管)またはLCD(液晶表示装置)モニタ、ならびにユーザがコンピュータに入力を提供することができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有するコンピュータ上に実装することができる。ユーザとの相互作用を提供するために他の種類のデバイスを使用することもでき、たとえば、ユーザに提供されるフィードバックは、たとえば視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなど、任意の形態の感覚的フィードバックであってよく、またユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信することができる。さらに、コンピュータは、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、たとえば、ウェブブラウザから受信した要求に応じて、ユーザのデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互作用することができる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージをパーソナルデバイス、たとえば、メッセージングアプリケーションを実行しているスマートフォンに送信し、ユーザからの応答メッセージを受信することによって、ユーザと相互作用することができる。
【0129】
機械学習モデルを実装するためのデータ処理装置はまた、たとえば、機械学習トレーニングまたは生産の一般的で計算集約的な部分、すなわち推論、ワークロードを処理するための専用ハードウェアアクセラレータユニットを含むことができる。
【0130】
機械学習モデルは、たとえば、TensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークなどの機械学習フレームワークを使用して実装および展開することができる。
【0131】
本明細書に記載されている主題の実施形態は、たとえば、データサーバとしてのバックエンドコンポーネントを含む、またはミドルウェアコンポーネント、たとえばアプリケーションサーバを含む、あるいは、フロントエンドコンポーネント、たとえば、グラフィカルユーザインターフェース、ウェブブラウザ、またはユーザが本明細書で説明されている主題の実装形態と相互作用することができるアプリを備えたクライアントコンピュータを含む、または1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムにおいて実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形式または媒体、たとえば通信ネットワークによって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえばインターネットを含む。
【0132】
コンピューティングシステムは、クライアントとサーバを含むことができる。通常、クライアントとサーバは互いに離れており、通常は通信ネットワークを通じて相互作用する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアントとサーバの関係を有するコンピュータプログラムによって発生する。いくつかの実施形態では、サーバは、クライアントとして機能するデバイスと相互作用するユーザにデータを表示し、ユーザからのユーザ入力を受信するなどの目的で、HTMLページなどのデータをユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ、たとえばユーザ相互作用の結果は、デバイスからサーバにおいて受信することができる。
【0133】
本明細書は多くの特定の実装形態の詳細を含むが、これらは、発明の範囲または特許請求の範囲に対する制限として解釈されるべきではなく、特定の発明の特定の実施形態に固有の機能の説明として解釈されるべきである。別個の実施形態の文脈において本明細書に記載されている特定の機能は、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈において説明されている様々な機能は、複数の実施形態で個別に、または任意の適切なサブコンビネーションで実装することもできる。さらに、機能は特定の組合せにおいて作用するものとして上で説明され、最初はそのように主張されることさえあるが、主張された組合せからの1つまたは複数の機能は、場合によっては組合せから削除される可能性があり、主張された組合せはサブコンビネーションまたはサブコンビネーションのバリエーションを対象とする場合がある。
【0134】
同様に、動作は特定の順序で図面に示され、特許請求の範囲に記載されているが、これは、望ましい結果を達成するために、そのような動作が示されている特定の順序または連続した順序で実行されること、または示されているすべての動作が実行されることを必要とするものとして理解されるべきではない。特定の状況では、マルチタスクと並列処理が有利な場合がある。さらに、上述の実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものと理解されるべきではなく、説明したプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に統合するか、または複数のソフトウェア製品にパッケージ化することができることを理解されたい。
【0135】
主題の特定の実施形態が説明された。他の実施形態は、以下の特許請求の範囲内にある。たとえば、特許請求の範囲に記載されているアクションは、異なる順序で実行することができ、依然として望ましい結果を達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または連続した順序を必ずしも必要としない。場合によっては、マルチタスクと並列処理が有利な場合がある。
【符号の説明】
【0136】
100 メッシュ生成システム
102 コンテキスト入力
110 自己回帰メッシュ生成ニューラルネットワーク
150 出力シーケンス
152 3次元メッシュ
210 頂点生成ニューラルネットワーク
220 面生成ニューラルネットワーク
300 プロセス
400 プロセス
500 プロセス