(57)【要約】  本発明は、深度ヒントを有する深度推定モデルのトレーニング方法を開示する。画像ペア毎に：第１の画像について、深度予測が前記深度推定モデルによって決定されるとともに深度ヒントが取得され；第２の画像の第１の画像への１回目の投影で深度予測に基づく合成フレームが生成され、そして、２回目の投影で深度ヒントに基づくヒント付き合成フレームが生成され；一次損失が前記合成フレームを用いて計算され；ヒント付き損失が前記ヒント付き合成フレームを用いて計算され；ピクセルごとの決定に基づいて前記画像ペアについて全体損失が計算され；ここで、ヒント付き損失が一次損失よりも小さい場合、全体損失は、一次損失と、深度予測と深度ヒントとの間の教師あり深度損失と、を含む。深度推定モデルは、画像対の全損失を最小化することによってトレーニングされる。
2021522603.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実行される方法であって、
シーンの画像を受信するステップと、
プロセスによってトレーニングされた深度推定モデルに画像を入力するステップであって、当該プロセスが、
各画像ペアが第１の画像と第２の画像とを含む複数の画像ペアを含むトレーニング画像データにアクセスするステップであって、
各画像ペアについて、
前記深度推定モデルにより、前記第１の画像のピクセルの深度予測値を生成するステップと、
前記第１の画像の前記ピクセルの深度ヒント値を取得するステップと、
前記第１の画像の前記ピクセルの前記深度予測値に基づいて前記第２の画像を前記第１の画像に投影して、モデル合成フレームを生成するステップと、
前記第１の画像の前記ピクセルの前記深度ヒント値に基づいて前記第２の画像を前記第１の画像に投影して、ヒント付き合成フレームを生成するステップと、
前記モデル合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの比較に基づいて、前記深度予測値の一次損失値を計算するステップと、
前記ヒント付き合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの比較に基づいて、前記深度ヒント値のヒント付き損失値を計算するステップと、
前記画像ペアの全体損失を計算するステップであって、前記第１の画像の所与のピクセルの前記全体損失への寄与は、前記一次損失値又は前記ヒント付き損失値のどちらが小さいかに基づいて決定され、ここで、一次損失値よりも小さいヒント付き損失値を有する前記第１の画像における第１のピクセルの前記寄与は、前記一次損失値と、前記第１のピクセルの深度予測値及び深度ヒント値に基づく教師あり深度損失値とを含むステップと、
前記画像ペアの前記全体損失に基づいて、前記深度推定モデルのパラメータを調整するステップと、を含むプロセスであるステップと、
前記深度推定モデルにより、前記シーンの前記画像に対応する前記シーンの深度マップを生成ステップと、
を含む方法。
【請求項２】
前記各画像ペアが、対となるカメラによってキャプチャされた真の立体画像ペアである、請求項１に記載の方法。
【請求項３】
前記各画像ペアが、疑似立体画像ペアであり、前記第１の画像及び前記第２の画像が単一のカメラによってキャプチャされた時間的に別個のフレームである、請求項１に記載の方法。
【請求項４】
前記各画像ペアにおいて前記第２の画像を前記第１の画像に投影するステップが、さらに前記第１の画像と前記第２の画像との間のポーズに基づく、請求項１に記載の方法。
【請求項５】
前記第２の画像を前記第１の画像に投影するステップが、さらに前記第１の画像のカメラ内部パラメータの第１のセット及び前記第２の画像のカメラ内部パラメータの第２のセットに基づく、請求項１に記載の方法。
【請求項６】
深度予測値によるピクセルでの前記一次損失値が、前記モデル合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの間の差に基づき、深度ヒント値による前記ピクセルでの前記ヒント付き損失値が、前記ヒント付き合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの間の差に基づく、請求項１に記載の方法。
【請求項７】
前記全体損失に対する所与のピクセルの前記寄与は、前記所与のピクセルでの前記一次損失値が前記ヒント付き損失値以下である場合、前記所与のピクセルの前記一次損失値であり、
前記全体損失に対する前記所与のピクセルの前記寄与は、前記所与のピクセルでの前記ヒント付き損失値が前記一次損失値よりも小さい場合、前記所与のピクセルの前記一次損失値と、前記所与のピクセルでの深度予測値と深度ヒント値との間の差との合計である、請求項１に記載の方法。
【請求項８】
前記深度ヒント値は、前記画像ペアを入力し、前記画像ペアに基づいて前記深度ヒント値を出力するように構成されたステレオ深度推定モデルによって生成される、請求項１に記載の方法。
【請求項９】
前記深度ヒント値は、前記画像ペアに基づくｓｉｍｕｌｔａｎｅｏｕｓ−ｌｏｃａｌｉｚａｔｉｏｎ−ａｎｄ−ｍａｐｐｉｎｇ（ＳＬＡＭ）モジュールによって生成される、請求項１に記載の方法。
【請求項１０】
コンピュータによって実行される、深度推定モデルをトレーニングする方法であって、
各画像ペアが第１の画像と第２の画像とを含む複数の画像ペアを含むトレーニング画像データにアクセスするステップであって、
各画像ペアについて、
前記深度推定モデルにより、前記第１の画像のピクセルの深度予測値を生成するステップと、
前記第１の画像の前記ピクセルの深度ヒント値を取得するステップと、
前記第１の画像の前記ピクセルの前記深度予測値に基づいて、前記第２の画像を前記第１の画像に投影してモデル合成フレームを生成するステップと、
前記第１の画像の前記ピクセルの前記深度ヒント値に基づいて、前記第２の画像を前記第１の画像に投影してヒント付き合成フレームを生成するステップと、
前記モデル合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの比較に基づいて、前記深度予測値の一次損失値を計算するステップと、
前記ヒント付き合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの比較に基づいて、前記深度ヒント値のヒント付き損失値を計算するステップと、
前記画像ペアの全体損失を計算するステップであって、前記第１の画像の所与のピクセルの前記全体損失への寄与は、前記一次損失値又は前記ヒント付き損失値のどちらが小さいかに基づいて決定され、ここで、前記一次損失値よりも小さいヒント付き損失値を有する前記第１の画像における第１のピクセルの前記寄与は、前記一次損失値と、前記第１のピクセルの深度予測値及び深度ヒント値に基づく教師あり深度損失値とを含むステップと、
前記画像ペアの前記全体損失に基づいて、前記深度推定モデルの前記パラメータを調整するステップと、を含む、
方法。
【請求項１１】
前記各画像ペアが、対となるカメラによってキャプチャされた真の立体画像ペアである、請求項１０に記載の方法。
【請求項１２】
前記各画像ペアが、疑似立体画像ペアであり、前記第１の画像及び前記第２の画像が単一のカメラによってキャプチャされた時間的に別個のフレームである、請求項１０に記載の方法。
【請求項１３】
前記各画像ペアにおいて前記第２の画像を前記第１の画像に投影するステップが、さらに前記第１の画像と前記第２の画像との間のポーズに基づく、請求項１０に記載の方法。
【請求項１４】
前記第２の画像を前記第１の画像に投影するステップが、さらに前記第１の画像のカメラ内部パラメータの第１のセット及び前記第２の画像のカメラ内部パラメータの第２のセットに基づく、請求項１０に記載の方法。
【請求項１５】
深度予測値によるピクセルでの前記一次損失値が、前記モデル合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの間の差に基づき、深度ヒント値による前記ピクセルでの前記ヒント付き損失値が、前記ヒント付き合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの間の差に基づく、請求項１０に記載の方法。
【請求項１６】
前記全体損失に対する所与のピクセルの前記寄与は、前記所与のピクセルでの前記一次損失値が前記ヒント付き損失値以下である場合、前記所与のピクセルの前記一次損失値であり、
前記全体損失に対する前記所与のピクセルの前記寄与は、前記所与のピクセルでの前記ヒント付き損失値が前記一次損失値よりも小さい場合、前記所与のピクセルの前記一次損失値と、前記所与のピクセルでの深度予測値と深度ヒントとの間の差との合計である、請求項１０に記載の方法。
【請求項１７】
前記深度ヒント値は、前記画像ペアを入力し、前記画像ペアに基づいて前記深度ヒント値を出力するように構成されたステレオ深度推定モデルによって生成される、請求項１０に記載の方法。
【請求項１８】
前記深度ヒント値は、前記画像ペアに基づくｓｉｍｕｌｔａｎｅｏｕｓ−ｌｏｃａｌｉｚａｔｉｏｎ−ａｎｄ−ｍａｐｐｉｎｇ（ＳＬＡＭ）モジュールによって生成される、請求項１０に記載の方法。
【請求項１９】
命令を記憶する非一時的なコンピュータ可読記憶媒体であって、
前記命令は、プロセッサによって実行されると、前記プロセッサに、
シーンの画像を受信するステップと、
プロセスによってトレーニングされた深度推定モデルに画像を入力するステップであって、前記プロセスが、
各画像ペアが第１の画像と第２の画像とを含む複数の画像ペアを含むトレーニング画像データにアクセスするステップであって、
各画像ペアについて、
前記深度推定モデルにより、前記第１の画像のピクセルの深度予測値を生成するステップと、
前記第１の画像の前記ピクセルの深度ヒント値を取得するステップと、
前記第１の画像の前記ピクセルの前記深度予測値に基づいて、前記第２の画像を前記第１の画像に投影してモデル合成フレームを生成するステップと、
前記第１の画像の前記ピクセルの前記深度ヒント値に基づいて、前記第２の画像を前記第１の画像に投影してヒント付き合成フレームを生成するステップと、
前記モデル合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの比較に基づいて、前記深度予測値の一次損失値を計算するステップと、
前記ヒント付き合成フレームの前記ピクセルと前記第１の画像の前記ピクセルとの比較に基づいて、前記深度ヒント値のヒント付き損失値を計算するステップと、
前記画像ペアの全体損失を計算するステップであって、前記第１の画像の所与のピクセルの前記全体損失への寄与は、前記一次損失値又は前記ヒント付き損失値のどちらが小さいかに基づいて決定され、ここで、前記一次損失値よりも小さいヒント付き損失値を有する前記第１の画像における第１のピクセルの前記寄与は、前記一次損失値と、前記第１のピクセルの深度予測値及び深度ヒント値に基づく教師あり深度損失値とを含むステップと、を含むプロセスであるステップと、
前記画像ペアの前記全体損失に基づいて、前記深度推定モデルの前記パラメータを調整するステップと、
前記深度推定モデルにより、前記シーンの前記画像に対応する前記シーンの深度マップを生成ステップと、
を含む操作を実行させる命令を記憶するコンピュータ可読記憶媒体。
【請求項２０】
前記全体損失に対する所与のピクセルの前記寄与は、前記所与のピクセルでの前記一次損失値が前記ヒント付き損失値以下である場合、前記所与のピクセルの一次損失値であり、
前記全体損失に対する前記所与のピクセルの前記寄与は、前記所与のピクセルでの前記ヒント付き損失値が前記一次損失値よりも小さい場合、前記所与のピクセルの前記一次損失値と、前記所与のピクセルでの深度予測値と深度ヒントとの間の差との合計である、請求項１９に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
＜関連出願への相互参照＞
本出願は、２０１９年５月２日に出願された米国仮出願第６２／８４２，５３１号の利益を主張するものであり、あらゆる目的のためにその全体が参照により組み込まれる。
【０００２】
説明される主題は、一般に、単色入力画像から深度マップを推定することに関し、特に、別のモデルによって与えられる深度ヒントを使用してトレーニングされる、深度マップを推定するための機械学習モデルのトレーニングに関する。
【背景技術】
【０００３】
深度検知は、ナビゲーションとシーン理解の両方において応用される。多くの方法は、トレーニングされたモデル又はネットワークを使用して、単色入力画像から深度マップを決定する。深度推定システムをトレーニングするために異なる種類のトレーニングデータを使用するいくつかの方法がある。深度推定システムは、カメラによって撮影された同じシーンの画像と対にされた、環境内の物体についてのグラウンドトゥルース深度を確立するために検出及び測距システム（つまり、無線検出及び測距（ＲＡＤＡＲ：ｒａｄｉｏ  ｄｅｔｅｃｔｉｎｇ  ａｎｄ  ｒａｎｇｉｎｇ）、光検出及び測距（ＬＩＤＡＲ：ｌｉｇｈｔ  ｄｅｔｅｃｔｉｏｎ  ａｎｄ  ｒａｎｇｉｎｇ）など）を使用してトレーニングされ得る。検出及び測距システムは、物体の深度のグラウンドトゥルースを提供することができるが、多くの異なる環境の深度を検知するために検出及び測距システムを絶えず利用することは、時間及びリソースにおいて費用がかかる可能性がある。更に、検出及び測距システムは、そのシステムによる検出を不可能とさせる物質特性を有し得るいくつかの物体（例えば、反射物体）の深度を決定することができない。
【０００４】
深度推定システムをトレーニングする別の方法は、同じシーンの立体画像ペアを利用する。単一の時間インスタンスにおいて立体画像対をキャプチャすることは、同じシーンに焦点を合わせているが、ある程度離れて位置する２つのカメラを使用する必要がある。深度推定システムは、立体画像ペアの一方の立体画像から他方の立体画像に投影することによって動作する。一方から他方に投影するために、深度推定システムは、視差（スケーリングされた深度の逆数）と、２つの画像間のポーズ、すなわち、立体画像ペアを撮影するために使用される２つのカメラの視点間の変換行列とに加えて、現在の立体画像を考慮する。キャプチャされた立体画像と比較して投影の測光再構成誤差を最小化することで、深度推定システムはシーンの深度を決定できる。
【０００５】
他の方法は、刻々と変化するシーンの単眼ビデオデータを利用して深度推定システムをトレーニングする。深度推定システムは、単眼ビデオデータにおける１つの時間画像から次の時間画像へと、測光再構成誤差を最小化しながら投影することによってトレーニングを行う。しかしながら、そのようなシステムは、深度マップ及び深度マップの境界の周りにアーティファクトをもたらす、ある時間画像から別の時間画像に出入りする物体を不正確に考慮し得る。更に、従来のシステムは、現在、深度マップをアップサンプリングする前に深度マップを決定するために低解像度画像を入力するが、これは深度アップサンプリングアーティファクトを生じやすい。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
測光誤差は、Ｌ１距離、Ｌ２距離、構造的非類似度（ＤＳＳＩＭ）距離、又はこれらの距離の組み合わせなど、様々な測定基準を用いて測定することができる。自己教師ありトレーニングの欠点は、特に複数の深度値で測光損失が低くなる可能性がある場合に、最適な深度値を見つけることがしばしば困難であることである。その結果、トレーニングが難しくなり、予測の精度が低下する可能性がある。
【課題を解決するための手段】
【０００７】
本開示は、モデルの現在の予測の代替として、深度ヒントを使用して深度推定モデルをトレーニングすることについて説明する。あるピクセルの深度ヒントが、トレーニングされたモデルからの当該ピクセルの深度出力よりも良好な再投影（例えば、より低い測光再構成誤差）をもたらす場合、深度予測とヒントとを使用して（例えば、モデルからの出力と組み合わせて）、損失に対するピクセルの寄与を計算する。深度ヒントがより良好な再投影をもたらさない場合、トレーニングでは深度ヒントは無視され、モデルの深度出力から損失に対するピクセルの寄与が決定される。トレーニングプロセスは、損失に応じて（例えば、バックプロパゲーションを使用して）モデルを更新する。これらの深度ヒントを使用すると、従来のトレーニングプロセスを単独で使用するよりも、トレーニングプロセスのパフォーマンスを向上することができる。深度ヒントは、代替的にトレーニングされた（例えば、外部システムによってトレーニングされた）深度推定モデルから取得され得る。
【０００８】
トレーニングシステムは、トレーニング画像データを使用した自己教師ありトレーニングアルゴリズムに依存している。自己教師ありトレーニングは、教師ありトレーニングとは対照的に、グラウンドトゥルース深度を必要としない。トレーニング画像データは、画像ペアに分割できる。画像ペアは、双眼カメラシステムによってキャプチャされた真の立体画像ペア、及び／又は少なくとも１つのカメラを備えたシステムによってキャプチャされた単眼ビデオデータの時間的に別個のフレームからの疑似立体画像ペアであり得る。トレーニングシステムは、ある画像ペアから第１のトレーニング画像を入力して、第１のトレーニング画像の初期深度予測を決定する。トレーニングシステムは、当該画像ペアの第２のトレーニング画像を当該画像ペアの第１のトレーニング画像に投影して、少なくとも第１のトレーニング画像の深度予測及び２つのトレーニング画像間のポーズに基づいて合成フレームを生成する。トレーニングシステムは、第２のトレーニング画像を第１のトレーニング画像に再度投影して、第１のトレーニング画像の深度予測ではなく、深度ヒントに基づいてヒント付き合成フレームを生成する。ポーズは、トレーニング画像を撮影するために使用されるカメラの既知の位置、例えば、双眼カメラシステムにおけるカメラの既知の配置から知ることができる。あるいは、ポーズは、例えば、時間的に隣接するフレームが疑似立体画像ペアを構成する単眼ビデオデータの場合には、ポーズ推定モデル又は深度−ポーズハイブリッドモデルによって推定され得る。
【０００９】
投影プロセスの精度は、少なくとも第１のトレーニング画像の深度予測の精度に基づく。したがって、一次損失は、合成フレームとそれに対応するトレーニング画像との間の測光再構成誤差に従って定義され得る。ヒント付き損失は、ヒント付き合成フレームとそれに対応するトレーニング画像との間の測光再構成誤差に従って定義され得る。画像ペアの全体損失は、全てのピクセルにわたる損失の寄与を合計する。上記のように、トレーニングシステムは、ピクセルごと一次損失とヒント付き損失とを比較し、全体損失に対するそのピクセルによる寄与を決定し得る。ピクセルの一次損失値がヒント付き損失値以下の場合、トレーニングシステムは深度ヒントからのヒント付き損失を無視し、全体損失への寄与はそのピクセルの一次損失値となる。ピクセルのヒント付き損失値が一次損失値よりも小さい場合、全体損失への寄与は、一次損失値と、そのピクセルの深度予測値とそのピクセルの深度ヒントの間の教師あり深度損失に基づく。一実施形態では、寄与は一次損失値の合計であり、教師あり深度損失は、そのピクセルでのモデルの深度予測と深度ヒントとの間の絶対差である。
【００１０】
立体画像データを用いたトレーニングの実施形態では、深度ヒントを使用して、各立体画像を立体画像ペアにおける他の立体画像に投影して、ヒント付き合成フレームを生成する。深度ヒントは、代替的にトレーニングされた深度推定モデル、例えば、立体画像を入力し、単一の深度マップを出力するように構成されたステレオ深度モデルから取得され得る。深度ヒントは、マップを生成するとともに、少なくとも画像データ及びいくつかの位置決めデータ（グローバル座標、加速度データ、走行距離データなど）に基づいて、生成されたマップ内のクライアントデバイスを位置付けるように構成されたｓｉｍｕｌｔａｎｅｏｕｓ−ｌｏｃａｌｉｚａｔｉｏｎ−ａｎｄ−ｍａｐｐｉｎｇ（ＳＬＡＭ）モジュールから取得され得る。
【００１１】
単眼ビデオデータを用いたトレーニングの実施形態では、深度ヒント及び／又はポーズヒントを、ある時間画像を別の時間画像に投影する際に使用して、ヒント付き合成フレームを生成することができる。深度ヒントは、上述のようにして取得され得る。ポーズヒントは、代替的にトレーニングされたポーズ推定モデルから取得され得る。
【図面の簡単な説明】
【００１２】
【図１】図１は、１つ以上の実施形態による、ネットワーク化されたコンピューティング環境を例示している。
【００１３】
【図２】図２は、１つ以上の実施形態による、現実世界に並行する地理を有する仮想世界の表示を示している。
【００１４】
【図３】図３は、１つ以上の実施形態による、並行現実ゲームの例示的なゲームインターフェースを示している。
【００１５】
【図４】図４は、１つ以上の実施形態による、立体画像データ及び深度ヒントを用いて深度推定モデルをトレーニングする一般的なプロセスを説明するフローチャートである。
【００１６】
【図５】図５は、１つ以上の実施形態による、深度ヒントを使用してトレーニングされた深度推定モデルの拡張現実アプリケーションにおける使用例を説明するフローチャートである。
【００１７】
【図６】図６は、１つ以上の実施形態による、深度推定モデルのトレーニング又は適用に使用するのに適したコンピュータシステムの一例を示している。
【００１８】
図及び以下の説明は、例示のみを目的として特定の実施形態を説明している。当業者は、以下の説明から、記載された原理から逸脱することなく、構造及び方法の代替の実施形態を使用できることを容易に認識するであろう。ここで、いくつかの実施形態を参照し、その例を添付の図に示す。
【発明を実施するための形態】
【００１９】
＜例示的な位置ベースの並行現実ゲームシステム＞
現実世界におけるプレーヤーの動き及び行動が仮想世界における行動に影響を及ぼし、逆もまた同様であるように、現実世界の地理の少なくとも一部分に並行する仮想世界の地理における拡張現実コンテンツを含む、並行現実ゲームのコンテキストにおいて、様々な実施形態が説明される。本明細書で提供される開示を使用する当業者は、記載された主題が、画像データから深度情報を決定することが望ましい他の状況に適用可能であることを理解するであろう。更に、コンピュータベースのシステムに固有の柔軟性は、システムの構成要素間で、非常に様々な構成、組み合わせ、及びタスクと機能の分割を可能にする。例えば、本開示の態様によるシステム及び方法は、単一のコンピューティングデバイスを使用して、又は複数のコンピューティングデバイスにわたって（例えば、コンピュータネットワークに接続されて）実装することができる。
【００２０】
図１は、１つ以上の実施形態による、ネットワーク化されたコンピューティング環境１００を例示している。ネットワーク化されたコンピューティング環境１００は、現実世界に並行な地理を有する仮想世界におけるプレーヤーの相互作用を提供する。特に、現実世界の地理的領域は、仮想世界の対応する領域に直接リンク又はマッピングされ得る。プレーヤーは、現実世界における様々な地理的位置に移動することにより、仮想世界を動き回ることができる。例えば、現実世界におけるプレーヤーの位置を追跡して、仮想世界におけるプレーヤーの位置を更新するために使用できる。典型的には、現実世界におけるプレーヤーの位置は、プレーヤーが仮想世界と相互作用しているクライアントデバイス１２０の位置を見つけ、プレーヤーが同じ（又はほぼ同じ）位置にあると仮定することによって決定される。例えば、様々な実施形態において、現実世界におけるプレーヤーの位置が、仮想世界における仮想要素の仮想位置に対応する現実世界位置の閾値距離（例えば、１０メートル、２０メートルなど）内にある場合、プレーヤーは、その仮想要素と相互作用することができる。便宜上、様々な実施形態が「プレーヤーの位置」を参照して説明されるが、当業者は、そのような参照がプレーヤーのクライアントデバイス１２０の位置を参照し得ることを理解するであろう。
【００２１】
次に、図２を参照すると、一実施形態による、並行現実ゲームのプレーヤーのためのゲームボードとして機能することができる現実世界２００に並行する仮想世界２１０の概念図が示されている。図示のように、仮想世界２１０は、現実世界２００の地理と並行する地理を含むことができる。特に、現実世界２００における地理的領域又は空間を定義する座標の範囲は、仮想世界２１０における仮想空間を定義する座標の対応する範囲にマッピングされる。現実世界２００における座標の範囲は、町、地域、都市、キャンパス、場所、国、大陸、地球全体、又は他の地理的領域に関連付けることができる。地理的座標の範囲内の各地理的座標は、仮想世界の仮想空間内の対応する座標にマッピングされる。
【００２２】
仮想世界２１０におけるプレーヤーの位置は、現実世界２００におけるプレーヤーの位置に対応する。例えば、現実世界２００の位置２１２に位置するプレーヤーＡは、仮想世界２１０において対応する位置２２２を有する。同様に、現実世界の位置２１４に位置するプレーヤーＢは、仮想世界において対応する位置２２４を有する。プレーヤーが現実世界の地理的座標の範囲内を動き回るとき、プレーヤーはまた、仮想世界２１０内の仮想空間を定義する座標の範囲内を動き回る。特に、プレーヤーが携帯するモバイルコンピューティングデバイスに関連付けられた測位システム（例えば、ＧＰＳシステム）を使用して、プレーヤーが現実世界の地理的座標の範囲を進むときのプレーヤーの位置を追跡することができる。現実世界２００におけるプレーヤーの位置に関連付けられたデータは、仮想世界２１０内の仮想空間を定義する座標の対応する範囲におけるプレーヤーの位置を更新するために使用される。このようにして、プレーヤーは、現実世界２００における特定の個別の位置で位置情報をチェックインしたり定期的に更新したりすることなく、現実世界２００内の地理的座標の対応する範囲間を移動するだけで、仮想世界２１０内の仮想空間を定義する座標の範囲内の連続的な追跡をしつつ進むことができる。
【００２３】
位置ベースのゲームは、プレーヤーが仮想世界の様々な仮想位置に散在する様々な仮想要素及び／又は仮想物体に移動及び／又は相互作用することを要求する複数のゲーム目標を含むことができる。プレーヤーは、現実世界において仮想要素又は物体に対応する位置に移動することで、これらの仮想位置に移動できる。例えば、プレーヤーが現実世界を連続的に進むとき、プレーヤーが並行仮想世界も連続的に進むように、測位システムは、プレーヤーの位置を連続的に追跡することができる。そして、プレーヤーは、特定の位置にある様々な仮想要素及び／又は物体と相互作用して、１つ以上のゲーム目標を達成又は実行できる。
【００２４】
例えば、ゲーム目標は、仮想世界２１０内の様々な仮想位置に位置する仮想要素２３０と相互作用するプレーヤーを有する。これらの仮想要素２３０は、現実世界２００内のランドマーク、地理的位置、又は物体２４０にリンクされ得る。現実世界のランドマーク又は物体２４０は、美術品、記念碑、建物、商業施設、図書館、美術館、又は他の適切な現実世界のランドマーク又は物体であり得る。相互作用には、キャプチャ、所有権の主張、仮想アイテムの使用、仮想通貨の使用などが含まれる。これらの仮想要素２３０をキャプチャするために、プレーヤーは、現実世界において仮想要素２３０にリンクされたランドマーク又は地理的位置２４０に移動し、仮想世界２１０における仮想要素２３０との必要な相互作用を実行しなければならない。例えば、図２のプレーヤーＡは、その特定のランドマーク２４０にリンクされた仮想要素２３０と相互作用、又は、それをキャプチャするために、現実世界２００内のランドマーク２４０に移動しなければならない場合がある。仮想要素２３０との相互作用は、写真を撮る、及び／又は仮想要素２３０に関連付けられたランドマーク又は物体２４０に関する他の情報を検証、取得、又はキャプチャするなど、現実世界での行動を必要とし得る。
【００２５】
ゲーム目標は、位置ベースゲームでプレーヤーによって収集された１つ以上の仮想アイテムをそのプレーヤーが使用することを必要とし得る。例えば、プレーヤーは、ゲーム目標を完了するために役立ち得る仮想アイテム（例えば、武器、クリーチャ、パワーアップ、又は他のアイテム）を求めて仮想世界２１０を移動することができる。これらの仮想アイテムは、現実世界２００内の異なる位置に移動することによって、又は仮想世界２１０若しくは現実世界２００のいずれかで様々な行動を完了することによって、発見又は収集することができる。図２に示す例では、プレーヤーは、仮想アイテム２３２を使用して、１つ以上の仮想要素２３０をキャプチャする。特に、プレーヤーは、仮想アイテム２３２を、仮想世界２１０において仮想要素２３０に近接する位置又は仮想要素２３０内の位置で効果的に使用することができる。このようにして１つ以上の仮想アイテム２３２を効果的に使用すると、特定のプレーヤー又は特定のプレーヤーのチーム／ファクションのために仮想要素２３０をキャプチャすることができる。
【００２６】
１つの特定の実装形態では、プレーヤーは、並行現実ゲームの一部として仮想エネルギーを集めなければならない場合がある。図２に示されるように、仮想エネルギー２５０は、仮想世界２１０内の異なる位置にばらまかれ得る。プレーヤーは、実世界２００において仮想エネルギー２５０の対応する位置に移動することによって、仮想エネルギー２５０を収集することができる。仮想エネルギー２５０は、仮想アイテムを強化するため、及び／又はゲームでの様々なゲーム目標を実行するために使用することができる。全ての仮想エネルギー２５０を失ったプレーヤーは、ゲームから切断され得る。
【００２７】
本開示の態様によれば、並行現実ゲームは、ゲームの全ての参加者が同じ仮想世界を共有する大規模なマルチプレーヤー位置ベースのゲームであり得る。プレーヤーは、別々のチーム又はファクションに分けることができ、仮想要素をキャプチャ又はその所有権を主張するなど、１つ以上のゲーム目標を達成するために協力することができる。このようにして、並行現実ゲームは、本質的に、ゲーム内のプレーヤー間の協力を奨励するソーシャルゲームであり得る。並行現実ゲームでは、敵対するチームのプレーヤーが互いに対戦する（又は協力して相互の目標を達成する）ことができる。プレーヤーは、仮想アイテムを使用して、敵対するチームのプレーヤーの進行を攻撃又は妨害することができる。場合によっては、プレーヤーは、並行現実ゲームの協力的又は相互作用的なイベントのために、現実世界の位置に集まることが奨励される。このような場合、ゲームサーバは、プレーヤーが実際に物理的に存在し、スプーフィングしていないことを確認しようとする。
【００２８】
並行現実ゲームは、並行現実ゲーム内のゲームプレイを強化及び奨励するための様々な機能を備えている。例えば、プレーヤーは、ゲーム中に使用できる仮想通貨又は別の仮想報酬（仮想トークン、仮想ポイント、仮想マテリアルリソースなど）を蓄積することができる（例えば、ゲーム内アイテムの購入、他のアイテムの引換、アイテムの作成など）。プレーヤーは、１つ以上のゲーム目標を完了し、ゲーム内で経験を積むにつれて、レベルを上げることができる。いくつかの実施形態では、プレーヤーは、ゲームで提供される１つ以上の通信インターフェースを介して互いに通信することができる。プレーヤーは、ゲーム内のゲーム目標を完了するために使用できる強化された「パワー」又は仮想アイテムを取得することもできる。本明細書で提供される開示を使用する当業者は、本開示の範囲から逸脱することなく、他の様々なゲーム機能を並行現実ゲームに含めることができることを理解すべきである。
【００２９】
図１に戻り、ネットワーク化されたコンピューティング環境１００は、クライアント・サーバアーキテクチャを使用し、ここで、ゲームサーバ１２０は、クライアントデバイス１１０とネットワーク１０５を介して通信して、クライアントデバイス１１０のプレーヤーに並行現実ゲームを提供する。ネットワーク化されたコンピューティング環境１００は、更に、スポンサー／広告主システム又はビジネスシステムなどの他の外部システムを含んでいてもよい。図１には、１つのクライアントデバイス１１０のみが示されているが、任意の数のクライアント１１０又は他の外部システムが、ネットワーク１０５を介してゲームサーバ１２０に接続され得る。更には、ネットワーク化されたコンピューティング環境１００は、異なる又は追加の要素を含んでもよく、以下に記載されるものとは異なる方法で、クライアントデバイス１１０とサーバ１２０との間で、機能が分散されてもよい。
【００３０】
クライアントデバイス１１０は、ゲームサーバ１２０とインターフェース接続するためにプレーヤーによって使用され得る任意の携帯型コンピューティングデバイスであり得る。例えば、クライアントデバイス１１０は、ワイヤレスデバイス、携帯情報端末（ＰＤＡ）、携帯型ゲームデバイス、携帯電話、スマートフォン、タブレット、ナビゲーションシステム、ハンドヘルドＧＰＳシステム、ウェアラブルコンピューティングデバイス、１つ以上のプロセッサを有するディスプレイ又は他のそのようなデバイスであり得る。別の例では、クライアントデバイス１１０は、デスクトップ又はラップトップコンピュータなどの従来のコンピュータシステムを含む。なお、クライアントデバイス１１０は、コンピューティングデバイスを備えた車両であり得る。要するに、クライアントデバイス１１０は、プレーヤーがゲームサーバ１２０と相互作用することを可能にする任意のコンピュータデバイス又はシステムであり得る。コンピューティングデバイスとして、クライアントデバイス１１０は、１つ以上のプロセッサ及び１つ以上のコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を記憶することができる。クライアントデバイス１１０は、好ましくは、スマートフォン又はタブレットなどのプレーヤーと共に容易に携帯又は他の方法で運ぶことができる携帯型コンピューティングデバイスである。
【００３１】
クライアントデバイス１１０は、ゲームサーバ１２０と通信して、ゲームサーバ１２０に物理的環境のセンシングデータを提供する。クライアントデバイス１１０は、クライアントデバイス１１０が存在する物理的環境におけるシーンの２次元画像データをキャプチャするカメラアセンブリ１２５を有する。クライアントデバイス１１０は、更に、例えば、ゲームサーバ１２０によってトレーニングされた機械学習モデルである深度推定モデル１３０を有する。図１に示す実施形態では、各クライアントデバイス１１０は、ゲームモジュール１３５及び測位モジュール１４０などのソフトウェア構成要素を有する。クライアントデバイス１１０は、プレーヤーから情報を受信する、及び／又はプレーヤーに情報を提供するための様々な他の入力／出力デバイスを有していてもよい。入力／出力デバイスの例としては、ディスプレイ画面、タッチスクリーン、タッチパッド、データ入力キー、スピーカ、及び音声認識に適したマイクロフォン等が挙げられる。クライアントデバイス１１０は、特に限定されないが、動きセンサ、加速度センサ、ジャイロスコープ、他の慣性測定ユニット（ＩＭＵ）、気圧計、測位システム、温度計、光センサなどの、クライアントデバイス１１０からのデータを記録するための他の様々なセンサを更に含んでいてもよい。クライアントデバイス１１０は、ネットワーク１０５を介して通信を提供するためのネットワークインターフェースをさらに含むことができる。ネットワークインターフェースは、例えば、送信機、受信機、ポート、コントローラ、アンテナ、又は他の適切な構成要素を含む、１つ以上のネットワークとインターフェース接続するための任意の適切な構成要素を含むことができる。
【００３２】
カメラアセンブリ１２５は、クライアントデバイス１１０が存在する環境のシーンの画像データをキャプチャする。カメラアセンブリ１２５は、様々なキャプチャーレートで様々な色捕捉範囲を有する様々なフォトセンサを利用できる。カメラアセンブリ１２５は、広角レンズ又は望遠レンズを含み得る。カメラアセンブリ１２５は、単一の画像又はビデオを画像データとしてキャプチャするように構成され得る。更に、カメラアセンブリ１２５の向きは、カメラアセンブリ１２５が地平線に向けられた状態で地面に平行であり得る。カメラアセンブリ１２５は、画像データをキャプチャし、その画像データをクライアントデバイス１１０上のコンピューティングデバイスと共有する。画像データには、センシングデータ（温度、環境の明るさなど）やキャプチャデータ（露出、暖かさ、シャッタースピード、焦点距離、キャプチャ時間など）を含む画像データの他の詳細を記述するメタデータを付加することができる。カメラアセンブリ１２５は、画像データをキャプチャすることができる１つ以上のカメラを含むことができる。一例では、カメラアセンブリ１２５は１つのカメラを備え、単眼画像データをキャプチャするように構成される。別の例では、カメラアセンブリ１２５は２つのカメラを備え、立体画像データをキャプチャするように構成される。他の様々な実装形態では、カメラアセンブリ１２５は、それぞれが画像データをキャプチャするように構成された複数のカメラを備える。
【００３３】
深度推定モデル１３０は、シーンの入力画像を受信し、当該入力画像に基づく当該シーンの深度マップを出力する。深度推定モデル１３０は、以下でより詳細に説明するが、深度推定トレーニングシステム１７０によってトレーニングされ、また、深度推定トレーニングシステム１７０によって更新又は調整され得る。受信された入力画像は、カメラアセンブリ１２５のカメラ又は別のクライアントデバイス１１０からの別のカメラによってキャプチャされ得る。いくつかの実施形態では、受信された入力画像は、入力画像の内部値（ｉｎｔｒｉｎｓｉｃｓ）を特定する画像に付加されたメタデータを有する。画像の内部値は、画像がキャプチャされた時点でのカメラの１つ以上の幾何学的特性、例えば、画像をキャプチャする際のカメラの焦点距離、カメラの主点オフセット、カメラのスキュー等を指す。内部値を用いて、深度推定モデル１３０は、内部値を説明する内部行列を生成することができる。いくつかの実施形態では、深度推定モデル１３０は、入力画像が満足のいくものであるかどうか、例えば、閾値解像度を超えるかどうかを判定する。もし入力画像が満足のいくものでない場合、深度推定モデル１３０は、１つ以上の前処理技術、例えば、シーンの深度マップを決定する前に、入力画像を所望の解像度にアップサンプリングして、入力画像が満足できるものであることを保証することができる。他の例示的な条件としては、コントラスト、グレイン、カラースケール、画像のその他の特性などが挙げられる。深度推定モデル１３０は、（受信時又は前処理後に）画像を入力し、シーンの深度マップを決定する。
【００３４】
深度推定モデル１３０は、１つ以上の機械学習アルゴリズムを使用して実装される。深度推定モデル１３０に使用できる機械学習アルゴリズムは、ニューラルネットワーク、決定木、ランダムフォレスト、リグレッサ、クラスタリング、それらの他の派生アルゴリズム、又はそれらのいくつかの組み合わせを含む。１つ以上の実施形態では、深度推定モデル１３０は、入力画像を受信するように構成された入力層及び深度予測を出力するように構成された出力層を少なくとも含む複数の層を有するニューラルネットワークとして構造化される。各層は多数のノードを有し、各ノードは前の層における１つ以上のノードの重み付けされた組み合わせによって定義される。入力層に続くノードを定義する重みは、深度推定トレーニングシステム１７０によるトレーニング中に決定される。１つの例示的なアーキテクチャでは、深度推定モデル１３０は、抽象深度特徴を決定するために入力画像から次元を減少させるように構成されたポーズエンコーダと呼ばれる層の第１のセットと、入力画像と同じ次元の深度マップを出力するために抽象深度特徴から次元を増加させるように構成されたポーズデコーダと呼ばれる層の第２のセットとを含み得る。
【００３５】
ゲームモジュール１３５は、並行現実ゲームに参加するためのインターフェースをプレーヤーに提供する。ゲームサーバ１２０は、クライアントデバイス１１０のゲームモジュール１３５によって使用されるゲームデータを、ネットワーク１０５を介してクライアントデバイス１１０に送信し、ゲームのローカルバージョンをゲームサーバ１２０から離れた位置にいるプレーヤーに提供する。ゲームサーバ１２０は、ネットワーク１０５を介して通信を提供するためのネットワークインターフェースを含むことができる。ネットワークインターフェースは、例えば、送信機、受信機、ポート、コントローラ、アンテナ、又は他の適切な構成要素を含む、１つ以上のネットワークとインターフェース接続するための任意の適切な構成要素を含むことができる。
【００３６】
クライアントデバイス１１０によって実行されるゲームモジュール１３５は、プレーヤーと並行現実ゲームとの間のインターフェースを提供する。ゲームモジュール１３５は、ゲームに関連付けられた仮想世界を表示し（例えば、仮想世界の画像をレンダリングし）、ユーザが仮想世界で相互作用して様々なゲーム目標を実行することを可能にするユーザインターフェースを、クライアントデバイス１１０に関連付けられたディスプレイデバイス上に提示することができる。いくつかの他の実施形態では、ゲームモジュール１３５は、並行現実ゲームの仮想要素で拡張された、現実世界の（例えば、カメラアセンブリ１２５によってキャプチャされた）画像データを提示する。これらの実施形態では、ゲームモジュール１３５は、クライアントデバイス１１０の他の構成要素から受信した他の情報に従って、仮想コンテンツを生成、及び／又は調整することができる。例えば、ゲームモジュール１３５は、画像データにキャプチャされたシーンの（例えば、深度推定モデル１３０によって決定される）深度マップに従って、ユーザインターフェース上に表示される仮想物体を調整することができる。
【００３７】
ゲームモジュール１３５は、更に、他の様々な出力を制御して、プレーヤーがディスプレイ画面を見ることなくゲームと相互作用できるようにすることができる。例えば、ゲームモジュール１３５は、プレーヤーがディスプレイ画面を見ずにゲームをプレイすることを可能にする、様々なオーディオ、振動、又は他の通知を制御することができる。ゲームモジュール１３５は、ゲームサーバ１２０から受信したゲームデータにアクセスして、ゲームの正確な表示をユーザに提供することができる。ゲームモジュール１３５は、プレーヤーの入力を受信して処理し、ネットワーク１０５を介してゲームサーバ１２０に更新を提供することができる。ゲームモジュール１３５は、更に、クライアントデバイス１１０によって表示されるゲームコンテンツを生成、及び／又は調整することができる。例えば、ゲームモジュール１３５は、（例えば、深度推定モデル１３０によって決定される）深度情報に基づいて仮想要素を生成することができる。
【００３８】
測位モジュール１４０は、クライアントデバイス１１０の位置を監視するための任意のデバイス又は回路であり得る。例えば、測位モジュール１４０は、衛星航法測位システム（例えば、ＧＰＳシステム、ガリレオ測位システム、全地球航法衛星システム（ＧＬＯＮＡＳＳ）、ＢｅｉＤｏｕ衛星航法及び測位システム）、慣性航法システム、ＩＰアドレスに基づく、三角測量及び／又はセルラータワー若しくはＷｉ−Ｆｉホットスポットへの近接を使用することによる推測航法システム、及び／又は、位置を決定するための他の適切な技術を使用することによって、実際の又は相対的な位置を決定することができる。測位モジュール１４０は、クライアントデバイス１１０の位置を正確に測ることを補助する様々な他のセンサをさらに含み得る。
【００３９】
プレーヤーが現実世界でクライアントデバイス１１０と共に動き回るとき、測位モジュール１４０は、プレーヤーの位置を追跡し、プレーヤーの位置情報をゲームモジュール１３５に提供する。ゲームモジュール１３５は、現実世界におけるプレーヤーの実際の位置に基づいて、ゲームに関連付けられた仮想世界におけるプレーヤーの位置を更新する。したがって、プレーヤーは、クライアントデバイス１１０を現実世界で携帯又は運ぶだけで、仮想世界と相互作用することができる。特に、仮想世界におけるプレーヤーの位置は、現実世界におけるプレーヤーの位置に対応することができる。ゲームモジュール１３５は、ネットワーク１０５を介してゲームサーバ１２０にプレーヤーの位置情報を提供することができる。それに応じて、ゲームサーバ１２０は、不正行為者がクライアントデバイス１１０の位置をスプーフィングするのを防ぐために、クライアントデバイス１１０の位置を検証するための様々な技術を制定することができる。なお、プレーヤーに関連付けられた位置情報は、プレーヤーの位置情報にアクセスすること及びゲームの中で位置情報をどのように活用するか（例えば、仮想世界におけるプレーヤーの位置を更新するために活用すること）をプレーヤーに通知した後で、許可された場合にのみ利用されることを理解されたい。更に、プレーヤーに関連付けられた位置情報は、プレーヤーのプライバシーを保護する方法で保存及び維持される。
【００４０】
ゲームサーバ１２０は、任意のコンピューティングデバイスであり、１つ以上のプロセッサ及び１つ以上のコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を記憶することができる。ゲームサーバ１２０は、ゲームデータベース１１５を含むことができ、又はそれと通信することができる。ゲームデータベース１１５は、ネットワーク１０５を介してクライアント１２０にサービス又は提供される、並行現実ゲームで使用されるゲームデータを記憶する。
【００４１】
ゲームデータベース１１５に記憶されたゲームデータは、以下を含み得る。（１）並行現実ゲームの仮想世界に関連付けられたデータ（例えば、ディスプレイデバイス上で仮想世界をレンダリングするために使用される画像データ、仮想世界内の位置の地理座標など）；（２）並行現実ゲームのプレーヤーに関連付けられたデータ（特に限定されないが、例えば、プレーヤー情報、プレーヤー経験レベル、プレーヤー通貨、仮想世界／現実世界でのプレーヤーの現在位置、プレーヤーエネルギーレベル、プレーヤーの好み、チーム情報、ファクション情報などを含むプレーヤープロファイル情報）；（３）ゲーム目標に関連付けられたデータ（例えば、現在のゲーム目標、ゲーム目標のステータス、過去のゲーム目標、将来のゲーム目標、所望のゲーム目標などに関連付けられたデータなど）；（４）仮想世界における仮想要素に関連付けられたデータ（例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲーム目標、仮想要素に対応する実世界の位置情報、仮想要素の動作、仮想要素の関連性など）；（５）現実世界の物体、ランドマーク、仮想世界の要素にリンクされた位置に関連付けられたデータ（例えば、現実世界の物体／ランドマークの位置、現実世界の物体／ランドマークの説明、現実世界の物体にリンクされた仮想要素の関連性など）；（６）ゲームのステータス（例えば、現在のプレーヤー数、ゲーム目標の現在のステータス、プレーヤーのリーダーボードなど）；（７）プレーヤーの行動／入力に関連付けられたデータ（例えば、現在のプレーヤー位置、過去のプレーヤー位置、プレーヤーの動き、プレーヤーの入力、プレーヤーのクエリ、プレーヤーの通信など）；並びに（８）並行現実ゲームの実行中に使用、関連、又は取得されたその他の任意のデータ。ゲームデータベース１１５に記憶されたゲームデータは、システム管理者によって、及び／又は、ネットワーク１０５を介してクライアントデバイス１１０からなど、システム１００のユーザ／プレーヤーから受信されたデータによって、オフライン又はリアルタイムのいずれかで取り込むことができる。
【００４２】
ゲームサーバ１２０は、クライアントデバイス１１０から（例えば、リモートプロシージャコール（ＲＰＣ）を介して）ゲームデータの要求を受信し、ネットワーク１０５を介してそれらの要求に応答するように構成され得る。例えば、ゲームサーバ１２０は、ゲームデータを１つ以上のデータファイルにエンコードし、そのデータファイルをクライアントデバイス１１０に提供することができる。更に、ゲームサーバ１２０は、ネットワーク１０５を介してクライアントデバイス１１０からゲームデータ（例えば、プレーヤーの位置、プレーヤーの行動、プレーヤーの入力など）を受信するように構成することができる。例えば、クライアントデバイス１１０は、プレーヤーの入力及びその他の更新をゲームサーバ１２０に定期的に送信するように構成することができ、ゲームサーバ１２０は、ゲームデータベース１１５内のゲームデータを更新するために使用して、ゲームのあらゆる変更された条件を反映することができる。
【００４３】
示される実施形態では、サーバ１２０は、ユニバーサルゲームモジュール１４５、商用ゲームモジュール１５０、データ収集モジュール１５５、イベントモジュール１６０、及び深度推定トレーニングシステム１７０を有する。上記のように、ゲームサーバ１２０は、ゲームサーバ１２０の一部であるか又はリモートでアクセスされ得るゲームデータベース１１５と相互作用する（例えば、ゲームデータベース１１５は、ネットワーク１０５を介してアクセスされる分散データベースであり得る）。他の実施形態では、ゲームサーバ１２０は、異なる要素及び／又は追加の要素を含む。更に、機能は、説明されているものとは異なる方法で要素間で分散され得る。例えば、ゲームデータベース１１５は、ゲームサーバ１２０に統合することができる。
【００４４】
ユニバーサルゲームモジュール１４５は、全てのプレーヤーのために並行現実ゲームをホストし、全てのプレーヤーの並行現実ゲームの現在のステータスの信頼できる情報源として機能する。ホストとして、ユニバーサルゲームモジュール１４５は、例えば、それぞれのクライアントデバイス１１０を介して、プレーヤーに提示するためのゲームコンテンツを生成する。ユニバーサルゲームモジュール１４５は、並行現実ゲームをホストするときに、ゲームデータベース１１５にアクセスして、ゲームデータを取得及び／又は記憶することができる。ユニバーサルゲームモジュール１４５は、更に、クライアントデバイス１１０からゲームデータ（例えば、深度情報、プレーヤーの入力、プレーヤーの位置、プレーヤーの行動、ランドマーク情報など）を受信し、受信したゲームデータを、並行現実ゲームの全てのプレーヤーのために並行現実ゲーム全体に組み込む。ユニバーサルゲームモジュール１４５は、更に、ネットワーク１０５を介したクライアントデバイス１１０へのゲームデータの配信を管理することができる。ユニバーサルゲームモジュール１４５は、特に限定されないが、クライアントデバイス１１０とゲームサーバ１２０との間の接続の保護、様々なクライアントデバイス１１０間の接続の確立、及び様々なクライアントデバイス１１０の位置の検証を含む、クライアントデバイス１１０のセキュリティ面を更に管理してもよい。
【００４５】
商用ゲームモジュール１５０は、それが含まれる実施形態において、ユニバーサルゲームモジュール１４５とは分離されていても、その一部であってもよい。商用ゲームモジュール１５０は、現実世界での商業活動にリンクされている並行現実ゲーム内の様々なゲーム機能の包含を管理することができる。例えば、商用ゲームモジュール１５０は、スポンサー／広告主、企業、又はその他のエンティティといった外部システムから要求を、ネットワーク１０５を介して（ネットワークインターフェースを介して）受信して、並行現実ゲームにおいて商業活動にリンクされたゲーム機能を含めることができる。そして、商用ゲームモジュール１５０は、これらのゲーム機能を並行現実ゲームに含めるように配置することができる。
【００４６】
ゲームサーバ１２０は、データ収集モジュール１５５をさらに含むことができる。データ収集モジュール１５５は、それが含まれる実施形態において、ユニバーサルゲームモジュール１４５とは分離されていても、その一部であってもよい。データ収集モジュール１５５は、現実世界でのデータ収集活動にリンクされている並行現実ゲーム内の様々なゲーム機能の包含を管理することができる。例えば、データ収集モジュール１５５は、ゲームデータベース１１５に記憶されたゲームデータを変更して、並行現実ゲームにおけるデータ収集活動にリンクされたゲーム機能を含めることができる。データ収集モジュール１５５は、更に、データ収集活動に従ってプレーヤーによって収集されたデータを分析し、様々なプラットフォームによるアクセスのためのデータを提供することができる。
【００４７】
イベントモジュール１６０は、並行現実ゲームにおけるイベントへのプレーヤーのアクセスを管理する。「イベント」という用語は便宜上使用されているが、この用語は特定の位置又は時間における特定のイベントを指す必要はないことを理解されたい。むしろ、プレーヤーがそのコンテンツにアクセスできるかどうかを決定するために１つ以上のアクセス基準が使用される、アクセス制御されたゲームコンテンツの任意の提供を指すことができる。このようなコンテンツは、アクセス制御がほとんど又はまったくないゲームコンテンツを含む、より大きな並行現実ゲームの一部であってもよいし、スタンドアロンのアクセス制御された並行現実ゲームであってもよい。
【００４８】
深度推定トレーニングシステム１７０は、深度推定モデル、例えば、クライアントデバイス１１０に提供される深度推定モデル１３０をトレーニングする。深度推定トレーニングシステム１７０は、深度推定モデルのトレーニングに使用するための画像データを受信する。一般に、深度推定トレーニングシステム１７０は、画像データを処理し、その画像データを深度推定モデルに入力して深度予測を生成し、あるトレーニング画像を深度予測を用いて別のトレーニング画像に投影し、測光再構成誤差に基づいて損失を計算し、深度推定モデルのパラメータを繰り返し調整して、損失を最小化する。上記の一般的なプロセスは、自己教師ありトレーニングアルゴリズムを説明するものである。一般に、自己教師ありトレーニングでは、教師ありトレーニングアルゴリズムで一般的に必要とされるような、トレーニングのためのグラウンドトゥルース深度は必要としない。深度推定システム１７０は、別のモデル（例えば、既製の深度推定モデル）によって提供される深度ヒントに部分的に基づいてモデルをトレーニングする。深度推定トレーニングシステム１７０は、深度推定モデルが深度情報を推定するのに十分に正確であるかどうかを決定するために使用できる深度推定モデルの誤差閾値をさらに定義することができる。深度推定トレーニングシステム１７０によるトレーニングについては、以下でさらに説明する。
【００４９】
深度推定モデルがトレーニングされると、深度推定モデルは画像データを受信し、その画像データに基づいて環境の深度情報を出力する。深度推定トレーニングシステム１７０は、トレーニングされたモデルをクライアントデバイス１１０に提供する。クライアントデバイス１１０は、トレーニングされたモデルを使用して、（例えば、デバイス上のカメラによってキャプチャされた）画像内のピクセルの深度を推定する。深度推定には、仮想コンテンツのレンダリングを支援して現実世界の画像を拡張する、ロボットのナビゲーションを支援する、自動運転車の潜在的な危険を検出するなど、様々な用途があり得る。
【００５０】
ネットワーク１０５は、ローカルエリアネットワーク（例えば、イントラネット）、ワイドエリアネットワーク（例えば、インターネット）、又はそれらの何らかの組み合わせなどの任意のタイプの通信ネットワークであり得る。ネットワークはまた、クライアントデバイス１１０とゲームサーバ１２０との間の直接接続を含むことができる。一般に、ゲームサーバ１２０とクライアントデバイス１１０との間の通信は、様々な通信プロトコル（例えば、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＳＭＴＰ、ＦＴＰ）、エンコーディング又はフォーマット（例：ＨＴＭＬ、ＸＭＬ、ＪＳＯＮ）、及び／又は保護スキーム（例：ＶＰＮ、セキュアＨＴＴＰ、ＳＳＬ）を使用する、任意のタイプの有線及び／又は無線接続を使用して、ネットワークインターフェースを介して行うことができる。
【００５１】
本明細書で説明する技術は、サーバ、データベース、ソフトウェアアプリケーション、及びその他のコンピュータベースのシステム、並びにそのようなシステムとの間で取られるアクション及び送受信される情報に関する。当業者は、コンピュータベースのシステムに固有の柔軟性は、システムの構成要素間で、非常に様々な構成、組み合わせ、及びタスクと機能の分割を可能にすることを認識するであろう。例えば、ここで説明するサーバプロセスは、単一のサーバを使用して、又は、複数のサーバを組み合わせて使用して実装できる。データベースとアプリケーションは、単一のシステムに実装することも、複数のシステムに分散させることもできる。分散構成要素は、順次又は並列に動作し得る。
【００５２】
また、本明細書で論じられるシステム及び方法がユーザに関する個人情報にアクセスして分析する又は位置情報などの個人情報を利用する状況では、プログラム又は機能が情報を収集するかどうかを制御する機会、及び、システム又は他のアプリケーションからのコンテンツを受信するかどうか及び／又はどのように受信するかを制御する機会がユーザに提供され得る。どのような情報を収集し、かつ、どのように利用するかについてユーザに意味のある通知が提供されるまで、そのような情報やデータは収集又は使用されない。ユーザが同意しない限り、情報は収集又は使用されず、その同意は、ユーザがいつでも取り消し、又は変更することができる。したがって、ユーザは、ユーザに関する情報がどのように収集され、アプリケーション又はシステムによってどのように使用されるかを制御することができる。更に、特定の情報又はデータを保存又は使用される前に１つ以上の方法で処理し、個人を特定できる情報を削除できる。例えば、ユーザの識別情報は、そのユーザについて個人を特定できる情報を判別できないように処理することができる。
【００５３】
＜例示的なゲームインターフェース＞
図３は、プレーヤーと仮想世界２１０との間のインターフェースの一部としてクライアント１２０のディスプレイ上に提示され得るゲームインターフェース３００の一実施形態を示す。ゲームインターフェース３００は、仮想世界２１０と、例えば、当該仮想世界２１０における、プレーヤーの位置２２２、仮想要素２３０の位置、仮想アイテム２３２の位置、及び仮想エネルギー２５０の位置といった、ゲームのその他の様々な側面とを表示するために使用され得る、ディスプレイウィンドウ３１０を含む。ユーザインターフェース３００は、更に、ゲームデータ情報、ゲーム通信、プレーヤー情報、クライアント位置確認命令、及びゲームに関連付けられた他の情報といった、その他の情報を表示することができる。例えば、ユーザインターフェースは、プレーヤー名、経験レベル、及び他の情報などのプレーヤー情報３１５を表示することができる。ユーザインターフェース３００は、様々なゲーム設定及びゲームに関連付けられた他の情報にアクセスするためのメニュー３２０を含むことができる。ユーザインターフェース３００は、更に、ゲームシステムとプレーヤーとの間、及び並行現実ゲームの１人以上のプレーヤーとの間の通信を可能にする通信インターフェース３３０を含むことができる。
【００５４】
本開示の態様によれば、プレーヤーは、クライアントデバイス１２０を現実世界で持ち歩くだけで、並行現実ゲームと相互作用することができる。例えば、プレーヤーはスマートフォンで並行現実ゲームに関連付けられたアプリケーションにアクセスし、そのスマートフォンと共に現実世界を動き回るだけでゲームをプレイできる。この点で、位置ベースのゲームをプレイするために、プレーヤーが仮想世界の視覚的表現をディスプレイ画面上で継続的に見る必要はない。結果として、ユーザインターフェース３００は、ユーザがゲームと相互作用することを可能にする複数の非視覚的要素を含むことができる。例えば、ゲームインターフェースは、プレーヤーがゲーム内の仮想要素又は物体に近づいたとき、又は並行現実ゲームで重要なイベントが発生したときに、そのプレーヤーに可聴通知を提供できる。プレーヤーは、オーディオ制御３４０を用いてこれらの可聴通知を制御することができる。仮想要素又はイベントのタイプに応じて、様々なタイプの可聴通知をユーザに提供できる。可聴通知は、仮想要素又は物体へのプレーヤーの近接具合に応じて、頻度又は音量を増減できる。振動通知又は他の適切な通知や信号など、他の非視覚的通知及び信号もユーザに提供され得る。
【００５５】
本明細書で提供される開示を使用する当業者は、本開示に照らして、多数のゲームインターフェース構成及び基礎となる機能が明らかになることを理解するであろう。本開示は、特定の構成に限定されることを意図するものではない。
【００５６】
＜深度推定トレーニング＞
深度推定トレーニングシステム１７０は、クライアントデバイス１１０によって使用される深度ヒントの助けを借りて、深度推定モデル１３０をトレーニングする。次の段落では、立体画像データ、単眼ビデオデータ、深度ヒント、ポーズヒント、又はそれらのいくつかの組み合わせに依存する様々なトレーニング方法について説明する。深度ヒントは、深度推定モデル１３０とは異なるアプローチによって生成された深度マップである。そのようなアプローチの１つは、深度推定モデル１３０とは異なる方法でトレーニングされた代替深度推定モデルから深度マップを生成することである。例えば、代替深度推定モデルは、立体画像ペアを受信し、その立体画像ペアに基づいて深度マップを生成するように構成された双眼深度推定モデルとして、サードパーティのシステムによってトレーニングされ得る。別のアプローチは、デバイス（例えば、電話、自動運転車両など）において、ｓｉｍｕｌｔａｎｅｏｕｓ−ｌｏｃａｌｉｚａｔｉｏｎ−ａｎｄ−ｍａｐｐｉｎｇ（ＳＬＡＭ）モジュールを使用して深度マップを生成することである。深度ヒントがどのように生成されるかに関係なく、トレーニングフェーズでは、入力画像を受信し、その入力画像に基づいて深度マップを出力するように構成された、トレーニングされた単眼深度推定モデル１３０が生成される。
【００５７】
一般に、深度推定トレーニングシステム１７０は、画像ペアに結合されたトレーニング画像データを用いてトレーニングを行う。画像ペアは、真の立体画像ペア又は疑似立体画像ペアであり得る。一方では、真の立体画像ペアは、例えば双眼カメラシステムの２つの異なるカメラによって比較的同時にキャプチャされた２つの画像を含む。他方、疑似立体画像ペアは、例えば、単眼カメラシステムによってキャプチャされた単眼ビデオデータにおける２つの時間的に隣接するフレームなど、単一のカメラによってキャプチャされた２つの時間的に異なる（すなわち、異なるタイムスタンプでキャプチャされた）フレームを含む。真の立体画像ペアでは、画像ペア内の立体画像間のポーズが一般的に知られている。疑似立体画像ペアでは、２つのフレーム間のポーズは一般的に不明である。ポーズは通常、２つの画像間の相対的な位置を表す。数学的に言えば、ポーズは、２つの視点間の平行移動と回転の両方を説明することができる、画像の２つの視点間の変換行列によって定義される。それに対応するために、深度推定トレーニングシステム１７０は、深度推定モデルに加えて、ポーズ推定モデルもトレーニングすることができる。いくつかの実施形態では、ポーズと深度を同時に推定するための単一の深度−ポーズハイブリッドモデルを使用することができる。「深度推定システムの自己教師ありトレーニング」と題され、２０１９年１１月２１日に公開された米国特許出願公開第２０１９／０３５６９０５Ａ１号明細書は、参照により本明細書に組み込まれ、深度−ポーズハイブリッドモデルに関連付けられた実施形態をさらに説明する。
【００５８】
図１に示す実施形態では、深度推定トレーニングシステム１７０は、深度予測モジュール１７５、ヒントモジュール１８０、画像合成モジュール１８５、損失計算モジュール１９０、及びトレーニングモジュール１９５を有する。いくつかの実施形態では、深度推定トレーニングシステム１７０は、追加の動作を実行する追加のモジュールをさらに含む。他の実施形態では、深度推定トレーニングシステム１７０は、例えば、データストア、フィードバックモジュール、平滑化モジュールといった、異なる及び／又は追加の構成要素を含み得る。例えば、データストアはトレーニングデータ又はトレーニングされたパラメータを記憶できる。別の例では、平滑化モジュールは深度マップを処理できる。その一例は、深度マップの深度値を平滑化することである。
【００５９】
深度予測モジュール１７５は、トレーニング画像の深度予測を生成する。深度予測モジュール１７５は、深度推定モデル１３０への入力としてトレーニング画像を提供し、そのトレーニング画像の初期深度予測を生成する。深度予測は、トレーニング画像の各ピクセルの予測深度値を含む予測深度マップである。
【００６０】
ヒントモジュール１８０は、トレーニング画像の深度ヒントを取得する。上記のように、深度ヒントは、いくつかのアプローチから得られることができる。１つのアプローチでは、代替的にトレーニングされた深度推定モデル（例えば、比較的低い計算資源要件を有する既製の深度推定モデル）が使用される。代替的にトレーニングされたステレオ深度推定モデルを用いた実施形態では、ヒントモジュール１８０は、代替的にトレーニングされたステレオ深度推定モデルにトレーニング画像ペアを提供して、深度ヒントを生成する。別のアプローチでは、ＳＬＡＭモジュールが使用される。そのような実施形態では、ヒントモジュール１８０は、ＳＬＡＭモジュールによって生成された深度ヒントを取得する。他のアプローチでは、ヒントモジュール１８０は、深度ヒントを生成した適切なモジュール、デバイス、又はシステムから深度ヒントを取得する。１つ以上の実施形態では、ヒントモジュール１８０は、上記のアプローチのいくつかの組み合わせから複数の深度ヒントを取得することができる。いくつかの実施形態では、ヒントモジュール１８０は、疑似立体画像ペアを用いたトレーニングに使用することができるポーズヒントを取得する。ポーズヒントは、代替的にトレーニングされたポーズ推定モデル、ＳＬＡＭモジュール、又は他のローカリゼーションモジュールから取得され得る。
【００６１】
画像合成モジュール１８５は、１つのトレーニング画像を画像ペア内の別のトレーニング画像に投影することによって、１つ以上の合成フレームを生成する。画像合成モジュール１８５は、第２のトレーニング画像から画像ペアの第１のトレーニング画像への投影として合成フレームを生成するために、第２のトレーニング画像、第２のトレーニング画像の内部パラメータ、２つのトレーニング画像間の相対ポーズ、第１のトレーニング画像の深度マップ、及び第１のトレーニング画像の内部パラメータを使用する。一般に、トレーニング画像をキャプチャしたいずれかのカメラによって記録されるように、トレーニング画像の内部パラメータは既知である。画像の内部パラメータ（「内部値」とも呼ばれる）は、その画像をキャプチャするために使用されるカメラの幾何学的特性、例えば、カメラの焦点距離、カメラの主点オフセット、カメラのスキューなどを指す。場合によっては、撮影した全ての画像間でカメラごとに内部値を一定にすることも、様々な画像を撮影するときにカメラがパラメータを調整することで内部値を変更することもできる。いずれの場合も、内部値は内部行列として表すことができる。真の立体画像を投影する際に、画像合成モジュール１８５のポーズは、真の立体画像をキャプチャした２つのカメラの構成に従って知ることができる。単眼ビデオデータを投影する際に、２つの時間的に異なるフレーム間のポーズは、トレーニング画像に基づいて、例えば、ポーズ推定モデルによって推定され得る。
【００６２】
画像合成モジュール１８５は、最初に、深度推定モデル１３０によって出力された深度予測を使用して投影することによって、モデル合成フレームを生成する。明確にするために、画像合成モジュール１８５は、第１のトレーニング画像の深度推定モデル１３０によって出力された深度予測、例えば深度予測モジュール１７５によって生成された深度予測を使用して、トレーニング画像ペアの第２のトレーニング画像から第１のトレーニング画像に投影する。
【００６３】
深度ヒントを用いて画像ペアをトレーニングするために、画像合成モジュール１８５は、深度ヒントを使用してヒント付き合成フレームを生成する。明確にするために、そして上記の段落の例に続いて、画像合成モジュール１８５は、深度予測ではなくヒントモジュール１８０によって取得された深度ヒントを使用して、トレーニング画像ペアの第２のトレーニング画像から第１のトレーニング画像に再度投影する。深度ヒントを伴う既知のポーズを有する真の立体画像ペアを用いる例として、画像合成モジュール１８５は、モデル合成フレーム及びヒント付き合成フレームを生成する。同様に、ポーズヒントを有するヒント付き合成フレームを生成するために、画像合成モジュール１８５は、ポーズ推定モデルによって推定されたポーズの代わりにポーズヒントを考慮して、画像ペア内の一方のトレーニング画像から他方のトレーニング画像に投影する。自然な拡張として、深度ヒントとポーズヒントの両方を使用するために、画像合成モジュール１８５は、第１のトレーニング画像の深度ヒント及び２つのトレーニング画像間のポーズヒントを投影する。深度ヒント及び／又はポーズヒントを有する疑似立体画像ペアを用いる例では、画像合成モジュール１８５は、複数のヒント付き合成フレーム：例えば、深度ヒントによる第１のヒント付き合成フレーム、ポーズヒントによる第２のヒント付き合成フレーム、深度ヒント及びポーズのヒントによる第３のヒント付き合成フレーム、又はそれらのいくつかの組み合わせを生成することができる。１つのタイプのヒントが複数ある（例えば、複数の深度ヒントがある）実施形態では、画像合成モジュール１８５は、各深度ヒントについて１つ以上のヒント付き合成フレームを生成することができる。
【００６４】
損失計算モジュール１９０は、深度推定モデル１３０のトレーニングに使用するための全体損失を計算する。最初に、損失計算モジュール１９０は、モデル合成フレームと対応するトレーニング画像との間の測光再構成誤差を一次損失として算出する。一次損失は、そのピクセルでの深度予測に従った測光再構成の精度を表す、トレーニング画像のピクセルごとの一次損失値を有する。全体損失は、全てのピクセルにわたる損失の寄与を合計する。深度ヒントのないトレーニング画像ペアの場合、全体損失は一次損失値の合計に基づく。例えば、一次損失はピクセルごとの一次損失値を有し、全体損失に対する各ピクセルの寄与が一次損失値であり、トレーニング画像ペアの全体損失は一次損失値の合計になる。
【００６５】
深度ヒントを用いて画像ペアをトレーニングする場合、損失計算モジュール１９０は、全体損失を計算する際に、ヒント付き損失をさらに考慮する。ヒント付き損失は、ヒント付き合成フレームと対応するトレーニング画像との間の測光再構成として算出できる。ヒント付き損失は、ピクセルごとのヒント付き損失値を含む。損失計算モジュール１９０は、ピクセルごとに一次損失値とヒント付き損失値とを比較する。あるピクセルにおいて一次損失値がヒント付き損失値以下である（そのピクセルにおいてモデルの深度予測が深度ヒントよりも正確であるか同じであることを意味する）場合、損失計算モジュール１９０はそのピクセルにおいて深度ヒントを無視し、全体損失に対するそのピクセルの寄与、例えば、一次損失値は、深度予測に基づくことになる。あるピクセルにおいてヒント付き損失値が一次損失値よりも小さい（そのピクセルにおいて深度ヒントがモデルの深度予測よりも正確であることを意味する）場合、損失計算モジュール１９０は深度ヒントを考慮し、全体損失に対するそのピクセルの寄与は、深度予測と深度ヒントに基づくことになる。一実施形態では、（一次損失よりも小さいヒント付き損失を有する）ピクセルの寄与は、そのピクセルでの、一次損失値と、深度予測値と深度ヒント値との間の教師あり損失と、の合計である。
【００６６】
測光再構成誤差の様々な定義は、損失計算モジュール１９０によって実装され得る。大まかに言えば、深度の測光再構成誤差は、概して、深度に従って投影された合成フレームのピクセルと、その合成フレームに対応する画像のピクセルとの間の差である。ピクセルの深度に対して計算された測光再構成誤差の定義の例は、Ｌ１距離、Ｌ２距離、（２×２、３×３、４×４などの２つの画像間のピクセルのウィンドウを考慮する）構造的非類似度（ＤＳＳＩＭ）、それらに適用される１つ以上の演算子、又はそれらのいくつかの組み合わせである。測光再構成（ｐｒｅ）についての１つ以上の定義の方程式を以下に示す。
2021522603.tif 000003
Ｌ１距離ｐｒｅＬ１（ｄｉ）としてのピクセルｉにおける深度ｄｉに対する測光再構成誤差は、第１の画像Ｉのピクセルｉと第２の画像Ｉ（チルダ）のピクセルｉとの間の絶対差である。
2021522603.tif 000004
Ｌ２距離ｐｒｅＬ２（ｄｉ）としてのピクセルｉにおける深度ｄｉに対する測光再構成誤差は、第１の画像Ｉのピクセルｉと第２の画像Ｉ（チルダ）のピクセルｉとの間の二乗距離である。
2021522603.tif 000005
構造的非類似度ｐｒｅＤＳＳＩＭ（ｄｉ）として計算されたピクセルｉにおける深度ｄｉの測光再構成誤差は、ピクセルｉを中心とする２つの画像Ｉ及びＩ（チルダ）の対応するウィンドウ間の構造的類似度ＳＳＩＭ（Ｉｉ，Ｉ（チルダ）ｉ）の計算値を１から引いたものの半分である。ＳＳＩＭ（ｘ，ｙ）は、ともにピクセルｉを中心とする、第１の画像からのウィンドウｘと、第２の画像の対応するウィンドウｙとの構造的類似度の算出値である。μｘはウィンドウｘの平均であり、μｙはウィンドウｙの平均である。σｘはウィンドウｘの分散であり、σｙはウィンドウｙの分散である。また、σｘｙはウィンドウｘとｙの間の共分散である。ｃ１及びｃ２は、例えば、ピクセル値のダイナミックレンジに基づいて計算される、分割の平滑化係数である。
2021522603.tif 000006
測光再構成誤差のＤＳＳＩＭ＋Ｌ１定義は、上記のようにＤＳＳＩＭの測光再構成誤差とＬ１の測光再構成誤差とを合わせている。他の実施形態において、ＤＳＳＩＭとＬ１の測光再構成誤差の間で異なる割合が使用されてもよい。
【００６７】
教師あり深度損失の様々な定義は、損失計算モジュール１９０によって実装され得る。大まかに言えば、教師あり深度損失は、２つの深度予測の差である。例えば、Ｌ１距離、Ｌ２距離、２つの深度値間のＬ１距離の対数、それらに適用される１つ以上の演算子、又はそれらのいくつかの組み合わせが含まれる。
【００６８】
トレーニングモジュール１９５は、全体損失を最小化することによって深度推定モデル１３０をトレーニングする。トレーニングモジュール１９５は、深度推定モデル１３０のパラメータを調整して、各トレーニング画像ペアの全体損失を最小化することによってトレーニングする。トレーニングモジュール１９５は、深度推定モデル１３０を介してバックプロパゲーションを行い、深度推定モデル１３０のパラメータを調整して全体損失を最小化する。いくつかの実施形態におけるトレーニングモジュール１９５は、反復バッチトレーニング、例えば、トレーニング画像ペアのバッチごとの深度推定モデル１３０のトレーニングを実行することができる。トレーニングのエポックの数は、深度推定モデル１３０を介してトレーニング画像データを前方および後方に供給するインスタンスの数を決定する。トレーニングが終了すると、トレーニングモジュール１９５は、トレーニングされた深度推定モデル１３０の精度を判定するために、グラウンドトゥルース深度データを有するトレーニング画像データのホールドアウトセットを用いて深度推定モデル１３０を検証することができる。
【００６９】
深度推定トレーニングシステム１７０は、そのモデル及びモジュールをトレーニング画像を用いてトレーニングした後、カラー入力画像を受信し、かつ、深度推定トレーニングシステム１７０によってトレーニングされたパラメータに基づいて深度マップを生成するために、深度推定モデル１３０にパラメータを提供することができる。深度推定トレーニングシステム１７０は、便宜上、ゲームサーバ１２０の一部として示されているが、モデルの一部又は全ては、他のコンピューティングデバイスによってトレーニングされ、そして、オペレーティングシステムの一部に含める、ゲームアプリケーションに含める、或いは、オンデマンドでクラウドにアクセスされることを含む様々な方法でクライアントデバイス１１０に提供され得ることに留意されたい。
【００７０】
図４は、１つ以上の実施形態による、画像ペアを用いて深度推定モデルをトレーニングする一般的なプロセス４００を説明するフローチャートである。プロセス４００は、与えられた入力画像から深度マップを生成することができる、トレーニングされた深度推定モデル１３０を生成する。プロセス４００は、深度推定トレーニングシステム１７０によって遂行されるが、より一般的には、他の任意のコンピューティングデバイスによって遂行されてもよい。
【００７１】
深度推定トレーニングシステム１７０は、複数の画像ペアを含むトレーニング画像データにアクセスする（４１０）。画像ペアは、１つ以上の真の立体画像ペア、１つ以上の疑似立体画像ペア、又はそれらのいくつかの組み合わせを含み得る。一般に、各真の立体画像ペア間でポーズは既知であるのに対し、疑似立体画像ペアに対してポーズは推定される。
【００７２】
深度推定トレーニングシステム１７０は、トレーニングされた画像ペアごとに動作４２０〜４８０を実行する。
【００７３】
深度推定トレーニングシステム１７０は、深度推定モデルを用いて、画像ペアの第１の画像の深度予測を生成する（４２０）。第１の画像は、第１の画像のピクセルあたりの深度予測値を含む深度予測を抽出する深度推定モデル１３０に入力される。１つ以上の実施形態では、深度予測モジュール１７５が、深度予測を生成する。
【００７４】
深度推定トレーニングシステム１７０は、画像ペアの第１の画像の深度ヒントを取得する（４３０）。深度ヒントは、本開示全体を通して説明される様々なアプローチのいずれかから得ることができる。一実施形態では、深度ヒントは、代替的にトレーニングされたステレオ深度推定モデルに画像ペアを入力することによって得られる。他のアプローチとしては、ＳＬＡＭモジュール、ＬＩＤＡＲなどから深度ヒントを取得することが含まれる。１つ以上の実施形態では、ヒントモジュール１８０が、深度予測を生成する。
【００７５】
深度推定トレーニングシステム１７０は、深度予測に基づいて第２の画像を第１の画像に投影することによってモデル合成フレームを生成する。第２の画像から第１の画像への投影は、更に、第１の画像の内部パラメータの第１のセット、第２の画像の内部パラメータの第２のセット、及び第１の画像と第２の画像との間のポーズに基づくことができる。１つ以上の実施形態では、画像合成モジュール１８５が、投影を遂行する。
【００７６】
深度推定トレーニングシステム１７０は、深度ヒントに基づいて第２の画像を第１の画像に投影することによって、ヒント付き合成フレームを生成する（４５０）。ヒント付き合成フレームでは、投影は深度予測の代わりに深度ヒントに依存する。ポーズヒントを用いる実施形態では、ポーズヒントを使用して、追加のヒント付き合成フレームが生成される。１つ以上の実施形態では、画像合成モジュール１８５が、投影を遂行する。
【００７７】
深度推定トレーニングシステム１７０は、モデル合成フレームを用いて一次損失を計算する（４６０）。一次損失は、モデル合成フレームと第１の画像との比較に基づく測光再構成誤差である。深度予測の一次損失は、第１の画像のピクセルごとの一次損失値を含む。
【００７８】
深度推定トレーニングシステム１７０は、ヒント付き合成フレームを用いてヒント付き損失を計算する（４７０）。ヒント付き損失は、ヒント付き合成フレームと第１の画像との比較に基づく測光再構成誤差である。深度ヒントのヒント付き損失は、第１の画像のピクセルごとのヒント付き損失値を含む。追加のヒント付き損失は、追加のヒント付き合成フレームに対して計算でき、例えば、１つのヒント付き合成フレームはポーズヒントに基づき、別のヒント付き合成フレームは深度ヒントとポーズヒントに基づき、又はさらに別のヒント付き合成フレームは第１の深度ヒントとは異なる方法で取得された第２の深度ヒントに基づく。
【００７９】
深度推定トレーニングシステム１７０は、一次損失及びヒント付き損失に基づいて全体損失を計算する（４８０）。全体損失は、第１の画像の各ピクセルからの寄与を合計する。所与のピクセルの寄与は、一次損失又はヒント付き損失のどちらが小さいかに基づく。そのピクセルにおいて一次損失がヒント付き損失以下の場合、全体損失に対するそのピクセルの寄与が一次損失値になる。そのピクセルにおいてヒント付き損失が一次損失よりも小さい場合、全体損失に対するそのピクセルの寄与は、そのピクセルでの、一次損失値と、深度予測と深度ヒントとの間の教師あり深度損失との合計になる。一実施形態では、教師あり深度損失は、深度予測と深度ヒントとの間の絶対差を測定する。別の実施形態では、教師あり深度損失は、深度予測と深度ヒントとの間の絶対差の対数を測定する。１つ以上の実施形態では、損失計算モジュール１９０が、一次損失、ヒント付き損失、及び全体損失を計算する。深度ヒントのないトレーニング画像ペアの全体損失は、一次損失のみに基づいてもよい。すなわち、トレーニング画像ペアの全体損失に対する各ピクセルの寄与が一次損失値であってもよい。
【００８０】
深度推定トレーニングシステム１７０は、画像ペアの全体損失を最小化することによって、深度推定モデル１３０をトレーニングする（４９０）。損失を最小化する際に、深度推定トレーニングシステム１７０は、単色入力画像から深度を推定するために、深度推定モデル１３０のパラメータを洗練させる。
【００８１】
＜深度推定モデル＞
図５は、１つ以上の実施形態による、深度推定モデルを使用する一般的なプロセス５００を説明するフローチャートである。プロセス５００は、与えられた入力画像から深度マップをもたらす。プロセス５００は、トレーニングされた深度推定モデルを有するクライアントデバイス１１０によって遂行され得る。クライアントデバイスは、汎用コンピューティングデバイスであってもよく、また、カメラを備えていてもよい。いくつかの実施形態では、クライアントデバイスは、上記図１〜図３に記載されている並行現実ゲームにおいて導入される。以下の説明はクライアントデバイスのコンテキストの範囲内であるが、プロセス５００は他のコンピューティングデバイス上でも実行され得る。
【００８２】
クライアントデバイス１１０は、シーンの画像を受信する（５１０）。シーンの画像は、クライアントデバイス１１０の構成要素である又はクライアントデバイス１１０の外部にあるカメラによってキャプチャされ得る。並行現実ゲームのコンテキストにおいて、シーンは、仮想世界における仮想位置にマッピングされ得る現実世界の位置であり得る。シーンの画像は、その画像をキャプチャしたカメラの幾何学的特性に対応する内部値を有してもよい。画像は、カメラによってキャプチャされた単一の画像であり得る。あるいは、画像は、カメラによってキャプチャされているビデオのフレームであり得る。
【００８３】
クライアントデバイス１１０は、シーンの画像をトレーニングされた深度推定モデルに入力する（５２０）。深度推定モデルは、深度推定システム１７０によって、例えば、図４のプロセス４００、図６のプロセス６００、又はそれらのいくつかの組み合わせを介してトレーニングされ得る。深度推定モデルは、シーンの画像を受信し、いくつかの実施形態では、その画像の内部値も受信する。
【００８４】
クライアントデバイス１１０は、トレーニングされた深度推定モデルによって、シーンの画像に対応する当該シーンの深度マップを生成する（５３０）。深度マップの各ピクセルは、シーンの画像内の対応するピクセルにおける面の相対距離を表す深度値を有する。深度推定では、シーンの画像を受信し、深度推定モデルについてトレーニングされたパラメータに基づいて深度マップを出力する。
【００８５】
クライアントデバイス１１０は、生成された深度マップを用いて様々な追加の動作を実行することができる。例えば、クライアントデバイス１１０は、深度マップを用いて現実世界環境内を移動することができる自律運転車両であり得る。別の例では、クライアントデバイス１１０は、拡張現実システムの一部であり、仮想コンテンツで拡張された現実世界の画像を提示することができる。このタスクを達成するために、クライアントデバイス１１０は、生成された深度マップを利用して仮想コンテンツを生成することができる。その結果、仮想コンテンツは、現実世界の画像内の物体と正しい深度で相互作用する。拡張コンテンツを生成する工程を以下に示す。
【００８６】
追加の実施形態では、クライアントデバイス１１０は、シーンの深度マップに基づいての仮想コンテンツを生成する（５４０）。仮想コンテンツは、例えば、ゲームデータベース１１５に記憶されている、並行現実ゲームのコンテンツから得ることができる。生成される仮想コンテンツは、シーンの画像を拡張できる拡張現実コンテンツであり得る。例えば、シーンの深度を理解した上で、シーン内を移動できる仮想キャラクタが生成される。一例では、仮想キャラクタがユーザに向かって通りを歩いてくるにつれて、仮想キャラクタのサイズが大きくなり得る。別の例では、仮想キャラクタは、木の後ろに隠れることができ、そこで仮想キャラクタの一部が木によって遮られる。
【００８７】
クライアントデバイス１１０は、仮想コンテンツを用いて拡張されたシーンの画像を表示する（５５０）。クライアントデバイスは、電子ディスプレイを有する。電子ディスプレイは、拡張仮想コンテンツと共に、カメラによってキャプチャされたビデオの一定のフィードを提供できる。
【００８８】
上記の例に従うと、並行現実ゲームは、目標として仮想キャラクタとの相互作用を提供することができる。仮想キャラクタと相互作用するために、モバイルデバイスのユーザは、仮想キャラクタをカメラの視野内に維持しながら、当該ユーザのモバイルデバイスを動かさなければならない場合がある。ユーザがモバイルデバイスを動かすと、モバイルデバイスは、ユーザのモバイルデバイスの動きに応じてシーンが変化するにつれて、シーンの深度情報を反復的に生成するために使用することができるビデオ又は画像データを連続的にキャプチャすることができる。モバイルデバイスは、生成された深度情報に基づいて仮想キャラクタを更新しながら、ディスプレイ上のビデオフィードを更新することができる。その結果、ユーザは、仮想キャラクタを、シーン内で常に適切に相互作用しているものとして、例えば、物体を貫いて歩いていないもの、または、ある部分を遮る物体なしに遮られている部分を有さないものなどとして知覚するであろう。
【００８９】
＜コンピューティングシステムの例＞
図６は、一実施形態による、コンピューティングデバイスのアーキテクチャでの一例ある。図６は、本明細書に記載される１つ以上のエンティティの一部又は全部として使用されるコンピュータの物理的コンポーネントを例示する大まかなブロック図を示しているが、一実施形態によれば、コンピュータは、図６に提供されるコンポーネントの追加、削減、又は変形を含んでいてもよい。図６はコンピュータ６００を示しているが、この図は、本明細書に記載される実施形態の構造的概略図としてではなく、コンピュータシステムに存在し得る種々の特徴の機能的説明として意図されている。実際には、また、当業者によって認識されるように、別々に示されたアイテムを組み合わせることができ、いくつかのアイテムを分離することもできる。
【００９０】
図６には、チップセット６０４に接続された少なくとも１つのプロセッサ６０２が図示されている。また、チップセット６０４に接続されているのは、メモリ６０６、ストレージデバイス６０８、キーボード６１０、グラフィックアダプタ６１２、ポインティングデバイス６１４、及びネットワークアダプタ６１６である。ディスプレイ６１８は、グラフィックアダプタ６１２に結合されている。一実施形態では、チップセット６０４の機能は、メモリコントローラハブ６２０及びＩ／Ｏハブ６２２によって提供される。別の実施形態では、メモリ６０６は、チップセット６０４の代わりにプロセッサ６０２に直接結合されている。いくつかの実施形態では、コンピュータ６００は、これらの構成要素を相互接続するための１つ以上の通信バスを有する。１つ以上の通信バスは、必要に応じて、システム構成要素間の通信を相互接続及び制御する回路（チップセットと呼ばれることもある）を有していてもよい。
【００９１】
ストレージデバイス６０８は、ハードドライブ、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、ＤＶＤ、又はソリッドステートストレージデバイス、又はその他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、又はその他の磁気ストレージデバイス、磁気ディスクストレージデバイス、光ディスクストレージデバイス、フラッシュメモリデバイス、又はその他の不揮発性ソリッドステートストレージデバイスなどの任意の非一時的コンピュータ可読記憶媒体である。このようなストレージデバイス６０８は、永続メモリと呼ばれることもある。ポインティングデバイス６１４は、マウス、トラックボール、又はその他のタイプのポインティングデバイスであり、キーボード６１０と組み合わせて使用されて、コンピュータ６００にデータを入力する。グラフィックアダプタ６１２は、画像及びその他の情報をディスプレイ６１８に表示する。ネットワークアダプタ６１６は、コンピュータ６００をローカル又はワイドエリアネットワークに結合する。
【００９２】
メモリ６０６は、プロセッサ６０２によって使用される命令及びデータを保持する。メモリ６０６は、非永続メモリであり、その例としては、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなどの高速ランダムアクセスメモリが挙げられる。
【００９３】
当技術分野で知られているように、コンピュータ６００は、図１３に示されるものとは異なる及び／又は他の構成要素を有することができる。更に、コンピュータ６００は、特定の図示された構成要素を有していなくてもよい。一実施形態では、サーバとして機能するコンピュータ６００は、キーボード６１０、ポインティングデバイス６１４、グラフィックアダプタ６１２、及び／又はディスプレイ６１８を有していなくてもよい。更に、ストレージデバイス６０８は、（例えば、記憶領域ネットワーク（ＳＡＮ）内に組み込まれているものとして）コンピュータ６００からローカル及び／又は遠隔であり得る。
【００９４】
当技術分野で知られているように、コンピュータ６００は、本明細書に記載の機能を提供するためのコンピュータプログラムモジュールを実行するように適合されている。本明細書で使用される場合、「モジュール」という用語は、特定の機能を提供するために利用されるコンピュータプログラムロジックを指す。したがって、モジュールは、ハードウェア、ファームウェア、及び／又はソフトウェアで実装することができる。一実施形態では、プログラムモジュールは、ストレージデバイス６０８に記憶され、メモリ６０６にロードされ、プロセッサ６０２によって実行される。
【００９５】
＜その他の考慮事項＞
上記の説明のいくつかの部分は、アルゴリズム的プロセス又は動作の観点から実施形態を説明している。これらのアルゴリズムの説明及び表現は、データ処理技術の当業者によって一般的に使用され、彼らの作業の内容を効果的に当業者に伝える。これらの動作は、機能的、計算的、又は論理的に説明されているが、プロセッサ又は同等の電気回路、マイクロコードなどによって実行される命令を含むコンピュータプログラムによって実装されると理解される。更に、これらの機能動作の配置をモジュールと呼ぶことは、一般性を失うことなく、時として便利であることも証明されている。
【００９６】
本明細書で使用される場合、「一実施形態」又は「実施形態」への言及は、実施形態に関連して説明される特定の要素、特徴、構造、又は特性が少なくとも１つの実施形態に含まれることを意味する。本明細書の各所に記載されている「一実施形態では」という語句は、必ずしも同一の実施形態を指すとは限らない。
【００９７】
いくつかの実施形態は、それらの派生物と共に「結合された」及び「接続された」という表現を使用して説明され得る。これらの用語は、相互の同義語として意図されていないことを理解されたい。例えば、いくつかの実施形態は、２つ以上の要素が互いに直接物理的又は電気的に接触していることを示すために用語「接続された」を使用して説明され得る。別の例では、いくつかの実施形態は、２つ以上の要素が直接物理的に又は電気的に接触にあることを示すために用語「結合された」を使用して説明され得る。ただし、「結合された」という用語は、２つ以上の要素が互いに直接接触していないが、それでも互いに協力又は相互作用していることを意味する場合もある。実施形態は、この文脈に限定されない。
【００９８】
本明細書で使用される場合、「含む」、「含み」、「含んで」、「有する」、「有し」という用語、又はそれらの他の変形は、非排他的な包含を網羅することを意図している。例えば、要素のリストを含むプロセス、方法、物品、又は装置は、必ずしもそれらの要素のみに限定されるわけではなく、そのようなプロセス、方法、物品、又は装置に明示的にリストされていない、又は固有ではない他の要素を含み得る。更に、明示的に反対の記載がない限り、「又は」は包含的な「又は」を意味し、排他的な「又は」を意味するものではない。例えば、条件「Ａ又はＢ」は、Ａが真（又は存在）かつＢが偽（又は存在しない）であること、Ａが偽（又は存在しない）かつＢが真（又は存在）であること、Ａ及びＢがともに真（又は存在）であることのいずれかによって満たされる。
【００９９】
更に、「ａ」又は「ａｎ」の使用は、実施形態の要素及び構成要素を説明するために使用される。これは単に便宜のために、そして開示の一般的な意味を与えるために行われる。この説明は、１つ又は少なくとも１つを含むように読む必要があり、別の意味であることが明らかでない限り、単数形には複数形も含まれる。
【０１００】
この開示を読むと、当業者は、システムのためのさらに別の構造的及び機能的設計、並びに真正なビジネスに対応するオンラインサービスプロバイダとのアカウントを検証するためのプロセスを理解するであろう。したがって、特定の実施形態及び用途が例示及び説明されてきたが、説明された主題は、本明細書に開示された正確な構造及び構成要素に限定されず、当業者に明らかな種々の修正、変更及び変形が、開示されている方法及び装置の構成、動作及び詳細においてなされ得ることを理解されたい。保護の範囲は、以下のクレームによってのみ制限されるべきである。
【図１】
2021522603.tif 000007
【図２】
2021522603.tif 000008
【図３】
2021522603.tif 000009
【図４】
2021522603.tif 000010
【図５】
2021522603.tif 000011
【図６】
2021522603.tif 000012
【国際調査報告】
2021522603.tif 000013
2021522603.tif 000014