JP2022540549A - 複数のコンピューティングデバイスにわたってニューラルネットワークを分散させるためのシステムおよび方法 - Google Patents
複数のコンピューティングデバイスにわたってニューラルネットワークを分散させるためのシステムおよび方法 Download PDFInfo
- Publication number
- JP2022540549A JP2022540549A JP2021573171A JP2021573171A JP2022540549A JP 2022540549 A JP2022540549 A JP 2022540549A JP 2021573171 A JP2021573171 A JP 2021573171A JP 2021573171 A JP2021573171 A JP 2021573171A JP 2022540549 A JP2022540549 A JP 2022540549A
- Authority
- JP
- Japan
- Prior art keywords
- neural network
- layers
- data
- input data
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/0093—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00 with means for monitoring data relating to the user, e.g. head-tracking, eye-tracking
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
- G02B27/0172—Head mounted characterised by optical features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/013—Eye tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0101—Head-up displays characterised by optical features
- G02B2027/0138—Head-up displays characterised by optical features comprising image capture systems, e.g. camera
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0101—Head-up displays characterised by optical features
- G02B2027/014—Head-up displays characterised by optical features comprising information/image processing systems
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B7/00—Mountings, adjusting means, or light-tight connections, for optical elements
- G02B7/02—Mountings, adjusting means, or light-tight connections, for optical elements for lenses
- G02B7/04—Mountings, adjusting means, or light-tight connections, for optical elements for lenses with mechanism for focusing or varying magnification
- G02B7/06—Focusing binocular pairs
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B7/00—Mountings, adjusting means, or light-tight connections, for optical elements
- G02B7/02—Mountings, adjusting means, or light-tight connections, for optical elements for lenses
- G02B7/04—Mountings, adjusting means, or light-tight connections, for optical elements for lenses with mechanism for focusing or varying magnification
- G02B7/09—Mountings, adjusting means, or light-tight connections, for optical elements for lenses with mechanism for focusing or varying magnification adapted for automatic focusing or varying magnification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Optics & Photonics (AREA)
- Human Computer Interaction (AREA)
- Neurology (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Image Analysis (AREA)
Abstract
複数のデバイスにわたってニューラルネットワークを使用するための方法が、本明細書で開示される。方法は、ニューラルネットワークの第1の1つまたは複数の層を用いて構成された第1のデバイスによって、第1のデバイスおよび第2のデバイスにわたって実現されたニューラルネットワークを介した処理のための入力データを受信することを含むことができる。方法は、第1のデバイス上に実現されたニューラルネットワークの第1の1つまたは複数の層によって、ニューラルネットワークの第2の1つまたは複数の層による処理のために、入力データの1つまたは複数の特徴を識別しながら、入力データと比べてサイズが低減されたデータセットを出力することを含むことができる。方法は、第1のデバイスによって、第2のデバイス上に実現されたニューラルネットワークの第2の1つまたは複数の層を介した処理のために、第2のデバイスにデータセットを通信することを含むことができる。【選択図】図3A
Description
本発明は、一般に、ヘッドマウントディスプレイシステムにおいて実現されたニューラルネットワークを含むがそれに限定されない、ニューラルネットワークに関する。
本発明は、ニューラルネットワークに関する。より詳細には、本発明は、ヘッドマウントディスプレイシステムにおいてニューラルネットワークを実現することに関する。ヘッドマウントディスプレイは、拡張現実および/または仮想現実システムにおいて使用され、一般に、処理回路類を含むことができる。しかしながら、ヘッドマウントディスプレイにローカルである処理回路類の処理能力は、サイズおよび熱放散制約により制限されることがある。いくらかの計算量的に重いプロセスは、ヘッドマウントディスプレイの処理回路類上でローカルに実施することが困難であることがある。加えて、外部処理装置に計算量的に重いプロセスをオフロードすることは、ラグを引き起こすことがあり、データを送信するために、過大な量のエネルギーを必要とすることがある。
本明細書で開示される様々な実施形態は、方法に関する。いくつかの実施形態では、方法は、ニューラルネットワークの第1の1つまたは複数の層を用いて構成された第1のデバイスによって、第1のデバイスおよび第2のデバイスにわたって実現されたニューラルネットワークを介した処理のための入力データを受信することを含む。いくつかの実施形態では、方法は、第1のデバイス上に実現されたニューラルネットワークの第1の1つまたは複数の層によって、ニューラルネットワークの第2の1つまたは複数の層による処理のために、入力データの1つまたは複数の特徴を識別しながら、入力データと比べてサイズが低減されたデータセットを出力することを含む。いくつかの実施形態では、方法は、第1のデバイスによって、第2のデバイス上に実現されたニューラルネットワークの第2の1つまたは複数の層を介した処理のために、第2のデバイスにデータセットを通信することを含む。
いくつかの実施形態では、方法は、第1の1つまたは複数の層によって、第2のデバイスへのネットワークを介した送信のために、データセットを圧縮することによって、データセットを低減することを更に含む。
いくつかの実施形態では、第2の1つまたは複数の層は、入力データ内の1つまたは複数の特徴のうちの特徴を検出する。
いくつかの実施形態では、方法は、第1のデバイスによって、特徴が、第2の1つまたは複数の層によって検出されたという指示を第2のデバイスから受信することを更に含む。
いくつかの実施形態では、方法は、第1のデバイスによって、1つまたは複数の特徴のうちの特徴が、第1のデバイスによるアクションを取るための精度の閾値を満たすことを検出することを更に含む。
いくつかの実施形態では、方法は、検出に反応して、第1のデバイスによって、特徴に関してアクションを実施することを更に含む。
いくつかの実施形態では、方法は、第2のデバイスにデータセットを通信することなしに、アクションを実施することを更に含む。
本明細書で開示される様々な実施形態は、方法に関する。いくつかの実施形態では、方法は、ウェアラブルヘッドディスプレイのプロセッサによって、ウェアラブルヘッドディスプレイによってキャプチャされた入力データを受信することを含む。いくつかの実施形態では、方法は、プロセッサ上に実現されたニューラルネットワークの第1の1つまたは複数の層によって、ニューラルネットワークの第2の1つまたは複数の層による処理のために、入力データの1つまたは複数の特徴を識別しながら、入力データと比べてサイズが低減されたデータセットを生成することを含む。いくつかの実施形態では、方法は、プロセッサによって、データセット中の1つまたは複数の特徴のうちの特徴を検出することを含む。いくつかの実施形態では、方法は、特徴を検出したことに反応して、プロセッサによって、ニューラルネットワークの第2の1つまたは複数の層を実現する第2のデバイスにデータセットを通信する代わりに、特徴に関してアクションを実施することを含む。
いくつかの実施形態では、方法は、プロセッサによって、精度の閾値内の特徴を検出することを更に含む。
いくつかの実施形態では、方法は、ウェアラブルヘッドディスプレイを介して表示されている画像を修正することを備えるアクションを実施することを更に含む。
いくつかの実施形態では、方法は、プロセッサ上に実現された第1の1つまたは複数の層によって、第2の入力データ中の特徴のうちの第2の1つまたは複数を識別しながら、第2の入力データと比べてサイズが低減された第2のデータセットを生成することを更に含む。
いくつかの実施形態では、方法は、プロセッサによって、第2の1つまたは複数の特徴のうちの第2の特徴が、精度の閾値内で検出可能でないと決定することを更に含む。
いくつかの実施形態では、方法は、決定に反応して、プロセッサによって、ニューラルネットワークの第2の1つまたは複数の層を実現する第2のデバイスに第2のデータセットを通信することを更に含む。
いくつかの実施形態では、方法は、第2のデバイスから、プロセッサによって、第2の1つまたは複数の層による第2のデータセットの処理の結果の指示を受信することを更に含む。
本明細書で開示される様々な実施形態は、システムに関する。いくつかの実施形態では、システムは、第1のデバイスであって、第1のデバイスおよび第2のデバイスにわたって実現されたニューラルネットワークを介した処理のための入力データを受信するように構成された、第1のデバイスを含む。いくつかの実施形態では、第1のデバイス上に実現されたニューラルネットワークの第1の1つまたは複数の層は、ニューラルネットワークの第2の1つまたは複数の層による処理のために、入力データの1つまたは複数の特徴を識別しながら、入力データと比べてサイズが低減されたデータセットを出力するように構成される。いくつかの実施形態では、第1のデバイスは、第2のデバイス上に実現されたニューラルネットワークの第2の1つまたは複数の層を介した処理のために、第2のデバイスにデータセットを通信するように構成される。
いくつかの実施形態では、第1の1つまたは複数の層は、第2のデバイスへのネットワークを介した送信のために、データセットを圧縮することによって、データセットを低減するように更に構成される。
いくつかの実施形態では、第2の1つまたは複数の層は、入力データ内の1つまたは複数の特徴のうちの特徴を検出するように更に構成される。
いくつかの実施形態では、第1のデバイスは、特徴が、第2の1つまたは複数の層によって検出されたという指示を第2のデバイスから受信するように更に構成される。
いくつかの実施形態では、第1のデバイスは、1つまたは複数の特徴のうちの特徴が、第1のデバイスによるアクションを取るための精度の閾値を満たすことを検出するように更に構成される。
いくつかの実施形態では、第1のデバイスは、検出に反応して、特徴に関しておよび第2のデバイスにデータセットを通信することなしに、アクションを実施するように更に構成される。
上記および他の態様ならびに実現例について、以下で詳細に考察する。上述の情報および以下で詳述する説明は、様々な態様および実現例の実例を含み、特許請求する態様および実現例の性質ならびに特徴を理解するための概観または枠組みを提供する。図面は、様々な態様および実現例の例示ならびに更なる理解を提供し、本明細書に組み込まれるとともに本明細書の一部を構成する。本発明は、添付の特許請求の範囲において定義されている。
添付図面は縮尺通りに描かれることを意図しない。様々な図面における同様の参照番号および記号は同様の要素を示す。明瞭にするため、全ての図面において全ての構成要素に符号が付されるわけではない。
概要
特定の実施形態を詳細に示す図面に移る前に、本発明は、明細書に記載されるかまたは図面に例示される、詳細もしくは方法論に限定されないことが理解されるべきである。また、本明細書で使用する専門用語は、単に説明のためのものであって限定とみなされるべきでないことが理解されるべきである。
特定の実施形態を詳細に示す図面に移る前に、本発明は、明細書に記載されるかまたは図面に例示される、詳細もしくは方法論に限定されないことが理解されるべきである。また、本明細書で使用する専門用語は、単に説明のためのものであって限定とみなされるべきでないことが理解されるべきである。
以下の本発明の様々な実施形態の説明を読む目的で、本明細書のセクション、およびセクションのそれぞれの内容の以下の説明は、役立ち得る。
セクションAは、本システム、方法およびデバイスの実施形態を実践または実現するのに有用な環境、システム、構成および/または他の態様を説明する。
セクションBは、ヘッドマウントディスプレイ環境において本システム、方法およびデバイスの実施形態を実現するためのデバイス、システムおよび方法の実施形態を説明する。
セクションCは、複数のデバイスにわたって本システム、方法およびデバイスの実施形態を実現するためのデバイス、システムおよび方法の実施形態を説明する。
セクションAは、本システム、方法およびデバイスの実施形態を実践または実現するのに有用な環境、システム、構成および/または他の態様を説明する。
セクションBは、ヘッドマウントディスプレイ環境において本システム、方法およびデバイスの実施形態を実現するためのデバイス、システムおよび方法の実施形態を説明する。
セクションCは、複数のデバイスにわたって本システム、方法およびデバイスの実施形態を実現するためのデバイス、システムおよび方法の実施形態を説明する。
図を概して参照すると、いくつかの実施形態による、ニューラルネットワークを実現するための、または複数のデバイスにわたって複数のニューラルネットワークを実現するためのシステムおよび方法が、示されている。システムおよび方法は、複数のデバイスにわたって計算を分割することによって、エネルギー節約のためにニューラルネットワーク計算を最適化するように実現され得る。システムは、第1のデバイスおよび第2のデバイスを含んでもよい。いくつかの実施形態では、第1のデバイスは、第1のニューラルネットワーク、またはニューラルネットワークの1つまたは複数の層の第1のセットを含む。第1のデバイスは、グラフィカル処理装置(GPU)、中央処理装置(CPU)など、または任意の他のローカル処理回路類、コントローラ、プロセッサなどであってもよい。いくつかの実施形態では、第1のデバイスは、ヘッドマウントディスプレイ(HMD)、拡張現実(AR)、または仮想現実(VR)システムのローカルコンピュータデバイスである。第2のデバイスは、第2のニューラルネットワーク、またはニューラルネットワークの1つまたは複数の層の第2のセットを含むことができる。いくつかの実施形態では、第2のデバイスは、第1のデバイスに対する外部デバイス、リモートデバイス、ワイヤレスに接続された処理装置、人工知能アクセラレータ、デスクトップユニット、ネットワークデバイスなどである。第1のデバイスは、1つまたは複数のセンサ、外部コントローラ、外部コンピュータシステム、前処理エンジンなどから入力データ(例えば、画像データ)を受信し、第1のニューラルネットワークに入力データを提供するように構成される。第1のニューラルネットワークは、第1のニューラルネットワークへの出力として、入力データの1つまたは複数の特徴を識別することができる。いくつかの実施形態では、第1のデバイスはまた、入力データの1つまたは複数の特徴の各々と関連付けられた、または第1のニューラルネットワークの1つまたは複数の出力の各々と関連付けられた誤差または精度を決定する。いくつかの実施形態では、第1のデバイスは、第2のデバイスが、入力データの更なる解析のために必要とされるかどうかを決定するために、誤差または精度、および1つまたは複数の対応する閾値を使用する。第1のデバイスは、第1のデバイスが、第2のデバイスおよびニューラルネットワークの第2の部分を使用することなしに、十分に正確な決定を行うことができるか否かを決定するために、誤差または精度または他の論理を使用してもよい。
第1のデバイスは、入力データに基づいて、低減されたデータセットを生成し、第2のデバイス上のニューラルネットワークへの入力として、第2のデバイスに、低減されたデータセットを提供することができる。いくつかの実施形態では、低減されたデータセットは、第1のデバイス上のニューラルネットワークの出力として生成される。いくつかの実施形態では、低減されたデータセットは、入力データの1つまたは複数の特徴を識別する、ニューラルネットワークの出力に加えて、第1のデバイス上のニューラルネットワークによって生成される。いくつかの実施形態では、低減されたデータセットは、入力データと比較して、サイズが(例えば、記憶サイズが)より小さい。例えば、入力データが、1200×1200ピクセルを有する画像データである場合、低減されたデータセットも、画像データであるが、500×500ピクセルのサイズを有することがある。いくつかの実施形態では、低減されたデータセットは、誤差または精度が、対応する閾値よりも大きいまたは小さいことに応答して、生成される。いくつかの実施形態では、低減されたデータセットは、第1のデバイスのニューラルネットワークの1つまたは複数の出力の誤差および/または精度にかかわらず生成されるが、精度が、対応する閾値よりも小さいことに応答してのみ、または誤差が、対応する閾値よりも大きいことに応答してのみ、第2のデバイスに提供される。
いくつかの実施形態では、第1のデバイスは、入力データの1つまたは複数の識別された特徴に基づいて、アクションを実施するように構成される。いくつかの実施形態では、第1のデバイスは、入力データの1つまたは複数の特徴に基づいて、1つまたは複数のアクションを実施するように構成される。いくつかの実施形態では、第1のデバイスは、第2のデバイスのニューラルネットワークに、低減されたデータセットをコンカレントに提供しながら、アクションを実施するように構成される。いくつかの実施形態では、第1のデバイスは、第2のデバイスに、低減されたデータセットを提供することなしに、および/または低減されたデータセットを生成することなしに、アクションを実施するように構成される。いくつかの実施形態では、アクションは、第2のデバイスのニューラルネットワークの出力に応答してまたは基づいて実施される。いくつかの実施形態では、第2のデバイスのニューラルネットワークの出力は、追加の識別された特徴である。いくつかの実施形態では、入力データの特徴が、第1のデバイスのニューラルネットワークよって正確に識別され得ない場合、低減されたデータセットは、入力データの1つまたは複数の特徴を識別するために、第2のデバイスに提供される。
有利に、本明細書で説明されるシステムおよび方法は、HMDディスプレイシステム、ARシステム、VRシステムなどのためのより効率的な処理システムを容易にする。本明細書で説明されるシステムおよび方法は、第1のデバイス上にニューラルネットワークの一部分のみを実現することによって、または第1のデバイス上に計算量的により軽いニューラルネットワークを実現することによって、第1のデバイスの処理要件を低減する。第1のデバイスが、入力データを正確に解析することができる場合、第1のデバイスは、ディスプレイ上でユーザに像を提供することなど、アクションを実施するために、ニューラルネットワークの結果を使用し、それにより、第1および第2のデバイスの間のトラフィック/データ送信を低減し、エネルギー消費を低減することができる。第1のデバイスが、入力データを正確に解析することができない場合、第1のデバイスは、低減されたデータセットを生成し、第2のデバイスに、低減されたデータセットを提供することができ、ここで、低減されたデータセットは、更に解析されてもよい。有利に、これは、第1および第2のデバイスの間のデータ送信の頻度を低減し、第1および第2のデバイスの間で転送されるデータのサイズを低減し、容易にする。
A.人工知能に関連する処理のための環境
システム、デバイス、および/または方法の実施形態の詳細についてセクションBで考察する前に、システム、デバイス、および/または方法の特定の実施形態を実践もしくは実現するのに有用な、環境、システム、構成、および/または他の態様について考察するのが有用であり得る。ここで図1Aを参照すると、人工知能(AI)に関連する処理を実施するためのシステムの一実施形態が示される。概要では、システムは、入力データ110を使用してAIに関連する処理を実施することができる、1つまたは複数のAIアクセラレータ108を含む。AIアクセラレータ108として参照しているが、場合によっては、ニューラルネットワークアクセラレータ(NNA)、ニューラルネットワークチップもしくはハードウェア、AIプロセッサ、AIチップなどと呼ばれる。AIアクセラレータ108は、入力データ110および/またはパラメータ128(例えば、重みおよび/またはバイアス情報)にしたがって、AIに関連する処理を実施して、出力データ112を出力または提供することができる。AIアクセラレータ108は、1つもしくは複数のニューラルネットワーク114(例えば、人工ニューラルネットワーク)、1つもしくは複数のプロセッサおよび/または1つもしくは複数の記憶デバイス126を含むことができ、ならびに/あるいは実装することができる。
システム、デバイス、および/または方法の実施形態の詳細についてセクションBで考察する前に、システム、デバイス、および/または方法の特定の実施形態を実践もしくは実現するのに有用な、環境、システム、構成、および/または他の態様について考察するのが有用であり得る。ここで図1Aを参照すると、人工知能(AI)に関連する処理を実施するためのシステムの一実施形態が示される。概要では、システムは、入力データ110を使用してAIに関連する処理を実施することができる、1つまたは複数のAIアクセラレータ108を含む。AIアクセラレータ108として参照しているが、場合によっては、ニューラルネットワークアクセラレータ(NNA)、ニューラルネットワークチップもしくはハードウェア、AIプロセッサ、AIチップなどと呼ばれる。AIアクセラレータ108は、入力データ110および/またはパラメータ128(例えば、重みおよび/またはバイアス情報)にしたがって、AIに関連する処理を実施して、出力データ112を出力または提供することができる。AIアクセラレータ108は、1つもしくは複数のニューラルネットワーク114(例えば、人工ニューラルネットワーク)、1つもしくは複数のプロセッサおよび/または1つもしくは複数の記憶デバイス126を含むことができ、ならびに/あるいは実装することができる。
上述の要素または構成要素はそれぞれ、ハードウェア、またはハードウェアとソフトウェアの組み合わせの形で実装される。例えば、これらの要素または構成要素はそれぞれ、任意のアプリケーション、プログラム、ライブラリ、スクリプト、タスク、サービス、プロセス、あるいはデジタルおよび/またはアナログ要素(例えば、1つもしくは複数のトランジスタ、論理ゲート、レジスタ、メモリデバイス、抵抗素子、導電素子、容量素子)を含むことができる回路類などのハードウェア上で実行する、任意のタイプおよび形態の実行可能命令を含むことができる。
入力データ110は、AIアクセラレータ108のニューラルネットワーク114を構成、調整、訓練、および/または活性化するための、ならびに/あるいはプロセッサ124によって処理するための、任意のタイプもしくは形態のデータを含むことができる。ニューラルネットワーク114は、場合によっては、人工ニューラルネットワーク(ANN)と呼ばれる。ニューラルネットワークの構成、調整、および/または訓練は、履歴データなど、(例えば、入力データ110としての)訓練データセットがニューラルネットワークに提供されて処理される、機械学習のプロセスを指すかあるいは含むことができる。調整または構成は、ニューラルネットワーク114を訓練または処理して、ニューラルネットワークが精度を改善するのを可能にすることを指すかまたは含むことができる。ニューラルネットワーク114の調整または構成は、例えば、ニューラルネットワーク114に関する問題のタイプもしくは所望の目標に対して成功することが証明されているアーキテクチャを使用した、ニューラルネットワークの設計、形成、構築、合成、および/または確立を含むことができる。場合によっては、1つまたは複数のニューラルネットワーク114は、同じもしくは類似のベースラインモデルで開始してもよいが、調整、訓練、または学習プロセスの間、ニューラルネットワーク114の結果は、ベースラインモデルであるかあるいは異なる目標もしくは目的のために調整または訓練された異なるニューラルネットワークよりも高いレベルの精度および信頼性で、特定のタイプの入力を処理し、特定のタイプの出力を生成するように、各ニューラルネットワーク114を調整することができるような、十分に異なるものであることができる。ニューラルネットワーク114の調整は、各ニューラルネットワーク114に対して異なるパラメータ128を設定すること、各ニューラルネットワーク114に対してパラメータ128を異なるように微調整すること、または異なる重み(例えば、ハイパーパラメータ、もしくは学習率)、テンソルフローなどを割り当てることを含むことができる。したがって、ニューラルネットワークならびに/あるいはシステムの調整または訓練プロセスおよび目標に基づいて、ニューラルネットワーク114に対して適切なパラメータ128を設定することで、システム全体の性能を改善することができる。
AIアクセラレータ108のニューラルネットワーク114は、例えば、畳み込みニューラルネットワーク(CNN)、深層畳み込みネットワーク、順伝播型ニューラルネットワーク(例えば、多層パーセプトロン(MLP))、深層順伝播型ニューラルネットワーク、放射基底関数ニューラルネットワーク、コホネン自己組織化ニューラルネットワーク、回帰型ニューラルネットワーク、モジュール型ニューラルネットワーク、長期/短期メモリニューラルネットワークなど、任意のタイプのニューラルネットワークを含むことができる。ニューラルネットワーク114は、自然言語処理など、データ(例えば、画像、音声、映像)処理、オブジェクトもしくは特徴認識、レコメンダ機能、データもしくは画像分類、データ(例えば、画像)解析などを実施するために展開または使用することができる。
一例として、また1つまたは複数の実施形態では、ニューラルネットワーク114は、畳み込みニューラルネットワークとして構成することができ、または畳み込みニューラルネットワークを含むことができる。畳み込みニューラルネットワークは、それぞれ異なる目的に役立ち得る、1つもしくは複数の畳み込みセル(またはプーリング層)およびカーネルを含むことができる。畳み込みニューラルネットワークは、畳み込みカーネル(場合によっては、単に「カーネル」と呼ばれる)を含み、組み込み、および/または使用することができる。畳み込みカーネルは入力データを処理することができ、プーリング層は、例えば、maxなどの非線形関数を使用して、データを単純化し、それによって不要な特徴を低減することができる。畳み込みニューラルネットワークを含むニューラルネットワーク114は、画像、音声、または任意のデータの認識もしくは他の処理を容易にすることができる。例えば、(例えば、センサからの)入力データ110を、ファンネルを形成する畳み込みニューラルネットワークの畳み込み層に渡して、入力データ110の検出された特徴を圧縮することができる。畳み込みニューラルネットワークの第1の層は第1の特性を検出することができ、第2の層は第2の特性を検出することができ、その先も同様である。
畳み込みニューラルネットワークは、視覚心像、音声情報、および/または他の任意のタイプもしくは形態の入力データ110を解析するように構成された、深層順伝播型人工ニューラルネットワークのタイプであることができる。畳み込みニューラルネットワークは、最小限の前処理を使用するように設計された、多層パーセプトロンを含むことができる。畳み込みニューラルネットワークは、重み共有アーキテクチャおよび翻訳不変性特性に基づいて、シフト不変または空間不変人工ニューラルネットワークを含むことができ、またはそのように呼ぶことができる。畳み込みニューラルネットワークは、他のデータ分類/処理アルゴリズムと比較して相対的に少ない前処理を使用することができるので、畳み込みニューラルネットワークは、他のデータ分類/処理アルゴリズムのためにマニュアル設計されてもよいフィルタを自動的に学習して、ニューラルネットワーク114の構成、確立、またはセットアップと関連付けられた効率を改善することによって、他のデータ分類/処理技術と比べて技術的利点を提供することができる。
ニューラルネットワーク114は、ニューロンもしくはノードの、入力層116および出力層122を含むことができる。ニューラルネットワーク114はまた、ニューロンもしくはノードの、畳み込み層、プーリング層、全結合層、および/または正規化層を含むことができる、1つまたは複数の隠れ層118、119を有することができる。ニューラルネットワーク114では、各ニューロンは、前の層におけるいくつかの位置から入力を受信することができる。全結合層では、各ニューロンは、前の層の全ての要素からの入力を受信することができる。
ニューラルネットワーク114の各ニューロンは、前の層の受容野からの入力値に何らかの関数を適用することによって、出力値を計算することができる。入力値に適用される関数は、重みのベクトルおよびバイアス(一般的には実数)によって指定される。ニューラルネットワーク114における(例えば、訓練フェーズ中の)学習は、バイアスおよび/または重みを漸増的に調節することによって進行することができる。重みのベクトルおよびバイアスは、フィルタと呼ぶことができ、入力の何らかの特徴(例えば、特定の形状)を表すことができる。畳み込みニューラルネットワークの際立った特徴は、多くのニューロンが同じフィルタを共有できることである。これにより、各受容野が独自のバイアスおよび重みのベクトルを有するのではなく、単一のバイアスおよび重みの単一のベクトルを、該フィルタを共有する全ての受容野にわたって使用することができるので、メモリフットプリントが低減される。
例えば、畳み込み層では、システムは、畳み込み演算を入力層116に適用して、結果を次の層に渡すことができる。畳み込みは、個々のニューロンの応答をエミュレートして刺激を入力することができる。各畳み込みニューロンは、その受容野に対してのみデータを処理することができる。畳み込み演算は、全結合順伝播型ニューラルネットワークと比較して、ニューラルネットワーク114で使用されるニューロンの数を低減することができる。したがって、畳み込み演算は、自由パラメータの数を低減して、より少ないパラメータでネットワークをより深層化することを可能にすることができる。例えば、入力データ(例えば、画像データ)サイズにかかわらず、同じ共有重みをそれぞれ有するサイズ5×5のタイリング領域は、25個のみの学習可能パラメータを使用してもよい。このように、畳み込みニューラルネットワークを有する第1のニューラルネットワーク114は、逆伝播を使用することによって多くの層を有する従来の多層ニューラルネットワークを訓練する際の、勾配消失または発散の問題を解決することができる。
ニューラルネットワーク114(例えば、畳み込みニューラルネットワークで構成される)は、1つまたは複数のプーリング層を含むことができる。1つまたは複数のプーリング層は、ローカルプーリング層またはグローバルプーリング層を含むことができる。プーリング層は、1つの層におけるニューロンクラスタの出力を組み合わせて、次の層における単一のニューロンとすることができる。例えば、最大プーリングは、前の層におけるニューロンのクラスタそれぞれからの最大値を使用することができる。別の例は、前の層におけるニューロンのクラスタそれぞれからの平均値を使用することができる、平均プーリングである。
ニューラルネットワーク114(例えば、畳み込みニューラルネットワークで構成される)は、全結合層を含むことができる。全結合層は、1つの層の全てのニューロンを別の層の全てのニューロンに結合することができる。ニューラルネットワーク114は、畳み込み層で重みを共有して構成することができ、それは同じフィルタが層内の各受容野に使用されることを指すことができ、それにより、メモリフットプリントが低減され、第1のニューラルネットワーク114の性能が改善される。
隠れ層118、119は、入力データ(例えば、仮想現実システムなどからのセンサデータ)に基づいて、情報を検出するように調整または構成されるフィルタを含むことができる。システムがニューラルネットワーク114(例えば、畳み込みニューラルネットワーク)の各層を通るにつれて、システムは、第1の層からの入力を翻訳し、変換された入力を第2の層に出力することができ、その先も同様である。ニューラルネットワーク114は、検出、処理、および/または計算されるオブジェクトもしくは情報のタイプ、ならびに入力データ110のタイプに基づいて、1つまたは複数の隠れ層118、119を含むことができる。
いくつかの実施形態では、畳み込み層は、ニューラルネットワーク114(例えば、CNNとして構成される)のコアビルディングブロックである。層のパラメータ128は、小さい受容野を有するが、入力ボリュームの深さ全体を通って延在する、学習可能なフィルタ(またはカーネル)のセットを含むことができる。順方向パスの間、各フィルタは、入力ボリュームの幅および高さにわたって畳み込まれて、フィルタのエントリと入力との間のドット積を計算し、該フィルタの二次元活性化マップを作成する。結果として、ニューラルネットワーク114は、入力のある空間位置である特定のタイプの特徴を検出すると活性化する、フィルタを学習させることができる。深さ次元に沿って全てのフィルタの活性化マップを積み重ねることで、畳み込み層の全出力ボリュームが形成される。したがって、出力ボリュームの全てのエントリは、入力の小さい領域に注目し、同じ活性化マップのニューロンとパラメータを共有する、ニューロンの出力として解釈することもできる。畳み込み層では、ニューロンは、前の層の制限されたサブエリアから入力を受信することができる。一般的に、サブエリアは正方形形状のもの(例えば、サイズ5×5)である。ニューロンの入力エリアはその受容野と呼ばれる。そのため、全結合層では、受容野は前の層全体である。畳み込み層では、受容エリアは前の層全体よりも小さいものであり得る。
第1のニューラルネットワーク114は、(例えば、入力データ110に基づいて、オブジェクト、イベント、ワード、および/または他の特徴の確率を検出もしくは決定することによって)入力データ110を検出、分類、セグメント化、および/または翻訳するように訓練することができる。例えば、ニューラルネットワーク114の第1の入力層116は、入力データ110を受信し、入力データ110を処理してデータを第1の中間出力に変換し、第1の中間出力を第1の隠れ層118に伝達することができる。第1の隠れ層118は、第1の中間出力を受信し、第1の中間出力を処理して第1の中間出力を第2の中間出力に変換し、第2の中間出力を第2の隠れ層119に伝達することができる。第2の隠れ層119は、第2の中間出力を受信し、第2の中間出力を処理して第2の中間出力を第3の中間出力に変換し、第3の中間出力を、例えば出力層122に伝達することができる。出力層122は、第3の中間出力を受信し、第3の中間出力を処理して第3の中間出力を出力データ112に変換し、出力データ112を(例えば、場合によっては、ユーザに対するレンダリングのため、格納のためなど、後処理エンジンに)伝達することができる。出力データ112は、例として、オブジェクト検出データ、強化/翻訳/拡張されたデータ、推奨、分類、および/またはセグメント化されたデータを含むことができる。
再び図1Aを参照すると、AIアクセラレータ108は、1つまたは複数の記憶デバイス126を含むことができる。記憶デバイス126は、AIアクセラレータ108と関連付けられた任意のタイプもしくは形態のデータを、格納、保持、または維持するように、設計または実装することができる。例えば、データは、AIアクセラレータ108によって受信される入力データ110、および/または出力データ112(例えば、次のデバイスもしくは処理段階に出力される前)を含むことができる。データは、ニューラルネットワーク114および/またはプロセッサ124の処理段階のいずれかに使用される、またはいずれかからの、中間データを含むことができる。データは、記憶デバイス126から読み取るかまたはアクセスすることができる、ニューラルネットワーク114のニューロンに入力される、また該ニューロンで処理する、1つもしくは複数のオペランドを含むことができる。例えば、データは、記憶デバイス126に格納し、そこから読み取るかまたはアクセスすることができる、入力データ、重み情報、および/またはバイアス情報、活性化関数情報、ならびに/あるいは1つもしくは複数のニューロン(またはノード)のためのパラメータ128、および/またはニューラルネットワーク114の層を含むことができる。データは、記憶デバイス126に書き込み、またそこに格納することができる、ニューラルネットワーク114のニューロンからの出力データを含むことができる。例えば、データは、記憶デバイス126に転送するかもしくは書き込み、格納することができる、ニューラルネットワーク114の1つもしくは複数のニューロン(またはノード)および/または層のための、活性化データ、改良もしくは更新されたデータ(例えば、訓練段階などからの重み情報および/またはバイアス情報、活性化関数情報、および/または他のパラメータ128)を含むことができる。
いくつかの実施形態では、AIアクセラレータ108は1つまたは複数のプロセッサ124を含むことができる。1つまたは複数のプロセッサ124は、ニューラルネットワーク114またはAIアクセラレータ108のうち任意の1つもしくは複数に対する入力データを前処理するための、ならびに/あるいはニューラルネットワーク114またはAIアクセラレータ108のうち任意の1つもしくは複数に対する出力データを後処理するための、任意の論理、回路類、および/または処理構成要素(例えば、マイクロプロセッサ)を含むことができる。1つまたは複数のプロセッサ124は、ニューラルネットワーク114またはAIアクセラレータ108の1つもしくは複数の演算を構成、制御、および/または管理するための、論理、回路類、処理構成要素、および/または機能性を提供することができる。例えば、プロセッサ124は、ニューラルネットワーク114と関連付けられたデータまたは信号を受信して、(例えば、ニューラルネットワーク114の演算を実装する回路類に対するクロックゲート制御を介して)消費電力を制御または低減してもよい。別の例として、プロセッサ124は、(例えば、AIアクセラレータ108の様々な構成要素における、例えば並列の)別個の処理のため、(例えば、AIアクセラレータ108の同じ構成要素における、異なる時間もしくは段階での)逐次処理のため、あるいは記憶デバイスの異なるメモリスライスに、または異なる記憶デバイスに格納するため、データを区画化および/または再配置してもよい。いくつかの実施形態では、プロセッサ124は、特定の重み、活性化関数、および/またはパラメータ情報の識別、選択、ならびに/あるいはニューラルネットワーク114のニューロンおよび/または層へのロードによって、特定の文脈に対して演算を行い、特定のタイプの処理を提供し、ならびに/あるいは特定のタイプの入力データをアドレスするように、ニューラルネットワーク114を構成することができる。
いくつかの実施形態では、AIアクセラレータ108は、ディープラーニングおよび/またはAIワークロードを扱うかもしくは処理するように、設計および/または実装される。例えば、AIアクセラレータ108は、人工ニューラルネットワーク、マシンビジョン、および機械学習を含む人工知能用途のため、ハードウェアアクセラレーションを提供することができる。AIアクセラレータ108は、ロボティックス関連、物のインターネット(IoT)関連、または他のデータ集約的もしくはセンサ駆動のタスクを扱う演算向けに構成することができる。AIアクセラレータ108は、マルチコアまたは複数の処理要素(PE)設計を含んでもよく、人工現実(例えば、仮想、拡張、もしくは混合現実)システム、スマートフォン、タブレット、およびコンピュータなど、様々なタイプおよび形態のデバイスに組み込むことができる。AIアクセラレータ108の特定の実施形態は、少なくとも1つのデジタル信号プロセッサ(DSP)、コプロセッサ、マイクロプロセッサ、コンピュータシステム、プロセッサのヘテロジニアスコンピューティング構成、グラフィックス処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、および/または特定用途向け集積回路(ASIC)を含むかあるいはそれらを使用して実装することができる。AIアクセラレータ108は、トランジスタベース、半導体ベース、および/または量子コンピューティングベースのデバイスであることができる。
次に図1Bを参照すると、AIに関連する処理を実施するためのデバイスの例示の一実施形態が示される。概要では、デバイスは、例えば、図1Aに関連して上述した1つまたは複数の特徴を有する、AIアクセラレータ108を含むかまたはそれに対応することができる。AIアクセラレータ108は、1つまたは複数の記憶デバイス126(例えば、スタティックランダムアクセスメモリ(SRAM)デバイスなどのメモリ)、1つまたは複数のバッファ、複数の処理要素(PE)回路またはPE回路のアレイ、他の論理または回路類(例えば、加算器回路類)、ならびに/あるいは他の構造または構成(例えば、相互接続、データバス、クロック回路類、電力ネットワーク)を含むことができる。上述の要素または構成要素はそれぞれ、ハードウェア、または少なくともハードウェアとソフトウェアの組み合わせの形で実装される。ハードウェアは、例えば、回路要素(例えば、1つもしくは複数のトランジスタ、論理ゲート、レジスタ、メモリデバイス、抵抗素子、導電素子、容量素子、および/またはワイヤもしくは導電性コネクタ)を含むことができる。
AIアクセラレータ108において実装されたニューラルネットワーク114(例えば、人工ニューラルネットワーク)では、ニューロンは、様々な形態を取ることができ、処理要素(PE)またはPE回路と呼ぶことができる。ニューロンは、対応するPE回路として実装することができ、ニューロンで起こり得る処理/活性化は、PE回路で実施することができる。PEは接続されて、異なるパターンが異なる機能的目的に役立つ、特定のネットワークパターンまたはアレイとなる。人工ニューラルネットワークのPEは、(例えば、半導体の実現例の実施形態では)電気的に動作し、アナログ、デジタル、またはハイブリッドのいずれかであってもよい。生体シナプスの作用に匹敵するために、PE間の接続に、適正なシステム出力を作成するように校正または「訓練」することができる、乗法的な重みを割り当てることができる。
PEは、(例えば、ニューロンのマッカロック-ピッツモデルを表す)次式に関して定義することができる。
ζ=Σiwixi (1)
y=σ(ζ) (2)
式中、ζは入力の重み付き合計(例えば、入力ベクトルおよびタップ重みベクトルの内積)であり、σ(ζ)は重み付き合計の関数である。重みおよび入力要素がベクトルwおよびxを形成する場合、重み付き合計ζは単純なドット積となる。
ζ=w・x (3)
ζ=Σiwixi (1)
y=σ(ζ) (2)
式中、ζは入力の重み付き合計(例えば、入力ベクトルおよびタップ重みベクトルの内積)であり、σ(ζ)は重み付き合計の関数である。重みおよび入力要素がベクトルwおよびxを形成する場合、重み付き合計ζは単純なドット積となる。
ζ=w・x (3)
これは、活性化関数(例えば、閾値比較の場合)または伝達関数のどちらかと呼ばれることがある。いくつかの実施形態では、1つまたは複数のPEはドット積エンジンと呼ばれる場合がある。ニューラルネットワーク114に対する入力(例えば、入力データ110)xは、入力空間からのものであることができ、出力(例えば、出力データ112)は出力空間の一部である。いくつかのニューラルネットワークでは、出力空間Yは、{0,1}のように単純なものであってもよく、または複雑な多次元(例えば、複数チャネル)空間(例えば、畳み込みニューラルネットワークの場合)であってもよい。ニューラルネットワークは、入力空間の自由度ごとに1つの入力、および出力空間の自由度ごとに1つの出力を有する傾向がある。
いくつかの実施形態では、PEは、シストリックアレイとして配置および/または実装することができる。シストリックアレイは、セルまたはノードと呼ばれる、PEなどの結合されたデータ処理装置(DPU)のネットワーク(例えば、ホモジニアスネットワーク)であることができる。各ノードまたはPEは、上流側の隣接するノードまたはPEから受信したデータの関数として、部分結果を独立して計算することができ、結果を自身に格納することができ、結果を例えば下流側に渡すことができる。シストリックアレイは、特定用途向けに構成されたハードワイヤードまたはソフトウェアであることができる。ノードまたはPEは、固定された同一のものであることができ、シストリックアレイの相互接続はプログラム可能であることができる。シストリックアレイは同期型データ転送に依存することができる。
再び図1Bを参照すると、PE120に対する入力xは、記憶デバイス126(例えば、SRAM)から読み取られるかまたはアクセスされる、入力ストリーム132の一部であることができる。入力ストリーム132は、PEの1つの行(水平のバンクもしくはグループ)に方向付けることができ、PEのうち1つもしくは複数にわたって共有するか、またはそれぞれのPEに対する入力としてのデータ部分(重なり合うもしくは重なり合わないデータ部分)に区画化することができる。重みストリーム134(例えば、記憶デバイス126から読み取られる)における重み134(もしくは重み情報)は、PEの列(垂直のバンクもしくはグループ)に方向付けるかまたは提供することができる。列のPEはそれぞれ、同じ重み134を共有するか、または対応する重み134を受信してもよい。標的のPEそれぞれに対する入力および/または重みは、(例えば、他のPEを通過せずに)標的のPEに(例えば、記憶デバイス126から)直接ルーティングすることができ、あるいは1つもしくは複数のPEを通して(例えば、PEの行もしくは列に沿って)ルーティングすることができる。各PEの出力は、PEアレイの外に(例えば、他のPEを通過せずに)直接ルーティングすることができ、あるいは1つもしくは複数のPEを通して(例えば、PEの列に沿って)PEアレイを出るようにルーティングすることができる。PEの各列の出力は、それぞれの列の加算器回路類において合算または加算し、PEのそれぞれの列に対するバッファ130に提供することができる。バッファ130は、受信した出力を記憶デバイス126に提供、転送、ルーティング、書込み、および/または格納することができる。いくつかの実施形態では、記憶デバイス126に格納された出力(例えば、ニューラルネットワークの1つの層からの活性化データ)を、記憶デバイス126から検索するかまたは読み取り、後の時間における(ニューラルネットワークの後続層の)処理のため、PE120のアレイに対する入力として使用することができる。特定の実施形態では、記憶デバイス126に格納された出力を、AIアクセラレータ108に対する出力データ112として、記憶デバイス126から検索するかまたは読み取ることができる。
次に図1Cを参照すると、AIに関連する処理を実施するためのデバイスの例示の一実施形態が示される。概要では、デバイスは、例えば、図1Aおよび図1Bに関連して上述した1つまたは複数の特徴を有する、AIアクセラレータ108を含むかまたはそれに対応することができる。AIアクセラレータ108は、1つまたは複数のPE120、他の論理または回路類(例えば、加算器回路類)、ならびに/あるいは他の構造または構成(例えば、相互接続、データバス、クロック回路類、電力ネットワーク)を含むことができる。上述の要素または構成要素はそれぞれ、ハードウェア、または少なくともハードウェアとソフトウェアの組み合わせの形で実装される。ハードウェアは、例えば、回路要素(例えば、1つもしくは複数のトランジスタ、論理ゲート、レジスタ、メモリデバイス、抵抗素子、導電素子、容量素子、および/またはワイヤもしくは導電性コネクタ)を含むことができる。
いくつかの実施形態では、PE120は、1つもしくは複数の乗累算(MAC)ユニットまたは回路140を含むことができる。1つまたは複数のPEは、場合によっては、(単独でまたは集合的に)MACエンジンと呼ぶことができる。MACユニットは、乗累算を実施するように構成される。MACユニットは、乗算器回路、加算器回路、および/または累算器回路を含むことができる。乗累算は、2つの数字の積を計算し、その積を累算器に加える。MAC演算は、累算器オペランドa、ならびに入力bおよびcに関連して、次のように表すことができる。
a←a+(b×c) (4)
a←a+(b×c) (4)
いくつかの実施形態では、MACユニット140は、組み合わせ論理に実装された乗算器とそれに続く加算器(例えば、組み合わせ論理を含むもの)、ならびに結果を格納する累算器レジスタ(例えば、順序および/または組み合わせ論理を含むもの)を含んでもよい。累算器レジスタの出力は、加算器の1つの入力にフィードバックすることができるので、各クロックサイクルにおいて、乗算器の出力をレジスタに加算することができる。
上述したように、MACユニット140は、乗算および加算両方の機能を実施することができる。MACユニット140は2つの段階で演算することができる。MACユニット140は、最初に、第1の段階で所与の数(入力)の積を計算し、結果を第2の段階の演算(例えば、加算および/または累算)のために転送することができる。nビットのMACユニット140は、nビット乗算器、2nビット加算器、および2nビット累算器を含むことができる。(例えば、PEにおける)複数のMACユニット140またはMACユニットのアレイ140は、並列積分、畳み込み、相関、行列乗算、データ分類、および/またはデータ解析タスクのため、シストリックアレイの形で配置することができる。
本明細書に記載する様々なシステムおよび/またはデバイスを、コンピューティングシステムに実装することができる。図1Dは、代表的なコンピューティングシステム150のブロック図を示している。いくつかの実施形態では、図1Aのシステムは、コンピューティングシステム150の処理装置156の少なくとも一部を形成することができる。コンピューティングシステム150は、例えば、スマートフォン、他の移動電話、タブレットコンピュータ、ウェアラブルコンピューティングデバイス(例えば、スマートウォッチ、眼鏡、ヘッドマウントディスプレイ)、デスクトップコンピュータ、ラップトップコンピュータなどのデバイス(例えばコンシューマデバイス)として実装するか、あるいは分散型コンピューティングデバイスを実装することができる。コンピューティングシステム150は、VR、AR、MR体験を提供するために実装することができる。いくつかの実施形態では、コンピューティングシステム150は、プロセッサ156、記憶デバイス158、ネットワークインターフェース151、ユーザ入力デバイス152、およびユーザ出力デバイス154など、従来の専用またはカスタムのコンピュータ構成要素を含むことができる。
ネットワークインターフェース151は、(ローカル/リモート)サーバまたはバックエンドシステムのネットワークインターフェースも接続される、ローカル/ワイドエリアネットワーク(例えば、インターネット)に対する接続を提供することができる。ネットワークインターフェース151は、有線インターフェース(例えば、イーサネット)、ならびに/あるいはWi-Fi、ブルートゥース、またはセルラーデータネットワーク規格(例えば、3G、4G、5G、60GHz、LTEなど)などの様々なRFデータ通信規格を実装する無線インターフェースを含むことができる。
ユーザ入力デバイス152は、ユーザがコンピューティングシステム150に信号を提供するのに用いることができる、任意のデバイス(または複数のデバイス)を含むことができ、コンピューティングシステム150は、特定のユーザ要求または情報を示すものとして信号を解釈することができる。ユーザ入力デバイス152は、キーボード、タッチパッド、タッチスクリーン、マウスもしくは他のポインティングデバイス、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、マイクロフォン、センサ(例えば、モーションセンサ、視線追跡センサなど)などのいずれかまたは全てを含むことができる。
ユーザ出力デバイス154は、コンピューティングシステム150がユーザに情報を提供するのに用いることができる、任意のデバイスを含むことができる。例えば、ユーザ出力デバイス154は、コンピューティングシステム150によって生成されるかまたは該システムに送達される画像を表示する、ディスプレイを含むことができる。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)を含む発光ダイオード(LED)、投影システム、陰極線管(CRT)などの様々な画像生成技術を、サポートしている電子部品(例えば、デジタル・アナログもしくはアナログ・デジタル変換器、信号プロセッサなど)とともに組み込むことができる。入力および出力両方のデバイスとして機能する、タッチスクリーンなどのデバイスを使用することができる。出力デバイス154は、ディスプレイに加えてまたはディスプレイの代わりに提供することができる。例としては、インジケータ光、スピーカ、触覚「ディスプレイ」デバイス、プリンタなどが挙げられる。
いくつかの実現例としては、コンピュータプログラム命令をコンピュータ可読記憶媒体に格納する、マイクロプロセッサ、記憶装置、およびメモリなどの電子構成要素が挙げられる。本明細書に記載する特徴の多くは、コンピュータ可読記憶媒体として符号化されたプログラム命令のセットとして指定される、プロセスとして実現することができる。これらのプログラム命令は、1つまたは複数のプロセッサによって実行されると、プログラム命令に示されている様々な動作をプロセッサに実施させる。プログラム命令またはコンピュータコードの例としては、コンパイラによって作成されるものなどの機械コード、およびインタープリタを使用してコンピュータ、電子構成要素、またはマイクロプロセッサによって実行される、より高次のコードを含むファイルが挙げられる。好適なプログラミングを通して、プロセッサ156は、コンピューティングシステム150に対して、サーバまたはクライアントによって実施されるものとして本明細書に記載する機能性、またはメッセージ管理サービスと関連付けられた他の機能性のいずれかを含む、様々な機能性を提供することができる。
コンピューティングシステム150は例示であり、変形および修正が可能であることが認識されるであろう。本発明と関連して使用されるコンピュータシステムは、本明細書には具体的に記載しない他の能力を有することができる。更に、コンピューティングシステム150について、特定のブロックを参照して記載しているが、該ブロックは説明の便宜上定義されているものであり、構成部品の特定の物理的配置を示唆しようとするものではないことが理解されるべきである。例えば、異なるブロックを、同じ設備に、同じサーバラックに、または同じマザーボード上に配置することができる。更に、ブロックは必ずしも物理的に別個の構成要素に対応していなくてもよい。ブロックは、例えば、プロセッサをプログラミングするか、または適切な制御回路類を提供することによって、様々な動作を実施するように構成することができ、様々なブロックは、初期の構成がどのように得られるかに応じて再構成可能であってもなくてもよい。本発明の実現例は、回路類およびソフトウェアの任意の組み合わせを使用して実現された電子デバイスを含む、様々な装置において現実化されてもよい。<AIハードウェアのための定型文言の終了>
B.ヘッドマウントディスプレイのためのシステム、方法、およびデバイス
ARシステムは、適切な深度においてユーザに画像を提示するために、(頭部装着型ディスプレイ(HWD)と呼ばれることもある)HMDを使用することができる。HMDは、シーンにおけるオブジェクトまたは特徴のための深度情報を決定し、(例えば、深度情報に少なくとも部分的に応答して)決定された深度においてそれらのオブジェクトおよび特徴をレンダリングすることができる。例えば、HMDは、左眼画像および右眼画像を連続してまたは同時に提示することによってなど、立体的に閲覧され得る画像を提示するために使用され、ユーザが、3D環境を知覚することができるようにすることができる。HMDまたはARシステムは、左眼および右眼画像など、複数の視点からの画像をキャプチャする、1つまたは複数のカメラを含むことができる。
ARシステムは、適切な深度においてユーザに画像を提示するために、(頭部装着型ディスプレイ(HWD)と呼ばれることもある)HMDを使用することができる。HMDは、シーンにおけるオブジェクトまたは特徴のための深度情報を決定し、(例えば、深度情報に少なくとも部分的に応答して)決定された深度においてそれらのオブジェクトおよび特徴をレンダリングすることができる。例えば、HMDは、左眼画像および右眼画像を連続してまたは同時に提示することによってなど、立体的に閲覧され得る画像を提示するために使用され、ユーザが、3D環境を知覚することができるようにすることができる。HMDまたはARシステムは、左眼および右眼画像など、複数の視点からの画像をキャプチャする、1つまたは複数のカメラを含むことができる。
HMDまたはARシステムは、HMDのユーザの眼の位置および配向を監視またはトラッキングするために、プロセッサ、アイトラッキングセンサ、またはそれらの組み合わせによって少なくとも部分的に動作させられてもよい、アイトラッキング動作を使用することができる。例えば、アイトラッキング動作は、ユーザが凝視している方向を決定するために使用され得る。アイトラッキング動作は、画像が、ユーザの眼に対してどこに表示されるべきであるかを決定するためになど、ユーザに画像を提示するために使用されるHMDまたはARシステムの構成要素に方向情報を提供することができる。
いくつかの実施形態では、システムは、カメラまたは深度センサからのセンサデータを使用することによってなど、HMDまたはARシステムの周りのシーンまたは環境におけるオブジェクトの位置に基づいて、シーンの理解を決定することができる。システムは、ユーザが、オブジェクトを保持または動かしている、オブジェクトを凝視している、またはオブジェクトと関連付けられたテキストを読んでいると決定することによってなど、センサデータに基づいて、ユーザが、1つまたは複数のオブジェクトと対話していると決定することができる。システムは、オブジェクトが、ユーザの凝視方向の閾値範囲にある唯一のオブジェクトであることに基づいて、ユーザが、オブジェクトと対話していると決定することができる。システムは、オブジェクトが音を出力していることを検出することによってなど、音声キューに基づいて、ユーザが、オブジェクトと対話していると決定することができる。システムは、可変焦点システムが、よせ運動面に一致するように焦点を調整することができるようによせ運動面を推定するために、凝視方向またはオブジェクトの位置を使用することによってなど、よせ運動キューとして凝視方向情報を使用して可変焦点システムを較正することができる。システムは、アイトラッキングのための機械学習モデルを動作させることができる。システムは、HMDの1つまたは複数の導波路の動的均一性補正をできるようにするためになど、HMDによるレンダリングおよびプロジェクタ出力を補正するために瞳孔位置を識別するために、アイトラッキング較正を使用することができる。システムは、アイトラッキングの較正を使用して、窩状レンダリングを実施することができる。
次に図2Aを参照すると、システム280は、複数のセンサ238a...n、処理回路類250、および1つまたは複数のディスプレイ264を含むことができる。システム280は、図2Bを参照しながら説明されるHMDシステム200を使用して実現されてもよい。システム280は、図4を参照しながら説明されるコンピューティング環境を使用して実現されてもよい。システム280は、VRシステムの特徴を組み込み、VRシステムの特徴を実現するために使用されてもよい。処理回路類250の少なくとも一部は、GPUを使用して実現されてもよい。処理回路類250の機能は、複数の処理装置を使用して、分散された様式で実行されてもよい。
処理回路類250は、1つまたは複数の回路、プロセッサ、および/またはハードウェア構成要素を含んでもよい。処理回路類250は、本明細書で説明される動作のうちのいずれかを実施するために、任意の論理、機能または命令を実現してもよい。処理回路類250は、回路、プロセッサまたはハードウェア構成要素のうちのいずれかによって実行可能な任意のタイプおよび形態の実行可能命令を含むことができる。実行可能命令は、アプリケーション、プログラム、サービス、タスク、スクリプト、ライブラリプロセスおよび/またはファームウェアを含む、任意のタイプのものであってもよい。オブジェクト位置検出器222、アイトラッカー244、または画像レンダラ260のうちのいずれかは、それらのそれぞれの機能および動作を実施するための、回路類および実行可能命令の任意の組み合わせまたは配置であってもよい。処理回路類250の少なくともいくつかの部分は、センサ238によって実行される画像処理を実現するために使用されてもよい。
センサ238a...nは、ビデオカメラを含む、画像キャプチャデバイスまたはカメラであってもよい。センサ238a...nは、相対的に低い品質(例えば、相対的に低い鮮明度、解像度、またはダイナミックレンジ)の画像を生成するカメラであってもよく、これは、システム280のSWAPを低減するのを助けることができる。例えば、センサ238a...nは、数百ピクセル×数百ピクセル程度の解像度を有する画像を生成することができる。同時に、本明細書で説明されるシステム280によって実行されるプロセスは、深度特性を含む所望の品質特性を有する、ユーザへの提示のための表示画像を生成するために使用されてもよい。
(概して、センサ238と本明細書において呼ばれる)センサ238a...nは、任意のタイプの1つまたは複数のカメラを含むことができる。カメラは、可視光カメラ(例えば、カラーまたは白黒)、赤外線カメラ、あるいはそれらの組み合わせであってもよい。センサ238a...nは、各々、(概して、レンズ226と本明細書において呼ばれる)1つまたは複数のレンズ226a...jを含むことができる。いくつかの実施形態では、センサ238は、各レンズ226についてカメラを含むことができる。いくつかの実施形態では、センサ238は、複数のレンズ226a...jをもつ単一のカメラを含む。いくつかの実施形態では、センサ238は、各々が複数のレンズ226をもつ、複数のカメラを含むことができる。センサ238の1つまたは複数のカメラは、所定の解像度であり、および/または所定の視野を有するように選択または設計されてもよい。いくつかの実施形態では、1つまたは複数のカメラは、拡張現実のためのHMDの視野中のなど、オブジェクトを検出およびトラッキングするための解像度および視野を有するように選択および/または設計される。1つまたは複数のカメラは、画像キャプチャデバイスによってキャプチャされたシーンまたは環境におけるオブジェクトをトラッキングすること、および本明細書で説明される較正技法を実施することなど、複数の目的のために使用されてもよい。
センサ238およびレンズ226の1つまたは複数のカメラは、HMDのユーザまたは着用者の左眼ビュー、およびユーザまたは着用者の右眼ビューに対応するように、HMD上に取り付けられるか、統合されるか、組み込まれるかまたは配置されてもよい。例えば、HMDは、着用者の左眼に対応するかまたは左眼の近くの、HMDの左側に前向きに取り付けられた第1のレンズをもつ第1のカメラと、着用者の右眼に対応するかまたは右眼の近くの、HMDの右側に前向きに取り付けられた第2のレンズをもつ第2のカメラとを含んでもよい。左カメラおよび右カメラは、立体画像キャプチャリングを提供するカメラの前向きペアを形成してもよい。いくつかの実施形態では、HMDは、第1および第2のカメラの間の第3のカメラ、HMDの上側に向かうオファー、ならびに第1、第2および第3のカメラの間で三角形状を形成することなど、1つまたは複数の追加のカメラを有してもよい。この第3のカメラは、本解決策の深度バッファ生成技法を実施する際の三角測量技法のために、ならびにオブジェクトトラッキングのために使用されてもよい。
システム280は、第1のレンズ226aを含む第1のセンサ(例えば、画像キャプチャデバイス)238aであって、第1のビューの第1の画像234aをキャプチャするように配置された第1のセンサ238aと、第2のレンズ226bを含む第2のセンサ238bであって、第2のビューの第2の画像234bをキャプチャするように配置された第2のセンサ238bとを含むことができる。第1のビューおよび第2のビューは、異なる視点に対応し、深度情報が、第1の画像234aおよび第2の画像234bから抽出されることができるようにしてもよい。例えば、第1のビューは、左眼ビューに対応してもよく、第2のビューは、右眼ビューに対応してもよい。システム280は、第3のレンズ226cを含む第3のセンサ238cであって、第3のビューの第3の画像234cをキャプチャするように配置された第3のセンサ238cを含むことができる。図2Bを参照しながら説明されるように、第3のビューは、第1のレンズ226aおよび第2のレンズ226bの間の軸から離間された上側ビューに対応してもよく、これは、第1のレンズ226aおよび第2のレンズ226bの間の軸に実質的に平行であるエッジ(例えば、テーブルのエッジ)など、第1のセンサ238aおよび第2のセンサ238bを用いて対処することが困難であることがある深度情報を、システム280がより効果的に扱うことができるようにすることができる。
センサ238a...nによってキャプチャされるべき画像の光は、1つまたは複数のレンズ226a...jを通して受光されてもよい。センサ238a...nは、1つまたは複数のレンズ226a...jを介して受光された光を検出し、受光された光に基づいて画像234a...kを生成することができる、限定はされないが、電荷結合デバイス(CCD)または相補型金属酸化物半導体(CMOS)回路類を含む、センサ回路類を含むことができる。例えば、センサ238a...nは、第1のビューに対応する第1の画像234a、および第2のビューに対応する第2の画像234bを生成するために、センサ回路類を使用することができる。1つまたは複数のセンサ238a...nは、処理回路類250に画像234a...kを提供することができる。1つまたは複数のセンサ238a...nは、画像234a...kに、対応するタイムスタンプを提供することができ、これは、凝視情報を計算するために互いに比較されるべきである、第1および第2のビューを表し、同じタイムスタンプを有する特定の第1および第2の画像234a、234bを識別するためになど、画像処理が画像234a...kに対して実行されるとき、画像234a...kの同期を容易にすることができる。
センサ238は、HMDのユーザ(例えば、着用者)の眼または頭の位置、配向、または凝視方向など、情報を提供することができる、アイトラッキングセンサ238またはヘッドトラッキングセンサ238を含むことができる。いくつかの実施形態では、センサ238は、ヘッドトラッキング動作のための画像を提供するように構成されたトラッキングカメラの裏返しである。センサ238は、ユーザの一方または両方の眼の位置または配向のうちの少なくとも1つに対応するデータなど、アイトラッキングデータ248を提供するアイトラッキングセンサ238であってもよい。センサ238は、(例えば、HMDの外部の環境の画像をキャプチャするセンサ238と比較して)ユーザの眼に向かう方向に配向されてもよい。例えば、センサ238は、ユーザの眼に関するセンサデータを検出するために、ユーザの眼に向かって配向されてもよい(例えば、図2B中に示されている)少なくとも1つの第4のセンサ238dを含むことができる。
いくつかの実施形態では、センサ238は、眼位置または眼の凝視方向を検出するために処理されてもよい、ユーザの眼の画像を出力する。いくつかの実施形態では、センサ238は、ユーザの眼に関する画像データを処理し、画像データに基づいて、眼位置または凝視方向を出力する。いくつかの実施形態では、センサ238は、眼に向かって光(例えば、赤外光)を発することと、発せられた光の反射を検出することとによってなど、眼の動きを光学的に測定する。
本明細書で更に説明されるように、アイトラッキング動作は、ユーザの眼が、HMDの使用中に動くとき、ユーザの眼の位置または配向(例えば、凝視方向)など、ユーザの眼に関するデータをトラッキングするために、システム280またはシステム280の構成要素によって実行される任意の機能、動作、ルーチン、論理、または命令を含むことができる。例えば、アイトラッキング動作は、1つまたは複数のセンサ238またはアイトラッカー244のうちの少なくとも1つを使用して実施されてもよい。例えば、アイトラッキング動作は、ユーザの眼の眼位置236を決定するために、センサ238からのアイトラッキングデータ248を処理することができる。いくつかの実施形態では、アイトラッキング動作は、ユーザの眼に関するセンサデータを検出する1つまたは複数のセンサ238と同じ回路板と結合されるか、同じ回路板に取り付けられるか、同じ回路板と一体であるか、同じ回路板を使用して実現されるか、またはさもなければ1つまたは複数のセンサ238を備える、処理回路類250の一部分を使用して実装されたアイトラッカー244を使用して実施されてもよい(オブジェクト位置検出器222または画像レンダラ260のうちの少なくとも1つとは異なる処理ハードウェアを使用して実現されてもよい)。いくつかの実施形態では、アイトラッキング動作は、ユーザの眼に関するセンサデータ(例えば、ユーザの眼の画像)を検出するように構成された1つまたは複数のセンサ238から、有線またはワイヤレス接続によってセンサデータを受信するアイトラッカー244を使用して実施されてもよく、例えば、アイトラッカー244は、オブジェクト位置検出器222または画像レンダラ260のうちの少なくとも1つと同じ処理ハードウェアを使用して実現されてもよい。センサ238のセンサハードウェアおよび/または処理回路類250の処理ハードウェアの様々なそのような組み合わせが、アイトラッキング動作を実現するために使用されてもよい。
アイトラッカー244は、様々な様式で眼位置236を生成することができる。例えば、アイトラッカー244は、ユーザの1つまたは複数の眼の位置または配向のうちの少なくとも1つを表す1つまたは複数のピクセルを識別するために、アイトラッキングデータ248を処理することができる。アイトラッカー244は、アイトラッキングデータ248を使用して、ユーザの1つまたは複数の眼によって反射された光(例えば、850nm光アイトラッキングなど、センサ238からの赤外線または近赤外光など、センサ238からの光)に対応するピクセルに基づいて、眼位置236を識別することができる。アイトラッカー244は、導波路、コンバイナ、またはレンズカメラからのなど、HMDまたはARシステムにおける様々な照明光源または反射からの光を使用することができる。アイトラッカー244は、ユーザの1つまたは複数の眼の瞳孔中心と、対応する反射(例えば、角膜反射)との間のベクトルを決定することによって、眼位置236または凝視方向を決定することができる。眼位置236は、ユーザの1つまたは複数の眼の各々の位置または配向のうちの少なくとも1つなど、位置データを含むことができる。位置データは、カルテシアン、球状、または他の座標系における3次元座標など、3次元空間中にあってもよい。眼位置236は、ユーザの1つまたは複数の眼の凝視方向を含む位置データを含むことができる。
いくつかの実施形態では、アイトラッカー244は、機械学習モデルを含む。機械学習モデルは、アイトラッキングデータ248に基づいて眼位置236を生成するために使用されてもよい。例えば、アイトラッキングデータ248は、眼位置236(または眼位置236の凝視方向)を出力することができる、機械学習モデルへの入力として適用されてもよい。機械学習モデルは、履歴アイトラッキングデータ248と、アイトラッキングデータ248に対応すると決定された眼位置236など、対応する履歴またはラベル付き眼位置236とを含む訓練データを使用して訓練されてもよい。機械学習モデルは、アイトラッキング動作の連続的較正をできるようにするために、アイトラッキングデータ248を使用して連続的に更新されてもよい。機械学習モデルは、機械学習モデルによって生成された候補出力と、履歴眼位置236との間の差を監視することと、差を低減するように機械学習モデルを修正することとによって訓練されてもよい。例えば、目的関数またはコスト関数が、差を使用して評価されてもよく、機械学習モデルは、目的関数またはコスト関数を使用して修正されてもよい。いくつかの実施形態では、機械学習モデルは、ニューラルネットワークを含む。ニューラルネットワークは、第1の層(例えば、入力層)、第2の層(例えば、出力層)、および1つまたは複数の隠れ層など、各々が1つまたは複数のノード(例えば、ニューロン、パーセプトロン)を含む、複数の層を含むことができる。ニューラルネットワークは、処理回路類250が、訓練データを使用してニューラルネットワークを訓練するために修正することができる、層のノードの間で実施されてもよい計算と関連付けられた重みおよびバイアスなど、特性を含むことができる。
センサ238は、センサ238の周りの環境の画像234をキャプチャすることができる。例えば、センサ238は、HMDのユーザの視野中のまたは周りの環境の画像234をキャプチャすることができる。画像234は、環境からキャプチャされた光のパラメータ(例えば、色、輝度、強度)を表す、ピクセルのカラーまたはグレースケールアレイまたは行列など、環境の表現であってもよい。環境は、空、雲、道路、建築物、街路、歩行者、またはサイクリストを含む、自然および人工構造物の両方、地形、または他のオブジェクトを含む、屋内または屋外環境であってもよい。環境は、センサによってキャプチャされた画像234によって表されてもよい、1つまたは複数のオブジェクト(例えば、現実世界のオブジェクト)を含むことができる。
処理回路類250は、オブジェクト位置検出器222を含むことができる。オブジェクト位置検出器222は、センサ238から画像234を受信することができる。オブジェクト位置検出器222は、画像234によって表された1つまたは複数のオブジェクトを検出するために、画像234または画像234の部分を処理することができる。例えば、オブジェクト位置検出器222は、色、形状、エッジを示すピクセルまたはピクセルのグループ、ピクセルまたはピクセルのグループの間のコントラスト、およびピクセルの間の空間関係を処理することによってなど、ピクセルまたはピクセルのグループなど、画像234の要素を処理することによって、画像234によって表されたオブジェクトを検出または識別することができる。オブジェクト位置検出器222は、空間フィルタ、セグメンテーション、またはオブジェクトを検出するように訓練された機械学習モデルを実行することによって、オブジェクトを検出することができる。オブジェクト位置検出器222は、エッジを表すピクセルのグループなど、画像234から候補オブジェクトを識別し、候補オブジェクトを、1つまたは複数のテンプレートオブジェクト(例えば、オブジェクトデータベース中のテンプレートオブジェクト、またはテンプレートオブジェクトの特徴)と比較し、テンプレートオブジェクトに一致する候補オブジェクトに基づいて、画像234のオブジェクトを識別することができる。オブジェクト位置検出器222は、オブジェクトを識別するために、様々なオブジェクト認識アルゴリズムまたはモデルを適用することができる。オブジェクトは、現実世界のまたはシミュレートされたオブジェクトであってもよい。
いくつかの実施形態では、オブジェクト位置検出器222は、画像234中のオブジェクトのタイプ、クラス、または他の識別子を具体的に識別しない。オブジェクト位置検出器222は、オブジェクトが、センサ238によって検出されたという指示をセンサ238から受信することができる。例えば、オブジェクト位置検出器222は、特定の画像234がオブジェクトを表すという指示を受信することができる(その場合、オブジェクト位置検出器222は、オブジェクトに対応する1つまたは複数のピクセルを識別するために、画像234を処理することができる)。いくつかの実施形態では、指示は、オブジェクトに対応する1つまたは複数のピクセルを含むことができる。
いくつかの実施形態では、オブジェクト位置検出器222は、様々なオブジェクト、建築物、構造物、道路、または他の屋内および屋外特徴の位置データを含むことができるオブジェクトデータベースを使用して、オブジェクトを検出する。例えば、オブジェクト位置検出器222は、位置データにオブジェクトまたはオブジェクトの特徴をマッピングするオブジェクトデータベースと通信することができる。オブジェクトデータベースはまた、オブジェクトに関するタイプ、クラス、形状、色、サイズ、または他の特徴に関する情報など、オブジェクトに関するセマンティックまたはテキスト情報を維持してもよい。オブジェクトデータベースは、(センサ238によって検出された画像234を使用して更新されてもよい)画像データを使用する環境の再構成に基づいてもよい。オブジェクトデータベースは、維持され、(例えば、セマンティックまたはテキスト情報または記述子を生成するために)処理され、システム280が、オブジェクトデータベースにアクセスするためにそれと通信することができる、システム280からリモートにあるサーバによって更新されてもよい。オブジェクト位置検出器222は、(例えば、図2Bを参照しながら説明される位置センサ220から)HMDまたはARシステムの位置に関するデータを受信し、オブジェクトデータベースから1つまたは複数の候補オブジェクトを検索するために、データを使用することができる。オブジェクト位置検出器222は、(例えば、センサデータを、オブジェクトデータベースから受信された情報と照合することによって)オブジェクトを識別するために、センサデータを、1つまたは複数の候補オブジェクト、および1つまたは複数の候補オブジェクトに関してオブジェクトデータベースによって維持された情報と比較することができる。
オブジェクト位置検出器222は、画像234、または画像234がオブジェクトを表すという指示など、センサ238から受信された情報を使用して、オブジェクトの位置を決定することができる。例えば、オブジェクト位置検出器222は、オブジェクトに対応する1つまたは複数のピクセルを識別することができる。いくつかの実施形態では、オブジェクト位置検出器222は、オブジェクトの位置としてオブジェクトに対応する1つまたは複数のピクセルを割り当てることによってなど、画像234の画像空間中の位置としてオブジェクトの位置を決定する。いくつかの実施形態では、オブジェクト位置検出器222は、オブジェクトの位置を決定するために深度情報を使用することによってなど、3次元空間(例えば、実世界空間、ARまたはVR空間、HMDまたはARシステムの周りの環境における空間)中の位置としてオブジェクトの位置を決定する。
オブジェクト位置検出器222は、オブジェクトの位置に向かう凝視方向など、オブジェクトの位置を使用して凝視方向を決定することができる。例えば、オブジェクト位置検出器222は、ユーザの眼の予想される位置を識別し、ユーザの眼からオブジェクトの位置への(またはその逆の)ベクトルを決定することができる。いくつかの実施形態では、予想される位置は、左眼位置および右眼位置を含み、オブジェクト位置検出器222は、左眼位置および右眼位置を平均化すること、または左眼位置からオブジェクトの位置への、および右眼位置からオブジェクトの位置へのそれぞれのベクトルを平均化することによってなど、左眼位置および右眼位置を使用して凝視方向を決定することができる。
処理回路類250は、ユーザがオブジェクトを凝視していることを検出することができる。例えば、処理回路類250は、(例えば、オブジェクト位置検出器222が、それの位置を決定しなかった他のオブジェクトと比較して)ユーザがオブジェクトを凝視していることを検出するために、ユーザの眼に関するセンサデータ、またはコンテキスト情報など、シーンの理解を使用することができる。処理回路類250は、ユーザが、オブジェクトを凝視しているかどうかに関する信頼度スコアを各オブジェクトに割り当てることによってなど、ユーザがオブジェクトを凝視していることを検出するために、センサデータの任意の組み合わせを使用し、センサデータの寄与から重み付き平均として信頼度スコアを決定することができる。処理回路類250は、信頼度スコアを閾値信頼度と比較し、信頼度スコアが、閾値信頼度を満たすかまたは超えることに反応して、ユーザが、オブジェクトを凝視していることを検出することができる。いくつかの実施形態では、処理回路類250は、オブジェクトが、シーンにおける(例えば、HMDの視野中の)せいぜい閾値数のオブジェクトのうちの1つであることに基づいて、相対的により高い信頼度スコアをオブジェクトに割り当てる。例えば、オブジェクトが、シーンにおける唯一のオブジェクトである場合、ユーザが、オブジェクトを凝視していることのより大きい尤度があることがある。オブジェクトが、別の話者など、顔であるかまたは顔を含むことが検出された場合、ユーザが、オブジェクトを凝視していることのより大きい尤度があることがある。
処理回路類250は、画像レンダラ260を含むことができる。画像レンダラ260は、3D画像レンダラであってもよい。画像レンダラ260は、HMDを介してなど、1つまたは複数のディスプレイデバイス上に表示または提示すべき表示または提示画像を処理、生成およびレンダリングするために、画像に関連する入力データを使用してもよい。画像レンダラ260は、ディスプレイ264上での表示のためのシーンまたはビューの2D画像であって、3D様式でシーンまたはビューを表す2D画像を生成または作成することができる。レンダリングされるべき表示または提示データは、シーンまたはビューにおける3Dオブジェクトの幾何学的モデルを含むことができる。画像レンダラ260は、センサ238によってキャプチャされた画像234のための3D表示データなど、所望または所定の3D画像を提供するためにレンダリングされるべき表示または画像データのピクセル値を決定、計算または算出してもよい。画像レンダラ260は、画像234を受信し、眼位置236を受信し、眼位置236(または眼位置236に対応する凝視方向)に基づいて、ディスプレイ264による提示のために拡張現実情報をどこに配置すべきかを決定するためになど、画像234および眼位置236を使用して、表示画像を生成することができる。
画像レンダラ260は、時間および/または空間パラメータに基づいて、1つまたは複数のディスプレイ264への表示データのフレームをレンダリングすることができる。画像レンダラ260は、画像が、センサ238によってキャプチャされた時間に対応するなど、時間的に連続して画像データのフレームをレンダリングすることができる。画像レンダラ260は、HMDの位置および配向など、センサ238に対する位置および/または配向の変化に基づいて、表示データのフレームをレンダリングすることができる。画像レンダラ260は、左眼ビューを表示し、その後に右眼ビューを表示すること、またはその逆など、左眼ビューおよび右眼ビューに基づいて、表示データのフレームをレンダリングすることができる。
画像レンダラ260は、画像234a...kをキャプチャしたセンサ238a...nの移動に関する動きデータを使用して、表示画像を生成することができる。例えば、センサ238a...nは、(例えば、図2BのHMDシステム200に関して説明される)センサ238a...nを含むHMDを着用するユーザの頭の移動により、位置または配向のうちの少なくとも1つが変化してもよい。処理回路類250は、位置センサ(例えば、図2Bを参照しながら説明される位置センサ220)から動きデータを受信することができる。画像レンダラ260は、画像234a...kがキャプチャされた第1の時点と、表示画像が表示される第2の時点との間での位置または配向のうちの少なくとも1つの変化を算出するために、動きデータを使用し、算出された変化を使用して、表示画像を生成することができる。画像レンダラ260は、画像234a...kに対して表示画像を補間および/または外挿するために、動きデータを使用することができる。
画像レンダラ260は、処理回路類250の一部として示されているが、画像レンダラは、例えば、HMD内のディスプレイデバイスなど、別個のデバイスまたは構成要素の他の処理回路類の一部として形成されてもよい。
システム280は、1つまたは複数のディスプレイ264を含むことができる。1つまたは複数のディスプレイ264は、任意のタイプおよび形態の電子視覚ディスプレイであってもよい。ディスプレイは、所定の解像度およびリフレッシュレートおよびサイズを有するか、または所定の解像度およびリフレッシュレートおよびサイズをもって選択されてもよい。1つまたは複数のディスプレイは、LCD、LED、ELEDまたはOLEDベースディスプレイなど、任意のタイプの技術のものであってもよい。1つまたは複数のディスプレイのフォームファクタは、眼鏡またはゴーグルとしてHMD内にフィットするようなものであってもよく、そこにおいて、ディスプレイは、眼鏡またはゴーグルのフレーム内の傾きである。ディスプレイ264は、処理回路類250または画像レンダラ260またはセンサ238のリフレッシュのレートまたはフレームレートと同じまたは異なるリフレッシュレートを有してもよい。ディスプレイ264は、1つまたは複数の導波路(例えば、図2Bを参照しながら説明される導波路228)を含むことができ、したがって、アイトラッキング動作の較正は、アイトラッキングによって示された瞳孔位置を使用して、導波路の動作をより正確に制御するために使用されてもよい。
次に図2Bを参照すると、いくつかの実現例では、HMDシステム200は、システム280を実現するために使用されてもよい。HMDシステム200は、HMD本体202、左センサ238a(例えば、左画像キャプチャデバイス)、右センサ238b(例えば、右画像キャプチャデバイス)、およびディスプレイ264を含むことができる。HMD本体202は、眼鏡またはヘッドセットなど、様々なフォームファクタを有してもよい。センサ238a、238bは、HMD本体202に取り付けられるか、またはHMD本体202において統合されてもよい。左センサ238aは、第1のビュー(例えば、左眼ビュー)に対応する第1の画像をキャプチャすることができ、右センサ238bは、第2のビュー(例えば、右眼ビュー)に対応する画像をキャプチャすることができる。
HMDシステム200は、上側センサ238c(例えば、上側画像キャプチャデバイス)を含むことができる。上側センサ238cは、第1のビューまたは第2のビューとは異なる第3のビューに対応する画像をキャプチャすることができる。例えば、上側センサ238cは、左センサ238aと右センサ238bとの間に、および左センサ238aと右センサ238bとの間のベースラインの上に位置決めされてもよい。これは、左および右センサ238a、238bによってキャプチャされた画像から容易に抽出されないことがある深度情報をもつ画像を、上側センサ238cがキャプチャすることができるようにすることができる。例えば、深度情報は、エッジ(例えば、テーブルのエッジ)が、左および右センサ238a、238bの間のベースラインに平行である、左および右センサ238a、238bによってキャプチャされた画像から効果的に抽出されることが困難であることがある。ベースラインから離間された上側センサ238cは、第3の画像を、異なる視点を有するようにキャプチャし、これにより、左および右センサ238a、238bとは異なる深度情報が、第3の画像から抽出されることができるようにすることができる。
HMDシステム200は、センサ238a、238b、および238cならびにアイトラッキングセンサ238からセンサデータを受信することと、アイトラッキング動作を較正するために、受信された画像を処理することとを含む、図2Aを参照しながら説明された機能のうちの少なくともいくつかを実施することができる、処理回路類250を含むことができる。
HMDシステム200は、通信回路類204を含むことができる。通信回路類204は、クライアントデバイス208またはサーバ212のうちの少なくとも1つに電子通信信号を送信し、クライアントデバイス208またはサーバ212のうちの少なくとも1つから電子通信信号を受信するために使用されてもよい。通信回路類204は、様々なシステム、デバイス、またはネットワークとのデータ通信を行うための有線またはワイヤレスインターフェース(例えば、ジャック、アンテナ、送信機、受信機、トランシーバ、ワイヤ端末)を含むことができる。例えば、通信回路類204は、イーサネットベース通信ネットワークを介してデータを送信および受信するためのイーサネットカードおよびポートを含むことができる。通信回路類204は、ローカルエリアネットワーク(例えば、建築物LAN)、ワイドエリアネットワーク(例えば、インターネット、セルラーネットワーク)を介して通信し、および/または直接通信(例えば、NFC、Bluetooth)を行うことができる。通信回路類204は、有線および/またはワイヤレス通信を行うことができる。例えば、通信回路類204は、1つまたは複数のワイヤレストランシーバ(例えば、Wi-Fiトランシーバ、Bluetoothトランシーバ、NFCトランシーバ、セルラートランシーバ)を含むことができる。例えば、通信回路類204は、クライアントデバイス208またはサーバ212のうちの少なくとも1つとの有線またはワイヤレス接続を確立することができる。通信回路類204は、クライアントデバイス208とのUSB接続を確立することができる。クライアントデバイス208は、クライアントデバイス208と通信回路類204との間の通信を容易にするための処理回路類216aを含むことができる。類似的に、サーバ212は、サーバ212と通信回路類204との間の通信を容易にするための処理回路類216bを含むことができる。いくつかの実施形態では、処理回路類216は、通信回路類204および/または処理回路類250と同じであるかまたは類似する。処理回路類216は、図3A~図3Cを参照しながら以下でより詳細に説明される、デバイス302の機能、プロセス、技法、データ処理などのうちのいずれかを実施するように構成されてもよい。
HMDシステム200は、異なるアーキテクチャを使用して展開されてもよい。いくつかの実施形態では、HMD(例えば、HMD本体202、およびHMD本体202に取り付けられた構成要素)は、処理回路類250を備え、独立型ポータブルユニットである。いくつかの実施形態では、HMDは、ステージングデバイス、モバイルフォンまたはウェアラブルコンピューティングデバイスの形態のなど、処理回路類または処理回路類の部分を有する、任意のタイプのポータブルもしくはモバイルコンピューティングデバイスまたはコンパニオンデバイスと協働または連動して作動する、処理回路類250の部分を有する。いくつかの実施形態では、HMDは、デスクトップコンピューティングデバイスの、処理回路類または処理回路類の部分と協働または連動して作動する、処理回路類250の部分を有する。いくつかの実施形態では、HMDは、データセンタまたはクラウドコンピューティング環境においてリモートで展開されてもよい、サーバコンピューティングデバイスの、処理回路類または処理回路類の部分と協働または連動して作動する、処理回路類250の部分を有する。上記の実施形態のうちのいずれかにおいて、HMD、またはHMDと連動して作動する任意のコンピューティングデバイスは、本明細書で説明される機能性および動作のうちのいずれかを実施する際に、1つまたは複数のサーバと通信してもよい。
クライアントデバイス208は、モバイルまたはポータブルデバイス(電話、タブレット、ラップトップなど)、あるいはデスクトップまたはパーソナルコンピューティング(PC)デバイスなど、任意のフォームファクタの、任意のタイプおよび形態の汎用または専用コンピューティングデバイスであってもよい。いくつかの実施形態では、クライアントデバイスは、処理回路類または処理回路類の部分を有してもよい、ステージングデバイスの形態のなど、専用デバイスであってもよい。専用デバイスは、任意のタイプおよび形態のアクセサリアタッチメントを介して衣類または身体にクライアントデバイス208を取り付けることによってなど、HMDを着用しながら、ユーザによって携帯されるように設計されてもよい。クライアントデバイス208は、図1および図3に関連して説明される画像およびレンダリング処理パイプラインの任意の部分を実施するために使用されてもよい。HMDは、画像キャプチャおよびディスプレイ264へのレンダリングなど、画像およびレンダリング処理パイプラインのいくつかまたは他の部分を実施してもよい。HMDは、HMDのものよりも高い仕様を有し得るクライアントデバイス208の計算能力およびリソースを活用するために、クライアントデバイス208との間でデータを送信および受信することができる。
サーバ212は、1つまたは複数のクライアントデバイス208、あるいはクライアントとして働く他のデバイスに、アプリケーション、機能性またはサービスを提供する、任意のタイプまたは形態のコンピューティングデバイスであってもよい。いくつかの実施形態では、サーバ212は、クライアントデバイス208であってもよい。サーバ212は、1つまたは複数のネットワークを介してアクセス可能なデータセンタまたはクラウドコンピューティング環境において展開されてもよい。HMDおよび/またはクライアントデバイス208は、サーバ212の計算能力およびリソースを使用および活用することができる。HMDおよび/またはクライアントデバイス208は、図1および図3に関連して説明される画像およびレンダリング処理パイプラインの任意の部分を実現することができる。サーバ212は、図1および図3に関連して説明される画像およびレンダリング処理パイプラインの任意の部分、およびいくつかの場合には、クライアントデバイス208またはHMDによって実施されない画像およびレンダリング処理パイプラインの任意の部分を実現することができる。サーバ212は、HMDおよび/またはクライアントデバイス208上のアプリケーション、ソフトウェア、実行可能命令および/またはデータに対する任意のアップデートを用いてHMDおよび/またはクライアントデバイス208を更新するために、使用されてもよい。
システム200は、位置センサ220を含むことができる。位置センサ220は、本体202の位置または配向のうちの少なくとも1つを出力することができる。画像キャプチャデバイス238a、238b、238cが、(例えば、位置センサ220に対して所定の位置において)本体202に固定されてもよいとき、位置センサ220は、各センサ238a、238b、238cの位置または配向のうちの少なくとも1つを出力することができる。位置センサ220は、慣性測定ユニット(IMU)、加速度計、ジャイロスコープ、または磁力計(例えば、磁気コンパス)のうちの少なくとも1つを含むことができる。
システム200は、可変焦点システム224を含むことができる。可変焦点システム224は、可変焦点距離を有することができ、したがって、可変焦点システム224は、焦点距離または倍率が変化するとき、焦点(例えば、焦点のポイントまたは面)を変更することができる。可変焦点システム224は、機械的レンズ、液体レンズ、または偏光ビームプレートのうちの少なくとも1つを含むことができる。
いくつかの実施形態では、ディスプレイ264は、1つまたは複数の導波路228を含む。導波路228は、1つまたは複数のプロジェクタ232から、ディスプレイ264によって表示されるべき表示画像に対応する光を受光(例えば、内部結合)し、HMDのユーザによる閲覧のためになど、表示画像を出力(例えば、内部結合)することができる。導波路228は、適切なスケールで表示画像を出力するために、受光された光の水平または垂直拡張を実施することができる。導波路228は、受光された光に基づいて表示画像を提供するために、1つまたは複数のレンズ、回折格子、偏光表面、反射表面、またはそれらの組み合わせを含むことができる。プロジェクタ232は、1つまたは複数の導波路228に提供されるべき光を生成するために、特に、LCD、LED、OLED、DMD、またはLCOSデバイスなど、様々な投影デバイスのうちのいずれかを含むことができる。プロジェクタ232は、処理回路類250から(例えば、画像レンダラ260から)表示画像を受けることができる。1つまたは複数の導波路228は、(例えば、HMDの周りの実世界環境からの光を、出力された表示画像の光と組み合わせる)コンバイナとして動作するために、少なくとも部分的に透明であってもよい、ディスプレイ表面(例えば、ガラス)を通して提供されてもよい。
ディスプレイ264、および1つまたは複数の導波路228あるいは1つまたは複数のプロジェクタ232など、ディスプレイ264の構成要素の動作は、アイトラッキング動作の較正に反応して修正または制御されてもよい。例えば、処理回路類250は、1つまたは複数のプロジェクタ232が、較正されたアイトラッキング動作に基づいて、ユーザの各眼に対応する瞳孔位置に基づいて、1つまたは複数の導波路228を使用して表示画像を提供することを引き起こすことができる。処理回路類250は、1つまたは複数の導波路228を介して提供された表示画像が、ユーザの眼の凝視方向と整合されるように1つまたは複数の導波路228の均一性を補正するために、較正されたアイトラッキング動作を使用することができる。
ディスプレイ264は、較正されたアイトラッキング動作に基づいて、窩状レンダリングを実施することができ、これは、アイトラッキング動作によって生成された凝視方向に対応する凝視ポイントを示すことができる。例えば、処理回路類250は、凝視ポイントに基づいて、ディスプレイ264のFOVの中央領域(例えば、凝視ポイントから閾値距離内の複数のピクセル)、ディスプレイ264のFOVの周辺領域(例えば、表示画像のエッジの閾値距離内にあるか、または凝視ポイントから閾値距離超にある、表示画像の複数のピクセルによって表された周辺領域)のうちの少なくとも1つを識別することができる。処理回路類250は、中央領域におけるよりも低い品質(例えば、解像度、ピクセル密度、フレームレート)を周辺領域において有するように、表示画像を生成することができ、これは、HMDシステム200の動作と関連付けられた処理要求を低減することができる。
C.複数のデバイスにわたってニューラルネットワークを分散させるためのシステム、方法、およびデバイス
次に図3Aを参照すると、いくつかの実施形態によるシステム300は、第1のデバイス302aおよび第2のデバイス302bを含む。いくつかの実施形態では、第1のデバイス302aは、図2A~図2Bを参照しながら上記でより詳細に説明されたHMDおよび/またはARシステムである。いくつかの実施形態では、第1のデバイス302aは、図2A~図2Bを参照しながら上記でより詳細に説明されたHMDおよび/またはARシステムのコンピュータデバイスである。例えば、第1のデバイス302aは、図2A~図2Bを参照しながら上記でより詳細に説明されたHMDおよび/またはARシステムの中央処理装置(CPU)またはGPUであってもよい。いくつかの実施形態では、第1のデバイス302aは、クライアントデバイス(例えば、クライアントデバイス208)、モバイルコンピュータデバイス、第2のデバイス302bよりも低い/小さい処理能力をもつコンピュータ、AIアクセラレータ108などである。いくつかの実施形態では、第2のデバイス302bは、リモートデバイス、外部デバイス、HMDおよび/またはARシステムのローカルであるが別個の処理装置、AIアクセラレータ108、モバイルコンピューティングデバイス、クラウドにおけるサーバなど、あるいは第1のデバイス302a以外の任意のデバイスである。例えば、第2のデバイス302bは、サーバ212、デスクトップコンピュータ、外部コンピュータ、ネットワークコンピュータ、リモートコンピュータなどであってもよい。いくつかの実施形態では、第2のデバイス302bは、第1のデバイス302aよりも大きいまたは超える処理能力をもつ、第1のデバイス302a以外の任意のコンピュータまたはコンピューティングデバイスである。いくつかの実施形態では、第1のデバイス302aおよび第2のデバイス302bは、類似のコンピューティングデバイスである。いくつかの実施形態では、図3Aおよび図3C中に示されているシステム300は、複数のコンピューティングデバイスにわたってニューラルネットワーク計算を分散させるニューラルネットワーク「パイプライン」と呼ばれる。
次に図3Aを参照すると、いくつかの実施形態によるシステム300は、第1のデバイス302aおよび第2のデバイス302bを含む。いくつかの実施形態では、第1のデバイス302aは、図2A~図2Bを参照しながら上記でより詳細に説明されたHMDおよび/またはARシステムである。いくつかの実施形態では、第1のデバイス302aは、図2A~図2Bを参照しながら上記でより詳細に説明されたHMDおよび/またはARシステムのコンピュータデバイスである。例えば、第1のデバイス302aは、図2A~図2Bを参照しながら上記でより詳細に説明されたHMDおよび/またはARシステムの中央処理装置(CPU)またはGPUであってもよい。いくつかの実施形態では、第1のデバイス302aは、クライアントデバイス(例えば、クライアントデバイス208)、モバイルコンピュータデバイス、第2のデバイス302bよりも低い/小さい処理能力をもつコンピュータ、AIアクセラレータ108などである。いくつかの実施形態では、第2のデバイス302bは、リモートデバイス、外部デバイス、HMDおよび/またはARシステムのローカルであるが別個の処理装置、AIアクセラレータ108、モバイルコンピューティングデバイス、クラウドにおけるサーバなど、あるいは第1のデバイス302a以外の任意のデバイスである。例えば、第2のデバイス302bは、サーバ212、デスクトップコンピュータ、外部コンピュータ、ネットワークコンピュータ、リモートコンピュータなどであってもよい。いくつかの実施形態では、第2のデバイス302bは、第1のデバイス302aよりも大きいまたは超える処理能力をもつ、第1のデバイス302a以外の任意のコンピュータまたはコンピューティングデバイスである。いくつかの実施形態では、第1のデバイス302aおよび第2のデバイス302bは、類似のコンピューティングデバイスである。いくつかの実施形態では、図3Aおよび図3C中に示されているシステム300は、複数のコンピューティングデバイスにわたってニューラルネットワーク計算を分散させるニューラルネットワーク「パイプライン」と呼ばれる。
第1のデバイス302aは、いくつかの実施形態によれば、入力データ110を受信し、低減されたデータセット310を出力する。第2のデバイス302bは、入力として、低減されたデータセット310を受信し、第1のデバイス302aに出力データ112を出力または提供することができる。いくつかの実施形態では、第1のデバイス302aは、第1のデバイス302aが、入力データ110に基づいて決定を正確に行うことができない場合、第2のデバイス302bに、低減されたデータセット310を出力する。
第1のデバイス302aおよび第2のデバイス302bは、各々、処理回路304a、プロセッサ306a、およびメモリ308aを含むことができる。処理回路304は、処理回路類250と同じであるかまたは類似してもよい。第1のデバイス302aおよび第2のデバイス302bは、各々、第1のデバイス302aと第2のデバイス302bとの間の通信(例えば、データの転送)を容易にする通信インターフェースを含むことができる。第1および第2のデバイス302の通信インターフェースは、第1および第2のデバイス302aおよび302bの間のデータ通信を行うための有線またはワイヤレス通信インターフェース(例えば、ジャック、アンテナ、送信機、受信機、トランシーバ、ワイヤ端末など)であるか、あるいは有線またはワイヤレス通信インターフェースを含むことができる。様々な実施形態では、通信インターフェースを介した通信は、直接的(例えば、ローカル有線またはワイヤレス通信)であることも、通信ネットワーク(例えば、WAN、インターネット、セルラーネットワークなど)を介することもある。例えば、インターフェースは、イーサネットベース通信リンクまたはネットワークを介してデータを送信および受信するためのイーサネットカードおよびポートを含むことができる。別の例では、インターフェースは、ワイヤレス通信ネットワークを介して通信するためのWi-Fiトランシーバを含むことができる。別の例では、インターフェースの一方または両方は、セルラーまたはモバイルフォン通信トランシーバを含むことができる。いくつかの実施形態では、通信インターフェースの両方は、イーサネットインターフェースまたはUSBインターフェースである。
まだ図3Aを参照すると、第1および第2のデバイス302aおよび302bは、プロセッサ306およびメモリ308を含む処理回路304を含むように示されている。処理回路304は、処理回路304および処理回路304の様々な構成要素が、通信インターフェースを介してデータを送信および受信することができるように、通信インターフェースに通信可能に接続されてもよい。プロセッサ306は、汎用プロセッサ、特定用途向け集積回路(ASIC)、1つまたは複数のフィールドプログラマブルゲートアレイ(FPGA)、処理構成要素のグループ、あるいは他の好適な電子処理構成要素として実現されてもよい。
メモリ308(例えば、メモリ、メモリユニット、記憶デバイスなど)は、本出願で説明される様々なプロセス、層およびモジュールを完成させるかまたは容易にするためのデータおよび/またはコンピュータコードを格納するための、1つまたは複数のデバイス(例えば、RAM、ROM、フラッシュメモリ、ハードディスク記憶装置など)を含むことができる。メモリ308は、揮発性メモリまたは不揮発性メモリであるか、あるいは揮発性メモリまたは不揮発性メモリを含むことができる。メモリ308は、本出願で説明される様々なアクティビティおよび情報構造をサポートするための、データベース構成要素、オブジェクトコード構成要素、スクリプト構成要素、または任意の他のタイプの情報構造を含むことができる。いくつかの実施形態によれば、メモリ308は、処理回路304を介してプロセッサ306に通信可能に接続され、本明細書で説明される1つまたは複数のプロセスを(例えば、処理回路304および/またはプロセッサ306によって)実行するためのコンピュータコードを含む。
第1のデバイス302aは、本開示で説明される、任意のセンサ、システム、デバイスなどから入力データ110を受信することができる。例えば、入力データ110は、アイトラッキングデータ、画像データ、カメラデータ、オブジェクト検出データ、頂点を含む1つまたは複数の仮想オブジェクトに関するデータ、テクスチャ、エッジ、表面などであってもよい。いくつかの実施形態では、入力データ110は、凝視方向230、眼位置236、アイトラッキングデータ248、センサ238によって収集されたデータ、画像234、画像レンダラ260によって出力されたデータなどのうちのいずれかである。
第1のデバイス302aは、ニューラルネットワーク114aとして示されている、ニューラルネットワークの1つまたは複数の層の第1のセット(例えば、層116~122のうちの1つもしくは複数、または層116~122に類似した1つもしくは複数の層)、あるいは第1のニューラルネットワークを含む。類似的に、第2のデバイス302bは、ニューラルネットワーク114bとして示されている、ニューラルネットワークの1つまたは複数の層の第2のセット(例えば、層116~122のうちの1つもしくは複数、または層116~122に類似した1つもしくは複数の層)、あるいは第2のニューラルネットワークを含む。いくつかの実施形態では、ニューラルネットワーク114aは、トータルで1:nの層を有するニューラルネットワーク(例えば、ニューラルネットワーク114)の1:xの層の第1のセットである。いくつかの実施形態では、ニューラルネットワーク114bは、トータルで1:nの層を有する同じニューラルネットワーク(例えば、ニューラルネットワーク114)のx:nの層の第2のセットである。いくつかの実施形態では、ニューラルネットワーク114aおよびニューラルネットワーク114bは、それら自体の入力、出力、および隠れ層をもつ別個で独立したニューラルネットワークとみなされる。いくつかの実施形態では、ニューラルネットワーク114aは、処理回路304a、プロセッサ306a、およびメモリ308aのうちのいずれかの上に実現される。例えば、メモリ308aは、プロセッサ306aおよび/または処理回路304a上での実現および処理のために、ニューラルネットワーク114aを格納することができる。いくつかの実施形態では、第1のデバイス302aは、HMDおよび/またはARシステムのGPUであるか、あるいはHMDおよび/またはARシステムのGPUを含み、ニューラルネットワーク114aは、GPU上に実現される。同様に、第1のデバイス302aは、第1のデバイス302aの上でのニューラルネットワーク114aの実現のためのCPUおよび/またはAIアクセラレータ(例えば、AIアクセラレータ108、AIアクセラレータ108に類似したAIアクセラレータなど)であるか、あるいはCPUおよび/またはAIアクセラレータを含む。
ニューラルネットワーク114aは、入力データ110の1つまたは複数の特徴を識別するように実現されてもよい。いくつかの実施形態では、第1のデバイス302aは、更なる解析、データ処理、画像表示、アクションを実施することなどのために、入力データ110の1つまたは複数の識別された特徴を使用する。ニューラルネットワーク114aは、入力データ110の1つまたは複数の特徴を検出するように、第1のデバイス302aによって実現されてもよい。いくつかの実施形態では、第1のデバイス302aは、1つまたは複数の特徴が、ニューラルネットワーク114aによって検出されたという、または1つまたは複数の特徴が、ニューラルネットワーク114aによって検出されなかったという指示または通知を、第2のデバイス302bに出力する。第2のデバイス302bは、低減されたデータセット310が、ニューラルネットワーク114bへの入力として使用されるべきであるかどうかを決定するために、指示または通知を使用することができる。
いくつかの実施形態では、第1のデバイス302aは、低減されたデータセット310として、第2のデバイス302bに入力データ110の1つまたは複数の識別された特徴のうちのいずれかを出力する。例えば、第1のデバイス302aが、オブジェクト、人、形状などを識別するために、画像データを処理している場合、第1のデバイス302aは、オブジェクト、人、形状などを識別するために、ニューラルネットワーク114aに画像データ(例えば、入力データ110)を提供することができる。オブジェクト、人、形状などの更なる解析および/または識別が、必要とされる場合、ニューラルネットワーク114aは、追加の特徴識別および/または検出のために、識別されたオブジェクト、人、形状などの画像データを含む低減されたデータセット310を、第2のデバイス302bに出力することができる。例えば、入力データ110が、画像データであり、人が画像データ中に存在するかどうかを識別するように、ニューラルネットワーク114aが構成された場合、ニューラルネットワーク114aは、人が画像データ中に存在するかどうかを識別し、必要とされる場合、更なる識別のために、第2のデバイス302bのニューラルネットワーク114bに、低減されたデータセット310として、人と関連付けられた画像データを出力することができる。第2のデバイス302bは、低減されたデータセット310を受信し、人の追加の特徴(例えば、顔の表情、ムード、年齢など)を識別することができる。
いくつかの実施形態では、ニューラルネットワーク114aおよび/またはニューラルネットワーク114bの出力(例えば、出力データ112および/または低減されたデータセット310)は、いくらかの特徴が、入力データ(例えば、入力データ110および/または低減されたデータセット310)中に実在するかどうかの検出を含む。いくつかの実施形態では、ニューラルネットワーク114aおよび/またはニューラルネットワーク114bの出力は、ある精度または閾値を用いた、ある位置におけるオブジェクトの検出、ある方向にある眼、凝視などの検出を含む。例えば、ニューラルネットワーク114aおよび/またはニューラルネットワーク114bの出力は、入力データ110中のオブジェクトまたは特徴の識別、ならびに/あるいは精度/誤差スコア(例えば、精度aおよび/または誤差e)のうちのいずれかを含むことができる。いくつかの実施形態では、ニューラルネットワーク114aおよび/またはニューラルネットワーク114bの出力は、アクションの決定、あるいは第1のデバイス302aおよび/または第2のデバイス302bのうちの1つによって取られるべきアクションを含む。いくつかの実施形態では、ニューラルネットワーク114aおよび/またはニューラルネットワーク114bの出力は、いくらかの特徴またはオブジェクトが、ある閾値(例えば、精度aのある閾値および/または誤差eのある閾値)内で入力データ(例えば、入力データ110)中に存在しない(例えば、実在しない)かどうかの指示を含む。例えば、ニューラルネットワーク114aおよび/またはニューラルネットワーク114bは、あるオブジェクトまたは特徴が、入力データ110中に存在しないと、あるレベルの確実性をもって(例えば、ある程度の誤差eおよび/または精度aをもって)決定することができる。
いくつかの実施形態では、第1のデバイス302aは、入力データ110の識別または検出された特徴が、アクションを実施するためには不十分であることに応答して、更なる解析または処理のために、第2のデバイス302bに、低減されたデータセット310を出力する。例えば、入力データ110の追加の特徴が、アクションを実施する前に識別されることを、第1のデバイス302aが必要とし、ニューラルネットワーク114aによって識別または検出された特徴が、追加の特徴を含まない場合、第1のデバイス302aは、第2のデバイス302bに、低減されたデータセット310を出力することができる。
いくつかの実施形態では、低減されたデータセット310は、入力データ110と比較して、サイズがより小さい、圧縮された、サイズが低減されたなどである。例えば、入力データ110が、5メガバイトである画像データである場合、低減されたデータセット310は、1メガバイトである画像データであってもよい。いくつかの実施形態では、ニューラルネットワーク114aは、入力データ110を受信し、サイズが低減された、低減されたデータセット310を出力するように構成される。いくつかの実施形態では、ニューラルネットワーク114aは、入力データ110を受信し、低減されたデータセット310を生成するために入力データ110を圧縮するように構成される。いくつかの実施形態では、ニューラルネットワーク114aは、入力データ110に基づいて、低減されたデータセット310を生成するために、損失のあるまたは損失のない圧縮のうちのいずれかを使用する。損失のあるまたは損失のないデータ(すなわち、低減されたデータセット310)は、次いで、第1のデバイス302aと第2のデバイス302bとの間で通信され、第1のデバイス302aおよび第2のデバイス302bによって理解されてもよい。いくつかの実施形態では、低減されたデータセット310は、入力データ110のサブセットである。いくつかの実施形態では、低減されたデータセット310は、ニューラルネットワーク114aによって選択された、入力データ110の部分である。例えば、ニューラルネットワーク114aは、いくらかの特徴が、許容できるレベルの精度aおよび/または誤差eをもって、入力データ110のいくらかの部分中で検出されたが、その他の特徴またはオブジェクトが、許容できるレベルの精度aおよび/または誤差eをもって、入力データ110の他の部分中で検出されることができなかったと決定することができる。ニューラルネットワーク114aは、ニューラルネットワーク114bに、低減されたデータセット310として、入力データ110の他の部分を出力することができ、これは、入力データ110の残り(例えば、特徴および/またはオブジェクトが、閾値レベルの精度aおよび/または誤差eをもって、ニューラルネットワーク114aによってそれらについて検出された、入力データ110の部分)は、追加の処理のために必要とされないからである。
いくつかの実施形態では、第1のデバイス302aは、ニューラルネットワーク114aよって識別された入力データ110の1つまたは複数の特徴の精度、誤差、信頼度、誤差行列、混同行列などを決定するように構成される。例えば、第1のデバイス302aは、ニューラルネットワーク114aの予測精度を識別する混同行列を生成または更新することができる。第1のデバイス302aは、以下、ニューラルネットワーク114aの「精度」aと呼ばれる、ニューラルネットワーク114aの信頼区間、誤差、予測誤差、精度などを識別することができる。いくつかの実施形態では、精度aは、正規化された値(例えば、0から1までの値、ここで、0は最も低い精度であり、1は最も高い精度である)である。いくつかの実施形態では、精度aは、パーセンテージ(例えば、0%から100%まで、ここで、0%は最も低い精度であり、100%は最も高い精度である)である。いくつかの実施形態では、第1のデバイス302aは、更なるデータ解析が、第2のデバイス302bのニューラルネットワーク114bを使用して実施されるべきであるかどうかを決定するために、ニューラルネットワーク114aの精度aを使用する。いくつかの実施形態では、第1のデバイス302aは、第2のデバイス302bのニューラルネットワーク114bが、入力データ110を更に解析するために使用されるべきであるかどうかを決定するために、精度aを閾値athresholdと比較する。いくつかの実施形態では、精度aが、閾値athresholdを満たすかまたは超える(あるいは誤差を考慮する場合、以下である)場合、第1のデバイス302aは、ニューラルネットワーク114aが十分に正確であると決定し、低減されたデータセット310は、第2のデバイス302bに提供されない。いくつかの実施形態では、精度が、閾値athresholdよりも小さい(または誤差を考慮する場合、以上である)場合、第1のデバイス302aは、更なるまたは追加のデータ解析が入力データ110に対して実施されるべきであると決定し、第2のデバイス302bに、低減されたデータセット310を提供する。
いくつかの実施形態では、第1のデバイス302aは、ニューラルネットワーク114aの結果(例えば、入力データ110の識別された/検出された特徴)が、1つまたは複数のアクションを実施するために十分に正確であるかどうかを決定するために、精度aおよび閾値athresholdを使用する。例えば、a>athresholdまたはa≧athresholdである場合、第1のデバイス302aは、ニューラルネットワーク114aの結果または出力が、1つまたは複数のアクションを実施するために十分であると決定することができる。いくつかの実施形態では、a>athresholdまたはa≧athresholdである場合、第1のデバイス302aは、第2のデバイス302bに、低減されたデータセット310を提供することなしに、1つまたは複数のアクションを実施する。このようにして、第1のデバイス302aは、処理時間、および第1のデバイス302aと第2のデバイス302bとの間の送信の回数を低減することができ、それにより、エネルギー消費および帯域幅を節約する。有利に、これは、第1のデバイス302aと第2のデバイス302bとの間のトラフィックを低減し、データを送信することと関連付けられたレイテンシを低減し、第1のデバイス302aと第2のデバイス302bとの間でデータを転送するコストを低減する(例えば、エネルギー消費を減少させる)。
いくつかの実施形態では、第1のデバイス302aは、ニューラルネットワーク114aの各出力について(例えば、ニューラルネットワーク114aによって識別/検出された入力データ110の各特徴について)精度aまたは誤差eを決定する。いくつかの実施形態では、第1のデバイス302aは、それぞれ、ニューラルネットワーク114aの各出力についての精度aおよび/または誤差eを、対応する閾値athresholdおよびethresholdと比較する。いくつかの実施形態では、第1のデバイス302aは、ニューラルネットワーク114aの出力のうちの1つまたは複数について、精度aが、対応する閾値athresholdよりも小さいことに応答して、または誤差eが、対応する閾値ethresholdよりも大きいことに応答して、低減されたデータセット310を出力する。いくつかの実施形態では、低減されたデータセット310は、ニューラルネットワーク114bが、不十分な精度aおよび/または過大な誤差eと関連付けられた入力データ110の特徴を識別するために必要とされる情報を含む。例えば、ニューラルネットワーク114aが、入力データ110の5つの特徴のうちの4つを正確に識別することができるが、入力データ110の第5の特徴を正確に識別することができない(例えば、e5>ethresholdまたはa5<athreshold、ここで、e5およびa5は、ニューラルネットワーク114aよって識別された第5の特徴の誤差および精度である)場合、ニューラルネットワーク114aは、低減されたデータセット310として、ニューラルネットワーク114bに、第5の特徴と関連付けられた入力データ110を出力することができる。ニューラルネットワーク114bは、第5の特徴を正確に識別するために、低減されたデータセット310を使用し、第1のデバイス302aに出力データ112として、識別された第5の特徴を提供することができる。
いくつかの実施形態では、ニューラルネットワーク114bの出力は、出力データ112として第1のデバイス302aに提供される。出力データ112は、ネットワーク114bよって識別された任意の追加の特徴、またはニューラルネットワーク114bよってより正確に識別された入力データ110の特徴に関する情報またはデータを含むことができる。
いくつかの実施形態では、第1のデバイス302aは、ニューラルネットワーク114aおよび/またはニューラルネットワーク114bよって識別された入力データ110の特徴のうちのいずれかに応答してまたは基づいて、アクションを実施するように構成される。例えば、第1のデバイス302aは、ニューラルネットワーク114aおよび/またはニューラルネットワーク114bよって識別された入力データ110の特徴のうちのいずれかに基づいて、使用して、または応答して、ディスプレイ264のための表示信号312を生成することができる。第1のデバイス302aは、ユーザに異なる像を提供する、すなわち、ディスプレイ264などの上でユーザに提供される任意の画像のサイズ、形状、配向、回転、スキュー、外観、色などを変更するために、表示信号312を生成し、ディスプレイ264に表示信号312を提供することができる。いくつかの実施形態では、第1のデバイス302aは、第1のデバイス302aのニューラルネットワーク114aによって識別された入力データ110の特徴のうちのいずれかに応答して、または第2のデバイス302bのニューラルネットワーク114bによって識別された低減されたデータセット310の特徴のうちのいずれかに応答して、ディスプレイ264を使用して新しい像を更新または提供するように構成される。
いくつかの実施形態では、第2のデバイス302bはまた、本明細書で説明されるアクションのうちのいずれかを実施するように構成される。いくつかの実施形態では、第1のデバイス302aと第2のデバイス302bの両方は、ニューラルネットワーク114aおよび/またはニューラルネットワーク114bの出力に基づいて、1つまたは複数のアクションを実施することができる。例えば、第1のデバイス302aは、ニューラルネットワーク114aの出力に応答して(または第2のニューラルネットワーク114bの出力データ112に応答して、または第1および第2のニューラルネットワーク114の両方の出力に応答して)第1のアクションを実施することができ、第2のデバイス302bは、第2のニューラルネットワーク114bの出力データ112に応答して(または第1のニューラルネットワーク114aの出力に応答して、または第1のニューラルネットワーク114aと第2のニューラルネットワーク114bの両方の出力に応答して)第2のアクションを実施することができる。いくつかの実施形態では、第1のデバイス302aは、ニューラルネットワーク114aの処理に応答してまたは基づいて、第1のアクションを実施することができ、第2のデバイス302bは、ニューラルネットワーク114bの処理に応答してまたは基づいて、第2のアクションを実施し、ここで、ニューラルネットワーク114aおよびニューラルネットワーク114bは、同じ入力データ(例えば、入力データ110)を使用する。
いくつかの実施形態では、第1のデバイス302aは、第2のデバイス302bに、低減されたデータセット310を提供することなしに、アクションを実施するように構成される。いくつかの実施形態では、第1のデバイス302aは、ニューラルネットワーク114aによって識別された1つまたは複数の特徴が、十分な精度をもって、または十分な誤差をもって識別されたことに応答して、入力データ110の1つまたは複数の識別された特徴と関連付けられたアクションを実施するように構成される。例えば、入力データ110の第1の特徴が、対応する精度a1(または誤差e1)およびa1>athreshold(またはe<ethreshold)で識別された場合、第1のデバイス302aは、第2のデバイス302bに、低減されたデータセット310を送信することなしに、関連付けられたアクション(例えば、新しい像を変更すること、またはディスプレイ264を使用してユーザに新しい像を提供すること)を実施することができる。いくつかの実施形態では、識別された特徴の精度aが、対応する閾値athresholdよりも小さい(または識別された特徴の誤差eが、対応する閾値ethresholdよりも大きい)場合、第1のデバイス302aは、ニューラルネットワーク114bに、低減されたデータセット310を提供する。いくつかの実施形態では、第1のデバイス302aは、次いで、ニューラルネットワーク114bの出力(すなわち、出力データ112)を受信し、アクションを実施するために、ニューラルネットワーク114bの出力を使用することができる。いくつかの実施形態では、出力データ112は、アクションを実施するために、画像レンダラ260、後処理エンジン、データレンダリングサービス、画像レンダリングエンジン、データ記憶装置などに提供される。
いくつかの実施形態では、第1のデバイス302aは、アクションを実施するために、ニューラルネットワーク114aによって識別された入力データ110の特徴を使用すること、および第2のデバイス302bに、低減されたデータセット310を出力することの両方を行う。例えば、ニューラルネットワーク114aが、(例えば、閾値athresholdよりも大きい精度a、および/または閾値ethresholdよりも小さい誤差eをもって)入力データ110の第1の特徴を正確に識別することができるが、入力データ110の第2の特徴を正確に識別しない(例えば、第2の特徴の精度aが、閾値athresholdよりも小さく、および/または第2の特徴の誤差eが、閾値ethresholdよりも大きい)場合、第1のデバイス302aは、関連付けられたアクションを実施するために、識別された第1の特徴を使用し、第2の特徴を識別するために、ニューラルネットワーク114bに、低減されたデータセット310を提供することができる。ニューラルネットワーク114bは、十分な精度aおよび/または十分に低い誤差eをもって、第2の特徴を識別するために、低減されたデータセット310を使用し、出力データ112として第1のデバイス302aに、識別された第2の特徴と関連付けられた情報を提供することができる。第1のデバイス302aは、次いで、第2の特徴と関連付けられた1つまたは複数のアクションを実施するために、第2のデバイス302bから受信された出力データ112を使用することができる。
特に図3Cを参照すると、いくつかの実施形態によるシステム300が、示されている。いくつかの実施形態では、追加のデバイス302が、直列に通信可能に接続される。デバイス302は、有線接続を通して、またはワイヤレス接続(例えば、ワイヤレス通信ネットワーク)を通して通信可能に接続されてもよい。例えば、システム300は、デバイス302a...nを含むことができる。第1のデバイス302aは、第2のデバイス302bに、低減されたデータセット310aを提供し、第2のデバイス302bは、第3のデバイス302cに、低減されたデータセット310bを提供するなどする。デバイス302a...nの各々は、対応するニューラルネットワーク114、またはニューラルネットワーク114の追加の層を含む。例えば、ニューラルネットワーク114は、n個の層を有し、1つまたは複数の層の第1のセットは、第1のデバイス302a上に実現され、1つまたは複数の層の第2のセットは、第2のデバイス302b上に実現されるなどであってもよい。このようにして、ニューラルネットワーク114は、複数のデバイスにわたって分散されてもよい。
デバイス302の各々は、ローカルに実現された、対応するニューラルネットワーク114、またはニューラルネットワーク114の対応する層の出力を、出力データ112として第1のデバイス302aに提供することができる。例えば、第2のデバイス302bは、第1のデバイス302aに出力データ112aを提供することができ、第3のデバイス302cは、第1のデバイス302aに出力データ112bを提供することができ、...、第nのデバイス302nは、第1のデバイス302aに出力データ112nを提供することができる。いくつかの実施形態では、各デバイス302は、デバイス302の対応するニューラルネットワーク114の各出力(例えば、各識別された特徴)の誤差eおよび/または精度aを決定するように構成される。いくつかの実施形態では、出力の誤差eが、閾値ethresholdよりも小さい場合、出力は、出力データ112として第1のデバイス302aに提供される。同様に、いくつかの実施形態によれば、出力の精度aが、閾値athreshold以上である場合、出力は、出力データ112として第1のデバイス302aに提供される。
いくつかの実施形態では、誤差eが、閾値ethresholdよりも大きい(または閾値ethreshold以上である)場合、対応するデバイス302は、低減されたデータセット310を生成し、次のデバイス302に、低減されたデータセット310を提供する。同様に、出力の精度aが、閾値athresholdよりも小さい(または閾値athreshold以下である)場合、対応するデバイス302(出力を生成したデバイス302)は、低減されたデータセット310を生成し、次のデバイス302に、低減されたデータセット310を提供する。いくつかの実施形態では、低減されたデータセットは、次のデバイス302が、上流デバイス302によって正確に解析/識別されることができなかった出力のみを解析するための情報/データを含む。いくつかの実施形態では、低減されたデータセットは、次のデバイス302が、入力データ110の全ての適切な/必要とされる特徴を決定/識別するための全ての情報/データを含む。
このようにして、デバイス302が、入力データ(例えば、入力データ110または低減されたデータセット310)の特徴を正確に予測、解析、出力などすることができない場合、デバイス302は、低減されたデータセット310を生成し、次のデバイス302に、低減されたデータセット310を提供することができる。次のデバイス302は、次いで、直接的に上流のデバイス302によって次のデバイス302に提供された入力データ(例えば、低減されたデータセット310)の特徴を解析、予測、出力、識別、検出などするために、低減されたデータセット310を使用することができる。これは、入力データ110の全ての必要とされる特徴が、識別/検出されるまで、繰り返されてもよい。
特に図3Bを参照すると、いくつかの実施形態による、複数のデバイスにわたってニューラルネットワークを実現するための、または複数のデバイスにわたって複数のニューラルネットワークを協働的に実現するためのプロセス350が、示されている。プロセス350は、いくつかの実施形態によれば、ステップ352~366を含む。プロセス350は、システム300のデバイス、構成要素などのうちのいずれかによって実施されてもよい。有利に、プロセス350は、デバイスの間の送信を低減し、デバイスが、処理要件を低減することができるようにし、それにより、エネルギー節約を容易にする。プロセス350は、ローカル処理装置(例えば、GPU、CPU、処理回路類など)を有することがあるHMDおよび/またはARシステムについて、有益であることがある。有利に、プロセス350は、ローカル処理装置が、入力データの特徴を識別するための処理要件を低減すること、または計算量的に重いことがあるニューラルネットワークを実現することができるようにする。ローカル処理装置は、入力データの特徴を識別するために、それぞれのニューラルネットワーク、またはニューラルネットワークの一部分(例えば、いくらかの層)を実現し、HMDおよび/またはARシステムのディスプレイにおいてアクションを実施するために、識別された特徴を使用することができる。ローカル処理装置が、入力データの特徴を正確に識別することができない場合、ローカル処理装置は、特徴を正確に識別することができる別の処理装置(例えば、外部処理装置、第2の処理装置、第2のローカル処理装置、AIアクセラレータ、リモートデバイスなど)に、低減されたデータセットを提供することができる。このようにして、HMDおよび/またはARシステムのローカル処理装置の処理要件は、低減され、ローカル処理装置と他の処理装置との間のデータ転送頻度およびサイズは、減少され、それにより、ローカル処理装置と他の処理装置との間の通信のレイテンシを低減する。
プロセス350は、いくつかの実施形態によれば、第1のデバイスにおいて入力データを受信すること(ステップ352)を含む。いくつかの実施形態では、入力データは、外部デバイスから受信される。いくつかの実施形態では、入力データは、HMDおよび/またはARシステムのセンサ、カメラなどから受信される。いくつかの実施形態では、入力データは、外部デバイスによって提供された、あるいはHMDおよび/またはARシステムのセンサ、カメラなどによってキャプチャされた、のいずれかの画像データである。いくつかの実施形態では、画像データは、オブジェクト、環境、仮想環境、現実世界の環境、人々、景観、不規則形状、粒子などの画像データである。いくつかの実施形態では、ステップ352は、第1のデバイス302aによって実施される。いくつかの実施形態では、入力データは、ニューラルネットワーク114aによって受信される。
プロセス350は、いくつかの実施形態によれば、(1)第1のニューラルネットワークおよび入力データ、または(2)第1のニューラルネットワークの層の第1のセットおよび入力データのいずれかを使用して、低減されたデータセットを生成すること(ステップ354)を含む。いくつかの実施形態では、ステップ354は、ステップ352において受信されたまたは得られた入力データ(例えば、入力データ110)を使用して、ニューラルネットワーク114aによって実施される。いくつかの実施形態では、ステップ354は、第1のデバイスにおいてローカルに実施される。いくつかの実施形態では、ステップ354を実施するために第1のデバイスにおいて使用されるニューラルネットワークは、独立したニューラルネットワークである。いくつかの実施形態では、ステップ354を実施するために第1のデバイスにおいて使用されるニューラルネットワークは、複数のデバイスにわたって分散されたニューラルネットワークの第1の1つまたは複数の層である。
プロセス350は、いくつかの実施形態によれば、(1)第1のニューラルネットワークおよび入力データ、または(2)第1のニューラルネットワークの層の第1のセットおよび入力データのいずれかを使用して、入力データの1つまたは複数の特徴を識別すること(ステップ356)を含む。いくつかの実施形態では、ステップ356は、第1のデバイス302aのニューラルネットワーク114aによって実施される。いくつかの実施形態では、ステップ356は、関連付けられたニューラルネットワークを使用して、入力データの少なくとも1つの特徴を識別または検出することを含む。いくつかの実施形態では、ステップ354および/またはステップ356は、コンカレントにまたは同時に実施される。いくつかの実施形態では、ステップ356は、ステップ354を実施するより前に実施される。いくつかの実施形態では、ステップ356は、ステップ360に応答して(例えば、ステップ360、「はい」に応答して)実施される。
プロセス350は、いくつかの実施形態によれば、ステップ356において識別された1つまたは複数の特徴(例えば、ステップ356のニューラルネットワークの出力)と関連付けられた誤差、精度、信頼度などを決定すること(ステップ358)を含む。いくつかの実施形態では、誤差eおよび/または精度aは、第1のデバイス302aによって決定される。誤差eおよび/または精度aは、ニューラルネットワーク114aよって識別された1つまたは複数の特徴が、十分に正確であるかどうかを決定するために使用される(例えば、ステップ360において使用される)ことがある。
プロセス350は、いくつかの実施形態によれば、追加の解析が必要とされるかどうかを決定すること(ステップ360)を含む。いくつかの実施形態では、ステップ360は、低減されたデータセットが生成されるべきであるかどうか、および/または低減されたデータセットが第2のデバイスに提供されるべきであるかどうかを決定するために実施される。いくつかの実施形態では、ステップ360は、ステップ356において識別された入力データの1つまたは複数の特徴の精度aおよび/または誤差eに基づいて決定される。いくつかの実施形態では、ステップ360は、精度aおよび/または誤差eを、対応する閾値(すなわち、それぞれ、athresholdおよびethreshold)と比較することを含む。精度aが、閾値athresholdよりも大きい(または閾値athresholdに等しい)ことに応答して、第1のデバイス302aは、追加の解析が必要とされないと決定することができ(ステップ360、「いいえ」)、プロセス350は、ステップ366に進む。誤差eが、閾値ethresholdよりも小さいことに応答して、第1のデバイス302aは、追加の解析が必要とされないと決定することができ(ステップ360、「いいえ」)、プロセス350は、ステップ366に進む。精度aが、閾値athresholdよりも小さいことに応答して、第1のデバイス302aは、追加の解析が必要とされると決定することができ(ステップ360、「はい」)、プロセス350は、ステップ362に進む。誤差eが、閾値ethresholdよりも大きいことに応答して、第1のデバイス302aは、追加の解析が必要とされると決定することができ(ステップ360、「はい」)、プロセス350は、ステップ362に進む。
プロセス350は、いくつかの実施形態によれば、第2のデバイスに、低減されたデータセットを提供すること(ステップ362)を含む。いくつかの実施形態では、第2のデバイスは、ネットワークデバイス、外部デバイス、AIアクセラレータ(例えば、AIアクセラレータ108)、別のコンピューティングデバイスなどである。いくつかの実施形態では、第2のデバイスは、特徴を識別するために入力データを更に解析するために使用されてもよい、第2のニューラルネットワークまたは第1のニューラルネットワークの追加の層を含む。いくつかの実施形態では、第2のデバイスは、第1のデバイスと比較して、追加の処理能力を有する。いくつかの実施形態では、ステップ362は、ネットワーク、第1および第2のデバイスの間のワイヤレス接続、第1および第2のデバイスの間の有線接続などを通して実施される。
プロセス350は、いくつかの実施形態によれば、(1)第2のニューラルネットワークおよび低減されたデータセット、または(2)第1のニューラルネットワークの層の第2のセットのいずれかを使用して、低減されたデータセットの1つまたは複数の特徴を識別すること(ステップ364)を含む。いくつかの実施形態では、低減されたデータセットは、第1のデバイスによって(例えば、第1のニューラルネットワーク、または第1のニューラルネットワークの層の第1のセットによって)出力され、入力として、第2のデバイスのニューラルネットワークまたはニューラルネットワークの層に提供される。いくつかの実施形態では、第2のデバイスは、第2のデバイス302bである。いくつかの実施形態では、ステップ364は、ニューラルネットワーク114bによって実施される。
プロセス350は、いくつかの実施形態によれば、入力データの特徴に基づいてアクションを実施すること(ステップ366)を含む。いくつかの実施形態では、ステップ366は、第1のデバイス302aによって実施される。いくつかの実施形態では、ステップ366は、第1のデバイス302aおよびディスプレイ264によって実施される。例えば、第1のデバイス302aは、表示信号を生成し、アクションを実施するために、ディスプレイ264に表示信号を提供することができる。いくつかの実施形態では、アクションは、ディスプレイ264を介してユーザに追加の像を提供すること、ディスプレイ264を介してユーザに現在表示されている像を変更すること、追加のデータ処理を実施すること、後処理アルゴリズムを実施することなどを含む。いくつかの実施形態では、ディスプレイ264を介してユーザに提供される追加の像は、(例えば、ARシステムにおいてオーバーレイされる)テキスト情報、コンピュータ生成像(例えば、オブジェクト、文字、粒子、テクスチャなど)などであるか、またはテキスト情報、コンピュータ生成像などを含む。いくつかの実施形態では、ステップ366は、ステップ356および/または364において識別された、入力データおよび低減されたデータセットの特徴のうちのいずれかに基づいて実施される。いくつかの実施形態では、アクションは、ユーザに像を提供するために、ディスプレイ264を動作させることを含む。
例示的な実施形態の構成
いくつかの例示的な実現例について記載してきたが、上記は例示であって限定ではなく、例として提示されていることが明白である。特に、本明細書に提示する例の多くには、方法行為またはシステム要素の特定の組み合わせが関与するが、それらの行為および要素は、同じ目的を遂行するために他の形で組み合わせることができる。1つの実現例に関連して考察される行為、要素、および特徴は、他の1つまたは複数の実現例における類似の役割から除外されないものとする。
いくつかの例示的な実現例について記載してきたが、上記は例示であって限定ではなく、例として提示されていることが明白である。特に、本明細書に提示する例の多くには、方法行為またはシステム要素の特定の組み合わせが関与するが、それらの行為および要素は、同じ目的を遂行するために他の形で組み合わせることができる。1つの実現例に関連して考察される行為、要素、および特徴は、他の1つまたは複数の実現例における類似の役割から除外されないものとする。
本明細書に開示する実施形態と関連して記載される、様々なプロセス、動作、例示の論理、論理ブロック、モジュール、および回路を実現するのに使用される、ハードウェアおよびデータ処理構成要素は、汎用シングルもしくはマルチチッププロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラマブル論理デバイス、離散的ゲートもしくはトランジスタ論理、離散的ハードウェア構成要素、または本明細書に記載の機能を実施するように設計された上記のものの任意の組み合わせを用いて、実現または実施されてもよい。汎用プロセッサは、マイクロプロセッサ、または任意の従来のプロセッサ、コントローラ、マイクロコントローラ、もしくは状態機械であってもよい。プロセッサはまた、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと連動した1つもしくは複数のマイクロプロセッサ、または他の任意のかかる構成など、コンピューティングデバイスの組み合わせとして実現されてもよい。いくつかの実施形態では、特定のプロセスおよび方法は、所与の機能に特異的な回路類によって実施されてもよい。メモリ(例えば、メモリ、メモリユニット、記憶デバイスなど)は、本開示に記載する様々なプロセス、層、およびモジュールを完成させるかもしくは容易にする、データおよび/またはコンピュータコードを格納する、1つまたは複数のデバイス(例えば、RAM、ROM、フラッシュメモリ、ハードディスク記憶装置など)を含んでもよい。メモリは、揮発性メモリもしくは不揮発性メモリであるかまたはそれらを含んでもよく、本開示に記載する様々なアクティビティおよび情報構造をサポートする、データベース構成要素、オブジェクトコード構成要素、スクリプト構成要素、または他の任意のタイプの情報構造を含んでもよい。例示的実施形態によれば、メモリは、処理回路を介してプロセッサに通信可能に接続され、本明細書に記載の1つもしくは複数のプロセスを(例えば、処理回路および/またはプロセッサによって)実行するためのコンピュータコードを含む。
本発明は、様々な動作を遂行するための任意の機械可読媒体上における、方法、システム、およびプログラム製品を想到する。本発明の実施形態は、既存のコンピュータプロセッサを使用して、またはこの目的もしくは別の目的のために組み込まれる、適切なシステムのための専用コンピュータプロセッサによって、または配線接続システムによって、実現されてもよい。本発明の範囲内の実施形態は、格納された機械実行可能命令もしくはデータ構造を保持するかまたは有する、機械可読媒体を備えるプログラム製品を含む。かかる機械可読媒体は、汎用もしくは専用コンピュータ、またはプロセッサを有する他の機械によってアクセスすることができる、任意の利用可能な媒体であることができる。例として、かかる機械可読媒体は、RAM、ROM、EPROM、EEPROM、または他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、あるいは機械実行可能命令またはデータ構造の形態で所望のプログラムコードを保持または格納するのに使用することができ、汎用もしくは専用コンピュータまたはプロセッサを有する他の機械でアクセスすることができる、他の任意の媒体を含むことができる。上記のものの組み合わせはまた、機械可読媒体の範囲に含まれる。機械実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理機械に、特定の機能または機能群を実施させる、命令およびデータを含む。
本明細書で使用する用語および専門用語は、説明のためのものであって限定とみなされるべきではない。本明細書における、「~を含む」、「~を備える」、「~を有する」、「~を含有する」、「~を伴う」、「~によって特徴付けられる」、「~を特徴とする」およびそれらの変形の使用は、該用語とともに列挙される項目、それらの等価物、および追加の項目、ならびに排他的に該用語とともに列挙される項目から成る代替実現例を網羅することを意味する。一実現例では、本明細書に記載するシステムおよび方法は、記載する要素、行為、または構成要素のうちの1つ、2つ以上の各組み合わせ、または全てから成る。
単数形で言及される本明細書のシステムおよび方法の実現例または要素または行為に対する任意の言及は、複数のこれらの要素を含む実現例も包含することができ、本明細書の任意の実現例または要素または行為に対する複数形での任意の言及は、単一の要素のみを含む実現例も包含することができる。単数形または複数形での言及は、本明細書に開示されるシステムもしくは方法、それらの構成要素、行為、または要素を、単数または複数の構成に限定しようとするものではない。任意の情報、行為、または要素に基づいた任意の行為または要素に対する言及は、行為または要素が、任意の情報、行為、または要素に少なくとも部分的に基づく場合の実現例を含むことができる。
本明細書に開示する任意の実現例は、他の任意の実現例または実施形態と組み合わせることができ、「ある実現例」、「いくつかの実現例」、「一実現例」などに対する言及は、必ずしも相互に排他的ではなく、実現例と関連して記載する特定の特徴、構造、または特性が、少なくとも1つの実現例または実施形態に含まれ得ることを示すものとする。かかる用語は、本明細書で使用するとき、必ずしも全てが同じ実現例を指すものではない。任意の実現例は、本明細書に開示する態様および実現例と一致する任意の手法で、他の任意の実現例と包括的または排他的に組み合わせることができる。
図面、詳細な説明、または任意のクレームにおける技術的特徴に参照符号が付される場合、参照符号は、図面、詳細な説明、およびクレームの了解度を向上するために含まれるものである。したがって、参照符号が存在してもしなくても、任意のクレーム要素の範囲に対する限定的影響を何ら有さない。
本明細書に記載するシステムおよび方法は、それらの特性から逸脱することなく、他の特定の形態で具体化されてもよい。「約」、「およそ」、「実質的に」、または他の程度を表す用語に対する言及は、別段の明示がない限り、所与の測定値、単位、または範囲から±10%の変動を含む。結合された要素は、直接または介在要素を用いて、互いに電気的、機械的、または物理的に結合することができる。本明細書に記載するシステムおよび方法の範囲は、したがって、上述の記載ではなく添付のクレームによって示され、クレームの等価物の意味および範囲内にある変更は包含される。
「結合された」という用語およびその変形は、2つの部材を直接または間接的に互いに接合することを含む。かかる接合は、静的(例えば、恒久的もしくは固定)または可動(例えば、除去可能もしくは解放可能)であってもよい。かかる接合は、互いに直接結合され、または互いに対して結合された2つの部材によって、別個の介在部材および互いに結合された任意の追加の中間部材を使用して互いに結合された2つの部材によって、あるいは2つの部材の一方とともに単一の単位体として一体的に形成された介在部材を使用して互いに結合された2つの部材によって、達成されてもよい。「結合された」またはその変形が、追加の用語によって修正された場合(例えば、直接結合された)、上述の「結合された」の包括的定義は、追加の用語の平易な言葉の意味によって修正され(例えば、「直接結合された」は、任意の別個の介在部材を有さない2つの部材の接合を意味する)、それによって上述の「結合された」の包括的定義よりも狭い定義になる。かかる結合は機械的、電気的、または流体的であってもよい。
「または」に対する言及は包括的と解釈することができるので、「または」を使用して記載されるいずれの用語も、記載される用語の単一、2つ以上、および全てのいずれかを示すことができる。「『A』および『B』のうち少なくとも1つ」は、「A」のみ、「B」のみ、ならびに「A」および「B」の両方を含むことができる。「備える」または他のオープンな用語と併せて使用されるかかる言及は、追加の項目を含むことができる。
様々な要素のサイズ、寸法、構造、形状、および比率、パラメータの値、取付け構造、材料使用、色、向きにおける変形例など、記載される要素および行為の修正は、本明細書に開示する主題の教示および利点から実質的に逸脱することなく行うことができる。例えば、一体的に形成されるものとして示される要素は、複数の部分または要素で構築することができ、要素の位置を反転させるかまたは別の形で変動させることができ、離散的要素または位置の性質もしくは数を改変または変更することができる。また、他の置換、修正、変更および省略が、添付の特許請求の範囲において定義されている本発明の範囲から逸脱することなく、開示される要素および動作の設計、動作条件および配置に対して行われてもよい。
本明細書における要素の位置に対する言及(例えば、「上側」、「下側」、「上方」、「下方」)は単に、図面における様々な要素の向きを説明するために使用されるものである。様々な要素の向きは、他の例示的実施形態によって異なってもよく、かかる変形は本発明に包含されるものとする。
Claims (15)
- ニューラルネットワークの第1の1つまたは複数の層を用いて構成された第1のデバイスによって、前記第1のデバイスおよび第2のデバイスにわたって実現された前記ニューラルネットワークを介した処理のための入力データを受信することと、
前記第1のデバイス上に実現された前記ニューラルネットワークの前記第1の1つまたは複数の層によって、前記ニューラルネットワークの第2の1つまたは複数の層による処理のために、前記入力データの1つまたは複数の特徴を識別しながら、前記入力データと比べてサイズが低減されたデータセットを出力することと、
前記第1のデバイスによって、前記第2のデバイス上に実現された前記ニューラルネットワークの前記第2の1つまたは複数の層を介した処理のために、前記第2のデバイスに前記データセットを通信することと
を含む、方法。 - 前記第1の1つまたは複数の層によって、前記第2のデバイスへのネットワークを介した送信のために、前記データセットを圧縮することによって、前記データセットを低減することを更に含む、請求項1に記載の方法。
- 前記第2の1つまたは複数の層が、前記入力データ内の前記1つまたは複数の特徴のうちの特徴を検出し、
随意に、前記方法は、前記第1のデバイスによって、前記特徴が、前記第2の1つまたは複数の層によって検出されたという指示を前記第2のデバイスから受信することを更に含む、
請求項1または2に記載の方法。 - 前記第1のデバイスによって、前記1つまたは複数の特徴のうちの特徴が、前記第1のデバイスによるアクションを取るための精度の閾値を満たすことを検出することを更に含む、請求項1から3のいずれか一項に記載の方法。
- 前記検出に反応して、前記第1のデバイスによって、前記特徴に関して前記アクションを実施することを更に含み、
随意に、前記方法が、前記第2のデバイスに前記データセットを通信することなしに、前記アクションを実施することを更に含む、
請求項4に記載の方法。 - ウェアラブルヘッドディスプレイのプロセッサによって、前記ウェアラブルヘッドディスプレイによってキャプチャされた入力データを受信することと、
前記プロセッサ上に実現されたニューラルネットワークの第1の1つまたは複数の層によって、前記ニューラルネットワークの第2の1つまたは複数の層による処理のために、前記入力データの1つまたは複数の特徴を識別しながら、前記入力データと比べてサイズが低減されたデータセットを生成することと、
前記プロセッサによって、前記データセット中の前記1つまたは複数の特徴のうちの特徴を検出することと、
前記特徴を検出したことに反応して、前記プロセッサによって、前記ニューラルネットワークの前記第2の1つまたは複数の層を実現する第2のデバイスに前記データセットを通信する代わりに、前記特徴に関してアクションを実施することと
を含む、方法。 - 前記プロセッサによって、精度の閾値内の前記特徴を検出することを更に含む、請求項6に記載の方法。
- 前記ウェアラブルヘッドディスプレイを介して表示されている画像を修正することを含む前記アクションを実施することを更に含む、請求項6または7に記載の方法。
- 前記プロセッサ上に実現された前記第1の1つまたは複数の層によって、第2の入力データ中の特徴のうちの第2の1つまたは複数を識別しながら、前記第2の入力データと比べてサイズが低減された第2のデータセットを生成することを更に含む、請求項6から8のいずれか一項に記載の方法。
- 前記プロセッサによって、前記第2の1つまたは複数の特徴のうちの第2の特徴が、精度の閾値内で検出可能でないと決定することを更に含む、請求項9に記載の方法。
- 前記決定に反応して、前記プロセッサによって、前記ニューラルネットワークの前記第2の1つまたは複数の層を実現する前記第2のデバイスに前記第2のデータセットを通信することを更に含み、
随意に、前記方法が、前記第2のデバイスから、前記プロセッサによって、前記第2の1つまたは複数の層による前記第2のデータセットの処理の結果の指示を受信することを更に含む、
請求項10に記載の方法。 - 第1のデバイスであって、前記第1のデバイスおよび第2のデバイスにわたって実現されたニューラルネットワークを介した処理のための入力データを受信するように構成された、第1のデバイス
を備え、
ここで、前記第1のデバイス上に実現された前記ニューラルネットワークの第1の1つまたは複数の層が、前記ニューラルネットワークの第2の1つまたは複数の層による処理のために、前記入力データの1つまたは複数の特徴を識別しながら、前記入力データと比べてサイズが低減されたデータセットを出力するように構成され、
前記第1のデバイスが、前記第2のデバイス上に実現された前記ニューラルネットワークの前記第2の1つまたは複数の層を介した処理のために、前記第2のデバイスに前記データセットを通信するように構成された、
システム。 - 前記第1の1つまたは複数の層が、前記第2のデバイスへのネットワークを介した送信のために、前記データセットを圧縮することによって、前記データセットを低減するように更に構成された、請求項12に記載のシステム。
- 前記第2の1つまたは複数の層が、前記入力データ内の前記1つまたは複数の特徴のうちの特徴を検出するように更に構成され、
随意に、前記第1のデバイスは、前記特徴が、前記第2の1つまたは複数の層によって検出されたという指示を前記第2のデバイスから受信するように更に構成された、
請求項12または13に記載のシステム。 - 前記第1のデバイスは、前記1つまたは複数の特徴のうちの特徴が、前記第1のデバイスによるアクションを取るための精度の閾値を満たすことを検出するように更に構成され、
随意に、前記第1のデバイスが、前記検出に反応して、前記特徴に関しておよび前記第2のデバイスに前記データセットを通信することなしに、前記アクションを実施するように更に構成された、
請求項12から14のいずれか一項に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/506,479 | 2019-07-09 | ||
US16/506,479 US11698529B2 (en) | 2019-07-09 | 2019-07-09 | Systems and methods for distributing a neural network across multiple computing devices |
PCT/US2020/041077 WO2021007257A1 (en) | 2019-07-09 | 2020-07-07 | Systems and methods for distributing a neural network across multiple computing devices |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022540549A true JP2022540549A (ja) | 2022-09-16 |
Family
ID=71787198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021573171A Pending JP2022540549A (ja) | 2019-07-09 | 2020-07-07 | 複数のコンピューティングデバイスにわたってニューラルネットワークを分散させるためのシステムおよび方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11698529B2 (ja) |
EP (1) | EP3997620A1 (ja) |
JP (1) | JP2022540549A (ja) |
KR (1) | KR20220031681A (ja) |
CN (1) | CN114051617A (ja) |
WO (1) | WO2021007257A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210056357A1 (en) * | 2019-08-19 | 2021-02-25 | Board Of Trustees Of Michigan State University | Systems and methods for implementing flexible, input-adaptive deep learning neural networks |
KR20210039197A (ko) * | 2019-10-01 | 2021-04-09 | 삼성전자주식회사 | 데이터를 처리하는 방법 및 장치 |
CN111552076B (zh) * | 2020-05-13 | 2022-05-06 | 歌尔科技有限公司 | 一种图像显示方法、ar眼镜及存储介质 |
US20220374067A1 (en) * | 2021-05-19 | 2022-11-24 | International Business Machines Corporation | Augmented reality based power management |
EP4202775A1 (en) * | 2021-12-27 | 2023-06-28 | GrAl Matter Labs S.A.S. | Distributed data processing system and method |
CN114077811B (zh) * | 2022-01-19 | 2022-04-12 | 华东交通大学 | 一种基于图神经网络的电力物联网设备异常检测方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018013200A1 (en) * | 2016-07-14 | 2018-01-18 | Magic Leap, Inc. | Deep neural network for iris identification |
US10332320B2 (en) | 2017-04-17 | 2019-06-25 | Intel Corporation | Autonomous vehicle advanced sensing and response |
US20190095946A1 (en) * | 2017-09-25 | 2019-03-28 | Get Attached, Inc. | Automatically analyzing media using a machine learning model trained on user engagement information |
US11017317B2 (en) * | 2017-12-27 | 2021-05-25 | X Development Llc | Evaluating robot learning |
US11403517B2 (en) | 2018-09-27 | 2022-08-02 | Intel Corporation | Proximity-based distributed sensor processing |
-
2019
- 2019-07-09 US US16/506,479 patent/US11698529B2/en active Active
-
2020
- 2020-07-07 EP EP20746504.8A patent/EP3997620A1/en active Pending
- 2020-07-07 KR KR1020227004217A patent/KR20220031681A/ko unknown
- 2020-07-07 JP JP2021573171A patent/JP2022540549A/ja active Pending
- 2020-07-07 CN CN202080047711.8A patent/CN114051617A/zh active Pending
- 2020-07-07 WO PCT/US2020/041077 patent/WO2021007257A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP3997620A1 (en) | 2022-05-18 |
US20210011288A1 (en) | 2021-01-14 |
WO2021007257A1 (en) | 2021-01-14 |
CN114051617A (zh) | 2022-02-15 |
KR20220031681A (ko) | 2022-03-11 |
US11698529B2 (en) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11838518B2 (en) | Reprojecting holographic video to enhance streaming bandwidth/quality | |
US11698529B2 (en) | Systems and methods for distributing a neural network across multiple computing devices | |
JP7422785B2 (ja) | ニューラルネットワークおよび角検出器を使用した角検出のための方法および装置 | |
US20230360182A1 (en) | Enhanced Photo Relighting Based on Machine Learning Models | |
CN112703528A (zh) | 使用深度神经网络和置信度学习的照片重照明 | |
US11854230B2 (en) | Physical keyboard tracking | |
CN108701355B (zh) | Gpu优化和在线基于单高斯的皮肤似然估计 | |
US11353955B1 (en) | Systems and methods for using scene understanding for calibrating eye tracking | |
US10824247B1 (en) | Head-coupled kinematic template matching for predicting 3D ray cursors | |
CN115204375A (zh) | Npu、边缘设备及其运行方法 | |
CN114282035A (zh) | 图像检索模型的训练和检索方法、装置、设备及介质 | |
US20230186579A1 (en) | Prediction of contact points between 3d models | |
CN118251643A (zh) | 用于锚定增强现实对象的电子设备和方法 | |
CN115176285B (zh) | 利用缓冲的交叉现实系统用于定位精度 | |
WO2022066266A1 (en) | Connection assessment system | |
US20240223742A1 (en) | Depth-varying reprojection passthrough in video see-through (vst) extended reality (xr) | |
US20230169725A1 (en) | Method and apparatus with 3d modeling of human body | |
US11442543B1 (en) | Electronic devices with monocular gaze estimation capabilities | |
US20240045943A1 (en) | Apparatus and method for authenticating user in augmented reality | |
US20240104958A1 (en) | User Eye Model Match Detection | |
WO2023239776A1 (en) | Fast ar device pairing using depth predictions | |
KR20240067749A (ko) | 멀티미디어 콘텐트를 표시하기 위한 전자 장치 및 그 방법 | |
CN117711040A (zh) | 标定方法和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230703 |