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