詳細な説明
実施形態は、画像データを取得するセンサシステムと、画像データの画像フレームに基づいて深度マップを生成する(たとえば、単一の画像フレームを使用して深度マップを生成する)ように構成されたニューラルネットワークとを含む、深度推定システムを提供する。いくつかの例では、ニューラルネットワークによって生成された深度マップは、第1のスケールに関連付けられていてもよい(たとえば非メートル法のマップ)。ニューラルネットワークによって生成された深度マップは、アフィン不変量深度マップであってもよく、それは、スケール/シフトに依存するものの、メートル法のスケール(または大英帝国単位系)に関連付けられていない深度マップである。深度推定システムは、1つ以上のソースから深度推定値(たとえば、第2のスケール(たとえばメートル法のスケール)に従った深度値を有する深度推定値)を取得する深度推定値生成器と、深度推定値を使用して、ニューラルネットワークによって生成された深度マップを、第2のスケール(たとえばメートル法のスケール)を有する深度マップに変換するように構成された深度マップ変換器とを含む。第1および第2のスケールは、異なる基準を用いる2つの異なる測定系に基づき得る、異なるスケールであってもよい。いくつかの例では、メートル法の深度マップとは、各画素が、画像における対応する画素についての、メートル法のスケールに従ったメートル法の深度値(たとえばメートル単位)を表わす、画像を指し得る。深度推定値生成器によって取得されたメートル法の深度推定値は、スパース(疎な)深度推定値(たとえば、画像データにおける画素のすべてではなく、それらのうちのいくつかについての深度推定値)と考えられてもよい。いくつかの例では、メートル法の深度推定値は、画像データにおける画素の部分集合に関連付けられる。深度マップ変換器は、スパース深度推定値を使用して、ニューラルネットワークによって生成された深度マップのための第2のスケール(たとえばメートル法のスケール)を提供する。いくつかの例では、実施形態は、メートル法の深度推定値がスパース部分集合についてのみ存在するかもしれない場合に、すべての画素についてメートル法のスケールを提供することができるシステムを提供し、密なメートル法の深度マップは、ダウンストリームアプリケーション(たとえば3D再構築、平面発見など)のために、疎なメートル法の深度に対する技術的利点を提供する。
深度推定システムは、単眼深度ニューラルネットワークにおけるスケール/シフト曖昧性(または、一般にアフィン曖昧性と呼ばれる)に対する解決策を提供し得る。たとえば、深度推定システムは、単眼機械学習(machine-learning:ML)深度モデルにおけるアフィン曖昧性を解決するために、メートル法の深度のスパースソースを使用してもよい。アフィン曖昧性は、現実世界のスケール(たとえばメートル法のスケール)を必要とする(または当該スケールから利益を得る)いくつかのアプリケーションについては、困難をもたらす場合がある。たとえば、モバイル拡張現実(AR)アプリケーションは、現実世界の寸法を有するカメラビューに仮想オブジェクトを配置することを伴う場合がある。現実世界のスケールでオブジェクトをレンダリングするために、仮想オブジェクトが配置される表面の深度をメートル単位で推定することが必要とされる場合がある。ここに説明される実施形態によれば、深度推定システムによって生成されたメートル法の深度マップは、画像データにおける平面領域を推定するために使用されてもよく、ここで平面領域は、仮想オブジェクトを取り付けるための表面として使用される。
いくつかの従来のARアプリケーションでは、表面は3次元(3D)点群で推定されるが、これらのアプローチは、ユーザが仮想オブジェクトを迅速に(たとえば直ちに)シーンに配置することを可能にしないかもしれない。むしろ、ユーザは、十分な量の3D点の検出およびその後の平面検出にとって十分なテクスチャを有する平面を走査し、それは、ARセッションが複数の平面を検出しないこと、および/または、平面が検出されるのに比較的長い時間がかかることをもたらす場合がある。しかしながら、深度推定システムによって生成されたメートル法の深度マップを使用することにより、平面領域を検出するための待ち時間を減少させることができる。たとえば、深度推定システムは、ニューラルネットワークを使用して、配置されたオブジェクトのスケール/平面深度を予測することによって、配置待ち時間を減少させ得る(たとえば、単一の画像または少数の画像から深度を推定するため、ユーザによる動きをそれほど必要としなくなる)。さらに、深度推定システムは、白いテーブルなどの低テクスチャ表面から深度を予測し得る。また、深度推定システムによって生成されたメートル法の深度マップは、ロボティックを含む(ARアプリケーションの他の)多種多様のアプリケーションのために使用されてもよいということに留意されたい。
いくつかの例では、深度マップ変換器は、1つ以上の他の信号を使用して、ニューラルネットワークによって生成された深度マップのための第2のスケール(たとえばメートル法のスケール)を提供することを支援する。いくつかの例では、ニューラルネットワークは表面法線を予測し、深度マップ変換器は、予測された表面法線をスパース深度推定値とともに使用して、ニューラルネットワークによって生成された深度マップのための第2のスケール(たとえばメートル法のスケール)を提供する。
予測された深度の精度は、深度および表面法線を予測することによって高められ得る。予測された深度と表面法線との整合性を促すために、自己整合性損失(たとえば、教師なし自己整合性損失)が、ニューラルネットワークの訓練または調節中に使用される。たとえば、ニューラルネットワークは、RGB画像から第1の表面法線を予測し、深度マップ変換器は、メートル法の深度マップから第2の表面法線を予測する。自己整合性損失は、第1の表面法線と第2の表面法線との差に基づいて計算され、自己整合性損失は教師あり損失に加算される。教師あり損失は、第1の表面法線とグラウンドトゥルース法線との差に基づいて計算される。自己整合性損失は、ニューラルネットワークに、第1の表面法線と第2の表面法線との間のいかなる偏差も最小化するよう促す。
いくつかの例では、深度マップ変換器は、重力方向および平面領域を受信してもよい。重力方向は、加速度計から取得される。平面領域は、ARセッション中に視覚的特徴点(たとえばSLAM点)を使用して平面生成器によって推定されてもよい。深度マップ変換器は、重力方向および平面領域を(スパース深度推定値とともに)使用して、ニューラルネットワークによって生成された深度マップのための第2のスケール(たとえばメートル法のスケール)を提供してもよい。
深度マップ変換器は、スパース深度推定値とニューラルネットワークによって生成された深度マップとの間のオフセットに基づいてアフィンパラメータ(たとえばシフト、スケール)を推定するためにパラメータ推定アルゴリズムを実行するように構成されたパラメータ推定解決器を含んでいてもよい。いくつかの例では、パラメータ推定解決器は、スケールおよびシフトを推定するための目的関数を解く、ランダムサンプルコンセンサス(RANSAC)ベースの解決器である。いくつかの例では、パラメータ推定解決器は、深度マップのためのアフィンパラメータを推定し、それを第2のスケール(たとえばメートル法のスケール)に変換するために、RANSACループ内で最小自乗パラメータ推定問題を解くように構成される。
いくつかの例では、ニューラルネットワークは、単眼深度ニューラルネットワークと考えられる。なぜなら、ニューラルネットワークは、単一の画像フレームに基づいて深度マップを予測するためである。いくつかの例では、ニューラルネットワークは、赤-緑-青(red-green-blue:RGB)画像から画素ごとの深度(pixel-wise depth)を予測するように構成されUネットアーキテクチャを含む。いくつかの例では、ニューラルネットワークは、ニューラルネットワークがモバイルコンピューティングデバイス(たとえば、スマートフォン、タブレットなど)上で実行されることを可能にする特徴を含む。たとえば、ニューラルネットワークは、深度方向に(depth-wise)分離可能な畳み込みを使用する。深度方向に分離可能な畳み込みは、標準の畳み込みを、深度方向の畳み込み(depthwise convolution)と、点ごとの畳み込み(pointwise convolution)と呼ばれる1×1の畳み込みとに因数分解する、因数分解された畳み込みを含む。この因数分解は、計算およびモデルサイズを減少させる効果を有する。いくつかの例では、ニューラルネットワークはブラープール(Blurpool)符号器を使用してもよく、それは、ネットワークを、回転、スケーリング、ぶれ、およびノイズ変形などの破損に対してより頑強で安定したものにする、組合されたアンチエイリアスおよびサブサンプリング動作であってもよい。いくつかの例では、ニューラルネットワークは双線形アップサンプリングを含んでいてもよく、それはパラメータを転置畳み込みに減少させることができ、したがって、ネットワークのサイズを減少させる。これらのおよび他の特徴を、図を参照してさらに説明する。
図1A~1Gは、一局面に従った深度推定システム100を示す。深度推定システム100は、(1つ以上のソースから取得された)深度推定値108に基づく深度マップ138と、ニューラルネットワーク118によって生成された深度マップ120とを生成する。ニューラルネットワーク118によって生成された深度マップ120は、第1のスケールを有する。いくつかの例では、第1のスケールは、非メートル法のスケールである。深度マップ138は、第2のスケールを有する。第1および第2のスケールは、異なる基準を用いる2つの異なる測定系に基づく。いくつかの例では、第2のスケールは、メートル法のスケールである。深度推定システム100は、第1のスケールを有する深度マップ120を、第2のスケールを有する深度マップ138に変換するように構成される。第2のスケールを有する深度マップ138は、拡張現実、ロボティック、自然なユーザインターフェイス技術、ゲーミング、または他の用途を制御するために使用されてもよい。
深度推定システム100は、画像データ104を取得するセンサシステム102を含む。センサシステム102は、1つ以上のカメラ107を含む。いくつかの例では、センサシステム102は、単一のカメラ107を含む。いくつかの例では、センサシステム102は、2つ以上のカメラ107を含む。センサシステム102は、慣性運動ユニット(inertial motion unit:IMU)を含んでいてもよい。IMUは、コンピューティングデバイスの運動、動き、および/または加速度を検出してもよい。IMUは、たとえば、加速度計(たとえば図1Fの加速度計121)、ジャイロスコープ、磁力計、および他のそのようなセンサといった、さまざまな異なるタイプのセンサを含んでいてもよい。センサシステム102は、光センサ、音声センサ、距離および/または近接センサ、容量性センサなどの接触センサ、タイマー、および/または他のセンサ、および/またはセンサの異なる組合せといった、他のタイプのセンサを含んでいてもよい。
深度推定システム100は1つ以上のプロセッサ140を含み、それは、1つ以上のマシン実行可能命令またはソフトウェア、ファームウェア、もしくはそれらの組合せを実行するように構成された基板において形成されてもよい。プロセッサ140は半導体ベースのものであってもよい。すなわち、プロセッサは、デジタル論理を行なうことができる半導体材料を含み得る。深度推定システム100はまた、1つ以上のメモリデバイス142を含み得る。メモリデバイス142は、プロセッサ140によって読出および/または実行可能なフォーマットで情報を格納する任意のタイプの記憶デバイスを含んでいてもよい。メモリデバイス142は、プロセッサ140によって実行されるとここに説明される動作のいずれかを行なうアプリケーションおよびモジュールを格納してもよい。いくつかの例では、アプリケーションおよびモジュールは、外部記憶デバイスに格納され、メモリデバイス142にロードされてもよい。
ニューラルネットワーク118は、センサシステム102によって取り込まれた画像データ104に基づいて深度マップ120を生成するように構成される。いくつかの例では、ニューラルネットワーク118は、画像データ104の画像フレーム104aを受信し、画像フレーム104aに基づいて深度マップ120を生成する。画像フレーム104aは、赤-緑-青(RGB)画像である。いくつかの例では、ニューラルネットワーク118は、単一の画像フレーム104aを使用して深度マップ120を生成する。いくつかの例では、ニューラルネットワーク118は、2つ以上の画像フレーム104aを使用して深度マップ120を生成する。ニューラルネットワーク118によって生成された深度マップ120は、アフィン不変量深度マップであってもよく、それは、スケール/シフト次第であるものの、第2のスケール(たとえばメートル法のスケール)に関連付けられていない深度マップである。深度マップ120とは、各画素が、画像における対応する画素についての、非メートル法のスケールに従った深度値(たとえば0~1)を表わす、画像を指し得る。非メートル法のスケールとは、メートル系、国際単位系(international system of units:SI)、または測定の大英帝国単位系に基づいていないスケールであり得る。実施形態は、メートル法のスケール(またはメートル法の値)および非メートル法のスケール(または非メートル法の値)を参照して説明されるが、第1および第2のスケールは、異なる基準を用いる任意の2つの異なる測定系に基づき得る。深度マップ120は、カメラ視点からシーンにおけるオブジェクトの表面までの距離に関連する情報を含む画像を記述するために使用されてもよい。深度値は、カメラ視点からシーンにおけるオブジェクトの表面までの距離に反比例する。
ニューラルネットワーク118は、1つ以上の画像フレーム104a(または単一の画像フレーム104a)を使用して深度マップ120を生成するように構成された任意のタイプのディープニューラルネットワークであってもよい。いくつかの例では、ニューラルネットワーク118は、畳み込みニューラルネットワークである。いくつかの例では、ニューラルネットワーク118は、単眼深度ニューラルネットワークと考えられる。なぜなら、ニューラルネットワーク118は、単一の画像フレーム104aに基づいて深度マップ120を予測するためである。ニューラルネットワーク118は、画像フレーム104aから画素ごとの深度を予測するように構成される。いくつかの例では、ニューラルネットワーク118は、Uネットアーキテクチャ、たとえば、学習可能パラメータとのスキップ接続を有する符号器-復号器を含む。
いくつかの例では、ニューラルネットワーク118は、モバイルコンピューティングデバイス(たとえば、スマートフォン、タブレットなど)上で実行可能なサイズを有する。いくつかの例では、ニューラルネットワーク118のサイズは、150Mb未満である。いくつかの例では、ニューラルネットワーク118のサイズは、100Mb未満である。いくつかの例では、ニューラルネットワーク118のサイズは、約70Mb、または70Mb未満である。いくつかの例では、ニューラルネットワーク118は深度方向に分離可能な畳み込みを使用し、それは、標準の畳み込みを、深度方向の畳み込みと、点ごとの畳み込みと呼ばれる1×1の畳み込みとに因数分解する、因数分解された畳み込みの形式である。この因数分解は、計算およびモデルサイズを減少させる効果を有し得る。いくつかの例では、ニューラルネットワーク118はブラープール符号器を使用してもよく、それは、ネットワークを、回転、スケーリング、ぶれ、およびノイズ変形などの破損に対してより頑強で安定したものにする、組合されたアンチエイリアスおよびサブサンプリング動作であってもよい。いくつかの例では、ニューラルネットワーク118は双線形アップサンプリングを含んでいてもよく、それはパラメータを転置畳み込みに減少させることができ、したがって、ネットワークのサイズを減少させる。
いくつかの例では、ニューラルネットワーク118はまた、画像フレーム104aの表面配向を記述する表面法線122a(たとえば、シーンにおけるすべての可視表面)を予測する。いくつかの例では、表面法線122aは、画素ごとの法線、または画素ごとの表面配向を含む。いくつかの例では、表面法線122aは、表面法線ベクトルを含む。画像におけるある画素についての表面法線122aは、現実世界においてその画素によって表わされる3D表面の配向に対応する3次元ベクトルとして定義されてもよい。3D表面の配向は、現実世界の3D表面に対して垂直である方向ベクトルによって表わされる。いくつかの例では、ニューラルネットワーク118はまた、画像フレーム104a内の平面領域124を検出するように構成される。平面領域124は、垂直面および/または水平面を含んでいてもよい。
深度推定システム100は、画像データ104に関連付けられた深度推定値108(たとえば、メートル法の深度推定値)を取得する深度推定値生成器106を含む。深度推定値108は、画像データ104における画素のうちのいくつかについての、メートル法のスケールでの深度値を含んでいてもよい。たとえば、メートル法のスケールとは、メートル系および/または大英帝国単位系などの任意のタイプの測定系を指してもよい。深度推定値生成器106によって取得された深度推定値108は、スパース(疎な)深度推定値(たとえば、画像データにおける画素のすべてではなく、それらのうちのいくつかについての深度推定値)と考えられてもよい。たとえば、画像フレーム104aが10×10である場合、画像フレーム104aは100個の画素を含む。しかしながら、深度推定値108は、画素の部分集合についての、メートル法のスケールでの深度推定値を含んでいてもよい。対照的に、密な深度マップ(たとえば深度マップ120)は、画像における多数の画素、または画像における画素のすべてについての深度値(たとえば、非メートル法の深度値)を提供する。
深度推定値生成器106は、画像データ104に基づいて深度推定値108を生成する(または取得する)ように構成された任意のタイプのコンポーネントであってもよい。いくつかの例では、深度推定値生成器106はまた、ポーズデータ110を取得し、画像データ104内の平面領域114を識別する。ポーズデータ110は、深度推定システム100を実行するデバイス(たとえば、深度推定システム100を有するスマートフォン)のポーズ(たとえば、位置および配向)を識別してもよい。いくつかの例では、ポーズデータ110は、デバイスの5つの自由度(degree-of-freedom:DoF)位置を含む。いくつかの例では、ポーズデータ110は、デバイスの6つのDoF位置を含む。いくつかの例では、深度推定値生成器106は、任意のタイプの平面検出アルゴリズム(または平面適合アルゴリズム)を使用して画像データ104内の平面領域114を検出するように構成された平面生成器123を含む。平面領域114は、画像データ104内のオブジェクト(たとえばテーブル、壁など)の平面であってもよい。
図1Bを参照して、深度推定値生成器106は、視覚的慣性運動追跡器160、深度センサ164、デュアル画素深度推定器166、運動ステレオ深度推定器168、スパースアクティブ深度推定器170、および/または事前計算スパースマップ172を含んでいてもよい。深度推定値生成器106のコンポーネントの各々は、深度推定値108を取得するための別個のソースを表わしていてもよい。たとえば、各コンポーネントは深度推定値108を独立して生成してもよく、ここで深度推定値生成器106は、1つのコンポーネントまたは複数のコンポーネントを含んでいてもよい。いくつかの例では、深度推定値生成器106は、1つのソース、たとえば、視覚的慣性運動追跡器160、深度センサ164、デュアル画素深度推定器166、運動ステレオ深度推定器168、スパースアクティブ深度推定器170、または事前計算スパースマップ172のうちの1つを含んでいてもよい。いくつかの例では、深度推定値生成器106が複数のソース(たとえば複数のコンポーネント)を含む場合、深度推定値生成器106は、深度マップ138を生成する際に使用するためにソースのうちの1つを選択してもよい。いくつかの例では、深度推定値生成器106が複数のソース(たとえば複数のコンポーネント)を含む場合、深度推定値生成器106は、深度マップ138を生成する際に使用するために複数のソースを選択してもよい。
視覚的慣性運動追跡器160は、画像データ104を表わす視覚的特徴点162を生成するように構成される。視覚的特徴点162は、深度推定値108に関連付けられる。たとえば、各視覚的特徴点162は、メートル法のスケールでの深度値を含んでいてもよい。図1Cは、カメラ107によって取り込まれたシーン125を示し、ここでシーン125は、画像データ104を使用して視覚的慣性運動追跡器160によって生成された視覚的特徴点162を示す。視覚的特徴点162は、メートル法のスケールでの深度値を含んでいてもよく、ここで深度値は、カメラ視点からシーン125におけるオブジェクトの表面までの距離に反比例する。
視覚的特徴点162は、ユーザ環境を表わす、3D空間における複数の点(たとえば関心点)である。いくつかの例では、各視覚的特徴点162は、3D空間における固定された位置および配向の近似値を含み、これらの視覚的特徴点162は、時間がたつにつれて更新されてもよい。たとえば、ARセッション174中、ユーザは、自分の携帯電話のカメラをシーン125の周りで動かしてもよく、ここで視覚的慣性運動追跡器160は、シーン125を表わす視覚的特徴点162を生成してもよい。いくつかの例では、視覚的特徴点162は、同時ローカライゼーションおよびマッピング(simultaneous localization and mapping:SLAM)点を含む。いくつかの例では、視覚的特徴点162は点群と呼ばれる。いくつかの例では、視覚的特徴点162は特徴点と呼ばれる。いくつかの例では、視覚的特徴点162は3D特徴点と呼ばれる。いくつかの例では、視覚的特徴点162は、画像フレーム104aあたり200~400個という範囲内にある。
図1Bを再度参照して、いくつかの例では、視覚的慣性運動追跡器160は、カメラ107を使用することによって空間におけるデバイス(たとえばスマートフォン)の動きを推定することができる追跡アルゴリズムであるSLAMアルゴリズムを実行するように構成される。いくつかの例では、SLAMアルゴリズムはまた、平面領域114を検出するように構成される。いくつかの例では、SLAMアルゴリズムは、各画像のキーポイント(たとえば視覚的特徴点162)および記述子を分析し、これらの記述子をフレームごとに追跡することによって、デバイスの位置および配向(たとえばポーズデータ110)を繰り返し計算し、それは環境の3D再構築を可能にし得る。
深度センサ164は、画像データ104に基づいて深度推定値108を生成するように構成される。いくつかの例では、深度センサ164は、光検出測距(light detection and ranging:LiDAR)センサを含む。デュアル画素深度推定器166は、機械学習モデルを使用して、カメラのデュアル画素自動焦点システムから深度を推定する。デュアル画素は、各半画素が主レンズの開口の異なる半分を見るように各画素を半分に分割することによって動作する。これらの半画素の画像の各々を別々に読み出すことにより、シーンのわずかに異なる2つのビューが取得され、これらの異なるビューは、深度推定値108を生成するためにデュアル画素深度推定器166によって使用される。運動ステレオ深度推定器168は、深度推定値108を生成するためのステレオマッチングアルゴリズムにおいて複数の画像を使用してもよい。いくつかの例では、単一のカメラが、複数の画像を取り込むためにシーン125の周りで動かされてもよく、ここでこれらの画像は、メートル法の深度を推定するためにステレオマッチするために使用される。スパースアクティブ深度推定器170は、スパース飛行時間推定器またはスパース位相検出自動焦点(phase detection autofocus:PDAF)推定器を含んでいてもよい。いくつかの例では、事前計算スパースマップ172は、視覚的位置決めサービスによって使用されるスパースマップである。
図1Aを再度参照して、深度推定システム100は、深度推定値108を使用して、ニューラルネットワーク118によって生成された深度マップ120を深度マップ138に変換するように構成された深度マップ変換器126を含む。深度マップ138とは、各画素が、画像データ104における対応する画素についての、メートル法のスケールに従った深度値(たとえばメートル単位)を表わす、画像を指し得る。深度マップ変換器126は、深度推定値108を使用して、ニューラルネットワーク118によって生成された深度マップ120のためのメートル法のスケールを提供するように構成される。
深度マップ変換器126は、ニューラルネットワーク118によって生成された深度マップ120と、深度推定値108とに基づいて、アフィンパラメータ132を推定するように構成される。アフィンパラメータ132は、深度マップ120のスケール134およびシフト136を含む。スケール134は、深度マップ120の再サイジング量を示すスケール値を含む。シフト136は、深度マップ120の画素がシフトされる量を示すシフト値を含む。なお、スケール134(またはスケール値)は、異なる測定系を指す上述の「第1のスケール」および「第2のスケール」(たとえば、第1のスケールは非メートル法のスケールであってもよく、第2のスケールはメートル法のスケールであってもよい)とは完全に異なるサイジング量を指す。深度マップ変換器126は、アフィンパラメータ132を使用して深度マップ120を深度マップ138に変換するように構成される。いくつかの例では、スケール134およびシフト136は、乗算されて深度マップ120での各画素における値に加算されると深度マップ138を生成する、2つの数(たとえば、s=スケール、t=シフト)を含み(たとえば、D138(x,y)=s*D120(x,y)+t)、式中、D120(x,y)は、深度マップ120における画素位置(x,y)での値である)。アフィンパラメータ132は、深度推定値108のスパースセットから推定され、次に、上述の式を使用して深度マップ120におけるすべての画素に適用され得る。深度マップ120はすべての画素について有効な深度を有するため、深度マップ138も、すべてについてメートル法のスケールを有するであろう。
深度マップ変換器126は、深度推定値108を深度マップ120と整列させるという目的を最小化する最適化問題(たとえば目的関数)を解くために、パラメータ推定アルゴリズムを実行するように構成される。言い換えれば、深度マップ変換器126は、アフィンパラメータ132を推定するために、深度推定値108を深度マップ120と整列させる目的関数を最小化するように構成される。たとえば、上述のように、深度推定値生成器106によって取得された深度推定値108は、スパース深度推定値(たとえば、画像データ104における画素のすべてではなく、それらのうちのいくつかについての深度推定値)と考えられてもよい。たとえば、画像フレーム104aが10×10である場合、画像フレーム104aは100個の画素を含む。深度推定値108は、画像フレーム104aにおける画素の部分集合(たとえば、10×10の画像の例では、100未満の何らかの数)についての、メートル法のスケールでの深度推定値を含んでいてもよい。しかしながら、深度マップ120は、画像における各画素についての深度値を含み、ここで深度値は、0~1の数といった非メートル法の単位である。メートル法の深度推定値108(たとえばメートル法の深度値)を有する各画素について、深度マップ変換器126は、深度マップ120における対応する深度値(たとえば非メートル法の深度値)を取得し、メートル法の深度値と非メートル法の深度値とを使用してスケール134およびシフト136を推定してもよく、それは、スケール134×非メートル法の深度値+シフト136-メートル法の深度値=0である場合に誤差を最小化することを含んでいてもよい。いくつかの例では、深度マップ変換器126は、アフィンパラメータ132を推定するために、ランダムサンプルコンセンサス(RANSAC)ループ内で最小自乗パラメータ推定問題を解くように構成される。
図1Dを参照して、深度マップ変換器126は、深度推定値108を深度マップ120に投影するように構成されたデータ投影器176を含んでいてもよい。深度推定値108が視覚的特徴点162を含む場合、データ投影器176は、視覚的特徴点162を深度マップ120に投影する。深度マップ変換器126は、深度推定値108を深度マップ120と整列させるという目的を最適化問題が最小化するアフィンパラメータ132(たとえばスケール134、シフト136)を推定するために最適化問題を解くように構成されたパラメータ推定解決器178を含んでいてもよい。いくつかの例では、パラメータ推定解決器178は、RANSACベースのパラメータ推定アルゴリズムを含む。いくつかの例では、パラメータ推定解決器178は、アフィンパラメータ132を推定するために、RANSACループ内で最小自乗パラメータ推定問題を解くように構成される。
図1Eは、パラメータ推定解決器178の例示的な動作を示す。動作101で、パラメータ推定解決器178は、深度推定値108と深度マップ120との間の深度オフセットに基づいて、スケール134およびシフト136を決定する。パラメータ推定解決器178は、深度推定値108および深度マップ120における任意の2点を使用して、スケール134(たとえば逆深度についてのスケール)およびシフト136(たとえば逆数についてのシフト)を、以下の式に基づいて計算する。
式(2):c=li-kdi
パラメータkはスケール134を示し、パラメータcはシフト136を示す。パラメータliは、(i番目の深度予測に対応する)i番目の推定値についての逆深度(たとえばメートル法の深度値)である。パラメータdiは、i番目の深度予測についての逆深度(たとえば非メートル法の深度値)である。パラメータljは、(j番目の深度予測に対応する)j番目の推定値についての逆深度(たとえばメートル法の深度値)である。パラメータdjは、j番目の深度予測についての逆深度(たとえば非メートル法の深度値)である。たとえば、liおよびljは、深度推定値108における2点(たとえば2つの画素)についてのメートル法の深度値を表わしていてもよく、diおよびdjは、深度マップ120における対応する2点(たとえば2つの画素)の非メートル法の深度値を表わしていてもよい。
動作103で、パラメータ推定解決器178は、他のどの点(たとえば画素)が上述の解(たとえば式(1)および式(2))のインライアであるかを識別するための評価方法を、以下の式に基づいて実行する。
式(3):e=(di-li)2
式中、e<tであり、tはインライアしきい値(たとえばRANSACインライアしきい値)である。たとえば、非メートル法の深度値とメートル法の深度値とを有する特定の点(たとえば画素)について、パラメータ推定解決器178は非メートル法の深度値(di)とメートル法の深度値(li)とを取得し、自乗差がインライアしきい値未満である場合、その点はインライアとして識別される。
動作105で、パラメータ推定解決器178は、評価方法からのコンセンサス推定値から推定値を改良するために、スケール134(k)およびシフト136(c)のための最小自乗解決器を実行するように構成される。
図1Aを再度参照して、深度マップ変換器126は、1つ以上の他の信号を使用して、ニューラルネットワーク118によって生成された深度マップ120のためのメートル法のスケールを提供することを支援してもよい。いくつかの例では、ニューラルネットワーク118は表面法線122aを予測してもよく、深度マップ変換器126は、予測された表面法線122aを深度推定値108とともに使用して、ニューラルネットワーク118によって生成された深度マップ120のためのメートル法のスケールを決定してもよい。たとえば、深度マップ変換器126は、深度マップ138から表面法線122bを予測し、深度マップ138から予測された表面法線122bとニューラルネットワーク118から予測された表面法線122aとの間のオフセットを使用して、アフィンパラメータ132を決定することを支援してもよい。たとえば、深度マップ変換器126は、深度マップ120と深度推定値108との間のオフセット、および、ニューラルネットワーク118から予測された表面法線122aと深度マップ138から予測された表面法線122bとの間のオフセットにペナルティを課すことができる目的関数を最小化してもよい。
いくつかの例では、深度マップ変換器126は、重力方向112および/または平面領域114を受信する。深度マップ変換器126は、重力方向112および平面領域114を(深度推定値108とともに)使用して、ニューラルネットワーク118によって生成された深度マップ120のためのメートル法のスケールを提供するように構成される。図1Fに示すように、重力方向112は、加速度計121から取得されてもよい。平面領域114は、画像データ104から検出されてもよい。いくつかの例では、図1Gに示すように、平面領域114は、視覚的特徴点162(たとえばSLAM点)を使用して平面生成器123によって推定されてもよい。たとえば、平面生成器123は、画像データ104における平面領域114を検出する平面検出アルゴリズム(または平面適合アルゴリズム)を実行してもよい。重力方向112および平面領域114を使用して、深度マップ変換器126は、重力方向112(または、座標系に依存して、重力方向112の反対)と一致するように水平表面領域の表面法線122bにペナルティを課すことができる目的関数を最小化してもよい。
図1Hに示すように、深度推定値108、ポーズデータ110、重力方向112、および平面領域114は、クライアントARアプリケーション173によって実行可能なARセッション174中に取得されてもよい。ARセッション174は、図4でさらに説明されるように、ユーザが多人数AR協調環境を作り出したかまたは当該環境に参加した場合に開始されてもよい。クライアントARアプリケーション173は、モバイルコンピューティングデバイス上にインストールされて(および、モバイルコンピューティングデバイスによって実行可能であって)もよい。いくつかの例では、クライアントARアプリケーション173は、1つ以上のARアプリケーションとともに動作するソフトウェア開発キット(software development kit:SDK)である。いくつかの例では、深度推定システム100の他のコンポーネント(たとえば、深度推定値生成器106、センサシステム102など)と組合されて、クライアントARアプリケーション173は、物理的空間に対するデバイスの位置を検出し追跡してポーズデータ110を取得し、異なるタイプの表面(たとえば、水平表面、垂直表面、角度のある表面)のサイズおよび場所を検出して平面領域114を取得し、加速度計121から重力方向112を取得し、深度推定値108(たとえば視覚的特徴点162)を生成するように構成される。ARセッション174中、ユーザは仮想オブジェクトをシーン125に追加することができ、次に、複数のユーザがAR環境に参加して、共有される物理的空間における異なる位置から同時にこれらの仮想オブジェクトを見て当該仮想オブジェクトと相互作用することができる。
図1Iに示すように、深度推定システム100は、ニューラルネットワーク118を訓練または更新するように構成された畳み込みニューラルネットワーク(convolutional neural network:CNN)訓練器155を含んでいてもよい。いくつかの例では、深度マップ138の精度は、深度および表面法線122aを予測することによって高められ得る。表面法線は、より高次の構造的優先事項(structural priority)として見られてもよい。なぜなら、同じ3D平面に属する画素はすべて、同じ法線を有するものの、必ずしも同じ深度を有さないためである。したがって、表面法線122aも予測するようにニューラルネットワーク118を訓練することにより、ニューラルネットワーク118は、シーン125における平面についてのより高次の知識を推論/推測するように訓練される。これは、仮想オブジェクトが通常配置されるシーン125における平面領域のためのより滑らかな深度をもたらし得る。
予測された深度と表面法線122aとの整合性を促すために、自己整合性損失182(たとえば、教師なし自己整合性損失)が、ニューラルネットワーク118の訓練中に使用される。たとえば、ニューラルネットワーク118は、画像フレーム104aから深度マップ120および表面法線122aを予測し、深度マップ変換器126は、深度マップ138から表面法線122bを予測する。自己整合性損失182は、表面法線122aと表面法線122bとの差に基づいて計算される。損失180(たとえば、教師あり損失)が、表面法線122aとグラウンドトゥルース(ground truth)法線122cとの差に基づいて計算される。総損失184が、損失180および自己整合性損失182に基づいて計算される(たとえば、損失180が自己整合性損失182に加算される)。自己整合性損失182は、ニューラルネットワーク118に、表面法線122aと表面法線122bとの間のいかなる偏差も最小化するよう促す。
図2は、ニューラルネットワーク218の一例を示す。ニューラルネットワーク218は、図1A~1Iのニューラルネットワーク118の一例であってもよく、それらの図を参照して説明された詳細のいずれかを含んでいてもよい。いくつかの例では、ニューラルネットワーク218は、畳み込みニューラルネットワークである。ニューラルネットワーク218は、画像フレーム204aを受信して、深度マップ220を生成する。深度マップ220は、図1A~1Iの深度マップ120の一例であってもよく、それらの図を参照して説明された詳細のいずれかを含んでいてもよい。また、いくつかの例では、ニューラルネットワーク218は、表面法線(たとえば図1A~1Iの表面法線122a)および平面領域124(たとえば図1A~1Iの平面領域124)を予測するように構成される。いくつかの例では、ニューラルネットワーク218は、赤-緑-青(RGB)画像から画素ごとの深度を予測するように構成されたUネットアーキテクチャを含み、ここでUネットアーキテクチャは、学習可能パラメータとのスキップ接続を有する符号器-復号器である。
ニューラルネットワーク118は、ダウンサンプラーユニット248-1、ダウンサンプラーユニット248-2、ダウンサンプラーユニット248-3、ダウンサンプラーユニット248-4、およびダウンサンプラーユニット248-5などの複数のダウンサンプラーユニットと、アップサンプラーユニット249-1、アップサンプラーユニット249-2、アップサンプラーユニット249-3、アップサンプラーユニット249-4、およびアップサンプラーユニット249-5などの複数のアップサンプラーユニットとを含んでいてもよい。各ダウンサンプラーユニット(たとえば、248-1、248-2、248-3、248-4、248-5)は、深度方向に分離可能な畳み込み252と、修正線形活性化関数(rectified linear activation function:ReLU)254と、最大プーリング演算256とを含む。各アップサンプラーユニット(たとえば249-1、249-2、249-3、249-4、249-5)は、深度方向に分離可能な畳み込み252と、修正線形活性化関数(ReLU)254と、双線形アップサンプリング演算258とを含む。最後のアップサンプラーユニット(たとえば249-5)の出力は、深度方向に分離可能な畳み込み252に提供され、次に修正線形活性化関数(ReLU)に提供される。
深度方向に分離可能な畳み込み252は、標準の畳み込みを、深度方向の畳み込みと、点ごとの畳み込みと呼ばれる1×1の畳み込みとに因数分解する、因数分解された畳み込みを含む。この因数分解は、計算およびモデルサイズを減少させる効果を有する。また、双線形アップサンプリング演算258の使用は、パラメータを転置畳み込みに減少させることができ、したがって、ネットワークのサイズを減少させる。いくつかの例では、ニューラルネットワーク218はブラープール符号器を使用してもよく、それは、ニューラルネットワーク218を、回転、スケーリング、ぶれ、およびノイズ変形などの破損に対してより頑強で安定したものにする、組合されたアンチエイリアスおよびサブサンプリング動作であってもよい。
図3は、メートル法の深度マップ338を使用して1つ以上の平面領域395(たとえばメートル法の平面領域)を検出または識別する平面生成器390の一例を示す。たとえば、平面領域395の場所およびサイズは、メートル法のスケールに従った情報によって識別されてもよい。いくつかの例では、平面生成器390は、図1A~1Iの深度推定システム100内に含まれており、それらの図を参照して説明された詳細のいずれかを含んでいてもよい。メートル法の平面領域とは、メートル法のスケールを用いる画像内のオブジェクトの平面であってもよい。いくつかの例では、平面生成器390は、メートル法の深度マップ338とポーズデータ310とを受信し、メートル法の深度マップ338から1つ以上の平面領域395を検出してもよい。
上述のように、アフィン曖昧性は、現実世界のスケールを必要とする(または当該スケールから利益を得る)いくつかのアプリケーションについては、困難をもたらす場合がある。たとえば、モバイルARアプリケーションは、現実世界の寸法を有するカメラビューに仮想オブジェクトを配置することを伴う場合がある。しかしながら、現実世界のスケールでオブジェクトをレンダリングするために、仮想オブジェクトが配置される表面の深度をメートル単位で推定することが必要とされる場合がある。ここに説明される実施形態によれば、(たとえば図1A~1Iの深度推定システム100によって生成された)メートル法の深度マップ338は、画像データにおける少なくとも1つの平面領域395を推定するために使用されてもよく、ここで、少なくとも1つの平面領域395は、仮想オブジェクトを取り付けるための表面として使用されるように構成される。メートル法の深度マップ338を使用することにより、平面領域395を検出するための待ち時間を減少させることができる。たとえば、深度推定システム(たとえば図1A~1Iの深度推定システム100)は、畳み込みニューラルネットワークを使用して、配置されたオブジェクトのスケール/平面深度を予測することによって、配置待ち時間を減少させ得る(たとえば、単一の画像または少数の画像から深度を推定するため、ユーザによる動きをそれほど必要としなくなる)。さらに、深度推定システムは、白いテーブルなどの低テクスチャ表面から深度を予測し得る。
平面生成器390は、メートル法の深度マップ338を点群394に変換するように構成されたマップ変換器392を含んでいてもよい。平面生成器390は、点群394を使用して1つ以上の平面領域395を検出するように構成された平面適合アルゴリズムを実行する平面検出器396を含んでいてもよい。平面生成器390は、平面領域395を処理するように構成された検証モデル398を含み、それは、可視性および他の制約に基づいて1つ以上の平面領域395を拒否してもよい。
図4は、一局面に従ったARシステム450を示す。図4を参照して、ARシステム450は、第1のコンピューティングデバイス411-1と第2のコンピューティングデバイス411-2とを含み、第1のコンピューティングデバイス411-1のユーザと第2のコンピューティングデバイス411-2のユーザとは、共有されるAR環境401に含まれる1つ以上の仮想オブジェクト430を見て当該仮想オブジェクト430と相互作用することができる。図4は2つのコンピューティングデバイスを示しているが、実施形態は、共有されるAR環境401に参加することができる任意の数(たとえば3つ以上)のコンピューティングデバイスを包含する。第1のコンピューティングデバイス411-1と第2のコンピューティングデバイス411-2とは、1つ以上のアプリケーションプログラミングインターフェイス(application programming interface:API)を介して、サーバコンピュータ461によって実行可能なAR協調サービス415と通信するように構成される。
AR協調サービス415は、ユーザが共有できるマルチユーザまたは協調AR体験を生み出すように構成される。AR協調サービス415は、ネットワーク451を通して、第1のコンピューティングデバイス411-1と第2のコンピューティングデバイス411-2とを含む複数のコンピューティングデバイスと通信し、ここで第1のコンピューティングデバイス411-1のユーザと第2のコンピューティングデバイス411-2のユーザとは、同じAR環境401を共有してもよい。AR協調サービス415は、ユーザが他のユーザと共有できるマルチプレーヤーまたは協調AR体験を生み出すための3Dマップを作成することを可能にしてもよい。ユーザは仮想オブジェクト430をシーン425に追加することができ、次に、複数のユーザが、共有される物理的空間における異なる位置から同時にこれらの仮想オブジェクト430を見て当該仮想オブジェクト430と相互作用することができる。
第1のコンピューティングデバイス411-1および/または第2のコンピューティングデバイス411-2は、スマートフォン、タブレット、ラップトップ、ウェアラブルデバイスなどといった任意のタイプのモバイルコンピューティングシステムであってもよい。ウェアラブルデバイスは、頭部装着型ディスプレイ(head-mounted display:HMD)デバイス、たとえば、光学頭部装着型ディスプレイ(optical head-mounted display:OHMD)デバイス、透明ヘッドアップディスプレイ(heads-up display:HUD)デバイス、拡張現実(AR)デバイス、もしくは、センサ、ディスプレイ、および計算能力を有するゴーグルまたはヘッドセットなどの他のデバイスを含んでいてもよい。いくつかの例では、ウェアラブルデバイスはスマート眼鏡を含む。スマート眼鏡とは、眼鏡の形状に設計された光学頭部装着型ディスプレイである。たとえば、スマート眼鏡は、着用者が眼鏡を通して見るものの傍らに情報を追加する眼鏡である。
AR環境401は、ユーザのビュー内に存在する物理的空間と、1つ以上の仮想オブジェクト430が位置付けられる仮想空間とを伴ってもよい。図4に示す仮想オブジェクト430はボックスとして示されているが、ユーザが追加する任意のタイプの仮想オブジェクトを含んでいてもよい。AR環境401を提供(またはレンダリング)することは次に、ユーザには仮想オブジェクト430がユーザのビュー内の物理的空間に存在するかまたは重なっているように見えるように仮想オブジェクト430を表示することによって、物理的空間のユーザのビューを変更することを伴ってもよい。仮想オブジェクト430の表示はしたがって、仮想空間と物理的空間との間のマッピングに従っている。仮想オブジェクト430を重ねることは、たとえば、仮想オブジェクト430を物理的空間のユーザの光学視野に重ね合わせることによって、1つ以上のディスプレイスクリーン上に物理的空間のユーザのビューを再生することによって、および/または、他のやり方で、たとえばヘッドアップディスプレイ、モバイルデバイスディスプレイスクリーンなどを使用することによって、実現されてもよい。
第1のコンピューティングデバイス411-1および/または第2のコンピューティングデバイス411-2は、深度推定システム400を含む。深度推定システム400は、図1A~1Iの深度推定システム100の一例であってもよく、それらの図を参照して説明された詳細のいずれかを含んでいてもよい。深度推定システム400は、第1のコンピューティングデバイス411-1によって取り込まれた画像データを使用してメートル法の深度マップを生成し、メートル法の深度マップは、上述の手法のいずれかに従って1つ以上の平面領域495を検出するために使用される。いくつかの例では、平面領域495は、ユーザが平面領域495を見ることができるように、ユーザが仮想オブジェクト430を平面領域495に取り付けることができるように、ユーザに視覚的に示されてもよい。たとえば、第1のコンピューティングデバイス411-1のユーザは、仮想オブジェクト430を取り付けるために平面領域495を使用してもよい。第2のコンピューティングデバイス411-2が同じ物理的空間に入ると、AR協調サービス415は、AR環境401を第2のコンピューティングデバイス411-2のスクリーンにレンダリングしてもよく、そこでユーザは、第1のコンピューティングデバイス411-1のユーザによって追加された仮想オブジェクト430を見て当該仮想オブジェクト430と相互作用することができる。第2のコンピューティングデバイス411-2は、メートル法の深度マップを生成し、メートル法の深度マップを使用して1つ以上の平面領域495を検出するように構成された深度推定システム400を含んでいてもよく、第2のコンピューティングデバイス411-2のユーザは、1つ以上の他の仮想オブジェクト430を、検出された平面領域495に追加してもよく、そこで第1のコンピューティングデバイス411-1のユーザは、当該他の仮想オブジェクト430を見て当該他の仮想オブジェクト430と相互作用することができるであろう。
図5は、深度推定システムの例示的な動作を表わすフローチャート500を示す。これらの動作は図1A~1Iの深度推定システム100を参照して説明されるが、図5の動作は、ここに説明されるどのシステムにも適用可能であってもよい。図5のフローチャート500は連続する順序の動作を示すが、これは一例に過ぎないこと、および、追加のまたは代替的な動作が含まれ得ることが理解されるであろう。また、図5の動作および関連動作は、図示されたものとは異なる順序で、または並行して、または重複して実行されてもよい。
動作502は、センサシステム102から画像データ104を受信することを含む。動作504は、ニューラルネットワーク118が画像データ104に基づいて深度マップ120(たとえば第1の深度マップ)を生成することを含み、深度マップ120は第1のスケールを有する。動作506は、画像データ104に関連付けられた深度推定値108を取得することを含む。動作508は、深度推定値108を使用して深度マップ120を深度マップ138(たとえば第2の深度マップ)に変換することを含み、深度マップ138は第2のスケールを有する。第1および第2のスケールは、異なる基準を用いる2つの異なる測定系に基づき得る、異なるスケールである。いくつかの例では、第1のスケールは、非メートル法のスケールである。いくつかの例では、第2のスケールは、メートル法のスケールである。また、深度推定値108は、第2のスケールに対応する深度値を有する。
図6は、深度推定システムの例示的な動作を表わすフローチャート600を示す。これらの動作は図1A~1Iの深度推定システム100を参照して説明されるが、図6の動作は、ここに説明されるどのシステムにも適用可能であってもよい。図6のフローチャート600は連続する順序の動作を示すが、これは一例に過ぎないこと、および、追加のまたは代替的な動作が含まれ得ることが理解されるであろう。また、図6の動作および関連動作は、図示されたものとは異なる順序で、または並行して、または重複して実行されてもよい。
動作602は、ニューラルネットワーク118が画像フレーム104aに基づいて深度マップ120(たとえば第1の深度マップ)および第1の表面法線122aを予測することを含み、深度マップ120は第1のスケール(たとえば非メートル法のスケール)を有する。動作604は、画像データ104に関連付けられた深度推定値108を取得することを含む。いくつかの例では、深度推定値108は、第2のスケール(たとえばメートル法のスケール)に従った深度値を有する。動作606は、深度推定値108を使用して深度マップ120を深度マップ138(たとえば第2の深度マップ)に変換することを含み、深度マップ138は第2のスケール(たとえばメートル法のスケール)を有する。動作608は、深度マップ138から第2の表面法線122bを推定することを含む。また、第1および第2のスケールは、異なる基準を用いる2つの異なる測定系に基づき得る、異なるスケールであることに留意されたい。
動作610は、第1の表面法線122aと第2の表面法線122bとの差に基づいて自己整合性損失182を計算することを含む。いくつかの例では、自己整合性損失182は、教師なし損失である。いくつかの例では、フローチャート600は、第1の表面法線122aとグラウンドトゥルース法線122cとの差に基づいて損失180(たとえば教師あり損失)を計算することを含む。動作612は、自己整合性損失182に基づいてニューラルネットワーク118を更新することを含む。いくつかの例では、ニューラルネットワーク118は、自己整合性損失182および損失180に基づいて更新される。
図7は、深度推定システムの例示的な動作を表わすフローチャート700を示す。これらの動作は図1A~1Iの深度推定システム100および図4のARシステム450を参照して説明されるが、図7の動作は、ここに説明されるどのシステムにも適用可能であってもよい。図7のフローチャート700は連続する順序の動作を示すが、これは一例に過ぎないこと、および、追加のまたは代替的な動作が含まれ得ることが理解されるであろう。また、図7の動作および関連動作は、図示されたものとは異なる順序で、または並行して、または重複して実行されてもよい。
動作702は、センサシステム102から画像データ104を受信することを含む。動作704は、ニューラルネットワーク118が画像データ104に基づいて深度マップ120(たとえば第1の深度マップ)を生成することを含み、深度マップ120は第1のスケール(たとえば非メートル法のスケール)を有する。動作706は、画像データ104に関連付けられた深度推定値108を取得することを含む。いくつかの例では、深度推定値108は、第2のスケール(たとえばメートル法のスケール)に従った深度値を有する。動作708は、深度推定値108を使用して深度マップ120を深度マップ138(たとえば第2の深度マップ)に変換することを含み、深度マップ138は第2のスケール(たとえばメートル法のスケール)を有する。動作710は、深度マップ138を使用して画像データ104における少なくとも1つの平面領域495を推定することを含み、少なくとも1つの平面領域495は、拡張現実(AR)セッション174中に仮想オブジェクト430を取り付けるための表面として使用されるように構成される。
例1:深度推定のための方法であって、方法は、センサシステムから画像データを受信するステップと、ニューラルネットワークが画像データに基づいて第1の深度マップを生成するステップとを含み、第1の深度マップは第1のスケールを有し、方法はさらに、画像データに関連付けられた深度推定値を取得するステップと、深度推定値を使用して第1の深度マップを第2の深度マップに変換するステップとを含み、第2の深度マップは第2のスケールを有する、方法。
例2:ニューラルネットワークが画像データに基づいて表面法線を生成するステップをさらに含む、例1に記載の方法。
例3:第1の深度マップは、表面法線および深度推定値を使用して第2の深度マップに変換される、例1~2のいずれかに記載の方法。
例4:画像データに基づいて視覚的特徴点を生成するステップをさらに含み、視覚的特徴点は深度推定値に関連付けられる、例1~3のいずれかに記載の方法。
例5:深度センサから深度推定値を取得するステップをさらに含む、例1~4のいずれかに記載の方法。
例6:深度推定値は、モバイルコンピューティングデバイスによって実行可能な拡張現実(AR)セッション中に取得される、例1~5のいずれかに記載の方法。
例7:第1の深度マップと深度推定値との間のオフセットに基づいてアフィンパラメータを推定するステップをさらに含み、アフィンパラメータは、スケールおよびシフトを含み、第1の深度マップは、アフィンパラメータに基づいて第2の深度マップに変換される、例1~6のいずれかに記載の方法。
例8:ニューラルネットワークが画像データに基づいて第1の表面法線を予測するステップと、第2の深度マップから第2の表面法線を予測するステップとをさらに含む、例1~7のいずれかに記載の方法。
例9:第1の表面法線および第2の表面法線に基づいて自己整合性損失を計算するステップをさらに含む、例1~8のいずれかに記載の方法。
例10:自己整合性損失に基づいてニューラルネットワークを更新するステップをさらに含む、例1~9のいずれかに記載の方法。
例11:第2の深度マップを使用して画像データにおける少なくとも1つの平面領域を推定するステップをさらに含み、少なくとも1つの平面領域は、仮想オブジェクトを取り付けるための表面として使用されるように構成される、例1~10のいずれかに記載の方法。
例12:深度推定システムであって、画像データを取得するように構成されたセンサシステムと、画像データに基づいて第1の深度マップを生成するように構成されたニューラルネットワークとを含み、第1の深度マップは第1のスケールを有し、深度推定システムはさらに、画像データに関連付けられた深度推定値を取得するように構成された深度推定値生成器と、深度推定値および第1の深度マップに基づいてアフィンパラメータを推定し、アフィンパラメータを使用して第1の深度マップを第2の深度マップに変換するように構成された深度マップ変換器とを含み、第2の深度マップは第2のスケールを有する、深度推定システム。
例13:ニューラルネットワークは、モバイルコンピューティングデバイス上で実行されるように構成される、例12に記載の深度推定システム。
例14:視覚的特徴点を生成するように構成された視覚的慣性運動追跡器をさらに含み、視覚的特徴点は深度推定値に関連付けられる、例12~13のいずれかに記載の深度推定システム。
例15:深度推定値を取得するように構成された深度センサをさらに含む、例12~14のいずれかに記載の深度推定システム。
例16:深度推定値生成器は、拡張現実(AR)セッション中に深度推定値を取得するように構成され、深度推定値生成器は、ARセッション中に、ポーズデータ、重力方向、および/または画像データにおける1つ以上の平面領域の識別情報も取得するように構成される、例12~15のいずれかに記載の深度推定システム。
例17:アフィンパラメータは、第1の深度マップにおける各深度推定について、スケールおよびシフトを含む、例12~16のいずれかに記載の深度推定システム。
例18:深度マップ変換器は、スケールおよびシフトを推定するための目的関数を最小化する、ランダムサンプルコンセンサス(RANSAC)ベースの解決器を含む、例12~17のいずれかに記載の深度推定システム。
例19:ニューラルネットワーク訓練器をさらに含み、ニューラルネットワーク訓練器は、ニューラルネットワークを使用して画像データに基づいて第1の表面法線を予測し、第2の深度マップから第2の表面法線を予測し、第1の表面法線および第2の表面法線に基づいて自己整合性損失を計算し、第1の表面法線およびグラウンドトゥルース法線に基づいて損失を計算し、および/または、自己整合性損失および損失に基づいてニューラルネットワークを更新するように構成される、例12~18のいずれかに記載の深度推定システム。
例20:第2の深度マップを使用して画像データにおける少なくとも1つの平面領域を推定するように構成された平面生成器をさらに含み、少なくとも1つの平面領域は、仮想オブジェクトを取り付けるための表面として使用されるように構成され、平面生成器は、第2の深度マップを点群に変換するように構成されたマップ変換器と、点群を使用して平面適合アルゴリズムに従って少なくとも1つの平面領域を検出するように構成された平面検出器とを含む、例12~19のいずれかに記載の深度推定システム。
例21:少なくとも1つのプロセッサによって実行されると少なくとも1つのプロセッサに複数のステップを行なわせる実行可能命令を格納する、非一時的コンピュータ読取可能媒体であって、複数のステップは、センサシステムから画像データを受信するステップと、ニューラルネットワークが画像データに基づいて第1の深度マップを生成するステップとを含み、第1の深度マップは第1のスケールを有し、複数のステップはさらに、画像データに関連付けられた深度推定値を取得するステップと、深度推定値を使用して第1の深度マップを第2の深度マップに変換するステップとを含み、第2の深度マップは第2のスケールを有し、複数のステップはさらに、第2の深度マップを使用して画像データにおける少なくとも1つの平面領域を推定するステップを含み、少なくとも1つの平面領域は、拡張現実(AR)セッション中に仮想オブジェクトを取り付けるための表面として使用されるように構成される、非一時的コンピュータ読取可能媒体。
例22:実行可能命令は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、第1の深度マップと深度推定値との間のオフセットに基づいてアフィンパラメータを推定するステップを行なわせる命令を含み、アフィンパラメータは、スケールおよびシフトを含み、第1の深度マップは、アフィンパラメータに基づいて第2の深度マップに変換される、例21に記載の非一時的コンピュータ読取可能媒体。
例23:深度推定値は、視覚的慣性運動追跡器、深度センサ、デュアル画素深度推定器、運動ステレオ深度推定器、スパースアクティブ深度推定器、および/または事前計算スパースマップのうちの少なくとも1つから取得される、例21~22のいずれかに記載の非一時的コンピュータ読取可能媒体。
例24:実行可能命令は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、ニューラルネットワークが画像データに基づいて表面法線を生成するステップを行なわせる命令を含み、第1の深度マップは、表面法線および深度推定値を使用して第2の深度マップに変換される、例21~23のいずれかに記載の非一時的コンピュータ読取可能媒体。
図8は、ここに説明される手法を用いて使用され得る例示的なコンピュータデバイス800および例示的なモバイルコンピュータデバイス850の一例を示す。コンピューティングデバイス800は、プロセッサ802と、メモリ804と、記憶デバイス806と、メモリ804および高速拡張ポート810に接続している高速インターフェイス808と、低速バス814および記憶デバイス806に接続している低速インターフェイス812とを含む。コンポーネント802、804、806、808、810、および812の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上に、または他の態様で適宜搭載され得る。プロセッサ802は、高速インターフェイス808に結合されたディスプレイ816などの外部入力/出力デバイス上にGUI用グラフィック情報を表示するためにメモリ804または記憶デバイス806に格納された命令を含む、コンピューティングデバイス800内で実行される命令を処理することができる。他の実現化例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数種類のメモリとともに適宜使用されてもよい。加えて、複数のコンピューティングデバイス800が、各デバイスが(たとえばサーババンク、ブレードサーバ群、またはマルチプロセッサシステムとして)必要な動作の部分を提供する状態で接続されてもよい。
メモリ804は、コンピューティングデバイス800内の情報を格納する。一実現化例では、メモリ804は揮発性メモリユニットである。別の実現化例では、メモリ804は不揮発性メモリユニットである。メモリ804はまた、磁気ディスクまたは光学ディスクといった、別の形態のコンピュータ読取可能媒体であってもよい。
記憶デバイス806は、コンピューティングデバイス800のための大容量ストレージを提供することができる。一実現化例では、記憶デバイス806は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光学ディスクデバイス、またはテープデバイス、フラッシュメモリまたは他の同様のソリッドステートメモリデバイス、もしくは、ストレージエリアネットワークまたは他の構成のデバイスを含む一連のデバイスといった、コンピュータ読取可能媒体であってもよく、または当該コンピュータ読取可能媒体を含んでいてもよい。コンピュータプログラム製品が情報担体において有形に具体化され得る。コンピュータプログラム製品はまた、実行されると上述のような1つ以上の方法を行なう命令を含んでいてもよい。情報担体は、メモリ804、記憶デバイス806、またはプロセッサ802上のメモリといったコンピュータまたはマシン読取可能媒体である。
高速インターフェース808は、コンピューティングデバイス800のための帯域幅集約的な動作を管理し、一方、低速インターフェース812は、より低い帯域幅集約的な動作を管理する。機能のそのような割当ては単なる例示である。一実現化例では、高速インターフェース808は、(たとえばグラフィックスプロセッサまたはアクセラレ-タを通して)メモリ804、ディスプレイ816に結合され、また、さまざまな拡張カード(図示せず)を受入れ得る高速拡張ポート810に結合される。当該実現化例では、低速インターフェース812は、記憶デバイス806および低速バス814に結合される。さまざまな通信ポート(たとえばUSB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入力/出力デバイス、もしくは、スイッチまたはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを通して結合されてもよい。
コンピューティングデバイス800は、図に示すように多くの異なる形態で実現されてもよい。たとえば、それは標準サーバ820として、またはそのようなサーバの群で何度も実現されてもよい。それはまた、ラックサーバシステム824の一部として実現されてもよい。加えて、それは、ラップトップコンピュータ822などのパーソナルコンピュータで実現されてもよい。それに代えて、コンピューティングデバイス800からのコンポーネントが、デバイス850などのモバイルデバイス(図示せず)における他のコンポーネントと組合されてもよい。そのようなデバイスの各々はコンピューティングデバイス800、850のうちの1つ以上を含んでいてもよく、システム全体が、互いに通信する複数のコンピューティングデバイス800、850から構成されてもよい。
コンピューティングデバイス850は、数あるコンポーネントの中でも特に、プロセッサ852と、メモリ864と、ディスプレイ854などの入力/出力デバイスと、通信インターフェイス866と、トランシーバ868とを含む。また、デバイス850には、追加のストレージを提供するために、マイクロドライブまたは他のデバイスなどの記憶デバイスが設けられてもよい。コンポーネント850、852、864、854、866、および868の各々は、さまざまなバスを使用して相互接続されており、これらのコンポーネントのうちのいくつかは、共通のマザーボード上に、または他の態様で適宜搭載され得る。
プロセッサ852は、メモリ864に格納された命令を含む、コンピューティングデバイス850内の命令を実行することができる。プロセッサは、別々の複数のアナログプロセッサおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス850によって実行されるアプリケーション、およびデバイス850による無線通信の制御といった、デバイス850の他のコンポーネントの連携を提供してもよい。
プロセッサ852は、ディスプレイ854に結合されたディスプレイインターフェイス856および制御インターフェイス858を通してユーザと通信してもよい。ディスプレイ854は、たとえば、TFT LCD(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)、またはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス856は、グラフィック情報および他の情報をユーザに提示するようにディスプレイ854を駆動するための適切な回路を含んでいてもよい。制御インターフェイス858は、ユーザからコマンドを受信し、当該コマンドをプロセッサ852に送信するために変換してもよい。加えて、デバイス850と他のデバイスとの近接領域通信を可能にするように、プロセッサ852と通信する外部インターフェイス862が提供されてもよい。外部インターフェイス862は、たとえば、いくつかの実現化例では有線通信を提供してもよく、他の実現化例では無線通信を提供してもよく、また、複数のインターフェイスが使用されてもよい。
メモリ864は、コンピューティングデバイス850内の情報を格納する。メモリ864は、コンピュータ読取可能媒体、揮発性メモリユニット、または不揮発性メモリユニットのうちの1つ以上として実現され得る。拡張メモリ874もデバイス850に提供され、たとえばSIMM(Single In Line Memory Module:シングル・インライン・メモリ・モジュール)カードインターフェイスを含み得る拡張インターフェイス872を通して接続されてもよい。そのような拡張メモリ874はデバイス850のための追加の記憶空間を提供してもよく、または、デバイス850のためのアプリケーションまたは他の情報も格納してもよい。具体的には、拡張メモリ874は上述のプロセスを実行または補足するための命令を含んでいてもよく、セキュアな情報も含んでいてもよい。このため、たとえば、拡張メモリ874はデバイス850のためのセキュリティモジュールとして提供されてもよく、デバイス850のセキュアな使用を可能にする命令を用いてプログラムされてもよい。加えて、識別情報をハッキング不可能な態様でSIMMカード上に載せるなどして、セキュアなアプリケーションが追加情報とともにSIMMカードを介して提供されてもよい。
メモリは、以下に説明されるように、たとえばフラッシュメモリおよび/またはNVRAMメモリを含んでいてもよい。一実現化例では、コンピュータプログラム製品が情報担体において有形に具体化される。コンピュータプログラム製品は、実行されると上述のような1つ以上の方法を行なう命令を含む。情報担体は、たとえばトランシーバ868または外部インターフェイス862を通して受信され得る、メモリ864、拡張メモリ874、またはプロセッサ852上のメモリといったコンピュータまたはマシン読取可能媒体である。
デバイス850は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス866を通して無線通信してもよい。通信インターフェイス866は、とりわけ、GSM(登録商標)音声通話、SMS、EMSまたはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといったさまざまなモードまたはプロトコル下で通信を提供してもよい。そのような通信は、たとえば無線周波数トランシーバ868を通して生じてもよい。加えて、ブルートゥース、Wi-Fi、または他のそのようなトランシーバ(図示せず)を使用するなどして、短距離通信が生じてもよい。加えて、GPS(Global Positioning System:全地球測位システム)レシーバモジュール870が、ナビゲーションおよび位置に関連する追加の無線データをデバイス850に提供してもよく、当該データは、デバイス850上で実行されるアプリケーションによって適宜使用されてもよい。
デバイス850はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック860を使用して、可聴的に通信してもよい。音声コーデック860も同様に、たとえばデバイス850のハンドセットにおけるスピーカなどを通して、ユーザのために可聴音を生成してもよい。そのような音は、音声電話からの音を含んでいてもよく、録音された音(たとえば音声メッセージ、音楽ファイルなど)を含んでいてもよく、また、デバイス850上で動作するアプリケーションによって生成された音を含んでいてもよい。
コンピューティングデバイス850は、図に示すように多くの異なる形態で実現されてもよい。たとえば、それは携帯電話880として実現されてもよい。それはまた、スマートフォン882、携帯情報端末、または他の同様のモバイルデバイスの一部として実現されてもよい。
ここに説明されるシステムおよび手法のさまざまな実現化例は、デジタル電子回路、集積回路、特別に設計されたASIC(application specific integrated circuit:特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現され得る。これらのさまざまな実現化例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能である1つ以上のコンピュータプログラムにおける実現化例を含んでいてもよく、当該プロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスとの間でデータおよび命令を送受信するように結合されてもよい。加えて、「モジュール」という用語は、ソフトウェアおよび/またはハードウェアを含んでいてもよい。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られる)はプログラマブルプロセッサのためのマシン命令を含んでおり、高レベルの手続き型および/またはオブジェクト指向型プログラミング言語で、ならびに/もしくはアセンブリ/マシン言語で実現され得る。ここで使用される「マシン読取可能媒体」、「コンピュータ読取可能媒体」という用語は、マシン命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置、および/またはデバイス(たとえば、磁気ディスク、光学ディスク、メモリ、プログラマブルロジックデバイス(Programmable Logic Device:PLD))を指しており、マシン命令をマシン読取可能信号として受信するマシン読取可能媒体を含む。「マシン読取可能信号」という用語は、マシン命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
ユーザとの相互作用を提供するために、ここに説明されるシステムおよび手法は、情報をユーザに表示するためのディスプレイデバイス(たとえばCRT(cathode-ray tube:陰極線管)またはLCD(液晶ディスプレイ)モニター)と、ユーザがコンピュータに入力を提供する際に使用し得るキーボードおよびポインティングデバイス(たとえばマウスまたはトラックボール)とを有するコンピュータ上で実現され得る。他の種類のデバイスも、同様にユーザとの相互作用を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信されてもよい。
ここに説明されるシステムおよび手法は、バックエンドコンポーネント(たとえばデータサーバ)を含む、もしくは、ミドルウェアコンポーネント(たとえばアプリケーションサーバ)を含む、もしくは、フロントエンドコンポーネント(たとえば、ここに説明されるシステムおよび手法の実現化例とユーザが相互作用できるようにするグラフィカルユーザインターフェイスまたはウェブブラウザを有するクライアントコンピュータ)を含む、もしくは、そのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムで実現され得る。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体(たとえば通信ネットワーク)によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)、およびインターネットを含む。
コンピューティングシステムは、クライアントとサーバとを含み得る。クライアントとサーバとは一般に互いから離れており、典型的には通信ネットワークを通して相互作用する。クライアントとサーバとの関係は、コンピュータプログラムがそれぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有することによって生じる。
いくつかの実現化例では、図8に示すコンピューティングデバイスは、仮想現実(VRヘッドセット890)とインターフェイス接続するセンサを含み得る。たとえば、図8に示すコンピューティングデバイス850または他のコンピューティングデバイスに含まれる1つ以上のセンサが、VRヘッドセット890に入力を提供するか、または概して、VR空間に入力を提供することができる。センサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、バイオメトリックセンサ、温度センサ、湿度センサ、および周囲光センサを含み得るものの、これらに限定されない。コンピューティングデバイス850はこれらのセンサを使用して、VR空間におけるコンピューティングデバイスの絶対位置および/または検出された回転を判断することができ、それは次にVR空間への入力として使用され得る。たとえば、コンピューティングデバイス850は、コントローラ、レーザポインタ、キーボード、武器などといった仮想オブジェクトとして、VR空間に組み込まれてもよい。VR空間に組み込まれる際のユーザによるコンピューティングデバイス/仮想オブジェクトの位置付けは、ユーザが、VR空間において仮想オブジェクトを特定の態様で見るようにコンピューティングデバイスを位置付けることができるようにする。たとえば、仮想オブジェクトがレーザポインタを表わす場合、ユーザはコンピューティングデバイスを、それが実際のレーザポインタであるかのように操作することができる。ユーザはコンピューティングデバイスを左右、上下、円形などに動かして、レーザポインタを使用するのと同様の態様でデバイスを使用することができる。
いくつかの実現化例では、コンピューティングデバイス850に含まれるかまたはそれに接続される1つ以上の入力デバイスが、VR空間への入力として使用され得る。入力デバイスは、タッチスクリーン、キーボード、1つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイク、入力機能性を有するイヤホンまたはイヤバッド、ゲーミングコントローラ、または他の接続可能な入力デバイスを含み得るものの、それらに限定されない。コンピューティングデバイスがVR空間に組み込まれる際にコンピューティングデバイス850に含まれる入力デバイスと相互作用するユーザは、特定のアクションがVR空間で生じるようにすることができる。
いくつかの実現化例では、コンピューティングデバイス850のタッチスクリーンは、VR空間においてタッチパッドとしてレンダリングされ得る。ユーザは、コンピューティングデバイス850のタッチスクリーンと相互作用することができる。相互作用は、たとえばVRヘッドセット890において、VR空間におけるレンダリングされたタッチパッド上の動きとしてレンダリングされる。レンダリングされた動きは、VR空間においてオブジェクトを制御することができる。
いくつかの実現化例では、コンピューティングデバイス850に含まれる1つ以上の出力デバイスが、VR空間においてVRヘッドセット890のユーザに出力および/またはフィードバックを提供することができる。出力およびフィードバックは、視覚的、触覚的、または音声的であり得る。出力および/またはフィードバックは、振動、1つ以上のライトまたはストロボを点灯および消灯すること、もしくは明滅および/または点滅させること、アラームを鳴らすこと、チャイムを鳴らすこと、曲をかけること、ならびに音声ファイルを再生することを含み得るものの、これらに限定されない。出力デバイスは、振動モータ、振動コイル、圧電装置、静電装置、発光ダイオード(LED)、ストロボ、およびスピーカを含み得るものの、これらに限定されない。
いくつかの実現化例では、コンピューティングデバイス850は、コンピュータにより生成される3D環境において別のオブジェクトとして現れてもよい。ユーザによるコンピューティングデバイス850との相互作用(たとえば、タッチスクリーンを回転させること、振動させること、タッチスクリーンに触れること、タッチスクリーンを横切って指でスワイプすること)は、VR空間におけるオブジェクトとの相互作用として解釈され得る。VR空間におけるレーザポインタの例では、コンピューティングデバイス850は、コンピュータにより生成される3D環境において仮想レーザポインタとして現れる。ユーザがコンピューティングデバイス850を操作すると、VR空間におけるユーザはレーザポインタの動きを見る。ユーザは、コンピューティングデバイス850またはVRヘッドセット890についての、VR空間におけるコンピューティングデバイス850との相互作用からのフィードバックを受信する。
いくつかの実現化例では、コンピューティングデバイスに加えて、1つ以上の入力デバイス(たとえばマウス、キーボード)が、コンピュータにより生成される3D環境においてレンダリングされ得る。レンダリングされた入力デバイス(たとえばレンダリングされたマウス、レンダリングされたキーボード)は、VR空間においてオブジェクトを制御するためにVR空間においてレンダリングされるように使用され得る。
コンピューティングデバイス800は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータといった、さまざまな形態のデジタルコンピュータを表わすよう意図されている。コンピューティングデバイス850は、携帯情報端末、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスといった、さまざまな形態のモバイルデバイスを表わすよう意図されている。ここに示す構成要素、それらの接続および関係、ならびにそれらの機能は単なる例示として意図されており、この文書で説明および/または請求される発明の実現化例を限定するよう意図されてはいない。
多くの実施形態が説明されてきたが、明細書の精神および範囲から逸脱することなくさまざまな変更が加えられ得ることが理解されるであろう。
加えて、図に示す論理フローは、望ましい結果を達成するために、図示された特定の順序または連続する順序を必要としない。加えて、説明されたフローに他のステップが提供されてもよく、またはそこからステップが削除されてもよく、説明されたシステムに他の構成要素が追加されてもよく、またはそこから除去されてもよい。したがって、他の実施形態は特許請求の範囲内にある。