IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ナイアンティック, インコーポレイテッドの特許一覧

特許7241775深度推定システムの自己教師ありトレーニング
<>
  • 特許-深度推定システムの自己教師ありトレーニング 図1
  • 特許-深度推定システムの自己教師ありトレーニング 図2
  • 特許-深度推定システムの自己教師ありトレーニング 図3
  • 特許-深度推定システムの自己教師ありトレーニング 図4
  • 特許-深度推定システムの自己教師ありトレーニング 図5
  • 特許-深度推定システムの自己教師ありトレーニング 図6
  • 特許-深度推定システムの自己教師ありトレーニング 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-09
(45)【発行日】2023-03-17
(54)【発明の名称】深度推定システムの自己教師ありトレーニング
(51)【国際特許分類】
   G06T 7/50 20170101AFI20230310BHJP
   G06T 7/00 20170101ALI20230310BHJP
   A63F 13/52 20140101ALI20230310BHJP
【FI】
G06T7/50
G06T7/00 350B
A63F13/52
【請求項の数】 20
(21)【出願番号】P 2020564565
(86)(22)【出願日】2019-05-16
(65)【公表番号】
(43)【公表日】2021-10-07
(86)【国際出願番号】 US2019032616
(87)【国際公開番号】W WO2019222467
(87)【国際公開日】2019-11-21
【審査請求日】2022-04-14
(31)【優先権主張番号】62/673,045
(32)【優先日】2018-05-17
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】519087723
【氏名又は名称】ナイアンティック, インコーポレイテッド
【氏名又は名称原語表記】NIANTIC,INC.
【住所又は居所原語表記】One Ferry Building,Suite 200 San Francisco,CA 94111 United States of America
(74)【代理人】
【識別番号】100110928
【弁理士】
【氏名又は名称】速水 進治
(74)【代理人】
【識別番号】100127236
【弁理士】
【氏名又は名称】天城 聡
(72)【発明者】
【氏名】ゴダール クレマン
(72)【発明者】
【氏名】マック アオダ オイシン
(72)【発明者】
【氏名】ブロストウ ガブリエル ジェイ
(72)【発明者】
【氏名】ファーマン マイケル
【審査官】▲広▼島 明芳
(56)【参考文献】
【文献】特開2017-129904(JP,A)
【文献】Tinghui Zhou, et al.,Unsupervised Learning of Depth and Ego-Motion from Video,2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR),米国,2017年,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8100183
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00 - 7/90
A63F 13/52
(57)【特許請求の範囲】
【請求項1】
第1のタイムスタンプでの第1の画像、第2のタイムスタンプでの第2の画像、及び第3のタイムスタンプでの第3の画像を含む画像のセットを取得するステップと、
深度モデルを適用し、前記深度モデルのパラメータに基づいて前記第1の画像および前記第3の画像について深度マップを生成するステップと、
前記第1の画像および前記第3の画像をポーズデコーダに適用し、前記第1の画像および前記第3の画像のポーズを生成するステップと、
前記第1の画像および前記第3の画像の前記深度マップ及び前記ポーズに基づいて、合成フレームを生成するステップであって、前記第1の画像の前記深度マップと前記ポーズとに基づいて前記第2のタイムスタンプの第1の合成フレームが生成され、前記第3の画像の前記深度マップと前記ポーズとに基づいて前記第2のタイムスタンプの第2の合成フレームが生成されるステップと、
前記合成フレームと前記第2の画像との比較に基づいて、入力スケールオクルージョン認識及びモーション認識損失関数を用いて損失値を計算するステップであって、前記損失値の計算は、前記第1の合成フレームと前記第2の画像との間の第1の差分と、前記第2の合成フレームと前記第2の画像との間の第2の差分とを計算することと、前記第1の差分と前記第2の差分との間の最小差分を識別することと、を含み、前記損失値は前記最小差分に基づくステップと、
前記損失値に基づいて、前記深度モデルの前記パラメータを調整するステップと、
を含むプロセスによって製造される学習済み深度モデルと、
コンピューティングデバイスによって実行されると、前記学習済み深度モデルをシーンの画像に適用して前記シーンの深度マップを生成することを前記コンピューティングデバイスに行わせる命令群と、
を記憶する非一時的なコンピュータ可読記憶媒体。
【請求項2】
前記画像のセットは単眼ビデオを含み、前記単眼ビデオの各画像は対応するタイムスタンプでキャプチャされており、
前記合成フレームを生成するステップは、
前記単眼ビデオの画像について、隣接するタイムスタンプで前記合成フレームを生成するステップを含む、
請求項1に記載の非一時的なコンピュータ可読記憶媒体。
【請求項3】
前記第1の差分と前記第2の差分とを計算することは、
前記単眼ビデオの画像について、生成された合成フレームと、タイムスタンプが一致する画像との間の差分を計算するステップを含む処理の一部である
請求項2に記載の非一時的なコンピュータ可読記憶媒体。
【請求項4】
前記第1の差分と前記第2の差分とを計算することは、
前記第1の合成フレームと前記第2の画像との間の差分の第1セットを計算することを含み前記第2の差分は前記第2の合成フレームと前記第2の画像との間の差分の第2セットの一部であることを含む処理の一部であり、
前記最小差分を識別することは、
前記第2の画像の各ピクセルについて、前記第1セットの差分と前記第2セットの差分との間の最小差分を識別するステップを含む処理の一部であり
前記損失値は、前記最小差分に基づく、
請求項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項5】
前記入力スケールオクルージョン認識及びモーション認識損失関数を用いて前記損失値を計算するステップは、
前記単眼ビデオにおける1つ以上の静的特徴を識別するステップを更に含み、
前記損失値は、前記1つ以上の静的特徴の差分をフィルタリングすることに基づく、
請求項3に記載の非一時的なコンピュータ可読記憶媒体。
【請求項6】
前記単眼ビデオにおける1つ以上の静的特徴を識別するステップは、
前記単眼ビデオの第1のタイムスタンプでの第1の画像及び前記単眼ビデオの第2のタイムスタンプでの第2の画像の領域を識別するステップと、
前記第1の画像および前記第2の画像における物体が前記第1の画像と前記第2の画像との間で同様の位置にあるかどうかを判定するステップと、
前記物体が前記第1の画像と前記第2の画像との間で同様の位置にあるとの判定に応じて、前記領域を静的特徴として定義するステップと、を含む、
請求項5に記載の非一時的なコンピュータ可読記憶媒体。
【請求項7】
前記画像のセットが第1の解像度であり、前記第1の画像および前記第3の画像について生成された前記深度マップが前記第1の解像度よりも低い第2の解像度であり、
前記深度モデルを製造する前記プロセスは、
前記第1の画像および前記第3の画像について生成された前記深度マップを前記第2の解像度から前記第1の解像度にアップサンプリングするステップを、更に含む、
請求項1に記載の非一時的なコンピュータ可読記憶媒体。
【請求項8】
前記画像のセットは、各々がカメラの立体ペアによってキャプチャされた複数の立体画像ペアを含み、
前記合成フレームを生成するステップは、
各立体画像ペアについて、前記立体画像ペアの第の画像に基づいて合成フレームを生成するステップを含む、
請求項1に記載の非一時的なコンピュータ可読記憶媒体。
【請求項9】
前記損失値に基づいて前記深度モデルの前記パラメータを調整するステップは、
各立体画像ペアについて、生成された前記合成フレームと、前記立体画像ペアの第の画像との間の差分を計算するステップと、
前記差分を最小化するように前記パラメータを調整するステップと、を含む、
請求項8に記載の非一時的なコンピュータ可読記憶媒体。
【請求項10】
コンピュータによって実行される方法であって、
シーンの画像を受信するステップと、
トレーニングされた深度モデルに画像を入力するステップであって、前記深度モデルは、
第1のタイムスタンプでの第1の画像、第2のタイムスタンプでの第2の画像、及び第3のタイムスタンプでの第3の画像を含む画像のセットを取得するステップと、
前記第1の画像および前記第3の画像を前記深度モデルに入力し、前記深度モデルのパラメータに基づいて前記第1の画像および前記第3の画像について深度マップを抽出するステップと、
前記第1の画像および前記第3の画像をポーズデコーダに入力し、前記第1の画像および前記第3の画像のポーズを抽出するステップと、
前記第1の画像および前記第3の画像の前記深度マップ及び前記ポーズに基づいて、合成フレームを生成するステップであって、前記第1の画像の前記深度マップと前記ポーズとに基づいて前記第2のタイムスタンプの第1の合成フレームが生成され、前記第3の画像の前記深度マップと前記ポーズとに基づいて前記第2のタイムスタンプの第2の合成フレームが生成されるステップと、
前記合成フレームと前記第2の画像との比較に基づいて、入力スケールオクルージョン認識及びモーション認識損失関数を用いて損失値を計算するステップであって、前記損失値の計算は、前記第1の合成フレームと前記第2の画像との間の第1の差分と、前記第2の合成フレームと前記第2の画像との間の第2の差分とを計算することと、前記第1の差分と前記第2の差分との間の最小差分を識別することと、を含み、前記損失値は前記最小差分に基づくステップと、
前記合成フレームと前記第2の画像との前記比較に基づいて前記深度モデルの前記パラメータを調整するステップと、を含むプロセスを用いてトレーニングされた深度モデルであるステップと、
トレーニングされた前記深度モデルにより、前記シーンの前記画像に対応する前記シーンの深度マップを生成するステップと、
を含む方法。
【請求項11】
前記画像のセットは単眼ビデオを含み、前記単眼ビデオの各画像は対応するタイムスタンプでキャプチャされており、
前記合成フレームを生成するステップは、
前記単眼ビデオの画像について、隣接するタイムスタンプで前記合成フレームを生成するステップを含む、
請求項10に記載の方法。
【請求項12】
前記第1の差分と前記第2の差分とを計算することは、
前記単眼ビデオの画像について、生成された合成フレームと、タイムスタンプが一致する画像との差を計算するステップを含む処理の一部である
請求項11に記載の方法。
【請求項13】
前記第1の差分と前記第2の差分とを計算することは、
前記第1の合成フレームと前記第2の画像との間の差分の第1セットを計算することを含み前記第2の差分は前記第2の合成フレームと前記第2の画像との間の差分の第2セットの一部であることを含む処理の一部であり
前記最小差分を識別することは、
前記第2の画像の各ピクセルについて、前記第1セットの差分と前記第2セットの差分との間の最小差分を識別するステップを含む処理の一部であり
前記損失値は、前記最小差分に基づく、
請求項10に記載の方法。
【請求項14】
前記入力スケールオクルージョン認識及びモーション認識損失関数を用いて前記損失値を計算するステップは、
単眼ビデオにおける1つ以上の静的特徴を識別するステップを更に含み、
前記損失値は、前記1つ以上の静的特徴の差分をフィルタリングすることに基づいている、
請求項12に記載の方法。
【請求項15】
前記単眼ビデオにおける1つ以上の静的特徴を識別するステップは、
前記単眼ビデオの第1のタイムスタンプでの第1の画像及び前記単眼ビデオの第2のタイムスタンプでの第2の画像の領域を識別するステップと、
前記第1の画像および前記第2の画像における物体が前記第1の画像と前記第2の画像との間で同様の位置にあるかどうかを判定するステップと、
前記物体が前記第1の画像と前記第2の画像との間で同様の位置にあるとの判定に応じて、前記領域を静的特徴として定義するステップと、を含む、
請求項14に記載の方法。
【請求項16】
前記画像のセットが第1の解像度であり、前記第1の画像および前記第3の画像について抽出された前記深度マップが前記第1の解像度よりも低い第2の解像度であり、
前記深度モデルをトレーニングする前記プロセスは、
前記第1の画像および前記第3の画像について抽出された前記深度マップを前記第2の解像度から前記第1の解像度にアップサンプリングするステップを、更に含む、
請求項10に記載の方法。
【請求項17】
前記画像のセットは、各々がカメラの立体ペアによってキャプチャされた複数の立体画像ペアを含み、
前記合成フレームを生成するステップは、
各立体画像ペアについて、前記立体画像ペアの第の画像に基づいて合成フレームを生成するステップを含む、
請求項10に記載の方法。
【請求項18】
前記損失値に基づいて前記深度モデルの前記パラメータを調整するステップは、
各立体画像ペアについて、生成された前記合成フレームと、前記立体画像ペアの第の画像との間の差分を計算するステップと、
前記差分を最小化するように前記パラメータを調整するステップと、を含む、
請求項17に記載の方法。
【請求項19】
前記シーンの前記深度マップに基づいて、仮想コンテンツで拡張された前記シーンの前記画像を表示するステップを更に含む、
請求項10に記載の方法。
【請求項20】
非一時的コンピュータ可読記憶媒体であって、コンピューティングデバイスによって実行されると、
シーンの画像を受信するステップと、
トレーニングされた深度モデルに画像を入力するステップであって、前記深度モデルは、
第1のタイムスタンプでの第1の画像、第2のタイムスタンプでの第2の画像、及び第3のタイムスタンプでの第3の画像を含む画像のセットを取得し、
前記第1の画像および前記第3の画像を深度エンコーダに入力し、前記深度エンコーダのパラメータに基づいて前記第1の画像および前記第3の画像について抽象深度特徴を抽出し、
前記第1の画像および前記第3の画像の前記抽象深度特徴を連結し、
連結された前記抽象深度特徴をポーズデコーダに入力し、前記第1の画像および前記第3の画像のポーズを抽出し、
前記深度モデルのパラメータ及び前記第1の画像および前記第3の画像のポーズに基づいて、合成フレームを生成することであって、前記深度モデルのパラメータと前記第1の画像のポーズとに基づいて前記第2のタイムスタンプの第1の合成フレームを生成し、前記深度モデルのパラメータと前記第3の画像のポーズとに基づいて前記第2のタイムスタンプの第2の合成フレームを生成し、
前記合成フレームと前記第2の画像との比較に基づいて、入力スケールオクルージョン認識及びモーション認識損失関数を用いて損失値を計算することであって、前記損失値の計算は、前記第1の合成フレームと前記第2の画像との間の第1の差分と、前記第2の合成フレームと前記第2の画像との間の第2の差分とを計算することと、前記第1の差分と前記第2の差分との間の最小差分を識別することと、を含み、前記損失値は前記最小差分に基づいており、
前記合成フレームと前記第2の画像との比較に基づいて前記深度モデルの前記パラメータを調整すること、
を含むプロセスによってトレーニングされているステップと、
トレーニングされた前記深度モデルにより、前記シーンの前記画像に対応する前記シーンの深度マップを生成するステップと、
を含む動作を前記コンピューティングデバイスに実行させる命令を格納する、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
説明される主題は、単色入力画像から深度マップを推定することに関し、特に、ビデオデータ及び/又は立体画像データを使用してトレーニングされた深度マップを推定するための機械学習モデルに関する。
【背景技術】
【0002】
深度検知は、ナビゲーションとシーン理解の両方において応用される。多くの方法は、トレーニングされたモデル又はネットワークを使用して、単色入力画像から深度マップを決定する。深度推定システムをトレーニングするために異なる種類のトレーニングデータを使用するいくつかの方法がある。深度推定システムは、カメラによって撮影された同じシーンの画像と対にされた環境内の物体についてのグラウンドトゥルース深度を確立するために検出及び測距システム(つまり、無線検出及び測距(RADAR:radio detecting and ranging)、光検出及び測距(LIDAR:light detection and ranging)など)を使用してトレーニングされ得る。検出及び測距システムは、物体の深度のグラウンドトゥルースを提供することができるが、多くの異なる環境の深度を検知するために検出及び測距システムを絶えず利用することは、時間及びリソースにおいてコストがかかる可能性がある。更に、検出及び測距システムは、当該検出及び測距システムによる検出を不可能にする物質特性を有し得るいくつかの物体(例えば、反射物体)の深度を決定することができない。
【0003】
深度推定システムをトレーニングする別の方法は、同じシーンの立体画像ペアを利用する。単一の時間インスタンスにおいて立体画像ペアをキャプチャすることは、同じシーンに焦点を合わせているが、ある程度離れて位置する2つのカメラを使用する必要がある。深度推定システムは、立体画像ペアの一方の立体画像から他方の立体画像に投影することによって動作する。一方から他方に投影するために、深度推定システムは、視差(スケーリングされた深度の逆数)と、立体画像ペアを撮影するために使用される2つのカメラの物理的な位置間の相対変換とに加えて、現在の立体画像を考慮する。キャプチャされた立体画像と比較して、投影の測光再構成誤差を最小化することで、深度推定システムはシーンの深度を決定できる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
いくつかのより新しい方法は、刻々と変化するシーンの単眼ビデオデータを利用して深度推定システムをトレーニングする。深度推定システムは、単眼ビデオデータにおける1つの時間画像から次の時間画像へと、測光再構成誤差を最小化しながら投影することによってトレーニングを行う。しかしながら、そのようなシステムは、深度マップ及び深度マップの境界の周りにアーティファクトをもたらす、ある時間画像から別の時間画像に出入りする物体を不正確に考慮し得る。更に、従来のシステムは、現在、深度マップをアップサンプリングする前に深度マップを決定するために低解像度画像を入力するが、これは深度アップサンプリングアーティファクトを生じやすい。
【課題を解決するための手段】
【0005】
本開示は、深度推定モデルのトレーニング方法及び使用方法を説明する。モデルをトレーニングするために、システムは画像を取得する。システムは、画像を深度モデルに入力し、深度モデルのパラメータに基づいて各画像について深度マップを抽出する。システムは、画像をポーズデコーダに入力して、各画像のポーズを抽出する。システムは、各画像の深度マップとポーズとに基づいて合成フレームを生成する。システムは、合成フレームと画像との比較に基づいて、入力スケールオクルージョン及びモーション認識損失関数を用いて損失値を計算する。入力スケールオクルージョン及びモーション認識損失関数は、深度モデルのパラメータを調整するために使用する損失値を計算する。損失関数は、合成フレームと入力画像との間のピクセル当たりの測光再構成誤差の計算を含む。損失関数はまた、別の画像に時間的に隣接する単眼ビデオからの時間画像から投影された2つの合成フレーム間の最小測光再構成誤差を考慮し得る。アップサンプリングされた深度特徴はまた、外観マッチング損失の計算に影響を及ぼす合成フレームの生成中に使用され得る。損失関数はまた、損失値を計算するときに画像の静的特徴を割り引くように生成されたマスクを実装してもよい。システムは、損失値に基づいて深度モデルのパラメータを調整する。トレーニングされたモデルを使用すると、デバイスはシーンの画像を受信し、その画像に従ってシーンの深度マップを生成できる。
【0006】
いくつかの実施形態では、深度推定モデルは、単眼ビデオを含む画像データでトレーニングを行う。単眼ビデオの各画像は異なる時間にキャプチャされ、対応するタイムスタンプに関連付けられる。第1のタイムスタンプを有する第1の画像及び第2のタイムスタンプを有する第2の画像を使用する例示的な議論において、モデルは、単眼ビデオからの第1のタイムスタンプを有する第1の画像を使用して、第2のタイムスタンプで合成フレームを生成する。モデルは、合成フレームと第2のタイムスタンプを有する第2の画像との間の測光再構成誤差を計算する。モデルは、隣接するタイムスタンプを有する単眼ビデオからの他の画像ペアを用いて、上記の手順に従う。モデルは、誤差を最小化するようにパラメータを調整する。他の実施形態では、モデルは、立体画像ペアを含む画像データでトレーニングを行い、各立体画像ペアは、一対の立体視カメラによってキャプチャされる。合成フレームを生成する場合、モデルは、立体画像ペアから一方の画像(例えば、左の画像)を使って、他方の画像(例えば、右の画像)で合成フレームを生成する。モデルは、合成フレームと他方の画像との間の測光再構成誤差を計算する。モデルは、誤差を最小化するようにパラメータを調整する。更に他の実施形態では、モデルは、単眼ビデオと立体画像ペアの両方を含む画像データでトレーニングを行う。
【図面の簡単な説明】
【0007】
図1図1は、1つ以上の実施形態による、ネットワーク化されたコンピューティング環境を例示している。
【0008】
図2図2は、1つ以上の実施形態による、現実世界に並行な地理を有する仮想世界の表現を示す。
【0009】
図3図3は、1つ以上の実施形態による、並行現実ゲームの例示的なゲームインターフェースを示す。
【0010】
図4図4は、1つ以上の実施形態による、別個のポーズ推定モデルを使用することと深度ポーズハイブリッドモデルを使用することの概念的な比較を例示している。
【0011】
図5図5は、1つ以上の実施形態による、深度推定モデルをトレーニングする一般的なプロセスを説明するフローチャートである。
【0012】
図6図6は、1つ以上の実施形態による、深度推定モデルを使用する一般的なプロセスを説明するフローチャートである。
【0013】
図7図7は、1つ以上の実施形態による、コンピューティングデバイスの例示的なアーキテクチャである。
【0014】
図及び以下の説明は、例示のみを目的として特定の実施形態を説明している。当業者は、以下の説明から、記載された原理から逸脱することなく、構造及び方法の代替の実施形態を使用できることを容易に認識するであろう。ここで、いくつかの実施形態を参照し、その例を添付の図に示す。
【発明を実施するための形態】
【0015】
<例示的な位置ベースの並行現実ゲームシステム>
並行現実ゲームは、現実世界におけるプレーヤーの動き及び行動が仮想世界における行動に影響を及ぼし、逆もまた同様であるように、現実世界の地理の少なくとも一部分に平行する仮想世界の地理を有する位置ベースのゲームである。本明細書で提供される開示を使用する当業者は、記載された主題が、画像データから深度情報を決定することが望ましい他の状況に適用可能であることを理解するであろう。更に、コンピュータベースのシステムに固有の柔軟性は、システムの構成要素間で、非常に様々な構成、組み合わせ、及びタスクと機能の分割を可能にする。例えば、本開示の態様によるシステム及び方法は、単一のコンピューティングデバイスを使用して、又は複数のコンピューティングデバイスにわたって(例えば、コンピュータネットワークに接続されて)実装することができる。
【0016】
図1は、1つ以上の実施形態による、ネットワーク化されたコンピューティング環境100を例示している。ネットワーク化されたコンピューティング環境100は、現実世界に平行な地理を有する仮想世界におけるプレーヤーの相互作用を提供する。特に、現実世界の地理的領域は、仮想世界の対応する領域に直接リンク又はマッピングされ得る。プレーヤーは、現実世界の様々な地理的位置に移動することにより、仮想世界を動き回ることができる。例えば、現実世界におけるプレーヤーの位置を追跡して、仮想世界におけるプレーヤーの位置を更新するために使用することができる。典型的には、現実世界におけるプレーヤーの位置は、プレーヤーが仮想世界と相互作用しているクライアントデバイス110の位置を見つけ、プレーヤーが同じ(又はほぼ同じ)位置にいると仮定することによって決定される。例えば、様々な実施形態において、現実世界におけるプレーヤーの位置が、仮想世界における仮想要素の仮想位置に対応する現実世界位置の閾値距離(例えば、10メートル、20メートルなど)内にある場合、プレーヤーは、仮想要素と相互作用することができる。便宜上、様々な実施形態が「プレーヤーの位置」を参照して説明されているが、当業者は、このような参照がプレーヤーのクライアントデバイス110の位置を参照し得ることを理解するであろう。
【0017】
次に、図2を参照すると、一実施形態による、並行現実ゲームのプレーヤーのためのゲームボードとして機能することができる現実世界200に平行する仮想世界210の概念図が示されている。図示のように、仮想世界210は、現実世界200の地理と平行する地理を含むことができる。特に、現実世界200における地理的領域又は空間を定義する座標の範囲は、仮想世界210における仮想空間を定義する座標の対応する範囲にマッピングされる。現実世界200における座標の範囲は、町、地域、都市、キャンパス、場所、国、大陸、地球全体、又は他の地理的領域に関連付けることができる。地理的座標の範囲内の各地理的座標は、仮想世界における仮想空間内の対応する座標にマッピングされる。
【0018】
仮想世界210におけるプレーヤーの位置は、現実世界200におけるプレーヤーの位置に対応する。例えば、現実世界200における位置212に位置するプレーヤーAは、仮想世界210における対応する位置222を有する。同様に、現実世界における位置214に位置するプレーヤーBは、仮想世界における対応する位置224を有する。プレーヤーが現実世界の地理的座標の範囲内を動き回るとき、プレーヤーはまた、仮想世界210における仮想空間を定義する座標の範囲内を動き回る。特に、プレーヤーが携帯するモバイルコンピューティングデバイスに関連付けられた測位システム(例えば、GPSシステム)を使用して、プレーヤーが現実世界の地理的座標の範囲を進むときのプレーヤーの位置を追跡することができる。現実世界200におけるプレーヤーの位置に関連付けられたデータは、仮想世界210における仮想空間を定義する座標の対応する範囲におけるプレーヤーの位置を更新するために使用される。このようにして、プレーヤーは、現実世界200における特定の個別の位置で位置情報をチェックインしたり定期的に更新したりすることなく、現実世界200における地理的座標の対応する範囲間を移動するだけで、仮想世界210における仮想空間を定義する座標の範囲内で連続的な追跡を行いつつ進むことができる。
【0019】
位置ベースのゲームは、プレーヤーが仮想世界の様々な仮想位置に散在する様々な仮想要素及び/又は仮想物体に移動及び/又は相互作用することを要求する複数のゲーム目標を含むことができる。プレーヤーは、現実世界において仮想要素又は物体の対応する位置に移動することで、これらの仮想位置に移動できる。例えば、プレーヤーが現実世界を継続的に進むとき、プレーヤーが並列仮想世界も連続的に進むように、測位システムは、プレーヤーの位置を連続的に追跡することができる。そして、プレーヤーは、特定の位置にある様々な仮想要素及び/又は物体と相互作用して、1つ以上のゲーム目標を達成又は実行できる。
【0020】
例えば、ゲーム目標は、仮想世界210内の様々な仮想位置に位置する仮想要素230と相互作用するプレーヤーを有する。これらの仮想要素230は、現実世界200内のランドマーク、地理的位置、又は物体240にリンクされ得る。現実世界のランドマーク又は物体240は、美術品、記念碑、建物、商業施設、図書館、美術館、又は他の適切な現実世界のランドマーク又は物体であり得る。相互作用には、キャプチャ、所有権の主張、仮想アイテムの使用、仮想通貨の使用などが含まれる。これらの仮想要素230をキャプチャするために、プレーヤーは、現実世界において仮想要素230にリンクされたランドマーク又は地理的位置240に移動し、仮想世界210における仮想要素230との必要な相互作用を実行しなければならない。例えば、図2のプレーヤーAは、その特定のランドマーク240にリンクされた仮想要素230と相互作用、又は、それをキャプチャするために、現実世界200内のランドマーク240に移動しなければならない場合がある。仮想要素230との相互作用は、写真を撮る、及び/又は仮想要素230に関連付けられたランドマーク又は物体240に関する他の情報を検証、取得、又はキャプチャするなど、現実世界での行動を必要とし得る。
【0021】
ゲーム目標は、位置ベースゲームでプレーヤーによって収集された1つ以上の仮想アイテムをプレーヤーが使用することを必要とし得る。例えば、プレーヤーは、ゲーム目標を完了するために役立ち得る仮想アイテム(例えば、武器、クリーチャ、パワーアップ、又は他のアイテム)を求めて仮想世界210を移動することができる。これらの仮想アイテムは、現実世界200内の異なる位置に移動することによって、又は仮想世界210若しくは現実世界200のいずれかで様々な行動を完了することによって、発見又は収集することができる。図2に示す例では、プレーヤーは、仮想アイテム232を使用して、1つ以上の仮想要素230をキャプチャする。特に、プレーヤーは、仮想アイテム232を、仮想世界210における仮想要素230に近接する位置又は仮想要素230内の位置に展開することができる。このようにして1つ以上の仮想アイテム232を展開することにより、特定のプレーヤー又は特定のプレーヤーのチーム/ファクションのための仮想要素230をキャプチャすることができる。
【0022】
1つの特定の実装形態では、プレーヤーは、並行現実ゲームの一部として仮想エネルギーを集めなければならない場合がある。図2に示されるように、仮想エネルギー250は、仮想世界210内の異なる位置にばらまかれ得る。プレーヤーは、実世界200において仮想エネルギー250の対応する位置に移動することによって、仮想エネルギー250を収集することができる。仮想エネルギー250は、仮想アイテムを強化するため、及び/又はゲームでの様々なゲーム目標を実行するために使用することができる。全ての仮想エネルギー250を失ったプレーヤーは、ゲームから切断され得る。
【0023】
本開示の態様によれば、並行現実ゲームは、ゲームの全ての参加者が同じ仮想世界を共有する大規模なマルチプレーヤー位置ベースのゲームであり得る。プレーヤーは、別々のチーム又はファクションに分けることができ、仮想要素をキャプチャ又はその所有権を主張するなど、1つ以上のゲーム目標を達成するために協力することができる。このようにして、並行現実ゲームは、本質的に、ゲーム内のプレーヤー間の協力を奨励するソーシャルゲームであり得る。並行現実ゲームでは、敵対するチームのプレーヤーが互いに対戦する(又は協力して相互の目標を達成する)ことができる。プレーヤーは、仮想アイテムを使用して、敵対するチームのプレーヤーの進行を攻撃又は妨害することができる。場合によっては、プレーヤーは、並行現実ゲームの協力的又は相互作用的なイベントのために、現実世界の位置に集まることが奨励される。このような場合、ゲームサーバは、プレーヤーが実際に物理的に存在し、スプーフィングしていないことを確認しようとする。
【0024】
並行現実ゲームは、並行現実ゲーム内のゲームプレイを強化及び奨励するための様々な機能を備えている。例えば、プレーヤーは、ゲーム中に使用できる仮想通貨又は別の仮想報酬(例えば、仮想トークン、仮想ポイント、仮想マテリアルリソースなど)を蓄積することができる(例えば、ゲーム内アイテムの購入、他のアイテムの引換、アイテムの作成など)。プレーヤーは、1つ以上のゲーム目標を完了し、ゲーム内で経験を積むにつれて、レベルを上げることができる。いくつかの実施形態では、プレーヤーは、ゲームで提供される1つ以上の通信インターフェースを介して互いに通信することができる。プレーヤーは、ゲーム内のゲーム目標を完了するために使用できる強化された「パワー」又は仮想アイテムを取得することもできる。本明細書で提供される開示を使用する当業者は、本開示の範囲から逸脱することなく、他の様々なゲーム機能を並行現実ゲームに含めることができることを理解すべきである。
【0025】
図1に戻り、ネットワーク化されたコンピューティング環境100は、クライアント・サーバアーキテクチャを使用し、ここで、ゲームサーバ120は、クライアントデバイス110とネットワーク105を介して通信して、クライアントデバイス110のプレーヤーに並行現実ゲームを提供する。ネットワーク化されたコンピューティング環境100は、更に、スポンサー/広告主システム又はビジネスシステムなどの他の外部システムを含んでいてもよい。図1には、1つのクライアントデバイス110のみが示されているが、任意の数のクライアント110又は他の外部システムが、ネットワーク105を介してゲームサーバ120に接続され得る。更には、ネットワーク化されたコンピューティング環境100は、異なる又は追加の要素を含んでもよく、以下に記載されるものとは異なる方法で、クライアントデバイス110とサーバ120との間で、機能が分散されてもよい。
【0026】
クライアントデバイス110は、ゲームサーバ120とインターフェース接続するためにプレーヤーによって使用され得る任意の携帯型コンピューティングデバイスであり得る。例えば、クライアントデバイス110は、ワイヤレスデバイス、携帯情報端末(PDA)、携帯型ゲームデバイス、携帯電話、スマートフォン、タブレット、ナビゲーションシステム、ハンドヘルドGPSシステム、ウェアラブルコンピューティングデバイス、1つ以上のプロセッサを有するディスプレイ又は他のそのようなデバイスであり得る。別の例では、クライアントデバイス110は、デスクトップ又はラップトップコンピュータなどの従来のコンピュータシステムを含む。なお、クライアントデバイス110は、コンピューティングデバイスを備えた車両であり得る。要するに、クライアントデバイス110は、プレーヤーがゲームサーバ120と相互作用することを可能にすることができる任意のコンピュータデバイス又はシステムであり得る。コンピューティングデバイスとして、クライアントデバイス110は、1つ以上のプロセッサ及び1つ以上のコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を記憶することができる。クライアントデバイス110は、好ましくは、スマートフォン又はタブレットなどのプレーヤーと共に容易に携帯又は他の方法で運ぶことができる携帯型コンピューティングデバイスである。
【0027】
クライアントデバイス110は、ゲームサーバ120と通信して、ゲームサーバ120に物理的環境のセンシングデータを提供する。クライアントデバイス110は、クライアントデバイス110が存在する物理的環境におけるシーンの2次元画像データをキャプチャするカメラアセンブリ125を含む。クライアントデバイス110は、更に、例えば、ゲームサーバ120によってトレーニングされた機械学習モデルである深度推定モデル130を有する。図1に示す実施形態では、各クライアントデバイス110は、ゲームモジュール135及び測位モジュール140などのソフトウェア構成要素を有する。クライアントデバイス110は、プレーヤーから情報を受信する、及び/又はプレーヤーに情報を提供するための様々な他の入力/出力デバイスを有していてもよい。入力/出力デバイスの例としては、ディスプレイ画面、タッチスクリーン、タッチパッド、データ入力キー、スピーカ、及び音声認識に適したマイクロフォン等が挙げられる。クライアントデバイス110は、特に限定されないが、動きセンサ、加速度センサ、ジャイロスコープ、他の慣性測定ユニット(IMU)、気圧計、測位システム、温度計、光センサなどの、クライアントデバイス110からのデータを記録するための他の様々なセンサを更に含んでいてもよい。クライアントデバイス110は、ネットワーク105を介して通信を提供するためのネットワークインターフェースを更に含むことができる。ネットワークインターフェースは、例えば、送信機、受信機、ポート、コントローラ、アンテナ、又は他の適切な構成要素を含む、1つ以上のネットワークとインターフェース接続するための任意の適切な構成要素を含むことができる。
【0028】
カメラアセンブリ125は、クライアントデバイス110が存在する環境のシーンの画像データをキャプチャする。カメラアセンブリ125は、様々なキャプチャーレートで様々な色捕捉範囲を有する様々なフォトセンサを利用できる。カメラアセンブリ125は、広角レンズ又は望遠レンズを含み得る。カメラアセンブリ125は、単一の画像又はビデオを画像データとしてキャプチャするように構成され得る。更に、カメラアセンブリ125の向きは、カメラアセンブリ125が地平線に向けられた状態で地面に平行であり得る。カメラアセンブリ125は、画像データをキャプチャし、その画像データをクライアントデバイス110上のコンピューティングデバイスと共有する。画像データには、センシングデータ(例えば、温度、環境の明るさなど)やキャプチャデータ(例えば、露出、暖かさ、シャッタースピード、焦点距離、キャプチャ時間など)を含む画像データの他の詳細を記述するメタデータを付加することができる。カメラアセンブリ125は、画像データをキャプチャすることができる1つ以上のカメラを含むことができる。一例では、カメラアセンブリ125は1つのカメラを備え、単眼画像データをキャプチャするように構成される。別の例では、カメラアセンブリ125は2つのカメラを備え、立体画像データをキャプチャするように構成される。他の様々な実施形態では、カメラアセンブリ125は、それぞれが画像データをキャプチャするように構成された複数のカメラを備える。
【0029】
深度推定モデル130は、シーンの入力画像を受信し、当該入力画像に基づく当該シーンの深度を出力する。深度推定モデル130は、以下でより詳細に説明するが、深度推定トレーニングシステムによってトレーニングされ、また、深度推定トレーニングシステムによって更新又は調整され得る。受信された入力画像は、カメラアセンブリ125のカメラ又は別のクライアントデバイス110からの別のカメラによってキャプチャされ得る。いくつかの実施形態では、受信された入力画像は、入力画像の内部値(intrinsics)を特定する画像に付加されたメタデータを有する。画像の内部値は、画像がキャプチャされた時点でのカメラの1つ以上の幾何学的特性、例えば、画像をキャプチャする際のカメラの焦点距離、カメラの主点オフセット、カメラのスキュー等を指す。内部値を用いて、深度推定モデル130は、内部値を説明する内部行列を生成することができる。いくつかの実施形態では、深度推定モデル130は、入力画像が閾値解像度を超えるかどうかを判定する。もしそうでない場合、深度推定モデル130は、シーンの深度マップを決定する前に、入力画像を所望の解像度にアップサンプリングしてもよい。深度推定モデル130は、(受信時又はアップサンプリング後に)画像を入力し、シーンの深度マップを決定する。機械学習アルゴリズムは、トレーニング及び/又は推定のために、深度推定モデル130に実装され得る。
【0030】
ゲームモジュール135は、並行現実ゲームに参加するためのインターフェースをプレーヤーに提供する。ゲームサーバ120は、クライアントデバイス110のゲームモジュール135によって使用されるゲームデータを、ネットワーク105を介してクライアントデバイス110に送信し、ゲームのローカルバージョンをゲームサーバ120から離れた位置にいるプレーヤーに提供する。ゲームサーバ120は、ネットワーク105を介して通信を提供するためのネットワークインターフェースを含むことができる。ネットワークインターフェースは、例えば、送信機、受信機、ポート、コントローラ、アンテナ、又は他の適切な構成要素を含む、1つ以上のネットワークとインターフェースするための任意の適切な構成要素を含むことができる。
【0031】
クライアントデバイス110によって実行されるゲームモジュール135は、プレーヤーと並行現実ゲームとの間のインターフェースを提供する。ゲームモジュール135は、ゲームに関連付けられた仮想世界を表示し(例えば、仮想世界の画像をレンダリングし)、ユーザが仮想世界で相互作用して様々なゲーム目標を実行することを可能にするユーザインターフェースを、クライアントデバイス110に関連付けられたディスプレイデバイス上に提示することができる。いくつかの他の実施形態では、ゲームモジュール135は、並行現実ゲームの仮想要素で拡張された現実世界の(例えば、カメラアセンブリ125によってキャプチャされた)画像データを提示する。これらの実施形態では、ゲームモジュール135は、クライアントデバイスの他の構成要素から受信した他の情報に従って、仮想コンテンツを生成、及び/又は調整することができる。例えば、ゲームモジュール135は、画像データにキャプチャされたシーンの(例えば、深度推定モデル130によって決定される)深度マップに従って、ユーザインターフェースに表示される仮想物体を調整することができる。
【0032】
ゲームモジュール135は、更に、他の様々な出力を制御して、プレーヤーがディスプレイ画面を見ることなくゲームと相互作用できるようにすることができる。例えば、ゲームモジュール135は、プレーヤーがディスプレイ画面を見ずにゲームをプレイすることを可能にする、様々なオーディオ、振動、又は他の通知を制御することができる。ゲームモジュール135は、ゲームサーバ120から受信したゲームデータにアクセスして、ゲームの正確な表現をユーザに提供することができる。ゲームモジュール135は、プレーヤー入力を受信して処理し、ネットワーク105を介してゲームサーバ120に更新を提供することができる。ゲームモジュール135は、更に、クライアントデバイス110によって表示されるゲームコンテンツを生成、及び/又は調整することができる。例えば、ゲームモジュール135は、(例えば、深度推定モデル130によって決定される)深度情報に基づいて仮想要素を生成することができる。
【0033】
測位モジュール140は、クライアントデバイス110の位置を監視するための任意のデバイス又は回路であり得る。例えば、測位モジュール140は、衛星航法測位システム(例えば、GPSシステム、ガリレオ測位システム、全地球航法衛星システム(GLONASS)、BeiDou衛星航法及び測位システム)、慣性航法システム、IPアドレスに基づく、三角測量及び/又はセルラータワー若しくはWi-Fiホットスポットへの近接を使用することによる推測航法システム、及び/又は、位置を決定するための他の適切な技術を使用することによって、実際の又は相対的な位置を決定することができる。測位モジュール140は、クライアントデバイス110の位置を正確に測ることを補助する様々な他のセンサを更に含み得る。
【0034】
プレーヤーが現実世界でクライアントデバイス110と共に動き回るとき、測位モジュール140は、プレーヤーの位置を追跡し、プレーヤーの位置情報をゲームモジュール135に提供する。ゲームモジュール135は、現実世界におけるプレーヤーの実際の位置に基づいて、ゲームに関連付けられた仮想世界におけるプレーヤー位置を更新する。したがって、プレーヤーは、クライアントデバイス110を現実世界で携帯又は運ぶだけで、仮想世界と相互作用することができる。特に、仮想世界におけるプレーヤーの位置は、現実世界におけるプレーヤーの位置に対応することができる。ゲームモジュール135は、ネットワーク105を介してゲームサーバ120にプレーヤー位置情報を提供することができる。それに応じて、ゲームサーバ120は、不正行為者がクライアントデバイス110の位置をスプーフィングするのを防ぐために、クライアントデバイス110の位置を検証するための様々な技術を制定することができる。なお、プレーヤーに関連付けられた位置情報は、プレーヤーの位置情報にアクセスすること及びゲームの中で位置情報をどのように活用するか(例えば、仮想世界におけるプレーヤーの位置を更新するために活用すること)をプレーヤーに通知した後で、許可された場合にのみ利用されることを理解されたい。更に、プレーヤーに関連付けられた位置情報は、プレーヤーのプライバシーを保護する方法で保存及び維持される。
【0035】
ゲームサーバ120は、任意のコンピューティングデバイスであり得、1つ以上のプロセッサ及び1つ以上のコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を記憶することができる。ゲームサーバ120は、ゲームデータベース115を含むことができ、又はそれと通信することができる。ゲームデータベース115は、ネットワーク105を介してクライアント120にサービス又は提供される、並行現実ゲームで使用されるゲームデータを記憶する。
【0036】
ゲームデータベース115に記憶されたゲームデータは、以下を含み得る。(1)並行現実ゲームの仮想世界に関連付けられたデータ(例えば、ディスプレイデバイス上で仮想世界をレンダリングするために使用される画像データ、仮想世界内の位置の地理座標など);(2)並行現実ゲームのプレーヤーに関連付けられたデータ(特に限定されないが、例えば、プレーヤー情報、プレーヤー経験レベル、プレーヤー通貨、仮想世界/現実世界でのプレーヤーの現在位置、プレーヤーエネルギーレベル、プレーヤーの好み、チーム情報、ファクション情報などを含むプレーヤープロファイル情報);(3)ゲーム目標に関連付けられたデータ(例えば、現在のゲーム目標、ゲーム目標のステータス、過去のゲーム目標、将来のゲーム目標、所望のゲーム目標などに関連付けられたデータなど);(4)仮想世界における仮想要素に関連付けられたデータ(例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲーム目標、仮想要素に対応する実世界の位置情報、仮想要素の動作、仮想要素の関連性など);(5)現実世界の物体、ランドマーク、仮想世界の要素にリンクされた位置に関連付けられたデータ(例えば、現実世界の物体/ランドマークの位置、現実世界の物体/ランドマークの説明、現実世界の物体にリンクされた仮想要素の関連性など);(6)ゲームのステータス(例えば、現在のプレーヤー数、ゲーム目標の現在のステータス、プレーヤーのリーダーボードなど);(7)プレーヤー行動/入力に関連付けられたデータ(例えば、現在のプレーヤー位置、過去のプレーヤー位置、プレーヤーの動き、プレーヤーの入力、プレーヤーのクエリ、プレーヤーの通信など);並びに(8)並行現実ゲームの実行中に使用、関連、又は取得されたその他の任意のデータ。ゲームデータベース115に記憶されたゲームデータは、システム管理者によって、及び/又はネットワーク105を介してクライアントデバイス110からなど、システム100のユーザ/プレーヤーから受信されたデータによって、オフライン又はリアルタイムのいずれかで取り込むことができる。
【0037】
ゲームサーバ120は、クライアントデバイス110から(例えば、リモートプロシージャコール(RPC)を介して)ゲームデータの要求を受信し、ネットワーク105を介してそれらの要求に応答するように構成され得る。例えば、ゲームサーバ120は、ゲームデータを1つ以上のデータファイルにエンコードし、データファイルをクライアントデバイス110に提供することができる。更に、ゲームサーバ120は、ネットワーク105を介してクライアントデバイス110からゲームデータ(例えば、プレーヤーの位置、プレーヤーの行動、プレーヤーの入力など)を受信するように構成することができる。例えば、クライアントデバイス110は、プレーヤーの入力及び他の更新をゲームサーバ120に定期的に送信するように構成することができ、ゲームサーバ120は、ゲームデータベース115内のゲームデータを更新するためにそれを使用して、ゲームのあらゆる変更された条件を反映することができる。
【0038】
示される実施形態では、サーバ120は、ユニバーサルゲームモジュール145、商用ゲームモジュール150、データ収集モジュール155、イベントモジュール160、及び深度推定トレーニングシステム170を有する。上記のように、ゲームサーバ120は、ゲームサーバ120の一部であるか又はリモートでアクセスされ得るゲームデータベース115と相互作用する(例えば、ゲームデータベース115は、ネットワーク105を介してアクセスされる分散データベースであり得る)。他の実施形態では、ゲームサーバ120は、異なる要素及び/又は追加の要素を含む。更に、機能は、説明されているのとは異なる方法で要素間で分散され得る。例えば、ゲームデータベース115は、ゲームサーバ120に統合することができる。
【0039】
ユニバーサルゲームモジュール145は、全てのプレーヤーのために並行現実ゲームをホストし、全てのプレーヤーの並行現実ゲームの現在のステータスの信頼できる情報源として機能する。ホストとして、ユニバーサルゲームモジュール145は、例えば、それぞれのクライアントデバイス110を介して、プレーヤーに提示するためのゲームコンテンツを生成する。ユニバーサルゲームモジュール145は、並行現実ゲームをホストするときに、ゲームデータベース115にアクセスして、ゲームデータを取得及び/又は記憶することができる。ユニバーサルゲームモジュール145は、更に、クライアントデバイス110からゲームデータ(例えば、深度情報、プレーヤーの入力、プレーヤーの位置、プレーヤーの行動、ランドマーク情報など)を受信し、受信したゲームデータを、並行現実ゲームの全てのプレーヤーのために並行現実ゲーム全体に組み込む。ユニバーサルゲームモジュール145は、更に、ネットワーク105を介したクライアントデバイス110へのゲームデータの配信を管理することができる。ユニバーサルゲームモジュール145は特に限定されないが、クライアントデバイス110とゲームサーバ120との間の接続の保護、様々なクライアントデバイス110間の接続の確立、及び様々なクライアントデバイス110の位置の検証を含む、クライアントデバイス110のセキュリティ面を更に管理してもよい。
【0040】
商用ゲームモジュール150は、それが含まれる実施形態において、ユニバーサルゲームモジュール145とは分離されていても、その一部であってもよい。商用ゲームモジュール150は、現実世界での商業活動にリンクされている並行現実ゲーム内の様々なゲーム機能の包含を管理することができる。例えば、商用ゲームモジュール150は、スポンサー/広告主、企業、又は他のエンティティといった外部システムから要求を、ネットワーク105を介して(ネットワークインターフェースを介して)受信して、並行現実ゲームにおいて商業活動にリンクされたゲーム機能を含めることができる。そして、商用ゲームモジュール150は、これらのゲーム機能を並行現実ゲームに含めるように配置することができる。
【0041】
ゲームサーバ120は、データ収集モジュール155を更に含むことができる。データ収集モジュール155は、それが含まれる実施形態において、ユニバーサルゲームモジュール145とは分離されていても、その一部であってもよい。データ収集モジュール155は、現実世界でのデータ収集活動にリンクされている並行現実ゲーム内の様々なゲーム機能の包含を管理することができる。例えば、データ収集モジュール155は、ゲームデータベース115に記憶されたゲームデータを変更して、並行現実ゲームにおけるデータ収集活動にリンクされたゲーム機能を含めることができる。データ収集モジュール155は、更に、データ収集活動に従ってプレーヤーによって収集されたデータを分析し、様々なプラットフォームによるアクセスのためのデータを提供することができる。
【0042】
イベントモジュール160は、並行現実ゲームにおけるイベントへのプレーヤーのアクセスを管理する。「イベント」という用語は便宜上使用されているが、この用語は特定の位置又は時間における特定のイベントを指す必要はないことを理解されたい。むしろ、プレーヤーがそのコンテンツにアクセスできるかどうかを決定するために1つ以上のアクセス基準が使用される、アクセス制御されたゲームコンテンツの任意の提供を指すことができる。このようなコンテンツは、アクセス制御がほとんど又はまったくないゲームコンテンツを含む、より大きな並行現実ゲームの一部であってもよいし、スタンドアロンのアクセス制御された並行現実ゲームであってもよい。
【0043】
深度推定トレーニングシステム170は、深度推定モデル、例えば、クライアントデバイス110に提供される深度推定モデル130をトレーニングする。深度推定トレーニングシステム170は、深度推定モデルのトレーニングに使用するための画像データを受信する。一般的に、深度推定トレーニングシステム170は、画像データを処理し、その画像データを深度推定モデル及びポーズ推定モデルに入力し、画像を合成フレームとして他の画像に投影し、そして、深度推定モデルのパラメータを繰り返し調整する。深度推定トレーニングシステム170は、合成フレームと画像との比較に基づいて、入力スケールオクルージョン及びモーション認識損失関数を用いて、パラメータを調整するときに最小化される損失値を更に定義することができる。損失値は、また、深度推定モデルが深度情報の推定において十分にトレーニングされているか、及び/又は十分に正確であるかどうかを示すことができる。損失関数は、また、別の画像に時間的に隣接する単眼ビデオの時間画像から投影された2つの合成フレーム間の最小測光再構成誤差を考慮してもよい。アップサンプリングされた深度特徴は、また、外観マッチング損失の計算に影響を及ぼす合成フレームの生成中に使用されてもよい。損失関数は、また、損失値を計算するときに画像の静的特徴を割り引くように生成されたマスクを実装してもよい。深度推定モデルがトレーニングされると、深度推定モデルは画像データを受信し、その画像データにおける環境の深度情報を出力する。深度推定トレーニングシステム170は、トレーニングされたモデルをクライアントデバイス110に提供する。深度推定トレーニングシステム170によるトレーニングについては、以下で更に説明する。
【0044】
ネットワーク105は、ローカルエリアネットワーク(例えば、イントラネット)、ワイドエリアネットワーク(例えば、インターネット)、又はそれらの何らかの組み合わせなどの任意のタイプの通信ネットワークであり得る。ネットワークはまた、クライアントデバイス110とゲームサーバ120との間の直接接続を含むことができる。一般に、ゲームサーバ120とクライアントデバイス110との間の通信は、様々な通信プロトコル(例えば、TCP/IP、HTTP、SMTP、FTP)、エンコーディング又はフォーマット(例えば、HTML、XML、JSON)、及び/又は保護スキーム(例えば、VPN、セキュアHTTP、SSL)を使用する、任意のタイプの有線及び/又は無線接続を使用して、ネットワークインターフェースを介して行うことができる。
【0045】
本明細書で説明する技術は、サーバ、データベース、ソフトウェアアプリケーション、及びその他のコンピュータベースのシステム、並びにそのようなシステムとの間で取られるアクション及び送受信される情報に関する。当業者は、コンピュータベースのシステムに固有の柔軟性は、システムの構成要素間で、非常に様々な構成、組み合わせ、及びタスクと機能の分割を可能にすることを認識するであろう。例えば、ここで説明するサーバプロセスは、単一のサーバを使用して、又は、複数のサーバを組み合わせて使用して実装できる。データベースとアプリケーションは、単一のシステムに実装することも、複数のシステムに分散させることもできる。分散構成要素は、順次又は並列に動作してもよい。
【0046】
更に、本明細書で論じられるシステム及び方法がユーザに関する個人情報にアクセスして分析する又は位置情報などの個人情報を利用する状況では、プログラム又は機能が情報を収集するかどうかを制御する機会、並びに、システム又は他のアプリケーションからコンテンツを受信するかどうか及び/又は受信する方法を制御する機会が、ユーザに提供され得る。収集する情報とその使用方法についてユーザに意味のある通知が提供されるまで、そのような情報やデータは収集又は使用されない。ユーザが同意しない限り、情報は収集又は使用されず、その同意は、ユーザがいつでも取り消し、又は変更することができる。したがって、ユーザは、ユーザに関する情報がどのように収集され、アプリケーション又はシステムによってどのように使用されるかを制御することができる。更に、特定の情報又はデータを保存又は使用される前に1つ以上の方法で処理し、個人を特定できる情報を削除できる。例えば、ユーザの識別情報は、そのユーザについて個人を特定できる情報を判別できないように処理されてもよい。
【0047】
<例示的なゲームインターフェース>
図3は、プレーヤーと仮想世界210との間のインターフェースの一部としてクライアント120のディスプレイ上に提示され得るゲームインターフェース300の一実施形態を示す。ゲームインターフェース300は、仮想世界210と、例えば、仮想世界210における、プレーヤーの位置222、仮想要素230の位置、仮想アイテム232の位置、及び仮想エネルギー250の位置といった、ゲームの様々な他の側面と、を表示するために使用され得る、ディスプレイウィンドウ310を含む。ユーザインターフェース300は、更に、ゲームデータ情報、ゲーム通信、プレーヤー情報、クライアント位置確認命令、及び、ゲームに関連付けられた他の情報といった、その他の情報を表示することができる。例えば、ユーザインターフェースは、プレーヤー名、経験レベル、及び他の情報などのプレーヤー情報315を表示することができる。ユーザインターフェース300は、様々なゲーム設定及びゲームに関連付けられた他の情報にアクセスするためのメニュー320を含むことができる。ユーザインターフェース300は、更に、ゲームシステムとプレーヤーとの間、及び並行現実ゲームの1人以上のプレーヤーとの間の通信を可能にする通信インターフェース330を含むことができる。
【0048】
本開示の態様によれば、プレーヤーは、クライアントデバイス110を現実世界で持ち歩くだけで、並行現実ゲームと相互作用することができる。例えば、プレーヤーはスマートフォンで並行現実ゲームに関連付けられたアプリケーションにアクセスし、そのスマートフォンと共に現実世界を動き回るだけでゲームをプレイできる。この点で、位置ベースのゲームをプレイするために、プレーヤーが仮想世界の視覚的表現をディスプレイ画面上で継続的に見る必要はない。結果として、ユーザインターフェース300は、ユーザがゲームと相互作用することを可能にする複数の非視覚的要素を含むことができる。例えば、ゲームインターフェースは、プレーヤーがゲーム内の仮想要素又は物体に近づいたとき、又は並行現実ゲームで重要なイベントが発生したときに、そのプレーヤーに可聴通知を提供できる。プレーヤーは、オーディオ制御340を用いてこれらの可聴通知を制御することができる。仮想要素又はイベントのタイプに応じて、様々なタイプの可聴通知をユーザに提供できる。可聴通知は、仮想要素又は物体へのプレーヤーの近さに応じて、頻度又は音量を増減できる。振動通知又は他の適切な通知又は信号など、他の非視覚的通知及び信号もユーザに提供され得る。
【0049】
本明細書で提供される開示を使用する当業者は、本開示に照らして、多数のゲームインターフェース構成及び基礎となる機能が明らかになることを理解するであろう。本開示は、特定の構成に限定されることを意図するものではない。
【0050】
<深度推定トレーニング>
深度推定トレーニングシステム170は、クライアントデバイス110によって使用するための深度推定モデル130をトレーニングする。図1に示す実施形態では、深度推定トレーニングシステム170は、深度及びポーズモデル175、画像合成モジュール180、損失計算モジュール185、外観マッチング損失モジュール190、スケーリングモジュール195、及びマスキングモジュール197を含む。他の実施形態では、深度推定トレーニングシステム170は、異なる及び/又は追加の構成要素、例えば、データストア、フィードバックモジュール、平滑化モジュールなどを含み得る。例えば、深度及びポーズモデル175をトレーニングするとき、データストアはトレーニングデータ又はトレーニングされたパラメータを記憶できる。別の例では、平滑化モジュールは、深度マップの深度値を平滑化するなど、深度マップを処理することができる。深度及びポーズモデル175は、画像を受信し、その画像の深度特徴及び/又はポーズを決定することができる1つ以上のモデルを含む。以下で説明するように、深度及びポーズモデル175は、ポーズモデルのパラメータとは異なる深度モデルのパラメータで構成されていてもよい。あるいは、深度及びポーズモデル175は、ポーズモデルからの1つ以上のパラメータが深度モデルと共有されるように構成されていてもよい。
【0051】
ここで図4を参照すると、深度推定トレーニングシステム170は、深度推定モデル410及びポーズ推定モデル440を互いに別々にトレーニングして、入力画像からシーンの深度マップと入力画像のポーズとを決定することができる。本実施形態では、深度推定モデル410とポーズ推定モデル440は、それぞれが演算時間と演算リソースを用いて別々に動作する。
【0052】
深度推定モデル410は、入力画像を受信し、その入力画像に対応する深度マップを決定する。一実施形態では、深度推定モデル410は、入力画像を深度エンコーダ420を介して供給して、抽象深度特徴を抽出する。深度エンコーダ420は、異なる機械学習アルゴリズム及び技術を使用してこれらの特徴を抽出することができる。この図では、深度エンコーダ420は、抽出された特徴の次元を後続の各層が低減する複数の層を含む、畳み込みニューラルネットワークである。例えば、10^6の画素又はデータ点のオーダの入力画像は、第1の層の後に10^5のオーダの特徴の集合に縮小される。深度エンコーダ420の最終層までに、抽象深度特徴は10^4以下のオーダとなり得る。これらの数値は、単に説明のために記載されている。実際には、深度エンコーダは、異なる数の層を有することができ、ピクセルの数及び深度特徴は変化し得る。
【0053】
逆の態様では、深度デコーダ430は、抽象特徴の次元を増加させるために複数の層を備える。上記の例に従うと、深度デコーダ430は、10^4のオーダの抽象深度特徴を取得し、徐々に(複数の層にわたって)入力画像の各ピクセルの深度を推定することができる。そして、深度デコーダ430は、深度マップ上の各ピクセルが、そのピクセルに投影されるシーン内の最も近い物体の距離に対応する深度マップを出力する。代替的な実施形態では、深度デコーダ430は、視差マップ上の各ピクセルが距離の逆数に対応する視差マップを出力する。本開示を通して、深度マップを参照して記載された原理は、視差マップを有する実施形態において容易に適用される。例えば、入力画像は、所与のピクセルでカメラから未知の距離にある木をキャプチャしている。深度デコーダ430は、カメラからそのピクセルでのブロックまでの距離に対応する深度値を出力する。いくつかの実施形態では、出力深度値は、別の値に対して相対的であり得るか、又は本質的に定義され得る。他の実施形態では、出力深度値は、例えば、ブロックが10フィート離れている或いは建物が25メートル離れているなど、シーン内の物体の実際の測定値を提供するスケールに達している。
【0054】
ポーズ推定モデル440は、複数の連結された入力画像を受信して、入力画像のそれぞれのポーズを決定する。ポーズとは、一般的に、2つの画像の視点間の数学的変換を指す。本開示全体を通して、ポーズは、より一般的に、2つの画像間の変換を定義するために使用され得る、画像の視点を記述する。連結された入力画像は、連結された入力画像から抽象ポーズ特徴を抽出するポーズエンコーダ450に入れられる。そして、抽象ポーズ特徴は、連結された入力画像のそれぞれのポーズ又は入力画像の各ペア間の相対変換を決定するポーズデコーダ460を介して入力される。ポーズエンコーダ450は、抽象ポーズ特徴を抽出し、次に、連結された入力画像のそれぞれのポーズを推定するための複数の層を含む畳み込みニューラルネットワークとして構成され得る。
【0055】
代替的な構成では、深度ポーズハイブリッドモデル455は、ポーズ推定モデルからのパラメータを深度モデルと共有する。これは、他の利点の中でもとりわけ、トレーニングされるパラメータが少ない場合に全体の計算時間を短縮する。一実施形態では、深度ポーズハイブリッドモデル455は、シーンの1つ以上の画像を受信し、その画像の1つ以上のポーズを決定するモデルである。深度ポーズハイブリッドモデル455は、深度推定モデル410の深度エンコーダ420であり得る深度エンコーダ470と、ポーズ推定モデル440からのポーズデコーダ460であり得るポーズデコーダ480とを組み込んでいる。この実施形態では、深度ポーズハイブリッドモデル455は、深度推定モデル410及びポーズ推定モデル440で使用される原理を組み込んでおり、したがって、全体的な計算時間及びリソースを削減することができる。更に、深度ポーズハイブリッドモデル455は、2つのモデル間で情報を共有するための手段を提供し、トレーニングをより容易にする。
【0056】
深度ポーズハイブリッドモデル455は、深度エンコーダ470及びポーズデコーダ480を利用する。一実施形態では、深度ポーズハイブリッドモデル455は、複数の入力画像を取得し、それぞれを深度エンコーダ470に送り、抽象深度特徴を抽出する。そして、各入力画像からの抽象深度特徴は、ポーズデコーダ480に入力される前に一緒に連結され、入力画像のそれぞれのポーズ、又は2つの後続の入力画像間の相対変換をもたらす。深度ポーズハイブリッドモデル455は、入力画像の各ペアのポーズを抽出することにおいて、ポーズ推定モデル440よりも計算効率が高い。深度ポーズハイブリッドモデル455は、入力画像を連結するポーズ推定モデル440とは対照的に、いくつかの入力画像の抽象深度特徴を連結する。深度ポーズハイブリッドモデル455のポーズデコーダ480は、深度エンコーダ470とポーズデコーダ480との間でトレーニングパラメータを共有することによって、無関係なコンピューティングリソースの使用を減らすことができる。
【0057】
画像合成モジュール180は、あるトレーニング画像から別のトレーニング画像に合成フレームを投影する。単眼ビデオデータの投影において、画像合成モジュール180は、第1の時間画像の深度、および、第1の時間画像の時間ステップと第2の時間画像の時間ステップとの間の相対変換の両方を考慮して、第1の時間ステップでの1つの時間画像から第2の時間ステップでの第2の時間画像へ投影する。深度は中間変数であり、相対変換は深度及びポーズモデル175から取得される。
【0058】
追加の実施形態では、画像合成モジュール180は、更に、各画像の内部値(intrinsics)を考慮する。画像の内部値は、その画像をキャプチャするために使用されるカメラの幾何学的特性、例えば、カメラの焦点距離、カメラの主点オフセット、カメラのスキューなどを指す。場合によっては、撮影した全ての画像間で各カメラについて内部値が一定であってもよく、様々な画像を撮影するときにカメラがそのパラメータを調整することで内部値が変更してもよい。いずれの場合も、内部値は、時間画像の変換に使用される内部行列として表すことができる。追加の実施形態では、画像合成モジュール180は、更に、画像のポーズを使用して、単眼トレーニング画像データで画像をワープする。画像合成モジュール180は、第1の時間画像を第2の時間画像の合成フレームに変換する。
【0059】
一実施形態では、画像合成モジュール180は、連続する3つの時間画像のセットを単眼ビデオから取得し、第1の時間画像から第2の時間画像の時間ステップに第1の合成フレームとして投影する。画像合成モジュール180は、また、第3の時間画像から第2の時間画像の時間ステップに第2の合成フレームとして投影する。立体画像データの投影において、画像合成モジュール180は、立体画像ペアの一方(左の画像)から立体画像ペアの他方(右の画像)に投影する。画像合成モジュール180は、単眼ビデオデータの投影と同様に、一方の画像から他方の画像に投影するときに、立体画像ペアの深度及び左の画像と右の画像との間のポーズの両方を考慮する。ただし、単眼ビデオデータとは異なり、左の画像と右の画像との間のポーズは、立体画像ペアをキャプチャした2台のカメラの配置によって決定される。画像合成モジュール180は、左の画像から右の画像に右の合成フレームとして投影し、右の画像から左の画像に左の合成フレームとして投影する。
【0060】
損失計算モジュール185は、合成フレームと時間画像との間の差分を計算する。単一の入力画像を用いて測光再構成誤差を計算する一実施形態では、損失計算モジュール185は、単一のソース画像から投影された合成フレームと別の画像との間の差分を測光再構成誤差として取得する。
【0061】
外観マッチング損失モジュール190は、複数の入力画像を用いて計算するときの測光再構成誤差(外観マッチング損失とも呼ばれる)を決定する。3つの連続する時間画像のセットを用いた上記の実施形態に続いて、損失計算モジュール185は、第1の合成フレームと第2の時間画像との間の差分、及び第2の合成フレームと第2の時間画像との間の別の差分を計算することができる。ある時間画像に存在する特徴が隣接する時間画像において遮られたり遮られたものが再び出現したりすると、問題が発生する可能性がある。残念ながら、これらの特徴に対応するピクセルは、深度モデルのトレーニングに悪影響を及ぼす可能性がある。たとえば、そのようなピクセルに対して正しい深度が予測される場合、遮ぎられた(又は遮られたものが再び出現した)ソース画像の対応する測光再構成誤差は非常に大きくなる可能性が高く、深度が正しく予測されているにもかかわらず、高い測光再構成誤差のペナルティが発生する。このような問題のある画素は、二つの主なカテゴリーから生じる。一つは画像境界におけるエゴモーションによる視野外画素であり、もう一つは遮ぎられた(又は遮られたものが再び出現した)画素である。一実施形態では、外観マッチング損失モジュール190は、第1の合成フレームおよび第2の合成フレームからの2つの差分の間の最小値を識別する。別の実施形態では、外観マッチング損失モジュール190は、2つの差分を平均化する。立体画像ペアを用いた上記の実施形態に続いて、損失計算モジュール185は、左の合成フレームと左の画像との間の左差分、及び右の合成フレームと右の画像との間の右差分を計算することができる。外観マッチング損失モジュールは、左差分と右差分との間の最小値を識別したり、それらの平均値を計算することができる。2つの差分の間で最小値を取ることは、あるビューに存在するが別のビューには存在しない遮ぎられた物体によって発生する問題を軽減するのに役立ち、アーティファクトの生成を回避できる。これはまた、画像境界でのアーティファクトを大幅に低減し、オクルージョン境界のシャープネスを改善し、深度推定の全体的な精度を向上させるのに有利であることが証明されている。
【0062】
スケーリングモジュール195は、トレーニングで使用するために、深度マップを入力画像の解像度にスケーリングする。従来、外観マッチング損失は、深度デコーダの各層での個々の損失の組み合わせとして計算される。スケーリングモジュール195は、深度特徴の解像度及び入力画像の解像度に基づいて、アップサンプリングされるトレーニング画像の深度特徴のスケーリング係数を決定する。アップサンプリングは、特に限定されないが、バイリニアサンプリング又はバイキュービックサンプリングを含む様々な画像アップサンプリング技術を使用して実現できる。アップサンプリングされた深度特徴は、合成フレームの生成と外観マッチング損失の計算に使用される。アップサンプリングされた深度特徴を使用することは、改善されたトレーニング結果を提供し、深度デコーダ内の各層の解像度で画像上の測光再構成誤差を計算する際に導入され得るテクスチャコピーのアーティファクト(すなわち、入力画像から誤って転送された深度マップの詳細)を回避する。
【0063】
マスキングモジュール197は、トレーニング画像データにおける1つ以上の静的特徴をマスキングする。静的特徴は、例えば、単眼ビデオにおいて、2つ以上の画像間で実質的に同様の位置にあるピクセルのセットとして定義され得る。例えば、単眼ビデオをキャプチャするカメラと同じ速度で移動する物体は、その単眼ビデオにおいて実質的に同様の位置のピクセルとしてフレーム間で表示される。言い換えれば、物体は、第1のタイムスタンプの第1の画像と第2のタイムスタンプの第2の画像との間で実質的に同じ位置に現れ得る。マスキングモジュール197は、深度推定トレーニングシステム170が外観マッチング損失を計算しているときにこれらの静的特徴をフィルタリングするマスクを、静的特徴に適用することによって、これらの静的特徴を考慮する。そうすることにより、深度モデルが、単眼ビデオ内の静的特徴が非常に不正確な深度にあると判断すること、例えば、無限遠に向かう物体がフレーム間で静止して見えるように無限遠に向かう傾向にあると判断することを防止する。
【0064】
一実施形態では、マスキングモジュール197は、計算された損失に基づいてマスクを適用する。マスキングモジュール197は、第1の時間画像と第2の時間画像との間の第1の損失を計算する。マスキングモジュール197は、第1の時間画像と第2の時間画像から投影された合成フレームとの間の第2の損失を別に計算する。マスクは、第1の損失が第2の損失より大きいかどうかに基づいて、クロネッカーのデルタ関数とすることができる。そして、マスクは、深度モデルのパラメータのトレーニング中に、合成フレームと入力画像との間の損失計算に適用され得る。
【0065】
深度推定トレーニングシステム170は、そのモデル及びモジュールをトレーニング画像でトレーニングした後、深度推定モデル130にパラメータを提供して、カラー入力画像を受信し、深度及びポーズモデル175、画像合成モジュール180、損失計算モジュール185、外観マッチング損失モジュール190、並びにスケーリングモジュール195を含む深度推定トレーニングシステム170によってトレーニングされたパラメータに基づいて深度マップを生成することができる。深度推定トレーニングシステム170は、便宜上、ゲームサーバ120の一部として示されているが、モデルの一部又は全ては、他のコンピューティングデバイスによってトレーニングされ、オペレーティングシステムの一部であること、ゲームアプリケーションに含まれること、又はオンデマンドでクラウドにアクセスされることを含む様々な方法でクライアントデバイス110に提供され得ることに留意されたい。
【0066】
図5は、1つ以上の実施形態による、深度推定モデルをトレーニングする一般的なプロセス500を説明するフローチャートである。プロセス500は、深度推定モデル130が入力画像を与えられた深度マップを生成することができる複数のパラメータをもたらす。
【0067】
深度推定トレーニングシステム170は、まず、複数の単眼の時間画像及び/又は複数の立体画像ペアの組み合わせを含むトレーニング画像データを取得する(510)。単眼ビデオデータは、外部デバイス上のカメラ、例えば、クライアントデバイス110上のカメラアセンブリ125から受信することができる。立体画像ペアは、外部デバイス上の双眼カメラのペア、例えば、クライアントデバイス110上のカメラアセンブリ125から受信することができる。一実施形態では、ネットワークインターフェース105は、トレーニング画像データを受信する。深度推定トレーニングシステム170は、トレーニング画像データを様々なデータストアに格納することができる。例えば、深度推定トレーニングシステム170は、単眼ビデオデータストアに単眼ビデオデータを格納し、立体画像データストアに立体画像ペアを格納することができる。
【0068】
単眼ビデオを使用する場合、深度推定トレーニングシステム170は、単眼ビデオデータからの時間画像を、連続する3つの時間画像のセットにグループ化する(520)。3つのセットにグループ化するこのステップ520は、第3の時間画像に投影された2つの時間画像を利用して測光再構成誤差を計算することを目的としている。他の実施形態では、深度推定システム170は、時間画像を4つのセット又は5つのセットなどにグループ化することができる。
【0069】
深度推定トレーニングシステム170は、各画像を深度モデルに入力して、深度特徴を抽出する(530)。一実施形態では、画像は、深度特徴を深度マップとして、例えば、画像の解像度で抽出する深度推定モデル(例えば、深度推定モデル410)に入力される。
【0070】
深度推定トレーニングシステム170は、各画像のポーズを抽出するポーズデコーダに画像を入力する(540)。一実施形態では、画像は、画像のポーズを抽出するポーズ推定モデル(例えば、ポーズ推定モデル440)に入力される。深度ポーズハイブリッドモデルを用いた実施形態では、深度エンコーダ(例えば、深度エンコーダ470)から決定された抽象深度特徴が連結され、ポーズデコーダ(例えば、ポーズデコーダ480)に入力されて、各時間画像のポーズが抽出される。立体画像ペアでは、ポーズは、立体画像ペアの2つの視点間の変換を定義又は定義するのに役立つ。いくつかの実施形態では、立体画像ペアの2つの視点の間のポーズは、固定されている、及び/又は既知である。連続する3つの時間画像(例えば、第1、第2、及び第3の時間画像)のセットにグループ化された単眼ビデオデータを用いて、深度推定トレーニングシステム170は、第1から第2への相対変換と、第2から第3への別の相対変換とを抽出する。
【0071】
深度特徴及びポーズを用いて、深度推定トレーニングシステム170は、時間画像を後続の時間画像に投影し、及び/又は各立体画像を、立体画像ペア内の他方の立体画像に投影する(550)。3つの時間画像の各セットで、深度推定トレーニングシステム170は、第1の時間画像を第2の時間ステップに第1の合成フレームとして投影し、第3の時間画像を第2の時間ステップに第2の合成フレームとして投影する。深度推定トレーニングシステム170は、第1の時間画像の深度を中間変数として、第1の時間画像のポーズ又は第1の時間画像から第2の時間画像への相対変換に基づいて、第1の時間画像を第2の時間ステップに投影する。深度推定トレーニングシステム170は、同様に、第3の時間画像の深度を中間変数として、第2の時間画像から第3の時間画像への逆相対変換を用いて、第3の時間画像を第2の時間ステップに投影する。一実施形態では、画像合成モジュール180は、1つの時間画像から合成フレームへの投影を実行する。深度推定トレーニングシステム170は、立体画像ペアを用いて、立体画像ペアの左の画像を右の合成フレームとして立体画像ペアの右の画像に投影し、同様に右の画像から左の画像に左の合成フレームとして投影する。一実施形態では、画像合成モジュール180は、左の画像から右の画像へ、及びその逆への投影を実行する。
【0072】
深度推定トレーニングシステム170は、合成フレームと画像の比較に基づいて、入力スケールオクルージョン及びモーション認識損失関数を用いて損失値を計算する(560)。入力スケールオクルージョン及びモーション認識損失関数は、深度モデルをトレーニングするために使用する損失値を計算する。損失関数は、合成フレームと入力画像との間のピクセル当たりの測光再構成誤差の計算を含む。損失関数はまた、外観マッチング損失モジュール190で前述したように、別の画像に時間的に隣接する単眼ビデオからの時間画像から投影された2つの合成フレーム間の最小測光再構成誤差を考慮し得る。(例えば、スケーリングモジュール195によって)アップサンプリングされた深度特徴は、また、外観マッチング損失の計算に影響する合成フレームの生成中に使用され得る。損失関数は、また、損失値を計算するときに静的特徴を割り引くマスキングモジュール197によって生成されたマスクを実装し得る。
【0073】
深度推定トレーニングシステム170は、ピクセル当たりの測光再構成誤差を最小化することによって深度モデルをトレーニングする(570)。3つの時間画像のセットについて、深度推定トレーニングシステム170は、第2の時間画像からの第1の合成フレーム及び第2の合成フレームの差分に基づいて、ピクセル当たりの最小測光再構成誤差を識別する。追加の実施形態では、深度推定トレーニングシステム170は、合成フレーム及び画像に基づいて、深度推定モデルに対する全体損失を定義することができる。全体損失は、例えば、一対の画像上の測光再構成誤差の平均、複数又は全ての入力画像上の測光再構成誤差の平均などとして定義され得る。測光再構成誤差(又は全体損失)を最小化する際に、深度推定トレーニングシステム170は、深度モデルのパラメータを調整する。ポーズモデルのパラメータは、測光再構成誤差を最小化するための一部として調整され得る。一実施形態では、深度推定トレーニングシステム170は、測光再構成誤差を2つの差分間の絶対最小値として計算する。一実施形態では、外観マッチング損失モジュール190は、画像合成モジュール180と並行して測光再構成誤差を最小化する。別の実施形態では、スケーリングモジュール195は、様々な解像度で画像の深度マップをスケーリングして、深度モデル内の各層のパラメータを調整する。別の実施形態では、マスキングモジュール197は、静的特徴を有する1つ以上の領域を識別し、測光再構成誤差を計算するときにそれらの領域をマスキングする。
【0074】
<深度推定モデル>
図6は、1つ以上の実施形態による、深度推定モデルを使用する一般的なプロセス600を説明するフローチャートである。プロセス600は、入力画像が与えられた場合の深度マップをもたらす。プロセス600は、トレーニングされた深度推定モデルを有するクライアントデバイスによって遂行され得る。クライアントデバイスは、汎用コンピューティングデバイスであってもよく、また、カメラを有していてもよい。いくつかの実施形態では、クライアントデバイスは、上記図1図3に記載されている並行現実ゲームに導入される。以下の説明はクライアントデバイスのコンテキストの範囲内であるが、プロセス600は他のコンピューティングデバイス上でも実行され得る。
【0075】
方法は、シーンの画像を受信するステップ610を含む。シーンの画像は、クライアントデバイスの構成要素であるか、又はクライアントデバイスの外部にあるカメラによってキャプチャされ得る。並行現実ゲームのコンテキストにおいて、シーンは、仮想世界における仮想位置にマッピングされ得る現実世界の位置であり得る。シーンの画像は、その画像をキャプチャしたカメラの幾何学的特性に対応する内部値を有してもよい。画像は、カメラによってキャプチャされた単一の画像であり得る。あるいは、画像は、カメラによってキャプチャされたビデオからのフレームであり得る。
【0076】
方法は、シーンの画像をトレーニングされた深度推定モデルに入力するステップ620を含む。深度推定モデルは、深度推定システム170によって、例えば、図5のプロセス500を介してトレーニングされ得る。深度推定モデルは、シーンの画像と、任意にその画像の内部値も受信する。
【0077】
方法は、トレーニングされた深度推定モデルによって、シーンの画像に対応するシーンの深度マップを生成するステップ630を含む。深度マップの各ピクセルは、シーンの画像内の対応するピクセルにおける面の相対距離を表す深度値を有する。深度推定では、シーンの画像を受信し、図5に従ってトレーニングされたパラメータに基づいて深度マップを出力する。
【0078】
方法は、シーンの深度マップに基づいて仮想コンテンツを生成するステップ640を含む。仮想コンテンツは、例えば、ゲームデータベース115に記憶されている、並行現実ゲームのコンテンツから得ることができる。生成される仮想コンテンツは、シーンの画像に拡張できる拡張現実コンテンツであり得る。例えば、シーンの深度を理解した上でシーン内を移動できる仮想キャラクタが生成される。一例では、仮想キャラクタがユーザに向かって通りを歩いているくるにつれて、仮想キャラクタのサイズが大きくなり得る。別の例では、仮想キャラクタは、木の後ろに隠れることができ、そこで仮想キャラクタの一部が木によって遮られる。
【0079】
方法は、仮想コンテンツで拡張されたシーンの画像を表示するステップ650を含む。クライアントデバイスは、電子ディスプレイを含む。電子ディスプレイは、拡張仮想コンテンツと共に、カメラによってキャプチャされたビデオの一定のフィードを提供できる。
【0080】
上記の例に従うと、並行現実ゲームは、目標として仮想キャラクタとの相互作用を提供することができる。仮想キャラクタと相互作用するために、モバイルデバイスのユーザは、仮想キャラクタをカメラの視野内に維持しながら、当該ユーザのモバイルデバイスを動かさなければならない場合がある。ユーザがモバイルデバイスを動かすと、モバイルデバイスは、ユーザのモバイルデバイスの動きに応じてシーンが変化するにつれて、シーンの深度情報を反復的に生成するために使用することができるビデオ又は画像データを連続的にキャプチャすることができる。モバイルデバイスは、生成された深度情報に基づいて仮想キャラクタを更新しながら、ディスプレイ上のビデオフィードを更新することができる。その結果、ユーザは、仮想キャラクタを、シーン内で常に適切に相互作用しているものとして、例えば、物体を貫いて歩いていないもの、または、ある部分を遮る物体なしに遮られている部分を有さないものなどとして知覚するであろう。
【0081】
<コンピューティングシステムの例>
図7は、一実施形態による、コンピューティングデバイスの例示的なアーキテクチャである。図7は、本明細書に記載される1つ以上のエンティティの一部又は全部として使用されるコンピュータの物理的コンポーネントを示す大まかなブロック図を示しているが、一実施形態によれば、コンピュータは、図7に提供されるコンポーネントの追加、削減、又は変形を含んでいてもよい。図7は、コンピュータ700を示しているが、この図は、本明細書に記載される実施形態の構造的概略図としてではなく、コンピュータシステムに存在し得る種々の特徴の機能的説明として意図されている。実際には、また、当業者によって認識されるように、別々に示されたアイテムを組み合わせることができ、いくつかのアイテムを分離することもできる。
【0082】
図7には、チップセット704に結合された少なくとも1つのプロセッサ702が図示されている。また、チップセット704に結合されているのは、メモリ706、ストレージデバイス708、キーボード710、グラフィックアダプタ712、ポインティングデバイス714、及びネットワークアダプタ716である。ディスプレイ718は、グラフィックアダプタ712に結合されている。一実施形態では、チップセット704の機能は、メモリコントローラハブ720及びI/Oハブ722によって提供される。別の実施形態では、メモリ706は、チップセット704の代わりにプロセッサ702に直接結合されている。いくつかの実施形態では、コンピュータ700は、これらの構成要素を相互接続するための1つ以上の通信バスを含む。1つ以上の通信バスは、必要に応じて、システム構成要素間の通信を相互接続及び制御する回路(チップセットと呼ばれることもある)を有していてもよい。
【0083】
ストレージデバイス708は、ハードドライブ、コンパクトディスク読み取り専用メモリ(CD-ROM)、DVD、又はソリッドステートストレージデバイス、又はその他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、又はその他の磁気ストレージデバイス、磁気ディスクストレージデバイス、光ディスクストレージデバイス、フラッシュメモリデバイス、又はその他の不揮発性ソリッドステートストレージデバイスなどの任意の非一時的コンピュータ可読記憶媒体である。このようなストレージデバイス708は、永続メモリと呼ばれることもある。ポインティングデバイス714は、マウス、トラックボール、又はその他のタイプのポインティングデバイスであり、キーボード710と組み合わせて使用されて、コンピュータ700にデータを入力する。グラフィックアダプタ712は、画像及びその他の情報をディスプレイ718に表示する。ネットワークアダプタ716は、コンピュータ700をローカル又はワイドエリアネットワークに結合する。
【0084】
メモリ706は、プロセッサ702によって使用される命令及びデータを保持する。メモリ706は、非永続メモリであり、その例としては、DRAM、SRAM、DDR RAM、ROM、EEPROM、フラッシュメモリなどの高速ランダムアクセスメモリが挙げられる。
【0085】
当技術分野で知られているように、コンピュータ700は、図に示されるものとは異なる及び/又は他の構成要素を有することができる。更に、コンピュータ700は、特定の図示された構成要素を有していなくてもよい。一実施形態では、サーバとして機能するコンピュータ700は、キーボード710、ポインティングデバイス714、グラフィックアダプタ712、及び/又はディスプレイ718を有していなくてもよい。更に、ストレージデバイス708は、(例えば、記憶領域ネットワーク(SAN)内に組み込まれているものとして)コンピュータ700からローカル及び/又は遠隔であり得る。
【0086】
当技術分野で知られているように、コンピュータ700は、本明細書に記載の機能を提供するためのコンピュータプログラムモジュールを実行するように適合されている。本明細書で使用される場合、「モジュール」という用語は、特定の機能を提供するために利用されるコンピュータプログラムロジックを指す。したがって、モジュールは、ハードウェア、ファームウェア、及び/又はソフトウェアで実装することができる。一実施形態では、プログラムモジュールは、ストレージデバイス708に記憶され、メモリ706にロードされ、プロセッサ702によって実行される。
【0087】
<その他の考慮事項>
実施形態の追加的な議論は、本明細書ではその全体が参照により組み込まれている「Digging Into Self-Supervised Monocular Depth Estimation」と題された明細書の付録に記載されている。
【0088】
上記の説明のいくつかの部分は、アルゴリズム的プロセス又は動作の観点から実施形態を説明している。これらのアルゴリズムの説明及び表現は、データ処理技術の当業者によって一般的に使用され、彼らの作業の内容を効果的に当業者に伝える。これらの動作は、機能的、計算的、又は論理的に説明されているが、プロセッサ又は同等の電気回路、マイクロコードなどによって実行するための命令を含むコンピュータプログラムによって実装されると理解される。更に、これらの機能動作の配置をモジュールと呼ぶことは、一般性を失うことなく、時として便利であることも証明されている。
【0089】
本明細書で使用される場合、「一実施形態」又は「実施形態」への言及は、実施形態に関連して説明される特定の要素、特徴、構造、又は特性が少なくとも1つの実施形態に含まれることを意味する。本明細書の各所に記載されている「一実施形態では」という語句は、必ずしも同一の実施形態を指すとは限らない。
【0090】
いくつかの実施形態は、それらの派生物と共に「結合された」及び「接続された」という表現を使用して説明され得る。これらの用語は、相互の同義語として意図されていないことを理解されたい。例えば、いくつかの実施形態は、2つ以上の要素が互いに直接物理的又は電気的に接触していることを示すために「接続された」という用語を使用して説明され得る。別の例では、いくつかの実施形態は、2つ以上の要素が直接物理的に又は電気的に接触にあることを示すために「結合された」という用語を使用して説明され得る。ただし、「結合された」という用語は、2つ以上の要素が互いに直接接触していないが、それでも互いに協力又は相互作用していることを意味する場合もある。実施形態は、この文脈に限定されない。
【0091】
本明細書で使用される場合、「含む」、「含み」、「含んで」、「有する」、「有し」という用語、又はそれらの他の変形は、非排他的な包含を網羅することを意図している。例えば、要素のリストを含むプロセス、方法、物品、又は装置は、必ずしもそれらの要素のみに限定されるわけではなく、そのようなプロセス、方法、物品、又は装置に明示的にリストされていない、又は固有ではない他の要素を含み得る。更に、明示的に反対の記載がない限り、「又は」は包含的な「又は」を意味し、排他的な「又は」を意味するものではない。例えば、「条件A又は条件B」は、Aが真である(又は存在する)かつBが偽である(又は存在しない)こと、Aが偽であり(又は存在しない)かつBが真である(又は存在する)こと、並びにA及びBがともに真である(又は存在する)ことのいずれかによって満たされる。
【0092】
更に、「a」又は「an」の使用は、実施形態の要素及び構成要素を説明するために使用される。これは単に便宜のためであり、開示の一般的な意味を与えるためである。この記述は、それ以外の意味であることが明らかな場合を除き、1つ又は少なくとも1つを含み、単数形は複数形も含むと読み取るべきである。
【0093】
本開示を読むと、当業者は、システムのための更に別の構造的及び機能的設計、並びに真正なビジネスに対応するオンラインサービスプロバイダとのアカウントを検証するためのプロセスを理解するであろう。したがって、特定の実施形態及び用途が例示及び記載されているが、説明された主題は、本明細書に開示されている正確な構造及び構成要素に限定されず、当業者に明らかな種々の修正、変更及び変形が、開示されている方法及び装置の構成、動作及び詳細においてなされ得ることを理解されたい。保護の範囲は、以下のクレームによってのみ制限されるべきである。
図1
図2
図3
図4
図5
図6
図7