(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-08
(45)【発行日】2022-11-17
(54)【発明の名称】深度ヒントを使用した深度推定モデルの自己教師ありトレーニング
(51)【国際特許分類】
G06T 7/55 20170101AFI20221109BHJP
G06T 7/00 20170101ALI20221109BHJP
【FI】
G06T7/55
G06T7/00 350B
(21)【出願番号】P 2021203338
(22)【出願日】2021-12-15
(62)【分割の表示】P 2020560813の分割
【原出願日】2020-05-02
【審査請求日】2021-12-28
(32)【優先日】2019-05-02
(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)【参考文献】
【文献】国際公開第2018/046964(WO,A1)
【文献】特開2016-148588(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06T 7/00- 7/90
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実行される方法であって、
シーンの画像を受信するステップと、
プロセスによってトレーニングされた深度推定モデルに画像を入力するステップであって、当該プロセスが、
各
疑似立体画像ペアが第1の画像と第2の画像とを含む複数の
疑似立体画像ペアを含むトレーニング画像データにアクセスするステップであって、
各画像ペアについて、
前記深度推定モデルにより、前記第1の画像のピクセルの深度予測値を生成するステップと、
前記第1の画像の
カメラポーズヒントを取得するステップと、
前記第1の画像の前記ピクセルの前記深度予測値
を用いて前記第2の画像を前記第1の画像に投影して、モデル合成フレームを生成するステップと、
前記第1の画像の
前記カメラポーズヒントを用いて前記第2の画像を前記第1の画像に投影して、ヒント付き合成フレームを生成するステップと、
前記モデル合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの比較に基づいて、
前記第1の画像の前記ピクセルに対応する一次損失値を計算するステップと、
前記ヒント付き合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの比較に基づいて、
前記第1の画像の前記ピクセルに対応するヒント付き損失値を計算するステップと、
前記画像ペアの全体損失を計算するステップであって、前記第1の画像の所与のピクセル
に対応する前記ヒント付き損失値が前記所与のピクセルに対応する前記一次損失値よりも小さいことに応じて、前記所与のピクセルに対応する前記一次損失値と、
前記所与のピクセルの深度予測値と前記カメラポーズヒントを用いて決定される前記所与のピクセルの深度値とを用いて決定される教師あり損失値と
、を用いて、前記全体損失に対する前記所与のピクセルの寄与を決定することを含むステップと、
前記
疑似立体画像ペアの前記全体損失に基づいて、前記深度推定モデルのパラメータを調整するステップと、を含むプロセスであるステップと、
前記深度推定モデルにより、前記シーンの前記画像に対応する前記シーンの深度マップを生成ステップと、
を含む方法。
【請求項2】
前記第1の画像の所与のピクセルに対応する前記ヒント付き損失値が前記所与のピクセルに対応する前記一次損失値よりも大きいことに応じて、前記全体損失に対する前記所与のピクセルの前記寄与を前記教師あり損失値に含めないステップを含む、請求項1に記載の方法。
【請求項3】
前記深度推定モデルのトレーニングのための前記プロセスが、
前記第1の画像の前記ピクセルの深度ヒント値を取得するステップと、
前記第1の画像の前記ピクセルの前記深度ヒント値に基づいて前記第2の画像を前記第1の画像に投影して、追加のヒント付き合成フレームを生成するステップと、
前記追加のヒント付き合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの比較に基づいて、前記深度ヒント値に対する追加のヒント付き損失値を計算するステップと、
前記追加のヒント付き損失値を用いて、前記画像ペアの前記全体損失を計算するステップと、
を含む、請求項1に記載の方法。
【請求項4】
前記第1の画像および前記ヒント付き合成フレームに対して前記カメラポーズヒントを用いて生成された視差マップを用いて、前記所与のピクセルの前記深度値を決定するステップを含む、請求項1に記載の方法。
【請求項5】
前記第1の画像及び前記第2の画像が単一のカメラによってキャプチャされた時間的に別個のフレームである、請求項1に記載の方法。
【請求項6】
前記深度予測値に基づいて前記第2の画像を前記第1の画像に投影するステップが、さらに前記第1の画像と前記第2の画像との間のポーズに基づく、請求項1に記載の方法。
【請求項7】
深度予測値によるピクセルでの前記一次損失値が、前記モデル合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの間の差に基づき、深度ヒント値による前記ピクセルでの前記ヒント付き損失値が、前記ヒント付き合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの間の差に基づく、請求項1に記載の方法。
【請求項8】
前記全体損失に対する所与のピクセルの前記寄与は、前記所与のピクセルでの前記一次損失値が前記ヒント付き損失値以下である場合、前記所与のピクセルの前記一次損失値であり、
前記全体損失に対する前記所与のピクセルの前記寄与は、前記所与のピクセルでの前記ヒント付き損失値が前記一次損失値よりも小さい場合、前記所与のピクセルの前記一次損失値と、前記所与のピクセルでの
前記深度予測値
および前記カメラポーズヒントを用いて決定された前記深度値の間の差と
、の合計である、請求項1に記載の方法。
【請求項9】
前記
カメラポーズヒントは、前記画像ペアを入力し、前記画像ペアに基づいて前記
カメラポーズヒントを出力するように構成された
ポーズ推定モデルによって生成される、請求項1に記載の方法。
【請求項10】
コンピュータによって実行される、深度推定モデルをトレーニングする方法であって、
各
疑似立体画像ペアが第1の画像と第2の画像とを含む複数の
疑似立体画像ペアを含むトレーニング画像データにアクセスするステップであって、
各画像ペアについて、
前記深度推定モデルにより、前記第1の画像のピクセルの深度予測値を生成するステップと、
前記第1の画像の
カメラポーズヒントを取得するステップと、
前記第1の画像の前記ピクセルの前記深度予測値
を用いて、前記第2の画像を前記第1の画像に投影してモデル合成フレームを生成するステップと、
前記第1の画像の
前記カメラポーズヒントを用いて、前記第2の画像を前記第1の画像に投影してヒント付き合成フレームを生成するステップと、
前記モデル合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの比較に基づいて、
前記第1の画像の前記ピクセルに対応する一次損失値を計算するステップと、
前記ヒント付き合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの比較に基づいて、
前記第1の画像の前記ピクセルに対応するヒント付き損失値を計算するステップと、
前記画像ペアの全体損失を計算するステップであって、前記第1の画像の所与のピクセル
に対応する前記ヒント付き損失値が前記所与のピクセルに対応する前記一次損失値よりも小さいことに応じて、前記所与のピクセルに対応する前記一次損失値と、
前記所与のピクセルの深度予測値と前記カメラポーズヒントを用いて決定される前記所与のピクセルの深度値とを用いて決定される教師あり損失値と
、を用いて、前記全体損失に対する前記所与のピクセルの寄与を決定することを含むステップと、
前記
疑似立体画像ペアの前記全体損失に基づいて、前記深度推定モデル
のパラメータを調整するステップと、を含む、
方法。
【請求項11】
前記第1の画像の所与のピクセルに対応する前記ヒント付き損失値が前記所与のピクセルに対応する前記一次損失値よりも大きいことに応じて、前記全体損失に対する前記所与のピクセルの前記寄与を前記教師あり損失値に含めないステップを含む、請求項10に記載の方法。
【請求項12】
前記深度推定モデルをトレーニングするためのプロセスが、
前記第1の画像の前記ピクセルの深度ヒント値を取得するステップと、
前記第1の画像の前記ピクセルの前記深度ヒント値に基づいて前記第2の画像を前記第1の画像に投影して、追加のヒント付き合成フレームを生成するステップと、
前記追加のヒント付き合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの比較に基づいて、前記深度ヒント値に対する追加のヒント付き損失値を計算するステップと、
前記追加のヒント付き損失値を用いて、前記画像ペアの前記全体損失を計算するステップと、
を含む請求項10に記載の方法。
【請求項13】
前記第1の画像および前記ヒント付き合成フレームに対して前記カメラポーズヒントを用いて生成された視差マップを用いて、前記所与のピクセルの前記深度値を決定するステップを含む、請求項10に記載の方法。
【請求項14】
前記第1の画像及び前記第2の画像が単一のカメラによってキャプチャされた時間的に別個のフレームである、請求項10に記載の方法。
【請求項15】
前記深度予測値に基づいて前記第2の画像を前記第1の画像に投影するステップが、さらに前記第1の画像と前記第2の画像との間のポーズに基づく、請求項10に記載の方法。
【請求項16】
深度予測値によるピクセルでの前記一次損失値が、前記モデル合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの間の差に基づき、深度ヒント値による前記ピクセルでの前記ヒント付き損失値が、前記ヒント付き合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの間の差に基づく、請求項10に記載の方法。
【請求項17】
前記全体損失に対する所与のピクセルの前記寄与は、前記所与のピクセルでの前記一次損失値が前記ヒント付き損失値以下である場合、前記所与のピクセルの前記一次損失値であり、
前記全体損失に対する前記所与のピクセルの前記寄与は、前記所与のピクセルでの前記ヒント付き損失値が前記一次損失値よりも小さい場合、前記所与のピクセルの前記一次損失値と、前記所与のピクセルでの
前記深度予測値
および前記カメラポーズヒントを用いて決定される前記深度値の差と
、の合計である、請求項10に記載の方法。
【請求項18】
前記
カメラポーズヒントは、前記画像ペアを入力し、前記画像ペアに基づいて前記
カメラポーズヒントを出力するように構成された
ポーズ推定モデルによって生成される、請求項10に記載の方法。
【請求項19】
命令を記憶する非一時的なコンピュータ可読記憶媒体であって、
前記命令は、プロセッサによって実行されると、前記プロセッサに、
プロセスによってトレーニングされた深度推定モデルに画像を入力するステップであって、前記プロセスが、
各
疑似立体画像ペアが第1の画像と第2の画像とを含む複数の
疑似立体画像ペアを含むトレーニング画像データにアクセスするステップであって、
各画像ペアについて、
前記深度推定モデルにより、前記第1の画像のピクセルの深度予測値を生成するステップと、
前記第1の画像の
カメラポーズヒントを取得するステップと、
前記第1の画像の前記ピクセルの前記深度予測値
を用いて、前記第2の画像を前記第1の画像に投影してモデル合成フレームを生成するステップと、
前記第1の画像の前記ピクセルの
前記カメラポーズヒントを用いて、前記第2の画像を前記第1の画像に投影してヒント付き合成フレームを生成するステップと、
前記モデル合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの比較に基づいて、
前記第1の画像の前記ピクセルに対応する一次損失値を計算するステップと、
前記ヒント付き合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの比較に基づいて、
前記第1の画像の前記ピクセルに対応するヒント付き損失値を計算するステップと、
前記画像ペアの全体損失を計算するステップであって、前記第1の画像の所与のピクセル
に対応する前記ヒント付き損失値が前記所与のピクセルに対応する前記一次損失値よりも小さいことに応じて、前記所与のピクセルに対応する前記一次損失値と、
前記所与のピクセルの深度予測値と前記カメラポーズヒントを用いて決定される前記所与のピクセルの深度値とを用いて決定される教師あり損失値と
、を用いて、前記全体損失に対する前記所与のピクセルの寄与を決定することを含むステップと
、
前記
疑似立体画像ペアの前記全体損失に基づいて、前記深度推定モデル
のパラメータを調整するステップと、
を含むプロセスであるステップと、
前記深度推定モデルにより
、シーンの前記画像に対応する前記シーンの深度マップを生成ステップと、
を含む操作を実行させる命令を記憶するコンピュータ可読記憶媒体。
【請求項20】
前記深度推定モデルをトレーニングするための前記プロセスが、
前記第1の画像の前記ピクセルの深度ヒント値を取得するステップと、
前記第1の画像の前記ピクセルの前記深度ヒント値に基づいて前記第2の画像を前記第1の画像に投影して、追加のヒント付き合成フレームを生成するステップと、
前記追加のヒント付き合成フレームの前記ピクセルと前記第1の画像の前記ピクセルとの比較に基づいて、前記深度ヒント値に対する追加のヒント付き損失値を計算するステップと、
前記追加のヒント付き損失値を用いて、前記画像ペアの前記全体損失を計算するステップと、
を含む請求項19に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
<関連出願への相互参照>
本出願は、2019年5月2日に出願された米国仮出願第62/842,531号の利益を主張するものであり、あらゆる目的のためにその全体が参照により組み込まれる。
【0002】
説明される主題は、一般に、単色入力画像から深度マップを推定することに関し、特に、別のモデルによって与えられる深度ヒントを使用してトレーニングされる、深度マップを推定するための機械学習モデルのトレーニングに関する。
【背景技術】
【0003】
深度検知は、ナビゲーションとシーン理解の両方において応用される。多くの方法は、トレーニングされたモデル又はネットワークを使用して、単色入力画像から深度マップを決定する。深度推定システムをトレーニングするために異なる種類のトレーニングデータを使用するいくつかの方法がある。深度推定システムは、カメラによって撮影された同じシーンの画像と対にされた、環境内の物体についてのグラウンドトゥルース深度を確立するために検出及び測距システム(つまり、無線検出及び測距(RADAR:radio detecting and ranging)、光検出及び測距(LIDAR:light detection and ranging)など)を使用してトレーニングされ得る。検出及び測距システムは、物体の深度のグラウンドトゥルースを提供することができるが、多くの異なる環境の深度を検知するために検出及び測距システムを絶えず利用することは、時間及びリソースにおいて費用がかかる可能性がある。更に、検出及び測距システムは、そのシステムによる検出を不可能とさせる物質特性を有し得るいくつかの物体(例えば、反射物体)の深度を決定することができない。
【0004】
深度推定システムをトレーニングする別の方法は、同じシーンの立体画像ペアを利用する。単一の時間インスタンスにおいて立体画像対をキャプチャすることは、同じシーンに焦点を合わせているが、ある程度離れて位置する2つのカメラを使用する必要がある。深度推定システムは、立体画像ペアの一方の立体画像から他方の立体画像に投影することによって動作する。一方から他方に投影するために、深度推定システムは、視差(スケーリングされた深度の逆数)と、2つの画像間のポーズ、すなわち、立体画像ペアを撮影するために使用される2つのカメラの視点間の変換行列とに加えて、現在の立体画像を考慮する。キャプチャされた立体画像と比較して投影の測光再構成誤差を最小化することで、深度推定システムはシーンの深度を決定できる。
【0005】
他の方法は、刻々と変化するシーンの単眼ビデオデータを利用して深度推定システムをトレーニングする。深度推定システムは、単眼ビデオデータにおける1つの時間画像から次の時間画像へと、測光再構成誤差を最小化しながら投影することによってトレーニングを行う。しかしながら、そのようなシステムは、深度マップ及び深度マップの境界の周りにアーティファクトをもたらす、ある時間画像から別の時間画像に出入りする物体を不正確に考慮し得る。更に、従来のシステムは、現在、深度マップをアップサンプリングする前に深度マップを決定するために低解像度画像を入力するが、これは深度アップサンプリングアーティファクトを生じやすい。
【発明の概要】
【発明が解決しようとする課題】
【0006】
測光誤差は、L1距離、L2距離、構造的非類似度(DSSIM)距離、又はこれらの距離の組み合わせなど、様々な測定基準を用いて測定することができる。自己教師ありトレーニングの欠点は、特に複数の深度値で測光損失が低くなる可能性がある場合に、最適な深度値を見つけることがしばしば困難であることである。その結果、トレーニングが難しくなり、予測の精度が低下する可能性がある。
【課題を解決するための手段】
【0007】
本開示は、モデルの現在の予測の代替として、深度ヒントを使用して深度推定モデルをトレーニングすることについて説明する。あるピクセルの深度ヒントが、トレーニングされたモデルからの当該ピクセルの深度出力よりも良好な再投影(例えば、より低い測光再構成誤差)をもたらす場合、深度予測とヒントとを使用して(例えば、モデルからの出力と組み合わせて)、損失に対するピクセルの寄与を計算する。深度ヒントがより良好な再投影をもたらさない場合、トレーニングでは深度ヒントは無視され、モデルの深度出力から損失に対するピクセルの寄与が決定される。トレーニングプロセスは、損失に応じて(例えば、バックプロパゲーションを使用して)モデルを更新する。これらの深度ヒントを使用すると、従来のトレーニングプロセスを単独で使用するよりも、トレーニングプロセスのパフォーマンスを向上することができる。深度ヒントは、代替的にトレーニングされた(例えば、外部システムによってトレーニングされた)深度推定モデルから取得され得る。
【0008】
トレーニングシステムは、トレーニング画像データを使用した自己教師ありトレーニングアルゴリズムに依存している。自己教師ありトレーニングは、教師ありトレーニングとは対照的に、グラウンドトゥルース深度を必要としない。トレーニング画像データは、画像ペアに分割できる。画像ペアは、双眼カメラシステムによってキャプチャされた真の立体画像ペア、及び/又は少なくとも1つのカメラを備えたシステムによってキャプチャされた単眼ビデオデータの時間的に別個のフレームからの疑似立体画像ペアであり得る。トレーニングシステムは、ある画像ペアから第1のトレーニング画像を入力して、第1のトレーニング画像の初期深度予測を決定する。トレーニングシステムは、当該画像ペアの第2のトレーニング画像を当該画像ペアの第1のトレーニング画像に投影して、少なくとも第1のトレーニング画像の深度予測及び2つのトレーニング画像間のポーズに基づいて合成フレームを生成する。トレーニングシステムは、第2のトレーニング画像を第1のトレーニング画像に再度投影して、第1のトレーニング画像の深度予測ではなく、深度ヒントに基づいてヒント付き合成フレームを生成する。ポーズは、トレーニング画像を撮影するために使用されるカメラの既知の位置、例えば、双眼カメラシステムにおけるカメラの既知の配置から知ることができる。あるいは、ポーズは、例えば、時間的に隣接するフレームが疑似立体画像ペアを構成する単眼ビデオデータの場合には、ポーズ推定モデル又は深度-ポーズハイブリッドモデルによって推定され得る。
【0009】
投影プロセスの精度は、少なくとも第1のトレーニング画像の深度予測の精度に基づく。したがって、一次損失は、合成フレームとそれに対応するトレーニング画像との間の測光再構成誤差に従って定義され得る。ヒント付き損失は、ヒント付き合成フレームとそれに対応するトレーニング画像との間の測光再構成誤差に従って定義され得る。画像ペアの全体損失は、全てのピクセルにわたる損失の寄与を合計する。上記のように、トレーニングシステムは、ピクセルごと一次損失とヒント付き損失とを比較し、全体損失に対するそのピクセルによる寄与を決定し得る。ピクセルの一次損失値がヒント付き損失値以下の場合、トレーニングシステムは深度ヒントからのヒント付き損失を無視し、全体損失への寄与はそのピクセルの一次損失値となる。ピクセルのヒント付き損失値が一次損失値よりも小さい場合、全体損失への寄与は、一次損失値と、そのピクセルの深度予測値とそのピクセルの深度ヒントの間の教師あり深度損失に基づく。一実施形態では、寄与は一次損失値の合計であり、教師あり深度損失は、そのピクセルでのモデルの深度予測と深度ヒントとの間の絶対差である。
【0010】
立体画像データを用いたトレーニングの実施形態では、深度ヒントを使用して、各立体画像を立体画像ペアにおける他の立体画像に投影して、ヒント付き合成フレームを生成する。深度ヒントは、代替的にトレーニングされた深度推定モデル、例えば、立体画像を入力し、単一の深度マップを出力するように構成されたステレオ深度モデルから取得され得る。深度ヒントは、マップを生成するとともに、少なくとも画像データ及びいくつかの位置決めデータ(グローバル座標、加速度データ、走行距離データなど)に基づいて、生成されたマップ内のクライアントデバイスを位置付けるように構成されたsimultaneous-localization-and-mapping(SLAM)モジュールから取得され得る。
【0011】
単眼ビデオデータを用いたトレーニングの実施形態では、深度ヒント及び/又はポーズヒントを、ある時間画像を別の時間画像に投影する際に使用して、ヒント付き合成フレームを生成することができる。深度ヒントは、上述のようにして取得され得る。ポーズヒントは、代替的にトレーニングされたポーズ推定モデルから取得され得る。
【図面の簡単な説明】
【0012】
【
図1】
図1は、1つ以上の実施形態による、ネットワーク化されたコンピューティング環境を例示している。
【0013】
【
図2】
図2は、1つ以上の実施形態による、現実世界に並行する地理を有する仮想世界の表示を示している。
【0014】
【
図3】
図3は、1つ以上の実施形態による、並行現実ゲームの例示的なゲームインターフェースを示している。
【0015】
【
図4】
図4は、1つ以上の実施形態による、立体画像データ及び深度ヒントを用いて深度推定モデルをトレーニングする一般的なプロセスを説明するフローチャートである。
【0016】
【
図5】
図5は、1つ以上の実施形態による、深度ヒントを使用してトレーニングされた深度推定モデルの拡張現実アプリケーションにおける使用例を説明するフローチャートである。
【0017】
【
図6】
図6は、1つ以上の実施形態による、深度推定モデルのトレーニング又は適用に使用するのに適したコンピュータシステムの一例を示している。
【0018】
図及び以下の説明は、例示のみを目的として特定の実施形態を説明している。当業者は、以下の説明から、記載された原理から逸脱することなく、構造及び方法の代替の実施形態を使用できることを容易に認識するであろう。ここで、いくつかの実施形態を参照し、その例を添付の図に示す。
【発明を実施するための形態】
【0019】
<例示的な位置ベースの並行現実ゲームシステム>
現実世界におけるプレーヤーの動き及び行動が仮想世界における行動に影響を及ぼし、逆もまた同様であるように、現実世界の地理の少なくとも一部分に並行する仮想世界の地理における拡張現実コンテンツを含む、並行現実ゲームのコンテキストにおいて、様々な実施形態が説明される。本明細書で提供される開示を使用する当業者は、記載された主題が、画像データから深度情報を決定することが望ましい他の状況に適用可能であることを理解するであろう。更に、コンピュータベースのシステムに固有の柔軟性は、システムの構成要素間で、非常に様々な構成、組み合わせ、及びタスクと機能の分割を可能にする。例えば、本開示の態様によるシステム及び方法は、単一のコンピューティングデバイスを使用して、又は複数のコンピューティングデバイスにわたって(例えば、コンピュータネットワークに接続されて)実装することができる。
【0020】
図1は、1つ以上の実施形態による、ネットワーク化されたコンピューティング環境100を例示している。ネットワーク化されたコンピューティング環境100は、現実世界に並行な地理を有する仮想世界におけるプレーヤーの相互作用を提供する。特に、現実世界の地理的領域は、仮想世界の対応する領域に直接リンク又はマッピングされ得る。プレーヤーは、現実世界における様々な地理的位置に移動することにより、仮想世界を動き回ることができる。例えば、現実世界におけるプレーヤーの位置を追跡して、仮想世界におけるプレーヤーの位置を更新するために使用できる。典型的には、現実世界におけるプレーヤーの位置は、プレーヤーが仮想世界と相互作用しているクライアントデバイス120の位置を見つけ、プレーヤーが同じ(又はほぼ同じ)位置にあると仮定することによって決定される。例えば、様々な実施形態において、現実世界におけるプレーヤーの位置が、仮想世界における仮想要素の仮想位置に対応する現実世界位置の閾値距離(例えば、10メートル、20メートルなど)内にある場合、プレーヤーは、その仮想要素と相互作用することができる。便宜上、様々な実施形態が「プレーヤーの位置」を参照して説明されるが、当業者は、そのような参照がプレーヤーのクライアントデバイス120の位置を参照し得ることを理解するであろう。
【0021】
次に、
図2を参照すると、一実施形態による、並行現実ゲームのプレーヤーのためのゲームボードとして機能することができる現実世界200に並行する仮想世界210の概念図が示されている。図示のように、仮想世界210は、現実世界200の地理と並行する地理を含むことができる。特に、現実世界200における地理的領域又は空間を定義する座標の範囲は、仮想世界210における仮想空間を定義する座標の対応する範囲にマッピングされる。現実世界200における座標の範囲は、町、地域、都市、キャンパス、場所、国、大陸、地球全体、又は他の地理的領域に関連付けることができる。地理的座標の範囲内の各地理的座標は、仮想世界の仮想空間内の対応する座標にマッピングされる。
【0022】
仮想世界210におけるプレーヤーの位置は、現実世界200におけるプレーヤーの位置に対応する。例えば、現実世界200の位置212に位置するプレーヤーAは、仮想世界210において対応する位置222を有する。同様に、現実世界の位置214に位置するプレーヤーBは、仮想世界において対応する位置224を有する。プレーヤーが現実世界の地理的座標の範囲内を動き回るとき、プレーヤーはまた、仮想世界210内の仮想空間を定義する座標の範囲内を動き回る。特に、プレーヤーが携帯するモバイルコンピューティングデバイスに関連付けられた測位システム(例えば、GPSシステム)を使用して、プレーヤーが現実世界の地理的座標の範囲を進むときのプレーヤーの位置を追跡することができる。現実世界200におけるプレーヤーの位置に関連付けられたデータは、仮想世界210内の仮想空間を定義する座標の対応する範囲におけるプレーヤーの位置を更新するために使用される。このようにして、プレーヤーは、現実世界200における特定の個別の位置で位置情報をチェックインしたり定期的に更新したりすることなく、現実世界200内の地理的座標の対応する範囲間を移動するだけで、仮想世界210内の仮想空間を定義する座標の範囲内の連続的な追跡をしつつ進むことができる。
【0023】
位置ベースのゲームは、プレーヤーが仮想世界の様々な仮想位置に散在する様々な仮想要素及び/又は仮想物体に移動及び/又は相互作用することを要求する複数のゲーム目標を含むことができる。プレーヤーは、現実世界において仮想要素又は物体に対応する位置に移動することで、これらの仮想位置に移動できる。例えば、プレーヤーが現実世界を連続的に進むとき、プレーヤーが並行仮想世界も連続的に進むように、測位システムは、プレーヤーの位置を連続的に追跡することができる。そして、プレーヤーは、特定の位置にある様々な仮想要素及び/又は物体と相互作用して、1つ以上のゲーム目標を達成又は実行できる。
【0024】
例えば、ゲーム目標は、仮想世界210内の様々な仮想位置に位置する仮想要素230と相互作用するプレーヤーを有する。これらの仮想要素230は、現実世界200内のランドマーク、地理的位置、又は物体240にリンクされ得る。現実世界のランドマーク又は物体240は、美術品、記念碑、建物、商業施設、図書館、美術館、又は他の適切な現実世界のランドマーク又は物体であり得る。相互作用には、キャプチャ、所有権の主張、仮想アイテムの使用、仮想通貨の使用などが含まれる。これらの仮想要素230をキャプチャするために、プレーヤーは、現実世界において仮想要素230にリンクされたランドマーク又は地理的位置240に移動し、仮想世界210における仮想要素230との必要な相互作用を実行しなければならない。例えば、
図2のプレーヤーAは、その特定のランドマーク240にリンクされた仮想要素230と相互作用、又は、それをキャプチャするために、現実世界200内のランドマーク240に移動しなければならない場合がある。仮想要素230との相互作用は、写真を撮る、及び/又は仮想要素230に関連付けられたランドマーク又は物体240に関する他の情報を検証、取得、又はキャプチャするなど、現実世界での行動を必要とし得る。
【0025】
ゲーム目標は、位置ベースゲームでプレーヤーによって収集された1つ以上の仮想アイテムをそのプレーヤーが使用することを必要とし得る。例えば、プレーヤーは、ゲーム目標を完了するために役立ち得る仮想アイテム(例えば、武器、クリーチャ、パワーアップ、又は他のアイテム)を求めて仮想世界210を移動することができる。これらの仮想アイテムは、現実世界200内の異なる位置に移動することによって、又は仮想世界210若しくは現実世界200のいずれかで様々な行動を完了することによって、発見又は収集することができる。
図2に示す例では、プレーヤーは、仮想アイテム232を使用して、1つ以上の仮想要素230をキャプチャする。特に、プレーヤーは、仮想アイテム232を、仮想世界210において仮想要素230に近接する位置又は仮想要素230内の位置で効果的に使用することができる。このようにして1つ以上の仮想アイテム232を効果的に使用すると、特定のプレーヤー又は特定のプレーヤーのチーム/ファクションのために仮想要素230をキャプチャすることができる。
【0026】
1つの特定の実装形態では、プレーヤーは、並行現実ゲームの一部として仮想エネルギーを集めなければならない場合がある。
図2に示されるように、仮想エネルギー250は、仮想世界210内の異なる位置にばらまかれ得る。プレーヤーは、実世界200において仮想エネルギー250の対応する位置に移動することによって、仮想エネルギー250を収集することができる。仮想エネルギー250は、仮想アイテムを強化するため、及び/又はゲームでの様々なゲーム目標を実行するために使用することができる。全ての仮想エネルギー250を失ったプレーヤーは、ゲームから切断され得る。
【0027】
本開示の態様によれば、並行現実ゲームは、ゲームの全ての参加者が同じ仮想世界を共有する大規模なマルチプレーヤー位置ベースのゲームであり得る。プレーヤーは、別々のチーム又はファクションに分けることができ、仮想要素をキャプチャ又はその所有権を主張するなど、1つ以上のゲーム目標を達成するために協力することができる。このようにして、並行現実ゲームは、本質的に、ゲーム内のプレーヤー間の協力を奨励するソーシャルゲームであり得る。並行現実ゲームでは、敵対するチームのプレーヤーが互いに対戦する(又は協力して相互の目標を達成する)ことができる。プレーヤーは、仮想アイテムを使用して、敵対するチームのプレーヤーの進行を攻撃又は妨害することができる。場合によっては、プレーヤーは、並行現実ゲームの協力的又は相互作用的なイベントのために、現実世界の位置に集まることが奨励される。このような場合、ゲームサーバは、プレーヤーが実際に物理的に存在し、スプーフィングしていないことを確認しようとする。
【0028】
並行現実ゲームは、並行現実ゲーム内のゲームプレイを強化及び奨励するための様々な機能を備えている。例えば、プレーヤーは、ゲーム中に使用できる仮想通貨又は別の仮想報酬(仮想トークン、仮想ポイント、仮想マテリアルリソースなど)を蓄積することができる(例えば、ゲーム内アイテムの購入、他のアイテムの引換、アイテムの作成など)。プレーヤーは、1つ以上のゲーム目標を完了し、ゲーム内で経験を積むにつれて、レベルを上げることができる。いくつかの実施形態では、プレーヤーは、ゲームで提供される1つ以上の通信インターフェースを介して互いに通信することができる。プレーヤーは、ゲーム内のゲーム目標を完了するために使用できる強化された「パワー」又は仮想アイテムを取得することもできる。本明細書で提供される開示を使用する当業者は、本開示の範囲から逸脱することなく、他の様々なゲーム機能を並行現実ゲームに含めることができることを理解すべきである。
【0029】
図1に戻り、ネットワーク化されたコンピューティング環境100は、クライアント・サーバアーキテクチャを使用し、ここで、ゲームサーバ120は、クライアントデバイス110とネットワーク105を介して通信して、クライアントデバイス110のプレーヤーに並行現実ゲームを提供する。ネットワーク化されたコンピューティング環境100は、更に、スポンサー/広告主システム又はビジネスシステムなどの他の外部システムを含んでいてもよい。
図1には、1つのクライアントデバイス110のみが示されているが、任意の数のクライアント110又は他の外部システムが、ネットワーク105を介してゲームサーバ120に接続され得る。更には、ネットワーク化されたコンピューティング環境100は、異なる又は追加の要素を含んでもよく、以下に記載されるものとは異なる方法で、クライアントデバイス110とサーバ120との間で、機能が分散されてもよい。
【0030】
クライアントデバイス110は、ゲームサーバ120とインターフェース接続するためにプレーヤーによって使用され得る任意の携帯型コンピューティングデバイスであり得る。例えば、クライアントデバイス110は、ワイヤレスデバイス、携帯情報端末(PDA)、携帯型ゲームデバイス、携帯電話、スマートフォン、タブレット、ナビゲーションシステム、ハンドヘルドGPSシステム、ウェアラブルコンピューティングデバイス、1つ以上のプロセッサを有するディスプレイ又は他のそのようなデバイスであり得る。別の例では、クライアントデバイス110は、デスクトップ又はラップトップコンピュータなどの従来のコンピュータシステムを含む。なお、クライアントデバイス110は、コンピューティングデバイスを備えた車両であり得る。要するに、クライアントデバイス110は、プレーヤーがゲームサーバ120と相互作用することを可能にする任意のコンピュータデバイス又はシステムであり得る。コンピューティングデバイスとして、クライアントデバイス110は、1つ以上のプロセッサ及び1つ以上のコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を記憶することができる。クライアントデバイス110は、好ましくは、スマートフォン又はタブレットなどのプレーヤーと共に容易に携帯又は他の方法で運ぶことができる携帯型コンピューティングデバイスである。
【0031】
クライアントデバイス110は、ゲームサーバ120と通信して、ゲームサーバ120に物理的環境のセンシングデータを提供する。クライアントデバイス110は、クライアントデバイス110が存在する物理的環境におけるシーンの2次元画像データをキャプチャするカメラアセンブリ125を有する。クライアントデバイス110は、更に、例えば、ゲームサーバ120によってトレーニングされた機械学習モデルである深度推定モデル130を有する。
図1に示す実施形態では、各クライアントデバイス110は、ゲームモジュール135及び測位モジュール140などのソフトウェア構成要素を有する。クライアントデバイス110は、プレーヤーから情報を受信する、及び/又はプレーヤーに情報を提供するための様々な他の入力/出力デバイスを有していてもよい。入力/出力デバイスの例としては、ディスプレイ画面、タッチスクリーン、タッチパッド、データ入力キー、スピーカ、及び音声認識に適したマイクロフォン等が挙げられる。クライアントデバイス110は、特に限定されないが、動きセンサ、加速度センサ、ジャイロスコープ、他の慣性測定ユニット(IMU)、気圧計、測位システム、温度計、光センサなどの、クライアントデバイス110からのデータを記録するための他の様々なセンサを更に含んでいてもよい。クライアントデバイス110は、ネットワーク105を介して通信を提供するためのネットワークインターフェースをさらに含むことができる。ネットワークインターフェースは、例えば、送信機、受信機、ポート、コントローラ、アンテナ、又は他の適切な構成要素を含む、1つ以上のネットワークとインターフェース接続するための任意の適切な構成要素を含むことができる。
【0032】
カメラアセンブリ125は、クライアントデバイス110が存在する環境のシーンの画像データをキャプチャする。カメラアセンブリ125は、様々なキャプチャーレートで様々な色捕捉範囲を有する様々なフォトセンサを利用できる。カメラアセンブリ125は、広角レンズ又は望遠レンズを含み得る。カメラアセンブリ125は、単一の画像又はビデオを画像データとしてキャプチャするように構成され得る。更に、カメラアセンブリ125の向きは、カメラアセンブリ125が地平線に向けられた状態で地面に平行であり得る。カメラアセンブリ125は、画像データをキャプチャし、その画像データをクライアントデバイス110上のコンピューティングデバイスと共有する。画像データには、センシングデータ(温度、環境の明るさなど)やキャプチャデータ(露出、暖かさ、シャッタースピード、焦点距離、キャプチャ時間など)を含む画像データの他の詳細を記述するメタデータを付加することができる。カメラアセンブリ125は、画像データをキャプチャすることができる1つ以上のカメラを含むことができる。一例では、カメラアセンブリ125は1つのカメラを備え、単眼画像データをキャプチャするように構成される。別の例では、カメラアセンブリ125は2つのカメラを備え、立体画像データをキャプチャするように構成される。他の様々な実装形態では、カメラアセンブリ125は、それぞれが画像データをキャプチャするように構成された複数のカメラを備える。
【0033】
深度推定モデル130は、シーンの入力画像を受信し、当該入力画像に基づく当該シーンの深度マップを出力する。深度推定モデル130は、以下でより詳細に説明するが、深度推定トレーニングシステム170によってトレーニングされ、また、深度推定トレーニングシステム170によって更新又は調整され得る。受信された入力画像は、カメラアセンブリ125のカメラ又は別のクライアントデバイス110からの別のカメラによってキャプチャされ得る。いくつかの実施形態では、受信された入力画像は、入力画像の内部値(intrinsics)を特定する画像に付加されたメタデータを有する。画像の内部値は、画像がキャプチャされた時点でのカメラの1つ以上の幾何学的特性、例えば、画像をキャプチャする際のカメラの焦点距離、カメラの主点オフセット、カメラのスキュー等を指す。内部値を用いて、深度推定モデル130は、内部値を説明する内部行列を生成することができる。いくつかの実施形態では、深度推定モデル130は、入力画像が満足のいくものであるかどうか、例えば、閾値解像度を超えるかどうかを判定する。もし入力画像が満足のいくものでない場合、深度推定モデル130は、1つ以上の前処理技術、例えば、シーンの深度マップを決定する前に、入力画像を所望の解像度にアップサンプリングして、入力画像が満足できるものであることを保証することができる。他の例示的な条件としては、コントラスト、グレイン、カラースケール、画像のその他の特性などが挙げられる。深度推定モデル130は、(受信時又は前処理後に)画像を入力し、シーンの深度マップを決定する。
【0034】
深度推定モデル130は、1つ以上の機械学習アルゴリズムを使用して実装される。深度推定モデル130に使用できる機械学習アルゴリズムは、ニューラルネットワーク、決定木、ランダムフォレスト、リグレッサ、クラスタリング、それらの他の派生アルゴリズム、又はそれらのいくつかの組み合わせを含む。1つ以上の実施形態では、深度推定モデル130は、入力画像を受信するように構成された入力層及び深度予測を出力するように構成された出力層を少なくとも含む複数の層を有するニューラルネットワークとして構造化される。各層は多数のノードを有し、各ノードは前の層における1つ以上のノードの重み付けされた組み合わせによって定義される。入力層に続くノードを定義する重みは、深度推定トレーニングシステム170によるトレーニング中に決定される。1つの例示的なアーキテクチャでは、深度推定モデル130は、抽象深度特徴を決定するために入力画像から次元を減少させるように構成されたポーズエンコーダと呼ばれる層の第1のセットと、入力画像と同じ次元の深度マップを出力するために抽象深度特徴から次元を増加させるように構成されたポーズデコーダと呼ばれる層の第2のセットとを含み得る。
【0035】
ゲームモジュール135は、並行現実ゲームに参加するためのインターフェースをプレーヤーに提供する。ゲームサーバ120は、クライアントデバイス110のゲームモジュール135によって使用されるゲームデータを、ネットワーク105を介してクライアントデバイス110に送信し、ゲームのローカルバージョンをゲームサーバ120から離れた位置にいるプレーヤーに提供する。ゲームサーバ120は、ネットワーク105を介して通信を提供するためのネットワークインターフェースを含むことができる。ネットワークインターフェースは、例えば、送信機、受信機、ポート、コントローラ、アンテナ、又は他の適切な構成要素を含む、1つ以上のネットワークとインターフェース接続するための任意の適切な構成要素を含むことができる。
【0036】
クライアントデバイス110によって実行されるゲームモジュール135は、プレーヤーと並行現実ゲームとの間のインターフェースを提供する。ゲームモジュール135は、ゲームに関連付けられた仮想世界を表示し(例えば、仮想世界の画像をレンダリングし)、ユーザが仮想世界で相互作用して様々なゲーム目標を実行することを可能にするユーザインターフェースを、クライアントデバイス110に関連付けられたディスプレイデバイス上に提示することができる。いくつかの他の実施形態では、ゲームモジュール135は、並行現実ゲームの仮想要素で拡張された、現実世界の(例えば、カメラアセンブリ125によってキャプチャされた)画像データを提示する。これらの実施形態では、ゲームモジュール135は、クライアントデバイス110の他の構成要素から受信した他の情報に従って、仮想コンテンツを生成、及び/又は調整することができる。例えば、ゲームモジュール135は、画像データにキャプチャされたシーンの(例えば、深度推定モデル130によって決定される)深度マップに従って、ユーザインターフェース上に表示される仮想物体を調整することができる。
【0037】
ゲームモジュール135は、更に、他の様々な出力を制御して、プレーヤーがディスプレイ画面を見ることなくゲームと相互作用できるようにすることができる。例えば、ゲームモジュール135は、プレーヤーがディスプレイ画面を見ずにゲームをプレイすることを可能にする、様々なオーディオ、振動、又は他の通知を制御することができる。ゲームモジュール135は、ゲームサーバ120から受信したゲームデータにアクセスして、ゲームの正確な表示をユーザに提供することができる。ゲームモジュール135は、プレーヤーの入力を受信して処理し、ネットワーク105を介してゲームサーバ120に更新を提供することができる。ゲームモジュール135は、更に、クライアントデバイス110によって表示されるゲームコンテンツを生成、及び/又は調整することができる。例えば、ゲームモジュール135は、(例えば、深度推定モデル130によって決定される)深度情報に基づいて仮想要素を生成することができる。
【0038】
測位モジュール140は、クライアントデバイス110の位置を監視するための任意のデバイス又は回路であり得る。例えば、測位モジュール140は、衛星航法測位システム(例えば、GPSシステム、ガリレオ測位システム、全地球航法衛星システム(GLONASS)、BeiDou衛星航法及び測位システム)、慣性航法システム、IPアドレスに基づく、三角測量及び/又はセルラータワー若しくはWi-Fiホットスポットへの近接を使用することによる推測航法システム、及び/又は、位置を決定するための他の適切な技術を使用することによって、実際の又は相対的な位置を決定することができる。測位モジュール140は、クライアントデバイス110の位置を正確に測ることを補助する様々な他のセンサをさらに含み得る。
【0039】
プレーヤーが現実世界でクライアントデバイス110と共に動き回るとき、測位モジュール140は、プレーヤーの位置を追跡し、プレーヤーの位置情報をゲームモジュール135に提供する。ゲームモジュール135は、現実世界におけるプレーヤーの実際の位置に基づいて、ゲームに関連付けられた仮想世界におけるプレーヤーの位置を更新する。したがって、プレーヤーは、クライアントデバイス110を現実世界で携帯又は運ぶだけで、仮想世界と相互作用することができる。特に、仮想世界におけるプレーヤーの位置は、現実世界におけるプレーヤーの位置に対応することができる。ゲームモジュール135は、ネットワーク105を介してゲームサーバ120にプレーヤーの位置情報を提供することができる。それに応じて、ゲームサーバ120は、不正行為者がクライアントデバイス110の位置をスプーフィングするのを防ぐために、クライアントデバイス110の位置を検証するための様々な技術を制定することができる。なお、プレーヤーに関連付けられた位置情報は、プレーヤーの位置情報にアクセスすること及びゲームの中で位置情報をどのように活用するか(例えば、仮想世界におけるプレーヤーの位置を更新するために活用すること)をプレーヤーに通知した後で、許可された場合にのみ利用されることを理解されたい。更に、プレーヤーに関連付けられた位置情報は、プレーヤーのプライバシーを保護する方法で保存及び維持される。
【0040】
ゲームサーバ120は、任意のコンピューティングデバイスであり、1つ以上のプロセッサ及び1つ以上のコンピュータ可読記憶媒体を含むことができる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を記憶することができる。ゲームサーバ120は、ゲームデータベース115を含むことができ、又はそれと通信することができる。ゲームデータベース115は、ネットワーク105を介してクライアント120にサービス又は提供される、並行現実ゲームで使用されるゲームデータを記憶する。
【0041】
ゲームデータベース115に記憶されたゲームデータは、以下を含み得る。(1)並行現実ゲームの仮想世界に関連付けられたデータ(例えば、ディスプレイデバイス上で仮想世界をレンダリングするために使用される画像データ、仮想世界内の位置の地理座標など);(2)並行現実ゲームのプレーヤーに関連付けられたデータ(特に限定されないが、例えば、プレーヤー情報、プレーヤー経験レベル、プレーヤー通貨、仮想世界/現実世界でのプレーヤーの現在位置、プレーヤーエネルギーレベル、プレーヤーの好み、チーム情報、ファクション情報などを含むプレーヤープロファイル情報);(3)ゲーム目標に関連付けられたデータ(例えば、現在のゲーム目標、ゲーム目標のステータス、過去のゲーム目標、将来のゲーム目標、所望のゲーム目標などに関連付けられたデータなど);(4)仮想世界における仮想要素に関連付けられたデータ(例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲーム目標、仮想要素に対応する実世界の位置情報、仮想要素の動作、仮想要素の関連性など);(5)現実世界の物体、ランドマーク、仮想世界の要素にリンクされた位置に関連付けられたデータ(例えば、現実世界の物体/ランドマークの位置、現実世界の物体/ランドマークの説明、現実世界の物体にリンクされた仮想要素の関連性など);(6)ゲームのステータス(例えば、現在のプレーヤー数、ゲーム目標の現在のステータス、プレーヤーのリーダーボードなど);(7)プレーヤーの行動/入力に関連付けられたデータ(例えば、現在のプレーヤー位置、過去のプレーヤー位置、プレーヤーの動き、プレーヤーの入力、プレーヤーのクエリ、プレーヤーの通信など);並びに(8)並行現実ゲームの実行中に使用、関連、又は取得されたその他の任意のデータ。ゲームデータベース115に記憶されたゲームデータは、システム管理者によって、及び/又は、ネットワーク105を介してクライアントデバイス110からなど、システム100のユーザ/プレーヤーから受信されたデータによって、オフライン又はリアルタイムのいずれかで取り込むことができる。
【0042】
ゲームサーバ120は、クライアントデバイス110から(例えば、リモートプロシージャコール(RPC)を介して)ゲームデータの要求を受信し、ネットワーク105を介してそれらの要求に応答するように構成され得る。例えば、ゲームサーバ120は、ゲームデータを1つ以上のデータファイルにエンコードし、そのデータファイルをクライアントデバイス110に提供することができる。更に、ゲームサーバ120は、ネットワーク105を介してクライアントデバイス110からゲームデータ(例えば、プレーヤーの位置、プレーヤーの行動、プレーヤーの入力など)を受信するように構成することができる。例えば、クライアントデバイス110は、プレーヤーの入力及びその他の更新をゲームサーバ120に定期的に送信するように構成することができ、ゲームサーバ120は、ゲームデータベース115内のゲームデータを更新するために使用して、ゲームのあらゆる変更された条件を反映することができる。
【0043】
示される実施形態では、サーバ120は、ユニバーサルゲームモジュール145、商用ゲームモジュール150、データ収集モジュール155、イベントモジュール160、及び深度推定トレーニングシステム170を有する。上記のように、ゲームサーバ120は、ゲームサーバ120の一部であるか又はリモートでアクセスされ得るゲームデータベース115と相互作用する(例えば、ゲームデータベース115は、ネットワーク105を介してアクセスされる分散データベースであり得る)。他の実施形態では、ゲームサーバ120は、異なる要素及び/又は追加の要素を含む。更に、機能は、説明されているものとは異なる方法で要素間で分散され得る。例えば、ゲームデータベース115は、ゲームサーバ120に統合することができる。
【0044】
ユニバーサルゲームモジュール145は、全てのプレーヤーのために並行現実ゲームをホストし、全てのプレーヤーの並行現実ゲームの現在のステータスの信頼できる情報源として機能する。ホストとして、ユニバーサルゲームモジュール145は、例えば、それぞれのクライアントデバイス110を介して、プレーヤーに提示するためのゲームコンテンツを生成する。ユニバーサルゲームモジュール145は、並行現実ゲームをホストするときに、ゲームデータベース115にアクセスして、ゲームデータを取得及び/又は記憶することができる。ユニバーサルゲームモジュール145は、更に、クライアントデバイス110からゲームデータ(例えば、深度情報、プレーヤーの入力、プレーヤーの位置、プレーヤーの行動、ランドマーク情報など)を受信し、受信したゲームデータを、並行現実ゲームの全てのプレーヤーのために並行現実ゲーム全体に組み込む。ユニバーサルゲームモジュール145は、更に、ネットワーク105を介したクライアントデバイス110へのゲームデータの配信を管理することができる。ユニバーサルゲームモジュール145は、特に限定されないが、クライアントデバイス110とゲームサーバ120との間の接続の保護、様々なクライアントデバイス110間の接続の確立、及び様々なクライアントデバイス110の位置の検証を含む、クライアントデバイス110のセキュリティ面を更に管理してもよい。
【0045】
商用ゲームモジュール150は、それが含まれる実施形態において、ユニバーサルゲームモジュール145とは分離されていても、その一部であってもよい。商用ゲームモジュール150は、現実世界での商業活動にリンクされている並行現実ゲーム内の様々なゲーム機能の包含を管理することができる。例えば、商用ゲームモジュール150は、スポンサー/広告主、企業、又はその他のエンティティといった外部システムから要求を、ネットワーク105を介して(ネットワークインターフェースを介して)受信して、並行現実ゲームにおいて商業活動にリンクされたゲーム機能を含めることができる。そして、商用ゲームモジュール150は、これらのゲーム機能を並行現実ゲームに含めるように配置することができる。
【0046】
ゲームサーバ120は、データ収集モジュール155をさらに含むことができる。データ収集モジュール155は、それが含まれる実施形態において、ユニバーサルゲームモジュール145とは分離されていても、その一部であってもよい。データ収集モジュール155は、現実世界でのデータ収集活動にリンクされている並行現実ゲーム内の様々なゲーム機能の包含を管理することができる。例えば、データ収集モジュール155は、ゲームデータベース115に記憶されたゲームデータを変更して、並行現実ゲームにおけるデータ収集活動にリンクされたゲーム機能を含めることができる。データ収集モジュール155は、更に、データ収集活動に従ってプレーヤーによって収集されたデータを分析し、様々なプラットフォームによるアクセスのためのデータを提供することができる。
【0047】
イベントモジュール160は、並行現実ゲームにおけるイベントへのプレーヤーのアクセスを管理する。「イベント」という用語は便宜上使用されているが、この用語は特定の位置又は時間における特定のイベントを指す必要はないことを理解されたい。むしろ、プレーヤーがそのコンテンツにアクセスできるかどうかを決定するために1つ以上のアクセス基準が使用される、アクセス制御されたゲームコンテンツの任意の提供を指すことができる。このようなコンテンツは、アクセス制御がほとんど又はまったくないゲームコンテンツを含む、より大きな並行現実ゲームの一部であってもよいし、スタンドアロンのアクセス制御された並行現実ゲームであってもよい。
【0048】
深度推定トレーニングシステム170は、深度推定モデル、例えば、クライアントデバイス110に提供される深度推定モデル130をトレーニングする。深度推定トレーニングシステム170は、深度推定モデルのトレーニングに使用するための画像データを受信する。一般に、深度推定トレーニングシステム170は、画像データを処理し、その画像データを深度推定モデルに入力して深度予測を生成し、あるトレーニング画像を深度予測を用いて別のトレーニング画像に投影し、測光再構成誤差に基づいて損失を計算し、深度推定モデルのパラメータを繰り返し調整して、損失を最小化する。上記の一般的なプロセスは、自己教師ありトレーニングアルゴリズムを説明するものである。一般に、自己教師ありトレーニングでは、教師ありトレーニングアルゴリズムで一般的に必要とされるような、トレーニングのためのグラウンドトゥルース深度は必要としない。深度推定システム170は、別のモデル(例えば、既製の深度推定モデル)によって提供される深度ヒントに部分的に基づいてモデルをトレーニングする。深度推定トレーニングシステム170は、深度推定モデルが深度情報を推定するのに十分に正確であるかどうかを決定するために使用できる深度推定モデルの誤差閾値をさらに定義することができる。深度推定トレーニングシステム170によるトレーニングについては、以下でさらに説明する。
【0049】
深度推定モデルがトレーニングされると、深度推定モデルは画像データを受信し、その画像データに基づいて環境の深度情報を出力する。深度推定トレーニングシステム170は、トレーニングされたモデルをクライアントデバイス110に提供する。クライアントデバイス110は、トレーニングされたモデルを使用して、(例えば、デバイス上のカメラによってキャプチャされた)画像内のピクセルの深度を推定する。深度推定には、仮想コンテンツのレンダリングを支援して現実世界の画像を拡張する、ロボットのナビゲーションを支援する、自動運転車の潜在的な危険を検出するなど、様々な用途があり得る。
【0050】
ネットワーク105は、ローカルエリアネットワーク(例えば、イントラネット)、ワイドエリアネットワーク(例えば、インターネット)、又はそれらの何らかの組み合わせなどの任意のタイプの通信ネットワークであり得る。ネットワークはまた、クライアントデバイス110とゲームサーバ120との間の直接接続を含むことができる。一般に、ゲームサーバ120とクライアントデバイス110との間の通信は、様々な通信プロトコル(例えば、TCP/IP、HTTP、SMTP、FTP)、エンコーディング又はフォーマット(例:HTML、XML、JSON)、及び/又は保護スキーム(例:VPN、セキュアHTTP、SSL)を使用する、任意のタイプの有線及び/又は無線接続を使用して、ネットワークインターフェースを介して行うことができる。
【0051】
本明細書で説明する技術は、サーバ、データベース、ソフトウェアアプリケーション、及びその他のコンピュータベースのシステム、並びにそのようなシステムとの間で取られるアクション及び送受信される情報に関する。当業者は、コンピュータベースのシステムに固有の柔軟性は、システムの構成要素間で、非常に様々な構成、組み合わせ、及びタスクと機能の分割を可能にすることを認識するであろう。例えば、ここで説明するサーバプロセスは、単一のサーバを使用して、又は、複数のサーバを組み合わせて使用して実装できる。データベースとアプリケーションは、単一のシステムに実装することも、複数のシステムに分散させることもできる。分散構成要素は、順次又は並列に動作し得る。
【0052】
また、本明細書で論じられるシステム及び方法がユーザに関する個人情報にアクセスして分析する又は位置情報などの個人情報を利用する状況では、プログラム又は機能が情報を収集するかどうかを制御する機会、及び、システム又は他のアプリケーションからのコンテンツを受信するかどうか及び/又はどのように受信するかを制御する機会がユーザに提供され得る。どのような情報を収集し、かつ、どのように利用するかについてユーザに意味のある通知が提供されるまで、そのような情報やデータは収集又は使用されない。ユーザが同意しない限り、情報は収集又は使用されず、その同意は、ユーザがいつでも取り消し、又は変更することができる。したがって、ユーザは、ユーザに関する情報がどのように収集され、アプリケーション又はシステムによってどのように使用されるかを制御することができる。更に、特定の情報又はデータを保存又は使用される前に1つ以上の方法で処理し、個人を特定できる情報を削除できる。例えば、ユーザの識別情報は、そのユーザについて個人を特定できる情報を判別できないように処理することができる。
【0053】
<例示的なゲームインターフェース>
図3は、プレーヤーと仮想世界210との間のインターフェースの一部としてクライアント120のディスプレイ上に提示され得るゲームインターフェース300の一実施形態を示す。ゲームインターフェース300は、仮想世界210と、例えば、当該仮想世界210における、プレーヤーの位置222、仮想要素230の位置、仮想アイテム232の位置、及び仮想エネルギー250の位置といった、ゲームのその他の様々な側面とを表示するために使用され得る、ディスプレイウィンドウ310を含む。ユーザインターフェース300は、更に、ゲームデータ情報、ゲーム通信、プレーヤー情報、クライアント位置確認命令、及びゲームに関連付けられた他の情報といった、その他の情報を表示することができる。例えば、ユーザインターフェースは、プレーヤー名、経験レベル、及び他の情報などのプレーヤー情報315を表示することができる。ユーザインターフェース300は、様々なゲーム設定及びゲームに関連付けられた他の情報にアクセスするためのメニュー320を含むことができる。ユーザインターフェース300は、更に、ゲームシステムとプレーヤーとの間、及び並行現実ゲームの1人以上のプレーヤーとの間の通信を可能にする通信インターフェース330を含むことができる。
【0054】
本開示の態様によれば、プレーヤーは、クライアントデバイス120を現実世界で持ち歩くだけで、並行現実ゲームと相互作用することができる。例えば、プレーヤーはスマートフォンで並行現実ゲームに関連付けられたアプリケーションにアクセスし、そのスマートフォンと共に現実世界を動き回るだけでゲームをプレイできる。この点で、位置ベースのゲームをプレイするために、プレーヤーが仮想世界の視覚的表現をディスプレイ画面上で継続的に見る必要はない。結果として、ユーザインターフェース300は、ユーザがゲームと相互作用することを可能にする複数の非視覚的要素を含むことができる。例えば、ゲームインターフェースは、プレーヤーがゲーム内の仮想要素又は物体に近づいたとき、又は並行現実ゲームで重要なイベントが発生したときに、そのプレーヤーに可聴通知を提供できる。プレーヤーは、オーディオ制御340を用いてこれらの可聴通知を制御することができる。仮想要素又はイベントのタイプに応じて、様々なタイプの可聴通知をユーザに提供できる。可聴通知は、仮想要素又は物体へのプレーヤーの近接具合に応じて、頻度又は音量を増減できる。振動通知又は他の適切な通知や信号など、他の非視覚的通知及び信号もユーザに提供され得る。
【0055】
本明細書で提供される開示を使用する当業者は、本開示に照らして、多数のゲームインターフェース構成及び基礎となる機能が明らかになることを理解するであろう。本開示は、特定の構成に限定されることを意図するものではない。
【0056】
<深度推定トレーニング>
深度推定トレーニングシステム170は、クライアントデバイス110によって使用される深度ヒントの助けを借りて、深度推定モデル130をトレーニングする。次の段落では、立体画像データ、単眼ビデオデータ、深度ヒント、ポーズヒント、又はそれらのいくつかの組み合わせに依存する様々なトレーニング方法について説明する。深度ヒントは、深度推定モデル130とは異なるアプローチによって生成された深度マップである。そのようなアプローチの1つは、深度推定モデル130とは異なる方法でトレーニングされた代替深度推定モデルから深度マップを生成することである。例えば、代替深度推定モデルは、立体画像ペアを受信し、その立体画像ペアに基づいて深度マップを生成するように構成された双眼深度推定モデルとして、サードパーティのシステムによってトレーニングされ得る。別のアプローチは、デバイス(例えば、電話、自動運転車両など)において、simultaneous-localization-and-mapping(SLAM)モジュールを使用して深度マップを生成することである。深度ヒントがどのように生成されるかに関係なく、トレーニングフェーズでは、入力画像を受信し、その入力画像に基づいて深度マップを出力するように構成された、トレーニングされた単眼深度推定モデル130が生成される。
【0057】
一般に、深度推定トレーニングシステム170は、画像ペアに結合されたトレーニング画像データを用いてトレーニングを行う。画像ペアは、真の立体画像ペア又は疑似立体画像ペアであり得る。一方では、真の立体画像ペアは、例えば双眼カメラシステムの2つの異なるカメラによって比較的同時にキャプチャされた2つの画像を含む。他方、疑似立体画像ペアは、例えば、単眼カメラシステムによってキャプチャされた単眼ビデオデータにおける2つの時間的に隣接するフレームなど、単一のカメラによってキャプチャされた2つの時間的に異なる(すなわち、異なるタイムスタンプでキャプチャされた)フレームを含む。真の立体画像ペアでは、画像ペア内の立体画像間のポーズが一般的に知られている。疑似立体画像ペアでは、2つのフレーム間のポーズは一般的に不明である。ポーズは通常、2つの画像間の相対的な位置を表す。数学的に言えば、ポーズは、2つの視点間の平行移動と回転の両方を説明することができる、画像の2つの視点間の変換行列によって定義される。それに対応するために、深度推定トレーニングシステム170は、深度推定モデルに加えて、ポーズ推定モデルもトレーニングすることができる。いくつかの実施形態では、ポーズと深度を同時に推定するための単一の深度-ポーズハイブリッドモデルを使用することができる。「深度推定システムの自己教師ありトレーニング」と題され、2019年11月21日に公開された米国特許出願公開第2019/0356905A1号明細書は、参照により本明細書に組み込まれ、深度-ポーズハイブリッドモデルに関連付けられた実施形態をさらに説明する。
【0058】
図1に示す実施形態では、深度推定トレーニングシステム170は、深度予測モジュール175、ヒントモジュール180、画像合成モジュール185、損失計算モジュール190、及びトレーニングモジュール195を有する。いくつかの実施形態では、深度推定トレーニングシステム170は、追加の動作を実行する追加のモジュールをさらに含む。他の実施形態では、深度推定トレーニングシステム170は、例えば、データストア、フィードバックモジュール、平滑化モジュールといった、異なる及び/又は追加の構成要素を含み得る。例えば、データストアはトレーニングデータ又はトレーニングされたパラメータを記憶できる。別の例では、平滑化モジュールは深度マップを処理できる。その一例は、深度マップの深度値を平滑化することである。
【0059】
深度予測モジュール175は、トレーニング画像の深度予測を生成する。深度予測モジュール175は、深度推定モデル130への入力としてトレーニング画像を提供し、そのトレーニング画像の初期深度予測を生成する。深度予測は、トレーニング画像の各ピクセルの予測深度値を含む予測深度マップである。
【0060】
ヒントモジュール180は、トレーニング画像の深度ヒントを取得する。上記のように、深度ヒントは、いくつかのアプローチから得られることができる。1つのアプローチでは、代替的にトレーニングされた深度推定モデル(例えば、比較的低い計算資源要件を有する既製の深度推定モデル)が使用される。代替的にトレーニングされたステレオ深度推定モデルを用いた実施形態では、ヒントモジュール180は、代替的にトレーニングされたステレオ深度推定モデルにトレーニング画像ペアを提供して、深度ヒントを生成する。別のアプローチでは、SLAMモジュールが使用される。そのような実施形態では、ヒントモジュール180は、SLAMモジュールによって生成された深度ヒントを取得する。他のアプローチでは、ヒントモジュール180は、深度ヒントを生成した適切なモジュール、デバイス、又はシステムから深度ヒントを取得する。1つ以上の実施形態では、ヒントモジュール180は、上記のアプローチのいくつかの組み合わせから複数の深度ヒントを取得することができる。いくつかの実施形態では、ヒントモジュール180は、疑似立体画像ペアを用いたトレーニングに使用することができるポーズヒントを取得する。ポーズヒントは、代替的にトレーニングされたポーズ推定モデル、SLAMモジュール、又は他のローカリゼーションモジュールから取得され得る。
【0061】
画像合成モジュール185は、1つのトレーニング画像を画像ペア内の別のトレーニング画像に投影することによって、1つ以上の合成フレームを生成する。画像合成モジュール185は、第2のトレーニング画像から画像ペアの第1のトレーニング画像への投影として合成フレームを生成するために、第2のトレーニング画像、第2のトレーニング画像の内部パラメータ、2つのトレーニング画像間の相対ポーズ、第1のトレーニング画像の深度マップ、及び第1のトレーニング画像の内部パラメータを使用する。一般に、トレーニング画像をキャプチャしたいずれかのカメラによって記録されるように、トレーニング画像の内部パラメータは既知である。画像の内部パラメータ(「内部値」とも呼ばれる)は、その画像をキャプチャするために使用されるカメラの幾何学的特性、例えば、カメラの焦点距離、カメラの主点オフセット、カメラのスキューなどを指す。場合によっては、撮影した全ての画像間でカメラごとに内部値を一定にすることも、様々な画像を撮影するときにカメラがパラメータを調整することで内部値を変更することもできる。いずれの場合も、内部値は内部行列として表すことができる。真の立体画像を投影する際に、画像合成モジュール185のポーズは、真の立体画像をキャプチャした2つのカメラの構成に従って知ることができる。単眼ビデオデータを投影する際に、2つの時間的に異なるフレーム間のポーズは、トレーニング画像に基づいて、例えば、ポーズ推定モデルによって推定され得る。
【0062】
画像合成モジュール185は、最初に、深度推定モデル130によって出力された深度予測を使用して投影することによって、モデル合成フレームを生成する。明確にするために、画像合成モジュール185は、第1のトレーニング画像の深度推定モデル130によって出力された深度予測、例えば深度予測モジュール175によって生成された深度予測を使用して、トレーニング画像ペアの第2のトレーニング画像から第1のトレーニング画像に投影する。
【0063】
深度ヒントを用いて画像ペアをトレーニングするために、画像合成モジュール185は、深度ヒントを使用してヒント付き合成フレームを生成する。明確にするために、そして上記の段落の例に続いて、画像合成モジュール185は、深度予測ではなくヒントモジュール180によって取得された深度ヒントを使用して、トレーニング画像ペアの第2のトレーニング画像から第1のトレーニング画像に再度投影する。深度ヒントを伴う既知のポーズを有する真の立体画像ペアを用いる例として、画像合成モジュール185は、モデル合成フレーム及びヒント付き合成フレームを生成する。同様に、ポーズヒントを有するヒント付き合成フレームを生成するために、画像合成モジュール185は、ポーズ推定モデルによって推定されたポーズの代わりにポーズヒントを考慮して、画像ペア内の一方のトレーニング画像から他方のトレーニング画像に投影する。自然な拡張として、深度ヒントとポーズヒントの両方を使用するために、画像合成モジュール185は、第1のトレーニング画像の深度ヒント及び2つのトレーニング画像間のポーズヒントを投影する。深度ヒント及び/又はポーズヒントを有する疑似立体画像ペアを用いる例では、画像合成モジュール185は、複数のヒント付き合成フレーム:例えば、深度ヒントによる第1のヒント付き合成フレーム、ポーズヒントによる第2のヒント付き合成フレーム、深度ヒント及びポーズのヒントによる第3のヒント付き合成フレーム、又はそれらのいくつかの組み合わせを生成することができる。1つのタイプのヒントが複数ある(例えば、複数の深度ヒントがある)実施形態では、画像合成モジュール185は、各深度ヒントについて1つ以上のヒント付き合成フレームを生成することができる。
【0064】
損失計算モジュール190は、深度推定モデル130のトレーニングに使用するための全体損失を計算する。最初に、損失計算モジュール190は、モデル合成フレームと対応するトレーニング画像との間の測光再構成誤差を一次損失として算出する。一次損失は、そのピクセルでの深度予測に従った測光再構成の精度を表す、トレーニング画像のピクセルごとの一次損失値を有する。全体損失は、全てのピクセルにわたる損失の寄与を合計する。深度ヒントのないトレーニング画像ペアの場合、全体損失は一次損失値の合計に基づく。例えば、一次損失はピクセルごとの一次損失値を有し、全体損失に対する各ピクセルの寄与が一次損失値であり、トレーニング画像ペアの全体損失は一次損失値の合計になる。
【0065】
深度ヒントを用いて画像ペアをトレーニングする場合、損失計算モジュール190は、全体損失を計算する際に、ヒント付き損失をさらに考慮する。ヒント付き損失は、ヒント付き合成フレームと対応するトレーニング画像との間の測光再構成として算出できる。ヒント付き損失は、ピクセルごとのヒント付き損失値を含む。損失計算モジュール190は、ピクセルごとに一次損失値とヒント付き損失値とを比較する。あるピクセルにおいて一次損失値がヒント付き損失値以下である(そのピクセルにおいてモデルの深度予測が深度ヒントよりも正確であるか同じであることを意味する)場合、損失計算モジュール190はそのピクセルにおいて深度ヒントを無視し、全体損失に対するそのピクセルの寄与、例えば、一次損失値は、深度予測に基づくことになる。あるピクセルにおいてヒント付き損失値が一次損失値よりも小さい(そのピクセルにおいて深度ヒントがモデルの深度予測よりも正確であることを意味する)場合、損失計算モジュール190は深度ヒントを考慮し、全体損失に対するそのピクセルの寄与は、深度予測と深度ヒントに基づくことになる。一実施形態では、(一次損失よりも小さいヒント付き損失を有する)ピクセルの寄与は、そのピクセルでの、一次損失値と、深度予測値と深度ヒント値との間の教師あり損失と、の合計である。
【0066】
測光再構成誤差の様々な定義は、損失計算モジュール190によって実装され得る。大まかに言えば、深度の測光再構成誤差は、概して、深度に従って投影された合成フレームのピクセルと、その合成フレームに対応する画像のピクセルとの間の差である。ピクセルの深度に対して計算された測光再構成誤差の定義の例は、L1距離、L2距離、(2×2、3×3、4×4などの2つの画像間のピクセルのウィンドウを考慮する)構造的非類似度(DSSIM)、それらに適用される1つ以上の演算子、又はそれらのいくつかの組み合わせである。測光再構成(pre)についての1つ以上の定義の方程式を以下に示す。
L1距離pre
L1(d
i)としてのピクセルiにおける深度d
iに対する測光再構成誤差は、第1の画像Iのピクセルiと第2の画像I(チルダ)のピクセルiとの間の絶対差である。
L2距離pre
L2(d
i)としてのピクセルiにおける深度d
iに対する測光再構成誤差は、第1の画像Iのピクセルiと第2の画像I(チルダ)のピクセルiとの間の二乗距離である。
構造的非類似度pre
DSSIM(d
i)として計算されたピクセルiにおける深度d
iの測光再構成誤差は、ピクセルiを中心とする2つの画像I及びI(チルダ)の対応するウィンドウ間の構造的類似度SSIM(I
i,I(チルダ)
i)の計算値を1から引いたものの半分である。SSIM(x,y)は、ともにピクセルiを中心とする、第1の画像からのウィンドウxと、第2の画像の対応するウィンドウyとの構造的類似度の算出値である。μ
xはウィンドウxの平均であり、μ
yはウィンドウyの平均である。σ
xはウィンドウxの分散であり、σ
yはウィンドウyの分散である。また、σ
xyはウィンドウxとyの間の共分散である。c
1及びc
2は、例えば、ピクセル値のダイナミックレンジに基づいて計算される、分割の平滑化係数である。
測光再構成誤差のDSSIM+L1定義は、上記のようにDSSIMの測光再構成誤差とL1の測光再構成誤差とを合わせている。他の実施形態において、DSSIMとL1の測光再構成誤差の間で異なる割合が使用されてもよい。
【0067】
教師あり深度損失の様々な定義は、損失計算モジュール190によって実装され得る。大まかに言えば、教師あり深度損失は、2つの深度予測の差である。例えば、L1距離、L2距離、2つの深度値間のL1距離の対数、それらに適用される1つ以上の演算子、又はそれらのいくつかの組み合わせが含まれる。
【0068】
トレーニングモジュール195は、全体損失を最小化することによって深度推定モデル130をトレーニングする。トレーニングモジュール195は、深度推定モデル130のパラメータを調整して、各トレーニング画像ペアの全体損失を最小化することによってトレーニングする。トレーニングモジュール195は、深度推定モデル130を介してバックプロパゲーションを行い、深度推定モデル130のパラメータを調整して全体損失を最小化する。いくつかの実施形態におけるトレーニングモジュール195は、反復バッチトレーニング、例えば、トレーニング画像ペアのバッチごとの深度推定モデル130のトレーニングを実行することができる。トレーニングのエポックの数は、深度推定モデル130を介してトレーニング画像データを前方および後方に供給するインスタンスの数を決定する。トレーニングが終了すると、トレーニングモジュール195は、トレーニングされた深度推定モデル130の精度を判定するために、グラウンドトゥルース深度データを有するトレーニング画像データのホールドアウトセットを用いて深度推定モデル130を検証することができる。
【0069】
深度推定トレーニングシステム170は、そのモデル及びモジュールをトレーニング画像を用いてトレーニングした後、カラー入力画像を受信し、かつ、深度推定トレーニングシステム170によってトレーニングされたパラメータに基づいて深度マップを生成するために、深度推定モデル130にパラメータを提供することができる。深度推定トレーニングシステム170は、便宜上、ゲームサーバ120の一部として示されているが、モデルの一部又は全ては、他のコンピューティングデバイスによってトレーニングされ、そして、オペレーティングシステムの一部に含める、ゲームアプリケーションに含める、或いは、オンデマンドでクラウドにアクセスされることを含む様々な方法でクライアントデバイス110に提供され得ることに留意されたい。
【0070】
図4は、1つ以上の実施形態による、画像ペアを用いて深度推定モデルをトレーニングする一般的なプロセス400を説明するフローチャートである。プロセス400は、与えられた入力画像から深度マップを生成することができる、トレーニングされた深度推定モデル130を生成する。プロセス400は、深度推定トレーニングシステム170によって遂行されるが、より一般的には、他の任意のコンピューティングデバイスによって遂行されてもよい。
【0071】
深度推定トレーニングシステム170は、複数の画像ペアを含むトレーニング画像データにアクセスする(410)。画像ペアは、1つ以上の真の立体画像ペア、1つ以上の疑似立体画像ペア、又はそれらのいくつかの組み合わせを含み得る。一般に、各真の立体画像ペア間でポーズは既知であるのに対し、疑似立体画像ペアに対してポーズは推定される。
【0072】
深度推定トレーニングシステム170は、トレーニングされた画像ペアごとに動作420~480を実行する。
【0073】
深度推定トレーニングシステム170は、深度推定モデルを用いて、画像ペアの第1の画像の深度予測を生成する(420)。第1の画像は、第1の画像のピクセルあたりの深度予測値を含む深度予測を抽出する深度推定モデル130に入力される。1つ以上の実施形態では、深度予測モジュール175が、深度予測を生成する。
【0074】
深度推定トレーニングシステム170は、画像ペアの第1の画像の深度ヒントを取得する(430)。深度ヒントは、本開示全体を通して説明される様々なアプローチのいずれかから得ることができる。一実施形態では、深度ヒントは、代替的にトレーニングされたステレオ深度推定モデルに画像ペアを入力することによって得られる。他のアプローチとしては、SLAMモジュール、LIDARなどから深度ヒントを取得することが含まれる。1つ以上の実施形態では、ヒントモジュール180が、深度予測を生成する。
【0075】
深度推定トレーニングシステム170は、深度予測に基づいて第2の画像を第1の画像に投影することによってモデル合成フレームを生成する。第2の画像から第1の画像への投影は、更に、第1の画像の内部パラメータの第1のセット、第2の画像の内部パラメータの第2のセット、及び第1の画像と第2の画像との間のポーズに基づくことができる。1つ以上の実施形態では、画像合成モジュール185が、投影を遂行する。
【0076】
深度推定トレーニングシステム170は、深度ヒントに基づいて第2の画像を第1の画像に投影することによって、ヒント付き合成フレームを生成する(450)。ヒント付き合成フレームでは、投影は深度予測の代わりに深度ヒントに依存する。ポーズヒントを用いる実施形態では、ポーズヒントを使用して、追加のヒント付き合成フレームが生成される。1つ以上の実施形態では、画像合成モジュール185が、投影を遂行する。
【0077】
深度推定トレーニングシステム170は、モデル合成フレームを用いて一次損失を計算する(460)。一次損失は、モデル合成フレームと第1の画像との比較に基づく測光再構成誤差である。深度予測の一次損失は、第1の画像のピクセルごとの一次損失値を含む。
【0078】
深度推定トレーニングシステム170は、ヒント付き合成フレームを用いてヒント付き損失を計算する(470)。ヒント付き損失は、ヒント付き合成フレームと第1の画像との比較に基づく測光再構成誤差である。深度ヒントのヒント付き損失は、第1の画像のピクセルごとのヒント付き損失値を含む。追加のヒント付き損失は、追加のヒント付き合成フレームに対して計算でき、例えば、1つのヒント付き合成フレームはポーズヒントに基づき、別のヒント付き合成フレームは深度ヒントとポーズヒントに基づき、又はさらに別のヒント付き合成フレームは第1の深度ヒントとは異なる方法で取得された第2の深度ヒントに基づく。
【0079】
深度推定トレーニングシステム170は、一次損失及びヒント付き損失に基づいて全体損失を計算する(480)。全体損失は、第1の画像の各ピクセルからの寄与を合計する。所与のピクセルの寄与は、一次損失又はヒント付き損失のどちらが小さいかに基づく。そのピクセルにおいて一次損失がヒント付き損失以下の場合、全体損失に対するそのピクセルの寄与が一次損失値になる。そのピクセルにおいてヒント付き損失が一次損失よりも小さい場合、全体損失に対するそのピクセルの寄与は、そのピクセルでの、一次損失値と、深度予測と深度ヒントとの間の教師あり深度損失との合計になる。一実施形態では、教師あり深度損失は、深度予測と深度ヒントとの間の絶対差を測定する。別の実施形態では、教師あり深度損失は、深度予測と深度ヒントとの間の絶対差の対数を測定する。1つ以上の実施形態では、損失計算モジュール190が、一次損失、ヒント付き損失、及び全体損失を計算する。深度ヒントのないトレーニング画像ペアの全体損失は、一次損失のみに基づいてもよい。すなわち、トレーニング画像ペアの全体損失に対する各ピクセルの寄与が一次損失値であってもよい。
【0080】
深度推定トレーニングシステム170は、画像ペアの全体損失を最小化することによって、深度推定モデル130をトレーニングする(490)。損失を最小化する際に、深度推定トレーニングシステム170は、単色入力画像から深度を推定するために、深度推定モデル130のパラメータを洗練させる。
【0081】
<深度推定モデル>
図5は、1つ以上の実施形態による、深度推定モデルを使用する一般的なプロセス500を説明するフローチャートである。プロセス500は、与えられた入力画像から深度マップをもたらす。プロセス500は、トレーニングされた深度推定モデルを有するクライアントデバイス110によって遂行され得る。クライアントデバイスは、汎用コンピューティングデバイスであってもよく、また、カメラを備えていてもよい。いくつかの実施形態では、クライアントデバイスは、上記
図1~
図3に記載されている並行現実ゲームにおいて導入される。以下の説明はクライアントデバイスのコンテキストの範囲内であるが、プロセス500は他のコンピューティングデバイス上でも実行され得る。
【0082】
クライアントデバイス110は、シーンの画像を受信する(510)。シーンの画像は、クライアントデバイス110の構成要素である又はクライアントデバイス110の外部にあるカメラによってキャプチャされ得る。並行現実ゲームのコンテキストにおいて、シーンは、仮想世界における仮想位置にマッピングされ得る現実世界の位置であり得る。シーンの画像は、その画像をキャプチャしたカメラの幾何学的特性に対応する内部値を有してもよい。画像は、カメラによってキャプチャされた単一の画像であり得る。あるいは、画像は、カメラによってキャプチャされているビデオのフレームであり得る。
【0083】
クライアントデバイス110は、シーンの画像をトレーニングされた深度推定モデルに入力する(520)。深度推定モデルは、深度推定システム170によって、例えば、
図4のプロセス400、
図6のプロセス600、又はそれらのいくつかの組み合わせを介してトレーニングされ得る。深度推定モデルは、シーンの画像を受信し、いくつかの実施形態では、その画像の内部値も受信する。
【0084】
クライアントデバイス110は、トレーニングされた深度推定モデルによって、シーンの画像に対応する当該シーンの深度マップを生成する(530)。深度マップの各ピクセルは、シーンの画像内の対応するピクセルにおける面の相対距離を表す深度値を有する。深度推定では、シーンの画像を受信し、深度推定モデルについてトレーニングされたパラメータに基づいて深度マップを出力する。
【0085】
クライアントデバイス110は、生成された深度マップを用いて様々な追加の動作を実行することができる。例えば、クライアントデバイス110は、深度マップを用いて現実世界環境内を移動することができる自律運転車両であり得る。別の例では、クライアントデバイス110は、拡張現実システムの一部であり、仮想コンテンツで拡張された現実世界の画像を提示することができる。このタスクを達成するために、クライアントデバイス110は、生成された深度マップを利用して仮想コンテンツを生成することができる。その結果、仮想コンテンツは、現実世界の画像内の物体と正しい深度で相互作用する。拡張コンテンツを生成する工程を以下に示す。
【0086】
追加の実施形態では、クライアントデバイス110は、シーンの深度マップに基づいての仮想コンテンツを生成する(540)。仮想コンテンツは、例えば、ゲームデータベース115に記憶されている、並行現実ゲームのコンテンツから得ることができる。生成される仮想コンテンツは、シーンの画像を拡張できる拡張現実コンテンツであり得る。例えば、シーンの深度を理解した上で、シーン内を移動できる仮想キャラクタが生成される。一例では、仮想キャラクタがユーザに向かって通りを歩いてくるにつれて、仮想キャラクタのサイズが大きくなり得る。別の例では、仮想キャラクタは、木の後ろに隠れることができ、そこで仮想キャラクタの一部が木によって遮られる。
【0087】
クライアントデバイス110は、仮想コンテンツを用いて拡張されたシーンの画像を表示する(550)。クライアントデバイスは、電子ディスプレイを有する。電子ディスプレイは、拡張仮想コンテンツと共に、カメラによってキャプチャされたビデオの一定のフィードを提供できる。
【0088】
上記の例に従うと、並行現実ゲームは、目標として仮想キャラクタとの相互作用を提供することができる。仮想キャラクタと相互作用するために、モバイルデバイスのユーザは、仮想キャラクタをカメラの視野内に維持しながら、当該ユーザのモバイルデバイスを動かさなければならない場合がある。ユーザがモバイルデバイスを動かすと、モバイルデバイスは、ユーザのモバイルデバイスの動きに応じてシーンが変化するにつれて、シーンの深度情報を反復的に生成するために使用することができるビデオ又は画像データを連続的にキャプチャすることができる。モバイルデバイスは、生成された深度情報に基づいて仮想キャラクタを更新しながら、ディスプレイ上のビデオフィードを更新することができる。その結果、ユーザは、仮想キャラクタを、シーン内で常に適切に相互作用しているものとして、例えば、物体を貫いて歩いていないもの、または、ある部分を遮る物体なしに遮られている部分を有さないものなどとして知覚するであろう。
【0089】
<コンピューティングシステムの例>
図6は、一実施形態による、コンピューティングデバイスのアーキテクチャでの一例ある。
図6は、本明細書に記載される1つ以上のエンティティの一部又は全部として使用されるコンピュータの物理的コンポーネントを例示する大まかなブロック図を示しているが、一実施形態によれば、コンピュータは、
図6に提供されるコンポーネントの追加、削減、又は変形を含んでいてもよい。
図6はコンピュータ600を示しているが、この図は、本明細書に記載される実施形態の構造的概略図としてではなく、コンピュータシステムに存在し得る種々の特徴の機能的説明として意図されている。実際には、また、当業者によって認識されるように、別々に示されたアイテムを組み合わせることができ、いくつかのアイテムを分離することもできる。
【0090】
図6には、チップセット604に接続された少なくとも1つのプロセッサ602が図示されている。また、チップセット604に接続されているのは、メモリ606、ストレージデバイス608、キーボード610、グラフィックアダプタ612、ポインティングデバイス614、及びネットワークアダプタ616である。ディスプレイ618は、グラフィックアダプタ612に結合されている。一実施形態では、チップセット604の機能は、メモリコントローラハブ620及びI/Oハブ622によって提供される。別の実施形態では、メモリ606は、チップセット604の代わりにプロセッサ602に直接結合されている。いくつかの実施形態では、コンピュータ600は、これらの構成要素を相互接続するための1つ以上の通信バスを有する。1つ以上の通信バスは、必要に応じて、システム構成要素間の通信を相互接続及び制御する回路(チップセットと呼ばれることもある)を有していてもよい。
【0091】
ストレージデバイス608は、ハードドライブ、コンパクトディスク読み取り専用メモリ(CD-ROM)、DVD、又はソリッドステートストレージデバイス、又はその他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、又はその他の磁気ストレージデバイス、磁気ディスクストレージデバイス、光ディスクストレージデバイス、フラッシュメモリデバイス、又はその他の不揮発性ソリッドステートストレージデバイスなどの任意の非一時的コンピュータ可読記憶媒体である。このようなストレージデバイス608は、永続メモリと呼ばれることもある。ポインティングデバイス614は、マウス、トラックボール、又はその他のタイプのポインティングデバイスであり、キーボード610と組み合わせて使用されて、コンピュータ600にデータを入力する。グラフィックアダプタ612は、画像及びその他の情報をディスプレイ618に表示する。ネットワークアダプタ616は、コンピュータ600をローカル又はワイドエリアネットワークに結合する。
【0092】
メモリ606は、プロセッサ602によって使用される命令及びデータを保持する。メモリ606は、非永続メモリであり、その例としては、DRAM、SRAM、DDR RAM、ROM、EEPROM、フラッシュメモリなどの高速ランダムアクセスメモリが挙げられる。
【0093】
当技術分野で知られているように、コンピュータ600は、
図6に示されるものとは異なる及び/又は他の構成要素を有することができる。更に、コンピュータ600は、特定の図示された構成要素を有していなくてもよい。一実施形態では、サーバとして機能するコンピュータ600は、キーボード610、ポインティングデバイス614、グラフィックアダプタ612、及び/又はディスプレイ618を有していなくてもよい。更に、ストレージデバイス608は、(例えば、記憶領域ネットワーク(SAN)内に組み込まれているものとして)コンピュータ600からローカル及び/又は遠隔であり得る。
【0094】
当技術分野で知られているように、コンピュータ600は、本明細書に記載の機能を提供するためのコンピュータプログラムモジュールを実行するように適合されている。本明細書で使用される場合、「モジュール」という用語は、特定の機能を提供するために利用されるコンピュータプログラムロジックを指す。したがって、モジュールは、ハードウェア、ファームウェア、及び/又はソフトウェアで実装することができる。一実施形態では、プログラムモジュールは、ストレージデバイス608に記憶され、メモリ606にロードされ、プロセッサ602によって実行される。
【0095】
<その他の考慮事項>
上記の説明のいくつかの部分は、アルゴリズム的プロセス又は動作の観点から実施形態を説明している。これらのアルゴリズムの説明及び表現は、データ処理技術の当業者によって一般的に使用され、彼らの作業の内容を効果的に当業者に伝える。これらの動作は、機能的、計算的、又は論理的に説明されているが、プロセッサ又は同等の電気回路、マイクロコードなどによって実行される命令を含むコンピュータプログラムによって実装されると理解される。更に、これらの機能動作の配置をモジュールと呼ぶことは、一般性を失うことなく、時として便利であることも証明されている。
【0096】
本明細書で使用される場合、「一実施形態」又は「実施形態」への言及は、実施形態に関連して説明される特定の要素、特徴、構造、又は特性が少なくとも1つの実施形態に含まれることを意味する。本明細書の各所に記載されている「一実施形態では」という語句は、必ずしも同一の実施形態を指すとは限らない。
【0097】
いくつかの実施形態は、それらの派生物と共に「結合された」及び「接続された」という表現を使用して説明され得る。これらの用語は、相互の同義語として意図されていないことを理解されたい。例えば、いくつかの実施形態は、2つ以上の要素が互いに直接物理的又は電気的に接触していることを示すために用語「接続された」を使用して説明され得る。別の例では、いくつかの実施形態は、2つ以上の要素が直接物理的に又は電気的に接触にあることを示すために用語「結合された」を使用して説明され得る。ただし、「結合された」という用語は、2つ以上の要素が互いに直接接触していないが、それでも互いに協力又は相互作用していることを意味する場合もある。実施形態は、この文脈に限定されない。
【0098】
本明細書で使用される場合、「含む」、「含み」、「含んで」、「有する」、「有し」という用語、又はそれらの他の変形は、非排他的な包含を網羅することを意図している。例えば、要素のリストを含むプロセス、方法、物品、又は装置は、必ずしもそれらの要素のみに限定されるわけではなく、そのようなプロセス、方法、物品、又は装置に明示的にリストされていない、又は固有ではない他の要素を含み得る。更に、明示的に反対の記載がない限り、「又は」は包含的な「又は」を意味し、排他的な「又は」を意味するものではない。例えば、条件「A又はB」は、Aが真(又は存在)かつBが偽(又は存在しない)であること、Aが偽(又は存在しない)かつBが真(又は存在)であること、A及びBがともに真(又は存在)であることのいずれかによって満たされる。
【0099】
更に、「a」又は「an」の使用は、実施形態の要素及び構成要素を説明するために使用される。これは単に便宜のために、そして開示の一般的な意味を与えるために行われる。この説明は、1つ又は少なくとも1つを含むように読む必要があり、別の意味であることが明らかでない限り、単数形には複数形も含まれる。
【0100】
この開示を読むと、当業者は、システムのためのさらに別の構造的及び機能的設計、並びに真正なビジネスに対応するオンラインサービスプロバイダとのアカウントを検証するためのプロセスを理解するであろう。したがって、特定の実施形態及び用途が例示及び説明されてきたが、説明された主題は、本明細書に開示された正確な構造及び構成要素に限定されず、当業者に明らかな種々の修正、変更及び変形が、開示されている方法及び装置の構成、動作及び詳細においてなされ得ることを理解されたい。保護の範囲は、以下のクレームによってのみ制限されるべきである。