本開示のいくつかの態様および例が、以下で提供される。当業者に明らかになるように、これらの態様および例のうちのいくつかは独立して適用されてもよく、それらのうちのいくつかは組み合わせて適用されてもよい。以下の説明では、説明の目的で、本出願の主題の完全な理解をもたらすために、具体的な詳細が記載される。しかしながら、これらの具体的な詳細なしに様々な例が実践されてもよいことは明らかであろう。図および説明は限定的であることが意図されていない。
以下の説明は、説明のための例のみを提供し、本開示の範囲、適用可能性、または構成を限定することは意図されない。むしろ、次の記載は、当業者に、説明のための例を実装することを可能にする記載を提供することになる。添付の特許請求の範囲に記載されるような本出願の趣旨および範囲から逸脱することなく、様々な変更が要素の機能および構成に加えられてもよいことを理解されたい。
上記のように、エクステンデッドリアリティ(XR)技術は、ユーザに仮想コンテンツを提示するのに使うことができ、かつ/または物質界からの実環境と仮想環境を組み合わせて、エクステンデッドリアリティ体験をユーザに提供することができる。エクステンデッドリアリティという用語は、仮想現実(VR)、拡張現実(AR)、複合現実(MR)などを包含することができる。XRシステムは、実世界環境の画像に仮想コンテンツを重ねることによって、ユーザに、エクステンデッドリアリティ環境を体験させることができ、この環境は、エクステンデッドリアリティデバイス(たとえば、ヘッドマウントディスプレイ、エクステンデッドリアリティグラス、または他のデバイス)を通してユーザによって閲覧することができる。実世界環境は、物理オブジェクト、人々、または他の実世界オブジェクトを含むことができる。XR技術は、他のアプリケーションおよびフィールドの中でも、娯楽(たとえば、ゲーム)、ルームデザインおよび/または仮想ショッピング、フード/ヘルスモニタリング、ビデオ通話、遠隔会議、および教育を含む、様々なアプリケーションおよびフィールドにおいて実装され得る。
いくつかのタイプのデバイス(モバイルフォンおよびタブレットなど)は、ユーザが彼ら自身の画像(たとえば、「セルフ画像」または「セルフィー」)をキャプチャするためのメカニズムを装備される。しかしながら、セルフ画像キャプチャは、XRシステムにとって困難な課題である場合がある。たとえば、ユーザの頭に装着されるXRデバイス(たとえば、ヘッドマウントディスプレイ、XRグラス、および他のデバイス)は、一般に、実世界環境のシーンをキャプチャするように構成されるカメラを含む。これらのカメラは、(たとえば、ユーザから離れる方向に向けられた)外向き方向に位置付けられ、したがって、カメラは、ユーザの画像をキャプチャすることはできない。さらに、XRデバイス内部に位置付けられたカメラ(たとえば、内向きカメラ)は、ユーザの顔または頭の小部分よりも大きい部分をキャプチャすることができない場合がある。いくつかのXRシステムが、セルフ画像キャプチャを容易にするために開発されてきた。これらのXRシステムは、実世界環境の画像および/またはビデオの上にユーザのアバターを重ねることができる。しかしながら、アバターは、限定されたポーズおよび/または表情を有する場合がある。さらに、ユーザは、画像および/またはビデオ内でアバターを手動で位置付けることを求められる場合があり、背景に対してアバターの不自然な(たとえば、非現実的な)画像および/または不正確なフレーミングをもたらす場合がある。
本開示は、XR環境内で画像キャプチャを実行するためのシステム、装置、方法、およびコンピュータ可読媒体(まとめて、「システムおよび技法」と呼ばれる)について記載する。いくつかの態様では、技法およびシステムは、ヘッドマウントXRシステムを装着するユーザの1つまたは複数のセルフ画像(たとえば、写真および/またはビデオ)をヘッドマウントXRシステムがキャプチャする能力を提供する。たとえば、XRシステムは、XRシステムの前向きカメラによってキャプチャされた1つまたは複数のフレームの上にユーザのデジタル表現(たとえば、アバターまたは他のタイプのデジタル表現)を重ねることができる。ユーザのデジタル表現は、ユーザのポーズ(たとえば、ユーザのジェスチャー、四肢位置、顔の表情など)を反映することができる。XRシステムは、デジタル表現のロケーションが実世界環境内のユーザの実際のロケーション(たとえば、ユーザのポーズがキャプチャされたときのユーザのロケーション)に対応するように、ユーザのデジタル表現をフレーム内に重ねることができる。デジタル表現がフレーム内に重ねられると、フレームは、フレームがキャプチャされたときにユーザ(たとえば、ユーザのデジタル表現)がXRシステムのカメラに向いていたかのように見える場合がある。このようにして、フレームは、ユーザのセルフ画像(または「セルフィー」)に対応する。
場合によっては、ユーザのセルフ画像を生成するプロセスは、少なくとも2つの動作を伴うことができる。1つの動作は、セルフ画像の背景として使用される1つまたは複数のフレームをキャプチャすることを含む。別の動作は、ユーザのデジタル表現(たとえば、アバターまたは他のデジタル表現)の中に組み込まれるユーザのポーズをキャプチャすることを伴う。場合によっては、XRシステムは、XRシステムの1つまたは複数の追跡能力を介してユーザのポーズをキャプチャすることができる。XRシステムの追跡能力は、視線追跡、6自由度(6DOF)位置追跡、手部追跡、身体追跡、表情追跡、任意のそれらの組合せ、および/または他のタイプの追跡のためのメカニズムおよび/または技法を含むことができる。いくつかの例では、ユーザのポーズをキャプチャすることおよびユーザのポーズをデジタル表現(たとえば、アバター)内に組み込むことは、ユーザのデジタル表現の「人形操り(puppeteering)」と呼ばれ得る。セルフ画像を生成するための2つの動作は、順次(たとえば、一方の動作を他方の動作の後に)実行され得る。さらに、動作は、任意の順序で実行され得る。たとえば、背景フレームが、ユーザのポーズがキャプチャされる前にキャプチャされ得るか、またはユーザのポーズが、背景フレームがキャプチャされる前にキャプチャされ得る。動作を実装するための特定のプロセスは、動作の順序に基づいて変動することができる。場合によっては、セルフ画像キャプチャモードの開始に対応するユーザ入力を検出した後、XRシステムは、一定の順序で動作を実行するようにユーザに指示することができる。他の場合には、XRシステムは、好ましい順序に対応するユーザ入力を検出することができる。
第1のユースケースシナリオでは、背景フレームがキャプチャされる前に、デジタル表現(たとえば、アバター)が操られる。このシナリオでは、XRシステムは、ユーザのポーズをキャプチャし、ユーザのキャプチャされたポーズを反映するユーザのデジタル表現を生成することができる。場合によっては、XRシステムは、XRシステムのディスプレイ内にデジタル表現を表すことができる。たとえば、XRシステムは、デジタル表現が、ユーザの状態がキャプチャされたときのユーザと同じ、実世界環境内のロケーションに位置付けられたように見えるように、ディスプレイ内でデジタル表現を位置付けることができる。ユーザが実世界環境内で移動するにつれて、XRシステムのディスプレイを通して見える実世界環境(たとえば、シーン)の一部が変わるが、デジタル表現は同じロケーションにとどまるように見える。このようにして、ユーザのデジタル表現が、「ワールドロック」される。ユーザの状態がキャプチャされたときのユーザのロケーションを決定するために、XRシステムは、コンピュータビジョンベースの追跡、モデルベースの追跡、同時位置特定およびマッピング(SLAM)技法、任意のそれらの組合せ、ならびに/または他のマッピングおよび/もしくは位置特定技法を含む、1つまたは複数のマッピングおよび/または位置特定技法を使用して環境をマッピングすることができる。XRシステムがアバターまたはユーザの他のデジタル表現を生成した(上記の第2の動作)後、XRシステムは、セルフ画像の背景になるフレームをキャプチャする(上記の第1の動作)ことができる。たとえば、ユーザは、デジタル表現(たとえば、アバター)がXRシステムのディスプレイ上に表されながら、環境内を移動することができる。ディスプレイを介する光景がセルフ画像に対する適切なおよび/または望ましい背景であるとユーザが決定するとき、ユーザは、環境のフレームをキャプチャするようにXRシステムに指示することができる。次いで、XRシステムは、ユーザのデジタル表現がキャプチャされた環境のフレーム上に重ねられた合成フレームを生成することができる。
第2のユースケースシナリオでは、ユーザのデジタル表現が操られる前に、背景フレームがキャプチャされる。このシナリオでは、XRシステムは、ユーザの指示で実世界環境のフレームをキャプチャすることができる。場合によっては、背景フレームが、XRシステムのディスプレイの一部の中に(たとえば、プレビューウィンドウの中に)表される。背景フレームがプレビューウィンドウ内でキャプチャおよび/または表示された(上記の第1の動作)後、XRシステムは、ユーザのポーズに基づいてユーザのアバターまたは他のデジタル表現を操る(上記の第2の動作)ことができる。たとえば、XRシステムは、アバターをプレビューウィンドウ内に(たとえば、所定のロケーションに)表すことができる。ユーザが環境内を移動するにつれて、XRシステムは、アバターを、プレビューウィンドウ内の対応するロケーションに移動させることができる。このようにして、アバターが、「ヘッドロック」される。ユーザが彼らのロケーションおよび/またはポーズに満足するとき、ユーザは、ユーザのポーズをキャプチャするようにXRシステムに指示することができる。次いで、XRシステムは、ユーザのデジタル表現(たとえば、アバター)が環境のキャプチャされたフレーム上に重ねられた合成フレームを生成することができる。
第3のユースケースシナリオでは、XRシステムは、複数のフレームを有するセルフ画像(たとえば、ビデオ)を生成することができる。このシナリオの一例では、XRシステムは、背景フレームをキャプチャする前に、ユーザのデジタル表現(たとえば、ユーザを表すアバター)を操ることによってビデオを生成することができる。たとえば、XRシステムは、ある時間期間の間にユーザのポーズをキャプチャし、その時間期間の間のユーザのポーズの任意の変化を反映するユーザのデジタル表現(たとえば、アバター)を生成することができる。時間期間は、所定の時間期間、所定のフレーム数、またはユーザによって指定された時間期間に対応することができる。次いで、XRシステムは、同じ時間期間の間に実世界環境のフレームを記録することができる。実世界環境のシーンは時間期間を通して一定のままであり得るか、またはシーンは変化することができる(たとえば、ユーザは、フレームがキャプチャされる間に環境内で移動することができる)。場合によっては、XRシステムは、XRシステムが環境のフレームを記録している間に、ユーザのデジタル表現をXRシステムのディスプレイ内に表すことができる。たとえば、XRシステムは、ユーザのポーズがキャプチャされた(たとえば、ユーザのデジタル表現がワールドロックされた)ときのユーザと同じロケーションにデジタル表現があるように見えるように、ユーザのデジタル表現を表すことができる。このユースケースシナリオの別の例では、XRシステムは、ユーザのデジタル表現を操る前に、背景フレームをキャプチャすることによってビデオを生成することができる。たとえば、XRシステムは、ビデオの静的背景になる環境のフレームをキャプチャすることができる。次いで、XRシステムは、ある時間期間の間にユーザのポーズをキャプチャし、その時間期間の間のユーザのポーズの任意の変化を反映するユーザのデジタル表現(たとえば、アバター)を生成することができる。ユーザがその時間期間の間に環境内で移動するにつれて、XRシステムは、ユーザのデジタル表現を、そのフレームを含むプレビューウィンドウ内の対応する運動および/またはポーズとともに表示することができる。この例では、ユーザのデジタル表現(たとえば、ユーザを表すアバター)は、ヘッドロックされる。
第4のユースケースシナリオでは、XRシステムは、複数の人を含むセルフ画像を生成することができる。このシナリオの一例では、XRシステムは、ユーザが1人または複数の人とポーズを取る間に、ユーザのポーズをキャプチャすることができる。次いで、XRシステムは、1人または複数の人を含む背景フレームをキャプチャすることができる。たとえば、ユーザは、1人または複数の人が彼らの元のポーズのままでいる間に、1人または複数の人と対面するために環境内で移動することができる。次いで、XRシステムは、ユーザの状態を反映するデジタル表現(たとえば、アバター)を背景フレーム内に挿入することができる。このユースケースシナリオの別の例では、セルフ画像内に含められる各人は、ヘッドマウントXRシステムを装着している。この例では、各XRシステムは、対応する人のポーズをキャプチャし、その人のポーズを反映するデジタル表現(たとえば、アバター)を生成することができる。加えて、XRシステムのうちの1つが、背景フレームをキャプチャすることができる。背景フレームをキャプチャするXRシステムは、他のXRシステムによって生成されるデジタル表現(たとえば、アバター)の要求を、他のXRシステムに送信することができる。次いで、XRシステムは、背景フレームとデジタル表現とを組み合わせることができる。この例では、背景フレームは、デジタル表現が生成される前にキャプチャされ得るか、またはデジタル表現は、背景フレームがキャプチャされる前に生成され得る。
XRシステムは、様々な方法でユーザのアバターまたは他のデジタル表現を生成することができる。いくつかの例では、XRシステムは、ユーザの1つまたは複数のフレーム(たとえば、ユーザの1つまたは複数の全身画像)をキャプチャすることができる。フレームは、フレーム内で検出された身体的特徴に基づいてデジタル表現を生成するモデルに入力され得る。場合によっては、モデルは、ユーザのキャプチャされたポーズに基づいてユーザのデジタル表現に適応するようにトレーニングされ得る。たとえば、ユーザが手を振っているとXRシステムが決定した場合、手を振っているユーザの実際の画像をモデルが有しない場合でも、モデルは、手を振っているユーザに似ているデジタル表現を生成することができる。一例では、モデルは、ニューラルネットワークなどの機械学習モデルであり得る。非限定的な例では、モデルは、敵対的生成ネットワーク(GAN)であり得る。場合によっては、XRシステムは、ユーザの初期のデジタル表現(たとえば、アバター)を生成することができる。たとえば、ユーザの初期のデジタル表現は、XRシステムが背景フレームおよび/またはユーザのポーズをキャプチャしている間に、XRシステムのディスプレイ内に表され得る。背景フレーム内のユーザのポーズおよび/またはデジタル表現の配置が確認されると、XRシステムは、初期のデジタル表現を、ユーザのデジタル表現(たとえば、ユーザに対する最終のアバター)と置き換えることができる。場合によっては、最終のデジタル表現は、初期のデジタル表現よりも高い品質(たとえば、より現実的)であり得る。たとえば、初期のアバターは漫画のように見えることがあり、最終のアバターは写実的(または、ほぼ写実的)であり得る。写実的なデジタル表現を生成することは、大量の時間および/または処理電力を伴うことがあるので、比較的低品質の初期のデジタル表現を使用することで、セルフ画像を生成するプロセスの間のXRシステムのレイテンシおよび/またはワークロードが低減され得る。
適用例の様々な態様が、図に関して説明される。図1A、図1Bおよび図1Cは、いくつかの既存のXRシステムによって生成され得る例示的なアバターの図を提供する。たとえば、図1Aは、背景フレーム106上に重ねられたアバター108を含むセルフ画像フレーム102を示す。一例では、XRシステムは、その身体的外観がユーザの身体的外観に対応するアバターを生成するようにトレーニングされたモデル(たとえば、機械学習ベースのモデル)に、ユーザの1つまたは複数の画像を入力することによってアバター108を生成することができる。図示のように、アバター108は、(ユーザの写実的なまたはほぼ写実的な表現ではなく)ユーザの漫画のような表現または他の抽象的表現であり得る。場合によっては、XRシステムは、背景フレーム106内の選択されたロケーションにおいてアバター108を位置付けるようにユーザに要求および/または指示することができる。たとえば、XRシステムは、ユーザが、背景フレーム106内で位置決めツール110をドラッグすることによってアバター108の位置を変更することを可能にする、図1Aに示す位置決めツール110を提供することができる。図1Bに示すセルフ画像フレーム104は、アバター108が位置決めツール110を使用して位置決めされた後のアバター108を示す。場合によっては、セルフ画像キャプチャシステムは、ユーザがアバター108に対するポーズ(たとえば、ジェスチャー、感情、表情、運動など)を選択することによってセルフ画像フレーム104をカスタマイズすることを可能にすることができる。たとえば、セルフ画像キャプチャシステムは、所定のおよび/または事前構成されるポーズのメニューまたはリストを提供し、選択に対応するユーザ入力を検出することができる。さらに、場合によっては、セルフ画像キャプチャシステムは、ユーザが、背景フレーム106内のアバター108をアニメ化する(animate)ことを可能にすることができる。たとえば、図1Cに示すように、セルフ画像キャプチャシステムは、ユーザが位置決めツール110を使用してアバター108に対する経路を描くことを可能にすることができる。その経路に対応するユーザ入力に基づいて、セルフ画像キャプチャシステムは、経路に沿って移動するアバター108を示すビデオを生成することができる。図1Dは、いくつかの既存のXRシステムによって生成され得る他の例示的なアバターの図である。たとえば、図1Dは、2つのアバター(たとえば、アバター118および120)を含むフレーム116を示す。この例では、アバター118および120に対応するユーザは、ユーザが装着するXRデバイス(たとえば、HMD)のディスプレイ内で両アバターを閲覧することができる。
場合によっては、図1A~図1Dに示すアバターを生成するように構成されるXRシステムは、XRシステムを、HMDまたは他のタイプのXRデバイスを装着するユーザのセルフ画像を生成するのに不適切におよび/または望ましくないものにする、様々な制限を有することがある。たとえば、XRシステムは、フレーム内のアバターを位置付けるために手動のユーザ入力を伴う(たとえば、要求する)ことがある。その結果、表されたアバターを含むフレームは、自然なまたは現実的な「セルフィー」に見えない場合がある。さらに、表されたアバターは、現在の(たとえば、実際の)ユーザのポーズを正確に反映しない場合がある。その上、アバターを表すことに伴う大きいコンピューティングリソースに起因して、これらのXRシステムによって生成されるアバターは、低品質(たとえば、低忠実度)である場合がある。
図2は、本開示のいくつかの態様による、例示的なエクステンデッドリアリティシステム200を示す図である。エクステンデッドリアリティシステム200は、単一のコンピューティングデバイスまたは複数のコンピューティングデバイスの一部であるか、またはそれらによって実装することができる。場合によっては、エクステンデッドリアリティシステム200は、XRシステムまたはXRデバイスの一部であり得るか、またはそれらによって実装され得る。たとえば、エクステンデッドリアリティシステム200は、XRアプリケーションを稼動(または実行)し、XR動作を実装することができる。エクステンデッドリアリティシステム200を含むおよび/または実装するXRシステムまたはXRデバイスは、他のXRシステムまたはXRデバイスの中でも、XRヘッドマウントディスプレイ(HMD)デバイス(たとえば、仮想現実(VR)ヘッドセット、拡張現実(AR)ヘッドセット、または複合現実(MR)ヘッドセット)、XRグラス(たとえば、ARグラス)であり得る。いくつかの例では、エクステンデッドリアリティシステム200は、カメラシステム(たとえば、デジタルカメラ、IPカメラ、ビデオカメラ、セキュリティカメラなど)、電話システム(たとえば、スマートフォン、セルラー電話、会議システムなど)、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、ネットワーク接続テレビジョン(またはいわゆる「スマート」テレビジョン)、ディスプレイデバイス、ゲーム機、ビデオストリーミングデバイス、モノのインターネット(IoT)デバイス、車両(または車両のコンピューティングデバイス)、および/または任意の他の適切な電子デバイスなど、任意の他のデバイスまたはシステムの一部であり得るか、または任意の他のデバイスまたはシステムによって実装され得る。
いくつかの例では、エクステンデッドリアリティシステム200は、XR体験の一部として、追跡および位置特定、物質界(たとえば、シーン)のマッピング、ならびにディスプレイ(たとえば、スクリーン、可視プレーン/領域、および/または他のディスプレイ)上での仮想コンテンツの位置決めおよびレンダリングを実施することができる。たとえば、エクステンデッドリアリティシステム200は、物質界でのシーンのマップ(たとえば、3Dマップ)を生成し、シーンに相対した(たとえば、シーンの3Dマップに相対した)、エクステンデッドリアリティシステム200のポーズ(たとえば、ロケーションおよび位置)を追跡し、シーンのマップ上の特定のロケーションに仮想コンテンツを位置決めおよび/または固定し、ディスプレイ上で仮想コンテンツをレンダリングすることができる。エクステンデッドリアリティシステム200は、仮想コンテンツが位置決めおよび/または固定されているシーンのマップ上の特定のロケーションに対応するシーン中のロケーションに仮想コンテンツがあるように見えるように、ディスプレイ上で仮想コンテンツをレンダリングすることができる。いくつかの例では、ディスプレイは、グラス、スクリーン、レンズ、および/またはユーザが実世界環境を見ることができるようにするとともにXRコンテンツがその上に表示されるようにもする他の表示機構を含むことができる。
図2に示すように、エクステンデッドリアリティシステム200は、1つまたは複数の画像センサ202、加速度計204、ジャイロスコープ206、ストレージ208、計算コンポーネント210、XRエンジン220、セルフ画像エンジン222、画像処理エンジン224、およびレンダリングエンジン226を含むことができる。図2に示すコンポーネント202~226は、例示および説明目的で与えられる非限定的例であり、他の例は、図2に示すものよりも多くの、より少ない、または異なるコンポーネントを含むことができることに留意されたい。たとえば、場合によっては、エクステンデッドリアリティシステム200は、図2には示さない、1つもしくは複数の他のセンサ(たとえば、1つもしくは複数の慣性測定ユニット(IMU)、レーダ、光検出および測距(LIDAR)センサ、オーディオセンサなど)、1つもしくは複数のディスプレイデバイス、1つもしくは複数の他の処理エンジン、1つもしくは複数の他のハードウェアコンポーネント、ならびに/または1つもしくは複数の他のソフトウェアおよび/もしくはハードウェアコンポーネントを含むことができる。エクステンデッドリアリティシステム200によって実装することができる例示的アーキテクチャおよび例示的ハードウェアコンポーネントについては、図10に関して以下でさらに説明する。
簡単および説明目的のために、1つまたは複数の画像センサ202は、ここでは画像センサ202と(たとえば、単数形で)呼ばれる。ただし、エクステンデッドリアリティシステム200は、単一の画像センサまたは複数の画像センサを含むことができることが、当業者には認識されよう。また、単数または複数形での、エクステンデッドリアリティシステム200のコンポーネント(たとえば、202~226)のいずれへの言及も、エクステンデッドリアリティシステム200によって実装されるそのようなコンポーネントの数を、1つまたは複数に制限するものと解釈されるべきでない。たとえば、単数形での加速度計204への言及は、エクステンデッドリアリティシステム200によって実装される加速度計の数を1に制限するものと解釈されるべきでない。図2に示すコンポーネント202~226のいずれに対しても、エクステンデッドリアリティシステム200は、そのようなコンポーネントのうちのただ1つまたはそのようなコンポーネントのうちの複数を含むことができることが、当業者には認識されよう。
エクステンデッドリアリティシステム200は、入力デバイスを含むか、または入力デバイスと(ワイヤードまたはワイヤレスに)通信することができる。入力デバイスは、タッチスクリーン、ペンもしくは他のポインタデバイス、キーボード、マウス、ボタンもしくはキー、ボイスコマンドを受信するためのマイクロフォン、ジェスチャーコマンドを受信するためのジェスチャー入力デバイス、それらの任意の組合せ、および/または他の入力デバイスなど、どの適切な入力デバイスも含むことができる。場合によっては、画像センサ202は、ジェスチャーコマンドを解釈するために処理することができる画像を取り込むことができる。
エクステンデッドリアリティシステム200は、単一のコンピューティングデバイスまたは複数のコンピューティングデバイスの一部であるか、またはそれらによって実装することができる。いくつかの例では、エクステンデッドリアリティシステム200は、エクステンデッドリアリティヘッドマウントディスプレイ(HMD)デバイス、エクステンデッドリアリティグラス(たとえば、拡張現実もしくはARグラス)、カメラシステム(たとえば、デジタルカメラ、IPカメラ、ビデオカメラ、セキュリティカメラなど)、電話システム(たとえば、スマートフォン、セルラー電話、会議システムなど)、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、スマートテレビジョン、ディスプレイデバイス、ゲーム機、ビデオストリーミングデバイス、モノのインターネット(IoT)デバイス、および/または任意の他の適切な電子デバイスなど、1つの電子デバイス(または複数のデバイス)の一部であることができる。
いくつかの実装形態では、1つまたは複数の画像センサ202、加速度計204、ジャイロスコープ206、ストレージ208、計算コンポーネント210、XRエンジン220、セルフ画像エンジン222、画像処理エンジン224、およびレンダリングエンジン226は、同じコンピューティングデバイスの一部であることができる。たとえば、場合によっては、1つまたは複数の画像センサ202、加速度計204、ジャイロスコープ206、ストレージ208、計算コンポーネント210、XRエンジン220、セルフ画像エンジン222、画像処理エンジン224、およびレンダリングエンジン226は、HMD、エクステンデッドリアリティグラス、スマートフォン、ラップトップ、タブレットコンピュータ、ゲーム用システム、および/または任意の他のコンピューティングデバイスに統合することができる。ただし、いくつかの実装形態では、1つまたは複数の画像センサ202、加速度計204、ジャイロスコープ206、ストレージ208、計算コンポーネント210、XRエンジン220、セルフ画像エンジン222、画像処理エンジン224、およびレンダリングエンジン226は、2つ以上の別個のコンピューティングデバイスの一部であることができる。たとえば、場合によっては、コンポーネント202~226のいくつかは、1つのコンピューティングデバイスの一部であるか、またはそれらによって実装することができ、残りのコンポーネントは、1つまたは複数の他のコンピューティングデバイスの一部であるか、またはそれらによって実装することができる。
ストレージ208は、データを記憶するための、どの記憶デバイスであることもできる。その上、ストレージ208は、エクステンデッドリアリティシステム200のコンポーネントのいずれからのデータも記憶することができる。たとえば、ストレージ208は、画像センサ202からのデータ(たとえば、画像もしくはビデオデータ)、加速度計204からのデータ(たとえば、測定値)、ジャイロスコープ206からのデータ(たとえば、測定値)、計算コンポーネント210からのデータ(たとえば、処理パラメータ、選好、仮想コンテンツ、レンダリングコンテンツ、シーンマップ、追跡および位置特定データ、オブジェクト検出データ、プライバシーデータ、XRアプリケーションデータ、顔認識データ、オクルージョンデータなど)、XRエンジン220からのデータ、セルフ画像エンジン222からのデータ、画像処理エンジン224からのデータ、ならびに/またはレンダリングエンジン226からのデータ(たとえば、出力フレーム)を記憶することができる。いくつかの例では、ストレージ208は、計算コンポーネント210による処理のためのフレームを記憶するためのバッファを含むことができる。
1つまたは複数の計算コンポーネント210は、中央処理ユニット(CPU)212、グラフィックス処理ユニット(GPU)214、デジタル信号プロセッサ(DSP)216、および/または画像信号プロセッサ(ISP)218を含むことができる。計算コンポーネント210は、画像強調、コンピュータビジョン、グラフィックスレンダリング、エクステンデッドリアリティ(たとえば、追跡、位置特定、ポーズ推定、マッピング、コンテンツ固定、コンテンツレンダリングなど)、画像/ビデオ処理、センサ処理、認識(たとえば、テキスト認識、顔認識、オブジェクト認識、特徴認識、追跡またはパターン認識、シーン認識、オクルージョン検出など)、機械学習、フィルタリング、および本明細書において記載する様々な動作のいずれかなど、様々な動作を実施することができる。この例では、計算コンポーネント210は、XRエンジン220、セルフ画像エンジン222、画像処理エンジン224、およびレンダリングエンジン226を実装する。他の例では、計算コンポーネント210は、1つまたは複数の他の処理エンジンを実装することもできる。
画像センサ202は、どの画像および/またはビデオセンサまたは取込みデバイスも含むことができる。いくつかの例では、画像センサ202は、デュアルカメラアセンブリなどの複数カメラアセンブリの一部であることができる。画像センサ202は、画像および/またはビデオコンテンツ(たとえば、未加工画像および/またはビデオデータ)を取り込むことができ、これらは次いで、本明細書において記載するように、計算コンポーネント210、XRエンジン220、セルフ画像エンジン222、画像処理エンジン224、および/またはレンダリングエンジン226によって処理することができる。
いくつかの例では、画像センサ202は、画像データを取り込むことができ、画像データに基づいてフレームを生成することができ、かつ/または画像データもしくはフレームを処理のためにXRエンジン220、セルフ画像エンジン222、画像処理エンジン224、および/もしくはレンダリングエンジン226に提供することができる。フレームは、ビデオシーケンスのビデオフレームまたは静止画像を含むことができる。フレームは、シーンを表すピクセルアレイを含むことができる。たとえば、フレームは、ピクセルごとに赤、緑、および青色成分を有する赤緑青(RGB)フレーム、ピクセルごとにルーマ成分ならびに2つのクロマ(色)成分(赤差および青差)を有するルーマ、赤差、青差(YCbCr)フレーム、または任意の他の適切なタイプのカラーもしくはモノクロピクチャであることができる。
場合によっては、画像センサ202(および/またはエクステンデッドリアリティシステム200の他の画像センサもしくはカメラ)は、深度情報も取り込むように構成することができる。たとえば、いくつかの実装形態では、画像センサ202(および/または他のカメラ)は、RGB深度(RGB-D)カメラを含むことができる。場合によっては、エクステンデッドリアリティシステム200は、画像センサ202(および/または他のカメラ)とは別個であり、深度情報を取り込むことができる1つまたは複数の深度センサ(図示せず)を含むことができる。たとえば、そのような深度センサは、画像センサ202からは独立して、深度情報を取得することができる。いくつかの例では、深度センサは、画像センサ202と同じ一般的ロケーションに物理的に設置することができるが、画像センサ202とは異なる周波数またはフレームレートで動作してもよい。いくつかの例では、深度センサは、1つまたは複数の狭帯域の光を含む場合がある構造化またはテクスチャード光パターンを、シーン中の1つまたは複数のオブジェクトに投影することができる光源の形をとることができる。深度情報は次いで、オブジェクトの表面形状によって引き起こされた、投影されたパターンの幾何学的歪みを活用することによって取得することができる。一例では、深度情報は、赤外線構造化光プロジェクタと、カメラ(たとえば、RGBカメラ)に登録された赤外線カメラの組合せなどのステレオセンサから取得されてもよい。
上述したように、場合によっては、エクステンデッドリアリティシステム200は、画像センサ202以外の1つまたは複数のセンサ(図示せず)も含むことができる。たとえば、1つまたは複数のセンサは、1つもしくは複数の加速度計(たとえば、加速度計204)、1つもしくは複数のジャイロスコープ(たとえば、ジャイロスコープ206)、および/または他のセンサを含むことができる。1つまたは複数のセンサは、速度、配向、および/または他の位置関連情報を計算コンポーネント210に提供することができる。たとえば、加速度計204は、エクステンデッドリアリティシステム200による加速度を検出することができ、検出された加速度に基づいて加速度測定を生成することができる。場合によっては、加速度計204は、エクステンデッドリアリティシステム200の位置またはポーズを判断するために使うことができる1つまたは複数の並進ベクトル(たとえば、上/下、左/右、前/後)を提供することができる。ジャイロスコープ206は、エクステンデッドリアリティシステム200の配向および角速度を検出し、測定することができる。たとえば、ジャイロスコープ206は、エクステンデッドリアリティシステム200のピッチ、ロール、およびヨーを測定するのに使うことができる。場合によっては、ジャイロスコープ206は、1つまたは複数の回転ベクトル(たとえば、ピッチ、ヨー、ロール)を提供することができる。いくつかの例では、画像センサ202および/またはXRエンジン220は、加速度計204(たとえば、1つもしくは複数の並進ベクトル)および/またはジャイロスコープ206(たとえば、1つもしくは複数の回転ベクトル)によって取得された測定を、エクステンデッドリアリティシステム200のポーズを算出するのに使うことができる。前記のように、他の例では、エクステンデッドリアリティシステム200は、慣性測定ユニット(IMU)、磁力計、マシンビジョンセンサ、スマートシーンセンサ、音声認識センサ、インパクトセンサ、ショックセンサ、位置センサ、傾斜センサなどのような、他のセンサも含むことができる。
場合によっては、1つまたは複数のセンサは、少なくとも1つのIMUを含むことができる。IMUとは、1つまたは複数の加速度計、1つもしくは複数のジャイロスコープ、および/または1つもしくは複数の磁力計の組合せを使って、エクステンデッドリアリティシステム200の特定の力、角速度、および/または配向を測定する電子デバイスである。いくつかの例では、1つまたは複数のセンサは、画像センサ202(および/もしくはエクステンデッドリアリティシステム200の他のカメラ)によって取り込まれた画像の取込みに関連付けられた、測定された情報ならびに/またはエクステンデッドリアリティシステム200の1つもしくは複数の深度センサを使って取得された深度情報を出力することができる。
1つまたは複数のセンサ(たとえば、加速度計204、ジャイロスコープ206、1つもしくは複数のIMU、および/または他のセンサ)の出力は、エクステンデッドリアリティエンジン220によって、エクステンデッドリアリティシステム200のポーズ(頭部ポーズとも呼ばれる)および/または画像センサ202(もしくはエクステンデッドリアリティシステム200の他のカメラ)のポーズを判断するのに使うことができる。場合によっては、エクステンデッドリアリティシステム200のポーズおよび画像センサ202(または他のカメラ)のポーズは同じであることができる。画像センサ202のポーズは、基準フレームに相対した、画像センサ202の位置および配向を指す。いくつかの実装形態では、カメラのポーズは、6自由度(6DOF)で判断することができ、この自由度は、3つの並進成分(たとえば、画像プレーンなどの基準フレームに相対したX(水平)、Y(垂直)、およびZ(深度)座標で与えることができる)ならびに3つの角度成分(たとえば、同じ基準フレームに相対したロール、ピッチ、およびヨー)を指す。
場合によっては、デバイス追跡器(図示せず)は、1つまたは複数のセンサからの測定および画像センサ202からの画像データを、エクステンデッドリアリティシステム200のポーズ(たとえば、6DOFポーズ)を追跡するのに使うことができる。たとえば、デバイス追跡器は、取り込まれた画像データからの視覚データを慣性測定データと(たとえば、視覚追跡ソリューションを使って)融合して、物質界(たとえば、シーン)および物質界のマップに相対した、エクステンデッドリアリティシステム200の位置およびモーションを判断することができる。以下で説明するように、いくつかの例では、エクステンデッドリアリティシステム200のポーズを追跡するとき、デバイス追跡器は、シーン(たとえば、実世界)の3次元(3D)マップを生成し、かつ/またはシーンの3Dマップ向けの更新を生成することができる。3Dマップ更新は、たとえば、限定なしで、シーンおよび/またはシーンの3Dマップに関連付けられた新たなまたは更新された特徴および/または特徴もしくはランドマーク点、シーンおよびシーンの3Dマップ内のエクステンデッドリアリティシステム200の位置を識別または更新する位置特定更新、などを含むことができる。3Dマップは、実世界/物質界の中のシーンのデジタル表現を提供することができる。いくつかの例では、3Dマップは、ロケーションベースのオブジェクトおよび/またはコンテンツを、実世界座標および/またはオブジェクトに固定することができる。エクステンデッドリアリティシステム200は、マップされたシーン(たとえば、3Dマップによって表される、かつ/またはそれに関連付けられた物質界の中のシーン)を、物質界と仮想世界をマージし、かつ/または仮想コンテンツもしくはオブジェクトを物理的環境とマージするのに使うことができる。
いくつかの態様では、全体としての画像センサ202および/またはエクステンデッドリアリティシステム200のポーズは、画像センサ202(および/またはエクステンデッドリアリティシステム200の他のカメラ)によって取り込まれた画像に基づいて、視覚追跡ソリューションを使って、計算コンポーネント210によって判断および/または追跡することができる。たとえば、いくつかの例では、計算コンポーネント210は、コンピュータビジョンベースの追跡、モデルベースの追跡、ならびに/または同時位置推定および地図構築(SLAM)技法を使って追跡を実施することができる。たとえば、計算コンポーネント210は、SLAMを実施することができ、またはSLAMエンジン(図示せず)と(ワイヤードもしくはワイヤレス)通信することができる。SLAMは、環境のマップ(たとえば、エクステンデッドリアリティシステム200によってモデル化される環境のマップ)が作成され、その間、そのマップに相対した、カメラ(たとえば、画像センサ202)および/またはエクステンデッドリアリティシステム200のポーズを一斉に追跡する技法のクラスを指す。マップは、SLAMマップと呼ぶことができ、3Dであることができる。SLAM技法は、画像センサ202(および/またはエクステンデッドリアリティシステム200の他のカメラ)によって取り込まれたカラーまたはグレースケール画像データを使って実施することができ、画像センサ202および/またはエクステンデッドリアリティシステム200の6DOFポーズ測定の推定値を生成するのに使うことができる。6DOF追跡を実施するように構成される、そのようなSLAM技法は、6DOF SLAMと呼ぶことができる。場合によっては、1つまたは複数のセンサ(たとえば、加速度計204、ジャイロスコープ206、1つもしくは複数のIMU、および/または他のセンサ)の出力は、推定されたポーズを推定し、訂正し、かつ/またはそうでなければ調節するのに使うことができる。
場合によっては、6DOF SLAM(たとえば、6DOF追跡)は、画像センサ202(および/または他のカメラ)からのいくつかの入力画像から観察された特徴をSLAMマップに関連付けることができる。たとえば、6DOF SLAMは、入力画像からの特徴点関連付けを、入力画像向けの画像センサ202および/またはエクステンデッドリアリティシステム200のポーズ(位置および配向)を判断するのに使うことができる。6DOFマッピングは、SLAMマップを更新するために実施することもできる。場合によっては、6DOF SLAMを使って維持されるSLAMマップは、2つ以上の画像から三角測量された3D特徴点を含むことができる。たとえば、観察されたシーンを表すために、入力画像またはビデオストリームから、キーフレームを選択することができる。すべてのキーフレームについて、画像に関連付けられたそれぞれの6DOFカメラポーズを判断することができる。画像センサ202および/またはエクステンデッドリアリティシステム200のポーズは、3D SLAMマップからの特徴を画像またはビデオフレームに投影し、検証された2D-3D対応からのカメラポーズを更新することによって判断することができる。
1つの説明のための例において、計算コンポーネント210は、すべての入力画像から、または各キーフレームから、特徴点を抽出することができる。本明細書で使用する特徴点(登録点とも呼ばれる)とは、特に、手の一部、テーブルのへりなど、画像の特有または識別可能な一部である。取り込まれた画像から抽出された特徴は、3次元空間(たとえば、X、Y、およびZ軸上の座標)に沿った特有の特徴点を表すことができ、すべての特徴点が、関連付けられた特徴ロケーションを有することができる。キーフレーム中の特徴点は、あらかじめ取り込まれた入力画像もしくはキーフレームの特徴点と一致する(同じであるか、もしくは対応する)か、または一致しないかのいずれかである。特徴点を検出するのに、特徴検出を使うことができる。特徴検出は、特定のピクセルに特徴が存在するかどうかを判断するために、画像の1つまたは複数のピクセルを調べるのに使われる画像処理動作を含むことができる。特徴検出は、取り込まれた画像全体または画像のいくつかの部分を処理するのに使うことができる。各画像またはキーフレームに対して、特徴が検出されると、特徴付近の局所的画像パッチを抽出することができる。特徴は、スケール不変特徴変換(SIFT)(特徴を位置特定し、それらの記述を生成する)、Speed Up Robust Features(SURF)、勾配位置配向ヒストグラム(GLOH)、正規化相互相関(NCC)、または他の適切な技法など、どの適切な技法を使って抽出されてもよい。
場合によっては、エクステンデッドリアリティシステム200は、ユーザを仮想環境中の仮想コンテンツと対話させ、かつ/または仮想コンテンツを制御させるために、ユーザの手および/または指を追跡することもできる。たとえば、エクステンデッドリアリティシステム200は、ユーザの手および/または指先のポーズおよび/または動きを追跡して、仮想環境とのユーザ対話を識別または翻訳することができる。ユーザ対話は、たとえば、限定なしで、仮想コンテンツの項目を動かすこと、仮想コンテンツの項目および/または仮想プライベート空間のロケーションをサイズ変更すること、仮想ユーザインターフェース(たとえば、モバイルフォンの仮想表現、仮想キーボード、および/または他の仮想インターフェース)における入力インターフェース要素を選択すること、仮想ユーザインターフェースを通して入力を与えること、などを含むことができる。
XRエンジン220、セルフ画像エンジン222、画像処理エンジン224、およびレンダリングエンジン226向けの動作は、計算コンポーネント210のいずれかによって実装され得る。1つの説明のための例において、レンダリングエンジン226の動作は、GPU214によって実装することができ、XRエンジン220、セルフ画像エンジン222、および画像処理エンジン224の動作は、CPU212、DSP216、および/またはISP218によって実装することができる。場合によっては、計算コンポーネント210は、本明細書において記載する様々な動作のいずれをも実施するための、他の電子回路もしくはハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらのどの組合せも含むことができる。
いくつかの例では、XRエンジン220は、画像センサ202、加速度計204、ジャイロスコープ206、および/または1つもしくは複数のIMU、レーダなどの、エクステンデッドリアリティシステム200上の1つもしくは複数のセンサからのデータに基づいてXR体験を生成するためにXR動作を実施することができる。いくつかの例では、XRエンジン220は、追跡、位置特定、ポーズ推定、マッピング、コンテンツアンカリングの動作、および/または任意の他のXR動作/機能を実行することができる。XR体験は、仮想セッション中にXRコンテンツ(たとえば、仮想現実コンテンツ、拡張現実コンテンツ、複合現実コンテンツなど)をユーザに対して提示するための、エクステンデッドリアリティシステム200の使用を含むことができる。いくつかの例では、XRコンテンツおよび体験は、特に、たとえば、XRゲーム体験、XR教室体験、XR買物体験、XR娯楽体験、XR活動(たとえば、動作、トラブルシューティング活動など)など、特定のXR体験を提供するXRアプリケーション(たとえば、XRエンジン220によって実行または実装される)を通してエクステンデッドリアリティシステム200によって提供することができる。XR体験中、ユーザは、エクステンデッドリアリティシステム200を使って仮想コンテンツを閲覧および/または仮想コンテンツと対話することができる。場合によっては、ユーザは、仮想コンテンツを閲覧および/または仮想コンテンツと対話することができるとともに、ユーザの周りの物理的環境を閲覧および/または物理的環境と対話することも可能であり、ユーザが、物理的環境と、物理的環境と混合または統合された仮想コンテンツとの間の没入型体験をもつことを可能にする。
セルフ画像エンジン222は、セルフ画像をキャプチャすることと関連付けられた様々な動作を実行することができる。場合によっては、セルフ画像エンジン222は、ユーザのアバター(またはユーザの別のタイプのデジタル表現)と1つまたは複数の背景フレームとを組み合わせることによってセルフ画像を生成することができる。たとえば、セルフ画像エンジン222は、(エクステンデッドリアリティシステム200の1つまたは複数の他のコンポーネントと併せて)マルチ動作のセルフ画像キャプチャプロセスを実行することができる。セルフ画像キャプチャプロセスの1つの動作は、エクステンデッドリアリティシステム200が設置された実世界環境の1つまたは複数のフレームをキャプチャすることを伴うことができる。セルフ画像キャプチャプロセスの別の動作は、ユーザのキャプチャされたポーズ(たとえば、表情、ジェスチャー、姿勢、ロケーションなど)を反映するアバターを生成することを伴うことができる。セルフ画像キャプチャプロセスのさらなる動作は、アバターと、実世界環境の1つまたは複数のフレームとを組み合わせることを伴うことができる。以下でより詳細に説明するように、セルフ画像エンジン222は、マルチ動作のセルフ画像キャプチャプロセスの動作を、様々な順序および/または方法で実行することができる。
図3Aおよび図3Bは、セルフ画像キャプチャシステム300(A)およびセルフ画像キャプチャシステム300(B)それぞれの例を示すブロック図である。場合によっては、セルフ画像キャプチャシステム300(A)および300(B)は、単一のシステムまたはデバイス(たとえば、単一のエクステンデッドリアリティシステムまたはデバイス)の様々な例示的な実装形態または動作、および本明細書で説明するセルフ画像キャプチャ技法の様々な例示的な実装形態を表すことができる。たとえば、セルフ画像キャプチャシステム300(A)および300(B)は、エクステンデッドリアリティシステム200のセルフ画像エンジン222の様々な実装形態または動作に対応することができる。図示のように、セルフ画像キャプチャシステム300(A)および300(B)は、同じコンポーネントのうちの1つまたは複数を含むことができる。たとえば、セルフ画像キャプチャシステム300(A)および300(B)は、セルフ画像開始エンジン302、アバターエンジン304、背景フレームエンジン306、および構成エンジン308を含む1つまたは複数のエンジンを含むことができる。セルフ画像キャプチャシステム300(A)および300(B)のエンジンは、セルフ画像フレーム316を生成するように構成され得る。セルフ画像フレーム316は、少なくとも1人のユーザのデジタル表現(たとえば、アバター318)がその上に重ねられた1つまたは複数の背景フレーム(たとえば、背景フレーム314)を含むことができる。たとえば、セルフ画像フレーム316は、「セルフィー」写真または「セルフィー」ビデオに対応することができる。
場合によっては、セルフ画像キャプチャシステム300(A)および300(B)は、それぞれ、セルフ画像キャプチャのためのマルチ動作プロセスを実行するように構成され得る。下記の説明は、セルフ画像キャプチャシステム300(A)および300(B)によって実行されるセルフ画像キャプチャプロセスの様々な動作の一般的説明を提供する。次いで、セルフ画像キャプチャシステム300(A)およびセルフ画像キャプチャシステム300(B)に対応する特定の実装形態のより詳細な説明が、個々の図に対する特定の参照とともに提供される。
場合によっては、セルフ画像開始エンジン302は、セルフ画像キャプチャプロセスの開始に対応するユーザ入力(たとえば、ユーザ入力310)を検出することができる。たとえば、セルフ画像開始エンジン302は、セルフ画像キャプチャシステム300(A)および300(B)を実装するXRデバイス(または他のタイプのデバイス)内で「セルフィーモード」の活性化に対応するユーザ入力を検出することができる。ユーザ入力310は、他のタイプの入力の中でも、音声コマンド、タッチ入力、ジェスチャー入力など、様々なタイプのユーザ入力を含むことができる。場合によっては、セルフ画像開始エンジン302は、ユーザが実世界環境内でXRデバイスを装着および/または使用している間に、ユーザ入力310を検出することができる。たとえば、セルフ画像開始エンジン302は、XRデバイスが使用されている間に、ユーザ入力310に対するXRデバイスの1つまたは複数のユーザインターフェースをモニタすることができる。
ユーザ入力310を検出することに基づいて、セルフ画像キャプチャシステム300(A)および/または300(B)は、セルフ画像キャプチャプロセス内の次の動作を開始することができる。一例では、アバターエンジン304は、ユーザポーズ312を決定することができる。ユーザポーズ312は、ユーザの物理品質および/または特性を含むことができ、かつ/またはそれに対応することができる。たとえば、ユーザポーズ312は、ユーザの現在の表情、感情、ジェスチャー(たとえば、手のジェスチャー)、四肢位置などのうちの1つまたは複数を含むことができる。さらに、ユーザポーズ312は、実世界環境内のユーザの物理ロケーション(たとえば、3Dロケーション)を含むことができ、かつ/またはそれに対応することができる。アバターエンジン304は、様々な追跡および/またはスキャニングの技法および/またはアルゴリズムを使用してユーザポーズ312を決定することができる。たとえば、アバターエンジン304は、1つまたは複数の視線追跡技法、SLAM技法、6DOF位置決め技法、身体追跡技法、顔の表情追跡技法、コンピュータビジョン技法、任意のそれらの組合せ、または他の追跡および/もしくはスキャニング技法を使用してユーザポーズ312を決定することができる。一例では、アバターエンジン304は、そのような追跡および/またはスキャニング技法のうちの1つまたは複数を、XRデバイス(たとえば、HMD)の内向きカメラによってキャプチャされた画像データに適用することによって、ユーザポーズ312を決定することができる。場合によっては、XRデバイスの内向きカメラは、ユーザの顔および/または身体の位置をキャプチャすることができる場合がある。たとえば、内向きカメラの視野(FOV)は、(たとえば、カメラの配置および/またはXRデバイスがユーザの顔を視覚的にブロックすることによって)ユーザの顔および/または身体の全体よりも小さいものに対応する場合がある。したがって、場合によっては、アバターエンジン304は、ユーザの一部に対応する画像データに基づいてユーザポーズ312を決定(たとえば、推測および/または推定)することができる。たとえば、以下でより詳細に説明するように、アバターエンジン304は、ユーザの部分に対応する画像データに基づいてユーザポーズを決定するようにトレーニングされた機械学習アルゴリズムを使用してユーザポーズ312を決定することができる。さらに、いくつかの例では、アバターエンジン304は、XRデバイスの1つまたは複数の外向きカメラを使用してユーザポーズ312を決定することができる。たとえば、アバターエンジン304は、内向きカメラによってキャプチャされた画像データに少なくとも部分的に基づいてユーザの顔の表情を決定し、外向きカメラによってキャプチャされた画像データに少なくとも部分的に基づいてユーザの四肢位置および/または手のジェスチャーを決定することができる。アバターエンジン304は、XRデバイスの内向きカメラ、外向きカメラ、および/または追加のカメラの任意の組合せを使用してユーザポーズ312を決定することができる。
場合によっては、アバターエンジン304は、追加のユーザ入力に基づいてユーザポーズ312をキャプチャすることができる。たとえば、アバターエンジン304は、ユーザの現在のポーズをキャプチャするようにアバターエンジン304に指示するユーザ入力を検出することができる。追加のユーザ入力は、他のタイプの入力の中でも、音声コマンド、タッチ入力、ジェスチャー入力など、様々なタイプのユーザ入力を含むことができる。1つの説明のための例において、ユーザは、彼らの現在のポーズおよび/またはロケーションに満足した時点の入力を提供することができる。さらに、ユーザ入力は、(たとえば、単一のセルフ画像を生成するために)ユーザポーズ312に対応する単一のフレームをキャプチャするようにアバターエンジン304に指示する入力、または(たとえば、セルフビデオを生成するために)ユーザポーズ312に対応する一連のフレームをキャプチャするようにアバターエンジン304に指示する入力を含むことができる。
いくつかの例では、アバターエンジン304は、ユーザポーズ312を反映するユーザのアバター318を生成することができる。本明細書で使用する「アバター」という用語は、ユーザの全部または一部の任意のデジタル表現を含むことができる。一例では、ユーザのアバターは、コンピュータ生成の画像データを含むことができる。追加または代替として、ユーザのアバターは、画像センサによってキャプチャされた画像データを含むことができる。さらに、ユーザのアバターは、ユーザの抽象的な(たとえば、漫画のような)表現、またはユーザの写実的な(またはほぼ写実的な)表現に対応することができる。場合によっては、ユーザポーズ312を反映させるためにアバター318を生成することは、アバター318を「操る」と呼ばれることがある。
いくつかの例では、アバターエンジン304は、1つまたは複数の機械学習システムおよび/またはアルゴリズムを使用してアバター318を生成することができる。たとえば、アバターエンジン304は、様々なユーザポーズと関連付けられた画像データに対して機械学習アルゴリズムを使用してトレーニングされた機械学習モデルに基づいてアバター318を生成することができる。この例では、機械学習モデルは、キャプチャされたユーザポーズを示す情報が推測中のモデルに入力されたときにキャプチャされたユーザポーズに、そのポーズが対応するアバターを出力するようにトレーニングされ得る。1つの説明のための例において、機械学習モデルがトレーニングされると、アバターエンジン304は、ユーザのキャプチャされたポーズおよびユーザの1つまたは複数の画像を示す情報を、モデルへの入力として提供することができる。場合によっては、ユーザの1つまたは複数の画像は、ユーザのポーズとは無関係であってもよい。たとえば、アバターエンジン304は、ユーザの1つまたは複数の画像(たとえば、ユーザの全身画像)を、ユーザに対するセルフ画像キャプチャシステムをセットアップおよび/または構成することの一部としてキャプチャすることができる。ユーザのキャプチャされたポーズおよびユーザの1つまたは複数の画像に基づいて、機械学習モデルは、キャプチャされたポーズにおけるユーザに似ているアバターを出力することができる。たとえば、ユーザのキャプチャされたポーズが特定の手のジェスチャー(たとえば、「ピースサイン」)を含む場合、機械学習モデルは、(モデルが、特定の手のジェスチャーを行っているユーザと関連付けられた前の画像データを有しない場合でも)特定の手のジェスチャーを行っているユーザに似ているアバターを出力することができる。
アバターエンジン304は、アバター318を生成するために、様々なタイプの機械学習アルゴリズムを実装することができる。1つの説明のための例において、アバターエンジン304は、敵対的生成ネットワーク(GAN)などのディープニューラルネットワーク(NN)を実装することができる。ディープニューラルネットワークの説明のための例が、図8および図9に関して以下で説明される。機械学習モデルの追加の例は、限定なしで、時間遅延ニューラルネットワーク(TDNN)、ディープフィードフォワードニューラルネットワーク(DFFNN)、再帰ニューラルネットワーク(RNN)、オートエンコーダ(AE)、バリエーションAE(VAE)、ノイズ除去AE(DAE)、スパースAE(SAE)、マルコフチェーン(MC)、パーセプトロン、またはこれらの何らかの組合せを含む。機械学習アルゴリズムは、教師あり学習アルゴリズム、教師なし学習アルゴリズム、半教師あり学習アルゴリズム、これらの任意の組合せ、または他の学習技法であってもよい。
いくつかの例では、アバターエンジン304は、異なる様々なアバター318を生成するように構成される複数(たとえば、2つ以上)の機械学習モデルを実装することができる。たとえば、図3Aおよび図3Bに示すように、アバターエンジン304は、オプションで、アバターエンジン304(A)およびアバターエンジン304(B)を含むことができる。場合によっては、アバターエンジン304(A)は、第1のバージョンのアバター(アバター318(A)として示される)および第2のバージョンのアバター(アバター318(B)として示される)を生成または取得することができる。一例では、アバター318(A)は、アバター318のプレビューまたは初期バージョンに対応することができる。そのような一例では、アバター318(B)は、アバター318の最終バージョンに対応することができる。場合によっては、アバター318(A)(プレビューまたは初期バージョン)は、アバター318(B)(最終バージョン)と比較すると、より低忠実度バージョンであり得る。いくつかの例では、アバターエンジン304(A)は、(たとえば、所望のユーザポーズ312および/または背景フレーム314のキャプチャを容易にするために)、ユーザポーズ312および/または背景フレーム314がキャプチャされる前にアバター318(A)を生成および/または表示することができる。ユーザポーズ312および/または背景フレーム314がキャプチャされると、アバターエンジン304(B)は、アバター318(B)を生成することができる。構成エンジン308は、アバター318(B)を使用してセルフ画像フレーム316を生成することができる。たとえば、より低忠実度のアバター(たとえば、アバター318(A))は、ユーザが彼らの現在のポーズにあるときに、XRデバイスまたはXRシステムによって表示される。次いで、ユーザは、(たとえば、アバター318(B)を生成するために使用される)最終ポーズをキャプチャするためにXRデバイスまたはXRシステムを動作させることができ、その最終ポーズを、構成エンジン308は、セルフ画像フレーム316を生成するときに、構成のために使用することができる。ポーズキャプチャステージまたは背景画像キャプチャステージの間のより低忠実度のアバター(たとえば、アバター318(A))に提示する便益が、最終構成がより高忠実度のアバター(たとえば、アバター318(B))を使用して実行される前に、構成がより低い処理電力で実行されることを可能にすることができる。
場合によっては、アバターエンジン304(A)は、アバター318(A)(たとえば、アバター318のプレビューまたは初期バージョン)を生成する第1の機械学習モデルを実装することができる。場合によっては、アバターエンジン304(B)は、アバター318(B)(たとえば、アバター318の最終バージョン)を生成する第2の機械学習モデルを実装することができる。いくつかの態様では、アバターエンジン304(A)によって実装された第1の機械学習モデルは、アバターエンジン304(B)によって実装された第2の機械学習モデルよりも少ない処理電力を必要とする場合がある。たとえば、第1の機械学習モデルは、ローカルに(たとえば、XRシステムまたはXRデバイス内に)実装され得る比較的単純な(たとえば、低忠実度の)モデルであってもよい。いくつかの態様では、第1の機械学習モデルは、同じく、実時間(または、ほぼ実時間)内に実施されてもよい。第2の機械学習モデルは、比較的複雑(たとえば、高忠実度)であってもよい。いくつかの態様では、第2の機械学習モデルは、オフラインで(たとえば、アバターを生成するように構成されるリモートサーバまたはデバイスを使用して)実施されてもよい。
場合によっては、背景フレームエンジン306は、1つまたは複数の背景フレーム(たとえば、背景フレーム314)をキャプチャすることができる。背景フレーム314は、セルフ画像(またはセルフビデオ)の背景になる任意のフレームを含むことができ、かつ/またはそれに対応することができる。一例では、背景フレームエンジン306は、追加のユーザ入力に基づいて背景フレーム314をキャプチャすることができる。たとえば、背景フレームエンジン306は、XRシステムまたはXRデバイスの外向きカメラを使用して実世界環境の1つまたは複数のフレームをキャプチャするように背景フレームエンジン306に指示するユーザ入力を検出することができる。追加のユーザ入力は、他のタイプの入力の中でも、音声コマンド、タッチ入力、ジェスチャー入力など、様々なタイプのユーザ入力を含むことができる。1つの説明のための例において、ユーザは、実世界環境の現在の光景(それは、XRデバイスのディスプレイの上に、および/またはそれを介して表示され得る)に満足した時点の入力を提供することができる。さらに、ユーザ入力は、実世界環境の単一のフレームを(たとえば、単一のセルフ画像を生成するために)キャプチャするように背景フレームエンジン306に指示する入力、または実世界環境の一連のフレームを(たとえば、セルフビデオを生成するために)キャプチャするように背景フレームエンジン306に指示する入力を含むことができる。
構成エンジン308は、アバター318(たとえば、アバター318(B))および背景フレーム314に基づいてセルフ画像フレーム316(または一連のセルフ画像フレーム)を生成することができる。たとえば、構成エンジン308は、アバター318を背景フレーム314上に重ねることができる。上記のように、アバターエンジン304は、ユーザポーズ312に対応するユーザの3Dロケーションを決定することができる。したがって、構成エンジン308は、アバター318を、対応するロケーション内の背景フレーム314内に重ねることができる。たとえば、構成エンジン308は、アバターエンジン304がユーザポーズ312をキャプチャしたときのユーザと同じ3Dロケーションに、アバター318が設置されているように見えるように、アバター318を背景フレーム314内に表すことができる。このようにして、得られたセルフ画像フレーム316は、ユーザに対面する景色(たとえば、従来の「セルフィー」をキャプチャするために使用される前向きカメラの景色)から取得されたユーザの画像であるように見え得る。
いくつかの例では、構成エンジン308は、1つまたは複数の機械学習システムおよび/またはアルゴリズムを使用してアバター318を背景フレーム314上に重ねることができる。たとえば、構成エンジン308は、様々なアバターおよび/または背景フレームと関連付けられた画像データ上で機械学習アルゴリズムを使用してトレーニングされた機械学習モデルに基づいてアバター318を背景フレーム314上に重ねることができる。この例では、機械学習モデルは、アバターの視覚特性(たとえば、照明、色など)が、背景フレームの視覚特性と一致および/または一貫しているように、アバターを背景フレーム内に組み込むようにトレーニングされ得る。たとえば、機械学習モデルがトレーニングされると、構成エンジン308は、アバターと関連付けられた1つまたは複数の背景フレームおよび情報(たとえば、少なくとも部分的に表されたアバターおよび/またはアバターを生成するようにトレーニングされた機械学習モデル)を、モデルへの入力として提供することができる。アバターと関連付けられた情報に基づいて、機械学習モデルは、アバターを1つまたは複数の背景フレーム上に、自然におよび/または写実的に重ね合わせることができる。1つの説明のための例において、モデルは、1つまたは複数の背景フレームが、アバターが重ねられるロケーション内に暗部を含むと決定することができる。この例では、モデルは、対応する暗部を含むようにアバターを表すことができる。
構成エンジン308は、アバター318(上記で説明した)を生成するためにアバターエンジン304によって実装され得る機械学習アルゴリズムのいずれかを含む、セルフ画像フレーム316を生成するための様々なタイプの機械学習アルゴリズムを実装することができる。場合によっては、構成エンジン308によって実装された機械学習モデルは、アバターエンジン304によって実装された機械学習モデルと異なる場合がある。たとえば、アバター318を生成するようにトレーニングされた機械学習モデルの出力は、セルフ画像フレーム316を生成するようにトレーニングされた機械学習モデルへの入力であり得る。
1つの説明のための例において、図3Aに示すセルフ画像キャプチャシステム300(A)は、背景フレーム314をキャプチャする動作の前に、アバター318を生成する動作を実行することができる。図4A、図4Bおよび図4Cは、そのようなセルフ画像キャプチャプロセスの一例を示す。この例では、セルフ画像開始エンジン302は、XRデバイスのセルフ画像キャプチャモードの開始に対応するユーザ入力310を検出することができる。ユーザ入力310に応答して、セルフ画像キャプチャシステム300(A)は、アバターエンジン304がユーザポーズ312をキャプチャすることができるポーズキャプチャモードを開始することができる。1つの説明のための例において、アバターエンジン304は、セルフ画像のための所望のポーズを取るようにユーザに指示する命令を(たとえば、XRデバイスのディスプレイ内に)出力することができる。しかしながら、いくつかの例では、アバターエンジン304は、(たとえば、ユーザがセルフ画像キャプチャプロセスに精通している場合)命令を出力しない場合がある。場合によっては、所望のポーズは、(たとえば、背景フレーム314内の対応するロケーション内にアバター318を表すことを容易にするために)実世界環境内の所望の3Dロケーションを含むことができる。ポーズキャプチャモードにある間に、アバターエンジン304は、ユーザポーズ312をキャプチャするようにアバターエンジン304に指示するユーザ入力を検出することができる。
図4Aは、ユーザポーズ312の少なくとも一部に対応する例示的なフレーム402を示す。この例では、ユーザポーズ312は、手のジェスチャー(たとえば、「ピースサイン」)を含む。アバターエンジン304は、XRデバイスの1つまたは複数の外向きカメラによってキャプチャされた画像データに少なくとも部分的に基づいて手のジェスチャーを検出することができる。図示しないが、ユーザポーズ312は、ユーザの身体的外観についての追加の情報を含むことができる。たとえば、アバターエンジン304は、ユーザの身体および/または他の四肢の位置についての情報を決定することができる。別の例では、アバターエンジン304は、ユーザの表情についての情報を(たとえば、XRデバイスの1つまたは複数の内向きカメラによってキャプチャされた画像データに基づいて)決定することができる。ユーザポーズ312に基づいて、アバターエンジン304は、アバター318を生成する(たとえば、操る)ことができる。たとえば、アバターエンジン304は、ユーザポーズ312(およびユーザの1つまたは複数の画像)を、ユーザポーズを反映するアバターを生成するようにトレーニングされた機械学習モデルに提供することができる。1つの説明のための例において、アバターエンジン304(A)は、ユーザポーズ312に基づいてアバター318(A)(たとえば、アバター318のプレビューバージョン)を生成することができる。
アバターエンジン304がアバター318(たとえば、アバター318(A))を生成すると、セルフ画像キャプチャシステム300(A)は、背景フレームエンジン306が背景フレーム314をキャプチャすることができる背景キャプチャモードを開始することができる。1つの説明のための例において、背景フレームエンジン306は、セルフ画像(またはセルフビデオ)のための実世界環境内の3Dロケーションを選択するようにユーザに指示する命令を(たとえば、XRデバイスのディスプレイ内に)出力することができる。しかしながら、いくつかの例では、背景フレームエンジン306は、(たとえば、ユーザがセルフ画像キャプチャプロセスに精通している場合)命令を出力しない場合がある。一例では、ユーザは、XRデバイスのディスプレイの現在のFOVがセルフ画像フレーム316に対する所望の背景フレームに対応するまで、実世界環境内で移動することができる。背景キャプチャモードにある間に、背景フレームエンジン306は、所望の背景フレームをキャプチャするように背景フレームエンジン306に指示するユーザ入力を検出することができる。背景フレームエンジン306が背景フレーム314をキャプチャすると、構成エンジン308は、アバター318を背景フレーム314上に重ねることによってセルフ画像フレーム316を生成することができる。たとえば、構成エンジン308は、ユーザポーズ312の3Dロケーションに対応するロケーション内の背景フレーム314内にアバター318を表すことができる。1つの説明のための例において、アバターエンジン304(B)は、背景フレーム314がキャプチャされたことに基づいてアバター318(B)(たとえば、アバター318の最終バージョン)を生成および/または取得することができる。この例では、構成エンジン308は、アバター318(B)を背景フレーム314内に表すことによってセルフ画像フレーム316を生成することができる。
場合によっては、アバターエンジン304は、セルフ画像キャプチャシステム300(A)が背景キャプチャモードで動作している間(たとえば、ユーザが背景フレーム314を選択するために実世界環境の周りを移動している間)、XRデバイスのディスプレイ内にアバター318を表すことができる。たとえば、アバターエンジン304は、ユーザポーズ312がキャプチャされたときのユーザの3Dロケーションに対応するロケーション内にアバター318(たとえば、アバター318(A))を表すことができる。XRデバイスのディスプレイのFOVが(たとえば、ユーザの移動に基づいて)変化するにつれて、アバターエンジン304は、移動に対処するためにディスプレイ内に表されたアバター318(たとえば、アバター318(A))のロケーションを調整することができる。したがって、セルフ画像キャプチャシステム300(A)によって実装されたセルフ画像キャプチャプロセスにおいて、アバター318は、「ワールドロック」され得る。場合によっては、ワールドロックされたアバターは、アバター318に対応する実世界ロケーションに適切な背景フレームをユーザが選択することを可能にすることができる。たとえば、アバター318に対応する3DロケーションがもはやXRデバイスのFOV内にないようにXRデバイスが移動する場合、アバターエンジン304は、アバター318をディスプレイから除去することができる。このようにして、ユーザは、アバター318が背景フレーム314に対応するFOV内に適切に位置付けられることを確実にすることができる。
図4Bは、セルフ画像キャプチャシステム300(A)が背景キャプチャモードにおいて動作している間の、XRデバイスのFOVに対応する例示的なフレーム404を示す。図4Cは、背景フレームエンジン306が背景フレーム314をキャプチャしたときに構成エンジン308によって生成されたセルフ画像フレーム316に対応する例示的なフレーム406を示す。これらの例では、フレーム404はアバター318(A)を含み、フレーム406はアバター318(B)を含む。たとえば、アバターエンジン304は、セルフ画像キャプチャシステム300(A)が背景キャプチャモードにある間にアバター318(A)を表すことができ、構成エンジン308は、セルフ画像フレーム316を生成するときにアバター318(A)をアバター318(B)と置き換えることができる。上記のように、アバター318(A)はアバター318の低忠実度バージョンであり得、アバター318(B)はアバター318の高忠実度バージョンであり得る。たとえば、アバターエンジン304は、アバターエンジン304(A)および304(B)によって実装された異なる機械学習モデルを使用してアバター318(A)および318(B)を生成することができる。一例では、アバターエンジン304(A)は、アバター318(B)を生成するためにアバターエンジン304(B)によって使用される高忠実度機械学習モデルよりも少ない量の処理電力および/または時間を伴うかつ/または必要とする低忠実度機械学習モデルを使用してアバター318(A)を生成することができる。アバター318(A)を生成するために低忠実度機械学習モデルを使用することは、XRデバイスのFOVが背景キャプチャモードの間に変化するときに、XRデバイスのディスプレイ内のアバター318(A)のロケーションを、アバターエンジン304(A)が実時間(ほぼ実時間)内に更新することを可能にすることができる。さらに、アバター318(B)を生成するために高忠実度機械学習モデルを使用することは、最終のセルフ画像に対してより高品質の(たとえば、より現実的な)アバターを作成することができる。たとえば、図4Bのアバター318(A)は漫画のようである一方で、図4Cのアバター318(B)は写実的である。一例では、アバターエンジン304(A)は、低忠実度機械学習モデルをXRデバイス上に(たとえば、ローカルに)実装することができる一方で、アバターエンジン304(B)は、高忠実度機械学習モデルを実装するように、アバターを生成するように構成されるリモートサーバに指示することができる。アバターエンジン304は、(単一の機械学習モデルを使用する単一のアバターを含む)任意のタイプまたは任意の数のアバターを生成することができる。
図3Bを参照すると、セルフ画像キャプチャシステム300(B)は、アバター318を生成する動作の前に、背景フレーム314をキャプチャする動作を実行することができる。図4D、図4Eおよび図4Fは、そのようなセルフ画像キャプチャプロセスの一例を示す。この例では、セルフ画像開始エンジン302は、XRデバイスのセルフ画像キャプチャモードの開始に対応するユーザ入力310を検出することができる。ユーザ入力310に応答して、セルフ画像キャプチャシステム300(B)は、背景フレームエンジン306が背景フレーム314をキャプチャすることができる背景キャプチャモードを開始することができる。この背景キャプチャモードでは、背景フレームエンジン306は、オプションで、セルフ画像(またはセルフビデオ)のための実世界環境内の3Dロケーションを選択するようにユーザに指示する命令を出力することができる。一例では、ユーザは、XRデバイスのディスプレイの現在のFOVがセルフ画像フレーム316に対する所望の背景フレームに対応するまで、実世界環境内で移動することができる。背景キャプチャモードにある間に、背景フレームエンジン306は、所望の背景フレームをキャプチャするように背景フレームエンジン306に指示するユーザ入力を検出することができる。図4Dは、キャプチャされた背景フレームに対応する例示的なフレーム408を示す。セルフ画像キャプチャシステム300(B)の背景キャプチャモードは、セルフ画像キャプチャシステム300(A)の背景キャプチャモードに類似する場合があるが、この背景キャプチャモードは、ユーザがセルフ画像に対するロケーションを選択する間、アバター318(たとえば、アバター318(A))はXRデバイスのディスプレイ内に表示されない(たとえば、そこで操られない)という点で異なる場合がある。
背景フレームエンジン306が背景フレーム314をキャプチャすると、セルフ画像キャプチャシステム300(B)は、アバターエンジン304がユーザポーズ312をキャプチャすることができるポーズキャプチャモードを開始することができる。場合によっては、アバターエンジン304は、オプションで、セルフ画像に対する所望のポーズを取るようにユーザに指示する命令を出力することができる。いくつかの例では、所望のポーズは、(たとえば、背景フレーム314内の対応するロケーション内にアバター318を表すことを容易にするために)実世界環境内の所望の3Dロケーションを含むことができる。ポーズキャプチャモードにある間に、アバターエンジン304は、ユーザポーズ312をキャプチャするようにアバターエンジン304に指示するユーザ入力を検出することができる。ユーザポーズ312に基づいて、アバターエンジン304は、アバター318を生成する(たとえば、操る)ことができる。たとえば、アバターエンジン304は、ユーザポーズ312(およびユーザの1つまたは複数の画像)を、ユーザポーズを反映するアバターを生成するようにトレーニングされた機械学習モデルに提供することができる。1つの説明のための例において、アバターエンジン304(B)は、ユーザポーズ312に基づいてアバター318(B)を生成することができる。アバターエンジン304がアバター318(たとえば、アバター318(B))を生成すると、構成エンジン308は、アバター318を背景フレーム314上に重ねることによってセルフ画像フレーム316を生成することができる。たとえば、構成エンジン308は、ユーザポーズ312の3Dロケーションに対応するロケーション内の背景フレーム314内にアバター318を表すことができる。
場合によっては、アバターエンジン304(A)は、セルフ画像キャプチャシステム300(B)がポーズキャプチャモードにある間(たとえば、ユーザポーズ312がキャプチャされる前にユーザが実世界環境の周りを移動している間)に、XRデバイスのディスプレイ内にアバター318(A)を表すことができる。たとえば、アバターエンジン304は、ユーザのポーズの変化に基づいてアバター318(A)を(たとえば、実時間またはほぼ実時間内に)動的に更新することができる。ユーザのポーズの変化は、実世界環境内のユーザの3Dロケーションの変化および/またはユーザの身体的外観(たとえば、ユーザの表情、手のジェスチャー、四肢位置など)の変化を含むことができる。アバターエンジン304(A)は、背景フレーム314を表示するプレビューウィンドウ内にアバター318(A)を表示することができる。たとえば、アバターエンジン304(A)は、XRデバイスのディスプレイ内にプレビューウィンドウを表示して、ユーザが実世界環境の周りを移動するにつれてアバター318(A)を更新することができる。場合によっては、このバージョンのアバター318(A)は、(たとえば、セルフ画像キャプチャシステム300(A)によって生成されるアバター318(A)の「ワールドロック」バージョンとは対照的に)「ヘッドロック」され得る。一例では、ヘッドロックされたアバターは、前に選択された背景フレーム314に適切なユーザポーズをユーザが選択することを可能にすることによって、正確なセルフ画像構成を容易にすることができる。
図4Eは、プレビューウィンドウ414を含む例示的なフレーム410を示す。プレビューウィンドウ414は、(静的)背景フレーム314と動的に更新されるアバター318(A)とを表示することができる。たとえば、ユーザのポーズが(たとえば、実世界環境内でのユーザの移動によって)変化するにつれて、アバターエンジン304(A)は、その変化に対処するためにプレビューウィンドウ414内のアバター318(A)を更新することができる。アバター318(A)を表示しながら、アバターエンジン304(B)は、(たとえば、ユーザポーズ312に対応する)現在のユーザポーズをキャプチャするようにアバターエンジン304(B)に指示するユーザ入力を検出することができる。そのようなユーザ入力を受信することに基づいて、アバターエンジン304(B)は、ユーザポーズ312に基づいてアバター318(B)を生成する(たとえば、操る)ことができる。図4Fは、アバターエンジン304(B)がユーザポーズ312に基づいてアバター318(B)を生成したときに構成エンジン308によって生成されたセルフ画像フレーム316に対応する例示的なフレーム412を示す。上記のように、アバター318(A)はアバター318の低忠実度バージョンに対応することができ、アバター318(B)はアバター318の高忠実度バージョンに対応することができる。たとえば、アバターエンジン304(A)は、ローカルなおよび/または低忠実度の機械学習アルゴリズムを使用してアバター318(A)を生成することができ、アバターエンジン304(B)は、リモートのおよび/または高忠実度の機械学習アルゴリズムを使用してアバター318(B)を生成および/または取得することができる。セルフ画像キャプチャシステム300(B)は、任意の適切な機械学習アルゴリズムを使用して任意のタイプのまたは任意の数のアバターを生成することができる。
上記で説明したように、セルフ画像キャプチャシステム300(A)および300(B)は、XR環境内でキャプチャするセルフ画像に対して様々な一連のプロセスを実装することができる。これらのセルフ画像キャプチャシステムは、セルフ画像キャプチャのために設計されたメカニズム(モバイルフォンの前向きカメラなど)のないHMDおよび他のデバイスが自然で現実的なセルフ画像を生成することを可能にすることができる。さらに、ユーザのポーズおよび背景フレームを異なる時点でキャプチャすることによって、本開示のセルフ画像キャプチャシステムは、ユーザがセルフ画像の構成を正確にカスタマイズすることおよび/または最適化することを可能にすることができる。
上述のように、場合によっては、本開示のセルフ画像キャプチャ技法およびシステムは、セルフビデオを生成するために使用され得る。セルフ画像キャプチャシステム300(A)とセルフ画像キャプチャシステム300(B)の両方が、セルフビデオを生成するために使用され得る。図5Aは、セルフ画像キャプチャシステム300(A)によって実行され得るセルフビデオキャプチャに対する例示的なプロセス500(A)のフローチャートである。動作502において、プロセス500(A)は、セルフビデオ開始を含むことができる。たとえば、セルフ画像キャプチャシステム300(A)は、セルフビデオモードの開始に対応するユーザ入力を検出することができる。動作504において、プロセス500(A)は、ユーザのポーズを記録することを開始することを含むことができる。たとえば、セルフ画像キャプチャシステム300(A)は、XRデバイスの内向きカメラおよび/または外向きカメラを使用して1つまたは複数のフレームをキャプチャすることができる。セルフ画像キャプチャシステム300(A)は、キャプチャされたフレームの全部または一部によって示されるユーザのポーズに対応する複数のアバター(たとえば、一連のアバター)を生成する(たとえば、操る)ことができる。動作506において、セルフ画像キャプチャシステム300(A)は、ユーザのポーズを記録することを停止することができる。セルフ画像キャプチャシステム300(A)は、動作504と動作506との間のユーザのポーズと関連付けられた任意の数のフレームを記録することができる。一例では、セルフ画像キャプチャシステム300(A)は、所定の数のフレーム(たとえば、10フレーム、50フレームなど)を記録すること、および/または所定の量の時間(たとえば、2秒、5秒など)の間にフレームを記録することができる。別の例では、セルフ画像キャプチャシステム300(A)は、記録を停止することをセルフ画像キャプチャシステム300(A)に指示するユーザ入力を検出するまで、フレームを記録することができる。
動作508において、プロセス500(A)は、1つまたは複数の背景フレームを(たとえば、XRデバイスの前向きカメラを使用して)記録することを開始することを含むことができる。動作510において、セルフ画像キャプチャシステム300(A)は、背景フレームを記録することを停止することができる。セルフ画像キャプチャシステム300(A)は、動作508と動作510との間の任意の数の背景フレームを記録することができる。一例では、セルフ画像キャプチャシステム300(A)は、ユーザのポーズと関連付けられた記録されたフレームの数(たとえば、動作504において記録されたフレームの数)に対応する数のフレームを記録することができる。たとえば、背景フレームを記録するための記録プロセスは、ユーザのポーズと関連付けられたフレームを記録することに対応する時間の量の後に、自動的に終了する(たとえば、タイムアウトする)ことができる。別の例では、セルフ画像キャプチャシステム300(A)は、単一の背景フレームを記録することができる。この例では、単一の背景フレームは、セルフビデオに対する静的背景に対応することができる。動作512において、プロセス500(A)は、セルフビデオ構成を含むことができる。たとえば、セルフ画像キャプチャシステム300(A)は、複数のアバターを1つまたは複数の背景フレーム上に重ねることができる。
図5Bは、セルフ画像キャプチャシステム300(B)によって実行され得るセルフビデオキャプチャに対する例示的なプロセス500(B)のフローチャートである。動作514において、プロセス500(B)は、セルフビデオ開始を含むことができる。たとえば、セルフ画像キャプチャシステム300(B)は、セルフビデオモードの開始に対応するユーザ入力を検出することができる。動作516において、プロセス500(B)は、1つまたは複数の背景フレームを(たとえば、XRデバイスの前向きカメラを使用して)記録することを開始することを含むことができる。動作518において、セルフ画像キャプチャシステム300(B)は、背景フレームを記録することを停止することができる。セルフ画像キャプチャシステム300(B)は、動作516と動作518との間の任意の数の背景フレームを記録することができる。一例では、セルフ画像キャプチャシステム300(B)は、所定の数の背景フレームを記録すること、および/または所定の量の時間の間に背景フレームを記録することができる。別の例では、セルフ画像キャプチャシステム300(B)は、記録を停止することをセルフ画像キャプチャシステム300(A)に指示するユーザ入力を検出するまで、背景フレームを記録することができる。
動作520において、プロセス500(B)は、ユーザのポーズを記録することを開始することを含むことができる。たとえば、セルフ画像キャプチャシステム300(B)は、XRデバイスの内向きカメラおよび/または外向きカメラを使用して1つまたは複数のフレームをキャプチャすることができる。セルフ画像キャプチャシステム300(B)は、キャプチャされたフレームの全部または一部によって示されるユーザのポーズに対応する複数のアバターを生成する(たとえば、操る)ことができる。動作522において、セルフ画像キャプチャシステム300(B)は、ユーザのポーズと関連付けられたフレームを記録することを停止することができる。セルフ画像キャプチャシステム300(B)は、ユーザのポーズと関連付けられた任意の数のフレームを記録することができる。一例では、セルフ画像キャプチャシステム300(B)は、記録された背景フレームの数に対応する数のフレームを記録することができる。たとえば、ユーザのポーズを記録するための記録プロセスは、背景フレームを記録することに対応する時間の量の後に、自動的に終了する(たとえば、タイムアウトする)ことができる。動作524において、プロセス500(B)は、セルフビデオ構成を含むことができる。たとえば、セルフ画像キャプチャシステム300(B)は、複数のアバターを1つまたは複数の背景フレーム上に重ねることができる。
場合によっては、XR環境におけるセルフ画像キャプチャのための本開示の技法およびシステムは、複数の人を含むセルフ画像またはセルフビデオを生成するために使用され得る。セルフ画像キャプチャシステム300(A)とセルフ画像キャプチャシステム300(B)の両方が、複数の人を含むセルフ画像またはセルフビデオを生成するために使用され得る。図6Aは、セルフ画像キャプチャシステム300(A)によって実行され得るマルチユーザのセルフ画像キャプチャに対する例示的なプロセス600(A)のフローチャートである。動作602において、プロセス600(A)は、マルチユーザのセルフ画像開始を含むことができる。たとえば、セルフ画像キャプチャシステム300(A)は、マルチユーザのセルフ画像キャプチャモードの開始に対応するユーザ入力を検出することができる。動作604において、プロセス600(A)は、キャプチャされたユーザポーズに基づいてアバターを生成することを含むことができる。たとえば、セルフ画像キャプチャシステム300(A)は、XRデバイスを装着しているユーザの現在のポーズに対応するアバターを操ることができる。場合によっては、セルフ画像キャプチャシステム300(A)は、ユーザが、マルチユーザのセルフ画像内に含まれるべき1人または複数の他の人とポーズを取る間、ユーザのポーズをキャプチャすることができる。
動作606において、プロセス600(A)は、追加の人に対応するアバターデータを取得することを含むことができる。たとえば、(ユーザに装着されるXRデバイス上に実装された)セルフ画像キャプチャシステム300(A)は、マルチユーザのセルフ画像内に含まれるべき任意の他の人々のアバターと関連付けられたデータを受信することの要求を、1つまたは複数の近くのXRデバイスに送信することができる。一例では、セルフ画像キャプチャシステム300(A)は、セルフ画像キャプチャシステム300(A)のブロードキャスト範囲内の任意のXRデバイスに要求をブロードキャストすることができる。別の例では、セルフ画像キャプチャシステム300(A)は、マルチユーザのセルフ画像内に含まれるべき1人または複数の人々と関連付けられることが知られているXRデバイスに特定の要求を送信することができる。たとえば、セルフ画像キャプチャシステム300(A)は、ユーザ入力に基づいて特定のXRデバイスに要求を送信すること、および/またはセルフ画像キャプチャシステム300(A)が前に通信および/または接続したXRデバイスに要求を送信することができる。
一例では、セルフ画像キャプチャシステム300(A)によって要求されたアバターデータは、マルチユーザのセルフ画像内に含まれるべき1人または複数の他の人々に対応するアバターを含むことができる。たとえば、セルフ画像キャプチャシステム300(A)は、1人または複数の他の人々のキャプチャされたポーズに対応するアバターを生成するように、1人または複数の人々と関連付けられたXRデバイス上に実装されたセルフ画像キャプチャシステムに促すことができる。別の例では、アバターデータは、1人または複数の他の人々に対応するアバターを、セルフ画像キャプチャシステム300(A)が生成することを可能にするデータを含むことができる。たとえば、アバターデータは、1人または複数の他の人々のキャプチャされたポーズについての情報を含むことができる。アバターデータは、1人または複数の他の人々のアバターを生成するようにトレーニングされた機械学習モデル(たとえば、アバター調整ネットワーク)も含むことができる。場合によっては、モデルは、1人または複数の他の人々の1つまたは複数の画像(たとえば、全身画像)を使用してトレーニングされ得る。とりわけ、場合によっては、マルチユーザのセルフ画像内に含まれるべき人(または複数の人々)は、アバターを生成するように構成されるXRデバイスを装着していなくても、かつ/またはそれと関連付けられていなくてもよい。これらの場合には、セルフ画像キャプチャシステム300(A)は、人に対応するアバターと関連付けられたデータを取得しなくてもよい。
動作608において、プロセス600(A)は、背景フレームをキャプチャすることを含むことができる。たとえば、セルフ画像キャプチャシステム300(A)は、XRデバイスの現在のFOVに対応する背景フレームをキャプチャするように、セルフ画像キャプチャシステム300(A)に指示するユーザ入力を検出することができる。一例では、背景フレームは、マルチユーザのセルフ画像内に含まれるべき1人または複数の他の人々に対応する画像データを含むことができる。たとえば、ユーザは、1人または複数の他の人々が静止したままである間に、実世界環境内で移動することができる。XRデバイスの現在のFOVが、(たとえば、1人または複数の他の人々を含む現在のFOVに基づいて)背景フレームに適切であるとユーザが決定すると、ユーザは、背景フレームをキャプチャするようにセルフ画像キャプチャシステム300(A)に指示する入力を提供することができる。
動作610において、プロセス600(A)は、マルチユーザのセルフ画像構成を含むことができる。セルフ画像キャプチャシステム300(A)が1人または複数の人々のアバター(たとえば、前に生成されたアバター)を受信する例では、セルフ画像キャプチャシステム300(A)は、アバター(およびユーザのアバター)を背景フレーム上に重ねることができる。たとえば、セルフ画像キャプチャシステム300(A)は、1人または複数の他の人々に対応する画像データを適切なアバターと置き換えることができる。セルフ画像キャプチャシステム300(A)が1人または複数の他の人々のアバターを生成するようにトレーニングされた機械学習モデルを受信する例では、セルフ画像キャプチャシステム300(A)は、背景フレーム内の1人または複数の他の人々に対応するアバターを表すためにモデルを使用することができる。
たとえば、図6Cは、マルチユーザのセルフ画像キャプチャシステム622のブロック図である。マルチユーザのセルフ画像キャプチャシステム622は、ユーザポーズ630(1)~(N)を受信することができ、それは、1人または複数の他の人々のキャプチャされたユーザポーズに対応する。マルチユーザのセルフ画像キャプチャシステム622は、アバターネットワーク624(1)~624(N)も受信することができ、それは、1人または複数の他の人々のアバターを生成するようにトレーニングされた機械学習モデル(たとえば、機械学習モデルのモデルファイル)に対応する。ユーザポーズ630(1)~(N)に基づいて、マルチユーザのセルフ画像キャプチャシステム622は、1人または複数の他の人々に対応するアバターを生成するためにアバターネットワーク624(1)~624(N)を実装することができる。生成されたアバターは、セルフ画像発生器626に入力され得、それは、背景フレーム内に1つまたは複数のアバターを表すようにトレーニングされた機械学習モデルに対応する。セルフ画像発生器626は、ユーザおよび1人または複数の他の人々に対応するアバターを含むマルチユーザのセルフ画像628を生成することができる。場合によっては、セルフ画像発生器626は、アバターがマルチユーザのセルフ画像628内でグローバルに一致および/または一貫していることを確実にすることができる。たとえば、セルフ画像発生器626は、照明、色、および/またはアバターの他の視覚特性を標準化することができる。場合によっては、セルフ画像発生器626は、同じく、アバターの部分を不明瞭にする場合がある、背景フレーム内に見える任意の障害(occlusion)を除去することができる。さらに、セルフ画像発生器626は、1人または複数の人々によって装着されたXRデバイスがマルチユーザのセルフ画像628内に描かれないことを確実にすることができる。マルチユーザのセルフ画像628内に含まれるべき人(または複数の人々)がXRデバイスおよび/またはアバターと関連付けられない例では、マルチユーザのセルフ画像キャプチャシステム622は、背景フレーム内の人に対応する画像データを変化しないままにすることができる。
図6Bは、セルフ画像キャプチャシステム300(B)によって実行され得るマルチユーザのセルフ画像キャプチャに対する例示的なプロセス600(B)のフローチャートである。動作612において、プロセス600(B)は、マルチユーザのセルフ画像開始を含むことができる。たとえば、セルフ画像キャプチャシステム300(B)は、マルチユーザのセルフ画像キャプチャモードの開始に対応するユーザ入力を検出することができる。動作614において、プロセス600(B)は、背景フレームをキャプチャすることを含むことができる。たとえば、セルフ画像キャプチャシステム300(B)は、XRデバイスの現在のFOVに対応する背景フレームをキャプチャするように、セルフ画像キャプチャシステム300(B)に指示するユーザ入力を検出することができる。場合によっては、この背景フレームは、マルチユーザのセルフ画像内に含まれるべき1人または複数の人々に対応する画像データを含まない。たとえば、セルフ画像キャプチャシステム300(B)は、ユーザおよび1人または複数の他の人々が、マルチユーザのセルフ画像のために望ましいとして自身のポーズを取る前に、背景フレームをキャプチャすることができる。動作616において、プロセス600(B)は、キャプチャされたユーザポーズに基づいてアバターを生成することを含むことができる。たとえば、セルフ画像キャプチャシステム300(B)は、(たとえば、ユーザおよび1人または複数の他の人々が自身のポーズを取ったときの)ユーザのポーズをキャプチャするように、セルフ画像キャプチャシステム300(B)に指示するユーザ入力を検出することができる。セルフ画像キャプチャシステム300(B)は、XRデバイスを装着しているユーザの現在のポーズに対応するアバターを操ることができる。
動作618において、プロセス600(B)は、1人または複数の他の人々に対応するアバターデータを取得することを含むことができる。たとえば、(ユーザのXRデバイス上に実装された)セルフ画像キャプチャシステム300(B)は、1人または複数の他の人々のアバターを受信することの要求を、1つまたは複数の近くのXRデバイスに送信することができる。別の例では、セルフ画像キャプチャシステム300(B)は、1人または複数の他の人々のアバターを、セルフ画像キャプチャシステム300(B)が生成することを可能にするデータを受信することの要求を送信することができる。たとえば、セルフ画像キャプチャシステム300(B)は、1人または複数の他の人々のアバターを生成するようにトレーニングされた機械学習モデル(図6Cに示すアバターネットワーク624(1)~(N)など)を受信することの要求を送信することができる。場合によっては、セルフ画像キャプチャシステム300(B)は、プロセス600(A)の動作606においてセルフ画像キャプチャシステム300(A)によって実行され得るのと同じ方式のうちのいずれかで、近くのXRデバイスに要求を送信することができる。動作620において、プロセス600(B)は、マルチユーザのセルフ画像構成を実行することができる。セルフ画像キャプチャシステム300(B)が1人または複数の人々のアバター(たとえば、前に生成されたアバター)を受信する例では、セルフ画像キャプチャシステム300(B)は、アバター(およびユーザのアバター)を背景フレーム上に重ねることができる。セルフ画像キャプチャシステム300(B)が1人または複数の他の人々のアバターを生成するようにトレーニングされた機械学習モデルを受信する例では、セルフ画像キャプチャシステム300(B)は、背景フレーム内の1人または複数の他の人々に対応するアバターを表すためにモデルを使用することができる。たとえば、セルフ画像キャプチャシステム300(B)は、モデルによって生成されたアバターを、図6Cに示すセルフ画像発生器626に入力することができる。
図7は、エクステンデッドリアリティ環境内のセルフ画像キャプチャに対する例示的プロセス700を示す流れ図である。明快のために、図3Aおよび図3Bに示すセルフ画像キャプチャシステム300(A)および300(B)を参照して、プロセス700について説明する。本明細書において概説するステップまたは動作は例であり、いくつかのステップまたは動作を除き、追加し、または修正する組合せを含む、それらのどの組合せで実装することもできる。
動作702において、プロセス700は、エクステンデッドリアリティシステムのユーザのポーズをキャプチャすることを含み、ユーザのポーズは、エクステンデッドリアリティシステムと関連付けられた実世界環境内のユーザのロケーションを含む。いくつかの例では、アバターエンジン304は、エクステンデッドリアリティシステムの内向きカメラシステムによってキャプチャされた画像データに少なくとも部分的に基づいてユーザのポーズをキャプチャすることができる。さらに、アバターエンジン304は、ユーザの表情を決定することおよび/またはユーザのジェスチャーを決定することに少なくとも部分的に基づいてユーザのポーズをキャプチャすることができる。一例では、アバターエンジン304は、実世界環境の3次元マップを生成することに少なくとも部分的に基づいて、実世界環境内のユーザのロケーションを決定することができる。
動作704において、プロセス700は、ユーザのデジタル表現を生成することを含み、ユーザのデジタル表現はユーザのポーズを反映する。いくつかの例では、プロセス700は、ユーザの第1のデジタル表現とユーザの第2のデジタル表現とを生成することができる。場合によっては、ユーザの第2のデジタル表現は、ユーザの第1のデジタル表現よりも高忠実度のユーザのデジタル表現であり得る。たとえば、プロセス700は、第1の忠実度を有する第1のデジタル表現を生成または取得することと、第2の忠実度を有する第2のデジタル表現を生成または取得することとを含むことができる(第2の忠実度は第1の忠実度よりも高い)。いくつかの態様では、ユーザの第1のデジタル表現は、所望の背景フレームおよび/またはユーザのポーズをキャプチャすることを容易にするためにユーザに対して表示され得るユーザのプレビューデジタル表現に対応することができる。いくつかの態様では、ユーザの第2のデジタル表現は、ユーザの最終のデジタル表現に対応することができる。
いくつかの例では、アバターエンジン304は、機械学習アルゴリズムを使用してユーザのデジタル表現を生成することができる。たとえば、場合によっては、アバターエンジン304は、第1の機械学習アルゴリズムに基づいてユーザの第1のデジタル表現を生成することができる。アバターエンジン304は、第2の機械学習アルゴリズムに基づいてユーザの第2のデジタル表現を取得することができる。場合によっては、アバターエンジン304は、第1の機械学習アルゴリズムをエクステンデッドリアリティシステム上に実装することに基づいてユーザの第1のデジタル表現を生成することができる。場合によっては、アバターエンジン304は、ユーザのデジタル表現を生成するように構成されるサーバに、第2の機械学習アルゴリズムを使用してユーザの第2のデジタル表現を生成させることによって、ユーザの第2のデジタル表現を取得することができる。
動作706において、プロセス700は、実世界環境の1つまたは複数のフレームをキャプチャすることを含む。いくつかの例では、背景フレームエンジン306は、エクステンデッドリアリティシステムの外向きカメラシステムを使用して実世界環境の1つまたは複数のフレームをキャプチャすることができる。一例では、動作706は、動作702および/または動作704の後に実行され得る。たとえば、アバターエンジン304は、背景フレームエンジン306が実世界環境の1つまたは複数のフレームをキャプチャする前に、ユーザのデジタル表現を生成することができる。この例では、アバターエンジン304は、実世界環境内のユーザのロケーションに対応する表示ロケーション内のユーザのデジタル表現を、そこを通して実世界環境が見えるエクステンデッドリアリティシステムのディスプレイ内に表示することができる。いくつかの例では、アバターエンジン304は、(動作702においてキャプチャされた)ユーザのキャプチャされたポーズを使用してユーザのデジタル表現を表示することができる。ユーザのデジタル表現がエクステンデッドリアリティシステムのディスプレイ内に表示されながら、背景フレームエンジン306は、実世界環境の1つまたは複数のフレームをキャプチャするための命令に対応するユーザ入力を検出することができる。次いで、背景フレームエンジン306は、ユーザ入力に基づいて実世界環境の1つまたは複数のフレームをキャプチャすることができる。一例では、アバターエンジン304は、背景フレームエンジン306が実世界環境の1つまたは複数のフレームをキャプチャする前に、第1の(たとえば、プレビューの)ユーザのデジタル表現をエクステンデッドリアリティシステムのディスプレイ内に表示することができる。アバターエンジン304は、実世界環境の1つまたは複数のフレームがキャプチャされたことに基づいて、および/または1つまたは複数のフレーム内のユーザのポーズに基づいて、第2の(たとえば、最終の)ユーザのデジタル表現を生成することができる。
別の例では、動作706は、動作702および/または動作704の前に実行され得る。たとえば、背景フレームエンジン306は、アバターエンジン304がユーザのポーズをキャプチャする前に、実世界環境の1つまたは複数のフレームをキャプチャすることができる。この例では、アバターエンジン304は、実世界環境内のユーザのロケーションに対応する表示ロケーション内のユーザのデジタル表現を、実世界環境の1つまたは複数のフレームが表示されるエクステンデッドリアリティシステムのディスプレイ内に表示することができる。いくつかの例では、アバターエンジン304は、現在のユーザのポーズを使用してユーザのデジタル表現を表示することができる。アバターエンジン304は、実世界環境内のユーザのロケーションにおける変化を検出することに基づいて、ユーザのデジタル表現の表示ロケーションを更新することができる。ユーザのデジタル表現がエクステンデッドリアリティシステムのディスプレイ内に表示されながら、アバターエンジン304は、ユーザのポーズをキャプチャするための命令に対応するユーザ入力を検出することができる。次いで、アバターエンジン304は、ユーザ入力に基づいてユーザのポーズをキャプチャすることができる。一例では、アバターエンジン304は、ユーザのポーズをキャプチャする前に、ユーザの第1の(たとえば、プレビューの)デジタル表現をエクステンデッドリアリティシステムのディスプレイ内に表示することができる。アバターエンジン304は、実世界環境の1つまたは複数のフレームがキャプチャされたことに基づいて、および/またはユーザのポーズがキャプチャされたことに基づいて、ユーザの第2の(たとえば、最終の)デジタル表現を生成することができる。
動作708において、プロセス700は、ユーザのデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねることを含む。いくつかの例では、構成エンジン308は、ユーザのデジタル表現を、実世界環境内のユーザのロケーションに対応するフレームロケーション内の実世界環境の1つまたは複数のフレーム上に重ねることができる。一例では、構成エンジン308は、ユーザのデジタル表現を、機械学習アルゴリズムを使用して実世界環境の1つまたは複数のフレーム上に重ねることができる。機械学習アルゴリズムは、ユーザのデジタル表現を生成するためにアバターエンジン304によって使用される機械学習アルゴリズムと異なることがある。
いくつかの例では、プロセス700は、実世界環境内の人のポーズをキャプチャすることと、人のデジタル表現を生成することとを含むことができる。人のデジタル表現は、人のポーズを反映することができる。プロセス700は、同じく、ユーザのデジタル表現および人のデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねることを含むことができる。一例では、アバターエンジン304は、人のエクステンデッドリアリティシステムから受信された人のデジタル表現と関連付けられた情報に少なくとも部分的に基づいて、人のデジタル表現を生成することができる。人のデジタル表現と関連付けられた情報は、人のデジタル表現を生成するようにトレーニングされた機械学習モデルを含むことができる。
さらなる例では、プロセス700は、複数のフレームと関連付けられたユーザの複数のポーズをキャプチャすることと、複数のフレームに対応するユーザの複数のデジタル表現を生成することとを含むことができる。プロセス700は、同じく、ユーザの複数のデジタル表現を、実世界環境の1つまたは複数のフレーム上に重ねることを含むことができ、実世界環境の1つまたは複数のフレームは、実世界環境の複数のフレームを含む。
いくつかの例では、プロセス500(A)、500(B)、600(A)、600(B)、700、および/または本明細書で説明する他のプロセスは、1つまたは複数のコンピューティングデバイスまたは装置によって実行されてもよい。いくつかの例では、プロセス500(A)、500(B)、600(A)、600(B)、700、および/または本明細書で説明する他のプロセスは、図2に示すエクステンデッドリアリティシステム200、図3Aに示すセルフ画像キャプチャシステム300(A)、図3Bに示すセルフ画像キャプチャシステム300(B)、図6Cに示すマルチユーザのセルフ画像キャプチャシステム622、および/または図10に示すコンピューティングデバイスアーキテクチャ1000を有する1つまたは複数のコンピューティングデバイスによって実行され得る。場合によっては、そのようなコンピューティングデバイスまたは装置は、プロセッサ、マイクロプロセッサ、マイクロコンピュータ、またはプロセス500(A)、500(B)、600(A)、600(B)、700のステップを遂行するように構成されるデバイスの他のコンポーネントを含んでもよい。いくつかの例では、そのようなコンピューティングデバイスまたは装置は、画像データをキャプチャするように構成される1つまたは複数のセンサを含んでもよい。たとえば、コンピューティングデバイスは、スマートフォン、カメラ、ヘッドマウントディスプレイ、モバイルデバイス、または他の適切なデバイスを含むことができる。いくつかの例では、そのようなコンピューティングデバイスまたは装置は、1つまたは複数の画像またはビデオをキャプチャするように構成されるカメラを含んでもよい。場合によっては、そのようなコンピューティングデバイスは、画像を表示するためのディスプレイを含んでもよい。いくつかの例では、1つまたは複数のセンサおよび/またはカメラは、コンピューティングデバイスから分離され、その場合、コンピューティングデバイスは感知されたデータを受信する。そのようなコンピューティングデバイスは、データを通信するように構成されるネットワークインターフェースをさらに含んでもよい。
コンピューティングデバイスのコンポーネントは、回路構成の中に実装され得る。たとえば、コンポーネントは、1つもしくは複数のプログラマブル電子回路(たとえば、マイクロプロセッサ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、中央処理ユニット(CPU)、および/または他の好適な電子回路)を含み得る、電子回路もしくは他の電子ハードウェアを含むことができ、かつ/またはそれらを使用して実装されることが可能であり、かつ/あるいは本明細書で説明する様々な動作を実行するために、コンピュータソフトウェア、ファームウェア、もしくはそれらの任意の組合せを含むことができ、かつ/またはそれらを使用して実装されることが可能である。コンピューティングデバイスは、ディスプレイ(出力デバイスの一例としてまたは出力デバイスに加えて)、データを通信および/または受信するように構成されるネットワークインターフェース、任意のそれらの組合せ、および/または他のコンポーネントをさらに含んでもよい。ネットワークインターフェースは、インターネットプロトコル(IP)ベースのデータまたは他のタイプのデータを通信および/または受信するように構成され得る。
プロセス500(A)、500(B)、600(A)、600(B)、700は、論理流れ図として示され、それらの動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実施され得る動作のシーケンスを表す。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されたとき、記載された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体上に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行するかまたは特定のデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図せず、説明する任意の数の動作は、プロセスを実装するために任意の順序で、かつ/または並列に組み合わせられ得る。
加えて、プロセス500(A)、500(B)、600(A)、600(B)、700、および/または本明細書で説明する他のプロセスは、実行可能命令を用いて構成される1つまたは複数のコンピュータシステムの制御下で実行されてもよく、1つもしくは複数のプロセッサ上で、ハードウェアによって、またはそれらの組合せで、まとめて実行するコード(たとえば、実行可能命令、1つもしくは複数のコンピュータプログラム、または1つもしくは複数のアプリケーション)として実装されてもよい。上で述べられたように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で、コンピュータ可読記憶媒体または機械可読記憶媒体に記憶されてもよい。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であってもよい。
図8は、光推定器によって使用され得る深層学習ニューラルネットワーク800の説明のための例である。入力層820は入力データを含む。1つの説明のための例において、入力層820は、入力フレームのピクセルを表すデータを含むことができる。ニューラルネットワーク800は、複数の隠れ層822a、822b~822nを含む。隠れ層822a、822b~822nは「n」個の隠れ層を含み、ただし、「n」は1以上の整数である。隠れ層の個数は、所与の適用例にとって必要とされるのと同数の層を含むようにされ得る。ニューラルネットワーク800は、隠れ層822a、822b~822nによって実行される処理から得られた出力を提供する出力層824をさらに含む。1つの説明のための例において、出力層824は、フレームの光と関連付けられた光推定を提供することができる。光推定は、照明パラメータおよび/または潜在的な特徴ベクトルを含むことができる。
ニューラルネットワーク800は、相互接続されたノードの多層ニューラルネットワークである。各ノードは情報を表すことができる。ノードに関連する情報は異なる層の間で共有され、情報が処理されるにつれて各層が情報を保持する。場合によっては、ニューラルネットワーク800はフィードフォワードネットワークを含むことができ、その場合、ネットワークの出力がそれ自体にフィードバックされるフィードバック接続はない。場合によっては、ニューラルネットワーク800は再帰ニューラルネットワークを含むことができ、再帰ニューラルネットワークは、入力において読み取りながらノードにわたって情報が搬送されることを可能にするループを有することができる。
様々な層間のノード間相互接続部を通じて、情報がノード間で交換され得る。入力層820のノードは、最初の隠れ層822aの中のノードのセットを活性化することができる。たとえば、図示のように、入力層820の入力ノードの各々は、最初の隠れ層822aのノードの各々に接続される。隠れ層822a、822bから822nのノードは、活性化関数をこれらの情報に適用することによって、各入力ノードの情報を変換することができる。次いで、変換から導出される情報は、次の隠れ層822bのノードに渡され、それを活性化することができ、次の隠れ層822bは固有の指定された機能を実行することができる。例示的な機能は、畳み込み、アップサンプリング、データ変換、および/または任意の他の適切な機能を含む。隠れ層822bの出力は次いで、次の隠れ層のノードを活性化することができ、以下同様である。最後の隠れ層822nの出力は、出力が提供される出力層824の1つまたは複数のノードを活性化することができる。いくつかの場合、ニューラルネットワーク800の中のノード(たとえば、ノード826)は、複数の出力線を有するものとして示され、ノードは単一の出力を有し、ノードから出力されるものとして示されるすべての線が同じ出力値を表す。
場合によっては、各ノードまたはノード間の相互接続部は、ニューラルネットワーク800のトレーニングから導出されるパラメータのセットである、重みを有することができる。ニューラルネットワーク800がトレーニングされると、それをトレーニングされたニューラルネットワークと呼ぶことができ、1つまたは複数の物体を分類するために使用することができる。たとえば、ノード間の相互接続は、相互接続されたノードについて学習された情報を表すことができる。相互接続は、(たとえば、トレーニングデータセットに基づいて)調整できる調整可能な数値の重みを有することができ、ニューラルネットワーク800が入力に対して適応的であることと、より多くのデータが処理されるにつれて学習できることとを可能にする。
ニューラルネットワーク800は、出力層824を通じて出力を提供するために、異なる隠れ層822a、822b~822nを使用して、入力層820の中のデータからの特徴を処理するように事前トレーニングされる。ニューラルネットワーク800が画像の中の物体を識別するために使用される例では、ニューラルネットワーク800は、画像とラベルの両方を含むトレーニングデータを使用してトレーニングされ得る。たとえば、トレーニング画像は、ネットワークの中に入力されることが可能であり、各トレーニング画像は、各画像の中の1つまたは複数の物体のクラスを示すラベル(基本的に、物体が何であるのか、および物体がどんな特徴を有するのかをネットワークに示す)を有する。例示的な一例では、トレーニング画像は数字2の画像を含むことができ、その場合、画像のためのラベルは[0 0 1 0 0 0 0 0 0 0]であり得る。
場合によっては、ニューラルネットワーク800は、誤差逆伝搬法と呼ばれるトレーニングプロセスを使用して、ノードの重みを調整することができる。誤差逆伝搬法は、前方パス、損失関数、後方パス、および重み更新を含むことができる。前方パス、損失関数、後方パス、およびパラメータ更新は、1回のトレーニング反復の間に実行される。そのプロセスは、層の重みが正確にチューニングされるようにニューラルネットワーク800が十分良好にトレーニングされるまで、トレーニング画像のセットごとに、ある回数の反復にわたって繰り返され得る。
画像の中の物体を識別する例の場合、前方パスは、トレーニング画像にニューラルネットワーク800を通過させることを含むことができる。ニューラルネットワーク800がトレーニングされる前に、最初に重みがランダム化される。画像は、たとえば、画像のピクセルを表す数字のアレイを含むことができる。アレイの中の各数字は、アレイの中のその位置におけるピクセル強度を表す0から255までの値を含むことができる。一例では、アレイは、28行および28列のピクセルならびに(赤色成分、緑色成分、および青色成分、またはルーマ成分および2つのクロマ成分などの)3つの色成分を有する、数字の28×28×3アレイを含むことができる。
ニューラルネットワーク800のための最初のトレーニング反復に対して、初期化において重みがランダムに選択されることに起因して、出力は、いずれの特定のクラスへの選好も与えない値を含む可能性がある。たとえば、出力が、異なるクラスを物体が含む確率を伴うベクトルである場合、異なるクラスの各々に対する確率値は等しいかまたは少なくとも極めて類似することがある(たとえば、10個の可能なクラスに対して、各クラスが0.1という確率値を有することがある)。初期の重みを用いると、ニューラルネットワーク800は、低レベルの特徴を決定することが不可能であるので、物体の分類が何である可能性があるかの正確な決定を行うことができない。出力における誤差を分析するために、損失関数を使用することができる。あらゆる適切な損失関数の定義を使用することができる。損失関数の一例は、平均二乗誤差(MSE)を含む。MSEは、
として定義され、それは、予測(出力)される解を実際の解から引いて2乗したものの2分の1の総和を計算する。損失は、Etotalの値に等しくなるように設定され得る。
実際の値は予測される出力とは大きく異なるので、最初のトレーニング画像に対して損失(または、誤差)は大きい。トレーニングの目標は、予測される出力がトレーニングラベルと同じになるように、損失の量を最小化することである。ニューラルネットワーク800は、どの入力(重み)がネットワークの損失に最も寄与したのかを決定することによって後方パスを実行することができ、損失が小さくなり最終的に最小化されるように重みを調整することができる。
ネットワークの損失に最も寄与した重みを決定するために、重みに関する損失の微分係数(dL/dWとして示され、ただし、Wは特定の層における重みである)が算出され得る。微分係数が算出された後、フィルタのすべての重みを更新することによって、重み更新が実行され得る。たとえば、重みは、勾配の反対方向で重みが変化するように更新され得る。重み更新は、
として示すことができ、ただし、wは重みを示し、wiは初期重みを示し、ηは学習率を示す。学習率は任意の好適な値に設定することができ、高い学習率はより大きい重み更新を含み、より小さい値はより小さい重み更新を示す。
ニューラルネットワーク800は、任意の好適なディープネットワークを含むことができる。一例は、畳み込みニューラルネットワーク(CNN)を含み、畳み込みニューラルネットワーク(CNN)は、入力層と出力層との間の複数の隠れ層とともに入力層および出力層を含む。CNNの例は、図8に関して以下で説明される。CNNの隠れ層は、一連の畳み込み層、非線形層、プーリング(ダウンサンプリングのための)層、および全結合層を含む。ニューラルネットワーク800は、とりわけ、オートエンコーダ、ディープビリーフネット(DBN)、再帰ニューラルネットワーク(RNN)などの、CNN以外の任意の他のディープネットワークを含み得る。
図9は、畳み込みニューラルネットワーク900(CNN900)の説明のための例である。CNN900の入力層920は、画像を表すデータを含む。たとえば、データは画像のピクセルを表す数字のアレイを含むことができ、アレイの中の各数字は、アレイの中のその位置におけるピクセル強度を表す0から255までの値を含む。上記のことからの前の例を使用すると、アレイは、28行および28列のピクセルならびに3つの色成分(たとえば、赤色成分、緑色成分、および青色成分、またはルーマ成分および2つのクロマ成分など)を有する、数字の28×28×3アレイを含むことができる。画像は、畳み込み隠れ層922a、随意の非線形活性化層、プーリング隠れ層922b、および全結合隠れ層922cを通過させられて、出力層924における出力を得ることができる。各隠れ層のうちの1つしか図9に示されないが、複数の畳み込み隠れ層、非線形層、プーリング隠れ層、および/または全結合層が、CNN900の中に含まれ得ることを、当業者は諒解されよう。前に説明されたように、出力は、物体の単一のクラスを示すことができ、または画像の中の物体を最良に記述するクラスの確率を含むことができる。
CNN900の最初の層は、畳み込み隠れ層922aである。畳み込み隠れ層922aは、入力層920の画像データを分析する。畳み込み隠れ層922aの各ノードは、受容野と呼ばれる入力画像のノード(ピクセル)の領域に接続される。畳み込み隠れ層922aは、1つまたは複数のフィルタであると考えることができ(各フィルタは異なる活性化または特徴マップに対応する)、フィルタの各々の畳み込みの反復は、畳み込み隠れ層922aのノードまたはニューロンである。たとえば、各々の畳み込みの反復においてフィルタが担当する入力画像の領域が、フィルタの受容野である。ある説明のための例では、入力画像が28×28のアレイを含み、各フィルタ(および対応する受容野)が5×5のアレイである場合、畳み込み隠れ層922aの中に24×24のノードがある。各ノードが入力画像において特定のローカル受容野を分析することを学習するように、ノードとそのノードのための受容野との間の各接続は、重みを、場合によっては全体のバイアスを学習する。隠れ層922aの各ノードは、同じ重みおよびバイアス(共有される重みおよび共有されるバイアスと呼ばれる)を有する。たとえば、フィルタは、重み(数字)のアレイと、入力と同じ深度とを有する。フィルタは、(入力画像の3色の成分に従って)ビデオフレームの例では3という深度を有する。フィルタアレイの説明のための例示的なサイズは5×5×3であり、これはノードの受容野のサイズに対応する。
畳み込み隠れ層922aの畳み込み性質は、畳み込み層の各ノードがその対応する受容野に適用されることに起因する。たとえば、畳み込み隠れ層922aのフィルタは、入力画像アレイの左上隅角において開始することができ、入力画像の周りで畳み込むことができる。上述のように、フィルタの各畳み込み反復は、畳み込み隠れ層922aのノードまたはニューロンと見なされ得る。各畳み込み反復において、フィルタの値は、画像の対応する個数の元のピクセル値と乗算される(たとえば、5×5フィルタアレイは、入力画像アレイの左上隅角において入力ピクセル値の5×5アレイで乗算される)。各畳み込み反復からの乗算は一緒に加算されて、その反復またはノードに対する総計を取得することができる。そのプロセスは、次に、畳み込み隠れ層922aの中の次のノードの受容野に従って、入力画像の中の次のロケーションにおいて継続される。たとえば、フィルタを、次の受容野へとあるステップの量だけ動かすことができる。このステップの量は、1または他の適切な量に設定され得る。たとえば、ステップの量が1に設定される場合、フィルタは、各々の畳み込みの反復において、1ピクセルだけ右に動かされる。入力ボリュームの各々の固有の位置においてフィルタを処理すると、その位置に対するフィルタ結果を表す数が生じ、それにより、総計値が畳み込み隠れ層922aの各ノードに対して決定される。
入力層から畳み込み隠れ層922aへのマッピングは、活性化マップ(または、特徴マップ)と呼ばれる。活性化マップは、入力ボリュームの各位置においてフィルタ結果を表す各ノードの値を含む。活性化マップは、入力ボリュームに対するフィルタの各反復から生じる様々な総計値を含むアレイを含み得る。たとえば、5×5のフィルタが28×28の入力画像の各ピクセル(1というステップの量)に適用される場合、活性化マップは24×24のアレイを含む。畳み込み隠れ層922aは、画像の中の複数の特徴を識別するためにいくつかの活性化マップを含むことができる。図9に示される例は、3つの活性化マップを含む。3つの活性化マップを使用して、畳み込み隠れ層922aは3つの異なる種類の特徴を検出することができ、各特徴は画像全体にわたって検出可能である。
いくつかの例では、畳み込み隠れ層922aの後に非線形隠れ層が適用され得る。非線形層は、線形演算を算出していたシステムに非線形性を導入するために使用され得る。非線形層の1つの説明のための例は、正規化線形ユニット(ReLU)層である。ReLU層は、入力ボリュームの中の値のすべてに関数f(x)=max(0,x)を適用することができ、これはすべての負の活性化を0に変える。したがって、ReLUは、畳み込み隠れ層922aの受容野に影響を及ぼすことなく、ネットワーク900の非線形の性質を高めることができる。
畳み込み隠れ層922aの後(かつ、使用されるときは非線形隠れ層の後)に、プーリング隠れ層922bが適用され得る。プーリング隠れ層922bは、畳み込み隠れ層922aからの出力の中の情報を簡略化するために使用される。たとえば、プーリング隠れ層922bは、畳み込み隠れ層922aから出力される各活性化マップを取ることができ、プーリング関数を使用して、凝縮された活性化マップ(または、特徴マップ)を生成する。マックスプーリングは、プーリング隠れ層によって実行される関数の一例である。平均プーリング、L2ノルムプーリング、または他の好適なプーリング関数などの、他の形態のプーリング関数が、プーリング隠れ層922aによって使用され得る。プーリング関数(たとえば、マックスプーリングフィルタ、L2ノルムフィルタ、または他の好適なプーリングフィルタ)は、畳み込み隠れ層922aの中に含まれる各活性化マップに適用される。図9に示す例では、畳み込み隠れ層922aの中の3つの活性化マップのために3つのプーリングフィルタが使用される。
いくつかの例では、最大化プーリングは、あるステップの量(たとえば、2というステップの量などの、フィルタの次元に等しい)を伴う最大化プーリングフィルタ(たとえば、2×2のサイズを有する)を、畳み込み隠れ層922aから出力された活性化マップに適用することによって、使用され得る。最大化プーリングフィルタからの出力は、フィルタがその周りで畳み込むあらゆる部分領域の中の最大の数を含む。2×2のフィルタを例として使用すると、プーリング層の中の各ユニットは、前の層の中の2×2のノード(各ノードは活性化マップの中の値である)の領域を要約することができる。たとえば、活性化マップの中の4つの値(ノード)は、フィルタの各反復において2×2の最大化プーリングにより分析され、4つの値の最大値が「最大」値として出力される。そのような最大化プーリングフィルタが、24×24ノードの次元を有する畳み込み隠れ層922aからの活性化フィルタに適用される場合、プーリング隠れ層922bからの出力は、12×12のノードのアレイである。
いくつかの例では、L2ノルムプーリングフィルタも使用され得る。L2ノルムプーリングフィルタは、(マックスプーリングにおいて行われるように最大値を算出するのではなく)活性化マップの2×2領域(または、他の好適な領域)の中の値の二乗和の平方根を算出することと、算出された値を出力として使用することとを含む。
直観的には、プーリング関数(たとえば、マックスプーリング関数、L2ノルムプーリング関数、または他のプーリング関数)は、所与の特徴が画像の領域の中のどこかで見つかるかどうかを決定し、厳密な位置情報を廃棄する。このことは、特徴が見つけられていると、特徴の厳密なロケーションは、他の特徴に対するその近似的なロケーションほど重要ではないので、特徴検出の結果に影響を及ぼすことなく行うことができる。マックスプーリング(ならびに、他のプーリング方法)は、プーリングされるはるかに少ない特徴しかないという利点をもたらし、したがって、CNN900のもっと後の層において必要とされるパラメータの数を減らす。
ネットワークの中の接続の最終の層は、プーリング隠れ層922bからのあらゆるノードを出力層924の中の出力ノードのうちのあらゆる出力ノードに接続する、全結合層である。上の例を使用すると、入力層は、入力画像のピクセル強度を符号化する28×28のノードを含み、畳み込み隠れ層922aは、3つの活性化マップへの5×5の局所受容野(フィルタのための)の適用に基づく3×24×24の隠れ特徴ノードを含み、プーリング層922bは、3つの特徴マップの各々にわたる2×2の領域への最大化プーリングフィルタの適用に基づく3×12×12の隠れ特徴ノードの層を含む。この例を拡張すると、出力層924は10個の出力ノードを含むことができる。そのような例では、3×12×12のプーリング隠れ層922bのあらゆるノードが、出力層924のあらゆるノードに接続される。
全結合層922cは、前のプーリング層922bの出力(これは高水準の特徴の活性化マップを表すはずである)を取得することができ、特定のクラスに最も相関する特徴を決定する。たとえば、全結合層922cは、特定のクラスに最も強く相関する高水準の特徴を決定することができ、高水準の特徴に対する重み(ノード)を含むことができる。全結合層922cの重みとプーリング隠れ層922bの重みとの積を計算して、異なるクラスに対する確率を取得することができる。たとえば、ビデオフレームの中の物体が人であることを予測するためにCNN900が使用されている場合、人の高水準の特徴(たとえば、2本の脚がある、物体の上部に顔がある、2つの目が顔の左上および右上にある、鼻が顔の中央にある、口が顔の下部にある、および/または人に一般的な他の特徴)を表す活性化マップに高い値が存在する。
いくつかの例では、出力層924からの出力はM次元ベクトル(前の例では、M=10)を含むことができ、Mは、画像の中の物体を分類するときにプログラムがそこから選ばなければならないクラスの数を含むことができる。他の例示的な出力も提供され得る。M次元ベクトルの中の各数は、物体があるクラスである確率を表すことができる。ある説明のための例では、物体の10個の異なるクラスが[0 0 0.05 0.8 0 0.15 0 0 0 0]であることを10次元の出力ベクトルが表す場合、ベクトルは、画像が物体の第3のクラス(たとえば、犬)である確率が5%であり、画像が物体の第4のクラス(たとえば、人)である確率が80%であり、画像が物体の第6のクラス(たとえば、カンガルー)である確率が15%であることを示す。クラスの確率は、物体がそのクラスの一部であることの信頼性レベルであると考えられ得る。
図10は、本技術のいくつかの態様を実装するためのシステムの例を示す図である。具体的には、図10はコンピューティングシステム1000の例を示し、これは、たとえば、内部コンピューティングシステム、リモートコンピューティングシステム、カメラ、またはそれらの任意のコンポーネントを構成する任意のコンピューティングデバイスであってもよく、システムのコンポーネントは接続1005を使用して互いに通信している。接続1005は、バスを使用した物理接続、またはチップセットアーキテクチャなどにおけるプロセッサ1010への直接接続であり得る。接続1005はまた、仮想接続、ネットワーク接続、または論理接続であり得る。
いくつかの例では、コンピューティングシステム1000は、本開示において説明された機能が、データセンター、複数のデータセンター、ピアネットワークなどに分散され得る分散型システムである。いくつかの例では、説明されたシステムコンポーネントの1つまたは複数は、コンポーネントの説明の対象である機能の一部またはすべてを各々実行するような多くのコンポーネントを表す。場合によっては、コンポーネントは物理デバイスまたは仮想デバイスであることができる。
例示的なシステム1000は、少なくとも1つの処理ユニット(CPUまたはプロセッサ)1010、ならびに読取り専用メモリ(ROM)1020およびランダムアクセスメモリ(RAM)1025などのシステムメモリ1015を含む様々なシステムコンポーネントをプロセッサ1010に結合する接続部1005を含む。コンピューティングシステム1000は、プロセッサ1010と直接接続されるか、プロセッサ1010に極めて近接しているか、またはプロセッサ1010の一部として統合される、高速メモリのキャッシュ1012を含むことができる。
プロセッサ1010は、プロセッサ1010、ならびにソフトウェア命令が実際のプロセッサ設計へと組み込まれるような専用プロセッサを制御するように構成される、記憶デバイス1030に記憶されるサービス1032、1034、および1036などの、任意の汎用プロセッサおよびハードウェアサービスまたはソフトウェアサービスを含むことができる。プロセッサ1010は基本的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、完全に自己完結型のコンピューティングシステムであってもよい。マルチコアプロセッサは、対称でも非対称でもよい。
ユーザ対話を可能にするために、コンピューティングシステム1000は入力デバイス1045を含み、発話のためのマイクロフォン、ジェスチャー入力またはグラフィカル入力のためのタッチ感知スクリーン、キーボード、マウス、モーション入力、発話などの、任意の数の入力機構を表し得る。コンピューティングシステム1000は出力デバイス1035も含むことができ、これはある数の出力機構の1つまたは複数であり得る。いくつかの事例では、マルチモーダルシステムは、ユーザが複数のタイプの入力/出力を提供してコンピューティングシステム1000と通信することを可能にできる。コンピューティングシステム1000は通信インターフェース1040を含むことができ、これは全般に、ユーザ入力およびシステム出力を支配して管理することができる。通信インターフェースは、オーディオジャック/プラグ、マイクロフォンジャック/プラグ、ユニバーサルシリアルバス(USB)ポート/プラグ、Apple(登録商標)Lightning(登録商標)ポート/プラグ、イーサネットポート/プラグ、光ファイバポート/プラグ、プロプライエタリ有線ポート/プラグ、BLUETOOTH(登録商標)ワイヤレス信号伝送、BLUETOOTH(登録商標)low energy(BLE)ワイヤレス信号伝送、IBEACON(登録商標)ワイヤレス信号伝送、無線周波識別(RFID)ワイヤレス信号伝送、近距離通信(NFC)ワイヤレス信号伝送、専用短距離通信(DSRC)ワイヤレス信号伝送、802.10 Wi-Fiワイヤレス信号伝送、ワイヤレスローカルエリアネットワーク(WLAN)信号伝送、可視光通信(VLC)、Worldwide Interoperability for Microwave Access (WiMAX)、赤外線(IR)通信ワイヤレス信号伝送、公衆交換電話網(PSTN)信号伝送、統合サービスデジタルネットワーク(ISDN)信号伝送、3G/4G/5G/LTEセルラーデータネットワークワイヤレス信号伝送、アドホックネットワーク信号伝送、ラジオ波信号伝送、マイクロ波信号伝送、赤外線信号伝送、可視光信号伝送、紫外光信号伝送、電磁スペクトルに沿ったワイヤレス信号伝送、またはこれらの何らかの組合せを利用したものを含む、有線および/またはワイヤレストランシーバを使用した有線通信またはワイヤレス通信の、受信および/または送信を実行または促進し得る。通信インターフェース1040はまた、1つまたは複数の全地球航法衛星システム(GNSS)システムに関連する1つまたは複数の衛星からの1つまたは複数の信号の受信に基づいて、コンピューティングシステム1000の位置を決定するために使用される、1つまたは複数のGNSS受信機またはトランシーバを含み得る。GNSSシステムは、限定はされないが、米国の全地球測位システム(GPS)、ロシアの全地球航法衛星システム(GLONASS)、中国の北斗航法衛星システム(BDS)、および欧州のGalileo GNSSを含む。いずれの特定のハードウェア構成上で動作することに対し制約がないので、ここではこの基本的な特徴は、開発されるにつれて、改善されたハードウェアまたはファームウェアの構成により容易に置き換えられることがある。
記憶デバイス1030は、不揮発性のかつ/または非一時的なかつ/またはコンピュータ可読のメモリデバイスであってよく、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、磁気ストリップ/ストライプ、任意の他の磁気記憶媒体、フラッシュメモリ、メモリスタメモリ、任意の他のソリッドステートメモリ、コンパクトディスク読取り専用メモリ(CD-ROM)光ディスク、再書き込み可能コンパクトディスク(CD)光ディスク、デジタルビデオディスク(DVD)光ディスク、ブルーレイディスク(BDD)光ディスク、ホログラフィック光ディスク、別の光媒体、セキュアデジタル(SD)カード、マイクロセキュアデジタル(microSD)カード、メモリスティック(登録商標)カード、スマートカードチップ、EMVチップ、加入者識別モジュール(SIM)カード、ミニ/マイクロ/ナノ/ピコSIMカード、別の集積回路(IC)チップ/カード、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュEPROM(FLASHEPROM)、キャッシュメモリ(L1/L2/L3/L4/L5/L#)、抵抗性ランダムアクセスメモリ(RRAM/ReRAM)、位相変化メモリ(PCM)、スピン転送トルクRAM(STT-RAM)、別のメモリチップもしくはカートリッジ、および/またはそれらの組合せなどの、コンピュータによってアクセス可能であるデータを記憶できるハードディスクまたは他のタイプのコンピュータ可読媒体であってよい。
記憶デバイス1030は、そのようなソフトウェアを定義するコードがプロセッサ1010によって実行されるとシステムに機能を実施させる、ソフトウェアサービス、サーバ、サービスなどを含むことができる。いくつかの例では、特定の機能を実施するハードウェアサービスは、機能を行うために、プロセッサ1010、接続1005、出力デバイス1035などの必要なハードウェアコンポーネントと接続している、コンピュータ可読媒体に記憶されているソフトウェアコンポーネントを含むことができる。
本明細書において使われる限り、「コンピュータ可読媒体」という用語は、限定はしないが、ポータブルまたは非ポータブルの記憶デバイス、光記憶デバイス、ならびに命令および/またはデータを記憶、収容、または搬送することができる様々な他の媒体を含む。コンピュータ可読媒体は、データを記憶することができ、ワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および/または一時的な電子信号を含まない、非一時的媒体を含んでもよい。非一時的媒体の例は、限定はされないが、磁気ディスクもしくは磁気テープ、コンパクトディスク(CD)もしくはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリ、もしくはメモリデバイスを含んでもよい。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表す場合がある、コードおよび/またはマシン実行可能命令を記憶していてもよい。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡すことおよび/または受けることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む、任意の適切な手段を使用して渡され、転送され、または伝送されてもよい。
いくつかの例では、コンピュータ可読記憶デバイス、媒体、およびメモリは、ビットストリームなどを含むケーブルまたはワイヤレス信号を含むことができる。ただし、言及されるとき、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号などの媒体を本来は明確に除く。
本明細書で提供される例の完全な理解を与えるために、上記の説明において具体的な詳細が与えられている。しかしながら、例はこれらの具体的な詳細なしに実践されてもよいことが、当業者によって理解されよう。説明を明快にするために、いくつかの事例では、本技術は、デバイス、デバイスコンポーネント、動作、ステップ、またはソフトウェアでもしくはハードウェアとソフトウェアの組合せで具現化された方法におけるルーチンを含む機能ブロックを含む、個々の機能ブロックを含むものとして提示される場合がある。図に示されるものおよび/または本明細書で説明されるもの以外の追加のコンポーネントが使用されてもよい。たとえば、不必要な詳細で例を不明瞭にしないように、回路、システム、ネットワーク、プロセス、または他のコンポーネントがブロック図の形態でコンポーネントとして示される場合がある。他の事例では、例を不明瞭にすることを避けるために、よく知られている回路、プロセス、アルゴリズム、構造、および技法は、不必要な詳細なしに示される場合がある。
個々の例が、フローチャート、流れ図、データ流れ図、構造図、またはブロック図として示されるプロセスまたは方法として上で説明される場合がある。フローチャートは動作を逐次プロセスとして説明する場合があるが、動作の多くは並行してまたは同時に実施されることが可能である。加えて、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了するときに終了するが、図に含まれない追加の動作を有することも可能である。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、その終了は、その関数が呼出し関数またはメイン関数に戻ることに対応することがある。
上記で説明された例によるプロセスおよび方法は、記憶されたまたは他の方法でコンピュータ可読媒体から入手可能なコンピュータ実行可能命令を使用して実装されることが可能である。そのような命令は、たとえば、汎用コンピュータ、専用コンピュータ、または処理デバイスに、特定の機能または機能のグループを実施させるか、またはそうでなければ実施するように汎用コンピュータ、専用コンピュータ、または処理デバイスを構成する、命令およびデータを含むことができる。使用されるコンピュータリソースの部分は、ネットワークを介してアクセス可能であることができる。コンピュータ実行可能命令は、たとえば、アセンブリ言語、ファームウェア、ソースコードなどの、バイナリ、中間フォーマット命令であってもよい。命令、使用される情報、および/または説明された例による方法の間に作成される情報を記憶するために使用されることがあるコンピュータ可読媒体の例は、磁気または光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク接続された記憶デバイスなどを含む。
これらの開示によるプロセスおよび方法を実装するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せを含むことができ、様々なフォームファクタのうちのいずれをもとることができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実施されるとき、必要なタスクを実施するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体に記憶されてもよい。プロセッサが、必要なタスクを実施してもよい。フォームファクタの典型的な例は、ラップトップ、スマートフォン、携帯電話、タブレットデバイスまたは他の小型フォームファクタパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどを含む。本明細書に記載する機能性は、周辺装置またはアドインカードにおいて具現化することもできる。そのような機能性は、さらなる例として、異なるチップの中の回路板または単一のデバイス中で実行する異なるプロセス上で実装することもできる。
命令、そのような命令を伝えるための媒体、命令を実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、本開示で説明される機能を提供するための例示的な手段である。
上記の説明では、本出願の態様はそれらの特定の例に関して説明されているが、本出願がそれらに限定されないことが、当業者には認識されよう。したがって、本出願の例示的な例が本明細書で詳細に説明されたが、本発明の概念が他の方法で様々に具現化され採用されてもよいことと、従来技術によって限定される場合を除き、添付の特許請求の範囲がそのような変形を含むものと解釈されることが意図されることとを理解されたい。上で説明された適用例の様々な特徴および態様は、個別または一緒に使用されてもよい。さらに、例は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書で説明したものを越えた任意の数の環境および適用例において使用されてもよい。したがって、本明細書および図面は、限定的ではなく例示的であると見なされるべきである。例示のために、方法は特定の順序で説明された。代替例では、説明された順序とは異なる順序で方法が実施されてもよいことを諒解されたい。
本明細書において使われる、未満(「<」)およびよりも大きい(「>」)という記号または用語は、本記述の範囲から逸脱することなく、それぞれ、以下(「≦」)および以上(「≧」)という記号で置き換えられることが可能であることが、当業者には諒解されよう。
コンポーネントがいくつかの動作を実施する「ように構成される」ものとして説明される場合、そのような構成は、たとえば、動作を実施するように電子回路もしくは他のハードウェアを設計することによって、動作を実施するようにプログラマブル電子回路(たとえば、マイクロプロセッサ、もしくは他の好適な電子回路)をプログラムすることによって、またはそれらの任意の組合せで達成されることが可能である。
「に結合される」という句は、直接もしくは間接的にのいずれかで別のコンポーネントに物理的に接続された任意のコンポーネント、および/または、直接もしくは間接的にのいずれかで別のコンポーネントと通信している(たとえば、ワイヤードもしくはワイヤレス接続および/または他の好適な通信インターフェースを介して別のコンポーネントに接続された)任意のコンポーネントを指す。
セット「の少なくとも1つ」および/またはセットの「1つまたは複数」と記載する請求項の文言または他の文言は、セットの1つの要素またはセットの(任意の組合せでの)複数の要素が請求項を満足することを示す。たとえば、「AおよびBのうちの少なくとも1つ」を記載する請求項の文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」を記載する請求項の文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。セット「の少なくとも1つ」および/またはセットの「1つまたは複数」という文言は、セットに列挙される項目にセットを限定しない。たとえば、「AおよびBのうちの少なくとも1つ」を記述する請求項の文言は、A、B、またはAおよびBを意味することができ、加えて、AおよびBのセットに列挙されていない項目をさらに含むことができる。
本明細書で開示した例に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組合せとして実装されてもよい。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路および動作は、全般にそれらの機能に関して上で説明された。そのような機能がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、具体的な適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明された機能性を具体的な適用例ごとに様々な方法で実装してもよいが、そのような実装決定は、本出願の範囲からの逸脱を引き起こすものと解釈されるべきではない。
本明細書において説明された技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなどの、様々なデバイスのいずれにおいて実装されてもよい。モジュールまたはコンポーネントとして説明された任意の特徴が、集積論理デバイスの中で一緒に、または個別であるが相互動作可能な論理デバイスとして別々に実装されてもよい。ソフトウェアで実装される場合、技法は、実行されると、上で説明された方法のうちの1つまたは複数を実施する命令を含むプログラムコードを備える、コンピュータ可読データ記憶媒体によって少なくとも部分的に実現されてもよい。コンピュータ可読データ記憶媒体は、コンピュータプログラム製品の一部を形成してもよく、これはパッケージング材料を含んでもよい。コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、たとえば同期式ダイナミックランダムアクセスメモリ(SDRAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、FLASHメモリ、磁気または光学データ記憶媒体などのようなメモリまたはデータ記憶媒体を備えてもよい。技法は、追加または代替として、伝搬される信号または波などの、命令またはデータ構造の形でプログラムコードを搬送または通信し、コンピュータによってアクセスされ、読み取られ、かつ/または実行されることが可能である、コンピュータ可読通信媒体によって少なくとも部分的に実現されてもよい。
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積論理回路構成もしくは個別論理回路構成などの、1つまたは複数のプロセッサを含んでもよいプロセッサによって実行されてもよい。そのようなプロセッサは、本開示に記載された技法のいずれかを実施するように構成されてもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実装されてもよい。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明される技法の実装に好適な任意の他の構造もしくは装置のうちのいずれかを指す場合がある。加えて、いくつかの態様では、本明細書において説明された機能性は、符号化および復号のために構成される専用のソフトウェアモジュールもしくはハードウェアモジュール内に設けられてもよく、または複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれてもよい。
本開示の例示的な態様は以下のとおりである。
態様1: エクステンデッドリアリティ環境内でセルフ画像をキャプチャするための装置であって、メモリと、メモリに結合される1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、エクステンデッドリアリティシステムのユーザのポーズをキャプチャすることであって、ユーザのポーズはエクステンデッドリアリティシステムと関連付けられた実世界環境内のユーザのロケーションを含む、ことと、ユーザのデジタル表現を生成することであって、ユーザのデジタル表現はユーザのポーズを反映する、ことと、実世界環境の1つまたは複数のフレームをキャプチャすることと、ユーザのデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねることとを行うように構成される、装置。
態様2: 1つまたは複数のプロセッサは、ユーザのデジタル表現を、実世界環境内のユーザのロケーションに対応するフレームロケーション内の実世界環境の1つまたは複数のフレーム上に重ねるように構成される、請求項1の装置。
態様3: 1つまたは複数のプロセッサは、実世界環境の1つまたは複数のフレームをキャプチャする前に、ユーザのデジタル表現を生成するように構成される、請求項1の装置。
態様4: 1つまたは複数のプロセッサは、実世界環境内のユーザのロケーションに対応する表示ロケーション内のユーザのデジタル表現を、そこを通して実世界環境が見えるエクステンデッドリアリティシステムのディスプレイ内に表示するように構成される、請求項1から3のいずれか1つの装置。
態様5: 1つまたは複数のプロセッサは、ユーザのデジタル表現がエクステンデッドリアリティシステムのディスプレイ内に表示されながら、実世界環境の1つまたは複数のフレームをキャプチャするための命令に対応するユーザ入力を検出することと、ユーザ入力に基づいて実世界環境の1つまたは複数のフレームをキャプチャすることとを行うように構成される、請求項4の装置。
態様6: 1つまたは複数のプロセッサは、ユーザのポーズをキャプチャする前に、実世界環境の1つまたは複数のフレームをキャプチャするように構成される、請求項1の装置。
態様7: 1つまたは複数のプロセッサは、実世界環境内のユーザのロケーションに対応する表示ロケーション内のユーザのデジタル表現を、実世界環境の1つまたは複数のフレームが表示されるエクステンデッドリアリティシステムのディスプレイ内に表示するように構成される、請求項6の装置。
態様8: 1つまたは複数のプロセッサは、実世界環境内のユーザのロケーションにおける変化を検出することに基づいて、ユーザのデジタル表現の表示ロケーションを更新するように構成される、請求項7の装置。
態様9: 1つまたは複数のプロセッサは、ユーザのデジタル表現がエクステンデッドリアリティシステムのディスプレイ内に表示されながら、ユーザのポーズをキャプチャするための命令に対応するユーザ入力を検出することと、ユーザ入力に基づいてユーザのポーズをキャプチャすることとを行うようにさらに構成される、請求項7の装置。
態様10: 1つまたは複数のプロセッサは、第1の忠実度のユーザの第1のデジタル表現を生成することと、第2の忠実度のユーザの第2のデジタル表現を取得することとを行うように構成され、第2の忠実度は第1の忠実度よりも高い、請求項1から9のいずれか1つの装置。
態様11: 1つまたは複数のプロセッサは、ユーザのポーズがキャプチャされる前に、エクステンデッドリアリティシステムのディスプレイ内にユーザの第1のデジタル表現を表示することと、ユーザのポーズがキャプチャされたことに基づいてユーザの第2のデジタル表現を生成することと、ユーザの第2のデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねることとを行うように構成される、請求項10の装置。
態様12: 1つまたは複数のプロセッサは、実世界環境の1つまたは複数のフレームがキャプチャされる前に、エクステンデッドリアリティシステムのディスプレイ内にユーザの第1のデジタル表現を表示することと、実世界環境の1つまたは複数のフレームがキャプチャされたことに基づいてユーザの第2のデジタル表現を生成することと、ユーザの第2のデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねることとを行うように構成される、請求項10の装置。
態様13: 第1のデジタル表現は第1の機械学習アルゴリズムに基づき、ユーザの第2のデジタル表現は第2の機械学習アルゴリズムに基づく、請求項10の装置。
態様14: 1つまたは複数のプロセッサは、第1の機械学習アルゴリズムをエクステンデッドリアリティシステム上に実装することに基づいてユーザの第1のデジタル表現を生成することと、第2の機械学習アルゴリズムを実装することに基づいてユーザの第2のデジタル表現を、ユーザのデジタル表現を生成するように構成されるサーバに生成させることとを行うように構成される、請求項13の装置。
態様15: 1つまたは複数のプロセッサは、実世界環境内の人のポーズをキャプチャすることと、人のデジタル表現を生成することであって、人のデジタル表現は人のポーズを反映する、ことと、ユーザのデジタル表現および人のデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねることとを行うように構成される、請求項1から14のいずれか1つの装置。
態様16: 1つまたは複数のプロセッサは、人のエクステンデッドリアリティシステムから受信された人のデジタル表現と関連付けられた情報に少なくとも部分的に基づいて、人のデジタル表現を生成するように構成される、請求項15の装置。
態様17: 人のデジタル表現と関連付けられた情報は、人のデジタル表現を生成するようにトレーニングされた機械学習モデルを含む、請求項16の装置。
態様18: 1つまたは複数のプロセッサは、複数のフレームと関連付けられたユーザの複数のポーズをキャプチャすることと、複数のフレームに対応するユーザの複数のデジタル表現を生成することと、ユーザの複数のデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねることとを行うように構成され、実世界環境の1つまたは複数のフレームは実世界環境の複数のフレームを含む、請求項1から17のいずれか1つの装置。
態様19: 1つまたは複数のプロセッサは、第1の機械学習アルゴリズムを使用してユーザのデジタル表現を生成することと、第2の機械学習アルゴリズムを使用してユーザのデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねることとを行うように構成される、請求項1から18のいずれか1つの装置。
態様20: 1つまたは複数のプロセッサは、エクステンデッドリアリティシステムの内向きカメラシステムによってキャプチャされた画像データに少なくとも部分的に基づいてユーザのポーズをキャプチャするように構成される、請求項1から19のいずれか1つの装置。
態様21: 1つまたは複数のプロセッサは、ユーザの表情を決定することに少なくとも部分的に基づいてユーザのポーズをキャプチャするように構成される、請求項1から20のいずれか1つの装置。
態様22: 1つまたは複数のプロセッサは、ユーザのジェスチャーを決定することに少なくとも部分的に基づいてユーザのポーズをキャプチャするように構成される、請求項1から21のいずれか1つの装置。
態様23: 1つまたは複数のプロセッサは、実世界環境の3次元マップを生成することに少なくとも部分的に基づいて実世界環境内のユーザのロケーションを決定するように構成される、請求項1から22のいずれか1つの装置。
態様24: 1つまたは複数のプロセッサは、エクステンデッドリアリティシステムの外向きカメラシステムを使用して実世界環境の1つまたは複数のフレームをキャプチャするように構成される、請求項1から23のいずれか1つの装置。
態様25: 装置は、エクステンデッドリアリティシステムを含む、請求項1から24のいずれか1つの装置。
態様26: 装置は、モバイルデバイスを含む、請求項1から25のいずれか1つの装置。
態様27: ディスプレイをさらに含む、請求項1から26のいずれか1つの装置。
態様28: エクステンデッドリアリティ環境内でセルフ画像をキャプチャするための方法であって、エクステンデッドリアリティシステムのユーザのポーズをキャプチャするステップであって、ユーザのポーズはエクステンデッドリアリティシステムと関連付けられた実世界環境内のユーザのロケーションを含む、ステップと、ユーザのデジタル表現を生成するステップであって、ユーザのデジタル表現はユーザのポーズを反映する、ステップと、実世界環境の1つまたは複数のフレームをキャプチャするステップと、ユーザのデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねるステップとを含む、方法。
態様29: ユーザのデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねるステップは、ユーザのデジタル表現を実世界環境内のユーザのロケーションに対応するフレームロケーション内に重ねるステップを含む、請求項28の方法。
態様30: ユーザのデジタル表現を生成するステップは、実世界環境の1つまたは複数のフレームをキャプチャする前に実行される、請求項28の方法。
態様31: 実世界環境内のユーザのロケーションに対応する表示ロケーション内のユーザのデジタル表現を、そこを通して実世界環境が見えるエクステンデッドリアリティシステムのディスプレイ内に表示するステップをさらに含む、請求項28から30のいずれか1つの方法。
態様32: 実世界環境の1つまたは複数のフレームをキャプチャするステップは、ユーザのデジタル表現がエクステンデッドリアリティシステムのディスプレイ内に表示されながら、実世界環境の1つまたは複数のフレームをキャプチャするための命令に対応するユーザ入力を検出するステップと、ユーザ入力に基づいて実世界環境の1つまたは複数のフレームをキャプチャするステップとをさらに含む、請求項31の方法。
態様33: 実世界環境の1つまたは複数のフレームをキャプチャするステップは、ユーザのポーズをキャプチャする前に実行される、請求項28の方法。
態様34: 実世界環境内のユーザのロケーションに対応する表示ロケーション内のユーザのデジタル表現を、実世界環境の1つまたは複数のフレームが表示されるエクステンデッドリアリティシステムのディスプレイ内に表示するステップをさらに含む、請求項33の方法。
態様35: 実世界環境内のユーザのロケーションにおける変化を検出することに基づいて、ユーザのデジタル表現の表示ロケーションを更新するステップをさらに含む、請求項34の方法。
態様36: エクステンデッドリアリティシステムのユーザのポーズをキャプチャするステップは、ユーザのデジタル表現がエクステンデッドリアリティシステムのディスプレイ内に表示されながら、ユーザのポーズをキャプチャするための命令に対応するユーザ入力を検出するステップと、ユーザ入力に基づいてユーザのポーズをキャプチャするステップとをさらに含む、請求項34の方法。
態様37: ユーザのデジタル表現を生成するステップは、第1の忠実度のユーザの第1のデジタル表現を生成するステップと、第2の忠実度のユーザの第2のデジタル表現を取得するステップとを含み、第2の忠実度は第1の忠実度よりも高い、請求項28から36のいずれか1つの方法。
態様38: ユーザのポーズがキャプチャされる前に、エクステンデッドリアリティシステムのディスプレイ内にユーザの第1のデジタル表現を表示するステップと、ユーザのポーズがキャプチャされたことに基づいてユーザの第2のデジタル表現を生成するステップと、ユーザの第2のデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねるステップとをさらに含む、請求項37の方法。
態様39: 実世界環境の1つまたは複数のフレームがキャプチャされる前に、エクステンデッドリアリティシステムのディスプレイ内にユーザの第1のデジタル表現を表示するステップと、実世界環境の1つまたは複数のフレームがキャプチャされたことに基づいてユーザの第2のデジタル表現を生成するステップと、ユーザの第2のデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねるステップとをさらに含む、請求項37の方法。
態様40: 第1のデジタル表現は第1の機械学習アルゴリズムに基づき、ユーザの第2のデジタル表現は第2の機械学習アルゴリズムに基づく、請求項37の方法。
態様41: ユーザの第1のデジタル表現を生成するステップは、第1の機械学習アルゴリズムをエクステンデッドリアリティシステム上に実装するステップを含み、ユーザの第2のデジタル表現を取得するステップは、第2の機械学習アルゴリズムを実装することに基づいてユーザの第2のデジタル表現を、ユーザのデジタル表現を生成するように構成されるサーバに生成させるステップを含む、請求項40の方法。
態様42: 実世界環境内の人のポーズをキャプチャするステップと、人のデジタル表現を生成するステップであって、人のデジタル表現は人のポーズを反映する、ステップと、ユーザのデジタル表現および人のデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねるステップとをさらに含む、請求項28から41のいずれか1つの方法。
態様43: 人のデジタル表現は、人のエクステンデッドリアリティシステムから受信された人のデジタル表現と関連付けられた情報に少なくとも部分的に基づいて生成される、請求項42の方法。
態様44: 人のデジタル表現と関連付けられた情報は、人のデジタル表現を生成するようにトレーニングされた機械学習モデルを含む、請求項43の方法。
態様45: 複数のフレームと関連付けられたユーザの複数のポーズをキャプチャするステップと、複数のフレームに対応するユーザの複数のデジタル表現を生成するステップと、ユーザの複数のデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねるステップとをさらに含み、実世界環境の1つまたは複数のフレームは実世界環境の複数のフレームを含む、請求項28から44のいずれか1つの方法。
態様46: ユーザのデジタル表現を生成するステップは、第1の機械学習アルゴリズムを使用するステップを含み、ユーザのデジタル表現を実世界環境の1つまたは複数のフレーム上に重ねるステップは、第2の機械学習アルゴリズムを使用するステップを含む、請求項28から45のいずれか1つの方法。
態様47: ユーザのポーズをキャプチャするステップは、エクステンデッドリアリティシステムの内向きカメラシステムを使用して画像データをキャプチャするステップを含む、請求項28から46のいずれか1つの方法。
態様48: ユーザのポーズをキャプチャするステップは、ユーザの表情を決定するステップを含む、請求項28から47のいずれか1つの方法。
態様49: ユーザのポーズをキャプチャするステップは、ユーザのジェスチャーを決定するステップを含む、請求項28から48のいずれか1つの方法。
態様50: 実世界環境の3次元マップを生成することに少なくとも部分的に基づいて実世界環境内のユーザのロケーションを決定するステップをさらに含む、請求項28から49のいずれか1つの方法。
態様51: 実世界環境の1つまたは複数のフレームをキャプチャするステップは、エクステンデッドリアリティシステムの外向きカメラシステムを使用して画像データをキャプチャするステップを含む、請求項28から50のいずれか1つの方法。
態様52: エクステンデッドリアリティ環境内でセルフ画像をキャプチャするための非一時的コンピュータ可読記憶媒体であって、その中に記憶された命令を含み、命令は、1つまたは複数のプロセッサによって実行されたとき、態様1から51のいずれかによる動作を1つまたは複数のプロセッサに実行させる、非一時的コンピュータ可読記憶媒体。
態様53: エクステンデッドリアリティ環境内でセルフ画像をキャプチャするための装置であって、態様1から51のいずれかによる動作を実行するための手段を含む、装置。