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

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

▶ オキュラス ブイアール,エルエルシーの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-06-20
(54)【発明の名称】スマートセンサ
(51)【国際特許分類】
   H04N 25/79 20230101AFI20230613BHJP
   G06N 3/063 20230101ALI20230613BHJP
   G11C 5/02 20060101ALI20230613BHJP
   G06T 7/00 20170101ALI20230613BHJP
   G06V 10/82 20220101ALI20230613BHJP
   H10B 61/00 20230101ALI20230613BHJP
   H01L 29/82 20060101ALI20230613BHJP
   H10N 52/00 20230101ALI20230613BHJP
   H10B 10/00 20230101ALI20230613BHJP
   H01L 27/146 20060101ALI20230613BHJP
   G06G 7/60 20060101ALI20230613BHJP
   H04N 23/57 20230101ALI20230613BHJP
【FI】
H04N25/79
G06N3/063
G11C5/02 100
G06T7/00 350C
G06V10/82
H10B61/00
H01L29/82 Z
H10N52/00 Z
H10B10/00
H01L27/146 E
G06G7/60
H04N23/57
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022548742
(86)(22)【出願日】2021-05-07
(85)【翻訳文提出日】2022-10-06
(86)【国際出願番号】 US2021031201
(87)【国際公開番号】W WO2021226411
(87)【国際公開日】2021-11-11
(31)【優先権主張番号】63/021,476
(32)【優先日】2020-05-07
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/038,636
(32)【優先日】2020-06-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/313,884
(32)【優先日】2021-05-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】515046968
【氏名又は名称】メタ プラットフォームズ テクノロジーズ, リミテッド ライアビリティ カンパニー
【氏名又は名称原語表記】META PLATFORMS TECHNOLOGIES, LLC
(74)【代理人】
【識別番号】110002974
【氏名又は名称】弁理士法人World IP
(72)【発明者】
【氏名】リュウ, シンチャオ
(72)【発明者】
【氏名】デ サルボ, バーバラ
(72)【発明者】
【氏名】レイセルホーフェ, ハンス
(72)【発明者】
【氏名】リー, ツーユン
(72)【発明者】
【氏名】カーン, アシフ イムティアス
(72)【発明者】
【氏名】サルワー, サイド シャキブ
【テーマコード(参考)】
4M118
4M119
5C024
5C122
5F083
5F092
5L096
【Fターム(参考)】
4M118AA04
4M118AB01
4M118AB03
4M118BA19
4M118HA22
4M118HA30
4M119AA01
4M119AA05
4M119BB01
4M119DD17
4M119DD24
5C024AX01
5C024CX51
5C024CY14
5C024DX07
5C024GX01
5C024HX01
5C024HX31
5C024HX51
5C024HX57
5C024JX42
5C122EA68
5C122FA02
5C122FA18
5C122FC06
5C122FH11
5C122FK23
5C122HA86
5C122HA88
5C122HB02
5F083BS27
5F083GA01
5F083GA05
5F092AA03
5F092AA04
5F092AB06
5F092AC11
5F092AD23
5F092BB23
5F092BB36
5F092BB43
5F092BC04
5L096CA14
5L096EA39
5L096HA11
5L096KA04
5L096LA04
5L096LA05
5L096LA11
5L096LA12
(57)【要約】
ローカルエリアの1つまたは複数の特徴を決定するためのセンサアセンブリが、本明細書で提示される。センサアセンブリは、複数の積層型センサ層を含む。センサアセンブリの最上部にある、複数の積層型センサ層の第1のセンサ層は、ピクセルのアレイを含む。最上部のセンサ層は、ローカルエリアにおける1つまたは複数の物体から反射された光の1つまたは複数の画像をキャプチャするように構成されることが可能である。センサアセンブリは、最上部のセンサ層の下にある1つまたは複数のセンサ層をさらに含む。1つまたは複数のセンサ層は、キャプチャされた1つまたは複数の画像に関するデータを処理するように構成されることが可能である。メモリおよびコンピューティングデバイスの様々な配置を特色とする種々のセンサアーキテクチャが説明され、これらのうちのいくつかは、インメモリコンピューティングを特色とする。複数のセンサアセンブリが、例えばヘッドマウント型ディスプレイなどの、人工現実システムに統合されることが可能である。
【選択図】図3A
【特許請求の範囲】
【請求項1】
ピクセルのアレイを含む第1のセンサ層と、
前記第1のセンサ層と一緒にスタックを形成する1つまたは複数の半導体層であって、前記第1のセンサ層の下にあり、
ピクセルの前記アレイによって出力されたピクセルデータを処理する畳み込みニューラルネットワーク(CNN)モデルを実装するように構成された機械学習(ML)モデルアクセラレータであって、前記ピクセルデータが、1つまたは複数のフレームに対応する、機械学習(ML)モデルアクセラレータ、
前記CNNモデルの係数、および命令コードを格納するように構成された第1のメモリ、
前記ピクセルデータを格納するように構成された第2のメモリ、ならびに
前記MLモデルアクセラレータ、前記第1のメモリ、および前記第2のメモリの動作を制御するための前記命令コードを実行するように構成されたコントローラ
を備える、1つまたは複数の半導体層と
を備える、装置。
【請求項2】
前記コントローラが、フレーム期間の一部分に対応する露出期間の間、前記MLモデルアクセラレータおよび前記第2のメモリを無効にし、前記露出期間が終わった後、前記MLモデルアクセラレータおよび前記第2のメモリを有効化して前記ピクセルデータを処理し、前記ピクセルデータの前記処理が完了した後、前記MLモデルアクセラレータおよび前記第2のメモリを無効にするように構成される、請求項1に記載の装置。
【請求項3】
前記第1のメモリが、不揮発性メモリ(NVM)を備え、
前記第2のメモリが、スタティックランダムアクセスメモリ(SRAM)デバイスを備える、
請求項1に記載の装置。
【請求項4】
前記NVMが、磁気抵抗性ランダムアクセスメモリ(MRAM)デバイス、抵抗性ランダムアクセスメモリ(RRAM)デバイス、または相変化メモリ(PCM)デバイスのうちの少なくとも1つを備える、請求項3に記載の装置。
【請求項5】
前記1つまたは複数の半導体層が、第1の半導体層、および前記第1の半導体層と一緒にスタックされた第2の半導体層を備え、
前記第1の半導体層が、前記MLモデルアクセラレータおよび前記第1のメモリを含み、
前記第2の半導体層が、前記第2のメモリを含み、
前記第2のメモリが、並列のシリコン貫通電極(TSV)インターフェースを介して、前記MLモデルアクセラレータに接続される、
請求項1に記載の装置。
【請求項6】
前記第2の半導体層が、前記第2のメモリに格納された前記ピクセルデータに対するインメモリコンピュート演算を実施するように構成されたメモリコントローラをさらに備え、前記インメモリコンピュート演算が、行列転置演算、行列再形成演算、または行列乗算演算のうちの少なくとも1つを含む、請求項5に記載の装置。
【請求項7】
ゼロの係数および非ゼロの係数が、前記第1のメモリの異なる数のビットを使用して格納される、請求項6に記載の装置。
【請求項8】
ゼロの係数が、前記第1のメモリのアサートされたフラグビットによって表され、
非ゼロの係数が、デアサートされたフラグビット、および前記第1のメモリにおける前記非ゼロの係数の数値を表すデータビットのセットによって表される、
請求項7に記載の装置。
【請求項9】
前記メモリコントローラが、ゼロの係数を前記MLモデルアクセラレータに送ることをスキップするように構成される、請求項6に記載の装置。
【請求項10】
前記MLモデルアクセラレータが、ゼロの係数を伴う乗算演算をスキップし、ゼロの係数を伴う乗算演算の出力を表すためにゼロを出力するように構成される、請求項6に記載の装置。
【請求項11】
前記インメモリコンピュート演算が、入力ベクトルと基準ベクトルとの間の距離の計算、基準ベクトルの中の入力ベクトルの類似点サーチ、画像フィルタリング、または奥行き方向の畳み込み演算のうちの少なくとも1つをさらに含む、請求項6に記載の装置。
【請求項12】
前記MLモデルアクセラレータが、前記CNNモデルへの入力として、前記ピクセルデータのサブセットを選択するゲーティングモデルを実装するように構成される、請求項1に記載の装置。
【請求項13】
前記ゲーティングモデルが、ユーザ固有モデルおよびベースモデルを備え、前記ユーザ固有モデルが、前記装置において生成され、前記ベースモデルが、前記装置の外部の外部デバイスにおいて生成される、請求項12に記載の装置。
【請求項14】
前記ゲーティングモデルが、異なる入力チャネルのための、および異なるフレームのための、前記ピクセルデータの異なるサブセットを選択する、請求項12に記載の装置。
【請求項15】
前記ゲーティングモデルが、前記CNNモデルへの前記入力から、ブラインドピクセルを除外するように構成される、請求項12に記載の装置。
【請求項16】
マイクロコントローラであって、前記1つまたは複数の半導体層が、磁気抵抗性ランダムアクセスメモリ(MRAM)デバイスを備え、前記マイクロコントローラが、前記MRAMデバイスの抵抗を変調するためにパルスを前記MRAMデバイスに伝送し、前記MRAMデバイスの前記変調された抵抗を測定することに基づいて乱数のシーケンスを生成するように構成される、マイクロコントローラ
をさらに備える、請求項1に記載の装置。
【請求項17】
前記CNNモデルが、
重みの第1のセットを含む第1の層と、
重みの第2のセットを含む第2の層と
を使用して実装される、請求項1に記載の装置。
【請求項18】
重みの前記第1のセットが、ガボール重みの固定セットを含む、請求項17に記載の装置。
【請求項19】
前記CNNモデルが、重みの前記第1のセットおよび重みの前記第2のセットを使用して前記ピクセルデータの特徴を抽出するように構成される、請求項17に記載の装置。
【請求項20】
重みの前記第1のセットおよび重みの前記第2のセットが、前記装置の外部のエクスサイチュ訓練動作に基づいて訓練され、
重みの前記第2のセットが、前記装置におけるインサイチュ訓練動作に基づいて調節される、
請求項17に記載の装置。
【請求項21】
前記エクスサイチュ訓練動作が、クラウド環境で実施され、
前記装置が、重みの前記調節された第2のセットを前記クラウド環境に伝送して返すように構成される、
請求項20に記載の装置。
【請求項22】
前記インサイチュ訓練動作が、強化学習動作を含み、
前記第1のメモリが、前記第2の層を実装するメモリスタのアレイを備え、
前記MLモデルアクセラレータが、メモリスタの前記アレイからの中間出力を乱数と比較して出力を生成し、前記MLモデルアクセラレータの前記出力に基づいてメモリスタの前記アレイに格納された重みを調節するように構成される、
請求項20に記載の装置。
【請求項23】
前記インサイチュ訓練動作が、教師なし学習動作を含み、
前記第1のメモリが、前記第2の層を実装するメモリスタのアレイを備え、
メモリスタの前記アレイが、ピクセルの前記アレイによって検出されたイベントを表す信号を受け取り、前記イベントの相対的なタイミングのパターンを表す中間出力を生成するように構成され、
前記MLモデルアクセラレータが、前記中間出力に基づいて出力を生成し、前記MLモデルアクセラレータの前記出力に基づいてメモリスタの前記アレイに格納された重みを調節するように構成される、
請求項20に記載の装置。
【請求項24】
前記CNNモデルが、メモリスタのアレイを使用して実装された完全接続ニューラルネットワーク層を含み、メモリスタの前記アレイが、前記CNNモデルの出力生成の一部として、ベクトル-行列乗算演算またはベクトル-ベクトル乗算演算のうちの少なくとも1つを実施するように構成される、請求項1に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、「SENSOR SYSTEM BASED ON STACKED SENSOR LAYERS」と題する、2020年7月28日に発行された米国特許第10,726,627号を現在有する、2018年3月1日に出願された米国特許出願第15/909,162号の継続出願である、「SENSOR SYSTEM BASED ON STACKED SENSOR LAYERS」と題する、2020年6月24日に出願された米国特許出願第16/910,844号の一部継続出願であり、2017年7月25日に出願され、「STACKED SENSOR SYSTEM USING MEMRISTORS」と題する、米国仮出願第62/536,605号の利益および優先権を主張する。また、本出願は、2020年5月7日に出願され、「SMART SENSOR」と題する、米国仮出願第63/021,476号、および2020年6月12日に出願され、「SMART SENSOR」と題する、米国仮出願第63/038,636号の、利益および優先権を主張する。上記で特定された出願のそれぞれの内容は、全ての目的のために本明細書によって全体として参照により組み込まれる。
【0002】
本開示は、一般に、センサデバイスの実装形態に関し、詳細には、人工現実システムの一部であることが可能な複数の積層型センサ層を備えるセンサシステムに関する。
【背景技術】
【0003】
ヘッドマウント型ディスプレイ(HMD:head-mounted display)システムなどの人工現実システムは、満足のいくユーザ体験をもたらすために、周辺エリアの物体の特徴をキャプチャするために複雑なセンサデバイス(カメラ)を用いる。限られた数の従来のセンサデバイスが、HMDシステムに実装され、例えば、視標追跡、手の追跡、体の追跡、広い視野による周辺エリアのスキャンなどのために利用されることが可能である。大抵の場合、従来のセンサデバイスは、周辺エリアから大量の情報をキャプチャする。大量のデータを処理することにより、従来のセンサデバイスは、簡単に飽和状態になり、処理スピードに悪影響を及ぼす恐れがある。さらに、人工現実システムに採用される従来のセンサデバイスは、計算負荷の高い演算を実施することにより、途方もなく大きいレイテンシを有しつつ、大量の電力を浪費する。
【発明の概要】
【0004】
センサアセンブリの一部または全部を囲むローカルエリアの1つまたは複数の特徴を決定するためのセンサアセンブリが、本明細書で提示される。センサアセンブリは、複数の積層型センサ層、すなわち、互いの最上部にスタックされたセンサ層を含む。センサアセンブリの最上部にある複数の積層型センサ層の第1のセンサ層は、光検出層として実装されることが可能であり、ピクセルのアレイを含む。最上部のセンサ層は、ローカルエリアにおける1つまたは複数の物体から反射された光の1つまたは複数の画像をキャプチャするように構成されることが可能である。センサアセンブリは、光検出層の下にある1つまたは複数のセンサ層をさらに含む。1つまたは複数のセンサ層は、例えば、1つまたは複数の物体の奥行き情報、画像分類子(image classifier)などの、ローカルエリアの1つまたは複数の特徴を決定するために、キャプチャされた1つまたは複数の画像に関するデータを処理するように構成されることが可能である。
【0005】
ヘッドマウント型ディスプレイ(HMD)は、複数のセンサアセンブリをさらに統合することができる。HMDは、HMDを装着したユーザにコンテンツを表示する。HMDは、人工現実システムの一部であり得る。HMDは、電子ディスプレイ、少なくとも1つの照明源、および光学アセンブリをさらに含む。電子ディスプレイは、画像光を放つように構成される。少なくとも1つの照明源は、複数のセンサアセンブリのうちの少なくとも1つのセンサアセンブリによってキャプチャされた光でローカルエリアを照らすように構成される。光学アセンブリは、ユーザの目の場所に対応するHMDのアイボックスに画像光を向けるように構成される。画像光は、キャプチャされた1つまたは複数の画像に関する処理済データに部分的に基づく、少なくとも1つのセンサアセンブリによって決定されたローカルエリアの奥行き情報を含み得る。
【0006】
いくつかの実施形態では、センサ装置は、第1のセンサ層、および第1のセンサ層と一緒にスタックを形成する1つまたは複数の半導体層を含む。第1のセンサ層は、ピクセルのアレイを含む。1つまたは複数の半導体層は、第1のセンサ層の下にあり、畳み込みニューラルネットワーク(CNN:convolutional neural network)モデルを実装するように構成された機械学習(ML:machine learning)モデルアクセラレータを含み、CNNモデルは、ピクセルのアレイによって出力されたピクセルデータを処理し、ピクセルデータは、1つまたは複数のフレームに対応する。1つまたは複数の半導体層は、第1のメモリ、第2のメモリ、およびコントローラをさらに含む。第1のメモリは、CNNモデルの係数、および命令コードを格納するように構成される。第2のメモリは、ピクセルデータを格納するように構成される。コントローラは、MLモデルアクセラレータ、第1のメモリ、および第2のメモリの動作を制御するための命令コードを実行するように構成される。
【図面の簡単な説明】
【0007】
図1A】本開示の1つまたは複数の例による、ヘッドマウント型ディスプレイ(HMD)の図である。
図1B】本開示の1つまたは複数の例による、図1AのHMDの前面剛体の横断面の図である。
図2】本開示の1つまたは複数の例による、図1AのHMDの一部であり得る、複数の積層型センサ層を含む積層型センサシステムの断面図である。
図3A】本開示の一例による、図2の積層型センサシステムの一部であり得る、複数の積層型センサ層、およびその動作の詳細な図である。
図3B】本開示の一例による、図2の積層型センサシステムの一部であり得る、複数の積層型センサ層、およびその動作の詳細な図である。
図4】本開示の1つまたは複数の例による、図2の積層型センサシステムの一部であり得る、連結されたセンサ層から成る実例のセンサアーキテクチャの図である。
図5】本開示の1つまたは複数の例による、図2の積層型センサシステムの一部であり得る、メモリスタのアレイに基づくニューラルネットワークの例の図である。
図6】本開示の1つまたは複数の例による、ホスト-センサ閉ループシステムの例の図である。
図7A】本開示の1つまたは複数の例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図7B】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図7C】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図7D】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図7E】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図7F】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図7G】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図7H】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図7I】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図7J】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図8A】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図8B】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図8C】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図9】本開示の1つまたは複数の例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図10A】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図10B】本開示の1つまたは複数の例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図10C】本開示の一例による、図6のセンサシステムの実例の構成要素、およびその動作を示す図である。
図11】本開示の1つまたは複数の例による、コンソールが動作するHMDシステムのブロック図である。
【発明を実施するための形態】
【0008】
図は、本開示の例を例証のためだけに描写する。当業者は、本明細書で説明される本開示の原理、または推奨される利益から逸脱することなく、本明細書で示される構造および方法の代替例が用いられ得ることを、以下の説明から容易に認識するであろう。
【0009】
開示の技法は、人工現実システムを含むか、人工現実システムと共に実装され得る。人工現実は、ユーザへの提示の前に、いくつかの様式で調節された現実の形式であり、例えば、仮想現実(VR:virtual reality)、拡張現実(AR:augmented reality)、複合現実(MR:mixed reality)、ハイブリッド現実、またはそのいくつかの組合せおよび/もしくは派生語を含み得る。人工現実コンテンツは、全面的に生成されたコンテンツ、または、キャプチャされた(例えば、現実世界の)コンテンツと組み合わせて生成されたコンテンツを含み得る。人工現実コンテンツは、ビデオ、オーディオ、触感フィードバック、またはそのいくつかの組合せを含み得、これらのいずれかが、単一チャネルで、または複数チャネル(3次元効果を鑑賞者にもたらすステレオビデオなど)で提示され得る。さらに、いくつかの例では、人工現実は、例えば人工現実でコンテンツを作り出すために使用され、および/またはそうでなければ、人工現実で使用される(例えば、人工現実における活動を実施する)、アプリケーション、製品、アクセサリ、サービス、またはそのいくつかの組合せとも関連付けられ得る。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されたヘッドマウント型ディスプレイ(HMD)、スタンドアロンのHMD、モバイルデバイスもしくはコンピューティングシステム、または、1人もしくは複数の鑑賞者に人工現実コンテンツを提供することができる他のいずれかのハードウェアプラットフォームを含む、様々なプラットフォーム上で実装され得る。
【0010】
環境の様々な特徴を決定するための積層型センサシステムが本明細書で提示され、積層型センサシステムは人工現実システムに統合され得る。積層型センサシステムは、複数の積層型センサ層を含む。複数の積層型センサ層の各センサ層は、固有の信号処理機能を実施するための信号処理層を表し得る。環境から反射された光の強度に関するアナログセンサデータは、積層型センサシステムの最上部にある光検出層によってキャプチャされることが可能である。キャプチャされたアナログセンサデータは、例えば、光検出層の下にあるアナログ-デジタル変換(ADC:analog-to-digital)層を介して、アナログドメインからデジタルドメインに変換されることが可能である。デジタルセンサデータは、次に、ADC層の下にある積層型センサシステムの少なくとも1つの信号処理層に提供されることが可能である。少なくとも1つの信号処理層は、デジタルセンサデータを処理して、環境の1つまたは複数の特徴を決定するはずである。
【0011】
いくつかの例では、複数の積層型センサシステムは、HMDに統合される。積層型センサシステム(例えば、センサデバイス)は、HMDの一部または全部を囲むローカルエリアの奥行き情報を含む、環境の様々な特徴を表すデータをキャプチャし得る。HMDは、HMDを装着したユーザにコンテンツを表示する。HMDは、人工現実システムの一部であり得る。HMDは、電子ディスプレイおよび光学アセンブリをさらに含む。電子ディスプレイは、画像光を放つように構成される。光学アセンブリは、ユーザの目の場所に対応するHMDのアイボックスに画像光を向けるように構成される。画像光は、複数の積層型センサシステムのうちの少なくとも1つによって決定されたローカルエリアの奥行き情報を含み得る。
【0012】
いくつかの他の例では、複数の積層型センサシステムは、NEDを表す眼鏡型プラットフォームに統合されることが可能である。NEDは、人工現実システムの一部であり得る。NEDは、ユーザにメディアを提示する。NEDによって提示されるメディアの例は、1つもしくは複数の画像、ビデオ、オーディオ、またはそのいくつかの組合せを含む。NEDは、電子ディスプレイおよび光学アセンブリをさらに含む。電子ディスプレイは、画像光を放つように構成される。光学アセンブリは、ユーザの目の場所に対応するNEDのアイボックスに画像光を向けるように構成される。画像光は、複数の積層型センサシステムのうちの少なくとも1つによって決定されたローカルエリアの奥行き情報を含み得る。
【0013】
図1Aは、1つまたは複数の例による、HMD100の図である。HMD100は、人工現実システムの一部であり得る。ARシステムおよび/またはMRシステムを表す例において、HMD100の正面102の一部が、可視帯(~380nmから750nmまで)において少なくとも部分的に透明であり、HMD100の正面102とユーザの目との間にあるHMD100の一部が、少なくとも部分的に透明である(例えば、部分的に透明な電子ディスプレイ)。HMD100は、前面剛体105、バンド110、および基準点115を含む。
【0014】
前面剛体105は、1つまたは複数の電子ディスプレイ要素(図1Aに図示せず)、1つまたは複数の統合視標追跡システム(図1Aに図示せず)、慣性計測ユニット(IMU:Inertial Measurement Unit)120、1つまたは複数の位置センサ125、および基準点115を含む。図1Aによって示された実施形態では、位置センサ125は、IMU120の内部にあり、IMU120も位置センサ125も、HMD100のユーザには見えない。IMU120は、位置センサ125のうちの1つまたは複数から受け取られた測定信号に基づいてIMUデータを生成する電子デバイスである。位置センサ125は、HMD100の動きに応答して、1つまたは複数の測定信号を生成する。位置センサ125の例は、1つまたは複数の加速度計、1つまたは複数のジャイロスコープ、1つまたは複数の磁力計、動きを検出する別の適切なタイプのセンサ、IMU120の誤差訂正に使用されるセンサの一種、またはそのいくつかの組合せを含む。位置センサ125は、IMU120の外部にあっても、IMU120の内部にあっても、またはそのいくつかの組合せでもよい。
【0015】
HMD100は、前面剛体105に組み込まれ得るセンサデバイス(カメラ)130の分散型ネットワークを含む。図1Aには示されていないが、少なくとも1つのセンサデバイス130が、バンド110にも組み込まれ得ることに留意されたい。各センサデバイス130は、比較的小型のカメラとして実装され得る。センサデバイス130の分散型ネットワークは、複数の大きい従来のカメラを置き換え得る。いくつかの例では、HMD100に組み込まれた分散型ネットワークの各センサデバイス130は、限定的な所定の解像度の極小チップカメラとして実装され、例えば、各センサデバイス130は、100×100ピクセルのアレイまたは200×200ピクセルのアレイを含み得る。いくつかの例では、分散型ネットワークにおける各センサデバイス130は、HMD100に統合された他のいずれかのセンサデバイス130の視野と重複しない視野を有する。これは、周辺エリアからの大量の重複データのキャプチャを引き起こし得る大きい従来のカメラの重複する視野とは、対照的である。HMD100は、各センサデバイス130に関連付けられた撮像開口部も含み得る(図1Aに図示せず)。センサデバイス130は、周辺エリアから反射された光を、撮像開口部を通じてキャプチャし得る。
【0016】
センサデバイス130の分散型ネットワークにおける各センサデバイス130が、HMD100に組み込まれた中央処理装置(CPU)またはコントローラ135への独自の直接リンク(バス)を有するのは非実用的なはずであることに留意されたい。その代わり、各個々のセンサデバイス130は、拡張可能な様式で共有バス(図1Aに図示せず)を介してコントローラ135に連結され、したがって、HMD100に組み込まれたセンサデバイス130の拡張可能なネットワークを提供し得る。センサデバイス130の拡張可能なネットワークは、冗長システムとしてみなされる可能性がある。一緒に組み合わされると、センサデバイス130は、大きい従来のカメラによって典型的に導入される視野(例えば、180度)より遙かに大きい視野(例えば、360度)をカバーする。センサデバイス130によって取得される視野が広くなると、堅牢性が向上する。
【0017】
HMD100に組み込まれたセンサデバイス130全部を、常に活性化させておく(すなわち、オンにしておく)必要はないことに留意されたい。いくつかの例では、コントローラ135は、例えば特定の状況に基づいて、センサデバイス130の第1のサブセットを動的に活性化させ、センサデバイス130の第2のサブセットを不活性化するように構成される。1つまたは複数の例では、HMD100上で動かす特定のシミュレーションに応じて、コントローラ135は、センサデバイス130の特定の部分を不活性化させ得る。例えば、スキャンするのに好ましい環境の一部を特定した後、特定のセンサデバイス130は活性化されたままであることが可能であり、その一方で、センサデバイス130の分散型ネットワークによって浪費される電力を節約するために、他のセンサデバイス130が不活性化されることが可能である。
【0018】
センサデバイス130、またはセンサデバイス130のグループは、例えば、ある期間内に、1つまたは複数の動く物体、および1つまたは複数の動く物体に関する固有の特徴を追跡することができる。この期間内に取得された動く物体に関する特徴は、次に、例えばコントローラ135からの命令に基づいて、その後の期間内の継続的な追跡のために、別のセンサデバイス130、またはセンサデバイス130の別のグループに渡され得る。例えば、HMD100は、3次元世界におけるユーザ特定および頭部姿勢追跡のための「ランドマーカ」として、シーンで抽出された特徴を使用し得る。ユーザの頭に関連付けられた特徴は、例えば1つのセンサデバイス130によって、ある瞬間に抽出され得る。次の瞬間において、ユーザの頭は動き得、別のセンサデバイス130が活性化され、同じ特徴を特定して頭部追跡を実施し得る。コントローラ135は、動く物体の同じ特徴(例えば、ユーザの頭)を、どの新しいセンサデバイス130がキャプチャする可能性があり得るかを予測するように構成され得る。1つまたは複数の例では、コントローラ135は、IMU120によって取得されたIMUデータを利用して粗い予測を実施し得る。このシナリオでは、追跡される特徴についての情報は、例えば粗い予測に基づいて、1つのセンサデバイス130から別のセンサデバイス130に渡され得る。活性状態のセンサデバイス130の数は、特定の瞬間に実施された特定のタスクに応じて、(例えば、コントローラ135からの命令に基づいて)動的に調節され得る。さらに、1つのセンサデバイス130が、環境の特定の特徴の抽出を実施すること、および、さらに処理し別のセンサデバイス130に渡すために、抽出された特徴データをコントローラ135に提供することを行うことができる。したがって、センサデバイス130の分散型ネットワークにおける各センサデバイス130は、限定的な量のデータを処理し得る。対照的に、HMDシステムに統合された従来のセンサデバイスは、通常、大量のデータの継続的な処理を実施し、これは、より一層電力を消費する。
【0019】
いくつかの例では、HMD100に統合された各センサデバイス130は、特定のタイプの処理のために構成されることが可能である。例えば、少なくとも1つのセンサデバイス130は、例えば尖った角の判定、手の追跡など、環境の様々な特徴を追跡するようにカスタマイズされることが可能である。さらに、各センサデバイス130は、他の特徴を無視しつつ、1つまたは複数の特定のランドマーク特徴を検出するようにカスタマイズされることが可能である。いくつかの例では、各センサデバイス130は、例えば、特徴の座標、および特徴の説明など、特定の特徴についての情報を提供する早期処理を実施することができる。早期処理をサポートするために、図2図5と共により詳細に論じられるように、特定の処理回路がセンサデバイス130に組み込まれ得る。センサデバイス130は、次に、早期処理に基づいて取得されたデータを、例えばコントローラ135に渡し、したがって、センサデバイス130とコントローラ135との間で通信されるデータの量を低減させることができる。このようにして、センサデバイス130とコントローラ135との間の帯域幅要件を保護しつつ、センサデバイス130のフレームレートを増加させることができる。さらに、コントローラ135の電力浪費および処理レイテンシは、センサデバイス130で部分的な処理が実施され、コントローラ135の計算負担が低減され、1つまたは複数のセンサデバイス130に分散されるので、低減されることが可能である。センサデバイス130で実施される部分的かつ早期の処理の別の長所は、コントローラ135の内部メモリ(図1Aに図示せず)への画像フレームの格納のためのメモリ要件の低減を含む。さらに、コントローラ135の電力消費量は、メモリアクセスが少なくなると電力浪費が少なくなるので、低減され得る。
【0020】
1つの実施形態では、センサデバイス130は、例えば、HMD100の一部または全部を囲む環境の最大10個の特徴の抽出用にカスタマイズされた、処理回路に連結された100×100ピクセルのアレイまたは200×200ピクセルのアレイを含むことができる。別の実施形態では、センサデバイス130の処理回路は、例えば、正確な手の追跡を実施するのに要求され得るユーザの手の最大20個の複合的な場所を追跡するように訓練された、ニューラルネットワークとして動作するようにカスタマイズされることが可能である。さらに他の実施形態では、顔の追跡のために、少なくとも1つのセンサデバイス130が用いられることが可能であり、例えば、ユーザの口および顔の動きがキャプチャされることが可能である。この場合、少なくとも1つのセンサデバイス130が、ユーザの顔の特徴の追跡を容易にするために、下の方に向けられることが可能である。
【0021】
HMD100に統合された各センサデバイス130は、このセンサデバイス130のために定義された閾値レベルを上回るレベルの信号対雑音比(SNR:signal-to-noise ratio)を提供し得ることに留意されたい。センサデバイス130が特定のタスク用にカスタマイズされるので、カスタマイズされたセンサデバイス130の感度は、従来のカメラに比べて、改善されることが可能である。センサデバイス130の分散型ネットワークは冗長システムであり、好ましいレベルのSNRをもたらす分散型ネットワークのセンサデバイス130を(例えば、コントローラ135によって)選択することができることにも留意されたい。このようにして、センサデバイス130の分散型ネットワークの正確さおよび堅牢性の追跡が、大いに改善されることが可能である。また、各センサデバイス130は、例えば赤外線および/または可視スペクトルなど、拡張された波長範囲で動作するように構成され得る。
【0022】
いくつかの例では、センサデバイス130は、シリコンベースのフォトダイオードのアレイを含む光検出層を含む。代替の例では、センサデバイス130の光検出層は、改善された感度および波長範囲をもたらし得る、シリコンベースでない材料および技術を使用して実装されることが可能である。1つの実施形態では、センサデバイス130の光検出層は、1000nmより長い波長を有する光をキャプチャするのに適した、有機フォトニックフィルム(OPF:organic photonic film)光検知材料がベースである。別の実施形態では、センサデバイス130の光検出層は、量子ドット(QD:Quantum Dot)光検知材料がベースである。QDベースのセンサデバイス130は、例えば、低い可視性の(例えば、夜間の)屋外環境に関連したARシステムおよびアプリケーションへの統合に適したものであり得る。したがって、例えばおよそ1μmから2.5μmまでの長波長非可視範囲の、すなわち、短波長赤外線範囲の、利用可能な環境光が主としてある。最適化されたQDフィルムをベースとして実装されたセンサデバイス130の光検出層は、可視光および短波長赤外光の両方を検出することができ、その一方で、シリコンベースのフィルムは、およそ1.1μm周辺の光の波長にだけ高感度であり得る。
【0023】
いくつかの例では、前面剛体105に組み込まれ、分散型センサネットワークのセンサデバイス130に連結されたコントローラ135は、センサデバイス130からのキャプチャされた情報を組み合わせるように構成される。コントローラ135は、異なるセンサデバイス130によって収集された異なる特徴に関連付けられたデータを正しく統合するように構成され得る。いくつかの例では、コントローラ135は、センサデバイス130のうちの1つまたは複数によってキャプチャされたデータに基づいて、HMD100の一部または全部を囲むローカルエリアにおける1つまたは複数の物体の奥行き情報を決定する。
【0024】
図1Bは、1つまたは複数の例による、図1Aに示されたHMD100の前面剛体105の横断面150である。前面剛体105は、センサデバイス130、センサデバイス130に連結されたコントローラ135、電子ディスプレイ155、および光学アセンブリ160を含む。電子ディスプレイ155および光学アセンブリ160は共に、画像光をアイボックス165に提供する。アイボックス165は、ユーザの目170によって占有される空間の領域である。例証のために、図1Bは、単一の目170に関連付けられた横断面150を示すが、光学アセンブリ160とは別個の別の光学アセンブリ160が、変化した画像光をユーザの別の目に提供する。
【0025】
電子ディスプレイ155は、光学アセンブリ160の方に画像光を放つ。様々な例において、電子ディスプレイ155は、単一の電子ディスプレイまたは複数の電子ディスプレイ(例えば、ユーザのそれぞれの目のためのディスプレイ)を備え得る。電子ディスプレイ155の例は、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、無機発光ダイオード(ILED)ディスプレイ、アクティブマトリックス有機発光ダイオード(AMOLED)ディスプレイ、透明有機発光ダイオード(TOLED)ディスプレイ、いくつかの他のディスプレイ、プロジェクタ、またはそのいくつかの組合せを含む。電子ディスプレイ155は、開口部、フレネルレンズ、凸レンズ、凹レンズ、回折素子、導波路、フィルタ、偏光子、ディフューザ、ファイバテーパ、反射面、偏光反射面、または、電子ディスプレイ155から放たれた画像光に影響を及ぼす他のいずれかの適切な光学素子も含み得る。いくつかの例では、電子ディスプレイ155は、反射防止コーティングなどの、1つまたは複数のコーティングを有し得る。
【0026】
光学アセンブリ160は、電子ディスプレイ155から放たれた画像光を受け取り、画像光を、ユーザの目170のアイボックス165に向ける。光学アセンブリ160は、また、受け取られた画像光を拡大し、画像光に関連付けられた光学収差を補正し、補正された画像光が、HMD100のユーザに提示される。いくつかの例では、光学アセンブリ160は、電子ディスプレイ155から放たれた画像光のビームをコリメートするためのコリメーション要素(レンズ)を含む。光学アセンブリ160の少なくとも1つの光学素子は、開口部、フレネルレンズ、屈折レンズ、反射面、回折素子、導波路、フィルタ、または、電子ディスプレイ155から放たれた画像光に影響を及ぼす他のいずれかの適切な光学素子であり得る。その上、光学アセンブリ160は、異なる光学素子の組合せを含み得る。いくつかの例では、光学アセンブリ160の光学素子のうちの1つまたは複数が、反射防止コーティング、ダイクロイックコーティングなどの、1つまたは複数のコーティングを有し得る。光学アセンブリ160による画像光の拡大は、電子ディスプレイ155の要素が物理的により小さくなること、重量が減ること、およびより大きいディスプレイより電力を消費しなくなることを可能にする。さらに、拡大は、表示されたメディアの視野を広くし得る。例えば、表示されたメディアの視野は、ユーザの視野のほぼ全て(例えば、110度の対角線)、および場合によっては全てを使用して、表示されたメディアが提示されるようなものである。いくつかの例では、光学アセンブリ160は、その有効焦点距離が、電子ディスプレイ155の間隔より大きく、電子ディスプレイ155によって投影された画像光を拡大するように、設計される。さらに、いくつかの例では、拡大の量は、光学素子を追加または除去することによって、調節され得る。
【0027】
いくつかの例では、前面剛体105は、ユーザの目170の視標追跡情報を決定する視標追跡システム(図1Bに図示せず)をさらに備える。決定された視標追跡情報は、アイボックス165におけるユーザの目170の位置(向きを含む)についての情報、すなわち、視線の角度についての情報を含み得る。1つの実施形態では、視標追跡システムは、ストラクチャードライトでユーザの目170を照らす。視標追跡システムは、ユーザの目の表面から反射され、視標追跡システムのカメラによってキャプチャされた、ストラクチャードライトのパターンの変形に基づいて、ユーザの目170の位置を決定することができる。別の実施形態では、視標追跡システムは、複数の瞬間にわたってキャプチャされた画像光の光度に基づいて、ユーザの目170の位置を決定する。
【0028】
いくつかの例では、前面剛体105は、可変焦点モジュール(図1Bに図示せず)をさらに備える。可変焦点モジュールは、視標追跡システムから取得された視標追跡情報に基づいて、電子ディスプレイ155に表示された1つまたは複数の画像の焦点を調節し得る。1つの実施形態では、可変焦点モジュールは、表示された画像の焦点を調節し、決定された視標追跡情報に基づいて光学アセンブリ160の焦点距離を調節することによって、輻輳調節矛盾を軽減する。他の実施形態では、可変焦点モジュールは、決定された視標追跡情報に基づいて、1つまたは複数の画像の中心窩レンダリング(foveated rendering)を実施することによって、表示された画像の焦点を調節する。
【0029】
図2は、1つまたは複数の例による、複数の積層型センサ層を含むセンサアセンブリ200の断面図である。センサアセンブリ200は、図1AのHMD100のセンサデバイス130の実施形態であり得る。いくつかの例では、センサアセンブリ200は、互いの最上部にスタックされたシリコンの複数の層を含む。代替例では、センサアセンブリ200の複数の積層型センサ層のうちの少なくとも1つの層が、非シリコン光検出材料をベースとして実装される。センサアセンブリ200の最上部のセンサ層は、光検出用にカスタマイズされ得、光検出層205と呼ばれることが可能である。光検出層205は、ピクセル210の2次元アレイを備え得る。光検出層205の各ピクセル210は、光検出層205の下の、センサアセンブリ200内にある処理層220の処理回路215と、例えば銅接合(図2に図示せず)を介して、直接的に連結され得る。
【0030】
図2に示されるような複数のセンサ層(ウエハ)のスタッキングは、ピクセル解像度毎に、光検出層205と処理層220との間の銅接合を可能にする。2つのウエハを向かい合わせて置くことによって、センサアセンブリ200の1つのウエハからセンサアセンブリ200の別のウエハへの銅パッド接続は、ピクセルレベル毎に行われることが可能であり、すなわち、単一のピクセルに対応する電気信号225が、光検出層205から、処理層220の処理回路215に送られることが可能である。1つまたは複数の例では、処理層220と、センサアセンブリ200の複数の積層構造における少なくとも1つの他の層との間の相互接続が、例えば「シリコン貫通電極」(TSV:through silicon via)技術を使用して、実現されることが可能である。TSVの幾何学サイズ(例えば、およそ10μm)により、処理層220と、センサアセンブリ200の少なくとも1つの他の層との間の相互接続は、ピクセルレベルにおけるものではなく、依然として非常に高密度なものであることが可能である。いくつかの例では、1マイクロメートル以下の同様のピッチの、より小型化されたTSV(例えば、マイクロTSV)は、より細かい3次元接続を可能にするために、処理層220と、層と、センサアセンブリ200の少なくとも1つの他の層との間でも使用されることが可能である。
【0031】
いくつかの例では、ウエハスケーリングを採用することによって、小型のセンサアセンブリ200が効率的に実装されることが可能である。例えば、光検出層205のウエハは、例えば45nmプロセス技術を使用して、実装されることが可能であり、その一方で、処理層220のウエハは、例えば28nm以下のプロセス技術など、より先進的なプロセス技術を使用して実装されることが可能である。28nmプロセス技術のトランジスタは、非常に小さい面積を占有するので、多くのトランジスタが、処理層220の小さい面積に適合されることが可能である。例証的実施形態では、センサアセンブリ200は、およそ10mWの電力浪費を有する1mm×1mm×1mmの立方体として実装されることが可能である。比較として、従来のセンサ(カメラ)は、光検出ピクセルアレイ、および単一のシリコン層に実装された処理回路を備え、全センサ面積は、全ての機能ブロックの面積の合計として決定される。図2に示された実施形態におけるような垂直スタッキングの恩恵がない場合、従来のセンサは、センサアセンブリ200より遙かに大きい面積を占有する。
【0032】
図3Aは、1つまたは複数の例による、複数の積層型センサ層を備えるセンサアセンブリ300の詳細な図である。センサアセンブリ300は、図1Aのセンサデバイス130の実施形態、および図2のセンサアセンブリ200の実施形態であり得る。いくつかの例では、光検出層305は、センサアセンブリ300の最上部に位置付けられ得、例えばフォトダイオードの2次元アレイなどの、ピクセル310のアレイを備え得る。センサアセンブリ300の処理回路が、光検出層305の下の他の層に統合されることが可能なので、光検出層305は、光検出のためだけにカスタマイズされることが可能である。したがって、光検出層305の面積は、比較的小さいことが可能であり、光検出層305は、限定的な量の電力を浪費し得る。いくつかの例では、アナログ信号(例えば、光検出層305によってキャプチャされた光の強度)の、デジタルデータへの変換用にカスタマイズされたADC層315は、光検出層305の直下に置かれ得る。ADC層315は、(例えば、その処理回路またはADCロジックによって、詳細は図3に図示せず)光検出層305のピクセル310によってキャプチャされた光の強度のアナログ値を、例えば画像フレームデータに対応するデジタル値に、変換するように構成され得る。ADC層315は、変換後に取得されたデジタル値を格納するためのメモリ(図3に図示せず)も含み得る。
【0033】
いくつかの例では、特徴抽出用にカスタマイズされた処理回路を含む特徴抽出層320が、ADC層315の直下に置かれ得る。特徴抽出層320は、例えばADC層315によって生成されたデジタルセンサデータを格納するための、メモリも含み得る。特徴抽出層320は、ADC層315から取得されたデジタルセンサデータから1つまたは複数の特徴を抽出するように構成され得る。特徴抽出層320は、特定の特徴を抽出するようにカスタマイズされるので、特徴抽出層320は、小さい面積サイズを占有し、限定的な量の電力を浪費するように効率的に設計され得る。特徴抽出層320についてのさらなる詳細が、図4と共に提供される。
【0034】
いくつかの例では、畳み込みニューラルネットワーク(CNN)層325が、特徴抽出層320の直下に、または特徴抽出の処理回路と同じ層に置かれ得る。CNN層325のニューラルネットワークロジックは、例えば、特定の特徴、または特徴抽出層320によって取得された特徴のセットについての情報を伴うデータなど、特定の入力データ用に訓練および最適化され得る。入力データは完全に予想されるので、CNN層325のニューラルネットワークロジックは、特定のタイプの特徴抽出データ用に効率的に実装およびカスタマイズされ、処理レイテンシが低減され、電力浪費が少なくなり得る。
【0035】
いくつかの例では、CNN層325は、画像分類および認識用途を実施するように設計される。CNN層325のニューラルネットワークロジックの訓練は、オフラインで実施され得、CNN層325のニューラルネットワークロジックのネットワーク重みは、画像分類および認識のためにCNN層325を利用する前に訓練され得る。1つまたは複数の例では、CNN層325は、推論を実施するため、すなわち、訓練済みのネットワーク重みを入力画像に適用して、例えば画像分類子などの、出力を決定するために、実装される。一般的なCNNアーキテクチャを設計するのとは対照的に、CNN層325は、カスタムおよび専用ニューラルネットワークとして実装され得、好ましいレベルの電力浪費、面積サイズ、および効率性(計算スピード)のために設計されることが可能である。
【0036】
図3Bは、CNN層325に実装可能なCNN326の実例のアーキテクチャを示す。CNN326は、(1)畳み込み、(2)非線形関数(例えば、ReLU)、(3)プーリングまたはサブサンプリング、および(4)分類(完全接続層)という、4つの主な演算を含み得る。これらの演算は、あらゆる畳み込みニューラルネットワークの基本的なビルディングブロックであり得る。異なるCNNが、これらの4つの主な演算の異なる組合せを有し得る。
【0037】
入力画像327aなどの、分類されることになる画像は、ピクセル値の行列で表され得る。入力画像327aは、複数のチャネルを含み得、各チャネルは、画像の特定の構成要素を表す。例えば、デジタルカメラからの画像は、赤チャネル、緑チャネル、および青チャネルを有し得る。各チャネルは、0から255までの範囲(すなわち、8ビット)のピクセル値を有するピクセルの2D行列で表され得る。グレースケール画像は、ただ1つのチャネルを有し得る。以下の説明では、CNN326を使用した単一の画像チャネルの処理が説明される。他のチャネルが、同様に処理され得る。
【0038】
図3Bに示されているように、入力画像327aは、(図3Bに[W0]とラベル付けされた)第1の重みアレイを使用して、第1の畳み込み層328aによって処理され得る。第1の畳み込み層326aは、複数のノードを含み得、各ノードは、入力画像327aのピクセルを第1の重みアレイの重みで乗算させるために割り当てられる。畳み込み演算の一部として、入力画像327aのピクセルのブロックが第1の重みアレイで乗算され、合計を生成することが可能である。次に、出力を生成するために、各合計が非線形活性化関数(例えば、ReLU、ソフトウェアマックスなど)で処理され、出力は、出力行列327bを形成することができる。第1の重みアレイは、例えば、入力画像327aから特定の基本特徴(例えば、エッジなど)を抽出するために、使用されることが可能であり、出力行列327bは、基本特徴マップとして、基本特徴の分布を表すことができる。出力行列(または特徴マップ)327bは、プーリング層328bに渡され得、ここで、行列327cを生成するために、プーリング層328bによって、出力行列327bがサブサンプリングまたはダウンサンプリングされ得る。
【0039】
行列327cは、図3Bに[W]とラベル付けされた)第2の重みアレイを使用して、第2の畳み込み層328cによって処理され得る。第2の重みアレイは、例えば、行列327cから、手などの、物体に固有の特徴のパターンを識別するために、使用されることが可能である。畳み込み演算の一部として、合計を生成するために、行列327cのピクセルのブロックが第2の重みアレイで乗算されることが可能である。各合計は、次に、出力を生成するために非線形活性化関数(例えば、ReLU、ソフトマックスなど)で処理され、出力は、出力行列327dを形成することができる。非線形活性化関数(例えば、ReLU)は、第1の畳み込み層328aにおけるように、第2の畳み込み層328cによっても実施され得る。第2の畳み込み層328cからの出力行列327c(または特徴マップ)は、手を表す特徴の分布を表し得る。出力行列327dは、プーリング層328dに渡され得、ここで、行列327eを生成するために、出力行列327dがサブサンプリングまたはダウンサンプリングされ得る。
【0040】
行列327eは、次に、多層パーセプトロン(MLP)を含むことができる完全接続層328eを通じて渡されることが可能である。完全接続層328eは、(例えば、画像327aの物体が手を表すかどうかを分類するために)行列327eに基づいて分類演算を実施することができる。完全接続層328eは、また、(図3Bに[W]とラベル付けされた)第3の重みアレイで行列327eを乗算して合計を生成することができ、合計は、また、分類出力327fを生成するために、活性化関数(例えば、ReLu、ソフトマックスなど)で処理されることが可能である。
【0041】
CNN326は、様々な技法を使用して、CNN層325に実装されることが可能である。例えば、下記で説明されるように、CNN326は、インメモリコンピュートでサポートされる機械学習ハードウェアアクセラレータに実装されることが可能である。インメモリコンピュートは、例えば、行列転置、再形成などを実施するために、メモリでリード/ライト動作を実施することを含むことができる。いくつかの例では、インメモリコンピュートは、図5で説明されるような、メモリスタのアレイによって実施可能な行列乗算を含むことができる。
【0042】
いくつかの例では、特定の処理タスク用にカスタマイズされたセンサアセンブリ300の各センサ層305、315、320、325は、シリコンベースの技術を使用して実装されることが可能である。代替として、センサ層305、315、320、325のうちの少なくとも1つが、例えば、OPF光検出材料および/またはQD光検出材料などの、非シリコン光検出材料に基づいて実装され得る。いくつかの例では、フォトダイオードをベースとするピクセル310のアレイを含むシリコンベースの光検出層305の代わりに、非シリコン光検出層330が、センサアセンブリ300の最上部に置かれることが可能である。1つの実施形態では、非シリコン光検出層330は、QD光検出材料の光検出層として実装され、QD光検出層と呼ばれることが可能である。いくつかの例では、非シリコン光検出層330は、OPF光検出材料の光検出層として実装され、OPF光検出層と呼ばれることが可能である。いくつかの例では、例えば、少なくとも1つのシリコンベースの光検出層305、および少なくとも1つの非シリコンベースの光検出層330など、2つ以上の光検出層が、センサアセンブリ300において光検出のために使用されることが可能である。
【0043】
いくつかの例では、光検出層305とADC層315との間の層間連結のために、直接銅接合が使用されることが可能である。図3Aに示されているように、光検出層305のピクセル310と、ADC層315の処理回路(ADCロジック)との間のインターフェースとして、銅パッド335が使用され得る。例えば、光検出層305が20Mピクセルカメラとして実装される場合、最大およそ20メガの銅パッド接続335が、光検出層305と、ADC層315の処理回路との間に実装され得る。光検出層305のピッチは、例えば、およそ1μmから2μmまでなど、比較的小さくなり得ることに留意されたい。
【0044】
いくつかの例では、論じられるように、光検出層305の下のセンサアセンブリ300にあるセンサ層の間の相互接続は、例えばTSV技術を使用して、実現されることが可能である。図3Aを再び参照すると、TSVインターフェース340は、並列TSVおよび/またはマイクロTSVを含むことができ、ADC層315のADCロジック/メモリを、特徴抽出層320の特徴抽出ロジックと相互接続し得る。TSVインターフェース340は、ADC層315によって取得されたデジタルセンサデータを、1つまたは複数の固有の特徴の抽出のために、特徴抽出層320に提供し得、デジタルセンサデータは、光検出層305によってキャプチャされた画像データに関するものであり得る。同様に、特徴抽出層320の特徴抽出ロジックを、CNN層325のニューラルネットワークロジックと相互接続するために、別のTSVインターフェース345が使用され得る。TSVインターフェース345は、例えば画像分類および/または認識のために、特徴抽出層320の特徴抽出ロジックによって取得された特徴抽出データを、CNN層325のニューラルネットワークロジックへの入力として提供し得る。
【0045】
いくつかの例では、光学アセンブリ350は、シリコンベースの光検出層305(または非シリコンベースの光検出層330)の最上部に位置付けられ得る。光学アセンブリ350は、センサアセンブリ300を囲むローカルエリアの1つまたは複数の物体から反射された光の少なくとも一部分を、シリコンベースの光検出層305のピクセル310(または非シリコンベースの光検出層330のセンサ素子)に向けるように構成され得る。いくつかの例では、光学アセンブリ350は、シリコンベースの光検出層305(または非シリコンベースの光検出層330)の最上部にウエハの1つまたは複数の層(図3Aに図示せず)をスタックすることによって実装されることが可能である。光学アセンブリ350の各ウエハは、ガラスウエハとして実装され得、光学アセンブリ350の個々のレンズ要素を表す。1つまたは複数の例では、光学アセンブリ350の個々のレンズ要素の反射面として機能するように、ガラスウエハの上面および/または底面に、ポリマーベースの材料が成形されることが可能である。この技術は、ウエハレベル光学系と呼ばれることが可能である。さらに、隣接したガラス層の間の空間を調節するために、光学アセンブリ350の隣接したガラスウエハ(層)のペアの間に、スペーサ(図3に図示せず)が含まれることが可能である。
【0046】
いくつかの例では、光学アセンブリ350の全てのガラスウエハ、およびセンサ層305、315、320、325の全てのシリコンウエハが一緒に製造およびスタックされることが可能であり、その後、センサアセンブリ300の1つの具体例を得るために、各個々のセンサ-レンズユニットがウエハスタックからさいの目に切られる。製造が終了すると、ウエハスタックから得られた各立方体は、例えば、図3のセンサアセンブリ300などの、完全な十分機能的なカメラになる。センサアセンブリ300は、閾値体積より小さい所定の体積サイズの立方体としてセンサアセンブリ300を実装するのを容易にする、センサ層305、315、320、325用のプラスチックハウジングを全く必要としないことを理解されたい。
【0047】
いくつかの例では、非シリコンベースの光検出層330(例えば、QD光検出層またはOPF光検出層)がセンサアセンブリ300の一部であるとき、非シリコンベースの光検出層330は、ADC層315に直接連結され得る。非シリコンベースの光検出層330のセンサ素子(ピクセル)と、ADC層315との間の電気接続は、銅パッドとして作られてもよい。この場合、非シリコンベースの光検出層330は、他のセンサ層315、320、325全てがスタックされた後、ADC層315の上に堆積されることが可能である。非シリコンベースの光検出層330がADC層315の上に堆積された後、光学アセンブリ350が、非シリコンベースの光検出層330の最上部に適用される。
【0048】
図4は、1つまたは複数の例による、積層型センサアセンブリにおける連結されたセンサ層の実例のセンサアーキテクチャ400である。センサアーキテクチャ400は、例えばTSVインターフェースを介して、特徴抽出回路410に連結されたセンサ回路405を含み得る。センサアーキテクチャ400は、図3のセンサアセンブリ300の少なくとも2つのセンサ層の一部として実装され得る。いくつかの例では、センサ回路405は、光検出層305およびADC層315の一部であり得、その一方で、特徴抽出回路410は、特徴抽出層320の一部であり得る。
【0049】
センサ回路405は、センサデータを獲得して事前処理し、その後、例えばTSVインターフェースを介して、獲得されたセンサデータを特徴抽出回路410に提供し得る。センサデータは、例えば、デジタルピクセルのM×Nアレイなど、ピクセルの2次元アレイ415によってキャプチャされた画像に対応し得、ここで、MおよびNは、同じまたは異なる値の整数である。ピクセルの2次元アレイ415は、図3のセンサアセンブリ300の光検出層305の一部であり得ることに留意されたい。さらに、ピクセルの2次元アレイ415は、図3のADC層315の一部であり得る、ADCロジックとのインターフェース(図4に図示せず)をピクセル毎に含み得る。マルチプレクサ425の出力からのピクセルデータ420は、キャプチャされた画像に関するデジタルセンサデータを含み得る。ピクセルデータ420は、ラインバッファ430に格納され、1つまたは複数の固有の特徴の抽出のために、例えばTSVインターフェースを介して、特徴抽出回路410に提供され得る。ローストリーミング出力440を生成するために、マルチプレクサ425から読み込まれた全フレームが、高速モバイルインダストリープロセッサインターフェース(MIPI:Mobile Industry Processor Interface)435を介して出力され得ることに留意されたい。
【0050】
特徴抽出回路410は、ピクセルデータ420によって表されるキャプチャされた画像から1つまたは複数の特徴を決定し得る。図4の例証的実施形態では、特徴抽出回路410は、ドット/特徴/キーポイント(KP:Key Point)/イベントマッピングブロック445、畳み込みエンジン450、重心推定ブロック455、および閾値検出ブロック460を含む。畳み込みエンジン450は、例えば、ガウシアンフィルタ用のフィルタ係数465、1次導関数、2次導関数などの、様々なフィルタ係数(カーネル)465を使用して3×3畳み込みを適用することによって、ラインバッファ430にバッファされたピクセルデータ420を処理し得る。畳み込みエンジン450からのフィルタ処理されたデータは、さらに、閾値検出ブロック460に供給され得、ここで、キャプチャされた画像の特定の主要な特徴またはイベントが、例えばフィルタおよび閾値設定に基づいて、検出されることが可能である。閾値検出ブロック460によって決定された主要な特徴/イベントの場所は、マッピングブロック445に書き込まれ得る。1つまたは複数の主要な特徴/イベントのマップが、例えばホスト(図4に図示せず)にアップロードされ得、主要な特徴/イベントの別のマップも、ホストからマッピングブロック445に書き込まれ得る。1つの実施形態では、センサアーキテクチャ400は、ストラクチャードライト原理に基づくシーンの奥行き情報を測定するために使用されることが可能である。この場合、レーザドット重心が重心推定ブロック455から抽出されることが可能であり、重心は、マッピングブロック445に書き込まれ得る。
【0051】
図4に示されたセンサアーキテクチャ400は、例証的実施形態を表すことを理解されたい。センサ回路405および/または特徴抽出回路410の他の例は、異なるおよび/またはおよび追加の処理ブロックを含み得る。
【0052】
図5は、1つまたは複数の例による、メモリスタのアレイに基づくニューラルネットワーク500の例を示す。ニューラルネットワーク500は、図3Aのセンサアセンブリ300のCNN層325におけるニューラルネットワークロジックの実施形態であり得る。いくつかの例では、ニューラルネットワーク500は、例えば画像分類および/または認識のための、機械学習アルゴリズムに基づく特定の処理のために訓練および利用されるCNN(例えば、図3BのCNN326)を表す。図4の特徴抽出回路410、およびニューラルネットワーク500は、例えば奥行き抽出のための、より多くの従来のコンピュータビジョンアルゴリズムが、特徴抽出回路410に実装されることが可能であるので、インテリジェントセンサシステム(例えば、図3Aのセンサアセンブリ300)において共存できることに留意されたい。
【0053】
いくつかの例では、ニューラルネットワーク500は、ベクトル-行列乗算を実施するのに適したメモリスタクロスバーを有する神経形態学的コンピューティングのために最適化され得る。ニューラルネットワーク500における学習は、ニューラルネットワーク500のクロスバーポイントにおける、コンダクタンスの値G=Gn,m(n=1、2、...、N;m=1、2、…、M)、および抵抗R(例えば、M個の抵抗値rのベクトル)を含むパラメータのセットに応じて表される。オペアンプ502およびその関連付けられた抵抗器rは、出力ドライバ、およびメモリスタ素子の各列の列方向の重み係数としてそれぞれ機能する。
【0054】
いくつかの例では、例えばダイナミックランダムアクセスメモリ(DRAM)から、パラメータをフェッチする代わりに、コンダクタンスおよび抵抗値の形のパラメータが、ニューラルネットワーク500のクロスバーポイントにおいて直接利用可能であり、例えばベクトル-行列乗算中など、計算中に直接使用されることが可能である。図5に示されたメモリスタクロスバーをベースとするニューラルネットワーク500は、二重機能を有することができ、すなわち、ニューラルネットワーク500は、メモリストレージデバイスとして、および計算デバイスとして、用いられることが可能である。ニューラルネットワーク500は、したがって、好ましいレベルの電力浪費、面積サイズ、および計算効率を有する、「コンピュートインメモリ実装形態」と呼ばれることが可能である。ニューラルネットワーク500は、メモリストレージデバイスとCPUの組合せを効率的に置き換えることができ、これは、図3Aのセンサアセンブリ300のCNN層325の一部のように、ニューラルネットワーク500を効率的な実装形態に適したものにする。
【0055】
ニューラルネットワーク500の初期の重みGn,mは、行列入力を表し得る、例えばN行およびM列に編成された値を有する入力505を介して書き込まれることが可能である。1つまたは複数の例では、行列入力505は、畳み込み演算のためのカーネルに対応し得る。いくつかの例では、入力510が、例えば、図3Aのセンサアセンブリ300の光検出層305によってキャプチャされ、ADC層315および特徴抽出層320によって処理された、画像のデジタルピクセル値に対応し得る。入力510は、例えば、N個の電圧値V 、V 、V 、…、V の、ベクトルに編成されたデジタル電圧値Vを含み得る。推論演算中、ベクトル入力510は、行列入力505に適用され得る。出力515は、ベクトル入力510と行列入力505との間の乗算の結果として、すなわち、ベクトル-行列乗算の結果として、取得され得る。図5に示されているように、出力515は、デジタル電圧値のベクトルV、すなわち、M個の電圧値V 、V 、V 、…、V を表し、ここで、V=VGRである。出力ベクトルVは、物体分類などの、推論機能のために使用され得る。
【0056】
いくつかの例では、ニューラルネットワーク500は、例えば特徴抽出層320とCNN層325(すなわち、ニューラルネットワーク500)との間のTSVインターフェース345を介して、図3のセンサアセンブリ300の光検出層305、ADC層315、および特徴抽出層320と効率的にインターフェースされることが可能である。さらに、メモリスタクロスバーをベースとして実装されたニューラルネットワーク500は、データのパラレル-シリアルおよびシリアル-パラレル変換を回避し得、これは、実装形態を簡素化し、処理スピードを向上させる。代替として、ニューラルネットワーク500は、学習される係数の異なるセットを伴う図5のメモリスタクロスバーによって可能にされ得る、画像セグメント化およびセマティック用途のために使用され得る。
【0057】
図6は、1つまたは複数の実施形態による、ホスト-センサ閉ループシステム600の例である。ホスト-センサ閉ループシステム600は、センサシステム605およびホストシステム610を含む。センサシステム605は、図1Aのセンサデバイス130の実施形態、図2のセンサアセンブリ200の実施形態、および/または図3のセンサアセンブリ300の実施形態であることが可能であり、ホストシステム610は、図1Aのコントローラ135の実施形態であることが可能である。いくつかの例では、センサシステム605は、例えば、環境の少なくとも一部分のキャプチャされた画像の、1つまたは複数の主要な特徴を取得し得る。センサシステム605は、例えば1秒あたり10フレームのレートで、完全解像度キーフレーム615として、1つまたは複数の主要な特徴をホストシステム610に最初に提供し得る。処理された1つまたは複数の完全解像度キーフレーム615に基づいて、ホストシステム610は、例えば、次の画像フレームにおける1つまたは複数の主要な特徴の将来の場所を表す、1つまたは複数のキーポイントを予測するように構成され得る。ホストシステム610は、次に、例えば1秒あたり10フレームのレートで、キーポイントマップ620をセンサシステム605に提供し得る。
【0058】
キーポイントマップ620を受け取った後、センサシステム605は、例えば予測される特徴の近傍に対応する、ピクセルの一部分を活性化させ得る。センサシステム605は、次に、ピクセルの活性化部分に関連した光の強度だけをキャプチャおよび処理する。ピクセルの一部分だけを活性化させること、およびピクセルの活性化部分によってキャプチャされた強度値の一部分だけを処理することによって、センサシステム605によって浪費される電力は低減されることが可能である。センサシステム605は、1つまたは複数の主要な特徴の1つまたは複数の更新された場所を導出し得る。センサシステム605は、次に、更新されたキーポイントマップ625が、完全解像度キーフレーム615より少ないデータを含むので、例えば1秒あたり100フレームの向上されたレートの、更新されたキーポイントマップ625として、1つまたは複数の主要な特徴の1つまたは複数の更新された場所をホストシステム610に送り得る。ホストシステム610は、次に、完全解像度キーフレーム615に比べて低減された量のデータを有する、更新されたキーポイントマップ625を処理し得、これは、ホストシステム610で浪費される電力の節約をもたらし、一方で、ホストシステム610における計算レイテンシも減少される。このようにして、センサシステム605およびホストシステム610は、予測的な低密度キャプチャを伴うホスト-センサ閉ループシステム600を形成する。ホスト-センサ閉ループシステム600は、センサシステム605とホストシステム610の両方で節電をもたらし、センサシステム605とホストシステム610との間の通信レートを向上させる。
【0059】
以下では、1)センサシステム605のコンピューティングおよびメモリ電力を低減させること、2)センサシステム605によって生成された画像データのプライバシおよびセキュリティを改善すること、ならびに3)センサシステム605における機械学習システム(例えば、CNN360)をカスタマイズすること、を行うことができる、実例の技法が提供される。
【0060】
コンピューティング/メモリ電力低減
以下では、1)センサシステム605のコンピューティングおよびメモリ電力を低減させること、2)センサシステム605によって生成された画像データのプライバシおよびセキュリティを改善すること、ならびに3)異なるユーザのためにセンサシステム605をカスタマイズすること、を行うことができる、実例の技法が提供される。
【0061】
図7A図7Jは、センサシステム605のコンピューティングおよびメモリ電力を低減させるための、実例の技法および対応するセンサシステム構成要素を示す。図7Aは、センサシステム605の計算構成要素の動作700の実例のシーケンスを示す。図7Aを参照すると、(例えば、Inf_iとInf_i+1との間の)フレーム期間内で、特徴抽出層320の特徴抽出ロジック、およびCNN層325のニューラルネットワークロジックなどの、様々な計算構成要素が、フレーム期間の一部の中でのみオンにされることが可能である。例えば、計算構成要素は、フレーム露出期間中、スリープ状態であることが可能であり、フレーム露出期間が終わった後、ピクセルデータを処理するために、電源を入れられることが可能である。計算動作が完了し、出力(例えば、キー-フレーム615、他の分類出力など)が伝送された後、計算構成要素は、残りのフレーム期間の間、再びスリープ状態に入ることができる。このような配置により、計算構成要素によって消費される電力は低減されることが可能である。
【0062】
図7Bは、図7Bの動作700のシーケンスに従って動作されることが可能な様々な実例の計算構成要素を含む半導体層702を示す。半導体層702は、例えば特徴抽出層320およびCNN層325の、計算構成要素を含むことができる。図7Bに示されているように、半導体層702は、マイクロコントローラ(MCU:microcontroller)704、デジタルシグナルプロセッサ(DSP:digital signal processor)および機械学習(ML)アクセラレータ706(例えば、図3BのCNN326を実装するためのもの)、ならびに入出力システム(I/O)708を含むことができる。DSPおよびMLアクセラレータ706は、特徴抽出回路410の一部として特徴抽出を実施するためのCNN326を実装することができる。DSPおよびMLアクセラレータ706は、特徴抽出動作をサポートするためのメモリを含むことができる。I/O708は、ホストシステム610などの、他の構成要素と通信するための、データシリアライザおよびデータデシリアライザを含むことができる。半導体層702は、第1のメモリ710および第2のメモリ712をさらに含む。第1のメモリ710は、ML係数(例えば、図3Bの重みアレイ[W]、[W]、および[W])、ならびにDSPおよびMLアクセラレータ706における特徴抽出動作をサポートするためのML中間結果を格納することができる。第2のメモリ712の第1の部分は、ADC層315から出力されたピクセルのフレームを格納するためのフレームバッファとして動作することができ、その一方で、第2のメモリ712の第2の部分は、CNN326から出力された活性化関数を格納するための出力データストレージとして動作することができる。いくつかの例では、フレームバッファに格納されたピクセル値は、最上位ビット(MSB:most significant bit)が破損したときの損失情報を回避するために、コード体系に応じてビットスワップされることが可能である。ピクセル値は、信頼性を改善するために、様々なエラー訂正コーディング(ECC)方式を使用してエンコードされることが可能である。
【0063】
図7Bでは、第1のメモリ710、第2のメモリ712、ならびに、DSPおよびMLアクセラレータ706のメモリは、SRAMデバイスを含むことができる。MCU704は、第1のメモリ710に格納されたコードに基づいて、半導体層702の回路構成要素を含む、センサシステム605の様々な回路構成要素を制御/協働させることができる。半導体層702は、半導体層702の様々な回路構成要素間の通信をサポートするためのネットワークオンチップ714をさらに含む。半導体層702の計算回路構成要素は、TSV接続を介して、ADC層315のADCロジックなどの、センサシステム605の他の半導体層の他の構成要素と通信することができる。
【0064】
電力消費量を低減させるために、MCU704は、図7Aの動作700のシーケンスを実施するために、半導体層702の様々な構成要素を制御することができる。例えば、フレーム露出期間が終わった後、MCU704は目覚め、その後、第2のメモリ712、ならびに、DSPおよびMLアクセラレータ706の電源を入れることができる。第1のメモリ710は、電源が入ったままであり、したがって、MCU704は、コードをフェッチおよび実行して、動作のシーケンスを実施することができる。MCU704は、次に、DSPおよびMLアクセラレータ706を制御してCNN360を実行し、フィルタ係数(例えば、[W]、[W]、および[W])を使用して、第2のメモリ712のフレームバッファ部分に格納されたピクセルデータに対する特徴抽出動作を実施し、第2のメモリ712の出力データストレージ部分に出力を格納することができる。特徴抽出動作が完了した後、MCU704は、第2のメモリ712、ならびにDSPおよびMLアクセラレータ706の電源を落とし、スリープ状態に入ることができる。
【0065】
さらに、これらの異なる電力消費挙動に基づいて、メモリシステムによる電力消費量を低減させるため、異なるタイプのデータを格納するための異なるタイプのメモリが使用されることが可能である。具体的には、計算中、不揮発性メモリ(NVM:non-volatile memory)からの読込みは、スタティックランダムアクセスメモリ(SRAM)より遙かに高い電力を使用する恐れがあるが、スリープ状態中、SRAMの維持電力は、NVMの維持電力より遙かに高い。NVMの例は、磁気抵抗性ランダムアクセスメモリ(MRAM:magnetoresistive random access memory)、図5に示されたものなどのメモリスタを含むことができる抵抗性ランダムアクセスメモリ(RRAM)、相変化メモリ(PCM)などを含む。
【0066】
図7Cは、異なるタイプのメモリを含む半導体層702の別の例を示す。具体的には、第1のメモリ710は、通常、フレーム間で変化しないコードおよびML係数などの、比較的静的なデータを格納するために使用され、NVM(例えば、MRAM)を使用して実装される。その一方で、第2のメモリ712は、ニューラルネットワーク層からのピクセルデータおよび活性化関数出力などの動的なデータを格納するために使用され、SRAMを使用して実装される。半導体層702は、第3のメモリ720をさらに含み、第3のメモリ720は、SRAMを使用して実装され、MCU704ならびにDSPおよびMLアクセラレータ706にフェッチされることになるコードおよびML係数のサブセットを格納するためのキャッシュとして使用される。図7Cでは、NVMデバイスの使用により、第1のメモリ710は、コードおよびMLモデル係数を依然として維持しつつ、スリープ状態中に電源を落とされることが可能であり、その一方で、図7Bでは、第1のメモリ710は、コードおよびML係数の喪失を回避するために、スリープ状態中にシャットダウンされない。結果として、図7Cの配置により、スリープ状態中の電力消費量を低減させることになり得る。コードおよびML係数のアクセスを高速化するために、コードおよびML係数のサブセットが、第1のメモリ710より遙かに高速だが小型でもある第3のメモリ720にキャッシュされることが可能であり、キャッシュされたコードおよびML係数は、MCU704、ならびにDSPおよびMLアクセラレータ706がフレーム期間内に異なる動作を実施するとき、変更することができる。第3のメモリ720は、スリープ状態中に電源を切られ、露出期間が終わった後、コードおよびML係数をキャッシュするために、半導体層702の残りの計算構成要素と共に電源を入れられる。
【0067】
図7Dは、半導体層702の別の例、および半導体層722の例を示す。図7Dに示されているように、半導体層702のフレームバッファを提供する第2のメモリ712を有する代わりに、別個のフレームバッファ724が、半導体層722に形成されることが可能である。半導体層722は、ADC層315の一部であること、および光検出層305と半導体層702との間にスタックされることが可能であり、並列TSVおよび/またはマイクロTSVを含むTSVインターフェースなどの、並列層間インターフェース726を介して半導体層702に接続されることが可能である。図7Dの配置は、半導体層702に備え付けられることになるメモリの全体サイズを低減させることができる。さらに、フレームバッファ724と半導体層702との間の並列層間インターフェース726は、特に、ピクセルデータが、I/O708を通じて移動され、シリアライゼーションおよびデシリアライゼーション動作を受ける場合に比べて、フレームバッファ724におけるピクセルデータの高速アクセスを可能にする。フレームバッファ724におけるピクセルデータの高速アクセスは、例えばMCU704による、光検出層305での光検知動作の制御を容易にすることができる。例えば、DSPおよびMLアクセラレータ706によってフレームバッファ724に格納されたピクセルデータを処理した結果に基づいて、MCU704は、関心のある領域(ROI:region of interest)を決定することができ、ROI内のピクセルセルだけが、次のフレームのピクセルデータを生成することを可能にする。MCU704は、露出期間の制御、ビット深度など、光検出層305のピクセルセルによるピクセルデータ生成の様々な態様も制御することができる。
【0068】
図7Eは、半導体層702の別の例、および半導体層722の例を示す。図7Eに示されているように、統合フレームバッファおよびMLアクセラレータ734が、半導体層722に実装されることが可能である。統合フレームバッファおよびMLアクセラレータ734は、特定のインメモリコンピュート能力を提供して、DSPおよびMLアクセラレータ706の作業負荷を低減させるための、SRAMデバイス、およびメモリコントローラを含むことができる。インメモリコンピュート能力の例は、例えば、行列転置および再形成演算を含むことができる。例えば、行列転置/再形成演算の一部として、メモリコントローラは、1次元に沿って(例えば、行に沿って)統合フレームバッファのピクセルデータの読込み動作を実施し、異なる次元に沿って(例えば、列に沿って)ピクセルデータを、DSPおよびMLアクセラレータ706のメモリに格納することができる。いくつかの例では、統合フレームバッファおよびMLアクセラレータ734は、行列乗算を実施してCNN360を実行するための、図5に示されたものなどの、メモリスタのアレイを含むことができる。
【0069】
図7Fは、半導体層702の例の別の例、および半導体層722の例を示す。図7Fに示されているように、統合メモリおよびMLアクセラレータ736は、半導体層702に実装されることが可能である。図7Eにおけるように、統合メモリおよびMLアクセラレータ736は、特定のインメモリコンピュート能力を提供して、DSPおよびMLアクセラレータ706の作業負荷を低減させるための、SRAMデバイス、およびメモリコントローラを含むことができる。例えば、行列転置/再形成演算の一部として、メモリコントローラは、1次元に沿って(例えば、行に沿って)統合フレームバッファのピクセルデータの読込み動作を実施し、異なる次元に沿って(例えば、列に沿って)ピクセルデータを、DSPおよびMLアクセラレータ706のメモリに格納することができる。いくつかの例では、統合メモリおよびMLアクセラレータ736は、行列乗算を実施してCNN360を実行するための、図5に示されたものなどの、メモリスタのアレイを含むことができる。
【0070】
図7Gは、センサシステム605の計算およびメモリ構成要素による電力消費量を低減させるための追加の技法を示す。図7Gの左上に示されているように、重み行列740は、図3Bの畳み込み演算において入力データとの乗算のために使用されることが可能であり、典型的には、多くのエントリがゼロの、低密度行列を含む。マッピングテーブル(図7Gに図示せず)を通じて、低密度重み行列740の各エントリは、メモリ742の特定のアドレスに格納されることが可能である。
【0071】
低密度重み行列740の格納に伴うメモリおよび計算電力を低減させるために、様々な技法が使用されることが可能である。図7Gの右上に示されているように、低密度重み行列740のゼロおよび非ゼロのエントリは、異なる数のビットを使用して、異なる形式でメモリ742に格納されることが可能であり、メモリ742は、半導体層702のメモリ710および720の一部であることが可能である。具体的には、各エントリは、エントリが非ゼロであるかどうかを示すフラグビットで表すことができ、エントリが非ゼロの場合、複数のビットが非ゼロのエントリ値を表す。例えば、メモリ742は、非ゼロのエントリ744をアドレス0(addr0)に格納し得、非ゼロのエントリ744は、ゼロのフラグビット746(非ゼロのエントリを示す)を含み、データビット748は、非ゼロのエントリ値を表す。複数のビットは、追加のエンコードのない、非ゼロのエントリ値のそのままのバイナリ表現であることが可能である。さらに、メモリ742は、他のビットがない、アサートされたフラグビットによって表されたアドレス1(addr1)にも、ゼロのエントリ750を格納し得る。メモリ742は、他のビットがない、別のアサートされたフラグビットで表されたアドレス2(addr2)にも、ゼロのエントリ752を格納し得る。別の例では、メモリ742は、異なる電圧を使用して、ゼロおよび非ゼロのエントリを表すこともできる。例えば、ゼロのエントリのために、メモリ742は、第1の電圧でビットを格納することができ、その一方で、非ゼロのエントリのために、メモリ742は、第2の電圧でエントリの非ゼロのビットを、また、第1の電圧とは異なる第3の電圧でエントリのゼロのビットを、格納することができる。ゼロおよび非ゼロのエントリが、異なる数のビットおよび/または電圧範囲で表されるこれらの配置を用いると、低密度重み行列740を格納するのに必要なメモリ742の全体サイズ、およびメモリ742の電力消費量が、低減されることが可能である。このような配置は、典型的なエンコードおよびデコード動作関連のデータ圧縮を回避することもでき、これは、メモリ742における低密度重み行列740の格納および検索を高速化することができる。
【0072】
異なるビット長/電圧を使用してゼロおよび非ゼロのエントリを表すことに加えて、メモリ742と、DSPおよびMLアクセラレータ706との間の低密度重み行列740の伝送に伴う電力をさらに低減させるために、他の技法が使用されることが可能である。例えば、図7Gに示されているように、メモリコントローラ754は、フラグビット746、750、および752、ならびにデータビット748をメモリ742から読み出し、フラグビットおよびデータビットをDSPおよびMLアクセラレータ706に出力することができる。非ゼロのエントリおよびゼロのエントリが、低減された数のビットを使用して伝送されるので、伝送電力は低減されることが可能である。いくつかの例では、メモリコントローラ754は、例えば、アサートされたフラグビット、第1の電圧で表されたビットなどを検出することに基づいて、ゼロのエントリを検出し、ゼロのエントリの伝送をスキップして伝送電力をさらに低減させることができる。
【0073】
さらに、DSPおよびMLアクセラレータ706は、低密度重み行列740で計算を実施する際の計算電力を低減させるための技法を実装し得る。例えば、図7Gに示されているように、DSPおよびMLアクセラレータ706は、算術回路760、ゼロスキップ回路762、およびマルチプレクサ(MUX:multiplexor)764を含むことができる。算術回路760は、低密度重み行列740の非ゼロのエントリによる算術演算(例えば、乗算演算)を実施して、出力766を生成することができ、その一方で、ゼロスキップ回路762は、低密度重み行列740のゼロのエントリによる算術演算をスキップし、ゼロ出力768を生成することができる。MUX764は、出力766またはゼロ出力768のうちの1つを出力として選択することができる。このような配置を用いると、算術演算の数は、ゼロのエントリを伴う算術演算がスキップされるので、低減されることが可能であり、結果として、低密度重み行列740による計算に伴う計算電力が低減されることが可能である。
【0074】
特徴抽出を実施するためにMLアクセラレータを提供することに加えて、組み込みマッチング、層事前処理、および奥行き方向畳み込み層など、センサシステム605の制御を容易にするために、インメモリコンピュートが、他の画像処理能力を提供することもできる。
【0075】
具体的には、インメモリコンピュートは、インメモリコンピュートによって提供され、最も近いマッチを探索するための、ベクトルデータベースにおいて、入力ベクトルと基準ベクトルとの間の距離を計算することなどの、組み込みマッチング機能を提供することができる。マッチングは、同時位置決め地図作成(SLAM)、文/画像インフラストラクチャサービスなどの様々な用途をサポートするために、入力ベクトルの類似点サーチを実施して、CNNによって提供された特徴抽出能力の拡大または置換えを実施するために使用されることが可能である。計算される距離は、L0距離、L1距離、L2距離などの距離であることが可能である。
【0076】
図7Hは、組み込みマッチングのためにインメモリコンピュート能力を提供することができる実例のメモリシステム770を示す。メモリシステム770は、ビットセル772および774などの、ビットセルのアレイを含むことができる。ビットセル772は、ビットセル772a、772b、772c、および772dを含み、基準ベクトルの最上位ビット(MSB)を格納するためのMSBセルとして構成される。その上、ビットセル774は、ビットセル774aおよび774bを含み、基準ベクトルの最下位ビット(LSB:least significant bit)を格納するためのLSBセルとして構成される。メモリシステム770では、同じMSBを有する基準ベクトルは、MSBセルおよびLSBセルの複数の列を含むビットセルの列に格納されることが可能である。
【0077】
MSBビットセル772(例えば、MSBビットセル772a)およびLSBビットセル774(例えば、LSBビットセル774a)の実例の構造が図7Iに示されている。図7H図7Iの両方を参照すると、MSBビットセル772aのslおよびsl_bar信号は、サーチデータ線776の列に接続され、その一方で、MSBビットセル772aのml信号は、出力の行のデータ線778に接続される。さらに、LSBビットセル774aのsl信号は、選択制御線780の列に接続され、その一方で、cl_0およびcl_1信号は、出力の行のデータ線778に接続される。メモリシステム770は、行方向コンピューティング/マッチングロジック782、行周辺機器784、列周辺機器786、およびコントローラ788をさらに含む。
【0078】
入力ベクトルのための距離計算/類似点サーチ演算は、コンピューティング/マッチングロジック782、行周辺機器784、および列周辺機器786と一緒に、コントローラ788によって2つのフェーズで実施されることが可能である。第1のフェーズでは、入力にマッチするMSBを有する基準ベクトルを識別するために、サーチが実施されることが可能である。サーチを実施するために、列周辺機器786は、入力ベクトルのMSBに基づいて、サーチデータ線776を駆動することができ、各MSBセルのslおよびsl_bar信号は、基準ベクトルのMSBを格納し、入力ベクトルのMSBによって駆動されることが可能である。ml信号の状態は、(MSBビットセルに格納された)基準ベクトルのMSBと入力ベクトルのMSBとがマッチするかどうかを反映することができる。コントローラ788は、出力データ線778を介してMSBビットセルのml信号の状態を検出し、入力ベクトルと同じMSBを有する基準ベクトルを識別することができる。
【0079】
第2のフェーズでは、基準ベクトルのどれが入力ベクトルと同じMSBを有するかを識別することに基づいて、コントローラ788は、距離/類似点計算を実施するために、マッチする基準ベクトルに属するLSBセルのアサート制御線780をオンにすることができる。行周辺機器784は、入力ベクトルを格納するための、図7Iに示されたLSBセルと同様の構造を有するビットセルを含むことができ、入力ベクトルのLSBを格納するビットセルは、出力の行のデータ線778を介して、cl_0およびcl_1信号を駆動することができる。cl_0およびcl_1信号の駆動は、基準ベクトルLSBと入力ベクトルLSBとを一緒に結びつける効果を有することができ、これは、次に、cl_0およびcl_1信号の状態を変えることができる。cl_0は、入力ベクトルLSBと基準ベクトルLSBとの間の論理AND演算を表すデジタル出力を出力することができ、その一方で、cl_1は、入力ベクトルLSBと基準ベクトルLSBとの間の論理NOR演算を表すデジタル出力を出力することができる。行方向コンピューティング/マッチングロジック782は、例えば、入力ベクトルと基準ベクトルとの間の乗算および/または合計を表すように、論理ANDおよび論理NOR出力を操作することができる。操作結果は、入力ベクトルと基準ベクトルとの間の距離(L0/L1/L2)、または類似度を示すことができる。いくつかの例では、行方向コンピューティング/マッチングロジック782は、1つの行のLSB計算出力の操作を同時に実施し、次に、マッチするMSBが見つかった場合、各行のLSBの計算を順次実施することができる。いくつかの例では、行方向コンピューティング/マッチングロジック782は、各行に対して複製されることが可能であり、その結果、複数の行のLSBの計算は、同時に実施されることが可能である。
【0080】
さらに、インメモリコンピュートは、層事前処理、および奥行き方向畳み込み層をサポートすることができる。例えば、インメモリコンピュートは、カーネルのプログラム可能かつ小さいセットによる、画像フィルタリング、低レベルビジョンなどの、画像に対する事前処理演算をサポートすることができる。さらに、インメモリコンピュートは、奥行き方向畳み込み層をサポートすることができ、奥行き方向畳み込み層では、各入力チャネル(例えば、R、G、およびB)の画像データが、各入力チャネルの即値データを生成するために、対応する入力チャネルのカーネルで畳み込みをとり、1つの出力チャネルの畳み込み出力データに中間データを組み合わせるために、ポイントワイズの畳み込みが続く。
【0081】
図7Jは、層事前処理および奥行き方向畳み込み層をサポートするためにインメモリコンピュート能力を提供することができるメモリシステム790の例を示す。図7Jに示されているように、メモリシステム790は、CBセル792を含む計算ビット(CB:compute bit)セルのアレイを含むことができる。CBセル792は、図7IのLSBビットセル774aと同様の構造を有することができ、例えば、(層事前処理のための)フィルタのデータ、(畳み込みのための)カーネルなどを格納することができ、その一方で、図7Iの実施形態では、列周辺機器786および行周辺機器784は、入力ベクトルをCBセルのアレイに提供することができる。CBセルは、計算データ列の線796、および出力行のデータ線798に接続される。メモリシステム790は、図7Aに関連して上記で説明されたような、行方向コンピューティング/マッチングロジック782、行周辺機器784、列周辺機器786、およびコントローラ788をさらに含む。行方向コンピューティング/マッチングロジック782は、CBセル792の論理ANDおよび論理NOR出力(cl_0およびcl_1出力)を操作して、層事前処理および奥行き方向の畳み込み演算を実施することができる。
【0082】
図8A図8Cは、センサシステム605の計算およびメモリ構成要素による電力消費量を低減させるための追加の技法を示す。図8Aは、実例のスケジュール800を示し、ここでは、DSPおよびMLアクセラレータ706の計算の低密度性を作り出すために、ゲーティングモデルが実装される。ゲーティングモデルは、DSPおよびMLアクセラレータ706によって処理されることになるピクセル値804のサブセットを、フレーム802のピクセル値から選択することができ、その一方で、フレームの残りのピクセル値は処理されない。ピクセル値が、異なるチャネル(例えば、赤、緑、青、および赤外線チャネル)に関連付けられる場合、異なるゲーティングモデルによる処理のために、ピクセル値の異なるサブセットが選択されることが可能である。ゲーティングモデルは、統計解析、訓練などの、様々なソースから生成されることが可能である。ゲーティングモデルは、次に、動的かつデータ依存であると考えられることになる。いくつかの例では、ゲーティングモデルは、DSPおよびMLアクセラレータ706によって実装されるニューラルネットワークの異なる層に計算または入力される、中間表現(例えば、特徴)、中間計算結果などにも、適用されることが可能である。
【0083】
いくつかの例では、ゲーティングモデルは、ユーザ固有モデル806およびベースモデル808を含むことができる。ユーザ固有モデル806は、(例えば、異なるシーンをキャプチャするために使用される同じHMDプラットフォーム上で、異なるユーザによって動作される異なるHMDプラットフォーム上で、など)異なるセンサシステム605の間で異なることが可能であり、その一方で、ベースモデル808は、異なるセンサシステム605の間で共通であることが可能である。例えば、ベースモデル808は、特定の動作条件でシーンにおける関心のあるピクセルの一般的な分布を反映することができ、その一方で、ユーザ固有モデル806は、固有のセンサシステム605によってキャプチャされた、シーンにおけるピクセルの実際の分布を反映することができる。ユーザ固有モデル806は、フレームの各ピクセルの重要性行列810を計算するために、フレーム802のピクセル値に適用されることが可能である。重要性行列810は、例えばフレーム802の関心のある領域を、示すことができる。ベースモデル808は、次に、DSPおよびMLアクセラレータ706に入力されるピクセル値を選択するために、重要性行列810によって示されたフレーム802の関心のある領域に適用されることが可能である。ベースモデル808は、異なるチャネルのためにピクセルの異なるサブセットを選択するための、異なるゲーティング機能を含むことができる。ユーザ固有モデル806とベースモデル808の両方がフレーム間で変化することができ、その結果、ピクセルの異なるサブセットは、(例えば、物体の動きを説明するために)異なるフレームにおいて選択されることが可能である。
【0084】
ユーザ固有モデル806とベースモデル808の両方が、統計解析、訓練などを介して、様々なソースから生成されることが可能である。例えば、異なる動作条件でキャプチャされたフレームのピクセル値の統計解析を通じて、特定の用途の有用な情報を保持する各ピクセルの確率が決定されることが可能であり、モデルは、確率に基づいて決定されることが可能である。別の例として、ユーザ固有モデル806とベースモデル808の両方が、訓練データを使用して訓練され、ピクセルのどのサブセットが、用途の有用な情報を含む可能性があるかについて学習し、これらのピクセルをDSPおよびMLアクセラレータ706に提供することが可能である。
【0085】
図8Aのゲーティング方式は、DSPおよびMLアクセラレータ706への入力からエラーピクセルを除去するために使用されることも可能である。例えば、教師なし学習動作を通じて、ユーザ固有モデル806は、ブラインドピクセル(例えば、完全に暗い、白いなどのピクセル)と通常のピクセル(例えば、完全に暗く/白くないピクセル)とを分類するように訓練されることが可能である。分類に基づいて、ユーザ固有モデル806は、ピクセル822a、822b、822c、および822dがブラインドピクセルであると決定し、DSPおよびMLアクセラレータ706への入力として、これらのピクセルを選択から外すことができる。これらのピクセルは、その後のフレームにおける入力からも除去されることが可能である。
【0086】
さらに、図7A図7Eの第1のメモリ710における重みアレイの更新を低減させるために、CNN360の初期層(例えば、畳み込み層328a)において、固定重みが使用されることが可能である。このような配置は、第1のメモリ710への書込み動作を低減させることができ、このことは、第1のメモリ710の電力消費量を低減させることができる。例えば、エッジ検出を実施するために、図8Cに示されたガボールフィルタアレイ830が、畳み込み層328aにおいて使用されることが可能である。ガボールフィルタアレイは、低い方のビット精度で格納されることが可能である。その上、ガボールフィルタは、効率的なインメモリコンピューティングを可能にし得る向きで等しく間隔を空けられた係数を含むことができる。
【0087】
プライバシおよびデータセキュリティ
プライバシおよびデータセキュリティを改善するために、センサシステム605は、暗号化メカニズムを実行して、フレームバッファに格納されたピクセルデータ、および他の出力(例えば、キーフレーム)を暗号化することができる。暗号化は、乱数に基づくことが可能であり、乱数は、センサシステム605のNVM(例えば、図7Cの第1のメモリ710)を使用して生成されることが可能である。図9は、半導体層702の一部であることが可能な実例の乱数生成システム900を示す。図9に示されているように、パルス回路が、(例えば、図7Cの)第1のメモリ710の一部であることが可能なMRAMデバイスの磁気トンネル接点(MTJ)にパルスを伝送することができ、パルスは、磁気トンネル接点においてスイッチするスピントルクを引き起こすことができる。スイッチアクションは、乱数のシーケンスを生成するために測定されることが可能な、MRAMデバイスの抵抗のランダム変化を引き起こすことができる。乱数のシーケンスを生成するために、他のNVMデバイスが使用されることが可能である。例えば、金属酸化物ベースの抵抗性メモリデバイス内の伝導性フィラメントのランダム形成、破壊、および欠陥構造が、固有の乱数性の第2のソースを提供する。さらに、PCMリセット動作後にメルトクエンチプロセスを介して作り出された非晶相の原子配位の乱数性が、乱数生成のために利用されることが可能である。
【0088】
センサシステムにおけるCNNのカスタマイズ
上記で説明されたように、CNN360は、センサシステム605の制御を容易にするために、特徴抽出を実施するように訓練される。訓練動作は、異なるセンサシステム605用にCNNをカスタマイズするために使用されることが可能である。カスタマイズは、ユーザ固有、用途固有、シーン固有などであることが可能である。
【0089】
図10A図10Cは、CNN360を訓練する様々な技法を示す。図10Aを参照すると、二重の訓練動作が実施されることが可能である。CNNのエクスサイチュ訓練動作1000は、特徴抽出のベースモデルを訓練するために実施されることが可能である。エクスサイチュ訓練動作は、センサシステム605の外部で実施されることが可能である。例えば、エクスサイチュ訓練は、クラウド環境1002で実施されることが可能であり、クラウド環境1002では、教師あり学習動作でラベルを付けられた画像データに基づいて、特定の特徴抽出タスク(例えば、手、頭、他のタイプの物体などを識別するためのタスク)を実施するようにCNN360を訓練するために、クラウド環境1002における複数のワーカマシンで訓練ソフトウェアが実行される。エクスサイチュ訓練動作の結果として、(例えば、第1のメモリ710への)格納のために、異なるモバイルプラットフォーム1006および1008において、図3Bの重みアレイ[W]、[W]、および[W]を含むベースモデルパラメータ1004が生成され、センサシステム605にフェッチされることが可能である。
【0090】
各モバイルプラットフォームにおいて、インサイチュ訓練動作(例えば、インサイチュ訓練動作1010a、1010bなど)が、CNN360をさらにカスタマイズするために実施されることが可能である。カスタマイズは、ユーザ固有(例えば、特定のユーザの手を検出するためのもの)、用途固有、シーン固有(例えば、特定のシーンにおける物体の特定のセットを検出するためのもの)などであることが可能である。インサイチュ訓練動作は、ベースモデルパラメータ1004から、カスタマイズされたモデルパラメータ1014を生成することができ、カスタマイズされたモデルパラメータ1014は、次に、モバイルプラットフォーム1006および1008での特徴抽出動作をサポートするために、第1のメモリ710に格納されることが可能である。
【0091】
インサイチュ訓練動作1010は、教師あり学習動作、教師なし学習動作、および強化学習動作などの、異なるタイプの学習動作を含むことができる。具体的には、教師あり学習動作では、ユーザは、センサシステム605においてCNN360を訓練するために、センサシステム605によってローカルにキャプチャされたラベル付き画像データを提供することができる。教師なし学習動作では、センサシステム605は、ラベル付きでない画像データのピクセル値の間の、(例えば、コサイン距離、ユークリッド距離などに基づく)類似点を決定することによって、ピクセルデータを異なるグループに分類するようにCNN360を訓練することができる。強化学習動作では、センサシステム605は、その時々における環境との相互作用に基づいて、CNN360の重みを学習および調節して、報酬を最大化することができる。報酬は、検出の目標に基づくことが可能である。例えば、目標が、手に対応するピクセルの領域を見つけることである場合、報酬は、フレームの領域内の手の標的特徴を有するピクセルの数によって測定されることが可能である。CNN360の重みは、次に、領域内の手のピクセルの数を増加させるために、異なるフレームに対するその後の強化学習動作において更新されることが可能である。強化学習動作で重みを更新するための規則は、確率的であることが可能である。例えば、CNN360の出力は、報酬を計算するために乱数から生成された閾値と比較されることが可能である。教師なし学習動作と強化学習動作の両方が、バックグラウンドで動くことが可能であり、ユーザ入力を必要としない。
【0092】
インサイチュ訓練動作1010は、異なるユースケース用にカスタマイズされることが可能である。1つの例では、転移学習動作が実施されることが可能であり、転移学習動作では、(エクスサイチュ訓練から取得された)低い方の層の重みが凍結され、上の方の層の重みだけが調節される。例えば、図3Bを参照すると、基本特徴検出を実施するための第1の畳み込み層328aの重み[W0]が凍結されることが可能であり、その一方で、第2の畳み込み層328cの重み[W1]、および完全接続層328eの重み[W2]は、インサイチュ訓練動作によって調節される。別の例として、インサイチュ訓練動作1010は、適合動作も含むことができる。具体的には、エクスサイチュ訓練動作1000から、およびピクセル値のフレームから取得されたベースモデルを使用して、センサシステム605が初期出力を生成することができる。次に、初期出力を適合させるために、適合パラメータのセットが生成されることが可能であり、適合パラメータは、ピクセル値のその後のフレームを処理するために、CNN360の重みに適用されることが可能である。いくつかの例では、インサイチュ訓練動作1010は、1デバイス複数ユーザ体験を可能にするために、モバイルプラットフォームの新しいユーザのために新しいパラメータが学習される一方で、モバイルプラットフォームの既存のユーザのモデルが維持される増分または生涯学習動作の一部であることが可能である。
【0093】
いくつかの例では、エクスサイチュ訓練動作1000およびインサイチュ訓練動作1010が、連合/協調学習方式で実施されることが可能であり、この方式では、ローカルピクセルデータサンプルを維持する複数の非集中化ワーカマシン/プラットフォームにわたってCNN360が訓練され、これらのデータサンプルが交換されることはない。例えば、図10Aでは、インサイチュ訓練動作が完了した後、各モバイルプラットフォームは、カスタマイズされたモデルパラメータ1014をクラウド環境1002に伝送して返すことができ、クラウド環境1002は、カスタマイズされたモデルパラメータ1014を異なるプラットフォーム間で共有することができる。各プラットフォームは、次に、他のプラットフォームから受け取られたパラメータに基づいて、カスタマイズされたモデルパラメータ1014を調節することができる。このような配置を用いて、共通の堅牢なCNN360が、複数のモバイルプラットフォームにわたって構築されることが可能である。その一方で、ピクセルデータはモバイルプラットフォーム間で交換されないので、データプライバシ、データセキュリティ、データアクセス権などの重要な問題に対処することができる。
【0094】
いくつかの例では、強化学習および教師なし学習動作は、図5に示されたものなどの、メモリスタのアレイを使用して実施されることが可能である。図10Bは、強化学習を実施するために使用されることが可能な、実例のメモリシステム1020を示す。メモリシステム1020は、SRAM1030、NVM1040、乱数生成器1050、および比較器1060を含むメモリの階層を含む。SRAM1030およびNVM1040は、それぞれ、第2のメモリ712(フレームバッファを含む)、および図7A図7Eの第1のメモリ710であることが可能である。SRAM1030は、ピクセルデータ1032のフレームを格納し、ピクセルデータ1032をNVM1040に転送することができる。NVM1040は、図5に示されたものなどの、メモリスタのアレイを含むことができ、メモリスタのアレイは、重みを格納することができ、隠れニューロン1042として構成される。隠れニューロン1042は、図5で説明されたように、ピクセルデータ1032を重みで乗算し、出力ニューロン1044に転送することができる。出力ニューロン1044は、乗算し、乗算結果を合計するため、および、非線形活性化関数を合計に適用して中間出力1046を生成するための、フィードバックネットワークとして、メモリスタを伴う増幅器を含むことができる。比較器1060は、中間出力1046を、乱数生成器1050によって生成された乱数1052と比較して、出力1062を生成することができ、出力1062は、フィードバックされることが可能である。乱数1052は、上記で説明されたような、強化学習動作の確率的規則を表すことができる。比較器1060は、DSPおよびMLアクセラレータ706の一部であることが可能であり、その一方で、乱数生成器1050は、図9で説明されたような、乱数を生成するように動作されることが可能な、NVM1040(例えば、MRAMデバイス)の一部であることが可能である。
【0095】
さらに、教師なし学習動作は、図5に示されたものなどの、メモリスタのアレイを使用して実施されることも可能である。いくつかの例では、教師なし学習動作は、光検出層305においてピクセルセルにおけるイベントのパターンを検出するための、CNN360または他のニューラルネットワークであることが可能な、ニューラルネットワークを訓練するために実施されることが可能であり、検出されたパターンは、センサシステム605の動作を制御するために使用されることが可能である。例えば、検出されたパターンは、センサシステム605を目覚めさせるために使用されることが可能である。
【0096】
いくつかの例では、ニューラルネットワークは、スパイクタイミング依存可塑性(STDP:Spike-timing-dependent plasticity)を活用することによって訓練されることが可能であり、STDPは、教師なし学習を可能にする生体模倣アルゴリズムの例である。STDPを基礎とする仮定は、シナプス後部ニューロンがスパイクする直前にシナプス前部ニューロンがスパイクするとき、2つの間のシナプス/重みはより強くなる、および逆もまた同様、ということである。したがって、シナプス前部ニューロンが再びスパイクした場合、シナプスは、シナプス後部ニューロンが、より速く、またはより高い発生確率でスパイクすることを可能にすることになる。
【0097】
センサシステム605において、入力および出力スパイクは、ピクセルにおけるイベントに対応することが可能である。イベントは、例えば、フレーム露出期間内にフォトダイオードによって受け取られた光の強度が1つまたは複数の閾値を超過することに対応することが可能であり、1つまたは複数の閾値は、デジタルピクセルセルの1つまたは複数のフラグビットで示されることが可能である。いくつかの例では、フラグビットのパターンは、例えば、特定の環境(例えば、十分な環境光を有する環境、用途のための標的環境など)でセンサシステム605が動作することを示すことができ、これは、環境においてキャプチャされた画像データを処理するためにセンサシステム605が目覚めることにつながり得る。
【0098】
図5に示されたものなどの、メモリスタのアレイは、イベントを検出するように訓練されることが可能である。図10Cは、検出を実施するように訓練されることが可能な、メモリスタのアレイ1070を示す。図10Cに示されているように、メモリスタのアレイ1070は、列ライン(C0、C1、C2など)と行ライン(R0、R1、R2など)との間のクロスバーデバイスとして実装されることが可能である。ピクセルセルから、時間閾値(例えば、T0)前に発生するイベントを表す信号は、列ラインに供給されることが可能であり、その一方で、ピクセルセルから、時間閾値後に発生するイベントを表す信号は、行ラインに供給されることが可能である。メモリスタクロスバーは重みを格納することができ、メモリスタデバイスの物理学により、そのコンダクタンスは、プログラミングパルスがデバイスに適用されるときのSTDP学習規則に従うことが可能である。行は、増幅器1072に接続されることが可能であり、増幅器1072は、行内の各列のメモリスタ出力を合計し、活性化関数を合計に適用し、出力1074を生成することができる。出力1074は、ピクセルセル間のイベントのタイミング関係のパターンを表すことができ、メモリスタクロスバーにおける重みを更新してSTDPプロセスをモデル化するために使用されることが可能である。
【0099】
いくつかの例では、メモリスタのアレイ1070は、ベクトル-ベクトルおよびベクトル-行列乗算など、他のタイプの乗算を実行することができる。例えば、列ライン(C0、C1、C2など)は、1次元ベクトル(例えば、1×128個のベクトル)を表す値を保持することができ、その一方で、行ライン(R0、R1、R2など)は、別の1次元ベクトル(例えば、別の1×128個のベクトル)を表す値を保持することができ、メモリスタのアレイ1070は、2つのベクトル間のベクトル-ベクトル乗算を実行することができる。ベクトル-ベクトル乗算は、例えば図3Bの完全接続ニューラルネットワーク層の計算を表すことができる。
【0100】
システム環境
図11は、コンソール1110が動作するHMDシステム1100の1つの実施形態のブロック図である。HMDシステム1100は、人工現実システムにおいて動作し得る。図11によって示されたHMDシステム1100は、コンソール1110に連結されたHMD1105および入出力(I/O)インターフェース1115を備える。図11は、1つのHMD1105およびI/Oインターフェース1115を含む実例のHMDシステム1100を示すが、他の例では、任意の数のこれらの構成要素が、HMDシステム1100に含まれてもよい。例えば、関連付けられたI/Oインターフェース1115をそれぞれ有する、複数のHMD1105があってもよく、各HMD1105およびI/Oインターフェース1115は、コンソール1110と通信する。代替構成では、異なるおよび/または追加の構成要素が、HMDシステム1100に含まれてもよい。さらに、図11に示された構成要素のうちの1つまたは複数に関連して説明される機能は、いくつかの例では、図11に関連して説明されるものとは異なる様式で構成要素間に分散されてもよい。例えば、コンソール1110の機能の一部または全部が、HMD1105によって提供される。
【0101】
HMD1105は、コンピュータ生成要素(例えば、2次元(2D)または3次元(3D)画像、2Dまたは3Dビデオ、音など)を伴う実際の現実世界の環境の仮想および/または拡張ビューを含むコンテンツをユーザに提示するヘッドマウント型ディスプレイである。いくつかの例では、提示されるコンテンツは、外部デバイス(例えば、スピーカおよび/またはヘッドホン)を介して提示されるオーディオを含み、外部デバイスは、HMD1105、コンソール1110、または両方からオーディオ情報を受け取り、オーディオ情報に基づくオーディオデータを提示する。HMD1105は、1つまたは複数の剛体を備え得、1つまたは複数の剛体は、精密または非精密に一緒に連結され得る。剛体間の精密連結により、連結された剛体は、単一の精密エンティティとして機能する。対照的に、剛体間の非精密連結により、剛体は、互いに対して動くことができる。HMD1105の例は、図1Aに関連して上記で説明されたHMD100であり得る。
【0102】
HMD1105は、1つまたは複数のセンサアセンブリ1120、電子ディスプレイ1125、光学アセンブリ1130、1つまたは複数の位置センサ1135、IMU1140、任意選択の視標追跡システム1145、および任意選択の可変焦点モジュール1150を含む。HMD1105のいくつかの例は、図11に関連して説明されたものとは異なる構成要素を有する。さらに、図11に関連して説明された様々な構成要素によって提供される機能は、他の例では、HMD1105の構成要素間にそれぞれ分散されてもよい。
【0103】
各センサアセンブリ1120は、複数の積層型センサ層を備え得る。複数の積層型センサ層の最上部にある第1のセンサ層は、HMD1105の一部または全部を囲むローカルエリアの1つまたは複数の物体から反射された光の少なくとも一部分の1つまたは複数の画像をキャプチャするように構成されたピクセルのアレイを含み得る。第1(最上部)のセンサ層の下にある、複数の積層型センサ層の少なくとも1つの他のセンサ層は、キャプチャされた1つまたは複数の画像に関するデータを処理するように構成され得る。HMD1105またはコンソール1110は、センサアセンブリ1120の第1のサブセットを動的に活性化させ、例えば、HMD1105で動くアプリケーションに基づいて、センサアセンブリ1120の第2のサブセットを不活性化させ得る。したがって、各瞬間において、センサアセンブリ1120の一部分だけが、活性化されるはずである。いくつかの例では、1つまたは複数の動く物体の1つまたは複数の追跡される特徴についての情報が、1つのセンサアセンブリ1120から別のセンサアセンブリ1120に渡され得、その結果、他のセンサアセンブリ1120は、1つまたは複数の動く物体の1つまたは複数の特徴を追跡し続け得る。
【0104】
いくつかの例では、各センサアセンブリ1120は、ホスト、すなわち、HMD1105またはコンソール1110のプロセッサ(コントローラ)に、連結され得る。センサアセンブリ1120は、第1のフレームレートを使用して、第1の解像度の第1のデータをホストに送るように構成され得、第1のデータは、第1の瞬間にセンサアセンブリ1120によってキャプチャされた画像に関連付けられる。ホストは、第1のフレームレートを使用して、センサアセンブリ1120から受け取られた第1のデータに基づいて取得された1つまたは複数の特徴についての情報を送るように構成され得る。センサアセンブリ1120は、第1のフレームレートより高い第2のフレームレートを使用して、第1の解像度より低い第2の解像度の第2のデータをホストに送るようにさらに構成され得、第2のデータは、第2の瞬間にセンサアセンブリによってキャプチャされた別の画像に関連付けられる。
【0105】
各センサアセンブリ1120は、最上部のセンサ層のアレイの各ピクセルと、最上部のセンサ層の下にある、1つまたは複数のセンサ層のうちの少なくとも1つのセンサ層のロジックとの間のインターフェース接続を含み得る。センサアセンブリ1120の最上部のセンサ層の下にある、1つまたは複数のセンサ層のうちの少なくとも1つは、キャプチャされた1つまたは複数の画像から1つまたは複数の特徴を抽出するように構成されたロジックを含み得る。センサアセンブリ1120の最上部のセンサ層の下にある、1つまたは複数のセンサ層のうちの少なくとも1つは、訓練済みのネットワーク重みの格納のためのメモリスタのアレイに基づくCNNをさらに含み得る。
【0106】
少なくとも1つのセンサアセンブリ1120は、ローカルエリアの奥行き情報を表すデータをキャプチャし得る。少なくとも1つのセンサアセンブリ1120は、(例えば、ストラクチャードライトパターンのキャプチャされた部分に基づく)データを使用して、奥行き情報を計算することができる。代替として、少なくとも1つのセンサアセンブリ1120は、この情報を、コンソール1110などの別のデバイスに送ることができ、コンソール1110は、センサアセンブリ1120からのデータを使用して、奥行き情報を決定することができる。センサアセンブリ1120のそれぞれは、図1Aのセンサデバイス130、図2のセンサアセンブリ200、図3のセンサアセンブリ300、および/または図6のセンサシステム605の実施形態であり得る。
【0107】
電子ディスプレイ1125は、コンソール1110から受け取られたデータに従って、2次元または3次元画像をユーザに表示する。様々な例において、電子ディスプレイ1125は、単一の電子ディスプレイまたは複数の電子ディスプレイ(例えば、ユーザの各目のためのディスプレイ)を備える。電子ディスプレイ1125の例は、LCD、OLEDディスプレイ、ILEDディスプレイ、AMOLEDディスプレイ、TOLEDディスプレイ、いくつかの他のディスプレイ、またはそのいくつかの組合せを含む。電子ディスプレイ1125は、図1Bの電子ディスプレイ155の実施形態であり得る。
【0108】
光学アセンブリ1130は、電子ディスプレイ1125から受け取られた画像光を拡大し、画像光に関連付けられた光学エラーを補正し、補正された画像光をHMD1105のユーザに提示する。光学アセンブリ1130は、複数の光学素子を含む。光学アセンブリ1130に含まれる実例の光学素子は、開口部、フレネルレンズ、凸レンズ、凹レンズ、フィルタ、反射面、または、画像光に影響を及ぼす任意の他の適切な光学素子を含む。その上、光学アセンブリ1130は、異なる光学素子の組合せを含み得る。いくつかの例では、光学アセンブリ1130の光学素子のうちの1つまたは複数は、部分的に反射性のまたは反射防止のコーティングなどの、1つまたは複数のコーティングを有し得る。
【0109】
光学アセンブリ1130による画像光の拡大および焦点調整は、大きいディスプレイより電子ディスプレイ1125を物理的に小さくし、重さを減らし、電力消費を減らすことを可能にする。さらに、拡大は、電子ディスプレイ1125によって提示されるコンテンツの視野を増加させ得る。例えば、表示コンテンツの視野は、表示コンテンツが、視野のほぼ全て(例えば、およそ110度の対角線)、および場合によっては全てを使用して、提示されるようなものである。さらに、いくつかの例では、拡大の量は、光学素子を追加または除去することによって調節され得る。
【0110】
いくつかの例では、光学アセンブリ1130は、1つまたは複数のタイプの光学エラーを補正するように設計され得る。光学エラーの例は、たる型もしくは糸巻形歪曲、軸上色収差、または横色収差を含む。他のタイプの光学エラーは、球面収差、色収差、または、レンズフィールド湾曲、非点収差、もしくは任意の他のタイプの光学エラーによるエラーをさらに含み得る。いくつかの例では、表示のために電子ディスプレイ1125に提供されるコンテンツは予め歪んでおり、光学アセンブリ1130は、コンテンツに基づいて生成された電子ディスプレイ1125からの画像光を受け取ったとき、歪みを補正する。いくつかの例では、光学アセンブリ1130は、電子ディスプレイ1125から放たれた画像光を、ユーザの目の場所に対応するHMD1105のアイボックスに向けるように構成される。画像光は、処理データに部分的に基づいて複数のセンサアセンブリ1120のうちの少なくとも1つによって決定されたローカルエリアの奥行き情報を含み得る。光学アセンブリ1130は、図1Bの光学アセンブリ160の実施形態であり得る。
【0111】
IMU1140は、位置センサ1135のうちの1つまたは複数から受け取られた測定信号に基づいて、および、少なくとも1つのセンサアセンブリ1120から受け取られた奥行き情報から、HMD1105の位置を示すデータを生成する電子デバイスである。位置センサ1135は、HMD1105の動きに応じて、1つまたは複数の測定信号を生成する。位置センサ1135の例は、1つもしくは複数の加速度計、1つもしくは複数のジャイロスコープ、1つもしくは複数の磁力計、動きを検出する別の適切なタイプのセンサ、IMU1140の誤差訂正のために使用されるセンサの一種、またはそのいくつかの組合せを含む。位置センサ1135は、IMU1140の外部、IMU1140の内部、またはそのいくつかの組合せにあってもよい。
【0112】
1つまたは複数の位置センサ1135からの1つまたは複数の測定信号に基づいて、IMU1140は、HMD1105の初期位置に対するHMD1105の推定される現在位置を示すデータを生成する。例えば、位置センサ1135は、並進運動(前/後、上/下、左/右)を測定するための複数の加速度計、および回転運動(例えば、ピッチ、偏揺れ、横揺れ)を測定するための複数のジャイロスコープを含む。いくつかの例では、位置センサ1135は、図1Aの位置センサ125を表し得る。いくつかの例では、IMU1140は、測定信号を迅速にサンプリングし、サンプリングされたデータからHMD1105の推定される現在位置を計算する。例えば、IMU1140は、経時的に加速度計から受け取られた測定信号を統合して速度ベクトルを推定し、経時的に速度ベクトルを統合してHMD1105上の基準点の推定される現在位置を決定する。代替として、IMU1140は、サンプリングされた測定信号をコンソール1110に提供し、コンソール1110は、誤差を低減させるようにデータを解釈する。基準点は、HMD1105の位置を表現するために使用され得るポイントである。基準点は、一般に、空間におけるポイント、またはHMD1105の向きおよび位置に関連した位置として定義され得る。
【0113】
IMU1140は、コンソール1110から1つまたは複数のパラメータを受け取る。1つまたは複数のパラメータは、HMD1105の追跡を維持するために使用される。受け取られたパラメータに基づいて、IMU1140は、1つまたは複数のIMUパラメータ(例えば、サンプルレート)を調節し得る。いくつかの例では、特定のパラメータで、IMU1140は基準点の初期位置を更新し、したがって、これが基準点の次の位置に対応する。基準点の初期位置を基準点の次の較正された位置として更新することは、IMU1140によって推定された現在位置に関連付けられた集積された誤差を低減させるのに役立つ。集積された誤差は、変動誤差(drift error)とも呼ばれ、基準点の推定される位置を、基準点の実際の位置から経時的に遠くへ「変動」させる。HMD1105のいくつかの例では、IMU1140は、専用ハードウェア構成要素でもよい。他の例では、IMU1140は、1つまたは複数のプロセッサに実装されたソフトウェア構成要素でもよい。いくつかの例では、IMU1140は、図1Aのセンサデバイス130を表し得る。
【0114】
いくつかの例では、視標追跡システム1145は、HMD1105に統合される。視標追跡システム1145は、HMD1105を装着したユーザの目に関連付けられた視標追跡情報を決定する。視標追跡システム1145によって決定された視標追跡情報は、ユーザの目の向きについての情報、すなわち、視線の角度についての情報を含み得る。いくつかの例では、視標追跡システム1145は、光学アセンブリ1130に統合される。視標追跡システム1145の実施形態は、照明源および撮像デバイス(カメラ)を含み得る。
【0115】
いくつかの例では、可変焦点モジュール1150が、HMD1105にさらに統合される。可変焦点モジュール1150は、視標追跡システム1145によって決定される視標追跡情報を取得するために、視標追跡システム1145に連結され得る。可変焦点モジュール1150は、視標追跡システム1145から取得された決定された視標追跡情報に基づいて、電子ディスプレイ1125に表示された1つまたは複数の画像の焦点を調節するように構成され得る。このようにして、可変焦点モジュール1150は、画像光に関する輻輳調節矛盾を軽減することができる。可変焦点モジュール1150は、電子ディスプレイ1125のうちの少なくとも1つ、および光学アセンブリ1130の少なくとも1つの光学素子と(例えば、機械的または電気的に)インターフェースされることが可能である。次に、可変焦点モジュール1150は、視標追跡システム1145から取得された決定された視標追跡情報に基づいて、電子ディスプレイ1125のうちの少なくとも1つ、および光学アセンブリ1130の少なくとも1つの光学素子の位置を調節することによって、電子ディスプレイ1125に表示された1つまたは複数の画像の焦点を調節するように構成され得る。位置を調節することによって、可変焦点モジュール1150は、電子ディスプレイ1125からユーザの目に向かって出力された画像光の焦点を変化させる。可変焦点モジュール1150は、また、視標追跡システム1145から取得された決定された視標追跡情報に少なくとも部分的に基づいて、表示された画像の中心窩レンダリングを実施することによって、電子ディスプレイ1125に表示された画像の解像度を調節するように構成され得る。この場合、可変焦点モジュール1150は、適切な画像信号を電子ディスプレイ1125に提供する。可変焦点モジュール1150は、電子ディスプレイ1125の他の領域において、より低いピクセル密度の画像信号を提供しつつ、ユーザの視線の中心窩領域においてのみ、最大ピクセル密度の画像信号を電子ディスプレイ1125に提供する。1つの実施形態では、可変焦点モジュール1150は、少なくとも1つのセンサアセンブリ1120によって取得された奥行き情報を利用して、例えば、電子ディスプレイ1125に提示するためのコンテンツを生成し得る。
【0116】
I/Oインターフェース1115は、ユーザがアクションリクエストを送り、コンソール1110から応答を受け取ることを可能にするデバイスである。アクションリクエストは、特定のアクションを実施したいというリクエストである。例えば、アクションリクエストは、画像またはビデオデータのキャプチャを開始もしくは終了するようにという命令、またはアプリケーション内の特定のアクションを実施するようにという命令であり得る。I/Oインターフェース1115は、1つまたは複数の入力デバイスを含み得る。実例の入力デバイスは、キーボード、マウス、ゲームコントローラ、または、アクションリクエストを受け取り、アクションリクエストをコンソール1110に伝えるための任意の他の適切なデバイスを含む。I/Oインターフェース1115によって受け取られたアクションリクエストはコンソール1110に伝えられ、コンソール1110は、アクションリクエストに対応するアクションを実施する。いくつかの例では、I/Oインターフェース1115は、I/Oインターフェース1115の初期位置に対する、I/Oインターフェース1115の推定位置を示すIMUデータをキャプチャするIMU1140を含む。いくつかの例では、I/Oインターフェース1115は、コンソール1110から受け取られた命令に従って、触感フィードバックをユーザに提供し得る。例えば、触感フィードバックは、アクションリクエストが受け取られたとき、または、コンソール1110がアクションを実施するときの触感フィードバックをI/Oインターフェース1115に生成させる命令をコンソール1110がI/Oインターフェース1115に伝えたときに、提供される。
【0117】
コンソール1110は、少なくとも1つのセンサアセンブリ1120、HMD1105、およびI/Oインターフェース1115のうちの1つまたは複数から受け取られた情報に従って処理するために、コンテンツをHMD1105に提供する。図11に示された例では、コンソール1110は、アプリケーションストア1155、追跡モジュール1160、およびエンジン1165を含む。コンソール1110のいくつかの例は、図11に関連して説明されたものとは異なるモジュールまたは構成要素を有する。同様に、下記でさらに説明される機能は、図11に関連して説明されたものとは異なる様式でコンソール1110の構成要素間に分散され得る。
【0118】
アプリケーションストア1155は、コンソール1110による実行のための1つまたは複数のアプリケーションを格納する。アプリケーションは、命令のグループであり、命令が、プロセッサによって実行されると、ユーザへの提示のためのコンテンツを生成する。アプリケーションによって生成されたコンテンツは、HMD1105またはI/Oインターフェース1115の動きを介してユーザから受け取られた入力に応じたものであり得る。アプリケーションの例は、ゲーミングアプリケーション、会議アプリケーション、ビデオ再生アプリケーション、または他の適切なアプリケーションを含む。
【0119】
追跡モジュール1160は、1つまたは複数の較正パラメータを使用してHMDシステム1100を較正し、HMD1105の、またはI/Oインターフェース1115の位置の、決定時の誤差を低減させるように1つまたは複数の較正パラメータを調節し得る。例えば、追跡モジュール1160は、少なくとも1つのセンサアセンブリ1120の焦点を調節して、少なくとも1つのセンサアセンブリ1120によってキャプチャされたストラクチャードライト素子の位置をより正確に決定するために、較正パラメータを少なくとも1つのセンサアセンブリ1120に伝える。追跡モジュール1160によって実施される較正は、HMD1105のIMU1140および/またはI/Oインターフェース1115に含まれるIMU1140から受け取られた情報も考慮に入れる。さらに、HMD1105の追跡が失われた場合(例えば、少なくとも1つのセンサアセンブリ1120が、少なくとも閾値数のストラクチャードライト素子の視線を失った場合)、追跡モジュール1160は、HMDシステム1100の一部または全部を再較正し得る。
【0120】
追跡モジュール1160は、少なくとも1つのセンサアセンブリ1120、1つもしくは複数の位置センサ1135、IMU1140、またはそのいくつかの組合せからの情報を使用して、HMD1105の、またはI/Oインターフェース1115の動きを追跡する。例えば、追跡モジュール1160は、HMD1105からの情報に基づいて、ローカルエリアのマッピング時のHMD1105の基準点の位置を決定する。追跡モジュール1160は、IMU1140からのHMD1105の位置を示すデータを使用して、または、I/Oインターフェース1115に含まれるIMU1140からのI/Oインターフェース1115の位置を示すデータを使用して、HMD1105の基準点、またはI/Oインターフェース1115の基準点の位置もそれぞれ決定し得る。さらに、いくつかの例では、追跡モジュール1160は、IMU1140からのHMD1105の位置を示すデータの一部分、および、少なくとも1つのセンサアセンブリ1120からのローカルエリアの表現を使用して、HMD1105の将来の場所を予測し得る。追跡モジュール1160は、HMD1105またはI/Oインターフェース1115の推定または予測される将来の位置をエンジン1165に提供する。
【0121】
エンジン1165は、HMD1105から受け取られた情報に基づいて、HMD1105の一部または全部を囲むローカルエリアの3Dマッピングを生成する。いくつかの例では、エンジン1165は、奥行きを計算する際に使用される技法に関連した、少なくとも1つのセンサアセンブリ1120から受け取られた情報に基づいて、ローカルエリアの3Dマッピングの奥行き情報を決定する。エンジン1165は、ストラクチャードライトから奥行きを計算する際の1つまたは複数の技法を使用して、奥行き情報を計算し得る。様々な例において、エンジン1165は、奥行き情報を使用して、例えば、ローカルエリアのモデルを更新し、更新されたモデルに部分的に基づいてコンテンツを生成する。
【0122】
エンジン1165は、また、HMDシステム1100内のアプリケーションを実行し、HMD1105の、位置情報、加速度情報、速度情報、予測される将来の位置、またはそのいくつかの組合せを、追跡モジュール1160から受け取る。受け取られた情報に基づいて、エンジン1165は、ユーザへの提示のために、HMD1105に提供するためのコンテンツを決定する。例えば、ユーザが左を見ていたことを、受け取られた情報が示す場合、エンジン1165は、仮想環境における、または、追加のコンテンツを含むローカルエリアを拡張する環境における、ユーザの動きを映すHMD1105のためのコンテンツを生成する。さらに、エンジン1165は、I/Oインターフェース1115から受け取られたアクションリクエストに応答して、コンソール1110で実行するアプリケーション内のアクションを実施し、アクションが実施されたユーザにフィードバックを提供する。提供されるフィードバックは、HMD1105を介した視覚または可聴フィードバックでも、I/Oインターフェース1115を介した触感フィードバックでもよい。
【0123】
いくつかの例では、視標追跡システム1145から受け取られた視標追跡情報(例えば、ユーザの目の向き)に基づいて、エンジン1165は、電子ディスプレイ1125上でユーザに提示するための、HMD1105に提供されるコンテンツの解像度を決定する。エンジン1165は、ユーザの注視の中心窩領域における電子ディスプレイ1125上の、最大ピクセル解像度を有するコンテンツを、HMD1105に提供し、その一方で、エンジン1165は、電子ディスプレイ1125の他の領域において、より低いピクセル解像度を提供し、したがって、ユーザの視覚体験を損なうことなく、HMD1105においてより少ない電力消費量を実現し、コンソール1110のコンピューティングサイクルを節約する。いくつかの例では、エンジン1165は、さらに、視標追跡情報を使用して、輻輳調節矛盾を防ぐように、物体が電子ディスプレイ1125に表示される場所を調節することができる。
【0124】
追加の構成情報
本開示の例の前述の説明は、例証のために提示されてきたものであり、網羅的であること、または、開示された正確な形式に本開示を限定することを意図するものではない。当業者は、上記の開示の観点から、多くの変更形態および変形形態が可能であることを認識することができる。
【0125】
本説明のいくつかの部分は、情報に対する動作のアルゴリズムおよび記号表現の観点で、本開示の例を説明する。これらのアルゴリズム的説明および表現は、一般に、データ処理の当業者によって、これらのワークの実体を効果的に他の当業者に伝えるために使用される。これらの動作は、機能的、演算的、または論理的に説明されるが、コンピュータプログラム、または同等の電気回路、マイクロコード、もしくは同様のものによって実装されるものと理解されている。さらに、一般性を失うことなく、動作のこれらの配置をモジュールとして参照することが、時には便利であることも証明されてきた。説明される動作およびその関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはその任意の組合せで具体化され得る。
【0126】
本明細書で説明されるステップ、動作、またはプロセスのいずれかが、1つまたは複数のハードウェアまたはソフトウェアモジュールを用いて、単独で、または他のデバイスと組み合わせて、実施または実装され得る。1つの実施形態では、ソフトウェアモジュールは、説明されるステップ、動作、またはプロセスのいずれかまたは全てを実施するためにコンピュータプロセッサによって実行されることが可能な、コンピュータプログラムコードを収めるコンピュータ可読媒体を備えるコンピュータプログラム製品で実装される。
【0127】
本開示の例は、本明細書の動作を実施するための装置にも関し得る。この装置は、要求される目的のために特に構築され得、および/または、コンピュータに格納されたコンピュータプログラムによって選択的に活性化または再構成された汎用コンピューティングデバイスを備え得る。このようなコンピュータプログラムは、非一時的な有形のコンピュータ可読ストレージ媒体、または電子命令を格納するのに適した任意のタイプの媒体に格納され得、これらの媒体は、コンピュータシステムバスに連結され得る。さらに、本明細書で言及されるいずれかのコンピューティングシステムが単一のプロセッサを含み得るか、向上したコンピューティング能力のための複数のプロセッサ設計を採用したアーキテクチャであり得る。
【0128】
本開示の例は、本明細書で説明されるコンピューティングプロセスによって生み出される製品にも関し得る。このような製品は、コンピューティングプロセスから生じた情報を含み得、情報は、非一時的な有形のコンピュータ可読ストレージ媒体に格納され、製品は、コンピュータプログラム製品のいずれかの実施形態、または本明細書で説明される他のデータの組合せを含み得る。
【0129】
最後に、本明細書で使用される言葉は、可読性および指示目的のために主に選択されてきたものであり、発明の主題を詳しく説明するためまたは制限するために選択されてきたものではない。したがって、本開示の範囲は、本詳細な説明によってではなく、むしろ、本明細書に基づく出願について発行するいずれかの請求項によって限定されることを意図するものである。したがって、例の開示は、以下の特許請求の範囲において示される本開示の範囲の、限定ではなく、例証であることを意図するものである。
図1A
図1B
図2
図3A
図3B
図4
図5
図6
図7A
図7B
図7C
図7D
図7E
図7F
図7G
図7H
図7I
図7J
図8A
図8B
図8C
図9
図10A
図10B
図10C
図11
【国際調査報告】