以下、図面を参照して本発明の実施形態について説明する。図面及び実施形態の説明は一例として示すものであり、本発明を限定するものではない。
まず、本実施形態における3次元情報の表現に用いる関数の一例として、シーンを表現する輝度場 (Radiational Fields) について説明する。以下の式により、座標 p = (x, y, z) 、姿勢 d = (θ, φ) 及び座標 p における特徴量 z(p) を入力すると、密度 ρ 、色 c = (r, g, b) を返す関数 F を利用して、任意の位置及び方角 (視点方向) に配置されているカメラによりシーンを撮影した画像を生成する。
x, y, zは、それぞれの軸に対する座標を示し、座標 p は、シーンを表現する輝度場における点を示す。 θ, φ は、姿勢 d を表す角度を示し、姿勢 d は、座標 p を示す点のどの方向から見ているかを示す。言い換えると、姿勢 d は、画像を取得する方角において、カメラの焦点位置から画像を構成するそれぞれの画素に対して延伸する半直線の方向、例えば、所定の軸に対する角度を示す。 z(p) は、撮影対象となるシーンにおける座標 p の特徴を表す値であり、所定次元数のベクトルでもよい。 z(p) の抽出の詳細は後述する。
式(1)における F は、例えば、ニューラルネットワークモデルを含んで表現される。このニューラルネットワークモデルの学習については後述する。限定されない一例として、密度 ρ は、座標 p 及び z(p) に依存する値であり、色 c は、座標 p 、姿勢 d 及び z(p) に依存する値である。この関数 F は、例えば、 MLP (Multi-Layer Perceptron) により表現される。また、 MLP は、 ReLU 等の適切な活性化関数を含む。
本実施形態において、シーンは、階層的なボクセルを用いて表現される。各階層のボクセルは、それぞれに離散符号が付与される。この階層構造は、例えば、8分木を用いて表現される。
より具体的には、座標 p における特徴量 z(p) が、階層的に形成されたボクセルのそれぞれに定義される離散符号から取得される。訓練済みのモデルは、座標 p 、姿勢 d 及び取得された特徴量 z(p) に基づいて、シーンにおける当該座標 p 及び姿勢 d における色 c 及び密度 ρ を生成する。この色 c 及び密度 ρ を用いることにより、取得したいカメラ位置及び方角からのシーンの画像を取得することができる。
まず、ボクセルの階層構造と、ボクセルに定義される離散符号から座標における特徴量を取得する形態について説明する。
図1は、シーンを含むボクセルを表現した一例を示す図である。例えば、画像を取得したい領域を上図に示すようにボクセル V0 で表す。このボクセル V0 を第0階層のボクセルとする。
このボクセル V0 のそれぞれの辺を2分した (例えば、2等分した) 辺を新たに生成し、これらの辺により切断されたそれぞれの立体領域を第1階層のボクセル V1 とする。このように、1個のボクセルに対して8個のボクセルを生成することで、階層的なボクセル構造として、シーンの領域を表現する。以下、第 n 階層のボクセルのそれぞれを Vn_ν 等と表す。 ν は、第 n 階層におけるボクセルの識別子を表す。
ボクセルは、後述で詳しく説明するように8分木 (Octree) で表現されてもよい。8分木で表現する場合、ルートのボクセルを第0階層のボクセルとして表現し、このルートから派生するエッジとノードで形成される木よりボクセルを表現する。
図に示す例では、第0階層から第1階層のボクセルの形成は、1個の領域を8個の領域にするものであるが、これ以降の階層においては、全てのボクセルに対して次の階層のボクセルを形成する必要は無い。例えば、第1階層のボクセル V1 から第2階層のボクセル V2 の形成においては、ボクセル V1 のうち分割する必要がある、又は、分割することで利点があるボクセルに対してのみ次の階層のボクセル V2 が形成されるものであってもよい。逆に、特に必要が無いボクセルに対しては、それ以上ボクセルを分割しなくてもよい。
輝度場としてこの階層構造のボクセルを用いる場合、例えば、密度情報が0ではないボクセルに対して次の階層のボクセルを形成してもよい。また、色情報が0ではないボクセルに対して次の階層のボクセルを形成してもよい。すなわち、何らかの撮影対象が存在しない領域においては、次の階層のボクセルを形成しない構成としてもよい。このように必要の無いボクセルについて下位の構造を有しないようにすることで、利用する記憶領域又は演算性能等のリソースを節約することができる。
8分木で表現する場合には、着目している階層のボクセルを生成する時点において、空ボクセルであることを指定することができる。この空ボクセルについて、次の階層を生成しない形態としてもよい。
また、輝度場として、対象の表面を示すボクセルを配置してもよい。この場合、表面で囲まれている領域は、対象の内部であり外側からは見ることができない、言い換えると、カメラで撮影できない領域である可能性が高い。このような領域についても、上記と同様に、次の階層のボクセルを形成しない構成としてもよい。
図2は、一実施形態に係るボクセルの表現の一例を示す図である。具体的には、第 (n - 1) 階層の1つのボクセルであるボクセル V(n - 1)_0 を抽出して示すものである。左下に示す座標系は、座標設定の一例であるが、このような座標系に限定されるものではない。また、座標系の原点は、任意の位置に設定することができる。例えば、座標系の原点は、演算の簡単のため、ボクセル V0 の中心に設定されてもよいが、これに限定されるものではない。
以下において、例えば、この座標系の x, y, z が最小の点を有するボクセルから順番に順序付けするが、順序付けについてもこれに限定されるものではない。図2においては、例えば、第 (n - 1) 階層のボクセル V(n - 1)_0 に着目しているが他のボクセルについても同様に定義することが可能である。
ボクセル V には、1対1対応した離散符号が割り当てられている。例えば、第 n 階層のボクセル Vn_00 には、図2の下図に示されるように、離散符号 zvn_0 から zvn_7 が割り当てられる。この離散符号は、異なる K 個のベクトルの中から選択されたベクトルでもよく、ボクセルを構成するそれぞれの頂点に割り当てられてもよい。また、別の例としては、ボクセル内の任意の点、例えば、ボクセルの中心点に離散符号を割り当ててもよい。階層が異なるボクセル間で共通する頂点 (同一座標の頂点) を有する場合、階層ごとに異なる離散符号を割り当ててもよいし、同一の離散符号を割り当ててもよい。
以下においては、説明の簡単のため、特に記載が無い限り、離散符号 z は、各ボクセル V のそれぞれの頂点に割り当てられている。これは、限定されない一例とした定義であり、境界を含むボクセル V 内の任意の点に離散符号が割り当てられてもよい。
また、図2の上図に示されるように、ボクセルは、隣接するボクセルと共有する頂点において、同じ離散符号が割り当てられる。例えば、ボクセル Vn_00 と、ボクセル Vn_01 とは、共有する面の4頂点において、離散符号 zvn_1 、 zvn_3 、 zvn_5 、 zvn_7 を共有する。例えば、ボクセル Vn_00 と、ボクセル Vn_03 とは、共有する2頂点において、離散符号zvn_3 、zvn_7 を共有する。
このように、離散符号は、ボクセル V の頂点ごと、換言すると、各階層のボクセルの頂点である格子点ごとに割り当てられる。もちろん、当該階層においてボクセルが形成されていない、すなわち、1つ上位の階層のボクセルにおいて下位のボクセルが形成されていない領域においては、離散符号が割り当てられなくてもよい。
ボクセル V 内の点を示す輝度 (色 c 及び密度 ρ ) は、この各頂点の離散符号に基づいて決定される。例えば、ボクセル Vn 内の点の特徴量は、当該ボクセル Vn のそれぞれの頂点の離散符号と、それぞれの頂点からの距離に基づいた重み付けにより算出される。例えば、単純に着目点と頂点までの距離に比例した離散符号の重み付け平均により、着目点の特徴量を算出してもよい。この他、 tri-linear 補間等の手法により、任意の点の特徴量が算出されてもよい。
第 n 階層におけるボクセル Vn_ν に属する点においては、頂点の離散符号 zVn_ν
(i) (i ∈ [0, ... , 7]) を用いて第 n 階層の特徴量が算出される。例えば、座標 p が図2のボクセル Vn 内の位置を示す場合には、座標 p の点における特徴量 zn(p) は、以下のような式で算出される。
ここで、 i は、それぞれの頂点を表すインデクスであり、 Σ は、 i に関する和を表し、 α(i) は、例えば、 tri-linear 補間におけるボクセル Vn における座標 p の各頂点に対する重みであり、 Σα(i) = 1 を満たす値であってもよい。補間手法は、 tri-linear 補間に限定されるものではなく、適切な他の補間手法を用いることができる。 α は、例えば、 p のボクセル内における位置及びボクセルにおける離散符号が割り当てられる位置により各種補間方法に基づく重み付け係数として適宜算出することができる。離散符号 zv0
(i) は、対象となるボクセルの各頂点に割り当てられており、図2の Vn_00 に属する点においては、 zVn_0 、 zVn_1 、・・・、 zVn_7 である。
式(2)によれば、8頂点に定義されている離散符号を全て用いてボクセルに属する点の特徴量を算出しているが、8頂点の離散符号のうち一部を用いて特徴量を算出してもよい。
ここで、 p がボクセルの境界を形成する表面に存在する場合には、当該表面を形成する4個の頂点の離散符号を用いて式(2)により特徴量を算出してもよい。 p がボクセルの境界を形成する辺に存在する場合には、当該辺の線分の両端に定義される2個の頂点の離散符号を用いて式(2)により特徴量を算出してもよい。
別の例として、 p がボクセルの境界を形成する表面に存在する場合には、当該表面を有する2個のボクセルのそれぞれの頂点における12個の離散符号を用いてもよい。 p が4個のボクセルの境界を形成する辺に存在する場合には、当該辺を共有する4個のボクセルのそれぞれの頂点における18個の離散符号を用いてもよい。
また、別の例として、 p がボクセルの境界に存在する場合には、 p に対応する点を共有する複数のボクセルのうち、任意のボクセルを選択して式(2)により特徴量を算出してもよい。例えば、識別子が最も小さいボクセルのそれぞれの頂点の離散符号を用いてもよい。
ボクセルの頂点における特徴量は、当該頂点に割り当てられている離散符号を用いてもよい。別の例として、当該頂点に割り当てられている離散符号及び当該頂点に隣接する8個の頂点に割り当てられている離散符号を用いて、重み付け演算をして当該頂点の特徴量としてもよい。
なお、後述するように、ボクセル内にシーンにおける画像を取得する対象が存在しない場合には、当該ボクセルが空であることをボクセル情報に付与してもよい。空ボクセルである場合には、特徴量の演算を省略してもよい。
演算量及び/又は演算に必要となるメモリ領域を削減するためには、ボクセルの所定頂点に離散符号を割り当てるのが望ましいが、設計等によりボクセル内の任意の点に離散符号を割り当てることもできる。
階層ごとに特徴量 zn(p) が算出された後に、この階層ごとに算出された特徴量 zn(p) を混合することでボクセル全体から見た座標 p の特徴量z(p)が算出される。
βnは、階層ごとに割り振られる混合割合を示す。例えば、N階層までの特徴量から全階層として特徴量を取得する場合には、 β0, β1, ... , βn = 1 / N としてもよい。別の例として、シーン、入力等に依存するように、 βn(p, s) としてもよい。さらに別の例として、深い階層ほど混合割合が小さくなるように、又は、深い階層ほど混合割合が大きくなるように設定してもよい。また、これらの例に限定されるものではなく、適切な特徴量を取得できるように任意の割合としてもよい。
画素の値の推論には、式(3)に示す特徴量を用いて、撮影位置から画素の位置に対応する3次元空間を通過する経路 (半直線又は線分) に属する点列における色と密度を取得する。撮影位置は、画像を取得する位置 (カメラの焦点) とする。撮影位置におけるカメラの画像を取得する方角情報から、姿勢 d が取得される。上述したように、姿勢 d は、例えば、カメラの焦点から取得する画像のそれぞれの画素に対して延伸した半直線の方向として定義されてもよい。
座標 p 及び姿勢 d における色 c 及び密度 ρ は、例えば、式(3)で取得された特徴量 z(p) と、座標 p 及び姿勢 d の情報を式(1)の関数 F に入力することで取得できる。この F を表す訓練済みモデルは、特徴量 z(p) 、座標 p 及び姿勢 d から色 c 及び密度 ρ を取得するデコーダである。すなわち、式(3)で示す特徴量 z(p) を、デコーダに代入することより、座標 p 及び姿勢 d における色 c 及び密度 ρ の情報を取得することができる。
撮影位置から取得する画像内のある画素に対する3次元空間内の経路は、上述したようにカメラの焦点から取得する画素に対して延伸した半直線の方向により取得することが可能である。姿勢 d は、この半直線の方向及びカメラの焦点の位置情報 (及び必要であればカメラの内部パラメータ等) から算出でき、座標 p は、この半直線上の点として取得することができる。
もちろん、撮影位置から座標 p に至る経路に属する点列のそれぞれの点における特徴量についても、座標 p と同様に、階層的に形成されたボクセルの各頂点の離散符号を用いて算出することができる。
そして、カメラの位置から座標 p に至るまでの点列における色と密度の情報を生成し、この生成した色と密度の情報を用いることにより、撮影した画像の色の情報を取得する。なお、上記には、表面に関する情報については記載されていないが、もちろん色等の情報とともに、表面の情報を用いてもよい。この表面の情報は、特徴量 z に含まれてもよい。
座標 p の情報は、上述したように1つの画素に対して、撮影位置及び撮影方向に基づいて、複数が抽出される。そして、この1つの画素に対して、座標 p における色の情報を密度の情報に基づいて投影することで、画素の色値が決定される。
最終的に画素の色の情報は、 r(t) をカメラの基準点 (例えば、カメラの焦点) o と姿勢 d を用いて r(t) = o + td とすると、一例として以下の式により表現される。
ここで、 t は、色 c 及び密度 ρ の取得を取得するために用いられる姿勢 d 方向における基準点からの距離 r を示すパラメータである。 tn 、 tf は、それぞれ姿勢 d 方向について色 c 及び ρ を取得する r の最小値及び最大値を示すパラメータである。 τ(t) は、光線が tn から t まで他の粒子に当たらない確率、すなわち、 tn から t まで到達する光線の経路において加算された密度を表す。
言い換えると、式(5)は、ピクセルにおけるアルファブレンディングに関係する式である。式(4)における ρ 及び c の算出に、上述の合成された座標 p における特徴量 z(p) が用いられる。 ρ(r) 及び c(r, d) の算出には、 NeRF-VAE 等の論文と同様の計算が実行されてもよい。
以下、上記の特徴量 z の生成方法及び階層的なボクセルについてさらに詳しく説明する。また、説明においては、図1、図2のようなボクセルの表現を2次元で表現することがあるが、これらの表現は、3次元空間における図面 (ボクセル) に相当するものである。
まず、階層構造のボクセルの構成と、ボクセルのそれぞれの頂点に割り当てられている離散符号から、特徴量を取得する具体例について説明する。
撮影対象となるシーンを表す空間を、図1に示すような第0階層のボクセル V0 とする。別の例として、シーンがクラスタリング等により分割されている場合には、分割された領域ごとに第0階層のボクセル V0 を設定してもよい。
なお、画像を取得したい対象の全てを含む空間にボクセルを定義するのではなく、対象の一部が含まれる空間に第0階層のボクセルを定義してもよい。
ボクセルは基本的には立方体であってもよいが、適切に特徴量の取得ができる形態であれば、直方体、又は、その他の3次元形状により定義されてもよい。
別の例として、画像を取得する対象が存在する直方体の領域を複数の同じ大きさの立方体に分割し、この分割された立方体を第0階層のボクセルとしてもよい。この場合、訓練又は推論においては、第0階層から第 n 階層までについてのそれぞれの階層における特徴量と、画像を取得する対象が存在する最終的な直方体の領域 (スーパーボクセル) の頂点の離散符号から取得されるスーパーボクセルの特徴量とを合成して全体としての特徴量を算出してもよい。
別の例として、画像を取得する直方体の領域全体を含むような立方体のボクセルを第0階層のボクセルとして定義してもよい。このように、第0階層のボクセルの定義は、適切にシーンの特徴量が取得できる形態であればどのような形状、大きさ等の形態であってもよい。
これは、第0階層のボクセルの上位階層のボクセルとして8分木の構成に拘束されないスーパーボクセルを定義するのと同等である。計算コスト、メモリ量等の問題に鑑みて、どの階層を第0階層とするかを決定してもよい。この場合、スーパーボクセルの画像を取得するタイミングで適切にそれぞれの第0階層のボクセルの出力値を各種補間手法によりブレンディングしてもよい。
説明の簡単のため、シーンを取得する領域を立方体の第0階層のボクセルとして定義するが、上記の記載に基づいて、適宜変更することが可能である。また、図2における z 軸の方向から見た正面視として図示している。もちろん、ボクセル、離散符号等は、 z 軸に沿った方向に対しても同様に定義される。
例えば、図3以降の図において、犬が図面の手前側 (z 座標が小さい側) 、人が図面の奥側 (z 座標が大きい側) にいるとすると、第1階層のボクセル (図4) においては、限定されない一例として、 V1_0: 犬、 V1_1: 犬の尻尾及び後ろ脚領域、 V1_2: 空 (empty) 、 V1_3: 空 (empty) 、 V1_4: 犬の向こう側、 V1_5: 人の足、 V1_6: 空 (empty) 、 V1_7: 人の上半身、がそれぞれ存在するボクセルである。
図3は、第0階層のボクセル V0 の一例を示す図である。この図に示すように、例えば、第0階層としては、画像を取得する対象が全てボクセルに含まれるように、ボクセルを設定してもよい。ボクセル V0 の各頂点には、左下の頂点に当該ボクセルの離散符号 zV0
(0) が、その他の頂点にはそれぞれ所定の順番にしたがって、離散符号 zV0
(1) 、 zV0
(2) 、 zV0
(3) (さらに、図面奥側に、zV0
(4) 、 zV0
(5) 、 zV0
(6) 、 zV0
(7)) が割り当てら (定義さ) れる。
以下においては、頂点、ボクセル及びボクセル頂点を示すインデクスは、 x 、 y 、 z 、の小さい方から順番にモートンオーダーにしたがって付与されているが、説明のために付与するものであり、これに限定されるものではなく任意の符号を割り当ててよい。
例えば、図3において、点で示したボクセル V0 の頂点に対して、離散符号 zv0
(0) 、 zV0
(1) 、 zV0
(2) 、 zV0
(3) 、 (zV0
(4) 、 zV0
(5) 、 zV0
(6) 、 zV0
(7)) がそれぞれ割り当てわれている。第0階層において、ボクセル内の任意の座標 p における特徴量は、これらの離散符号 zv0
(i) から算出される。
第0階層のボクセルに対してスーパーボクセルが定義される場合には、隣接する第0階層のボクセルと共通する頂点においては、共通する離散符号をそれぞれの頂点の離散符号として割り当ててもよい。例えば、スーパーボクセルが定義される場合には、それぞれの頂点の離散符号は、隣接するボクセルに定義されている離散符号を各頂点の離散符号として割り当ててもよい。
以下においてはスーパーボクセルがないものとして説明するが、同様にスーパーボクセルが定義されている場合には、階層ごとに、第0階層の境界に備えられるボクセル内の特徴量の算出には、隣接するボクセルの離散符号を用いてもよい。
図4は、ボクセル V0 から生成される第1階層のボクセル V1 の一例を示す図である。点線で示すように、対となる第0階層のボクセル V0 をそれぞれの辺の中央で分割し、第1階層のボクセル V1 を生成する。この生成は、後述するように、再帰的に実行されてもよい。
ボクセル V0 は、例えば、第1階層のボクセル V1_0 、・・・、 V1_7 に分割される。第1階層のそれぞれのボクセル V1_j に対して、それぞれ頂点に離散符号 zV1_j
(i) が割り当てられる。例えば、図4に表示されている正面視の状態においては、ボクセル V1_0 において矢印で示されるように所定の頂点に対して zV1_0
(0) 、 zV1_0
(1) 、 zV1_0
(2) 、 zV1_0
(3) 、 (zV1_0
(4) 、 zV1_0
(5) 、 zV1_0
(6) 、 zV1_0
(7)) が離散符号として割り当てられる。
図に示されるように、隣接するボクセル間で共有される頂点については、同じ離散符号が定義されてもよい。例えば、 zv1_0
(1) = zv1_1
(0) 、 zv1_0
(2) = zv1_2
(0) 、 zv1_0
(3) = zv1_1
(2) = zv1_2
(1) = zv1_3
(0) として割り当てられてもよい。
ここで、例えば、ボクセル V1_2 には、シーンとして色値を取得する対象がないとする。このような空ボクセルに対しては、固定値としてあらかじめ設定されている空ボクセルを表す離散符号が割り当てられてもよい。すなわち、図4において、 zV1_2
(0) 、 zV1_2
(1) 、 zv1_2
(2) 、 zV1_2
(3) の値によらず、ボクセル V1_2 内の任意の点における特徴量を、空を表す特徴量をあらかじめ割り当てておいてもよい。
この空ボクセルの離散符号として、隣接するボクセルと共通する離散符号 (zV1_2
(0) 、 zV1_2
(1) 、 zV1_2
(3)) を頂点ごとに設定すると、本来反射光等の強度が0である点に対して隣接するボクセルに起因する何らかの値を有する結果となる。
このような場合を回避するために、式(2)の演算の前に、当該ボクセルが空であるか否かを当該ボクセルに定義されている離散符号を読み取ることで判断してもよい。空ボクセルと判断された場合には、空ボクセルについて特徴量取得の演算を省略することもできる。すなわち、空ボクセルの離散符号を取得した場合、当該ボクセルn内の任意の点における特徴量を、空ボクセルであることを示す離散符号 zempty で表してもよい。例えば、図4においては、 zv1_2
(2) として、 zempty を割り当ててもよい。
図5は、ボクセル V1_0 を抜き出した図である。この図5に示すように、図3と同様に、第1階層のボクセルにおいてもその頂点に対してそれぞれ離散符号が割り当てられている。第1階層の他のボクセルも同様である。
なお、対象が存在しないか否かは、3次元のボクセル内に対象の少なくとも一部が存在しているかを考慮して判断してもよい。本開示の図面においては、正面視で表現されているが、例えば、図4においてボクセル V1_3 には対象が存在せずに、ボクセル V1_7 にのみ存在している可能性もある。このような場合には、もちろん、ボクセル V1_3 についても空ボクセルであると判断し、このボクセル V1_3 については、これ以下の階層のボクセルを生成しなくてもよい。
図6は、第2階層のボクセル V2 の形成の一例を示す図である。第1階層のボクセルに対する離散符号の定義後、この第1階層のボクセル V1 をそれぞれ分割することで、第2階層のボクセルが生成される。第2階層のボクセル V2 は、例えば、上述と同様に、第1階層のボクセル V1 の対になる各辺を2分 (2等分でもよい) するように分割することで生成される。
例えば、第1階層のボクセル V1_0 について、2階層目においては、ボクセル V2_00 、・・・、 V2_07 が生成される。同様に、第1階層のボクセル V1_1 について、2階層目においては、ボクセル V2_10 、・・・、 V2_17 が生成される。なお、上述したように、ナンバリングは、限定されない一例として示しているものであり、この通りである必要は無い。例えば、空ボクセルを除いて、0, 1, 2, 3, ... , 9, 10, 11, ... といったように単純にインデクスを付してもよい。また、このインデクスは、階層ごとに分けられる必要も無く、メモリ領域において適切に離散符号が格納できる形態であればよい。
撮影対象が存在する第1階層のボクセル V1_0 、 V1_1 、 V1_4 、 V1_5 、 V1_7 については、第2階層のボクセル V2 を生成する。一方で、撮影対象が存在しない第1階層のボクセル V1_2 、 V1_3 、 V1_6 に対しては、第2階層、及び、第3階層以下の階層のボクセルを生成しなくてもよい。
第1階層のボクセル V1_0 は、第2階層のボクセル V2_00 、・・・、 V2_07 に分割される。同様に、第1階層のボクセル V1_1 、 V1_4 、 V1_5 、 V1_7 は、第2階層のボクセルに分割される。このように、階層ごとに空ボクセルを考慮しない状態で8倍ずつにボクセルが分割される。
この第2階層のボクセル V2 に対しては、上記と同様にそれぞれのボクセル V2 に対して第3階層のボクセル V3 が生成される。この図6においては、例えば、ボクセル V2_31 は、空ボクセルとなる。このような空ボクセルは、上記と同様に、空ボクセルを示す離散符号を割り当ててもよい。さらに、第3階層以下の階層におけるボクセルの生成対象としなくてもよい。
これらのボクセルに関しても第0階層、第1階層と同様に頂点ごとに特徴量を算出するための離散符号が割り当てられる。図2の場合と同様に、離散符号は、頂点ではなくボクセル内 (境界を含む) の任意の位置に割り当てられてもよい。
図7は、第2階層のボクセルにおける離散符号の定義の一例を示す図である。第2階層のボクセルとして、ボクセル V2_03 を抽出している。図7に示すように、ボクセル V2_03 のそれぞれの頂点に離散符号 zV2_03
(0) 、 zV2_03
(1) 、 zV2_03
(2) 、 zV2_03
(3) が割り当てられている。上記と同様に、例えば、zv2_03
(0) = zv2_00
(3) = zv2_01
(2) = zv2_02
(1) であってもよく、他の頂点の離散符号についても同様であってもよい。他の第2階層のボクセル V2 についても同様に離散符号が定義される。
このようなボクセルの階層化及び離散符号の割り当てが必要な階層まで繰り返される。必要な階層は、例えば、解像度に基づいて決定されてもよいし、訓練を行う訓練装置又は推論を行う推論装置の計算能力 (例えば、プロセッサの演算能力又はストレージ、メモリ領域の大きさ) に基づいて決定されてもよい。また、この他の適切な任意の理由により階層の深さを決定することができる。
空ボクセルに限られず、物体の内部を示すボクセルにおいては、それよりも下位のボクセルを生成しなくてもよい。例えば、透明度が0 (光を遮蔽する) である表面に囲まれている領域 (例えば、透明度が0の表面に囲まれている閉領域) は、光の強度を取得する推論、計算対象としなくてもよい。このような領域においては、それ以上のボクセルを生成することにより取得するピクセル値の精度が向上することはない。
このため、他の表面を示すボクセルにより囲まれているボクセルについては、それ以上下位のボクセルに分割されなくてよい。このように表面を示すボクセルにより囲まれているボクセルにおいては、空ボクセルと同じように物体内部であることを示す離散符号をボクセル自体に割り当ててもよい。そして、空ボクセルの場合と同様に、離散符号から特徴量の演算を省略してもよい。
訓練又は推論を実行する処理回路は、記憶装置から空ボクセル及び物体内部のボクセルを読み取った場合には、当該ボクセルを演算対象から外してもよい。処理回路は、空ボクセルにおいては指定された座標における特徴量を演算しなくてもよい。
処理回路は、例えば、座標 p における特徴量を取得するタイミングにおいて、座標 p が属する最も深い階層のボクセルから走査してもよく、このボクセルに空ボクセルであること、又は、物体内部であるボクセルであること、の情報が付与されている場合には、当該特徴量の演算を省略してもよい。尤も、処理回路がアクセラレータとしてのマルチコア又はメニーコアプロセッサであり、演算しても速度が変わらない場合には、処理回路は、全てのボクセルについて演算した後に、空ボクセル又は物体内部のボクセルである特徴量を当該座標 p に対する特徴量 z(p) として割り当ててもよい。
また、別の例として、空のボクセル又は物体内部のボクセルであることを取得した場合、処理回路は、当該座標に関しては、色情報等の算出を省略してもよい。処理回路は、例えば、密度情報を0にすることで空のボクセル又は物体内部のボクセルであることを表してもよい。別の例として、処理回路は、例えば、空のボクセルに属する座標であることを示す色及び/又は密度情報、物体内部のボクセルに属する座標であることを示す色及び/又は密度情報をあらかじめそれぞれ定義しておいてもよい。
座標 p が属するボクセルが空のボクセル又は物体内部のボクセルである場合には、処理回路は、それぞれの場合に対して定義されている色情報/密度情報を当該座標 p に対する色情報/密度情報として、以降の演算 (例えば、式(4)、式(5)に基づく演算) を実行してもよい。また、処理回路は、一度空のボクセル又は物体内部のボクセルと判断されたボクセルに属する座標 p に関しては、以降の演算から当該座標 p に関する演算を省略してもよい。
また、処理回路は、視線 (カメラに入る光線を含む) において表面を示すボクセルに到達した場合には、それよりも視線方向の奥 (向こう側) にあるボクセルを演算対象から外してもよいし、この判断として物体内部のボクセルの離散符号を取得した場合に、当該ボクセルの1個手前のボクセルまでに取得できる特徴量で演算を実行する形態としてもよい。
なお、離散符号を割り当てるボクセルは、シーン内部における画像を取得する対象 (生物、物体、建物等) の表面を含むボクセルだけであってもよい。このように表面を含むボクセルだけに離散符号を割り当てることで、必要なメモリ領域を大幅に削減することができる。さらに、表面を含むボクセルだけの情報を取得することで、その他のボクセルにおけるアルファブレンディングを省略 (密度 ρ = 0) とすることもでき、計算コストを軽減することもできる。
尤も、例えば、霧がかかっている様子を表現するために、密度 ρ が定義されることもある。このような場合においては、カメラの位置からの視線方向に基づいて、視線が表面であることを示す離散符号を有するボクセルまでの経路が属するボクセルについて、離散符号から特徴量を算出する形態としてもよい。
次に、式(2)及び式(3)についての特徴量の取得について一例を挙げて説明する。上述したように、例えば、1シーンに対して1つの第0階層のボクセルが対応してもよい。このボクセルは、複数の階層構造で構成されてもよい。各階層のボクセルのそれぞれの頂点には、当該ボクセル内部の特徴量を算出するための離散符号が階層ごとに割り当てられている。
図8は、特徴量の取得の説明のための図である。例えば、★で示される点における特徴量の取得について説明する。
まず、矢印で示されるように、第0階層のボクセル V0 の頂点に定義されている特徴量 zV0
(0) 、 zV0
(1) 、 zV0
(2) 、 zV0
(3) 、(zV0
(4) 、 zV0
(5) 、 zV0
(6) 、 zV0
(7)) を用いて式(2)より第0階層の特徴量 z0 を、例えば、式(6)を用いて取得する。
α は、例えば、対象となる座標までの距離に基づいて設定される重み付け係数である。上述したように、種々の補間手法の少なくとも1つによりこの重み付けが決定されてもよい。
第0階層の特徴量のみから画像を生成する場合には、画像のピクセルに対応する点についてボクセル V0 の離散符号を参照し、座標 p における特徴量を取得し、この特徴量を式(1)の関数 F に入力することで、色 c 、密度 ρ を取得し、これに基づいて式(4)、式(5)によりそれぞれのピクセルの画素値を取得することができる。この場合、式(3)を省略して、式(6)で取得された特徴量を用いて画素値を取得することもできる。
第0階層よりも深い階層の特徴量を必要とする場合には、第1階層から深い階層へと順番に階層ごとの特徴量を取得する。
図9は、第1階層における特徴量の取得を説明するための図である。同様に★における特徴量を矢印で示すように第1階層のボクセルV1の頂点に定義されている離散符号から算出する。★は、ボクセル V1_0 に存在するので、このボクセル V1_0 の頂点の離散符号を用いて第1階層における特徴量を取得する。第1階層の特徴量 z1 は、例えば、以下の式(7)を用いて算出することができる。
第1階層までの特徴量を用いて画像を生成する場合には、式(6)及び式(7)により算出された z0(p) 及び z1(p) を式(3)に入力することで、当該座標 p における特徴量を取得することが可能となる。この特徴量を適切に処理することで、上記と同様に、ピクセルごとの画素値を取得することができる。
図10は、第2階層における特徴量の取得を説明するための図である。同様の★における特徴量を矢印で示すように第2階層のボクセル V2 の頂点の離散符号から算出する。★は、ボクセル V2_03 に存在するので、このボクセル V2_03 の頂点の離散符号を用いて第2階層における特徴量を取得する。第2階層の特徴量 z2 は、例えば、以下の式(8)を用いて算出することができる。
第2階層までの特徴量を用いて画像を生成する場合には、式(6)から式(8)により算出された z0(p) から z2(p) を式(3)に入力することで、当該座標 p における特徴量を取得することが可能となる。この特徴量を適切に処理することで、上記と同様に、ピクセルごとの画素値を取得することができる。
以下の階層においても同様に、式(2)に基づいて階層ごとの特徴量が取得され、取得された階層ごとの特徴量から式(3)に基づいて、座標 p に対する特徴量を取得する。取得した特徴量と、座標 p 及び姿勢 d から式(1)に基づいて、色 c 及び密度 ρ が取得される。そして、取得された必要な情報を用いて、式(4)、式(5)から、撮影された画像における画素ごとの色値を取得することができる。
ここまでのボクセルの分割についてまとめると、本開示によれば、離散符号を用いて特徴量を算出する形態とすることで、特徴量を記憶するために必要となる記憶領域を削減することができる。例えば、座標ごとに連続した特徴量を定義する場合と比べて大幅にメモリ領域を削減することができる。
また、空白のボクセル又は物体内部のボクセルのうち少なくとも一方を設定することで、計算コスト及び記憶コストを低減することができる。空白のボクセルは、視線がある場合においても一律に透明とすることもできる。このため、このようなボクセルに関しては、ピクセルの値の取得において、演算の対象外とすることができる。
また、階層ごとのボクセルを設定し、特徴量を離散符号から算出できる形態で階層ごとのボクセルに定義することにより、より精度の高い画像の推論をすることができる。また、出力する画像の解像度に応じて、精度の高さを重視するか又は計算コストを重視するかを決定することができる。異なる解像度を有する特徴量をそれぞれのボクセルの階層において定義することができる。このため、ユーザが望んでいる解像度に合わせて演算コストを制御することができる。さらに、高解像度の画像、映像を取得する場合でも、上位のボクセルから順に処理することで、まずは大まかな形状を取得し、徐々に精細な情報を取得するといったことが可能となる。
また、表面に囲まれているボクセルについて下位の階層のボクセルを生成しないことで、ボクセル数を減らし、演算コスト及び記憶領域を削減することが可能となる。
なお、各階層におけるボクセルは、対象が存在しない又は対象 (物体) の内部である、といった条件の他に種々の条件付けにより生成してもよい。
例えば、対象においても平坦な表面と複雑なテクスチャを有する表面があることが多い。このような場合には、平坦な領域においては、浅い階層までの離散符号が定義され、複雑なテクスチャの領域においては、より深い階層までの離散符号が定義されていてもよい。この場合、ボクセルに終端フラグ等の情報を付与し、当該終端フラグが立てられているボクセルは、それよりも深い階層のボクセルが定義されていない旨を表現してもよい。
上記においては、階層構造のボクセルは、画像を取得する対象に基づいて生成されたが、これには限定されず、別の一例として、後述するように訓練において自動的に生成されていくものであってもよい。
(推論装置)
画素値を推論する推論装置は、例えば、処理回路 (プロセッサ) と、記憶装置 (メモリ、ストレージ) と、を備える。処理回路は、例えば、膨大な並列演算が可能である GPU 等のアクセラレータとして動作する適切な演算能力を有するプロセッサを備え、又は、アクセラレータと接続されてもよい。この場合、処理回路は、アクセラレータとは別に制御をするための CPU 等のプロセッサを備えてもよい。記憶装置は、処理において必要となるデータを記憶、保持する装置である。
この推論装置は、後述する訓練装置において生成された情報に基づいて、シーンの少なくとも一部を撮影可能に設置されているカメラからの撮影画像を生成する。以下、撮影画像 (影像を含む。以下、画像と記載する。) を構成する単位を画素とし、この画素の色を示す値 (アルファチャネルを含んでもよい) を画素値とする。
図11は、シーンにおける各ピクセルの画素値を取得する処理について示すフローチャートである。
まず、処理回路は、対象を含む画像の取得位置及び画像の取得方向を取得する (S100) 。この位置及び方向は、一例として、画像を取得するカメラの情報であってもよい。これは、画像をどのような位置から、どのような角度で取得するかを表す情報である。
処理回路は、この情報に基づいて、シーン (ボクセル) が画像 (指定された情報により3次元空間に配置されたカメラによる撮影領域) 内に存在するか否かを判断し、シーンが画像の範囲から外れるようであればエラーを返してもよい。すなわち、取得されたカメラの位置及び方向情報に基づいて撮影をした場合に、シーン内に存在する対象の少なくとも一部が撮影される領域に含まれるか否かを判定して、判定結果に基づいた処理をしてもよい。
また、これを回避するため、例えば、取得する画像に関する情報は、対象からの距離と、画像を取得する方向 (例えば、ボクセルの中心に対してどの方向からの画像を取得するかを示すパラメータ) と、で設定してもよい。この場合、処理回路が画像の取得位置及び画像の取得方向を算出してもよい。
次に、処理回路は、画像の各画素についての処理をループ処理で実行する (S102) 。
処理回路は、各画素において、カメラの位置及び画素値を取得する方向 (視線方向) に基づいて、ボクセル内において画素値を算出するための1又は複数の座標に関する情報を取得する (S104) 。1又は複数の座標に関する情報は、例えば、画素値の算出に必要となる輝度場の情報を取得する座標の位置を示す情報である。この座標に関する情報は、例えば、画像を取得する位置に展開された画素から視線方向 (処理によっては視線方向に基づいた方向) に延伸する直線が第0階層のボクセル V0 を横切る領域における点の座標の情報である。
取得する座標は、例えば、視線上において画素の位置から所定距離ごとに取得される情報であってもよい。また、この座標は、ボクセルと視線とが交差する点から所定距離ごとに取得される情報であってもよい。これらに限定されるものではなく、処理回路は、任意の個数の座標に関する情報を取得してもよい。この取得粒度により、式(4)における積算の粒度が決定する。
また、座標の情報は、例えば、式(4)におけるパラメータ t を用いて示される情報であってもよい。この場合、処理回路は、輝度場の情報を取得する以前のタイミングにおいて、パラメータ t からボクセル内の座標の位置を示す情報を取得してもよい。
次に、処理回路は、画素に対する各座標についての処理をループ処理で実行する (S106) 。
次に、処理回路は、座標に対する各階層についての処理をループ処理で実行する (S108) 。
処理回路は、各階層における座標が属するボクセルの情報を取得する (S110) 。処理回路は、例えば、ボクセルに付与されている識別子の情報を座標情報から取得する。上述の図8から図10の例では、第0階層では V0 、第1階層では V1_0 、第2階層では V2_03 の情報を取得する。
次に、処理回路は、取得されたボクセルにおける当該座標の特徴量 (第2特徴量) を算出する (S112) 。処理回路は、ボクセルの頂点に対して割り当てられている離散符号の情報を取得し、取得された頂点の離散符号の情報に基づいて、着目している階層における当該座標の特徴量を取得する。処理回路は、例えば、式(2)等に基づいて、階層ごとの特徴量を算出する。
全ての階層における処理が終了するまで、S110及びS112の処理が階層ごとに繰り返し実行される (S108') 。
全ての階層において座標の特徴量を取得した後、処理回路は、当該座標に対するボクセル全体としての特徴量を取得する (S114) 。処理回路は、階層ごとに取得された特徴量(第2特徴量)を、例えば、式(3)に入力することで、ボクセル全体としての特徴量(第1特徴量)を取得する。
次に、処理回路は、取得した座標ごとの特徴量 z(x) (第1特徴量) 、及び、座標 x 、姿勢 d の情報を、例えば、式(1)が示すニューラルネットワークモデルに入力することで、座標 x 及び姿勢 d における色 c 、密度 ρ を取得する (S116) 。ニューラルネットワークに入力される位置及び姿勢に関する情報は、例えば、 transformer 等によりエンコードされた情報であってもよい。以下においても、位置及び姿勢に関する情報は、適切に位置エンコードされた情報であってもよい。 transformer を用いて適切に位置エンコードすることで、離散符号をより適切に連続的な特徴量へと変換した状態で復元することができる。
視線上の全ての座標における色 c 、密度 ρ を取得するまで、 S108 から S116 の処理が座標ごとに繰り返し実行される (S106') 。
視線上の演算に必要となる全ての座標における色 c 、密度 ρ を取得した後、処理回路は、対象となる画素の画素値を取得する (S118) 。この処理は、例えば、式(4)、式(5)等を用いて実行される。
そして、処理回路は、全ての画素値が取得されるまで上記 S102 からの処理を繰り返し実行する (S102') 。画像を構成する画素において画素値が取得されると、処理回路は、これらの画素値に基づいて、シーン情報、例えば、シーンを撮影した画像、映像情報を出力する (S120) 。
上記では、 S102 、 S106 及び S108 においてループ処理がある。これらのループ処理は、逐次的に実行される処理に限定されるものではない。 S102 においては、少なくとも一部の画素についての演算が並列処理で実行されてもよい。 S106 においては、少なくとも一部の座標についての演算が並列処理で実行されてもよい。 S108 においては、少なくとも一部の階層についての演算が並列処理で実行されてもよい。すなわち、処理回路は、任意の粒度で並列演算を実行してもよい。
例えば、処理回路は、複数の画素のそれぞれにおける複数の座標のそれぞれに対する複数の階層の演算 (S110、S112) を同じタイミングで実行してもよい。処理回路は、複数の階層の演算後に、座標ごとの特徴量を並列処理で取得 (S114) し、並列処理でこの特徴量に基づいたニューラルネットワークモデルの処理を実行 (S116) してもよい。処理回路は、各画素における輝度場の出力情報からの画素値の取得 (S118) を並列処理で実行してもよい。また、処理回路は、並列演算を実行するにあたり、必要に応じて、例えば、リダクション処理で並列演算を高速化してもよい。
なお、上記においては、ボクセルの構成が定義された後の処理を示しているが、このボクセルの構成の生成については、後述にて詳しく説明する。ボクセルの構成を処理回路が生成する場合には、処理回路は、 S100 の処理の前後において、このボクセルの構成を生成する処理を実行したのちに、 S102 からの処理を実行する。
(訓練装置)
輝度場を表現するニューラルネットモデルを訓練する訓練装置は、例えば、推論装置と同様に、処理回路 (プロセッサ) と、記憶装置 (メモリ、ストレージ) と、を備える。プロセッサは、例えば、膨大な並列演算が可能であるプロセッサといったアクセラレータとして動作する演算能力を有するプロセッサを有し、又は、アクセラレータとして動作する演算能力を有するプロセッサと接続されてもよい。記憶装置は、処理において必要となるデータを記憶、保持する装置である。また、訓練装置は、推論装置と少なくともその一部が同一の装置であってもよい。
訓練装置は、限定されない一例として、 VQ-VAE と同じ枠組みにおいて訓練を実行してもよい。
訓練装置は、複数の画像を用いて1つのシーンに対応するボクセルを生成するためのモデルを訓練する。訓練装置は、学習データとしてボクセルを形成する所定シーンを複数のカメラ情報 C (複数の撮影位置及び撮影方向) により撮影した画像を用いる。別の例としては、異なる内部パラメータを有するカメラ情報を有するカメラで撮影された画像が含まれていてもよい。
訓練装置は、例えば、 VAE の手法により、学習データが入力されて輝度場を (確率分布として) 出力するエンコーダと、当該輝度場とカメラ情報 C に基づいて画像を生成するデコーダと、を訓練する。訓練装置は、一例として、後述するようにこの VAE のエンコーダの出力を VQ-VAE のように離散符号で表す。
図12は、訓練装置の処理の一例を示すフローチャートである。
まず、訓練装置の処理回路は、上記のカメラ情報 C 及び当該カメラ情報 C に基づく画像を取得する (S200) 。
次に、処理回路は、カメラ情報 C 及び画像 I に基づいて、ボクセルを設定する (S202) 。処理回路は、複数のカメラ情報 C 及びそれぞれに対応する複数の画像 I を用いて、シーンのどこに物体が存在するかを推定し、推定結果に応じて以下に示すようにボクセルを設定してもよい。処理回路は、例えば、 k 個のカメラ情報 C0 から Ck-1 及びそれぞれのカメラ情報に対応する画像 I0 から Ik-1 の情報を取得する。
処理回路は、例えば、あらかじめシーンに含まれる物体の3次元位置に関する情報が取得できている場合には、当該情報に基づいてボクセルを設定してもよい。また、処理回路は、例えば、既存の3次元再構成の技術を用いて、シーンに含まれる物体の3次元位置に関する情報を推定し、当該推定した情報に基づいてボクセルを設定してもよい。
上述したように、第0階層のボクセルは、対象となるシーン (3次元空間) 全体を含む領域として設定されてもよい。また、これに限定されるものではなく、対象となるシーンの少なくとも一部を有する領域としてもよいし、スーパーボクセルの概念に基づいた領域で合ってもよい。
図13は、第0階層のボクセルの設定の一例を示す図である。この図に示すように、第0階層のボクセルは、限定されない一例として、シーンに存在する対象 (物体) が全て含まれるように設定される。そして、図において黒点で示されるように、ボクセルの頂点が設定される。
訓練装置 (及び推定装置) においては、ボクセルの領域に関する情報を世界座標として表現してもよい。世界座標の設定は、任意でよいが、限定されない一例として、第0階層のボクセルの中心を原点としてもよい。位置 p は、世界座標の原点に対する位置として表され、姿勢 d は、世界座標の軸に対する所定の表現 (例えば、所定表現の角度又は方向ベクトル) によりで表されてもよい。
また、世界座標の原点に対して、カメラ情報 C が設定されてもよい。この場合、カメラ情報 C ごとに外部パラメータが設定され、画素 (カメラ座標) と物体の点又は小領域 (世界座標) の位置関係の推定に用いられてもよい。
世界座標の表現は、代表的にはデカルト座標系であってもよいが、これに限定されるものではなく、他の直交座標系又は他の座標系において表現し、空間内の点が一意的に表現できる座標系であってもよい。
処理回路は、第0階層のボクセルを設定した後に、第1階層以下のボクセルを生成する。上述したように、第1階層以下のボクセルにおいては、空のボクセル又は閉領域を表すボクセルを設定してもよい。また、例えば、第1階層以下のボクセルにおいては、物体の表面が存在する領域についてのみ生成されるものであってもよい。
例えば、図4のボクセル V1_2 を空ボクセルとし、この空ボクセルに対しては以下のボクセルを (ボクセル V1_2 自身をも) 生成しなくてもよい。すなわち、一例として、空であるボクセルは、上位のボクセルから当該階層のボクセルを生成 (ボクセル V0 においてボクセル V1_2 を生成) しない処理としてもよいし、別の例として、空ボクセル V1_2 を生成した上で、当該ボクセルに対しては下位階層のボクセルを生成しない処理としてもよい。
図14は、第1階層のボクセルの設定の一例を示す図である。この図に示すように、第1階層のボクセルは、限定されない一例として、空のボクセルを生成せず、物体が存在する領域において生成される。図13と同様に、黒点で示されるように、ボクセルの頂点が設定される。
対象となるボクセルが適切に、例えば、空である、表面である、又は、物体内の閉領域である、ことが示される形態であれば、処理及びデータの生成について限定されるものではない。
上述したように、物体の表面のテクスチャに応じて階層を増減させてもよい。例えば、物体の表面が存在する領域について、第1階層以下のボクセルを細かく設定してもよい。
ボクセルの階層数 (階層の深さ D) は、上述したように、ユーザがあらかじめ決めておいてもよいし、階層構造のボクセルを生成するタイミングにおいて自動的に決定されるものであってもよい。
処理回路は、上記に基づいて、第0階層のボクセルから第1階層のボクセルを生成する。そして、同様に、第2階層のボクセル、第3階層のボクセル、・・・、を階層の深さ D まで、すなわち、第 D 階層までのボクセルを生成する。また、このような逐次的な処理に限定されるものではなく、第0階層のボクセルを設定した後には、同じタイミングで第1階層以下のボクセルの設定をすることもできる。
図12に戻り、次に、処理回路は、ボクセルの頂点のベクトルを算出する (S204) 。このボクセルの頂点のベクトルは、例えば、当該ボクセル内部に属する点における特徴量を算出するために必要となる量である。すなわち、このベクトルは、特徴量と同じ次元を有する量である。処理回路は、訓練対象であるエンコーダにカメラ情報 C 及び画像 I を入力し、ベクトルを取得する。
ベクトルは、図13又は図14に示される黒点、すなわち、ボクセルの頂点ごとに取得される。なお、空のボクセルの頂点 (例えば、図14の白点) も算出してもよい。この場合、空のボクセルに対しては、算出はするが、特徴量の取得には用いられない量であってもよい。
エンコーダは、カメラ情報 C 及び画像 I が入力されると、各階層のボクセルの頂点に設定されるベクトルを出力する。すなわち、エンコーダは、第0階層のボクセルV0の頂点に対応する8個のベクトル、第1階層の8個のボクセルV1の頂点に対応する27個のベクトル、第2階層の64個のボクセルV2の頂点に対応する125個のベクトル、・・・、を出力する。上述したように、空のボクセルのみに属する頂点を併せて出力してもよい。
なお、第1階層以下のベクトルの取得には、式(3)に示されている第1特徴量を取得するためにそれぞれの階層の第2特徴量に対する係数 β の値を用いることも可能である。別の例として、式(3)に基づいて、 β の値を並行して最適化するモデルとしてエンコーダが形成されてもよい。
エンコーダに入力される画像 I は、複数であるので、処理回路は、階層の各頂点に設定されるベクトルを任意の手法で混合してもよい。処理回路は、例えば、それぞれの頂点において、それぞれの画像をエンコーダに入力して取得した当該頂点に対する複数のベクトルの平均値を当該頂点のベクトルとしてもよい。
また、別の例として、エンコードされた複数のベクトルを統合して1つのベクトルにするモデルを用いてもよい。この場合、エンコーダ等の訓練とともに、この統合するモデルの訓練を併せて実行してもよい。例えば、画像によっては3次元モデルの裏側といったように、見えない領域がある。
このような場合、見えない領域に対して当該画像からのベクトルの情報を含めてしまうのは誤差又はノイズとなり得る。ベクトルを適切に混合するべく、例えば、 Attention といった手法を含むモデルを用いてもよい。
図12に戻り、次に、処理回路は、頂点に離散符号を割り当てる (S206) 。処理回路は、算出された頂点のベクトルに基づいて、離散符号を取得し、当該頂点に当該離散符号を割り当てる。離散符号は、例えば、 VQ-VAE のようにあらかじめ複数の潜在変数ベクトルが定義されていてもよい。離散符号は、例えば、256個用意されているが、これには限られず、8192個等であってもよい。
これには限られず、離散符号自体を訓練の対象としてもよい。この場合、離散符号を生成するモデルがさらに訓練対象のモデルとして配置されてもよい。シーンごとに離散符号を算出することで、シーンごとにより適した特徴量を取得することが可能となる。
離散符号は、例えば、L個あり、 l ∈ {0, ..., L - 1} の整数によるインデクスを用いて表すこともできる。離散符号のインデクス l に対して、ベクトル el があらかじめ定義される。処理回路は、算出された頂点のベクトルに最も近いベクトルを el, l ∈ {0, ..., L - 1} の中から探索し、この探索結果に基づいて、探索されたベクトルを離散符号 el として頂点に割り当てる。処理回路は、任意の探索手法を用いて離散符号 el を探索することができる。
処理回路は、例えば、取得されている頂点のベクトルと、ベクトル el, l ∈ {0, ..., L - 1} との任意の距離 (例えば、L1ノルム又はL2ノルム) を算出し、距離が最も短いベクトル el に対応する離散符号 l を当該頂点に割り当ててもよい。
別の例として、処理回路は、例えば、取得されている頂点のベクトルを入力すると最も近い離散符号を出力するモデルを用いて離散符号を取得してもよい。訓練装置は、このモデルも訓練の対象としてもよい。
さらに別の例として、処理回路は、例えば、 Softmax 関数を用いて離散符号を取得してもよい。 Softmax 関数を用いる場合、当該 Softmax 関数において対応する逆伝播における微分係数を1とする処理をしてもよい。このように処理することで順伝播における argmax の処理に拘わらず、逆伝播をすることができる。これは、離散符号の選択を省略して潜在変数 (特徴量) の勾配をエンコーダに逆伝播する処理に相当する。
ロス関数を適切に設定することで、離散符号を実際の特徴量と近くなるように更新する訓練をしてもよい。処理回路は、例えば、訓練における繰り返し演算において、所定回数までは、この離散符号を更新する訓練をし、所定回数以降においては、上記のように微分係数を1とすることで、離散符号の更新を停止してもよい。また、 EMA (指数移動平均: Exponential Moving Average) を用いて離散符号を更新してもよい。
また、処理回路は、例えば、 Softmax 関数の代わりに、 Gumbel-Softmax 関数を用いてもよい。 Gumbel-Softmax 関数を用いる場合、例えば、 reparameterization trick を用いることで逆伝播における勾配を算出してもよい。別の例として、 Continuous Relaxation の手法を用いてもよい。
図15及び図16は、それぞれ第0階層の頂点の離散符号及び第1階層の頂点の離散符号の割り当てについて、限定されない例を示す図である。これらの図に示すように、離散符号は、当該離散符号を示すインデクスにより指定することができる。例えば、図15は、第0階層のボクセル V0 において、左下の頂点の168、右下の頂点に84、左上の頂点に55、右上の頂点に119のインデクスが付与され、このインデクスに対応する離散符号がそれぞれの頂点の離散符号として割り当てられる。図16においても同様である。
離散符号自体は、高次元のベクトルであるが、あらかじめ定義されているインデクスからベクトルを取得することが可能である。このように、頂点には離散符号のインデクスがそれぞれ付与されることで、離散符号を割り当てる。
インデクスのみを記憶することで、ボクセル内部の特徴点を取得するための擬似的な特徴量に対応する高次元のベクトルをそれぞれの頂点についてのデータとして格納する場合と比較して、記憶装置は、頂点に対応させるデータ量を、例えば、 1 / (ベクトルの次元) 程度のデータ量に圧縮したデータとして格納することができる。処理回路は、必要なタイミングにおいて、例えば、データベース又はルックアップテーブルを参照することで、頂点に割り当てられている離散符号を取得することができる。
また、上述したように、図16における空のボクセル (左上の頂点) に対する頂点についても離散符号を割り当ててもよい。割り当てた場合、訓練装置の本ステップ以降の演算において、及び、推定装置の演算において、当該離散符号を無視してもよい。
図12に戻り、次に、処理回路は、座標 p における特徴量 z(p) を算出する (S208) 。本ステップと、次のステップは、ボクセルに割り当てられている離散符号から、画素の色を推論するためのステップとなる。
処理回路は、入力されたカメラ情報 C のうち、任意の情報を抽出し、このカメラ情報 C に基づいて、輝度場を用いて画素を推定するための点列の情報を取得する。点列は、例えば、式(4)に用いる r(t) を用いて表現されてもよい。
処理回路は、点列のそれぞれの座標に対して、式(2)を用いてそれぞれの階層 (第 n 階層) の第2特徴量 zn(p) を算出し、式(3)を用いて第2特徴量 zn(p) から第1特徴量 z(p) を取得する。
次に、処理回路は、座標 p における色 c と、密度 ρ を算出する (S210) 。処理回路は、座標 p及び特徴量 (潜在変数) を入力すると、色 c と、密度 ρ とを出力するデコーダを用いて、座標 p における色 c と、密度 ρ とを取得する。
次に、処理回路は、エンコーダ、デコーダ及びその他用いるモデルのパラメータを更新する (S212) 。また、 β を生成するモデル、離散符号を生成するモデル等の訓練を実行する場合には、これらのモデルのパラメータの更新も並行し、又は、逐次的に、実行する。
処理回路は、例えば、色 c 及び密度 ρ に基づいて画像 (カメラ情報 C を用いてレンダリングされた結果の画像) を生成する。処理回路は、教師データとして正解画像 (エンコーダに入力したカメラ情報 C に対応する画像 I) を用いて、生成した画像と、正解画像と、の画素値の相違に基づく誤差を用いてモデルのパラメータを更新する。
ロス関数として、 NeRF-VAE において用いられる誤差関数を用いてもよい。すなわち、処理回路は、生成した画像と、正解画像と、の再構成誤差に対して VAE と同様な正則化項を加味したロス関数を用いてもよい。
処理回路は、上記の誤差に基づいて、上述した離散符号の更新を実行してもよい。この場合、上述したように、所定回数までは離散符号の更新を行い、所定回数以降は離散符号の更新を行わない形態とすることもできる。
処理回路は、 S204 から S212 の処理を、必要に応じて繰り返し実行する。処理回路は、適切な終了条件を満たすと、パラメータの更新を終了する。終了条件は、一般的な機械学習手法の終了条件と同様の条件であってもよい。
パラメータの更新が終了した後、処理回路は、パラメータを出力して (S214) 処理を終了する。
なお、シーンによっては、すでに訓練済みの輝度場が取得できている場合がある。このような場合、既知の輝度場を教師データとして、特報量で条件付けされたモデルで復元するように訓練を実行してもよい。
訓練済みの輝度場がエンコーダ及びデコーダとして取得されている場合、この2つのモデルを用いて、グリッドに分割された領域について特徴量取得及び特徴量から色 c 及び密度 ρ の取得する複数のモデルを訓練してもよい。例えば、KiloNeRF (arXiv: 2103.13744) の手法と同様に、既知の輝度場をグリッドに分割することで蒸留学習をし、それぞれのグリッドにおけるネットワークの構成を小さくし、かつ、画像復元の精度を向上した訓練をしてもよい。この訓練の過程において、入力を画像情報とすることで、複数のカメラ情報に基づく画像情報から、直接的にグリッドにおける特徴量を取得するエンコーダを訓練することも可能である。
より詳細には、限定されない一例として、処理回路は、訓練済みの輝度場をグリッドに分割し、それぞれのグリッドにおいて特徴量を取得するように、複数のモデル (例えば、輝度場を生成するエンコーダよりは少数のレイヤで形成される MLP) を訓練してもよい。このグリッドは、任意の階層のボクセルと一致する領域であってもよい。また、訓練済みの輝度場の領域と、本実施形態における第0ボクセルの領域とを同じ領域として設定してもよい。
処理回路は、グリッドに対して形成される複数のモデルから出力される任意の座標における特徴量と、訓練対象となるエンコーダの出力である離散符号から取得された第1特徴量と、の誤差を用いてエンコーダの訓練をより精度よく実行してもよい。
さらに、処理回路は、当該既知の輝度場におけるデコーダの出力情報を用いてもよい。この場合、訓練対象のエンコーダ及びデコーダにより取得された第1特徴量から取得された色 c と密度 ρ の情報と、既知の輝度場から取得された色 c と密度 ρ の情報と、の誤差に基づいて、逆伝播処理を実行することもできる。
また、処理回路は、上記のエンコーダ、及び、離散符号化された特徴量から輝度場を出力するデコーダを Auto Encoder の手法を用いて訓練してもよい。この Auto Encoder は、例えば、 VAE (Variational Auto Encoder) 、特に、 NeRF-VAE (arXiv:2104.00587) の手法を用いてもよい。処理回路は、これらの VAE の手法を定式化することでロス関数を定義してもよい。また、エンコーダ、デコーダの構成、訓練及び離散符号から取得した特徴量に基づく画像の生成は、 NeRF-VAE の論文と同等の実装とすることもできる。例えば、 NeRF-VAE の手法を用いる場合には、以下に示すように処理が実行されてもよい。
図17は、一実施形態に係るエンコーダとデコーダの構成の一例を示す図である。処理回路は、エンコーダに画像情報 I と対応するカメラ情報 C を入力し、第1特徴量を取得する。第1特徴量の取得は、前述したように、エンコーダから出力される離散符号を用いて式(3)に基づいて実行される。
処理回路は、デコーダに取得された第1特徴量とカメラ情報 C から取得できる画素に関する座標 p 及び姿勢情報 d とを入力し、それぞれの画素に関する色 c 及び密度 ρ を取得する。座標 p 及び姿勢 d は、位置エンコーディングされてもよい。処理回路は、レンダラを用いてデコーダから取得された情報及びカメラ情報から画像を取得する。
そして、処理回路は、レンダラから取得した画像と、入力した画像と、を比較することで損失を算出し、それぞれのニューラルネットワークモデルのパラメータを更新する。
前述の推論装置は、ボクセルごとに取得した離散符号から、座標 p に基づいた特徴量 (第1特徴量) z(p) を取得し、この第1特徴量 z(p) をデコーダに入力することで、座標 p 及び姿勢 d に基づいた色 c 及び密度 ρ の情報を取得する。
種々のシーンに対して、同一のモデルを訓練することで、シーンに依存しないエンコーダと、デコーダと、を訓練してもよい。この訓練により最適化されたエンコーダに対して、任意のシーンを構成する複数のカメラ情報に紐付けられた画像を入力することで、新たなシーンを形成する特徴量を取得することができる。処理回路は、この特徴量を階層構造のボクセルを用いた離散符号化することで、新たなシーンにおけるボクセルを生成することができ、当該シーンの少なくとも一部を撮影領域に含むカメラ位置及び方向における画像を高速に取得することが可能となる。
処理回路は、上述したように、グリッドに分割した複数の MLP を用いて離散符号の訓練を実行してもよい。
また、ボクセルの生成方法は、上記に限定されるものではなく、任意の方法で生成されてもよい。例えば、処理回路は、学習済みの VQ-VAE のエンコーダを用いてボクセルを生成してもよい。また、処理回路は、3次元の姿勢付きの画像群から3次元の輝度場を推定してもよいし、この場合、上述と同様に訓練済みの輝度場があってもよい。処理回路は、この訓練済みの輝度場と同様の結果を出力する、ボクセル及び離散符号の割り当てを実行してもよい。
また、学習用のボクセルについては、以下の様なボクセルを用いてもよい。例えば、それぞれのシーンに対応するボクセルを複数準備しておく。複数のボクセルは、1つのシーンが1つのボクセルに対応する。そして、これらのボクセルには、階層ごとの頂点に離散符号が割り当てられている。上記と同様に、それぞれの頂点に割り当てられる離散符号は、階層ごとに異なるものであってもよい。
(離散符号生成)
次に、新たなシーン生成の段階におけるボクセルの生成及び離散符号の割り当てについて説明する。推定装置の処理回路は、任意のカメラ情報及び対応する画像群を、前述の手法により訓練されたエンコーダに入力して取得された離散符号を用いてボクセルの生成と離散符号の割り当てを行うことができる。
なお、以下においては、単に離散符号と記載した場合には、特徴量を算出するためのベクトル、又は、ベクトルに対応する離散符号 ID (離散符号の識別情報) とを文脈により読み替えることとする。ニューラルネットワークモデルにおいて、入出力は、例えば、離散符号 ID であってもよいが、これは、内部的に離散化されているベクトルに展開されてもよい。ベクトルへの展開は、例えば、ベクトルとIDを紐付けている LUT を用いてもよい。
また、入力はベクトルであってもよい。この場合、出力層において、適切な活性化関数 (例えば、 Softmax 関数) を用いて離散符号 ID に変換するものであってもよい。
図18は、ボクセルの木構造の一例を示す図である。上述したボクセルは、例えば、8分木の形式で表現することができる。親ノード P に対して、必要に応じて子ノード C0、 C1 、・・・、 C7 の8個のノードが備えられる。それぞれの子ノードからは、必要に応じてさらに子ノードが生成され、階層型のボクセルを形成する。
それぞれのノードには、当該ノードが存在するかの情報と、当該ノードに対応するボクセルの頂点に割り当てられる離散符号が格納される。当該ノードが存在するかの情報は、例えば、空ボクセルであったり、物体内部のボクセルであったりする場合であり、この場合、該当する子ノード自体を削除してもよいし、該当する子ノードに空である、物体内部である、といった識別子を与えてもよい。
上述したように、これら空又は物体内部等を示すノードに関しては、以降の子ノードを生成しなくてもよい。このように子ノードの生成を抑制することで、ノード情報を格納するメモリ領域を削減することができる。
最上位の親ノードとして、例えば、第0ボクセルの情報を割り当てることで前述したボクセルを木で表現することができる。一例として、図15、図16の場合の木の構成について図面を用いて説明する。以降においても、特に注意がない限り、奥行き方向のボクセル (例えば、図16における V1_4 から V1_7 に対応するボクセル) 等の表記を省略することがあるが、3次元空間で考慮する場合には当然にこれらのボクセルは、形成し、説明をしているボクセルと同様の処理が実行される。
図19は、図15、図16のボクセル構造に関連した木の構成の一例を示す図である。親ノードとして、第0階層のボクセル V0 の情報が割り当てられる。 V0 を示すノードは、ルートノードとして機能してもよい。この V0 に対応する P のノードには、ボクセル V0 の情報であるそれぞれの頂点の離散符号が格納される。
例えば、 zv0 の情報から順番に、168, 84, 55, 119, ... , (eos) の情報が与えられる。 (eos) は、直前のデータがボクセルに対応する最後のデータであることを示す。このように、データの最後を示すトークンを用いて木が構成されてもよい。尤も、 (eos) は必須の構成ではなく、トークンを用いない表現でもよい。
このノード P から、第1階層のボクセルに対応する子ノードを生成する。ボクセルを形成する情報処理装置 (例えば、訓練装置、推定装置) の処理回路は、親ノード P から次の階層のノードが生成されるか否か、及び、生成される場合には、その頂点に割り当てられる離散符号の情報をノードの情報として格納する。
処理回路は、親ノード P に対して、第1階層の第1のボクセル V1_0 が生成する (存在する) か否かを推論し、生成される (存在する) 場合には、ボクセル V1_0 の頂点に割り当てられる離散符号をノードの情報とする。
図16の例によれば、ボクセル V1_0 は、生成され、それぞれの頂点に対応する離散符号は、54, 254, 51, 95, ...である。処理回路は、これに基づいて、ノード C0 の情報として、「54, 254, 51, 95, ..., (eos)」といったデータを格納する。図に示されているように、ノード C0 の情報として、8頂点分の離散符号が格納される。
同様に、処理回路は、第1階層のボクセル V1_1 として、ボクセルを生成すること、及び、離散符号の ID 「67, 43, ..., (eos)」をノード C1 の情報として格納する。ここで、ボクセル V1_1 における離散符号のうち、4つの頂点に割り当てられる離散符号は、ボクセル V1_0 と重複する。これらの重複するノードに関しては、処理回路は、訓練及び推論のタイミングにおいては、すでに格納されている離散符号を用いることができる。これらの重複した離散符号については格納しないようにすることで、使用するメモリ領域を削減することができる。
処理回路は、第1階層のボクセル V1_3 を生成するか否かを判定する。ボクセル V1_2 は、空ボクセルである。この場合、子ノード C2 は、空のノードとし、以降の子ノードの生成をしない形態としてもよい。別の例として、子ノード C2 自体を生成しない形態としてもよい。
処理回路は、同様の処理を全ての子に対して行い、適宜、ボクセルを生成するか否か、及び、ボクセルの頂点に割り当てられる離散符号をノードの情報として格納する。
この木の生成は、以下の様にリスト形式で表現することもできる。
{(168, 84, 55, 119, ...)}: ノード P の離散符号を格納する。
{1|(168, 84, 55, 119, ...)}: ノード P から子ノード C0 を生成する。例えば、0, 1によりボクセルを生成する確率 (0: 生成しない、1: 生成する) を表す。
{(54, 254, 51, 95, ...)|1, (168, 84, 55, 119, ...)}: ノード C0 の離散符号を格納する。
{1|(54, 254, 51, 95, ...), 1, (168, 84, 55, 119, ...)}: ノード C1 を生成する。
{(67, 43, ...)|1, (67, 43, ...), 1, (168, 84, 55, 119, ...)}: ノード C1 の離散符号を格納する。
{0|(67, 43, ...), 1, (67, 43, ...), 1, (168, 84, 55, 119, ...)}: ノード C2 は対応するボクセルが空であるので生成しない。
{1|0, (67, 43, ...), 1, (67, 43, ...), 1, (168, 84, 55, 119, ...)}: ノード C3 を生成する。
:
上記のように、ノード P から出発し、逐次的に子ノードの生成と離散符号の割り当てを繰り返すことで、階層構造のボクセル及びボクセルの頂点に割り当てられる離散符号を木の表現として生成することができる。トークンを用いる場合には、適切にトークンの情報が上記の木の表現に含まれてもよい。
上記は、ボクセルの存在及びボクセルの頂点に割り当てられる離散符号について木の構成を説明したが、次に、離散符号の推論とともに木を形成する例について説明する。
図20は、一実施形態に係る階層型のボクセルの形成と、離散符号の割り当てを実行するニューラルネットワークモデルの一例を示す図である。このニューラルネットワークモデルは、例えば、 GPT (General Pretrained Transformer) 等の Transformer を用いる自己回帰モデルとして形成される。これに限定されるものではなく、各種ゲート付きの自己回帰モデルとして形成されてもよい。一般的な言語モデルと同様のモデルを用いることもできる。
E は、トークンを表す。このトークンは、例えば、0: ノードを生成しない、1: ノードを生成する、2-257: 離散符号 ID (離散符号の総数が256の場合) 、を表してもよい。すなわち、離散符号の数 +2 のトークンが定義されていてもよい。もちろん、ノードは、前述のボクセルに対応するものである。
図に示すように、始点を表すトークン (例えば、 (sos)) が入力されると、自己回帰的に訓練済みの事前分布に基づいて次のトークンが生成される。離散符号の割り当てにおいては、処理回路は、 (sos) トークンから出発し、逐次的にトークンをサンプリングしてもよい。ニューラルネットワークモデルの訓練においては、処理回路は、教師データとして与えられた値を並列に入力し、並列に訓練を実現することもできる。
訓練時には、処理回路は、前述したボクセルの頂点に対する離散符号を表すトークン、及び、ボクセルが存在するか否かのトークンをそれぞれの入出力にセットして、モデルの訓練を実行する。訓練においては、適切に Transformer にマスク処理等をしてもよい。
上記のような自己回帰モデルは、確率モデルである。このため、処理を繰り返すたびに、異なる出力がされる可能性が高い。この確率は、訓練に基づいた事前分布に基づいたものであるため、この事前分布に比例するような出力がされる。
そこで、推論装置の処理回路は、ボクセルを生成するタイミングにおいて、複数回のトークン取得の処理を繰り返し、 Softmax 等の適切な活性化関数を用いることで、トークンのサンプリングを実行してもよい。
別の例として、当該自己回帰モデルは、確率分布としてベクトルを出力するニューラルネットワークモデルを備え、当該確率分布に対して Softmax 等の活性化関数を用いて、離散符号化されているベクトルから出力されたベクトルについて、離散符号を抽出してもよい。確率分布を出力する場合には、訓練時には、 reparameterization trick を用いた訓練をしてもよい。
トークン出力の終了条件は、例えば、所定のサンプリング回数に達した、又は、所定のボクセルの階層に達したことを条件としてもよい。また、別の例としては、訓練装置の処理回路は、ボクセル生成に対する (eos) に該当するトークンを出力するように自己回帰モデルを訓練させてもよい。この場合、推論装置の処理回路は、開始トークンを入力することで (eos) トークンが出力されるまで処理を繰り返す。
図21は、子ノードに対応するボクセルの生成及び子ノードに対応するボクセルの頂点に割り当てられる離散符号の生成の一例について概略的に示す図である。
例えば、第0階層のボクセル V0 及び第1階層のボクセル V1_0 が生成され、離散符号が付与されている場合、次の子ノードであるボクセル V1_1 の生成確率は、ボクセル V0 及びボクセル V1_0 の状態により判断され、同様に、生成される場合の離散符号は、ボクセル V0 及びボクセル V1_0 の状態により確率分布が設定されて、この確率分布に基づいて取得される。
図22は、子ノードに対応するボクセルの生成及び子ノードに対応するボクセルの頂点に割り当てられる離散符号の生成の別の例について概略的に示す図である。例えば、第2階層のボクセル V2_03 は、それまでに生成されているボクセル V0 、 V1_0 、 V2_00 、 V2_01 、 V2_02 に基づく確率分布により生成されるかが決定され、生成される場合には割り当てられる離散符号も同じ組み合わせのボクセルに基づく確率分布にしたがって取得される。
ここで、すでにボクセル V1_2 等も生成されている場合であっても、これらとは独立し、子ノード自らの直系の祖先及びすでに生成されている同世代の子ノードに基づいて確率分布を取得する。
なお、子ノードを生成しない場合には、上述したように、トークンを”0”と設定してもよい。また、表面を含むボクセルのみに離散符号を割り当てる場合においても、表面を含まないボクセルにおいては、適切なトークンが設定 (例えば、トークン”0”) されてもよい。
上記においては、訓練時にはマスクを用いるとしたが、このような推論を実行する場合には、推論時にもマスクを用いてもよい。ボクセルの階層構造に鑑みると、下位のボクセルは、全てのボクセルからの影響を大きく受けるのではなく、直接的に自らの祖先となるボクセルの影響を大きく受ける。
このため、 Transformer 内に用いられる Attention に対して、ボクセルを生成しようとし、又は、ボクセルに対する離散符号を割り当てる場合には、適切に当該ボクセルの直接的な先祖となる入力に対して Attention が掛かるように、マスキング処理をして下位の階層のボクセル生成及び離散符号割り当てを実行してもよい。これは、訓練時にも同様であり、直接的な祖先の情報から下位のボクセルの構成が取得できるようにマスキング処理をして訓練を実行してもよい。
なお、直接的な祖先とは、例えば、図22において、ボクセル V2_00 に対するボクセル V1_0 及びボクセル V0 のことを示す。例えば、ボクセル V1_1 は、ボクセル V2_00 の直接的な祖先ではない。
親子関係は、例えば、モートンオーダーに基づいたノード (ボクセル)のインデキシングをすることで適切に取得することができる。
図23は、上記の流れを擬似コードで示す図である。まず、8分木を構成するノードの全てをスキャンするループを設定する。それぞれのノードを根 (親) として、子ノードの生成及び生成した子ノードへの離散符号の付与を実行する。
r の深さが所定の深さ D 以上の場合には、処理を終了する。すなわち、深さ D においては、全てのノードが親ノードにはならないと判断し、処理を終了する。この深さ D は、計算コスト、メモリコスト及び解像度等に基づいて決定されてもよい。
深さが条件を満たす場合、子ノードの生成に関して、1つの親からの枝分かれしている8本のエッジに対してループを実行する。このループでは、まず、現在までに形成した木の状態における確率分布にしたがって、 i 番目の子を生成するかどうかを決定する。
子が生成される場合には、現在のまでの木で条件付けされる確率分布にしたがって、 i 番目のノードの離散符号をサンプリングする。そして、この i 番目のノードを子ノードとして8分木に追加、登録する。
このように、8分木が生成される。上述したように先に8分木の構造のみを生成することも可能であり、この場合、4行目の確率分布の取得及び5行目の判定は、必ずしも必須の処理ではない。
上記の処理は、図20に示したニューラルネットワークモデルを用いてそれぞれのトークンを取得することで実行することができる。もちろん、適切にトークンが取得されるのであれば、図20のモデルを用いなくてもよい。
上記の動作についてより具体的な例を挙げて説明する。出力されるトークンは、図15、図16の分布に基づいたものである。
図24は、図20に示すニューラルネットワークモデルの入出力の一例を示す図である。説明の簡単のため、頂点及びボクセルについては、通し番号を付与している。前述の各図における指定は、下記にて説明する。
この図24は、例えば、頂点を表す識別子として、図15又は図16に示す番号を付している。限定されないこの例では、階層ごとに、ボクセルの番号が若い順番に、ボクセルの順序と同様の順序 (例えば、図面向かってボクセル(0)の手前左下 → 右下 → 左上 → 右上 → ボクセル(0)の奥左下 → 右下 → 左上 → 右上 → 次のボクセル(1)においてボクセル(0)と重複する頂点を除く頂点である手前右下 → 右上 → 奥右下 → 右上 等の順番) に識別子が付与されている。もちろん、このボクセルの番号及びこの頂点の番号の付与方法は、この方法に限定されるものではなく、適切にボクセルが識別でき、また、適切に頂点と離散符号の ID とを紐付けられる方法により付与されるものであればよい。
最初の段階において、Transformer に開始トークン (sos) が入力される。このトークンの入力に対して、第0階層のボクセル V0 の左下手前の頂点の離散符号が出力される。次に、この離散符号を Transformer に入力することで、ボクセルV0 の右下手前の頂点の離散符号が出力される。第0階層の離散符号 ID の出力は、ボクセル V0 の右上奥の頂点7まで継続される。
次に、9回目の繰り返しとして、ボクセル V0 の頂点7の離散符号が入力されると、第1階層のボクセル V1_0 を生成するか否かを示すトークンが出力される。図の例では、”1”であるので、ボクセル V1_0 が生成される。次に、この生成トークンを入力し、トランスフォーマを介して第0階層のボクセルの離散符号が入力され、ボクセル V1_0 の左下手前の頂点の離散符号を取得する。
これと同様の演算を必要な回数だけ繰り返し実行する。例えば、23回目の繰り返しでは、入力された離散符号と、トランスフォーマからの入力に基づいて、ボクセル V1_2 が空であると判断し、ボクセル V1_2 を生成しないという出力を行う。
このように、ボクセル及びボクセルの頂点の割り当てられる離散符号を、自己回帰的に実行する。また、別の例として、自己回帰モデルを用いて、すでに生成された一部のボクセルから他のボクセルを生成してもよい。他のボクセルとは、例えば、他の頂点、他の階層をも含む。このようにすることで、一部のシーンから他のシーンのボクセルを形成することもできる。
このように、8分木、すなわち、階層構造のボクセルの情報を自己回帰的に取得する。自己回帰モデルを用いる場合、1つずつサンプルする必要があるが、訓練時においては、 Causal CNN 又は Causal Transformer の手法を用いることで、並列して訓練を実行することができる。
シーンを生成は、このように定義されたボクセルの特徴量に基づいて上記の推論装置において説明した処理にしたがって実行される。
以上のように、本実施形態によれば、ボクセルを分割して処理することができるので、情報量の多いシーン、例えば、対象物体が大きい場合のシーンの生成において、より精度の高いシーンを生成することが可能となる。また、階層的なボクセル生成を、自己回帰の Transformer を用いることにより、位置情報を特徴量により詳細に条件付けることが可能となるので、複雑なボクセルの生成も可能となる。
本開示における形態を用いることにより、任意の座標と姿勢のカメラが与えられた場合に、当該カメラの視点からの画像を生成できるほか、形状情報を利用し、ナビゲーションの計画を立てることも可能である。
この他、部屋、建物又は屋外の景色の生成モデルを実装することができる。例えば、様々の部屋又は建物のスキャンデータセットから訓練を実行することで、様々な種類の部屋又は建物をサンプリングすることもできる。これを応用することで、建築における設計や生成したデータ上 (仮想空間) におけるロボット、 AGV (Automatic Guided Vehicle) 等のシミュレーション環境を生成することができる。自動運転の場合についても、学習データ、検証データ生成用のシミュレーション環境を生成することができる。
また、別の例として、シーン生成時においても条件付けをすることも可能である。例えば、上記の部屋の例であれば、部屋に窓が1枚ある、2枚ある等の条件付けをすることも可能である。
また、生成モデルを作ることができるので、スキャンで一部しか特徴量を定義できない場合であっても、当該特徴量から取得できていない特徴量を推論し、観測できていないシーンを推論して復元することもできる。これを応用することで、部分観測からの復元に本開示における形態を適用することができる。
前述の開示においては、ボクセルの頂点に特徴量を離散符号として定義するものとしたが、これには限られず、ボクセルの中心(重心)に埋め込みベクトルを定義してもよい。この場合、ボクセルの表面においては、埋め込みベクトルが不一致となるが、頂点に特徴量を設定する場合と同様に、tri-linear補正等により離散的な表現を連続的な表現に変換してもよい。
前述の開示においては、式(1)に示す関数をニューラルネットワークで表現することで所定のシーンの画像を生成したが、画像生成に用いられる関数はこれに限定されない。所定のシーンに対応する複数の離散符号に関する情報 (限定されない一例として、各頂点に離散符号が付与された階層的なボクセル) に基づいて任意の座標に対応する特徴量 (限定されない一例として、第1特徴量) を算出し、この特徴量をニューラルネットワークで表現される関数 (限定されない一例として陰関数)に入力することで所定のシーンの画像を生成してもよい。
また、ニューラルネットワークは、少なくとも、対象 (物体等) が存在する空間、対象の3次元形状、対象の色情報又は対象の密度情報のいずれか1つに関する情報 (3次元情報) を表現するものであってもよく、ニューラルネットワークの出力情報に基づくレンダリングによって画像を生成してもよい。例えば、Neural Geometric Level of Detail: Real-time Rendering with Implicit 3D Shapes (arXiv: 2101.10994v1)、NeuS: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction (arXiv: 2106.10689)等の論文で用いられている関数 (ニューラルネットワーク) と複数の離散符号に関する情報とに基づいて、対象の3次元形状に関する情報を生成してもよい。ここで、ニューラルネットワークは、計算対象の座標から物体の表面までの距離に関する情報を出力してもよい。
また、前述の開示におけるボクセルの頂点に付与された複数の離散符号は、所定のシーンについて生成された複数の離散符号に関する情報の限定されない一例である。複数の離散符号に関する情報は、少なくとも、所定のシーンにおける対象 (物体等) が存在する空間、対象の3次元形状、対象の色情報又は対象の密度情報のいずれかに1つに関する情報 (3次元情報) を表現するものであってもよい。離散符号に関する情報は、少なくとも、離散符号、離散符号の ID 、離散符号の付与先の情報、離散符号が空か否か又はボクセル (領域) を生成するか否かのいずれか1つであってもよい。また、離散符号をベクトルではなくテンソルで表現し、エンコーダの出力、デコーダへの入力もテンソルにしてもよい。また、複数の離散符号から抽出される特徴量 (限定されない一例として第1特徴量及び第2特徴量) もテンソルで表現してもよい。
前述の実施形態における訓練済モデルは、例えば、説明したように訓練した上で、さらに、一般的な手法により蒸留されたモデルを含む概念であってもよい。
また、前述の実施形態における訓練済みモデルは、例えば、動画像を構成する少なくとも 1 枚の画像であってもよい。すなわち、動画におけるある瞬間のシーンを捉えた3次元空間を再構成するように生成されてもよい。この場合、例えば、動画のフレームごとの画像に対してシーンを再構成することで、任意の瞬間の任意のカメラ情報 C に基づいた画像 I を取得することもできる。
上記に示した情報処理装置は、以下のようにまとめることもできる。すなわち、一実施形態によれば、離散符号を割り当てる情報処理装置は、1又は複数のメモリと、1又は複数のプロセッサと、を備える。前記1又は複数のプロセッサは、自己回帰モデルを用いて、3次元情報を表現する複数の離散符号に関する情報を生成する。この情報処理装置は、処理回路により、画像を生成するために必要となる3次元構造の特徴量を求めるための離散符号を訓練済みの自己回帰モデルを用いることで適切に生成し、割り当てることができる。また、3次元情報は、少なくとも、所定のシーンにおける対象 (物体等) が存在する空間、対象の3次元形状、対象の色情報又は対象の密度情報のいずれかに1つに関する情報であってもよい。また、離散符号に関する情報は、少なくとも、離散符号、離散符号の ID 、離散符号の付与先の情報、離散符号が空か否か又はボクセル (領域) を生成するか否かのいずれか1つであってもよい。
前記複数の離散符号に関する情報は、複数の階層を構成してもよい。例えば、上述した D 階層の3次元構造に対応する、離散符号を示すベクトル、又は、離散符号を識別するインデクスにより、離散符号に関する情報が階層的に構成されてもよい。離散符号は、テンソルで表現されてもよい。
前記複数の階層は、8分木で表現されてもよい。例えば、3次元構造がボクセルである場合には、ボクセルの各辺を2等分することで8個の新たなボクセルを生成することができ、この形態を、8分木で表現することができる。任意の形状の3次元構造でも、ほぼ同等の大きさの3次元構造に8分割することで、同様に処理することができる。
前記複数の階層は、3次元空間を階層ごとに異なる領域に分割され、前記複数の離散符号は、各階層の領域に付与されてもよい。
前記領域はボクセルであって、前記複数の離散符号は、前記ボクセルの頂点に付与されてもよい。例えば、上記の D 階層の3次元構造は、ボクセルにより形成されてもよく、離散符号がそれぞれの階層のボクセルの頂点に割り当てられてもよい。離散符号の割り当てについて、例えば、離散符号のインデクスをボクセルの頂点ごとに紐付けて格納することで、メモリ領域を削減することもできる。
前記自己回帰モデルは、上位の階層から下記の階層の順に、階層ごとに離散符号に関する情報を生成してもよい。上記のように、離散符号に関する情報は、例えば、離散符号を表すベクトル、又は、離散符号を識別するインデクスであってもよいし、その他の離散符号に関する情報であってもよい。前述したように、処理回路は、自己回帰モデルを用いることで、第0ボクセルから深い階層へと逐次的にボクセルの生成及び離散符号に関する情報を割り当てることができる。
前記自己回帰モデルは、上位の階層について生成された離散符号に関する情報に基づいて、下位の階層の離散符号に関する情報を生成してもよい。すなわち、処理回路は、自己回帰モデルを用いることで、着目している階層の上位の階層の離散符号に関する情報に基づいて生成し、この離散符号を着目している階層の離散符号に関する情報として割り当てることができる。
上位の階層が少なくとも第1領域と第2領域とに分割され、下位の階層の第3領域が前記第1領域に含まれる場合、前記自己回帰モデルは、前記第3領域の離散符号に関する情報を、前記第2領域の離散符号に関する情報ではなく前記第1領域の離散符号に関する情報に基づいて生成してもよい。換言すると、処理回路は、自己回帰モデルを用いて、着目している3次元構造に対して、この3次元構造の直接的に先祖となる3次元構造の情報に基づいて離散符号に関する情報を生成してもよい。階層的に形成される下位の3次元構造は、少なくとも1つの上位の階層の3次元構造内に包含される。例えば、ボクセルであれば、上位の階層から8分割して生成され、その生成されたボクセルに対してさらに8分割して下位の階層のボクセルが生成される。そして、直接的に着目しているボクセルを含む上位の階層のボクセルの情報を用いて、当該ボクセルに割り当てられる離散符号を生成する。
前記自己回帰モデルは、少なくとも領域を生成するか否かに関する情報又は離散符号の識別情報のいずれかを出力してもよい。前段落では、3次元構造に割り当てられる離散符号に関する情報が当該3次元構造を含む上位の階層の情報から取得できるとしたが、この3次元構造が生成されるか否かを上位の階層の情報から取得してもよい。より具体的には、自己回帰モデルに基づいて着目している3次元構造が生成するか否かを決定してもよい。そして、生成することが決定された後に、自己回帰モデルにより離散符号に関する情報が生成されてもよい。
前記自己回帰モデルは、 Transformer を備えてもよい。 Transformer を用いることで、複雑なゲート等をモデリングすること無く自己回帰モデルを形成することができる。また、上記のいくつかに示したように、3次元構造の情報については、自らの直接的な先祖である3次元構造の情報を用いるが、これは、 Attention にマスキングすることで適切に訓練及び推論に適用することもできる。
前記複数の離散符号は、3次元空間の第1座標における特徴量の算出に用いられてもよいし、前記特徴量は、少なくとも前記第1座標における色の情報を有してもよい。処理回路は、階層的に形成される離散符号を用いて、ある座標の色情報を特徴量から取得することができる。また、処理回路は、前記特徴量を用いて当該座標における密度情報を取得することもできる。その他にも、処理回路は、前記特徴量を用いて対象の3次元形状に関する情報を取得してもよい。
一実施形態によれば、情報生成方法は、上記に記載のいずれかの情報処理装置を用いて、前記複数の離散符号に関する情報を生成する方法である。この情報生成方法の具体的な内容は前述の各実施形態の説明を参酌することで理解されたい。
一実施形態によれば、上記の装置若しくは方法により、又は、異なる装置若しくは方法により、生成され割り当てられた離散符号から画像を生成する情報処理装置は、1又は複数のメモリと、1又は複数のプロセッサと、を備える。前記1又は複数のプロセッサは、第1シーンを表す複数の離散符号に基づいて、3次元空間の第1座標における第1特徴量を算出し、少なくとも前記第1座標の情報及び前記第1特徴量をニューラルネットワークに入力して取得した出力情報に基づいて、前記第1シーンの画像を生成し、前記複数の離散符号は、自己回帰モデルを用いて生成されたものである。ここで、前記出力情報を用いたレンダリングにより前記第1シーンの画像を生成してもよい。
前記複数の離散符号は、複数の階層を構成してもよく、前記1又は複数のプロセッサは、各階層における複数の離散符号に基づいて、前記第1座標における第2特徴量を算出し、複数の階層について算出された複数の前記第2特徴量に基づいて、前記第1特徴量を算出してもよい。この第2特徴量は、階層における第1座標の特徴量であり、この階層ごとの特徴量を用いて、階層にわたり混合した当該座標の特徴量である第1特徴量を取得することができる。
前記1又は複数のプロセッサは、前記第1座標の情報、姿勢の情報及び前記第1特徴量をニューラルネットワークに入力することにより、前記第1座標における色及び密度の情報を取得してもよい。
前記第1座標の情報及び前記姿勢の情報は、前記第1シーンにおけるカメラ情報に基づいて生成されてもよい。例えば、カメラの内部パラメータ、及び、内部パラメータに基づいた画素ごとの焦点から画素への方向に基づいて姿勢の情報が取得され、この姿勢の情報に基づいて、第1座標の情報が取得されてもよい。
一実施形態によれば、情報生成方法は、上記に記載のいずれかの情報処理装置を用いて、前記第1シーンの画像を生成する方法である。この情報生成方法の具体的な内容は前述の各実施形態の説明を参酌することで理解されたい。また、この情報生成方法を用いるための離散符号は、前述の離散符号を割り当てる情報処理装置又は情報生成方法により割り当てられた離散符号であってもよい。
一実施形態によれば、前述の離散符号を割り当てる情報処理装置若しくは情報生成方法、又は、前述の画像を生成する情報処理装置若しくは情報生成方法において用いられる自己回帰モデルを訓練する情報処理装置は、1又は複数のメモリと、1又は複数のプロセッサと、を備える。前記1又は複数のプロセッサは、3次元情報を表現する複数の離散符号に関する情報を生成する自己回帰モデルのパラメータを、複数の離散符号に関する情報を含む教師データを用いて更新する。
前記自己回帰モデルは、離散符号の識別情報を出力し、前記1又は複数のプロセッサは、前記自己回帰モデルが出力した前記離散符号の識別情報と前記教師データとに基づいて、前記パラメータを更新してもよい。
前記複数の離散符号に関する情報は、複数の階層を構成してもよく、前記複数の階層は、3次元空間を階層ごとに異なる領域に分割してもよく、前記自己回帰モデルは、前記領域を生成するか否かに関する情報を出力してもよく、前記1又は複数のプロセッサは、前記自己回帰モデルが出力した前記領域を生成するか否かに関する情報と前記教師データとに基づいて、前記パラメータを更新してもよい。
前記自己回帰モデルは、 Transformer を備えてもよい。前述したように、 Transformer を用いることで自己回帰的な処理を実現することができる。
一実施形態によれば、情報生成方法は、上記に記載のいずれかの情報処理装置を用いて、前記自己回帰モデルを生成する方法。この情報生成方法の具体的な内容は前述の各実施形態の説明を参酌することで理解されたい。この情報処理装置又は情報生成方法により生成された自己回帰モデルを用いることで、前述の離散符号の割り当て、及び、離散符号からの画像の生成を実現できる。例えば、対象をいろいろな角度から撮影した画像情報及びカメラ情報に基づいて、離散符号を生成し、この生成した離散符号から、上記のいろいろな角度に含まれない角度から撮影した画像の情報を推論することが可能となる。
前述した実施形態における各装置(推論装置又は訓練装置を含む。以下情報処理装置と記載する)の一部又は全部は、ハードウェアで構成されていてもよいし、CPU(Central Processing Unit)又はGPU(Graphics Processing Unit)等が実行するソフトウェア(プログラム)の情報処理で構成されてもよい。ソフトウェアの情報処理で構成される場合には、前述した実施形態における各装置の少なくとも一部の機能を実現するソフトウェアを、CD-ROM(Compact Disc-Read Only Memory)、USB(Universal Serial Bus)メモリ等の非一時的な記憶媒体(非一時的なコンピュータ可読媒体)に収納し、コンピュータに読み込ませることにより、ソフトウェアの情報処理を実行してもよい。また、通信ネットワークを介して当該ソフトウェアがダウンロードされてもよい。さらに、ソフトウェアの処理の全部又は一部がASIC(Application Specific Integrated Circuit)又はFPGA(Field Programmable Gate Array)等の回路に実装されることにより、当該ソフトウェアによる情報処理がハードウェアにより実行されてもよい。
ソフトウェアを収納する記憶媒体は、光ディスク等の着脱可能なものでもよいし、ハードディスク又はメモリ等の固定型の記憶媒体であってもよい。また、記憶媒体は、コンピュータ内部に備えられてもよいし(主記憶装置または補助記憶装置等)、コンピュータ外部に備えられてもよい。
図25は、前述した実施形態における各装置(情報処理装置)のハードウェア構成の一例を示すブロック図である。各装置は、一例として、プロセッサ71と、主記憶装置72(メモリ)と、補助記憶装置73(メモリ)と、ネットワークインタフェース74と、デバイスインタフェース75と、を備え、これらがバス76を介して接続されたコンピュータ7として実現されてもよい。
図25のコンピュータ7は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、図25では、1台のコンピュータ7が示されているが、ソフトウェアが複数台のコンピュータにインストールされて、当該複数台のコンピュータそれぞれがソフトウェアの同一の又は異なる一部の処理を実行してもよい。この場合、コンピュータそれぞれがネットワークインタフェース74等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、前述した実施形態における各装置(情報処理装置)は、1又は複数の記憶装置に記憶された命令を1台又は複数台のコンピュータが実行することで機能を実現するシステムとして構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台又は複数台のコンピュータで処理し、この処理結果を端末に送信するような構成であってもよい。
前述した実施形態における各装置(情報処理装置)の各種演算は、1又は複数のプロセッサを用いて、又は、ネットワークを介した複数台のコンピュータを用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部又は全部は、ネットワークを介してコンピュータ7と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実現されてもよい。このように、前述した実施形態における各装置は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
プロセッサ71は、少なくともコンピュータの制御又は演算のいずれかを行う電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、ASIC等)であってもよい。また、プロセッサ71は、汎用プロセッサ、特定の演算を実行するために設計された専用の処理回路又は汎用プロセッサと専用の処理回路との両方を含む半導体装置等のいずれであってもよい。また、プロセッサ71は、光回路を含むものであってもよいし、量子コンピューティングに基づく演算機能を含むものであってもよい。
プロセッサ71は、コンピュータ7の内部構成の各装置等から入力されたデータやソフトウェアに基づいて演算処理を行ってもよく、演算結果や制御信号を各装置等に出力してもよい。プロセッサ71は、コンピュータ7のOS(Operating System)や、アプリケーション等を実行することにより、コンピュータ7を構成する各構成要素を制御してもよい。
前述した実施形態における各装置(情報処理装置)は、1又は複数のプロセッサ71により実現されてもよい。ここで、プロセッサ71は、1チップ上に配置された1又は複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に配置された1又は複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
主記憶装置72は、プロセッサ71が実行する命令及び各種データ等を記憶してもよく、主記憶装置72に記憶された情報がプロセッサ71により読み出されてもよい。補助記憶装置73は、主記憶装置72以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ又は不揮発性メモリのいずれでもよい。前述した実施形態における各装置(情報処理装置)において各種データ等を保存するための記憶装置は、主記憶装置72又は補助記憶装置73により実現されてもよく、プロセッサ71に内蔵される内蔵メモリにより実現されてもよい。例えば、前述した実施形態における記憶装置は、主記憶装置72又は補助記憶装置73により実現されてもよい。
前述した実施形態における各装置(情報処理装置)が、少なくとも1つの記憶装置(メモリ)と、この少なくとも1つの記憶装置に接続(結合)される少なくとも1つのプロセッサで構成される場合、記憶装置1つに対して、少なくとも1つのプロセッサが接続されてもよい。また、プロセッサ1つに対して、少なくとも1つの記憶装置が接続されてもよい。また、複数のプロセッサのうち少なくとも1つのプロセッサが、複数の記憶装置のうち少なくとも1つの記憶装置に接続される構成を含んでもよい。また、複数台のコンピュータに含まれる記憶装置とプロセッサによって、この構成が実現されてもよい。さらに、記憶装置がプロセッサと一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
ネットワークインタフェース74は、無線又は有線により、通信ネットワーク8に接続するためのインタフェースである。ネットワークインタフェース74は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース74により、通信ネットワーク8を介して接続された外部装置9Aと情報のやり取りが行われてもよい。なお、通信ネットワーク8は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等のいずれか、又は、それらの組み合わせであってよく、コンピュータ7と外部装置9Aとの間で情報のやりとりが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
デバイスインタフェース75は、外部装置9Bと直接接続するUSB等のインタフェースである。
外部装置9Aは、コンピュータ7とネットワークを介して接続されている装置である。外部装置9Bは、コンピュータ7と直接接続されている装置である。
外部装置9A又は外部装置9Bは、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ等、キーボード、マウス又はタッチパネル等のデバイスであり、取得した情報をコンピュータ7に与える。また、パーソナルコンピュータ、タブレット端末又はスマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
また、外部装置9A又は外部装置9Bは、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末又はスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
また、外部装置9A又は外部装置9Bは、記憶装置(メモリ)であってもよい。例えば、外部装置9Aは、ネットワークストレージ等であってもよく、外部装置9Bは、HDD等のストレージであってもよい。
また、外部装置9A又は外部装置9Bは、前述した実施形態における各装置(情報処理装置)の構成要素の一部の機能を有する装置でもよい。つまり、コンピュータ7は、外部装置9A又は外部装置9Bに処理結果の一部又は全部を送信してもよいし、外部装置9A又は外部装置9Bから処理結果の一部又は全部を受信してもよい。
本明細書(請求項を含む)において、「a 、b 及び c の少なくとも1つ(一方)」又は「a 、b 又は c の少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a - b、a - c、b - c 又は a - b - c のいずれかを含む。また、a - a、a - b - b、a - a - b - b - c - c 等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a - b - c - d のように d を有する等、列挙された要素(a 、b 及び c)以外の他の要素を加えることも含む。
本明細書(請求項を含む)において、「データを入力として/を用いて/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、データそのものを用いる場合や、データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、データから抽出した特徴量、データの中間表現等)を用いる場合を含む。また、「データを入力として/を用いて/データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合(同様な表現を含む)、特に断りが無い場合、当該データのみに基づいて当該結果が得られる場合や、当該データ以外の他のデータ、要因、条件及び/又は状態等にも影響を受けて当該結果が得られる場合を含む。また、「データを出力する」旨が記載されている場合(同様な表現を含む)、特に断りがない場合、データそのものを出力として用いる場合や、データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、データから抽出した特徴量、データの中間表現等)を出力として用いる場合を含む。
本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
本明細書(請求項を含む)において、「AがBするよう構成される(A configured to B)」との表現が用いられる場合は、要素Aの物理的構造が、動作Bを実行可能な構成を有するとともに、要素Aの恒常的(permanent)又は一時的(temporary)な設定(setting/configuration)が、動作Bを実際に実行するように設定(configured/set)されていることを含んでよい。例えば、要素Aが汎用プロセッサである場合、当該プロセッサが動作Bを実行可能なハードウェア構成を有するとともに、恒常的(permanent)又は一時的(temporary)なプログラム(命令)の設定により、動作Bを実際に実行するように設定(configured)されていればよい。また、要素Aが専用プロセッサ又は専用演算回路等である場合、制御用命令及びデータが実際に付属しているか否かとは無関係に、当該プロセッサの回路的構造等が動作Bを実際に実行するように構築(implemented)されていればよい。
本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」及び「有する(having)」等)が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」又は「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
本明細書において、ある実施形態の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施形態についても当該効果が得られると理解されるべきである。但し、当該効果の有無は、一般に種々の要因、条件及び/又は状態等に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件及び/又は状態等が満たされたときに実施形態に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
本明細書(請求項を含む)において、「最大化する(maximize)/最大化(maximization)」等の用語が用いられる場合は、グローバルな最大値を求めること、グローバルな最大値の近似値を求めること、ローカルな最大値を求めること及びローカルな最大値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最大値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最小化する(minimize)/最小化(minimization)」等の用語が用いられる場合は、グローバルな最小値を求めること、グローバルな最小値の近似値を求めること、ローカルな最小値を求めること及びローカルな最小値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最小値の近似値を確率的又はヒューリスティックに求めることを含む。同様に、「最適化する(optimize)/最適化(optimization)」等の用語が用いられる場合は、グローバルな最適値を求めること、グローバルな最適値の近似値を求めること、ローカルな最適値を求めること、及びローカルな最適値の近似値を求めることを含み、当該用語が用いられた文脈に応じて適宜解釈されるべきである。また、これら最適値の近似値を確率的又はヒューリスティックに求めることを含む。
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1処理を行い、前記1又は複数のハードウェアが第2処理を行う」等の表現(同様な表現を含む)が用いられている場合、第1処理を行うハードウェアと第2処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1処理を行うハードウェア及び第2処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、又は、電子回路を含む装置等を含んでもよい。
本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置のうち個々の記憶装置は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。また、複数の記憶装置のうち一部の記憶装置がデータを記憶する構成を含んでもよい。
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本開示の概念的な思想と趣旨を逸脱しない範囲において、種々の追加、変更、置き換え及び部分的削除等が可能である。例えば、前述した実施形態において、数値又は数式を説明に用いている場合、これらは例示的な目的で示されたものであり、本開示の範囲を限定するものではない。また、実施形態で示した各動作の順序も、例示的なものであり、本開示の範囲を限定するものではない。