(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-26
(54)【発明の名称】関心領域を追跡するためにニューラルネットワークを使用する画像検知および処理
(51)【国際特許分類】
G06V 10/12 20220101AFI20221219BHJP
【FI】
G06V10/12
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022520220
(86)(22)【出願日】2020-11-09
(85)【翻訳文提出日】2022-05-27
(86)【国際出願番号】 US2020059636
(87)【国際公開番号】W WO2021092541
(87)【国際公開日】2021-05-14
(32)【優先日】2019-11-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-11-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】515046968
【氏名又は名称】メタ プラットフォームズ テクノロジーズ, リミテッド ライアビリティ カンパニー
【氏名又は名称原語表記】META PLATFORMS TECHNOLOGIES, LLC
(74)【代理人】
【識別番号】110002974
【氏名又は名称】弁理士法人World IP
(72)【発明者】
【氏名】ベルコビッチ, アンドリュー サミュエル
(72)【発明者】
【氏名】ピンカム, リード
(57)【要約】
一例では、装置が、複数のピクセルセルを備える画像センサーと、フレームバッファと、フレームバッファから、第1のアクティブピクセルと第1の非アクティブピクセルとを備える第1の画像フレームを受信することであって、第1のアクティブピクセルが、第1のプログラミングデータに基づいて選択されたピクセルセルの第1のサブセットによって生成される、第1の画像フレームを受信することと、処理出力を生成するために、第1の画像フレームのピクセルの第1のサブセットに対して画像処理動作を実施することであって、それにより、第1の画像フレームのピクセルの第2のサブセットが画像処理動作から除外される、画像処理動作を実施することと、処理出力に基づいて、第2のプログラミングデータを生成することと、第2の画像フレームのための第2のアクティブピクセルを生成するためのピクセルセルの第2のサブセットを選択するために第2のプログラミングデータを画像センサーに送信することとを行うように構成された、センサーコンピュート回路とを備える。
【選択図】
図8B
【特許請求の範囲】
【請求項1】
複数のピクセルセルを備える画像センサーであって、前記画像センサーが、アクティブピクセルを生成するための前記ピクセルセルのサブセットを選択するように、プログラミングデータによって構成可能である、画像センサーと、
フレームバッファと、
前記フレームバッファから、第1のアクティブピクセルと第1の非アクティブピクセルとを備える第1の画像フレームを受信することであって、前記第1のアクティブピクセルが、第1のプログラミングデータに基づいて選択された前記ピクセルセルの第1のサブセットによって生成され、前記第1の非アクティブピクセルが、前記第1のアクティブピクセルを生成するために選択されなかった前記ピクセルセルの第2のサブセットに対応する、第1の画像フレームを受信することと、
処理出力を生成するために、前記第1の画像フレームのピクセルの第1のサブセットに対して画像処理動作を実施することであって、それにより、前記第1の画像フレームのピクセルの第2のサブセットが前記画像処理動作から除外される、画像処理動作を実施することと、
前記処理出力に基づいて、第2のプログラミングデータを生成することと、
第2の画像フレームのための第2のアクティブピクセルを生成するための前記ピクセルセルの第2のサブセットを選択するために前記第2のプログラミングデータを前記画像センサーに送信することと
を行うように構成された、センサーコンピュート回路と
を備える、装置。
【請求項2】
前記画像処理動作が、前記第1の画像フレーム中の関心オブジェクトを検出するためのニューラルネットワークモデルによる処理動作を含み、
ピクセルの前記第1のサブセットが前記関心オブジェクトに対応する、
請求項1に記載の装置。
【請求項3】
前記センサーコンピュート回路が、前記関心オブジェクトの前記検出の結果を使用するアプリケーションを実行するように構成されたホストデバイスと接続され、
前記センサーコンピュート回路が、前記ホストデバイスから前記関心オブジェクトに関する情報を受信するように構成された、
請求項2に記載の装置。
【請求項4】
前記センサーコンピュート回路は、
前記ニューラルネットワークのニューラルネットワーク層への入力データと、前記ニューラルネットワーク層の重みデータと、前記ニューラルネットワーク層の中間出力データとを記憶するように構成されたコンピュートメモリと、
前記中間出力データを生成するために前記入力データと前記重みデータとに対して前記ニューラルネットワーク層の算術演算を実施するように構成されたデータ処理回路と、
前記コンピュートメモリから、前記入力データの第1のサブセットと、前記入力データの前記第1のサブセットに対応する前記重みデータの第1のサブセットとを取得することであって、前記入力データの前記第1のサブセットが前記第1のアクティブピクセルのうちの少なくともいくつかに対応する、前記入力データの第1のサブセットと前記重みデータの第1のサブセットとを取得することと、
前記第1の画像フレームのための前記中間出力データの第1のサブセットを生成するために前記入力データの前記第1のサブセットと前記重みデータの前記第1のサブセットとに対して前記算術演算を実施するように前記データ処理回路を制御することであって、前記中間出力データの前記第1のサブセットが前記入力データの前記第1のサブセットに対応する、前記データ処理回路を制御することと、
前記第1の画像フレームのための前記中間出力データの前記第1のサブセットを前記コンピュートメモリに記憶することと、
前記第1の画像フレームのための前記中間出力データの第2のサブセットについての所定の値を前記コンピュートメモリに記憶することであって、前記中間出力データの前記第2のサブセットがアクティブでないピクセルに対応する、所定の値を前記コンピュートメモリに記憶することと
を行うように構成された、コンピュートコントローラと
を備える、請求項2に記載の装置。
【請求項5】
前記所定の値が、前記画像処理動作より前に前記コンピュートメモリをリセットすることに基づいて記憶される、請求項4に記載の装置。
【請求項6】
前記コンピュートコントローラが、
前記コンピュートメモリから前記入力データを取得することと、
前記取得された入力データから、前記入力データの前記第1のサブセットを識別することと、
前記入力データの前記識別された第1のサブセットを前記コンピュートコントローラに提供することと
を行うように構成された、請求項4に記載の装置。
【請求項7】
前記コンピュートコントローラが、
前記入力データの前記第1のサブセットを記憶する前記コンピュートメモリのアドレス領域を決定することと、
前記コンピュートメモリから前記入力データの前記第1のサブセットを取得することと
を行うように構成された、請求項4に記載の装置。
【請求項8】
前記アドレス領域が、前記第1のプログラミングデータ、または前記ニューラルネットワークモデルのニューラルネットワーク層間の接続性に関する情報のうちの少なくとも1つに基づいて決定される、請求項7に記載の装置。
【請求項9】
前記第1のアクティブピクセルが静的ピクセルと非静的ピクセルとを含み、
前記静的ピクセルは、前記第1の画像フレームと前の画像フレームとの間のピクセル値の変化の程度が変化しきい値を上回る前記第1のアクティブピクセルの第1のサブセットに対応し、
前記非静的ピクセルは、前記第1の画像フレームと前記前の画像フレームとの間の前記ピクセル値の変化の程度が前記変化しきい値を下回る前記第1のアクティブピクセルの第2のサブセットに対応し、
前記コンピュートコントローラが、前記第1のアクティブピクセルの前記非静的ピクセルに対応する前記入力データの前記第1のサブセットを取得するように構成された、
請求項4に記載の装置。
【請求項10】
前記所定の値が第1の所定の値であり、
前記フレームバッファが、前記静的ピクセルをシグナリングするために前記静的ピクセルの各々についての第2の所定の値を記憶するように構成され、
前記コンピュートコントローラは、前記静的ピクセルが前記第2の所定の値を有することを検出したことに基づいて前記データ処理回路から前記静的ピクセルを除外するように構成された、
請求項9に記載の装置。
【請求項11】
前記フレームバッファは、ピクセルについての前記第2の所定の値を、しきい値数のフレームにわたる前記ピクセルの変化の程度が前記変化しきい値を下回ると決定したことに基づいて、記憶するように構成された、請求項10に記載の装置。
【請求項12】
前記フレームバッファは、時定数を有するリーキー積分関数に基づいて、および前記変化しきい値よりも大きい変化の程度が前記ピクセルに最後にいつ起きたかに基づいて、ピクセルのピクセル値を設定更新するように構成された、請求項10に記載の装置。
【請求項13】
前記コンピュートコントローラは、
前記ニューラルネットワークモデルのトポロジーに基づいて、前記ニューラルネットワークモデルの異なるニューラルネットワーク層を通って前記非静的ピクセルの変化がどのように伝搬するかを指示するデータ変化伝搬マップを決定することと、
前記データ変化伝搬マップに基づいて、前記入力データの前記第1のサブセットを取得するための前記コンピュートメモリの第1のアドレス領域と、前記中間出力データの前記第1のサブセットを記憶するための前記コンピュートメモリの第2のアドレス領域とを決定することと、
前記第1のアドレス領域から前記入力データの前記第1のサブセットを取得することと、
前記第2のアドレス領域において前記中間出力データの前記第1のサブセットを記憶することと
を行うように構成された、請求項9に記載の装置。
【請求項14】
前記コンピュートコントローラが、前記ニューラルネットワークモデルの深度と前記ニューラルネットワークモデルの各ニューラルネットワーク層における量子化精度とに基づいて前記変化しきい値を決定するように構成された、請求項9に記載の装置。
【請求項15】
前記変化しきい値が第1の変化しきい値であり、
前記コンピュートコントローラは、
2つの非連続フレーム間の前記第1のアクティブピクセルの前記ピクセル値の変化の程度を追跡することと、
変化の前記程度が第2の変化しきい値を超えたことに基づいて、前記第1のアクティブピクセルの第3のサブセットを非静的ピクセルとして決定することと
を行うように構成された、請求項9に記載の装置。
【請求項16】
前記画像センサーが第1の半導体基板中で実装され、
前記フレームバッファと前記センサーコンピュート回路とが、1つまたは複数の第2の半導体基板中で実装され、
前記第1の半導体基板と前記1つまたは複数の第2の半導体基板とが、スタックを形成し、単一の半導体パッケージ中に収容される、
請求項1に記載の装置。
【請求項17】
第1のアクティブピクセルを生成するための複数のピクセルセルの第1のサブセットを選択するために、第1のプログラミングデータを、前記ピクセルセルを備える画像センサーに送信することと、
フレームバッファから、前記第1のアクティブピクセルと第1の非アクティブピクセルとを備える第1の画像フレームを受信することであって、前記第1の非アクティブピクセルが、前記第1のアクティブピクセルを生成するために選択されなかった前記ピクセルセルの第2のサブセットに対応する、第1の画像フレームを受信することと、
処理出力を生成するために、前記第1の画像フレームのピクセルの第1のサブセットに対して画像処理動作を実施することであって、それにより、前記第1の画像フレームのピクセルの第2のサブセットが前記画像処理動作から除外される、画像処理動作を実施することと、
前記処理出力に基づいて、第2のプログラミングデータを生成することと、
第2の画像フレームのための第2のアクティブピクセルを生成するための前記ピクセルセルの第2のサブセットを選択するために前記第2のプログラミングデータを前記画像センサーに送信することと
を含む、方法。
【請求項18】
前記画像処理動作が、前記第1の画像フレーム中の関心オブジェクトを検出するためのニューラルネットワークによる処理動作を含み、
ピクセルの前記第1のサブセットが前記関心オブジェクトに対応する、
請求項17に記載の方法。
【請求項19】
前記ニューラルネットワークのニューラルネットワーク層への入力データと、前記ニューラルネットワーク層の重みデータとをコンピュートメモリに記憶することと、
前記コンピュートメモリから、前記入力データの第1のサブセットと、前記入力データの前記第1のサブセットに対応する前記重みデータの第1のサブセットとを取得することであって、前記入力データの前記第1のサブセットが前記第1のアクティブピクセルのうちの少なくともいくつかに対応する、前記入力データの第1のサブセットと前記重みデータの第1のサブセットとを取得することと、
データ処理回路を使用して、前記第1の画像フレームのための中間出力データの第1のサブセットを生成するために前記入力データの前記第1のサブセットと前記重みデータの前記第1のサブセットとに対して算術演算を実施することであって、前記中間出力データの前記第1のサブセットが前記入力データの前記第1のサブセットに対応する、算術演算を実施することと、
前記第1の画像フレームのための前記中間出力データの前記第1のサブセットを前記コンピュートメモリに記憶することと、
前記第1の画像フレームのための前記中間出力データの第2のサブセットについての所定の値を前記コンピュートメモリに記憶することであって、前記中間出力データの前記第2のサブセットがアクティブでないピクセルに対応する、所定の値を前記コンピュートメモリに記憶することと
をさらに含む、請求項18に記載の方法。
【請求項20】
前記第1のアクティブピクセルが静的ピクセルと非静的ピクセルとを含み、
前記静的ピクセルは、前記第1の画像フレームと前の画像フレームとの間のピクセル値の変化の程度が変化しきい値を上回る前記第1のアクティブピクセルの第1のサブセットに対応し、
前記非静的ピクセルは、前記第1の画像フレームと前記前の画像フレームとの間の前記ピクセル値の変化の程度が前記変化しきい値を下回る前記第1のアクティブピクセルの第2のサブセットに対応し、
前記入力データの前記第1のサブセットが、前記第1のアクティブピクセルの前記非静的ピクセルに対応する、
請求項19に記載の方法。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本特許出願は、本出願の譲受人に譲渡され、その全体がすべての目的のために参照により本明細書に組み込まれる、「EFFICIENT HARDWARE ACCELERATOR FOR SPARSE SENSOR」と題する、2019年11月7日に出願された、米国仮特許出願第62/932,067号の優先権を主張する。
【背景技術】
【0002】
一般的な画像センサーは、ピクセルセルのアレイを含む。各ピクセルセルは、光子を電荷(たとえば、電子または正孔)に変換することによって光を検知するためのフォトダイオードを含み得る。各ピクセルセルにおいて変換された電荷は、量子化されてデジタルピクセル値になり得、デジタルピクセル値のアレイから画像が生成され得る。
【0003】
画像センサーによって生成された画像は、たとえば、仮想現実(VR)アプリケーション、拡張現実(AR)、または複合現実(MR)アプリケーションなど、異なるアプリケーションをサポートするように処理され得る。次いで、画像中のある関心オブジェクトおよびそのロケーションを検出するために、画像に対して画像処理動作が実施され得る。画像中のオブジェクトならびにそのロケーションの検出に基づいて、VR/AR/MRアプリケーションは、ユーザにインタラクティブ体験を提供するために、たとえば、ディスプレイを介してユーザに表示するための仮想画像データ、スピーカーを介してユーザに出力するためのオーディオデータなどを生成および更新することができる。
【0004】
画像動作の空間および時間分解能を改善するために、画像センサーが、一般に、多数のピクセルセルを含み、高フレームレートにおいて画像を生成する。高フレームレートにおける高分解能画像フレームの生成、ならびにこれらの高分解能画像フレームの送信および処理は、画像センサーによる、および画像処理動作による、莫大な電力消費につながり得る。その上、一般にピクセルセルの小さいサブセットのみが関心オブジェクトから光を受け取ることを仮定すれば、オブジェクト検出/追跡動作のために有用でないピクセルデータを生成し、送信し、処理する際に多くの電力が浪費され、これは、画像検知および処理動作の全体的な効率を低下させる。
【発明の概要】
【0005】
本開示は、画像センサーに関する。より詳細には、限定はしないが、本開示は、スパース画像検知および処理動作を実施するための技法に関する。
【0006】
一例では、装置が提供される。本装置は、画像センサーと、フレームバッファと、センサーコンピュート回路とを備える。画像センサーは複数のピクセルセルを備え、画像センサーは、アクティブピクセルを生成するためのピクセルセルのサブセットを選択するように、プログラミングデータによって構成可能である。センサーコンピュート回路は、フレームバッファから、第1のアクティブピクセルと第1の非アクティブピクセル(inactive pixel)とを備える第1の画像フレームを受信することであって、第1のアクティブピクセルが、第1のプログラミングデータに基づいて選択されたピクセルセルの第1のサブセットによって生成され、第1の非アクティブピクセルが、第1のアクティブピクセルを生成するために選択されなかったピクセルセルの第2のサブセットに対応する、第1の画像フレームを受信することと、処理出力を生成するために、第1の画像フレームのピクセルの第1のサブセットに対して画像処理動作を実施することであって、それにより、第1の画像フレームのピクセルの第2のサブセットが画像処理動作から除外される、画像処理動作を実施することと、処理出力に基づいて、第2のプログラミングデータを生成することと、第2の画像フレームのための第2のアクティブピクセルを生成するためのピクセルセルの第2のサブセットを選択するために第2のプログラミングデータを画像センサーに送信することとを行うように構成される。
【0007】
いくつかの態様では、画像処理動作は、第1の画像フレーム中の関心オブジェクトを検出するためのニューラルネットワークモデルによる処理動作を含む。ピクセルの第1のサブセットは関心オブジェクトに対応する。
【0008】
いくつかの態様では、センサーコンピュート回路は、関心オブジェクトの検出の結果を使用するアプリケーションを実行するように構成されたホストデバイスと接続される。ホストデバイスは、関心オブジェクトに関する情報をセンサーコンピュート回路に提供するように構成される。
【0009】
いくつかの態様では、センサーコンピュート回路は、ニューラルネットワークのニューラルネットワーク層への入力データと、ニューラルネットワーク層の重みデータと、ニューラルネットワーク層の中間出力データとを記憶するように構成されたコンピュートメモリと、中間出力データを生成するために入力データと重みデータとに対してニューラルネットワーク層の算術演算(arithmetic operation)を実施するように構成されたデータ処理回路と、コンピュートメモリから、入力データの第1のサブセットと、入力データの第1のサブセットに対応する重みデータの第1のサブセットとを取得することであって、入力データの第1のサブセットが第1のアクティブピクセルのうちの少なくともいくつかに対応する、入力データの第1のサブセットと重みデータの第1のサブセットとを取得することと、第1の画像フレームのための中間出力データの第1のサブセットを生成するために入力データの第1のサブセットと重みデータの第1のサブセットとに対して算術演算を実施するようにデータ処理回路を制御することであって、中間出力データの第1のサブセットが入力データの第1のサブセットに対応する、データ処理回路を制御することと、第1の画像フレームのための中間出力データの第1のサブセットをコンピュートメモリに記憶することと、第1の画像フレームのための中間出力データの第2のサブセットについての所定の値をコンピュートメモリに記憶することであって、中間出力データの第2のサブセットがアクティブでないピクセル(non-active pixel)に対応する、所定の値をコンピュートメモリに記憶することとを行うように構成された、コンピュートコントローラとを備える。
【0010】
いくつかの態様では、所定の値は、画像処理動作より前にコンピュートメモリをリセットすることに基づいて記憶される。
【0011】
いくつかの態様では、コンピュートコントローラは、コンピュートメモリから入力データを取得することと、取得された入力データから、入力データの第1のサブセットを識別することと、入力データの識別された第1のサブセットをコンピュートコントローラに提供することとを行うように構成される。
【0012】
いくつかの態様では、コンピュートコントローラは、入力データの第1のサブセットを記憶するコンピュートメモリのアドレス領域を決定することと、コンピュートメモリから入力データの第1のサブセットを取得することとを行うように構成される。
【0013】
いくつかの態様では、アドレス領域は、第1のプログラミングデータ、またはニューラルネットワークモデルのニューラルネットワーク層間の接続性に関する情報のうちの少なくとも1つに基づいて決定される。
【0014】
いくつかの態様では、第1のアクティブピクセルは静的ピクセルと非静的ピクセルとを含み、静的ピクセルは、第1の画像フレームと前の画像フレームとの間のピクセル値の変化の程度が変化しきい値を上回る第1のアクティブピクセルの第1のサブセットに対応し、非静的ピクセルは、第1の画像フレームと前の画像フレームとの間のピクセル値の変化の程度が変化しきい値を下回る第1のアクティブピクセルの第2のサブセットに対応し、コンピュートコントローラは、第1のアクティブピクセルの非静的ピクセルに対応する入力データの第1のサブセットを取得するように構成される。
【0015】
いくつかの態様では、所定の値は第1の所定の値である。フレームバッファは、静的ピクセルをシグナリングするために静的ピクセルの各々についての第2の所定の値を記憶するように構成される。コンピュートコントローラは、静的ピクセルが第2の所定の値を有することを検出したことに基づいてデータ処理回路から静的ピクセルを除外するように構成される。
【0016】
いくつかの態様では、フレームバッファは、ピクセルについての第2の所定の値を、しきい値数のフレームにわたるピクセルの変化の程度が変化しきい値を下回ると決定したことに基づいて、記憶するように構成される。
【0017】
いくつかの態様では、フレームバッファは、時定数を有するリーキー積分関数(leaky integrator function)に基づいて、および変化しきい値よりも大きい変化の程度がピクセルに最後にいつ起きたかに基づいて、ピクセルのピクセル値を設定更新するように構成される。
【0018】
いくつかの態様では、コンピュートコントローラは、ニューラルネットワークモデルのトポロジーに基づいて、ニューラルネットワークモデルの異なるニューラルネットワーク層を通って非静的ピクセルの変化がどのように伝搬するかを指示するデータ変化伝搬マップを決定することと、データ変化伝搬マップに基づいて、入力データの第1のサブセットを取得するためのコンピュートメモリの第1のアドレス領域と、中間出力データの第1のサブセットを記憶するためのコンピュートメモリの第2のアドレス領域とを決定することと、第1のアドレス領域から入力データの第1のサブセットを取得することと、第2のアドレス領域において中間出力データの第1のサブセットを記憶することとを行うように構成される。
【0019】
いくつかの態様では、コンピュートコントローラは、ニューラルネットワークモデルの深度とニューラルネットワークモデルの各ニューラルネットワーク層における量子化精度とに基づいて変化しきい値を決定するように構成される。
【0020】
いくつかの態様では、変化しきい値は第1の変化しきい値である。コンピュートコントローラは、2つの非連続フレーム間の第1のアクティブピクセルのピクセル値の変化の程度を追跡することと、変化の程度が第2の変化しきい値を超えたことに基づいて、第1のアクティブピクセルの第3のサブセットを非静的ピクセルとして決定することとを行うように構成される。
【0021】
いくつかの態様では、画像センサーは第1の半導体基板中で実装される。フレームバッファとセンサーコンピュート回路とは、1つまたは複数の第2の半導体基板中で実装される。第1の半導体基板と1つまたは複数の第2の半導体基板とは、スタックを形成し、単一の半導体パッケージ中に収容される。
【0022】
いくつかの例では、方法が提供される。本方法は、第1のアクティブピクセルを生成するための複数のピクセルセルの第1のサブセットを選択するために、第1のプログラミングデータを、上記ピクセルセルを備える画像センサーに送信することと、フレームバッファから、第1のアクティブピクセルと第1の非アクティブピクセルとを備える第1の画像フレームを受信することであって、第1の非アクティブピクセルが、第1のアクティブピクセルを生成するために選択されなかったピクセルセルの第2のサブセットに対応する、第1の画像フレームを受信することと、処理出力を生成するために、第1の画像フレームのピクセルの第1のサブセットに対して画像処理動作を実施することであって、それにより、第1の画像フレームのピクセルの第2のサブセットが画像処理動作から除外される、画像処理動作を実施することと、処理出力に基づいて、第2のプログラミングデータを生成することと、第2の画像フレームのための第2のアクティブピクセルを生成するためのピクセルセルの第2のサブセットを選択するために第2のプログラミングデータを画像センサーに送信することとを含む。
【0023】
いくつかの態様では、画像処理動作は、第1の画像フレーム中の関心オブジェクトを検出するためのニューラルネットワークによる処理動作を含む。ピクセルの第1のサブセットは関心オブジェクトに対応する。
【0024】
いくつかの態様では、本方法は、ニューラルネットワークのニューラルネットワーク層への入力データと、ニューラルネットワーク層の重みデータとをコンピュートメモリに記憶することと、コンピュートメモリから、入力データの第1のサブセットと、入力データの第1のサブセットに対応する重みデータの第1のサブセットとを取得することであって、入力データの第1のサブセットが第1のアクティブピクセルのうちの少なくともいくつかに対応する、入力データの第1のサブセットと重みデータの第1のサブセットとを取得することと、データ処理回路を使用して、第1の画像フレームのための中間出力データの第1のサブセットを生成するために入力データの第1のサブセットと重みデータの第1のサブセットとに対して算術演算を実施することであって、中間出力データの第1のサブセットが入力データの第1のサブセットに対応する、算術演算を実施することと、第1の画像フレームのための中間出力データの第1のサブセットをコンピュートメモリに記憶することと、第1の画像フレームのための中間出力データの第2のサブセットについての所定の値をコンピュートメモリに記憶することであって、中間出力データの第2のサブセットがアクティブでないピクセルに対応する、所定の値をコンピュートメモリに記憶することとをさらに含む。
【0025】
いくつかの態様では、第1のアクティブピクセルは静的ピクセルと非静的ピクセルとを含む。静的ピクセルは、第1の画像フレームと前の画像フレームとの間のピクセル値の変化の程度が変化しきい値を上回る第1のアクティブピクセルの第1のサブセットに対応する。非静的ピクセルは、第1の画像フレームと前の画像フレームとの間のピクセル値の変化の程度が変化しきい値を下回る第1のアクティブピクセルの第2のサブセットに対応する。入力データの第1のサブセットは、第1のアクティブピクセルの非静的ピクセルに対応する。
【0026】
以下の図を参照しながら、例示的な例が説明される。
【図面の簡単な説明】
【0027】
【
図2】ニアアイディスプレイの断面の一例の図である。
【
図3】単一のソースアセンブリ(source assembly)をもつ導波路ディスプレイ(waveguide display)の一例の等角図である。
【
図4】導波路ディスプレイの一例の断面を示す図である。
【
図5】ニアアイディスプレイを含むシステムの一例のブロック図である。
【
図6A】画像センサーおよびその動作の例を示す図である。
【
図6B】画像センサーおよびその動作の例を示す図である。
【
図7A】
図6Aおよび
図6Bの画像センサーの出力によってサポートされるアプリケーションの例を示す図である。
【
図7B】
図6Aおよび
図6Bの画像センサーの出力によってサポートされるアプリケーションの例を示す図である。
【
図7C】
図6Aおよび
図6Bの画像センサーの出力によってサポートされるアプリケーションの例を示す図である。
【
図7D】
図6Aおよび
図6Bの画像センサーの出力によってサポートされるアプリケーションの例を示す図である。
【
図8A】
図7A~
図7Dに示されている動作をサポートするための撮像システムの例を示す図である。
【
図8B】
図7A~
図7Dに示されている動作をサポートするための撮像システムの例を示す図である。
【
図9A】
図8Aおよび
図8Bの撮像システムの例示的な内部構成要素ならびにそれらの動作を示す図である。
【
図9B】
図8Aおよび
図8Bの撮像システムの例示的な内部構成要素ならびにそれらの動作を示す図である。
【
図9C】
図8Aおよび
図8Bの撮像システムの例示的な内部構成要素ならびにそれらの動作を示す図である。
【
図10A】
図8Aおよび
図8Bの画像プロセッサの例示的な内部構成要素ならびにそれらの動作を示す図である。
【
図10B】
図8Aおよび
図8Bの画像プロセッサの例示的な内部構成要素ならびにそれらの動作を示す図である。
【
図10C】
図8Aおよび
図8Bの画像プロセッサの例示的な内部構成要素ならびにそれらの動作を示す図である。
【
図12A】
図8Aおよび
図8Bのフレームバッファの例示的な内部構成要素ならびにそれらの動作を示す図である。
【
図12B】
図8Aおよび
図8Bのフレームバッファの例示的な内部構成要素ならびにそれらの動作を示す図である。
【
図12C】
図8Aおよび
図8Bのフレームバッファの例示的な内部構成要素ならびにそれらの動作を示す図である。
【
図15】画像センサーを動作させる例示的なプロセスのフローチャートである。
【発明を実施するための形態】
【0028】
図は、単に例示の目的で本開示の例を図示する。本開示の原理または本開示においてうたわれている利益から逸脱することなく、示される構造および方法の代替例が採用され得ることを、当業者は以下の説明から容易に認識されよう。
【0029】
添付の図において、同様の構成要素および/または特徴は、同じ参照ラベルを有し得る。さらに、同じタイプの様々な構成要素は、同様の構成要素間を区別するダッシュおよび第2のラベルを参照ラベルの後に続けることによって区別され得る。第1の参照ラベルのみが明細書において使用される場合、説明は、第2の参照ラベルには関係なく同じ第1の参照ラベルを有する同様の構成要素のいずれか1つに適用可能である。
【0030】
以下の説明では、説明の目的で、いくつかの発明の例の完全な理解を提供するために、具体的な詳細が記載される。ただし、様々な例がこれらの具体的な詳細なしに実践され得ることは明らかであろう。図および説明は、限定するものではない。
【0031】
上記で説明されたように、画像センサーが、一般に、撮像動作の空間および時間分解能を改善するために、多数のピクセルセルを含み、高フレームレートにおいて画像を生成する。しかし、高フレームレートにおける高分解能画像フレームの生成、ならびにこれらの高分解能画像フレームの送信および処理は、画像センサーによる、および画像プロセス動作による、莫大な電力消費につながり得る。その上、一般にピクセルセルの小さいサブセットのみが関心オブジェクトから光を受け取ることを仮定すれば、オブジェクト検出/追跡動作のために有用でないピクセルデータを生成し、送信し、処理する際に多くの電力が浪費され、これは、画像検知および処理動作の全体的な効率を低下させる。
【0032】
本開示は、上記の問題点のうちの少なくともいくつかに対処することができる画像検知および処理技法を提案する。いくつかの例では、装置が、画像センサーと、フレームバッファと、コンピュート回路とを備える。画像センサーは複数のピクセルセルを備え、画像センサーは、アクティブピクセルを生成するためのピクセルセルのサブセットを選択するように、プログラミングデータによって構成可能である。フレームバッファは、第1のプログラミングデータに基づいて画像センサーによって選択されたピクセルセルの第1のサブセットによって生成されたアクティブピクセルのうちの少なくともいくつかを備える第1の画像フレームを記憶することができる。第1の画像フレームは、アクティブピクセルを生成するために選択されなかったピクセルセルの第2のサブセットに対応する非アクティブピクセルをさらに備える。コンピュート回路は、フレームバッファから第1の画像フレームを受信することができる。コンピュート回路は、処理出力を生成するために、第1の画像フレームのピクセルの第1のサブセットに対して画像処理動作を実施することであって、それにより、第1の画像フレームのピクセルの第2のサブセットが画像処理動作から除外される、画像処理動作を実施することを行うための画像プロセッサを含むことができる。コンピュート回路は、画像プロセッサからの処理出力に基づいて第2のプログラミングデータを生成することと、第2の画像フレームのためのピクセルデータを出力するためのピクセルセルの第2のサブセットを選択するために第2のプログラミングデータを画像センサーに送信することとを行うためのプログラミングマップ生成器をさらに含む。画像処理動作が実施される第1の画像フレームのピクセルの第1のサブセットは、たとえば、アクティブピクセル、フレーム間のある程度の変化が起きる非静的ピクセルなどに対応することができる。
【0033】
いくつかの例では、装置は、スパース画像検知動作に基づくオブジェクト検出および追跡動作をサポートすることができる。ピクセルセルの第1のサブセットは、スパース画像検知動作をサポートするために、オブジェクトをアクティブピクセルとして追跡および検出することに関連するピクセルデータのみをキャプチャすること、またはアクティブピクセルのみをフレームバッファに送信することを選択的に可能にされ得る。ピクセルセルのサブセットのみがアクティブピクセルを生成および/または送信することを可能にされるので、画像フレームのために生成/送信されるピクセルデータのボリュームは低減され得、これは、画像センサーにおける電力消費を低減することができる。スパース画像検知動作は、画像センサーに対するオブジェクトの相対移動を考慮するように、オブジェクト検出および追跡動作の結果に基づいて連続的に調整され得、これは、アクティブピクセルがオブジェクトの画像データを含む可能性を改善し、オブジェクト検出および追跡動作に依拠するアプリケーション(たとえば、VR/AR/MRアプリケーション)の性能を改善することができる。さらに、コンピュート回路は、オブジェクトの画像データを含む可能性がある、アクティブピクセル、またはアクティブピクセルのサブセットのみに対して画像処理動作を実施し、非アクティブピクセルは画像処理動作から除外され、これは、画像プロセス動作の電力消費をさらに低減することができる。これらのすべては、画像検知および処理動作の全体的な電力および計算(computation)効率ならびに性能を改善することができる。
【0034】
いくつかの例では、画像処理動作は、ニューラルネットワーク動作を含むことができる。詳細には、画像プロセッサは、入力層と出力層とを含む多層畳み込みニューラルネットワーク(CNN)など、ニューラルネットワーク動作のためのハードウェアアクセラレーションを提供するためのデータ処理回路を含むことができる。画像プロセッサは、入力画像フレームと、各ニューラルネットワーク層に関連付けられた重みのセットとを記憶するためのコンピュートメモリを含むことができる。重みのセットは、検出されるべきオブジェクトの特徴を表すことができる。画像プロセッサは、コンピュートメモリから入力画像フレームデータと重みとを取得するようにデータ処理回路を制御するためのコントローラを含むことができる。コントローラは、入力層のための中間出力データを生成するために、入力画像フレームと重みとの間で、積和(MAC:multiply-and-accumulate)演算など、算術演算を実施するようにデータ処理回路を制御することができる。中間出力データは、たとえば、アクティブ化関数、プーリング演算などに基づいて後処理され、次いで、後処理された中間出力データは、コンピュートメモリに記憶され得る。後処理された中間出力データは、コンピュートメモリから取得され、入力として次のニューラルネットワーク層に提供され得る。算術演算、ならびに中間出力データの取得および記憶は、ニューラルネットワーク出力を生成するために、出力層までのすべての層について繰り返される。ニューラルネットワーク出力は、たとえば、入力画像フレーム中にオブジェクトが存在する可能性、および入力画像フレーム中のオブジェクトのピクセルロケーションを指示することができる。
【0035】
コントローラは、効率的な様式でスパース画像データを処理するようにデータ処理回路を構成することができる。たとえば、入力層の場合、コントローラは、コンピュートメモリからアクティブピクセルおよび対応する重みのみを取得するように、ならびに、入力層のためのアクティブピクセルに対応する中間出力のサブセットを生成するためにアクティブピクセルおよび対応する重みのみに対してMAC演算を実施するように、データ処理回路を制御することができる。コントローラはまた、ニューラルネットワークのトポロジーと後続のニューラルネットワーク層の間の接続とに基づいて、アクティブピクセルまで遡ることができる各後続のニューラルネットワークにおける中間出力データのサブセットを決定することができる。コントローラは、各後続のニューラルネットワーク層における中間出力データのサブセットのみを生成するためにMAC演算を実施するようにデータ処理回路を制御することができる。さらに、コンピュートメモリのアクセスを低減するために、各層のための中間出力データについての所定の値(たとえば、0)が、ニューラルネットワーク動作より前にコンピュートメモリに記憶され得る。アクティブピクセルのための中間出力データのみが更新される。これらのすべては、スパース画像データにわたるニューラルネットワーク動作による電力消費を低減することができる。
【0036】
いくつかの例では、電力消費をさらに低減し、電力および計算効率を改善するために、フレームバッファとコンピュート回路とは、時間スパーシティ動作をサポートすることができる。時間スパーシティ動作の一部として、静的であるピクセルと非静的であるピクセルとが識別され得る。第1の画像フレームと前の画像フレームとの間の小さい変化が起きる(または変化が起きない)静的ピクセルは、画像センサーによってキャプチャされるシーンの第1の部分に対応することができ、第1の画像フレームと前の画像フレームとの間の大きい変化が起きる非静的ピクセルは、シーンの第2の部分に対応する。ピクセルの変化の程度がしきい値を下回る場合、そのピクセルは静的であると決定され得る。いくつかの例では、非静的ピクセルはアクティブピクセルから識別され得、静的ピクセルは、アクティブピクセル、ならびにフレーム間で非アクティブのままである(および変化しないままである)非アクティブピクセルの両方から識別され得る。
【0037】
電力消費を低減するために、データ処理回路は、非静的ピクセルのための更新された出力を生成するために、第1の画像フレームの非静的ピクセルのみに対して画像処理動作(たとえば、ニューラルネットワーク動作)を実施することができる。静的ピクセルの場合、画像処理動作はスキップされ得、前の画像フレームに対する画像処理動作からの出力が保持され得る。画像処理動作がニューラルネットワーク動作を含む場合、コントローラは、入力層のための非静的ピクセルに対応する中間出力データのサブセットを更新するためにコンピュートメモリから非静的ピクセルおよび対応する重みデータのみを取得するように、データ処理回路を制御することができる。コンピュートメモリ中の、(前の画像フレームから取得された)静的ピクセルに対応し、(たとえば、0などの所定の値を有する)アクティブでないピクセルに対応する、中間出力データの残りは、入力層について保持され得る。コントローラはまた、ニューラルネットワークのトポロジーと後続のニューラルネットワーク層の間の接続とに基づいて、非静的ピクセルまで遡ることができる各後続のニューラルネットワークにおける中間出力データのサブセットを決定し、コンピュートメモリへのアクセスを低減するために、および電力消費を低減するために、中間出力データのサブセットのみを更新することができる。
【0038】
いくつかの例では、フレームバッファは、画像センサーによって出力されたアクティブピクセルから静的ピクセルを検出し、それらのピクセルが静的ピクセルであることを画像プロセッサにシグナリングするためにそれらのピクセルについてのピクセル値を記憶することができる。たとえば、フレームバッファは、画像センサーの各ピクセルセルからの(アクティブピクセルと非アクティブピクセルとを含む)最も最近のピクセルデータを第1の画像フレームとして記憶することができる。アクティブピクセルの各ピクセルについて、フレームバッファは、第1の画像フレームの直前の画像フレームなど、前のフレームに対するピクセルの変化の程度を決定することができる。フレームバッファは、様々なやり方で静的ピクセルを指示するようにピクセル値を設定することができる。たとえば、フレームバッファは、時定数を有するリーキー積分関数に基づいて、および画像センサーによって出力されたピクセルが静的なままであった連続画像フレームの数に基づいて、フレームバッファ中のピクセルについてのピクセル値を設定することができる。ピクセルが多数の連続画像フレームについて静的なままであった場合、ピクセルのピクセル値は、所定のピクセル値において安定することができる。別の例として、ピクセルがしきい値数(たとえば、10個)の連続画像フレームについて静的なままであった場合、フレームバッファは、フレームバッファ中のピクセルについての所定のピクセル値を設定することができる。所定のピクセル値は、暗い色(0)、白色(255)、灰色(128)、または静的ピクセルを指示する任意の値に対応することができる。すべてのこれらの場合では、画像プロセッサは、静的ピクセルをシグナリングするピクセル値を識別したことに基づいて静的ピクセルと非静的ピクセルとを区別し、上記で説明されたように非静的ピクセルのみに対して画像処理動作を実施することができる。
【0039】
いくつかの例では、画像プロセッサはまた、非静的ピクセルの処理を促進するために追加情報を生成することができる。たとえば、画像プロセッサは、ニューラルネットワークモデルの入力層から出力層へのデータ変化の伝搬を追跡するデータ変化伝搬マップを、そのモデルのトポロジーに基づいて決定することができる。伝搬マップ、ならびにフレームバッファからの静的ピクセルに基づいて、画像プロセッサは、非静的である、各ニューラルネットワークのための入力データを識別し、各層におけるニューラルネットワーク動作のためにそれらの入力データのみを取得することができる。さらに、画像プロセッサはまた、非静的であると決定されたピクセルが出力層における必須の程度の変化をもたらし得ることを保証するために、ニューラルネットワークモデルのトポロジーに基づいて、静的/非静的ピクセル決定のための変化のしきい値程度を決定することができる。さらに、画像プロセッサはまた、連続フレーム間の、および非連続フレーム間のピクセルの変化を追跡することができる。画像プロセッサは、連続フレーム間の小さい変化を呈するピクセルを識別することができるが、非連続フレーム間の大きな変化を非静的ピクセルとして識別することもでき、それにより、画像プロセッサは、それらのピクセルに対して画像処理動作を実施することができる。
【0040】
開示される技法では、画像センサーが、画像センサーにおける電力消費を低減することができる、スパース画像を生成するためのスパース画像検知動作を実施するように構成され得る。その上、画像プロセッサが、アクティブおよび/または非静的ピクセルのみに対して画像処理動作を実施し、非アクティブおよび/または静的ピクセルに対する画像処理動作をスキップするように構成され得、これは、電力消費をさらに低減することができる。その上、アクティブピクセルを生成するためのピクセルセルの選択は、アクティブピクセルが関連情報(たとえば、関心オブジェクトの画像)を含んでいることを保証するために、画像処理結果に基づくことができる。これらのすべては、画像センサーおよび画像プロセッサの電力および計算効率を改善することができる。
【0041】
開示される技法は、人工現実システムを含むか、または人工現実システムに関連して実装され得る。人工現実は、ユーザへの提示の前に何らかの様式で調整された形式の現実であり、これは、たとえば、仮想現実(VR)、拡張現実(AR)、複合現実(MR)、ハイブリッド現実、あるいはそれらの何らかの組合せおよび/または派生物を含み得る。人工現実コンテンツは、完全に生成されたコンテンツ、またはキャプチャされた(たとえば、現実世界の)コンテンツと組み合わせられた生成されたコンテンツを含み得る。人工現実コンテンツは、ビデオ、オーディオ、触覚フィードバック、またはそれらの何らかの組合せを含み得、それらのいずれも、単一のチャネルまたは複数のチャネルにおいて提示され得る(観察者に3次元効果をもたらすステレオビデオなど)。さらに、いくつかの例では、人工現実は、たとえば、人工現実におけるコンテンツを作成するために使用される、および/または人工現実において別様に使用される(たとえば、アクティビティを実施する)アプリケーション、製品、アクセサリ、サービス、またはそれらの何らかの組合せにも関連付けられ得る。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されたヘッドマウントディスプレイ(HMD)、スタンドアロンHMD、モバイルデバイスまたはコンピューティングシステム、あるいは1人または複数の観察者に人工現実コンテンツを提供することが可能な任意の他のハードウェアプラットフォームを含む、様々なプラットフォーム上に実装され得る。
【0042】
図1Aは、ニアアイディスプレイ100の一例の図である。ニアアイディスプレイ100は、ユーザにメディアを提示する。ニアアイディスプレイ100によって提示されるメディアの例は、1つまたは複数の画像、ビデオ、および/またはオーディオを含む。いくつかの例では、オーディオは、外部デバイス(たとえば、スピーカーおよび/またはヘッドフォン)を介して提示され、この外部デバイスは、ニアアイディスプレイ100、コンソール、またはその両方からオーディオ情報を受け取り、そのオーディオ情報に基づいてオーディオデータを提示する。ニアアイディスプレイ100は、概して、仮想現実(VR)ディスプレイとして動作するように構成される。いくつかの例では、ニアアイディスプレイ100は、拡張現実(AR)ディスプレイおよび/または複合現実(MR)ディスプレイとして動作するように変更される。
【0043】
ニアアイディスプレイ100は、フレーム105とディスプレイ110とを含む。フレーム105は、1つまたは複数の光学要素に結合される。ディスプレイ110は、ユーザがニアアイディスプレイ100によって提示されたコンテンツを見るように構成される。いくつかの例では、ディスプレイ110は、1つまたは複数の画像からの光をユーザの眼に向けるための導波路ディスプレイアセンブリを備える。
【0044】
ニアアイディスプレイ100は、画像センサー120a、120b、120c、および120dをさらに含む。画像センサー120a、120b、120c、および120dの各々は、異なる方向に沿った異なる視野を表す画像データを生成するように構成されたピクセルアレイを含み得る。たとえば、センサー120aおよび120bは、Z軸に沿った方向Aに向かう2つの視野を表す画像データを提供するように構成され得、センサー120cは、X軸に沿った方向Bに向かう視野を表す画像データを提供するように構成され得、センサー120dは、X軸に沿った方向Cに向かう視野を表す画像データを提供するように構成され得る。
【0045】
いくつかの例では、センサー120a~120dは、ニアアイディスプレイ100を装着したユーザにインタラクティブVR/AR/MR体験を提供するために、ニアアイディスプレイ100のディスプレイコンテンツを制御するかまたはニアアイディスプレイ100のディスプレイコンテンツに影響を与えるための入力デバイスとして構成され得る。たとえば、センサー120a~120dは、ユーザが位置する物理的環境の物理的画像データを生成することができる。物理的画像データは、物理的環境におけるユーザのロケーションおよび/または移動の経路を追跡するためのロケーション追跡システムに提供され得る。システムは、次いで、インタラクティブ体験を提供するために、たとえば、ユーザのロケーションおよび配向に基づいて、ディスプレイ110に提供された画像データを更新することができる。いくつかの例では、ロケーション追跡システムは、ユーザが物理的環境内を移動するにつれて、物理的環境におけるおよびユーザの視野内のオブジェクトのセットを追跡するために、同時位置特定およびマッピング(SLAM:simultaneous localization and mapping)アルゴリズムを動作させ得る。ロケーション追跡システムは、オブジェクトのセットに基づいて物理的環境のマップを構築および更新し、マップ内のユーザのロケーションを追跡することができる。複数の視野に対応する画像データを提供することによって、センサー120a~120dは、ロケーション追跡システムに物理的環境のより全体的なビューを提供することができ、これは、マップの構築および更新に含まれるより多くのオブジェクトにつながり得る。そのような仕組みにより、物理的環境内のユーザのロケーションを追跡することの正確さおよびロバストネスが改善され得る。
【0046】
いくつかの例では、ニアアイディスプレイ100は、物理的環境に光を投影するための1つまたは複数のアクティブ照明器130をさらに含み得る。投影された光は、異なる周波数スペクトル(たとえば、可視光、赤外(IR)光、紫外光)に関連付けられ得、様々な目的を果たすことができる。たとえば、照明器130は、たとえば、ユーザのロケーション追跡を可能にするために、センサー120a~120dが暗い環境内の異なるオブジェクトの画像をキャプチャするのを支援するために、暗い環境において(または、低強度の(IR)光、紫外光などを伴う環境において)光を投影し得る。照明器130は、ロケーション追跡システムがマップ構築/更新のためにオブジェクトを識別するのを支援するために、環境内のオブジェクト上にいくつかのマーカーを投影し得る。
【0047】
いくつかの例では、照明器130は、立体撮像をも可能にし得る。たとえば、センサー120aまたは120bのうちの1つまたは複数は、可視光検知のための第1のピクセルアレイと(IR)光検知のための第2のピクセルアレイの両方を含むことができる。第1のピクセルアレイは、色フィルタ(たとえば、バイエルフィルタ)でオーバーレイされ得、第1のピクセルアレイの各ピクセルが、特定の色(たとえば、赤色、緑色または青色(RGB)のうちの1つ)に関連付けられた光の強度を測定するように構成される。また、(IR光検知のための)第2のピクセルアレイは、IR光の通過のみを可能にするフィルタでオーバーレイされ得、第2のピクセルアレイの各ピクセルが、IR光の強度を測定するように構成される。ピクセルアレイは、オブジェクトのRGB画像およびIR画像を生成することができ、IR画像の各ピクセルが、RGB画像の各ピクセルにマッピングされる。照明器130は、オブジェクト上にIRマーカーのセットを投影し得、その画像は、IRピクセルアレイによってキャプチャされ得る。画像に示されているオブジェクトのIRマーカーの分布に基づいて、システムは、IRピクセルアレイからのオブジェクトの異なる部分の距離を推定し、その距離に基づいてオブジェクトの立体画像を生成することができる。オブジェクトの立体画像に基づいて、システムは、たとえば、ユーザに対するオブジェクトの相対位置を決定することができ、インタラクティブ体験を提供するために、相対位置情報に基づいて、ディスプレイ100に提供された画像データを更新することができる。
【0048】
上記で説明されたように、ニアアイディスプレイ100は、広範囲の光強度に関連付けられた環境において動作され得る。たとえば、ニアアイディスプレイ100は、屋内環境または屋外環境において、および/あるいは1日の異なる時間において動作され得る。ニアアイディスプレイ100はまた、アクティブ照明器130がオンにされていてもいなくても動作し得る。その結果、画像センサー120a~120dは、ニアアイディスプレイ100のための異なる動作環境に関連付けられた極めて広範囲の光強度にわたって適切に動作すること(たとえば、入射光の強度と相関する出力を生成すること)が可能であるために、広いダイナミックレンジを有する必要があり得る。
【0049】
図1Bは、ニアアイディスプレイ100の別の例の図である。
図1Bは、ニアアイディスプレイ100を装着したユーザの(1つまたは複数の)眼球135に面するニアアイディスプレイ100の側面を示す。
図1Bに示されているように、ニアアイディスプレイ100は、複数の照明器140a、140b、140c、140d、140e、および140fをさらに含み得る。ニアアイディスプレイ100は、複数の画像センサー150aおよび150bをさらに含む。照明器140a、140b、および140cは、(
図1Aの方向Aと反対である)方向Dに向かってある周波数範囲(たとえば、近赤外(NIR))の光を放出し得る。放出された光は、あるパターンに関連付けられ得、ユーザの左眼球によって反射され得る。センサー150aは、反射された光を受け取り、反射パターンの画像を生成するためのピクセルアレイを含み得る。同様に、照明器140d、140e、および140fは、パターンを搬送するNIR光を放出し得る。NIR光は、ユーザの右眼球によって反射され得、センサー150bによって受け取られ得る。センサー150bも、反射パターンの画像を生成するためのピクセルアレイを含み得る。センサー150aおよび150bからの反射パターンの画像に基づいて、システムは、ユーザの注視点を決定し、ユーザにインタラクティブ体験を提供するために、決定された注視点に基づいて、ディスプレイ100に提供された画像データを更新することができる。
【0050】
上記で説明されたように、ユーザの眼球に損傷を与えることを回避するために、照明器140a、140b、140c、140d、140e、および140fは、一般的に、低強度の光を出力するように構成される。画像センサー150aおよび150bが
図1Aの画像センサー120a~120dと同じセンサーデバイスを備える場合、画像センサー120a~120dは、入射光の強度が低いときに入射光の強度と相関する出力を生成することが可能である必要があり得、これは、画像センサーのダイナミックレンジ要件をさらに増加させ得る。
【0051】
その上、画像センサー120a~120dは、眼球の移動を追跡するために高速で出力を生成することが可能である必要があり得る。たとえば、ユーザの眼球は、ある眼球位置から別の眼球位置への素早いジャンプがあり得る極めて急速な移動(たとえば、サッカード運動(saccade movement))を実施することができる。ユーザの眼球の急速な移動を追跡するために、画像センサー120a~120dは、高速で眼球の画像を生成する必要がある。たとえば、画像センサーが画像フレームを生成するレート(フレームレート)は、少なくとも、眼球の移動の速度に一致する必要がある。高いフレームレートは、画像フレームを生成することに関与するピクセルセルのすべてについての短い総露光時間、ならびに、画像生成のためにセンサー出力をデジタル値に変換するための高い速度を必要とする。その上、上記で説明されたように、画像センサーは、低光強度を伴う環境において動作することが可能である必要もある。
【0052】
図2は、
図1に示されているニアアイディスプレイ100の断面200の一例である。ディスプレイ110が、少なくとも1つの導波路ディスプレイアセンブリ210を含む。射出瞳230は、ユーザがニアアイディスプレイ100を装着したときにユーザの単一の眼球220がアイボックス(eyebox)領域中に配置されるロケーションである。例示の目的で、
図2は、眼球220と単一の導波路ディスプレイアセンブリ210とに関連付けられた断面200を示すが、第2の導波路ディスプレイがユーザの第2の眼のために使用される。
【0053】
導波路ディスプレイアセンブリ210は、画像光を、射出瞳230に位置するアイボックスに、および眼球220に向けるように構成される。導波路ディスプレイアセンブリ210は、1つまたは複数の屈折率をもつ1つまたは複数の材料(たとえば、プラスチック、ガラス)から構成され得る。いくつかの例では、ニアアイディスプレイ100は、導波路ディスプレイアセンブリ210と眼球220との間に1つまたは複数の光学要素を含む。
【0054】
いくつかの例では、導波路ディスプレイアセンブリ210は、制限はしないが、スタックされた導波路ディスプレイ、可変焦点導波路ディスプレイなどを含む、1つまたは複数の導波路ディスプレイのスタックを含む。スタックされた導波路ディスプレイは、それぞれの単色ソースが異なる色のものである導波路ディスプレイをスタックすることによって作成された多色ディスプレイ(たとえば、RGBディスプレイ)である。スタックされた導波路ディスプレイは、複数の平面上に投影され得る多色ディスプレイ(たとえば、多平面カラーディスプレイ)でもある。いくつかの構成では、スタックされた導波路ディスプレイは、複数の平面上に投影され得る単色ディスプレイ(たとえば、多平面単色ディスプレイ)である。可変焦点導波路ディスプレイは、導波路ディスプレイから放出された画像光の焦点位置を調整することができるディスプレイである。代替例では、導波路ディスプレイアセンブリ210は、スタックされた導波路ディスプレイと可変焦点導波路ディスプレイとを含み得る。
【0055】
図3は、導波路ディスプレイ300の一例の等角図を示す。いくつかの例では、導波路ディスプレイ300は、ニアアイディスプレイ100の構成要素(たとえば、導波路ディスプレイアセンブリ210)である。いくつかの例では、導波路ディスプレイ300は、画像光を特定のロケーションに向ける何らかの他のニアアイディスプレイまたは他のシステムの一部である。
【0056】
導波路ディスプレイ300は、ソースアセンブリ310と、出力導波路320と、コントローラ330とを含む。例示の目的で、
図3は、単一の眼球220に関連付けられた導波路ディスプレイ300を示すが、いくつかの例では、導波路ディスプレイ300とは別個の、または部分的に別個の別の導波路ディスプレイが、ユーザの別の眼に画像光を提供する。
【0057】
ソースアセンブリ310は、画像光355を生成する。ソースアセンブリ310は、画像光355を生成し、出力導波路320の第1の側面370-1上に位置する結合要素350に出力する。出力導波路320は、拡大された画像光340をユーザの眼球220に出力する光導波路である。出力導波路320は、第1の側面370-1上に位置する1つまたは複数の結合要素350において画像光355を受け取り、受け取られた入力画像光355を方向付け要素360に導く。いくつかの例では、結合要素350は、ソースアセンブリ310からの画像光355を出力導波路320に結合する。結合要素350は、たとえば、回折格子、ホログラフィック格子、1つまたは複数のカスケード型反射器、1つまたは複数のプリズム表面要素、および/またはホログラフィック反射器のアレイであり得る。
【0058】
方向付け要素360は、受け取られた入力画像光355が分離要素365を介して出力導波路320から分離されるように、受け取られた入力画像光355を分離要素365に向け直す。方向付け要素360は、出力導波路320の第1の側面370-1の一部であるか、または出力導波路320の第1の側面370-1に取り付けられる。分離要素365は、方向付け要素360が分離要素365に対向するように、出力導波路320の第2の側面370-2の一部であるか、または出力導波路320の第2の側面370-2に取り付けられる。方向付け要素360および/または分離要素365は、たとえば、回折格子、ホログラフィック格子、1つまたは複数のカスケード型反射器、1つまたは複数のプリズム表面要素、および/またはホログラフィック反射器のアレイであり得る。
【0059】
第2の側面370-2は、x次元およびy次元に沿った平面を表す。出力導波路320は、画像光355の内部全反射を促進する1つまたは複数の材料から構成され得る。出力導波路320は、たとえば、シリコン、プラスチック、ガラス、および/またはポリマーから構成され得る。出力導波路320は、比較的小さいフォームファクタを有する。たとえば、出力導波路320は、x次元に沿って幅約50mm、y次元に沿って長さ約30mm、およびz次元に沿って厚さ約0.5~1mmであり得る。
【0060】
コントローラ330は、ソースアセンブリ310のスキャン動作を制御する。コントローラ330は、ソースアセンブリ310のためのスキャン命令を決定する。いくつかの例では、出力導波路320は、拡大された画像光340を大きい視野(FOV)でユーザの眼球220に出力する。たとえば、拡大された画像光340は、60度のおよび/またはそれよりも大きい、ならびに/あるいは150度のおよび/またはそれよりも小さい(xおよびyにおける)対角FOVでユーザの眼球220に提供される。出力導波路320は、20mm以上および/または50mm以下の長さ、ならびに/あるいは10mm以上および/または50mm以下の幅をもつアイボックスを提供するように構成される。
【0061】
その上、コントローラ330は、画像センサー370によって提供される画像データに基づいて、ソースアセンブリ310によって生成される画像光355をも制御する。画像センサー370は、第1の側面370-1上に位置し得、たとえば、
図1Aの画像センサー120a~120dを含み得る。画像センサー120a~120dは、たとえば、(たとえば、第1の側面370-1に面する)ユーザの前にあるオブジェクト372の、2D検知および3D検知を実施するように動作され得る。2D検知の場合、画像センサー120a~120dの各ピクセルセルは、光源376によって生成され、オブジェクト372から反射された光374の強度を表すピクセルデータを生成するように動作され得る。3D検知の場合、画像センサー120a~120dの各ピクセルセルは、照明器325によって生成された光378についての飛行時間測定を表すピクセルデータを生成するように動作され得る。たとえば、画像センサー120a~120dの各ピクセルセルは、照明器325が光378を投影することを可能にされた第1の時間と、ピクセルセルが、オブジェクト372から反射された光378を検出する第2の時間とを決定することができる。第1の時間と第2の時間との間の差は、画像センサー120a~120dとオブジェクト372との間の光378の飛行時間を指示することができ、飛行時間情報は、画像センサー120a~120dとオブジェクト372との間の距離を決定するために使用され得る。画像センサー120a~120dは、異なる時間に2D検知と3D検知とを実施するように動作され、導波路ディスプレイ300内に位置し得る(または位置しないことがある)リモートコンソール390に、2D画像データおよび3D画像データを提供することができる。リモートコンソールは、たとえば、ユーザが位置する環境の3Dモデルを生成するために、ユーザのロケーションおよび/または配向を追跡するためになど、2D画像と3D画像とを組み合わせ得る。リモートコンソールは、2D画像および3D画像から導出された情報に基づいて、ユーザに表示されるべき画像のコンテンツを決定し得る。リモートコンソールは、決定されたコンテンツに関係する命令をコントローラ330に送信することができる。命令に基づいて、コントローラ330は、ユーザにインタラクティブ体験を提供するために、ソースアセンブリ310による画像光355の生成および出力を制御することができる。
【0062】
図4は、導波路ディスプレイ300の断面400の一例を示す。断面400は、ソースアセンブリ310と、出力導波路320と、画像センサー370とを含む。
図4の例では、画像センサー370は、ユーザの前にある物理的環境の画像を生成するために、第1の側面370-1上に位置するピクセルセル402のセットを含み得る。いくつかの例では、ピクセルセル402のセットと物理的環境との間に挿入された、機械的シャッター404および光学フィルタアレイ406があり得る。機械的シャッター404は、ピクセルセル402のセットの露光を制御することができる。いくつかの例では、機械的シャッター404は、以下で説明されるように、電子シャッターゲートと置き換えられ得る。光学フィルタアレイ406は、以下で説明されるように、ピクセルセル402のセットが露光される光の光波長範囲を制御することができる。ピクセルセル402の各々は、画像の1つのピクセルに対応し得る。
図4には示されていないが、ピクセルセル402の各々はまた、ピクセルセルによって検知されるべき光の光波長範囲を制御するために、フィルタでオーバーレイされ得ることを理解されたい。
【0063】
リモートコンソールから命令を受け取った後に、機械的シャッター404は、露光期間において開き、ピクセルセル402のセットを露光することができる。露光期間中に、画像センサー370は、ピクセルセル402のセットに入射した光のサンプルを取得し、ピクセルセル402のセットによって検出された入射光サンプルの強度分布に基づいて画像データを生成することができる。画像センサー370は、次いで、画像データを、ディスプレイコンテンツを決定するリモートコンソールに提供し、ディスプレイコンテンツ情報をコントローラ330に提供することができる。コントローラ330は、次いで、ディスプレイコンテンツ情報に基づいて画像光355を決定することができる。
【0064】
ソースアセンブリ310は、コントローラ330からの命令に従って画像光355を生成する。ソースアセンブリ310は、ソース410と光学システム415とを含む。ソース410は、コヒーレント光または部分的にコヒーレントな光を生成する光源である。ソース410は、たとえば、レーザーダイオード、垂直共振器面発光レーザー、および/または発光ダイオードであり得る。
【0065】
光学システム415は、ソース410からの光を調節する1つまたは複数の光学的構成要素を含む。ソース410からの光を調節することは、たとえば、コントローラ330からの命令に従って拡大し、コリメートし、および/または配向を調整することを含み得る。1つまたは複数の光学的構成要素は、1つまたは複数のレンズ、液体レンズ、ミラー、開口、および/または格子を含み得る。いくつかの例では、光学システム415は、光ビームを液体レンズ外の領域にシフトするためにしきい値のスキャン角度を伴う光ビームのスキャンを可能にする複数の電極をもつ液体レンズを含む。光学システム415(同じくソースアセンブリ310)から放出される光は、画像光355と呼ばれる。
【0066】
出力導波路320は、画像光355を受け取る。結合要素350は、ソースアセンブリ310からの画像光355を出力導波路320に結合する。結合要素350が回折格子である例では、内部全反射が出力導波路320中で発生し、画像光355が、分離要素365に向かって、(たとえば、内部全反射によって)出力導波路320中を内部的に伝搬するように、回折格子のピッチが選定される。
【0067】
方向付け要素360は、出力導波路320から分離するために、画像光355を分離要素365のほうへ向け直す。方向付け要素360が回折格子である例では、回折格子のピッチは、入射画像光355が、分離要素365の表面に対して(1つまたは複数の)傾斜角において出力導波路320を出ることを引き起こすように選定される。
【0068】
いくつかの例では、方向付け要素360および/または分離要素365は、構造的に同様である。出力導波路320を出た拡大された画像光340は、1つまたは複数の次元に沿って拡大される(たとえば、x次元に沿って延長され得る)。いくつかの例では、導波路ディスプレイ300は、複数のソースアセンブリ310と複数の出力導波路320とを含む。ソースアセンブリ310の各々は、原色(たとえば、赤、緑、または青)に対応する、波長の固有の帯域の単色画像光を放出する。出力導波路320の各々は、多色である拡大された画像光340を出力するために、離間距離を伴って一緒にスタックされ得る。
【0069】
図5は、ニアアイディスプレイ100を含むシステム500の一例のブロック図である。システム500は、各々制御回路510に接続された、ニアアイディスプレイ100と、撮像デバイス535と、入出力インターフェース540と、画像センサー120a~120dおよび150a~150bとを備える。システム500は、ヘッドマウントデバイス、モバイルデバイス、ウェアラブルデバイスなどとして構成され得る。
【0070】
ニアアイディスプレイ100は、ユーザにメディアを提示するディスプレイである。ニアアイディスプレイ100によって提示されるメディアの例は、1つまたは複数の画像、ビデオ、および/またはオーディオを含む。いくつかの例では、オーディオは、外部デバイス(たとえば、スピーカーおよび/またはヘッドフォン)を介して提示され、この外部デバイスは、ニアアイディスプレイ100および/または制御回路510からオーディオ情報を受け取り、そのオーディオ情報に基づいてオーディオデータをユーザに提示する。いくつかの例では、ニアアイディスプレイ100はまた、ARアイウェアグラスとして働き得る。いくつかの例では、ニアアイディスプレイ100は、コンピュータ生成された要素(たとえば、画像、ビデオ、音)を用いて、物理的現実世界の環境のビューを増強する。
【0071】
ニアアイディスプレイ100は、導波路ディスプレイアセンブリ210、1つまたは複数の位置センサー525、および/または慣性測定ユニット(IMU)530を含む。導波路ディスプレイアセンブリ210は、ソースアセンブリ310と、出力導波路320と、コントローラ330とを含む。
【0072】
IMU530は、位置センサー525のうちの1つまたは複数から受け取られた測定信号に基づいて、ニアアイディスプレイ100の初期位置に対するニアアイディスプレイ100の推定位置を指示する高速較正データを生成する電子デバイスである。
【0073】
撮像デバイス535は、様々なアプリケーションのための画像データを生成し得る。たとえば、撮像デバイス535は、制御回路510から受け取られた較正パラメータに従って低速較正データを提供するために画像データを生成し得る。撮像デバイス535は、たとえば、ユーザのロケーション追跡を実施するために、ユーザが位置する物理的環境の画像データを生成するために
図1Aの画像センサー120a~120dを含み得る。撮像デバイス535は、たとえば、ユーザの関心オブジェクトを識別するために、ユーザの注視点を決定するための画像データを生成するために、
図1Bの画像センサー150a~150bをさらに含み得る。
【0074】
入出力インターフェース540は、ユーザが制御回路510にアクション要求を送ることを可能にするデバイスである。アクション要求は、特定のアクションを実施するための要求である。たとえば、アクション要求は、アプリケーションを開始または終了するためのものであるか、あるいはアプリケーション内で特定のアクションを実施するためのものであり得る。
【0075】
制御回路510は、撮像デバイス535、ニアアイディスプレイ100、および/または入出力インターフェース540のうちの1つまたは複数から受け取られた情報に従って、ユーザへの提示のためのメディアをニアアイディスプレイ100に提供する。いくつかの例では、制御回路510は、ヘッドマウントデバイスとして構成されたシステム500内に収容され得る。いくつかの例では、制御回路510は、システム500の他の構成要素と通信可能に接続されたスタンドアロンコンソールデバイスであり得る。
図5に示されている例では、制御回路510は、アプリケーションストア545と、追跡モジュール550と、エンジン555とを含む。
【0076】
アプリケーションストア545は、510が実行するための1つまたは複数のアプリケーションを記憶する。アプリケーションは、プロセッサによって実行されたとき、ユーザへの提示のためのコンテンツを生成する命令のグループである。アプリケーションの例は、ゲーミングアプリケーション、会議アプリケーション、ビデオ再生アプリケーション、または他の好適なアプリケーションを含む。
【0077】
追跡モジュール550は、1つまたは複数の較正パラメータを使用してシステム500を較正し、ニアアイディスプレイ100の位置の決定における誤差を低減するために、1つまたは複数の較正パラメータを調整し得る。
【0078】
追跡モジュール550は、撮像デバイス535からの低速較正情報を使用して、ニアアイディスプレイ100の移動を追跡する。追跡モジュール550はまた、高速較正情報からの位置情報を使用して、ニアアイディスプレイ100の基準点の位置を決定する。
【0079】
エンジン555は、システム500内でアプリケーションを実行し、追跡モジュール550から、ニアアイディスプレイ100の位置情報、加速度情報、速さ情報、および/または予測された将来の位置を受け取る。いくつかの例では、エンジン555によって受け取られた情報は、ユーザに提示されるコンテンツのタイプを決定する導波路ディスプレイアセンブリ210への信号(たとえば、ディスプレイ命令)をもたらすために使用され得る。たとえば、インタラクティブ体験を提供するために、エンジン555は、(たとえば、追跡モジュール550によって提供される)ユーザのロケーション、または(たとえば、撮像デバイス535によって提供される画像データに基づく)ユーザの注視点、または(たとえば、撮像デバイス535によって提供される画像データに基づく)オブジェクトとユーザとの間の距離に基づいて、ユーザに提示されるべきコンテンツを決定し得る。
【0080】
図6A、
図6B、
図6C、および
図6Dは、画像センサー600およびその動作の例を示す。
図6Aに示されているように、画像センサー600は、ピクセルセル601を含むピクセルセルのアレイを含むことができ、画像のピクセルに対応するデジタル強度データを生成することができる。ピクセルセル601は、
図4のピクセルセル402の一部であり得る。
図6Aに示されているように、ピクセルセル601は、フォトダイオード602と、電子シャッタースイッチ603と、転送スイッチ604と、電荷貯蔵デバイス605と、バッファ606と、量子化器607とを含み得る。フォトダイオード602は、たとえば、P-Nダイオード、P-I-Nダイオード、ピン止めダイオードなどを含み得るが、電荷貯蔵デバイス605は、転送スイッチ604のフローティングドレインノードであり得る。フォトダイオード602は、露光期間内に光を受け取ると、残留電荷を生成および蓄積することができる。露光期間内の残留電荷による飽和時に、フォトダイオード602は、転送スイッチ604を介して電荷貯蔵デバイス605にオーバーフロー電荷を出力することができる。電荷貯蔵デバイス605は、オーバーフロー電荷を電圧に変換することができ、電圧は、バッファ606によってバッファされ得る。バッファされた電圧は、たとえば、露光期間内にフォトダイオード602によって受け取られた光の強度を表すために、測定データ608を生成するために量子化器607によって量子化され得る。
【0081】
量子化器607は、バッファされた電圧を、異なる強度範囲に関連付けられた異なる量子化動作のための異なるしきい値と比較するための、比較器を含み得る。たとえば、フォトダイオード602によって生成されたオーバーフロー電荷の量が電荷貯蔵デバイス605の飽和限界を超える、高強度範囲の場合、量子化器607は、バッファされた電圧が、飽和限界を表す静的しきい値を超えるかどうかを検出することと、バッファされた電圧が静的しきい値を超える場合、バッファされた電圧が静的しきい値を超えるのに要する時間を測定することとによって、飽和までの時間(TTS)測定動作を実施することができる。測定された時間は、光強度に反比例し得る。また、フォトダイオードが残留電荷によって飽和されるが、オーバーフロー電荷が電荷貯蔵デバイス605の飽和限界を下回るままである、中強度範囲の場合、量子化器607は、電荷貯蔵デバイス605に貯蔵されたオーバーフロー電荷の量を測定するために、完全にデジタルのアナログデジタル変換器(FD ADC:fully digital analog to digital converter)動作を実施することができる。さらに、フォトダイオードが残留電荷によって飽和されず、オーバーフロー電荷が電荷貯蔵デバイス605において蓄積されない、低強度範囲の場合、量子化器607は、フォトダイオード602において蓄積された残留電荷の量を測定するために、アナログセンサーのためのデジタルプロセスメーター(PD ADC)動作を実施することができる。TTS動作、FD ADC動作、またはPD ADC動作のうちの1つの出力は、光の強度を表すための測定データ608として出力され得る。
【0082】
図6Bは、ピクセルセル601の動作の例示的なシーケンスを示す。
図6Bに示されているように、露光期間は、有効化されたとき、フォトダイオード602によって生成された電荷を遠くへ誘導する(steer)ことができる、電子シャッタースイッチ603を制御するAB信号のタイミングに基づいて、および、読出しのために電荷貯蔵デバイス605にオーバーフロー電荷を転送し、次いで残留電荷を転送するように制御される、転送スイッチ604を制御するTG信号のタイミングに基づいて定義され得る。たとえば、
図6Bを参照すると、AB信号は、フォトダイオード602が電荷を生成することを可能にするために、時間T0においてアサート解除され得る。T0は、露光期間の開始をマークすることができる。露光期間内に、TG信号は、フォトダイオード602が飽和するまで、フォトダイオード602が残留電荷として電荷の少なくとも一部を蓄積することを可能にするために、部分的にオンの状態に転送スイッチ604を設定することができ、その後に、オーバーフロー電荷が電荷貯蔵デバイス605に転送され得る。時間T0と時間T1との間に、量子化器607は、電荷貯蔵デバイス605におけるオーバーフロー電荷が飽和限界を超えるかどうかを決定するために、TTS動作を実施することができ、次いで、時間T1と時間T2との間に、量子化器607は、電荷貯蔵デバイス605におけるオーバーフロー電荷の量を測定するために、FD ADC動作を実施することができる。時間T2と時間T3との間に、TG信号は、電荷貯蔵デバイス605に残留電荷を転送するために、完全にオンの状態にある転送スイッチ604をバイアスするためにアサートされ得る。時間T3において、TG信号は、フォトダイオード602から電荷貯蔵デバイス605を隔離するためにアサート解除され得るが、AB信号は、フォトダイオード602によって生成された電荷を遠くへ誘導するためにアサートされ得る。時間T3は、露光期間の終了をマークすることができる。時間T3と時間T4との間に、量子化器607は、残留電荷の量を測定するためにPD動作を実施することができる。
【0083】
AB信号およびTG信号は、露光期間の持続時間と量子化動作のシーケンスとを制御するために、ピクセルセル601の一部であり得るコントローラ(
図6Aに図示せず)によって生成され得る。コントローラはまた、測定データ608として、TTS動作、FD ADC動作、またはPD ADC動作のうちの1つからの出力を選択するために、電荷貯蔵デバイス605が飽和されたかどうかと、フォトダイオード602が飽和されたかどうかとを検出することができる。たとえば、電荷貯蔵デバイス605が飽和された場合、コントローラは、測定データ608としてTTS出力を提供することができる。電荷貯蔵デバイス605は飽和されないが、フォトダイオード602が飽和された場合、コントローラは、測定データ608としてFD ADC出力を提供することができる。フォトダイオード602が飽和されない場合、コントローラは、測定データ608としてPD ADC出力を提供することができる。露光期間内に生成された画像センサー600の各ピクセルセルからの測定データ608は、画像フレームを形成することができる。コントローラは、後続の画像フレームを生成するために、後続の露光期間において
図6B中の動作のシーケンスを繰り返すことができる。
【0084】
画像センサー600からの画像フレームデータは、1つまたは複数のオブジェクトを追跡すること、(たとえば、動的視覚検知(DVS)動作の一部として)動きを検知することなど、異なるアプリケーションをサポートするために、ホストプロセッサ(
図6Aおよび
図6Bに図示せず)に送信され得る。
図7A~
図7Dは、画像センサー600からの画像フレームデータによってサポートされ得るアプリケーションの例を示す。
図7Aは、画像センサー600からの画像フレームに基づくオブジェクト追跡動作の一例を示す。
図7Aに示されているように、ホストプロセッサにおいて動作するアプリケーションが、時間T0においてキャプチャされた画像フレーム700からのオブジェクト704に対応する関心領域(ROI)702中のピクセルのグループを識別することができる。アプリケーションは、時間T1においてキャプチャされる画像フレーム710を含む後続の画像フレーム中のオブジェクト704のロケーションを追跡し続け、オブジェクト704に対応するROI712中のピクセルのグループを識別することができる。画像フレーム内のオブジェクト704の画像ロケーションの追跡は、SLAMアルゴリズムをサポートするために実施され得、SLAMアルゴリズムは、画像センサー600によってキャプチャされたシーン中のオブジェクト704の画像ロケーションを追跡することに基づいて、画像センサー600(および、ニアアイディスプレイ100など、画像センサー600を含むモバイルデバイス)が位置する環境のマップを構築/更新することができる。
【0085】
図7Bは、画像センサー600からの画像フレームに対するオブジェクト検出動作の一例を示す。
図7Bの左側に示されているように、ホストプロセッサは、車両722および人724など、画像フレーム720においてキャプチャされたシーン中の1つまたは複数のオブジェクトを識別し得る。
図7Bの右側に示されているように、その識別に基づいて、ホストプロセッサは、ピクセルのグループ726が車両722に対応し、ピクセルのグループ728が人724に対応すると決定し得る。車両722および人724の識別は、車両722および人724が監視ターゲットである監視アプリケーション、車両722および人724が仮想オブジェクトと置き換えられるMRアプリケーション、プライバシーのためにいくつかの画像(たとえば、車両722のライセンスプレート、人724の顔)の分解能を低減するための中心窩撮像(foveated imaging)動作など、様々なアプリケーションをサポートするために実施され得る。
【0086】
図7Cは、画像センサー600からの画像フレームに対する視標追跡動作の一例を示す。
図7Cに示されているように、ホストプロセッサは、眼球の画像730および732から、瞳孔738およびグリント(glint)739に対応するピクセルのグループ734および736を識別し得る。瞳孔738およびグリント739の識別は、視標追跡動作をサポートするために実施され得る。たとえば、瞳孔738およびグリント739の画像ロケーションに基づいて、アプリケーションは、たとえば、ユーザに対して表示されるべきコンテンツを決定するために、システムに入力として提供され得る、異なる時間におけるユーザの視線方向を決定することができる。
【0087】
図7Dは、画像センサー600からの画像フレームに対する動的視覚検知(DVS)動作の一例を示す。DVS動作では、画像センサー600は、(ピクセル値において反映される)輝度の所定の程度の変化が起きるピクセルのみを出力することができるが、所定の程度の変化が起きないピクセルは画像センサー600によって出力されない。DVS動作は、オブジェクトの動きを検出するために、および/または出力されているピクセルデータのボリュームを低減するために、実施され得る。たとえば、
図7Dを参照すると、時間T0において、画像740がキャプチャされ、画像740は、光源のピクセルのグループ742と人のピクセルのグループ744とを含んでいる。ピクセルのグループ742とピクセルのグループ744の両方が、時間T0において画像740の一部として出力され得る。時間T1において、画像750がキャプチャされる。光源に対応するピクセルのグループ742のピクセル値は、時間T0と時間T1との間で同じままであり、ピクセルのグループ742は、画像750の一部として出力されない。一方、人は、時間T0と時間T1との間で立位から歩行に変わり、これにより、時間T0と時間T1との間で、ピクセルのグループ744のピクセル値の変化が生じる。その結果、人のピクセルのグループ744は、画像750の一部として出力される。
【0088】
図7A~
図7Dの動作では、画像センサー600は、スパースキャプチャ動作を実施するように制御され得、スパースキャプチャ動作において、関心ピクセルデータをホストプロセッサに出力するためにピクセルセルのサブセットのみが選択される。関心ピクセルデータは、ホストプロセッサにおいて特定の動作をサポートするために必要とされるピクセルデータを含むことができる。たとえば、
図7Aのオブジェクト追跡動作では、画像センサー600は、それぞれ、画像フレーム700および710におけるオブジェクト704のROI702および712中のピクセルのグループのみを送信するように制御され得る。
図7Bのオブジェクト検出動作では、画像センサー600は、それぞれ、車両722および人724のピクセルのグループ726および728のみを送信するように制御され得る。さらに、
図7Cの視標追跡動作では、画像センサー600は、瞳孔738とグリント739とを含んでいるピクセルのグループ734および736のみを送信するように制御され得る。さらに、
図7DのDVS動作では、画像センサー600は、時間T1における、静的光源のピクセルのグループ742ではなく、移動している人のピクセルのグループ744のみを送信するように制御され得る。すべてのこれらの仕組みは、電力および帯域幅の対応する増加なしに、より高い分解能の画像の生成および送信を可能にすることができる。たとえば、より多くのピクセルセルを含むより大きいピクセルセルアレイが、画像分解能を改善するために、画像センサー600中に含まれ得るが、改善された画像分解能を提供するために必要とされる帯域幅および電力は、ピクセルセルのサブセットのみが、高分解能で関心ピクセルデータを生成し、その高分解能ピクセルデータをホストプロセッサに送信するが、ピクセルセルの残りは、ピクセルデータを生成/送信していないか、または低い分解能でピクセルデータを生成/送信しているかのいずれかであるとき、低減され得る。その上、画像センサー600は、より高いフレームレートにおいて画像を生成するように動作され得るが、帯域幅および電力の増加は、高分解能であり、多数のビットによって表される、ピクセル値の小さいセットのみを各画像が含むが、ピクセル値の残りが、送信されないか、またはより少ない数のビットによって表されるかのいずれかであるとき、低減され得る。
【0089】
ピクセルデータ送信のボリュームはまた、3D検知の場合、低減され得る。たとえば、
図6Dを参照すると、照明器640が、オブジェクト650上に構造化光のパターン642を投影することができる。構造化光は、オブジェクト650の表面上で反射され得、反射された光のパターン652が、画像を生成するために画像センサー600によってキャプチャされ得る。ホストプロセッサは、パターン652をパターン642と照合し、画像におけるパターン652の画像ロケーションに基づいて、画像センサー600に対するオブジェクト650の深度を決定することができる。3D検知について、ピクセルセル660、662、664、および666のグループのみが、関連情報(たとえば、パターン652のピクセルデータ)を含んでいる。送信されているピクセルデータのボリュームを低減するために、画像センサー600は、ホストプロセッサに、ピクセルセル660、662、664、および666のグループからのピクセルデータのみを送るように構成されるか、または、ピクセルセル660、662、664、および666のグループからのピクセルデータを高分解能で送るが、ピクセルデータの残りは低分解能であるように構成され得る。
【0090】
図8Aおよび
図8Bは、
図7A~
図7Dに示されている動作をサポートするためのスパースキャプチャ動作を実施することができる撮像システム800の例を示す。
図8Aに示されているように、撮像システム800は、画像センサー802とホストプロセッサ804とを含む。画像センサー802は、センサーコンピュート回路806とピクセルセルアレイ808とを含む。センサーコンピュート回路806は、画像プロセッサ810とプログラミングマップ生成器812とを含む。いくつかの例では、センサーコンピュート回路806は、画像プロセッサ810およびプログラミングマップ生成器812の機能を実装するようにとの命令を実行する、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはハードウェアプロセッサとして実装され得る。さらに、ホストプロセッサ804は、アプリケーション814を実行することができる汎用中央処理ユニット(CPU)を含む。
【0091】
ピクセルセルアレイ808の各ピクセルセルまたはピクセルセルのブロックは、たとえば、ピクセル値の出力を有効化/無効化すること、ピクセルセルによって出力されるピクセル値の分解能を設定することなどを行うように、個々にプログラム可能であり得る。ピクセルセルアレイ808は、センサーコンピュート回路806のプログラミングマップ生成器812から、各ピクセルセルについてのプログラミングデータを含んでいるプログラミングマップの形態のものであり得る第1のプログラミング信号820を受け取ることができる。ピクセルセルアレイ808は、シーンから光を検知し、第1のプログラミング信号820に基づいてシーンの第1の画像フレーム822を生成することができる。詳細には、ピクセルセルアレイ808は、第1の画像フレーム822がピクセルのフル画像フレームを含むフルフレームモードにおいて、および/または第1の画像フレーム822が、プログラミングマップによって指定されたピクセルのサブセットのみを含むスパースモードにおいてなど、異なるスパーシティモードにおいて動作するように第1のプログラミング信号820によって制御され得る。ピクセルセルアレイ808は、ホストプロセッサ804とセンサーコンピュート回路806の両方に第1の画像フレーム822を出力することができる。いくつかの例では、ピクセルセルアレイ808はまた、ホストプロセッサ804およびセンサーコンピュート回路806に、異なるピクセルスパーシティをもつ第1の画像フレーム822を出力することができる。たとえば、ピクセルセルアレイ808は、ピクセルのフル画像フレームをもつ第1の画像フレーム822をセンサーコンピュート回路806に出力し、第1のプログラミング信号820によって定義されたスパースピクセルをもつ第1の画像フレーム822をホストプロセッサ804に出力することができる。
【0092】
センサーコンピュート回路806およびホストプロセッサ804は、画像センサー802とともに、後続の画像フレーム824を生成するように画像センサーを制御するための、第1の画像フレーム822に基づく2ティアフィードバックシステムを形成することができる。2ティアフィードバック動作では、センサーコンピュート回路806の画像プロセッサ810は、処理結果を取得するために第1の画像フレーム822に対して画像処理動作を実施することができ、次いで、プログラミングマップ生成器812は、処理結果に基づいて第1のプログラミング信号820を更新することができる。画像プロセッサ810における画像処理動作は、アプリケーション814から受け取られた第2のプログラミング信号832に基づいて案内/構成され得、アプリケーション814は、第1の画像フレーム822に基づいて第2のプログラミング信号832を生成することができる。ピクセルセルアレイ808は、次いで、更新された第1のプログラミング信号820に基づいて後続の画像フレーム824を生成することができる。ホストプロセッサ804およびセンサーコンピュート回路806は、次いで、後続の画像フレーム824に基づいて、それぞれ、第1のプログラミング信号820および第2のプログラミング信号832を更新することができる。
【0093】
上述の2ティアフィードバックシステムでは、ホストプロセッサ804からの第2のプログラミング信号832は、センサーコンピュート回路806における画像処理動作および/またはプログラミングマップ生成に影響を及ぼすための、教示/案内信号、ニューラルネットワークトレーニング動作の結果(たとえば、逆方向伝搬結果)などの形態のものであり得る。ホストプロセッサ804は、画像センサー802による光検知動作のコンテキストを決定し、次いで、教示/案内信号を決定するために、第1の画像フレームだけでなく、他のセンサーデータ(たとえば、他の画像センサーによってキャプチャされた他の画像フレーム、オーディオ情報、動きセンサー出力、ユーザからの入力)にも基づいて、教示/案内信号を生成することができる。コンテキストは、たとえば、画像センサー802が動作する環境条件、画像センサー802のロケーション、またはアプリケーション814の任意の他の要件を含み得る。教示/案内信号は、コンテキストが、一般に、フレームレートよりもはるかに低いレートにおいて変化するとすれば、コンテキストに基づいて(たとえば、フレームレートよりも低い)比較的低いレートにおいて更新され得るが、センサーコンピュート回路806における画像処理動作、およびプログラミングマップの更新は、ピクセルセルアレイ808によってキャプチャされる画像に適応するために比較的高いレートにおいて(たとえば、フレームレートにおいて)行われ得る。
【0094】
図8Aは、ピクセルセルアレイ808が、第1の画像フレーム822および第2の画像フレーム824をホストプロセッサ804とセンサーコンピュート回路806の両方に送信することを示すが、いくつかの場合には、ピクセルセルアレイ808は、異なるスパーシティの画像フレームをホストプロセッサ804およびセンサーコンピュート回路806に送信し得る。たとえば、ピクセルセルアレイ808は、フルピクセルを有する第1の画像フレーム822および第2の画像フレーム824を画像プロセッサ810に送信することができるが、第1のプログラミング信号820に基づいて選択されたピクセルのサブセットを各々が含む、両方の画像フレームのスパースバージョンが、ホストプロセッサ804に送られる。
【0095】
図8Bは、
図7Aのオブジェクト追跡動作をサポートするための撮像システム800の動作の一例を示す。詳細には、時間T0において、ピクセルセルアレイ808(
図8Bに図示せず)は、ピクセルのフルフレームが生成されるべきであることを指示する第1のプログラミング信号820に基づいて、オブジェクト704を含むシーンのフルピクセルを含む第1の画像フレーム822を生成し、第1の画像フレーム822を、ホストプロセッサ804と画像プロセッサ810の両方に送信する。ホストプロセッサ804は、アプリケーション814を実行したことに基づいて、オブジェクト704が追跡されるべきであると決定することができる。そのような決定は、たとえば、ユーザ入力、アプリケーション814による要件などに基づき得る。ホストプロセッサ804はまた、特徴840および842など、オブジェクト704の空間的特徴を抽出するために、第1の画像フレーム822を処理することができる。処理結果に基づいて、ホストプロセッサ804は、第1の画像フレーム822中のオブジェクト704(または、
図7Cの瞳孔738およびグリント739など、他のオブジェクト)のピクセルを含む関心領域(ROI)850の近似ロケーション、サイズ、および形状を決定することができる。さらに、他のセンサー(たとえば、IMU)からの他の出力に基づいて、ホストプロセッサ804はまた、画像センサー802が、ある速度においてオブジェクト704に対して移動していると決定し、後続の画像フレームにおけるROI852の新しいロケーションを推定することができる。ホストプロセッサ804は、次いで、第2のプログラミング信号832の一部として、オブジェクト704のターゲット特徴(たとえば、特徴840および842)、ROIの情報(たとえば、ROI850の初期ロケーション、形状、サイズ)、速度などを、画像プロセッサ810およびプログラミングマップ生成器812に送信することができる。
【0096】
第2のプログラミング信号832に基づいて、画像プロセッサ810は、オブジェクト704のターゲット画像特徴を検出するために第1の画像フレーム822を処理し、検出結果に基づいて、ROI852の精密なロケーション、サイズ、および形状を決定することができる。画像プロセッサ810は、次いで、第1の画像フレーム822におけるROI850の精密なロケーション、サイズ、および形状を含む、ROI情報854を、プログラミングマップ生成器812に送信することができる。ROI情報854、ならびに第2のプログラミング信号832に基づいて、プログラミングマップ生成器812は、時間T1においてキャプチャされるべき後続の画像フレームにおけるROI852の予想されるロケーション、サイズ、および形状を推定することができる。たとえば、第2のプログラミング信号832中に含まれる速度情報に基づいて、プログラミングマップ生成器812は、ROI850が、時間T0と時間T1との間にdの距離だけ移動してROI852になると決定し、距離dに基づいて、時間T1におけるROI852のロケーションを決定することができる。別の例として、
図7Cの瞳孔738およびグリント739が、視標追跡動作の一部として追跡されている場合、プログラミングマップ生成器812は、ユーザの視線変化に関する情報を取得し、視線変化に基づいて、時間T1における、瞳孔738とグリント739とを含むROI(たとえば、ROI852)の予想されるロケーションを決定することができる。プログラミングマップ生成器812は、次いで、時間T1において、ROI852内のピクセルセルを選択するために、第1のプログラミング信号820を更新して、後続の画像フレームについての、オブジェクト704(または瞳孔738およびグリント739、または他のオブジェクト)のピクセルデータを出力することができる。
【0097】
図9A、
図9B、
図9C、および
図9Dは、
図8Aの撮像システム800の内部構成要素の例を示す。
図9Aは、ピクセルセルアレイ808の一例を示す。
図9Aに示されているように、ピクセルセルアレイ808は、列コントローラ904と、行コントローラ906と、プログラミング信号パーサ920とを含み得る。列コントローラ904は、列バス908(たとえば、908a、908b、908c、...908n)と接続されるが、行コントローラ906は、行バス910(たとえば、910a、910b、...908n)と接続される。列コントローラ904または行コントローラ906のうちの一方は、特定のピクセルセルまたはピクセルセルのグループをターゲットにするピクセルレベルプログラミング信号926を送信するために、プログラミングバス912とも接続される。P
00、P
01、P
0jなどと標示された各ボックスは、ピクセルセルまたはピクセルセルのグループ(たとえば、299`1×2ピクセルセルのグループ)を表すことができる。各ピクセルセルまたはピクセルセルの各グループは、列バス908のうちの1つ、行バス910のうちの1つ、プログラミングバス912、およびピクセルデータを出力するための出力データバス(
図9Aに図示せず)に接続され得る。各ピクセルセル(またはピクセルセルの各グループ)は、一度にピクセルレベルプログラミングバス912を介してピクセルレベルプログラミング信号926を受け取るために、列コントローラ904によって提供される列バス908上の列アドレス信号930と、行コントローラ906によって提供される行バス910上の行アドレス信号932とによって、個々にアドレス指定可能である。列アドレス信号930、行アドレス信号932、ならびにピクセルレベルプログラミング信号926は、プログラミングマップ生成器812からの第1のプログラミング信号820に基づいて生成され得る。
【0098】
さらに、
図9Aは、第1のプログラミング信号820からピクセルレベルプログラミング信号を抽出することができる、プログラミング信号パーサ920を含む。いくつかの例では、第1のプログラミング信号820は、ピクセルセルアレイ808の各ピクセルセルまたはピクセルセルの各グループのためのプログラミングデータを含むことができる、プログラミングマップを含むことができる。
図9Bは、ピクセルアレイプログラミングマップ940の一例を示す。
図9Bに示されているように、ピクセルアレイプログラミングマップ940は、ピクセルレベルプログラミングデータの2次元アレイを含むことができ、2次元アレイの各ピクセルレベルプログラミングデータは、ピクセルセルアレイ808のピクセルセルまたはピクセルセルのグループをターゲットにする。たとえば、各ピクセルレベルプログラミングデータがピクセルセルをターゲットにする場合、ピクセルセルアレイ808が、M個のピクセルの幅(たとえば、ピクセルのM個の列)およびN個のピクセルの高さ(たとえば、ピクセルのN個の行)を有すると仮定すると、ピクセルアレイプログラミングマップ940も、M個のエントリの幅(たとえば、エントリのM個の列)およびN個のエントリの高さ(たとえば、エントリのN個の行)を有することができ、各エントリは、対応するピクセルセルのためのピクセルレベルプログラミングデータを記憶する。たとえば、ピクセルアレイプログラミングマップ940のエントリ(0,0)にあるピクセルレベルプログラミングデータA
00は、ピクセルセルアレイ808のピクセルロケーション(0,0)にあるピクセルセルP
00をターゲットにするが、ピクセルアレイプログラミングマップ940のエントリ(0,1)にあるピクセルレベルプログラミングデータA
01は、ピクセルセルアレイ808のピクセルロケーション(0,1)にあるピクセルセルP
01をターゲットにする。ピクセルレベルプログラミングデータがピクセルセルのグループをターゲットにする場合、高さおよび幅に沿ったピクセルアレイプログラミングマップ940のエントリの数は、各グループ中のピクセルセルの数に基づいてスケーリングされ得る。
【0099】
ピクセルアレイプログラミングマップ940は、
図9Bで説明されるフィードバック動作をサポートするように構成され得る。たとえば、各エントリにおいて記憶されるピクセルレベルプログラミングデータは、たとえば、電源投入または電源切断すること、ピクセルデータの出力を有効化または無効化すること、量子化分解能を設定すること、出力ピクセルデータの精度を設定すること、量子化動作(たとえば、TTS、FD ADC、PD ADCのうちの1つ)を選択すること、フレームレートを設定することなどを行うように、各ピクセルセル(またはピクセルセルの各グループ)を個々にプログラムすることができる。上記で説明されたように、プログラミングマップ生成器812は、たとえば、1つまたは複数のROIの予測に基づいてピクセルアレイプログラミングマップ940を生成することができ、ROI内のピクセルセルのためのピクセルレベルプログラミングデータは、ROI外のピクセルセルのためのピクセルレベルプログラミングデータとは異なる。たとえば、ピクセルアレイプログラミングマップ940は、ピクセルセルのサブセット(またはピクセルセルのグループ)がピクセルデータを出力することを可能にすることができるが、ピクセルセルの残りはピクセルデータを出力しない。別の例として、ピクセルアレイプログラミングマップ940は、(たとえば、各ピクセルを表すためにより多数のビットを使用して)より高い分解能においてピクセルデータを出力するようにピクセルセルのサブセットを制御することができるが、ピクセルセルの残りは、より低い分解能においてピクセルデータを出力する。
【0100】
再び
図9Aを参照すると、プログラミングマップパーサ920は、各ピクセルセル(またはピクセルセルの各グループ)のためのピクセルレベルプログラミングデータを識別するために、シリアルデータストリーム中にあり得る、ピクセルアレイプログラミングマップ940をパースすることができる。ピクセルレベルプログラミングデータの識別は、たとえば、2次元ピクセルアレイプログラミングマップがシリアルフォーマットに変換される所定のスキャンパターン、ならびにピクセルレベルプログラミングデータがシリアルデータストリームからプログラミング信号パーサ920によって受け取られる順序に基づき得る。プログラミングデータの各エントリについて、プログラミング信号パーサ920は、行アドレス信号930および列アドレス信号832を生成し、ピクセルセルを選択するために、行アドレス信号830および列アドレス信号832を、それぞれ、行センサーコンピュート回路806および列コントローラ904に送信し、選択されたピクセルセル(またはピクセルセルのグループ)にピクセルレベルプログラミング信号826を送信することができる。
【0101】
図9Cは、
図6Aのピクセルセル601の構成要素のうちの少なくともいくつかを含むことができる、ピクセルセルアレイ808のピクセルセル950の例示的な内部構成要素を示す。ピクセルセル950は、フォトダイオード952a、952bなどを含む、1つまたは複数のフォトダイオードを含むことができる。いくつかの例では、ピクセルセル950のフォトダイオードのうちの1つまたは複数は、異なる周波数範囲の光を検出するように構成され得る。たとえば、フォトダイオード952aは、可視光(たとえば、単色、あるいは、赤色、緑色、または青色のうちの1つ)を検出することができるが、フォトダイオード952bは、赤外光を検出することができる。いくつかの例では、ピクセルセル950のフォトダイオードの一部または全部は、同じ波長の光を検出することができる。ピクセルセル950は、どのフォトダイオードがピクセルデータ生成のために電荷を出力するかを制御するために、スイッチ954(たとえば、トランジスタ、コントローラバリア層)をさらに含む。フォトダイオードが異なる周波数範囲の光を検出する場合、各フォトダイオードからの出力は、コロケートされた2D/3D検知をサポートするために、ピクセルに対応することができる。フォトダイオードが同じ周波数範囲の光を検出する場合、フォトダイオードからの出力は、アナログビニング動作において組み合わせられて、たとえば、低強度の光を測定する際の信号対雑音比(SNR)を増加させることができる。
【0102】
さらに、ピクセルセル950は、
図6Aに示されている、電子シャッタースイッチ603、転送スイッチ604、電荷貯蔵デバイス605、バッファ606、量子化器607、ならびにリセットスイッチ951およびメモリ955をさらに含む。電荷貯蔵デバイス605は、電荷-電圧変換利得を設定するために、構成可能なキャパシタンスを有することができる。いくつかの例では、電荷貯蔵デバイス605のキャパシタンスは、電荷貯蔵デバイス605がオーバーフロー電荷によって飽和される可能性を低減するために、中光強度のためのFD ADC動作についてオーバーフロー電荷を貯蔵するために増加され得る。電荷貯蔵デバイス605のキャパシタンスはまた、低光強度のためのPD ADC動作について電荷-電圧変換利得を増加させるために減少され得る。電荷-電圧変換利得の増加は、量子化誤差を低減し、量子化分解能を増加させることができる。いくつかの例では、電荷貯蔵デバイス605のキャパシタンスはまた、量子化分解能を増加させるためにFD ADC動作中に減少され得る。リセットスイッチ951は、画像フレームをキャプチャするより前に、および/またはFD ADC動作とPD ADC動作との間に電荷貯蔵デバイス605をリセットすることができる。バッファ606は、バイアス信号BIAS1によって電流が設定され得る電流源956、ならびにバッファ606をオン/オフにするためにPWR_GATE信号によって制御され得る電力ゲート958を含む。バッファ606は、ピクセルセル950を無効化することの一部としてオフにされ得る。
【0103】
さらに、量子化器607は、比較器960と出力ロジック部962とを含む。比較器960は、出力を生成するためにバッファの出力を基準電圧(VREF)と比較することができる。量子化動作(たとえば、TTS動作、FD ADC動作、およびPD ADC動作)に応じて、比較器960は、出力を生成するために、バッファされた電圧を、異なるVREF電圧と比較することができ、出力は、さらに、メモリ955に自走カウンタまたはデジタルランプ(ramp)からの値をピクセル出力として記憶させるために出力ロジック部962によって処理される。比較器960のバイアス電流は、比較器960の帯域幅を設定することができるバイアス信号BIAS2によって制御され得、これは、ピクセルセル950によってサポートされるべきフレームレートに基づいて設定され得る。その上、比較器960の利得は、利得制御信号GAINによって制御され得る。比較器960の利得は、ピクセルセル950によってサポートされるべき量子化分解能に基づいて設定され得る。比較器960は、さらに、それぞれ、比較器960およびメモリ955をオン/オフにするために、PWR_GATE信号によっても制御され得る電力スイッチ961aおよび電力スイッチ961bを含む。比較器960は、ピクセルセル950を無効化することの一部としてオフにされ得る。
【0104】
さらに、出力ロジック部962は、TTS動作、FD ADC動作、またはPD ADC動作のうちの1つの出力を選択し、その選択に基づいて、カウンタ/デジタルランプからの値を記憶するためにメモリ955に比較器960の出力をフォワーディングすべきかどうかを決定することができる。出力ロジック部962は、比較器960の出力に基づいて、フォトダイオード952(たとえば、フォトダイオード952a)が残留電荷によって飽和されたかどうかの指示と、電荷貯蔵デバイス605がオーバーフロー電荷によって飽和されたかどうかの指示とを記憶するための内部メモリを含むことができる。電荷貯蔵デバイス605がオーバーフロー電荷によって飽和された場合、出力ロジック部962は、メモリ955に記憶されるべきTTS出力を選択し、メモリ955がFD ADC/PD ADC出力によってTTS出力を上書きするのを防ぐことができる。電荷貯蔵デバイス605は飽和されないが、フォトダイオード952が飽和された場合、出力ロジック部962は、メモリ955に記憶されるべきFD ADC出力を選択することができ、他の場合、出力ロジック部962は、メモリ955に記憶されるべきPD ADC出力を選択することができる。いくつかの例では、カウンタ値の代わりに、フォトダイオード952が残留電荷によって飽和されたかどうかの指示と、電荷貯蔵デバイス605がオーバーフロー電荷によって飽和されたかどうかの指示とが、最も低い精度のピクセルデータを提供するためにメモリ955に記憶され得る。
【0105】
さらに、ピクセルセル950は、AB、TG、BIAS1、BIAS2、GAIN、VREF、PWR_GATEなど、制御信号を生成するための論理回路を含むことができる、ピクセルセルコントローラ970を含み得る。ピクセルセルコントローラ970はまた、ピクセルレベルプログラミング信号926によってプログラムされ得る。たとえば、ピクセルセル950を無効化するために、ピクセルセルコントローラ970は、バッファ606および比較器960をオフにするために、PWR_GATEをアサート解除するようにピクセルレベルプログラミング信号926によってプログラムされ得る。その上、量子化分解能を増加させるために、ピクセルセルコントローラ970は、電荷貯蔵デバイス605のキャパシタンスを低減すること、GAIN信号を介して比較器960の利得を増加させることなどを行うように、ピクセルレベルプログラミング信号926によってプログラムされ得る。フレームレートを増加させるために、ピクセルセルコントローラ970は、それぞれ、バッファ606および比較器960の帯域幅を増加させるために、BIAS1信号およびBIAS2信号を増加させるようにピクセルレベルプログラミング信号926によってプログラムされ得る。さらに、ピクセルセル950によって出力されるピクセルデータの精度を制御するために、ピクセルセルコントローラ970は、たとえば、メモリ955がカウンタのビットのサブセット(たとえば、最上位ビット)のみを記憶するようにビットのサブセットのみをメモリ955に接続すること、または出力ロジック部962に記憶された指示をピクセルデータとしてメモリ955に記憶することを行うように、ピクセルレベルプログラミング信号926によってプログラムされ得る。さらに、ピクセルセルコントローラ970は、たとえば、上記で説明されたように、露光期間を調整すること、および/または、特定の量子化動作(たとえば、TTS、FD ADC、またはPD ADCのうちの1つ)を、動作条件に基づいて他のものをスキップしながら選択することを行うために、AB信号およびTG信号のシーケンスおよびタイミングを制御するようにピクセルレベルプログラミング信号926によってプログラムされ得る。
【0106】
図9Dは、画像プロセッサ810の内部構成要素の例を示す。
図9Dに示されているように、画像プロセッサ810は、特徴抽出回路972とメモリ976とを含み得る。画像プロセッサ810によって抽出/検出されるべき特徴は、たとえば、所定のオブジェクト(たとえば、シーン中の人間の顔、身体部分、いくつかの物理的オブジェクト)の空間的特徴およびキーポイント、時間的コントラストなどを含み得る。いくつかの例では、特徴抽出回路972は、畳み込みニューラルネットワーク(CNN)、回帰ニューラルネットワーク(RNN)など、機械学習モデル973を実装し得、機械学習モデル973は、ピクセルセルアレイ808によって生成された入力画像フレーム(たとえば、第1の画像フレーム822)に対して画像特徴動作を実施するようにトレーニングされ得る。いくつかの例では、特徴抽出回路972は、所定の時間的コントラストを有するピクセルを識別するためにピクセルデータをしきい値と比較するための比較回路975をも含むことができる。特徴抽出回路972は、特徴抽出動作を実施するための、デジタル信号プロセッサ(DSP)、線形ソルバーユニット、マイクロコントローラ、演算回路など、他の回路を含み得る。画像プロセッサ810は、ホストプロセッサ804からの第2のプログラミング信号832の一部として、機械学習モデル973の特徴抽出動作および/またはトレーニング動作をサポートするための、ターゲット特徴/しきい値、機械学習パラメータ(たとえば、重み、逆方向伝搬勾配)、または他の構成パラメータを受信し得る。特徴抽出動作の結果として、特徴抽出回路972は、たとえば、入力画像フレーム中の検出された特徴のピクセルロケーションを出力し得、それらのピクセルロケーションは、次いで、ピクセルアレイプログラミングマップ940を生成するためにプログラミングマップ生成器812にフィードされ得る。
【0107】
さらに、メモリ976は、入力画像フレームのピクセルデータ、特徴抽出動作のための様々な構成データ、ならびに特徴抽出回路972の出力(たとえば、ピクセルロケーション)を記憶するためのオンチップメモリを提供することができる。いくつかの例では、特徴抽出回路972に提供される現在の入力画像フレームが、ピクセルデータのフルフレームではなく、スパースピクセルデータのみを含み得る。そのような場合、メモリ976は、前の入力画像フレームのピクセルデータをも記憶し得、そのピクセルデータは、ピクセルデータの再構築されたフルフレームを生成するために、特徴抽出回路972にフィードされ、現在の入力画像と組み合わせられ得る。特徴抽出回路972は、次いで、ピクセルデータの再構築されたフルフレームに基づいて特徴抽出動作を実施することができる。メモリ976は、たとえば、スピントンネリングランダムアクセスメモリ(STRAM)、不揮発性ランダムアクセスメモリ(NVRAM)などを含み得る。いくつかの例では、画像プロセッサ810は、特徴抽出回路880における特徴抽出動作をサポートするために、オフチップメモリ(たとえば、ダイナミックランダムアクセスメモリ)へのインターフェースをも含み得る。
【0108】
特徴抽出回路972は、特徴抽出動作を実施するために様々な技法を採用することができる。一例では、特徴抽出回路972は、フィルタを伴ってピクセルデータのブロック間で畳み込み演算を実施するために、CNNなどの機械学習モデル973を使用することができる。フィルタは、抽出されるべきターゲット特徴を表す重みのセットを含み得る。畳み込み演算の一部として、フィルタは、特定のストライドロケーションにおいてピクセルデータのブロックの一部分と重畳され、フィルタの各要素とその一部分内の各ピクセルとの積和が決定され得る。フィルタがピクセルのブロック内でぐるりとシフトされる(shifted around)につれて、異なるストライドロケーションに対する積和の分布が、畳み込み出力として決定され得る。畳み込み出力は、たとえば、特定のピクセルがターゲット特徴をキャプチャする確率、そのピクセルがターゲットオブジェクトに属する確率などを指示し得る。確率に基づいて、特徴抽出回路972は、(1つまたは複数の)ターゲット特徴を含むかまたはターゲットオブジェクトの一部である可能性があると決定された、ピクセルのピクセルロケーションを出力することができる。ピクセルロケーションは、次いで、上記で説明されたように、ピクセルセルアレイ808のスパースキャプチャ動作を調整するために、
図8BのROI情報852の一部として出力され得る。
【0109】
畳み込み演算のフィルタ重みは、トレーニングプロセスから取得され得、トレーニングプロセスは、オフラインで、オンラインで、またはその両方の組合せで実施され得る。オフライントレーニングプロセスでは、重みは、特徴抽出動作より前にメモリ976に事前記憶され得る。重みは、画像プロセッサ810によって処理されることが予想される画像データの範囲をカバーするトレーニングデータセットに基づくトレーニングプロセスから取得され得る。トレーニングデータセットは、クラウド環境に記憶され得、トレーニングは、オフライントレーニングプロセスとしてクラウド環境においても実施され得る。オフライントレーニングプロセスから取得される重みは、異なる撮像システム800のすべての画像プロセッサ810について共通であり得る。
【0110】
オンライントレーニングプロセスでは、画像プロセッサ810によって使用される重みは、画像プロセッサ810が、検出されるべき実際のオブジェクトの画像データを受け取る間、取得され得る。例示的なアプリケーションは、(たとえば、画像センサーによってキャプチャされた眼の画像に基づく)視標追跡であり得る。オンライントレーニングプロセスの一部として、画像プロセッサ810は、トレーニングモードにおいて動作することができ、画像プロセッサ810は、ユーザが空間中の特定のターゲットまたはロケーションを見るように依頼されたとき、ユーザの眼のピクセルデータを受け取る。トレーニングプロセスを通して、画像プロセッサ810は、ユーザの眼を正しく識別する可能性を最大にするように重みを調整することができる。そのような場合、特定の撮像システム800の画像プロセッサ810によって使用される重みは、重みが特定のユーザのためにおよび/または特定の動作条件のために最適化されるので、別の撮像システム800の画像プロセッサ810によって使用される重みとは異なり得る。いくつかの例では、画像プロセッサ810によって使用される重みは、オフライントレーニングプロセスとオンライントレーニングプロセスとの組合せによって取得され得る。たとえば、第1のニューラルネットワーク層によって使用される重みは、オブジェクトの一般的な特徴を抽出するために使用される一般的な重みであり得るが、上位ニューラルネットワーク層の重みは、オンライントレーニングプロセスにおいてトレーニングされて、ユーザにおよび/または特定の動作条件に固有になり得る。
【0111】
さらに、動的視覚検知(DVS)動作をサポートするために、特徴抽出回路972は、ピクセルについての時間的コントラストを取得するために、入力画像フレーム中のピクセルを、メモリ976に記憶された前の画像フレーム中の対応するピクセルと比較するための比較回路975を使用することができる。比較回路975はまた、時間的コントラストの所定のしきい値を有する(または超える)ピクセルのピクセルロケーションを出力するために、時間的コントラストを(第2のプログラミング信号832の一部として受信された)ターゲットしきい値と比較することができる。
【0112】
特徴抽出回路972における特徴抽出動作は、第2のプログラミング信号832に基づいて構成され得る。たとえば、ホストプロセッサ804は、抽出されるべきターゲット特徴をフィルタ重みとして符号化し、畳み込み演算を実施するためにCNNモデルにフィルタ重みを供給することができる。さらに、ホストプロセッサ804は、DVS動作のための時間的コントラストしきい値を設定し、第2のプログラミング信号832の一部として時間的コントラストしきい値を送ることができる。ピクセルロケーションは、次いで、上記で説明されたように、ピクセルセルアレイ808のスパースキャプチャ動作を調整するために、
図8BのROI情報852の一部として出力され得る。
【0113】
ターゲット特徴およびしきい値のほかに、ホストプロセッサ804は、第2のプログラミング信号832中に含まれる他の構成パラメータに基づいて、特徴抽出回路972における特徴抽出動作に影響を及ぼすことができる。たとえば、ホストプロセッサ804は、オンライントレーニング動作の一部であり得、単一の撮像システム800または複数の撮像システム800から受信された画像を伴うトレーニング動作に基づいて、逆方向伝搬勾配を決定することができる。ホストプロセッサ804は、次いで、各撮像システムにおいてローカルに重みを調整するために第2のプログラミング信号832の一部として各撮像システム800に逆方向伝搬勾配を提供することができる。別の例として、ホストプロセッサ804は、より低いレベルのニューラルネットワーク層の出力など、画像処理動作の中間結果を、第2のプログラミング信号832の一部として特徴抽出回路972に提供することができ、特徴抽出回路972は、次いで、より高いレベルのニューラルネットワーク層においてニューラルネットワーク計算を実施するために出力を使用することができる。別の例として、ホストプロセッサ804は、ニューラルネットワークによって実施される画像処理動作の予測される正確さをフィードバックとして提供することができ、これは、特徴抽出回路972のニューラルネットワークが、画像処理動作の予測される正確さを改善するために重みを更新することを可能にする。
【0114】
別の例として、ホストプロセッサ804は、初期ROI(たとえば、
図8BのROI850)のロケーションを提供することができる。画像プロセッサ810は、特徴抽出動作(たとえば、畳み込み演算、動的検知動作)を2ステッププロセスにおいて実施することができる。たとえば、画像プロセッサ810は、最初に、初期ROIによって識別されたピクセルに対して特徴抽出動作を実施することができる。抽出結果が、初期ROIがオフである(たとえば、識別されたピクセルがターゲットオブジェクトの形状に似ていない)ことを指示する場合、画像プロセッサ810は、第2のステップにおいて、ターゲット特徴を含み得る追加のピクセルを探索するためのベースラインとして、初期ROIを使用することができる。第2のステップの終了時に、画像プロセッサ810は、より改良されたROIを提供するために、改良されたピクセルロケーションを決定することができる。
【0115】
さらに、ホストプロセッサ804は、特徴抽出動作の評価をも実施し、評価結果を特徴抽出回路972に提供することができる。ホストプロセッサ804は、特徴抽出回路972における特徴抽出動作に影響を及ぼすために、評価結果をフィードバックとして提供することができる。評価結果は、たとえば、ピクセルセルアレイ808によって出力されたスパースピクセルが、アプリケーション814によって必要とされるデータを含んでいるかどうか(および/または、その割合)の指示を含むことができる。スパースピクセルが、特徴抽出動作の結果として生成された第1のプログラミング信号820において定義されたROIに基づいて出力される場合、特徴抽出回路972は、評価結果に基づいてROIおよび/または特徴抽出動作を調整することができる。たとえば、オブジェクト追跡/検出動作の場合、ホストプロセッサ804は、ピクセルセルアレイ808によって出力された画像フレーム中のスパースピクセルがターゲットオブジェクトのすべてのピクセルを含んでいるかどうかを評価し、評価結果を特徴抽出回路972に提供することができる。特徴抽出回路972は、次いで、たとえば、ピクセルの選択を、評価結果に基づいて特徴抽出動作を実施するように調整することができる。評価結果が、スパースピクセルがターゲットオブジェクトのすべてのピクセルを含んでいるとは限らないことを指示する場合、特徴抽出回路972は、ターゲット特徴を抽出/検出するために、より多くのピクセルを処理するためにROIを拡大するか、さらには、ROIを無視し、入力画像フレームのすべてのピクセルを処理することができる。
【0116】
画像センサー600からの画像フレームデータは、1つまたは複数のオブジェクトを追跡すること、(たとえば、動的視覚検知(DVS)動作の一部として)動きを検知することなど、異なるアプリケーションをサポートするために、ホストプロセッサ(
図6Aおよび
図6Bに図示せず)に送信され得る。
図7A~
図7Dは、画像センサー600からの画像フレームデータによってサポートされ得るアプリケーションの例を示す。
図7Aは、画像センサー600からの画像フレームに基づくオブジェクト追跡動作の一例を示す。
図7Aに示されているように、ホストプロセッサにおいて動作するアプリケーションが、時間T0においてキャプチャされた画像フレーム700からのオブジェクト704に対応する関心領域(ROI)702中のピクセルのグループを識別することができる。アプリケーションは、時間T1においてキャプチャされる画像フレーム710を含む後続の画像フレーム中のオブジェクト704のロケーションを追跡し続け、オブジェクト704に対応するROI712中のピクセルのグループを識別することができる。画像フレーム内のオブジェクト704の画像ロケーションの追跡は、SLAMアルゴリズムをサポートするために実施され得、SLAMアルゴリズムは、画像センサー600によってキャプチャされたシーン中のオブジェクト704の画像ロケーションを追跡することに基づいて、画像センサー600(および、ニアアイディスプレイ100など、画像センサー600を含むモバイルデバイス)が位置する環境のマップを構築/更新することができる。
【0117】
図7Bは、画像センサー600からの画像フレームに対するオブジェクト検出動作の一例を示す。
図7Bの左側に示されているように、ホストプロセッサは、車両722および人724など、画像フレーム720においてキャプチャされたシーン中の1つまたは複数のオブジェクトを識別し得る。
図7Bの右側に示されているように、その識別に基づいて、ホストプロセッサは、ピクセルのグループ726が車両722に対応し、ピクセルのグループ728が人724に対応すると決定し得る。車両722および人724の識別は、車両722および人724が監視ターゲットである監視アプリケーション、車両722および人724が仮想オブジェクトと置き換えられる複合現実(MR)アプリケーション、プライバシーのためにいくつかの画像(たとえば、車両722のライセンスプレート、人724の顔)の分解能を低減するための中心窩撮像動作など、様々なアプリケーションをサポートするために実施され得る。
【0118】
図7Cは、画像センサー600からの画像フレームに対する視標追跡動作の一例を示す。
図7Cに示されているように、ホストプロセッサは、眼球の画像730および732から、瞳孔738およびグリント739に対応するピクセルのグループ734および736を識別し得る。瞳孔738およびグリント739の識別は、視標追跡動作をサポートするために実施され得る。たとえば、瞳孔738およびグリント739の画像ロケーションに基づいて、アプリケーションは、たとえば、ユーザに対して表示されるべきコンテンツを決定するために、システムに入力として提供され得る、異なる時間におけるユーザの視線方向を決定することができる。
【0119】
図7Dは、画像センサー600からの画像フレームに対する動的視覚検知(DVS)動作の一例を示す。DVS動作では、画像センサー600は、(ピクセル値において反映される)輝度の所定の程度の変化が起きるピクセルのみを出力することができるが、所定の程度の変化が起きないピクセルは画像センサー600によって出力されない。DVS動作は、オブジェクトの動きを検出するために、および/または出力されているピクセルデータのボリュームを低減するために、実施され得る。たとえば、
図7Dを参照すると、時間T0において、画像740がキャプチャされ、画像740は、光源のピクセルのグループ742と人のピクセルのグループ744とを含んでいる。ピクセルのグループ742とピクセルのグループ744の両方が、時間T0において画像740の一部として出力され得る。時間T1において、画像750がキャプチャされる。光源に対応するピクセルのグループ742のピクセル値は、時間T0と時間T1との間で同じままであり、ピクセルのグループ742は、画像750の一部として出力されない。一方、人は、時間T0と時間T1との間で立位から歩行に変わり、これにより、時間T0と時間T1との間で、ピクセルのグループ744のピクセル値の変化が生じる。その結果、人のピクセルのグループ744は、画像750の一部として出力される。
【0120】
図7A~
図7Dの動作では、画像センサー600は、スパースキャプチャ動作を実施するように制御され得、スパースキャプチャ動作において、関心ピクセルデータをホストプロセッサに出力するためにピクセルセルのサブセットのみが選択される。関心ピクセルデータは、ホストプロセッサにおいて特定の動作をサポートするために必要とされるピクセルデータを含むことができる。たとえば、
図7Aのオブジェクト追跡動作では、画像センサー600は、それぞれ、画像フレーム700および710におけるオブジェクト704のROI702および712中のピクセルのグループのみを送信するように制御され得る。
図7Bのオブジェクト検出動作では、画像センサー600は、それぞれ、車両722および人724のピクセルのグループ726および728のみを送信するように制御され得る。さらに、
図7Cの視標追跡動作では、画像センサー600は、瞳孔738とグリント739とを含んでいるピクセルのグループ734および736のみを送信するように制御され得る。さらに、
図7DのDVS動作では、画像センサー600は、時間T1における、静的光源のピクセルのグループ742ではなく、移動している人のピクセルのグループ744のみを送信するように制御され得る。すべてのこれらの仕組みは、電力および帯域幅の対応する増加なしに、より高い分解能の画像の生成および送信を可能にすることができる。たとえば、より多くのピクセルセルを含むより大きいピクセルセルアレイが、画像分解能を改善するために、画像センサー600中に含まれ得るが、改善された画像分解能を提供するために必要とされる帯域幅および電力は、ピクセルセルのサブセットのみが、高分解能で関心ピクセルデータを生成し、その高分解能ピクセルデータをホストプロセッサに送信するが、ピクセルセルの残りは、ピクセルデータを生成/送信していないか、または低い分解能でピクセルデータを生成/送信しているかのいずれかであるとき、低減され得る。その上、画像センサー600は、より高いフレームレートにおいて画像を生成するように動作され得るが、帯域幅および電力の増加は、高分解能であり、多数のビットによって表される、ピクセル値の小さいセットのみを各画像が含むが、ピクセル値の残りが、送信されないか、またはより少ない数のビットによって表されるかのいずれかであるとき、低減され得る。
【0121】
ピクセルデータ送信のボリュームはまた、3D検知の場合、低減され得る。たとえば、
図6Dを参照すると、照明器640が、オブジェクト650上に構造化光のパターン642を投影することができる。構造化光は、オブジェクト650の表面上で反射され得、反射された光のパターン652が、画像を生成するために画像センサー600によってキャプチャされ得る。ホストプロセッサは、パターン652をパターン642と照合し、画像におけるパターン652の画像ロケーションに基づいて、画像センサー600に対するオブジェクト650の深度を決定することができる。3D検知について、ピクセルセル660、662、664、および666のグループのみが、関連情報(たとえば、パターン652のピクセルデータ)を含んでいる。送信されているピクセルデータのボリュームを低減するために、画像センサー600は、ホストプロセッサに、ピクセルセル660、662、664、および666のグループからのピクセルデータのみを送るように構成されるか、または、ピクセルセル660、662、664、および666のグループからのピクセルデータを高分解能で送るが、ピクセルデータの残りは低分解能であるように構成され得る。
【0122】
図8Aおよび
図8Bは、
図7A~
図7Dに示されている動作をサポートするためのスパースキャプチャ動作を実施することができる撮像システム800の例を示す。
図8Aに示されているように、撮像システム800は、画像センサー802とホストプロセッサ804とを含む。画像センサー802は、センサーコンピュート回路806と、ピクセルセルアレイ808と、フレームバッファ809とを含む。センサーコンピュート回路806は、画像プロセッサ810とプログラミングマップ生成器812とを含む。いくつかの例では、センサーコンピュート回路806は、画像プロセッサ810およびプログラミングマップ生成器812の機能を実装するようにとの命令を実行する、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはハードウェアプロセッサとして実装され得る。フレームバッファ809は、ピクセルセルアレイ808によって出力された画像フレームを記憶するためのメモリを含み、その画像フレームを処理のためにセンサーコンピュート回路806に提供することができる。フレームバッファ809は、センサーコンピュート回路806と同じウエハ上に組み込まれたオンチップメモリ(たとえば、スタティックランダムアクセスメモリ(SRAM))、またはオフチップメモリ(たとえば、抵抗性ランダムアクセスメモリ(ReRAM)、ダイナミックランダムアクセスメモリ(DRAM))を含むことができる。さらに、ホストプロセッサ804は、アプリケーション814を実行することができる汎用中央処理ユニット(CPU)を含む。
【0123】
ピクセルセルアレイ808の各ピクセルセルまたはピクセルセルのブロックは、たとえば、ピクセル値の出力を有効化/無効化すること、ピクセルセルによって出力されるピクセル値の分解能を設定することなどを行うように、個々にプログラム可能であり得る。ピクセルセルアレイ808は、センサーコンピュート回路806のプログラミングマップ生成器812から各ピクセルセルについてのプログラミングデータを含んでいるプログラミングマップの形態のものであり得る第1のプログラミング信号820を受け取ることができる。ピクセルセルアレイ808は、シーンから光を検知し、シーンの、および第1のプログラミング信号820に基づく、第1の画像フレーム822を生成することができる。詳細には、ピクセルセルアレイ808は、第1の画像フレーム822がピクセルのフル画像フレームを含むフルフレームモードにおいて、および/または第1の画像フレーム822が、プログラミングマップによって指定されたピクセルのサブセットのみを含むスパースモードにおいてなど、異なるスパーシティモードにおいて動作するように第1のプログラミング信号820によって制御され得る。ピクセルセルアレイ808は、ホストプロセッサ804とセンサーコンピュート回路806の両方に第1の画像フレーム822を出力することができる。いくつかの例では、ピクセルセルアレイ808はまた、ホストプロセッサ804およびセンサーコンピュート回路806に、異なるピクセルスパーシティをもつ第1の画像フレーム822を出力することができる。たとえば、ピクセルセルアレイ808は、ピクセルのフル画像フレームをもつ第1の画像フレーム822をセンサーコンピュート回路806に出力し、第1のプログラミング信号820によって定義されたスパースピクセルをもつ第1の画像フレーム822をホストプロセッサ804に出力することができる。
【0124】
第1のプログラミング信号820を生成することに加えて、センサーコンピュート回路806は、ピクセルセルアレイ808の各ピクセルセルに送られるグローバル信号をも生成することができる。グローバル信号は、たとえば、TTS動作、FD ADC動作、およびPD ADC動作における量子化動作のために使用されるしきい値電圧(たとえば、FD ADC動作およびPD ADC動作のためのグローバル電圧ランプ、TTS動作のための平坦な電圧など)、ならびに
図6BのAB信号およびTG信号など、グローバル制御信号を含むことができる。
【0125】
センサーコンピュート回路806およびホストプロセッサ804は、画像センサー802とともに、後続の画像フレーム824を生成するように画像センサーを制御するための、第1の画像フレーム822に基づく2ティアフィードバックシステムを形成することができる。2ティアフィードバック動作では、センサーコンピュート回路806の画像プロセッサ810は、処理結果を取得するために第1の画像フレーム822に対して画像処理動作を実施することができ、次いで、プログラミングマップ生成器812は、処理結果に基づいて第1のプログラミング信号820を更新することができる。画像プロセッサ810における画像処理動作は、アプリケーション814から受け取られた第2のプログラミング信号832に基づいて案内/構成され得、アプリケーション814は、第1の画像フレーム822に基づいて第2のプログラミング信号832を生成することができる。ピクセルセルアレイ808は、次いで、更新された第1のプログラミング信号820に基づいて後続の画像フレーム824を生成することができる。ホストプロセッサ804およびセンサーコンピュート回路806は、次いで、後続の画像フレーム824に基づいて、それぞれ、第1のプログラミング信号820および第2のプログラミング信号832を更新することができる。
【0126】
上述の2ティアフィードバックシステムでは、ホストプロセッサ804からの第2のプログラミング信号832は、センサーコンピュート回路806における画像処理動作および/またはプログラミングマップ生成に影響を及ぼすための、教示/案内信号、ニューラルネットワークトレーニング動作の結果(たとえば、逆方向伝搬結果)などの形態のものであり得る。ホストプロセッサ804は、画像センサー802による光検知動作のコンテキストを決定し、次いで、教示/案内信号を決定するために、第1の画像フレームだけでなく、他のセンサーデータ(たとえば、他の画像センサーによってキャプチャされた他の画像フレーム、オーディオ情報、動きセンサー出力、ユーザからの入力)にも基づいて、教示/案内信号を生成することができる。コンテキストは、たとえば、画像センサー802のロケーションにおいて動作する環境条件画像センサー802、またはアプリケーション814の任意の他の要件を含み得る。教示/案内信号は、コンテキストが、一般に、フレームレートよりもはるかに低いレートにおいて変化するとすれば、コンテキストに基づいて(たとえば、フレームレートよりも低い)比較的低いレートにおいて更新され得るが、センサーコンピュート回路806における画像処理動作、およびプログラミングマップの更新は、ピクセルセルアレイ808によってキャプチャされる画像に適応するために比較的高いレートにおいて(たとえば、フレームレートにおいて)行われ得る。
【0127】
図8Aは、ピクセルセルアレイ808が、第1の画像フレーム822および第2の画像フレーム824をホストプロセッサ804とセンサーコンピュート回路806の両方に送信することを示すが、いくつかの場合には、ピクセルセルアレイ808は、異なるスパーシティの画像フレームをホストプロセッサ804およびセンサーコンピュート回路806に送信し得る。たとえば、ピクセルセルアレイ808は、フルピクセルを有する第1の画像フレーム822および第2の画像フレーム824を画像プロセッサ810に送信することができるが、第1のプログラミング信号820に基づいて選択されたピクセルのサブセットを各々が含む、両方の画像フレームのスパースバージョンが、ホストプロセッサ804に送られる。
【0128】
図8Bは、
図7Aのオブジェクト追跡動作をサポートするための撮像システム800の動作の一例を示す。詳細には、時間T0において、ピクセルセルアレイ808(
図8Bに図示せず)は、ピクセルのフルフレームが生成されるべきであることを指示する第1のプログラミング信号820に基づいて、オブジェクト704を含むシーンのフルピクセルを含む第1の画像フレーム822を生成し、第1の画像フレーム822を、ホストプロセッサ804と画像プロセッサ810の両方に送信する。ホストプロセッサ804は、アプリケーション814を実行したことに基づいて、オブジェクト704が追跡されるべきであると決定することができる。そのような決定は、たとえば、ユーザ入力、アプリケーション814による要件などに基づき得る。ホストプロセッサ804はまた、特徴840および842など、オブジェクト704の空間的特徴を抽出するために、第1の画像フレーム822を処理することができる。処理結果に基づいて、ホストプロセッサ804は、第1の画像フレーム822中のオブジェクト704(または、
図7Cの瞳孔738およびグリント739など、他のオブジェクト)のピクセルを含むROI850の近似ロケーション、サイズ、および形状を決定することができる。さらに、他のセンサー(たとえば、IMU)からの他の出力に基づいて、ホストプロセッサ804はまた、画像センサー802が、ある速度においてオブジェクト704に対して移動していると決定し、後続の画像フレームにおけるROI852の新しいロケーションを推定することができる。ホストプロセッサ804は、次いで、第2のプログラミング信号832の一部として、オブジェクト704のターゲット特徴(たとえば、特徴840および842)、ROIの情報(たとえば、ROI850の初期ロケーション、形状、サイズ)、速度などを、画像プロセッサ810およびプログラミングマップ生成器812に送信することができる。
【0129】
第2のプログラミング信号832に基づいて、画像プロセッサ810は、オブジェクト704のターゲット画像特徴を検出するために第1の画像フレーム822を処理し、検出結果に基づいて、ROI852の精密なロケーション、サイズ、および形状を決定することができる。画像プロセッサ810は、次いで、第1の画像フレーム822におけるROI850の精密なロケーション、サイズ、および形状を含む、ROI情報854を、プログラミングマップ生成器812に送信することができる。ROI情報854ならびに第2のプログラミング信号832に基づいて、プログラミングマップ生成器812は、時間T1においてキャプチャされるべき後続の画像フレームにおけるROI852の予想されるロケーション、サイズ、および形状を推定することができる。たとえば、第2のプログラミング信号832中に含まれる速度情報に基づいて、プログラミングマップ生成器812は、ROI850が、時間T0と時間T1との間にdの距離だけ移動してROI852になると決定し、距離dに基づいて、時間T1におけるROI852のロケーションを決定することができる。別の例として、
図7Cの瞳孔738およびグリント739が、視標追跡動作の一部として追跡されている場合、プログラミングマップ生成器812は、ユーザの視線変化に関する情報を取得し、視線変化に基づいて、時間T1における、瞳孔738とグリント739とを含むROI(たとえば、ROI852)の予想されるロケーションを決定することができる。プログラミングマップ生成器812は、次いで、時間T1においてROI852内のピクセルセルを選択するために、第1のプログラミング信号820を更新して、後続の画像フレームについての、オブジェクト704(または瞳孔738およびグリント739、または他のオブジェクト)のピクセルデータを出力することができる。
【0130】
図9A、
図9B、および
図9Cは、
図8Aのピクセルセルアレイ808の内部構成要素の例を示す。
図9Aに示されているように、ピクセルセルアレイ808は、列コントローラ904と、行コントローラ906と、プログラミング信号パーサ920とを含み得る。列コントローラ904は、列バス908(たとえば、908a、908b、908c、...908n)と接続されるが、行コントローラ906は、行バス910(たとえば、910a、910b、...908n)と接続される。列コントローラ904または行コントローラ906のうちの一方は、特定のピクセルセルまたはピクセルセルのグループをターゲットにするピクセルレベルプログラミング信号926を送信するために、プログラミングバス912とも接続される。P
00、P
01、P
0jなどと標示された各ボックスは、ピクセルセルまたはピクセルセルのグループ(たとえば、2×2ピクセルセルのグループ)を表すことができる。各ピクセルセルまたはピクセルセルの各グループは、列バス908のうちの1つ、行バス910のうちの1つ、プログラミングバス912、およびピクセルデータを出力するための出力データバス(
図9Aに図示せず)に接続され得る。各ピクセルセル(またはピクセルセルの各グループ)は、一度にピクセルレベルプログラミングバス912を介してピクセルレベルプログラミング信号926を受け取るために、列コントローラ904によって提供される列バス908上の列アドレス信号930と、行コントローラ906によって提供される行バス910上の行アドレス信号932とによって、個々にアドレス指定可能である。列アドレス信号930、行アドレス信号932、ならびにピクセルレベルプログラミング信号926は、プログラミングマップ生成器812からの第1のプログラミング信号820に基づいて生成され得る。
【0131】
さらに、
図9Aは、第1のプログラミング信号820からピクセルレベルプログラミング信号を抽出することができる、プログラミング信号パーサ920を含む。いくつかの例では、第1のプログラミング信号820は、ピクセルセルアレイ808の各ピクセルセルまたはピクセルセルの各グループのためのプログラミングデータを含むことができる、プログラミングマップを含むことができる。
図9Bは、ピクセルアレイプログラミングマップ940の一例を示す。
図9Bに示されているように、ピクセルアレイプログラミングマップ940は、ピクセルレベルプログラミングデータの2次元アレイを含むことができ、2次元アレイの各ピクセルレベルプログラミングデータは、ピクセルセルアレイ808のピクセルセルまたはピクセルセルのグループをターゲットにする。たとえば、各ピクセルレベルプログラミングデータがピクセルセルをターゲットにする場合、ピクセルセルアレイ808が、M個のピクセルの幅(たとえば、ピクセルのM個の列)およびN個のピクセルの高さ(たとえば、ピクセルのN個の行)を有すると仮定すると、ピクセルアレイプログラミングマップ940も、M個のエントリの幅(たとえば、エントリのM個の列)およびN個のエントリの高さ(たとえば、エントリのN個の行)を有することができ、各エントリは、対応するピクセルセルのためのピクセルレベルプログラミングデータを記憶する。たとえば、ピクセルアレイプログラミングマップ940のエントリ(0,0)にあるピクセルレベルプログラミングデータA
00は、ピクセルセルアレイ808のピクセルロケーション(0,0)にあるピクセルセルP
00をターゲットにするが、ピクセルアレイプログラミングマップ940のエントリ(0,1)にあるピクセルレベルプログラミングデータA
01は、ピクセルセルアレイ808のピクセルロケーション(0,1)にあるピクセルセルP
01をターゲットにする。ピクセルレベルプログラミングデータがピクセルセルのグループをターゲットにする場合、高さおよび幅に沿ったピクセルアレイプログラミングマップ940のエントリの数は、各グループ中のピクセルセルの数に基づいてスケーリングされ得る。
【0132】
ピクセルアレイプログラミングマップ940は、
図9Bで説明されるフィードバック動作をサポートするように構成され得る。たとえば、各エントリにおいて記憶されるピクセルレベルプログラミングデータは、たとえば、電源投入または電源切断すること、ピクセルデータの出力を有効化または無効化すること、量子化分解能を設定すること、出力ピクセルデータの精度を設定すること、量子化動作(たとえば、TTS、FD ADC、PD ADCのうちの1つ)を選択すること、フレームレートを設定することなどを行うように、各ピクセルセル(またはピクセルセルの各グループ)を個々にプログラムすることができる。上記で説明されたように、プログラミングマップ生成器812は、たとえば、1つまたは複数のROIの予測に基づいてピクセルアレイプログラミングマップ940を生成することができ、ROI内のピクセルセルのためのピクセルレベルプログラミングデータは、ROI外のピクセルセルのためのピクセルレベルプログラミングデータとは異なる。たとえば、ピクセルアレイプログラミングマップ940は、ピクセルセルのサブセット(またはピクセルセルのグループ)がピクセルデータを出力することを可能にすることができるが、ピクセルセルの残りはピクセルデータを出力しない。別の例として、ピクセルアレイプログラミングマップ940は、(たとえば、各ピクセルを表すためにより多数のビットを使用して)より高い分解能においてピクセルデータを出力するようにピクセルセルのサブセットを制御することができるが、ピクセルセルの残りは、より低い分解能においてピクセルデータを出力する。
【0133】
再び
図9Aを参照すると、プログラミングマップパーサ920は、各ピクセルセル(またはピクセルセルの各グループ)のためのピクセルレベルプログラミングデータを識別するために、シリアルデータストリーム中にあり得る、ピクセルアレイプログラミングマップ940をパースすることができる。ピクセルレベルプログラミングデータの識別は、たとえば、2次元ピクセルアレイプログラミングマップがシリアルフォーマットに変換される所定のスキャンパターン、ならびにピクセルレベルプログラミングデータがシリアルデータストリームからプログラミング信号パーサ920によって受け取られる順序に基づき得る。プログラミングデータの各エントリについて、プログラミング信号パーサ920は、行アドレス信号930および列アドレス信号832を生成し、ピクセルセルを選択するために、行アドレス信号830および列アドレス信号832を、それぞれ、行センサーコンピュート回路806および列コントローラ904に送信し、選択されたピクセルセル(またはピクセルセルのグループ)にピクセルレベルプログラミング信号826を送信することができる。
【0134】
図9Cは、
図6Aのピクセルセル601の構成要素のうちの少なくともいくつかを含むことができる、ピクセルセルアレイ808のピクセルセル950の例示的な内部構成要素を示す。ピクセルセル950は、フォトダイオード952a、952bなどを含む、1つまたは複数のフォトダイオードを含むことができ、各々は、異なる周波数範囲の光を検出するように構成され得る。たとえば、フォトダイオード952aは、可視光(たとえば、単色、あるいは、赤色、緑色、または青色のうちの1つ)を検出することができるが、フォトダイオード952bは、赤外光を検出することができる。ピクセルセル950は、どのフォトダイオードがピクセルデータ生成のために電荷を出力するかを制御するために、スイッチ954(たとえば、トランジスタ、コントローラバリア層)をさらに含む。
【0135】
さらに、ピクセルセル950は、
図6Aに示されている、電子シャッタースイッチ603、転送スイッチ604、電荷貯蔵デバイス605、バッファ606、量子化器607、ならびにメモリ955をさらに含む。いくつかの例では、ピクセルセル950は、各フォトダイオードのための別個の転送スイッチ604および/または別個の電荷貯蔵デバイス605を含むことができる。電荷貯蔵デバイス605は、電荷-電圧変換利得を設定するために、構成可能なキャパシタンスを有することができる。いくつかの例では、電荷貯蔵デバイス605のキャパシタンスは、電荷貯蔵デバイス605がオーバーフロー電荷によって飽和される可能性を低減するために、中光強度のためのFD ADC動作についてオーバーフロー電荷を貯蔵するために増加され得る。電荷貯蔵デバイス605のキャパシタンスはまた、低光強度のためのPD ADC動作について電荷-電圧変換利得を増加させるために減少され得る。電荷-電圧変換利得の増加は、量子化誤差を低減し、量子化分解能を増加させることができる。いくつかの例では、電荷貯蔵デバイス605のキャパシタンスはまた、量子化分解能を増加させるためにFD ADC動作中に減少され得る。バッファ606は、バイアス信号BIAS1によって電流が設定され得る電流源956、ならびにバッファ606をオン/オフにするためにPWR_GATE信号によって制御され得る電力ゲート958を含む。バッファ606は、ピクセルセル950を無効化することの一部としてオフにされ得る。
【0136】
さらに、量子化器607は、比較器960と出力ロジック部962とを含む。比較器960は、出力を生成するためにバッファの出力を基準電圧(VREF)と比較することができる。量子化動作(たとえば、TTS動作、FD ADC動作、およびPD ADC動作)に応じて、比較器960は、出力を生成するために、バッファされた電圧を、異なるVREF電圧と比較することができ、出力は、さらに、メモリ955に自走カウンタからの値をピクセル出力として記憶させるために出力ロジック部962によって処理される。比較器960のバイアス電流は、比較器960の帯域幅を設定することができるバイアス信号BIAS2によって制御され得、これは、ピクセルセル950によってサポートされるべきフレームレートに基づいて設定され得る。その上、比較器960の利得は、利得制御信号GAINによって制御され得る。比較器960の利得は、ピクセルセル950によってサポートされるべき量子化分解能に基づいて設定され得る。比較器960は、さらに、比較器960をオン/オフにするために、PWR_GATE信号によっても制御され得る電力スイッチ961を含む。比較器960は、ピクセルセル950を無効化することの一部としてオフにされ得る。
【0137】
さらに、出力ロジック部962は、TTS動作、FD ADC動作、またはPD ADC動作のうちの1つの出力を選択し、その選択に基づいて、カウンタからの値を記憶するためにメモリ955に比較器960の出力をフォワーディングすべきかどうかを決定することができる。出力ロジック部962は、比較器960の出力に基づいて、フォトダイオード952(たとえば、フォトダイオード952a)が残留電荷によって飽和されたかどうかの指示と、電荷貯蔵デバイス605がオーバーフロー電荷によって飽和されたかどうかの指示とを記憶するための内部メモリを含むことができる。電荷貯蔵デバイス605がオーバーフロー電荷によって飽和された場合、出力ロジック部962は、メモリ955に記憶されるべきTTS出力を選択し、メモリ955がFD ADC/PD ADC出力によってTTS出力を上書きするのを防ぐことができる。電荷貯蔵デバイス605は飽和されないが、フォトダイオード952が飽和された場合、出力ロジック部962は、メモリ955に記憶されるべきFD ADC出力を選択することができ、他の場合、出力ロジック部962は、メモリ955に記憶されるべきPD ADC出力を選択することができる。いくつかの例では、カウンタ値の代わりに、フォトダイオード952が残留電荷によって飽和されたかどうかの指示と、電荷貯蔵デバイス605がオーバーフロー電荷によって飽和されたかどうかの指示とが、最も低い精度のピクセルデータを提供するためにメモリ955に記憶され得る。
【0138】
さらに、ピクセルセル950は、AB、TG、BIAS1、BIAS2、GAIN、VREF、PWR_GATEなど、制御信号を生成するための論理回路を含むことができる、ピクセルセルコントローラ970を含み得る。ピクセルセルコントローラ970はまた、ピクセルレベルプログラミング信号926によってプログラムされ得る。たとえば、ピクセルセル950を無効化するために、ピクセルセルコントローラ970は、バッファ606および比較器960をオフにするために、PWR_GATEをアサート解除するようにピクセルレベルプログラミング信号926によってプログラムされ得る。その上、量子化分解能を増加させるために、ピクセルセルコントローラ970は、電荷貯蔵デバイス605のキャパシタンスを低減すること、GAIN信号を介して比較器960の利得を増加させることなどを行うように、ピクセルレベルプログラミング信号926によってプログラムされ得る。フレームレートを増加させるために、ピクセルセルコントローラ970は、それぞれ、バッファ606および比較器960の帯域幅を増加させるために、BIAS1信号およびBIAS2信号を増加させるようにピクセルレベルプログラミング信号926によってプログラムされ得る。さらに、ピクセルセル950によって出力されるピクセルデータの精度を制御するために、ピクセルセルコントローラ970は、たとえば、メモリ955がカウンタのビットのサブセット(たとえば、最上位ビット)のみを記憶するようにビットのサブセットのみをメモリ955に接続すること、または出力ロジック部962に記憶された指示をピクセルデータとしてメモリ955に記憶することを行うように、ピクセルレベルプログラミング信号926によってプログラムされ得る。さらに、ピクセルセルコントローラ970は、たとえば、上記で説明されたように、露光期間を調整すること、および/または、特定の量子化動作(たとえば、TTS、FD ADC、またはPD ADCのうちの1つ)を、動作条件に基づいて他のものをスキップしながら選択することを行うために、AB信号およびTG信号のシーケンスおよびタイミングを制御するようにピクセルレベルプログラミング信号926によってプログラムされ得る。
【0139】
図10A、
図10B、および
図10Cは、画像プロセッサ810の内部構成要素の例を示す。
図10Aに示されているように、画像プロセッサ810は、コンピュートメモリ1002と、コントローラ1004と、データ処理回路1006とを含み得る。コンピュートメモリ1002は、
図8Aの画像フレーム822/824など、画像プロセッサ810によって処理されるべき画像フレームのピクセルを記憶することができる。コントローラ1004は、ホストプロセッサ804からの第2のプログラミング信号832の一部として、画像処理構成パラメータを受信することができる。コントローラ1004は、次いで、構成パラメータに基づいて画像処理動作を実施するためにコンピュートメモリ1002から画像フレームを取得するように、データ処理回路1006を制御することができる。たとえば、画像処理動作が、関心オブジェクトを検出し、画像フレーム中のそのロケーションを追跡することである場合、第2のプログラミング信号832は、関心オブジェクトの画像特徴を含むことができる。データ処理回路1006は、たとえば、画像フレーム中のオブジェクトのピクセルロケーションを指示する、画像処理出力1008を生成することができる。
【0140】
いくつかの例では、データ処理回路1006は、オブジェクト検出および追跡動作を実施するために、畳み込みニューラルネットワーク(CNN)モデルなど、機械学習モデルを実装することができる。
図10Bは、データ処理回路1006によって実装され得るCNN1020の例示的なアーキテクチャを示す。
図10Bを参照すると、CNN1020は、4つの主要な演算、すなわち、(1)畳み込みと、(2)アクティブ化関数(たとえば、ReLU)による処理と、(3)プーリングまたはサブサンプリングと、(4)分類(全結合層)とを含み得る。これらの演算は、あらゆる畳み込みニューラルネットワークの基本ビルディングブロックであり得る。異なるCNNは、これらの4つの主要な演算の異なる組合せを有し得る。
【0141】
入力画像1022など、分類されるべき画像が、ピクセル値の行列によって表され得る。入力画像1022は複数のチャネルを含み得、各チャネルが、画像のある成分を表す。たとえば、デジタルカメラからの画像が、赤チャネルと、緑チャネルと、青チャネルとを有し得る。各チャネルは、0~255の範囲内のピクセル値(すなわち、8ビット)を有するピクセルの2D行列によって表され得る。グレースケール画像は、1つのチャネルのみを有し得る。以下の説明では、CNN1020を使用する単一の画像チャネルの処理が説明される。他のチャネルが同様に処理され得る。
【0142】
図10Bに示されているように、入力画像1022は、(
図10B中で[W
0]と標示された)第1の重みアレイを使用して第1の畳み込み層(たとえば、入力層)1024によって処理され得る。第1の畳み込み層1024は複数のノードを含み得、各ノードが、入力画像1022のピクセルに第1の重みアレイ中の対応する重みを乗算するために割り当てられる。畳み込み演算の一部として、入力画像1022のピクセルのブロックが第1の重みアレイを乗算されて、積が生成され得、次いで、その積は、積和(MAC)演算において累積されて、和が生成される。次いで、各和がアクティブ化関数によって後処理されて、中間出力が生成され得る。アクティブ化関数は、ニューラルネットワークにおける線形パーセプトロンの挙動をシミュレートすることができる。アクティブ化関数は、線形関数または非線形関数(たとえば、ReLU、softmax)を含むことができる。中間出力は、中間出力テンソル1026を形成することができる。第1の重みアレイは、たとえば、入力画像1022からいくつかの基本特徴(たとえば、エッジ)を抽出するために使用され得、中間出力テンソル1026は、基本特徴の分布を基本特徴マップとして表すことができる。中間出力テンソル1026はプーリング層1028に渡され得、ここで、中間出力テンソル1026は、中間出力テンソル1030を生成するためにプーリング層1028によってサブサンプリングまたはダウンサンプリングされ得る。
【0143】
中間出力テンソル1030は、(
図10B中で[W
1]と標示された)第2の重みアレイを使用して第2の畳み込み層1032によって処理され得る。第2の重みアレイは、たとえば、中間出力テンソル1030から、手など、オブジェクトに固有の特徴のパターンを識別するために使用され得る。畳み込み演算の一部として、テンソル1030のピクセルのブロックが第2の重みアレイを乗算されて、積が生成され得、その積は累積されて、和が生成され得る。次いで、各和が同じくアクティブ化関数によって処理されて、中間出力が生成され得、中間出力は中間出力テンソル1034を形成することができる。中間出力テンソル1034は、手を表す特徴の分布を表し得る。中間出力テンソル1034はプーリング層1036に渡され得、ここで、中間出力テンソル1034は、中間出力テンソル1038を生成するためにサブサンプリングまたはダウンサンプリングされ得る。
【0144】
中間出力テンソル1038は、次いで、多層パーセプトロン(MLP)を含むことができる全結合層1040を通して渡され得る。全結合層1040は、たとえば、画像1022中のオブジェクトが手を表すかどうか、画像1022中の手の、可能性があるピクセルロケーションなどを分類するために、中間出力テンソル1038に基づいて分類演算を実施することができる。全結合層1040は、中間出力テンソル1038に(
図10B中で[W
2]と標示された)第3の重みアレイを乗算して和を生成することができ、その和はアクティブ化関数によって処理されて、ニューラルネットワーク出力1042が生成され得る。ニューラルネットワーク出力1042は、たとえば、関心オブジェクト(たとえば、手)が画像フレーム中に存在するかどうか、ならびにそのピクセルロケーションおよびサイズを指示することができる。
【0145】
図10Cは、データ処理回路1006の内部構成要素と、CNN1020を実装するためのそれらの動作との一例を示す。
図10Cに示されているように、データ処理回路1006は、演算回路1050のアレイを含むことができる。1050a~1050fなどの各演算回路は、ローカル部分和を生成するために(「i」で表される)入力データ要素と(「w」で表される)重みデータ要素とを乗算するための乗算器1054を含むことができる。入力データ要素は、たとえば、画像フレーム中のピクセルに対応することができ、重みデータ要素は、ニューラルネットワーク層の重み行列(たとえば、[W
0]、[W
1]、[W
2])中の対応する重みであり得る。各演算回路1050は、ローカル部分和を、ネイバリング演算回路から受信された(「p_in」と標示された)入力部分和と加算し、(「p_out」と標示された)出力部分和を生成するための加算器1052をも含むことができる。出力部分和は、次いで、別のネイバリング演算回路に入力される。たとえば、演算回路1050aは、演算回路1050bから入力部分和を受信し、入力部分和にそのローカル部分和を加算して出力部分和を生成し、出力部分和を演算回路1050cに提供することができる。したがって、各演算回路はローカル部分和を生成し、ローカル部分和は、演算回路のアレイ中で累積されて、中間出力が形成される。データ処理回路1006は、中間出力に対して後処理(たとえば、アクティブ化関数処理、プーリング)を実施するための後処理回路1056をさらに含む。いくつかの例では、データ処理回路1006は、乗算器1054と後処理回路1056とを実装するための、ルックアップテーブルなど、他のタイプの回路を含むことができる。
【0146】
第1の入力畳み込み層1024およびプーリング層1028の畳み込みおよび後処理演算を実施するために、コントローラ1004(
図10Cに図示せず)は、CNN1020に従う入力データと演算回路との間の所定のマッピングに基づいてコンピュートメモリ1002から入力データを取得するようにデータ処理回路1006を制御することができる。たとえば、演算回路1050a、1050b、および1050cを含む、演算回路の第1のグループが、コンピュートメモリ1002から入力ピクセルのグループ1064を取得することができ、演算回路1050d、1050e、および1050fを含む、演算回路の第2のグループが、コンピュートメモリ1002から入力ピクセルのグループ1066を取得することができる。演算回路の各グループは、上記で説明されたように、乗算および累積(multiplication-and-accumulation)演算に基づいて入力ピクセルのグループと重みアレイとの間の畳み込み演算を実施して、中間出力を生成することができる。中間出力は、次いで、後処理回路1056によって後処理され得る。後処理された出力は、コンピュートメモリ1002に記憶され得る。たとえば、中間出力1068が、入力ピクセルのグループ1064の畳み込みおよび後処理から生成され得、中間出力1070が、入力ピクセルのグループ1066の畳み込みおよび後処理から生成され得る。第1の畳み込み層1024およびプーリング層1028の演算が完了し、中間出力がコンピュートメモリ1002に記憶された後に、コントローラ1004は、中間出力の第2のセットを生成し、コンピュートメモリ1002に記憶するために、第2の畳み込み層1032およびプーリング層1036の畳み込みおよび後処理演算を実施するために中間出力を取得するように演算回路1050のアレイを制御することができる。コントローラは、次いで、ニューラルネットワーク出力1042を生成するために、全結合層1040のトポロジーに基づいて、中間出力の第2のセットを取得するように演算回路のアレイを制御することができる。
【0147】
図8Aで説明されたように、画像プロセッサ810は、アクティブピクセルと非アクティブピクセルとを含むスパース画像をフレームバッファ809から受信し得る。アクティブピクセルは1つまたは複数の関心オブジェクトに対応し得、非アクティブピクセルは画像情報を含んでいないことがある(たとえば、完全に暗い色または他の所定の色を有する)。
図11Aは、画像プロセッサ810のコンピュートメモリ1002に記憶されたスパース画像1100の一例を示す。
図11Aに示されているように、対象の頭部および手を追跡するアプリケーションをサポートするために、スパース画像1100は、対象の頭部のピクセルを含むアクティブピクセルの第1のグループ1102と、対象の左手のピクセルを含むアクティブピクセルの第2のグループ1104と、対象の右手のピクセルを含むアクティブピクセルの第3のグループ1106とを含み得る。アクティブピクセルのグループは、第1のプログラミング信号820に基づいてピクセルセルアレイ808によって生成され、送信され得る。ピクセルのグループ1108を含む、スパース画像1100のピクセルの残りは、非アクティブであり、画像情報を含んでいない。各非アクティブピクセルは、ピクセルが非アクティブであることを指示するための0または別の値のピクセル値を有することができる。いくつかの例では、フレームバッファ809のメモリデバイスは、画像フレームのアクティブピクセルを受信するより前にリセットされ得る。アクティブピクセルはフレームバッファ809の対応するメモリデバイスに書き込まれ、アクティブピクセルを受信しないメモリデバイスの残りは、それらのリセット状態(たとえば、論理0)を保持し、非アクティブピクセルになり得る。画像フレームのアクティブピクセルおよび非アクティブピクセルを表すピクセル値は、次いで、画像プロセッサ810のコンピュートメモリ1002に記憶され得る。
【0148】
スパース画像1100の生成および送信はピクセルセルアレイ808による電力消費を低減することができるが、データ処理回路1006がスパース画像1100のあらゆるピクセルに対して処理動作(たとえば、畳み込み演算)を実施するべきである場合、データ処理回路1006は、依然として多くの電力を消費し得る。一方、
図11Aに示されているように、ピクセルの小さいサブセットのみがアクティブピクセルであり、画像データを含んでおり、ピクセルの大部分が非アクティブピクセルであるとすれば、非アクティブピクセルに対して処理動作を実施するためのデータ処理回路1006を有することは、関心オブジェクトを検出し、関心オブジェクトの位置を特定するために有用な情報を生成しないことになる。その結果、有用でない情報を生成する際に大量の電力が浪費され、これは、画像処理動作の全体的な電力および計算効率を低下させることがある。
【0149】
図11Bを参照すると、全体的な電力および計算効率を改善するために、コントローラ1004は、スパースデータハンドリング(data handling)回路1110を含むことができる。いくつかの例では、スパースデータハンドリング回路1110は、メモリ1002からニューラルネットワーク層への入力データのグループ(たとえば、ピクセル、中間出力など)を取得し、入力データのグループ全体が非アクティブ値(たとえば、0)を有するか、またはさもなければ画像情報を含んでいない、入力データのグループのサブセットを検出することができる。スパースデータハンドリング回路1110は、非アクティブ入力データのそれらのグループをデータ処理回路1006から除外することができ、データ処理回路1006は、非アクティブ入力データのそれらのグループのための中間出力を生成せず、コンピュートメモリ1002に書き込まない。一方、画像情報を表すアクティブ値(たとえば、非0)を含む入力データのグループは、スパースデータハンドリング回路1110によってデータ処理回路1006にフォワーディングされ得、データ処理回路1006は、次いで、中間出力を生成し、コンピュートメモリ1002に書き込むためにアクティブ入力データのグループを処理することができる。
【0150】
いくつかの例では、スパースデータハンドリング回路1110はまた、メモリ1002に記憶された画像フレームのスパーシティに関する情報を受信することができる。スパーシティ情報は、たとえば、プログラミングマップ生成器812からのプログラミングマップ情報に基づくか、または、以下で説明されるようにニューラルネットワークモデルトポロジーに基づき得る。スパースデータハンドリング回路1110は、アクティブピクセルデータを記憶するメモリ1002のメモリアドレスを決定し、それらのメモリアドレスからアクティブピクセルデータを取得することができる。
【0151】
コンピュートメモリ1002が異なる画像フレーム間で(たとえば、論理0に)リセット/再初期化される場合、(ニューラルネットワーク層の入力と出力との間のマッピングに基づいて割り当てられた)非アクティブ入力データのグループのための中間出力を記憶するために割り当てられる、コンピュートメモリ1002のメモリデバイスは、それらの初期化/リセットされた状態を保持し、非アクティブ入力データのグループについてアクセスされ得ない。一方、アクティブ入力データのグループのための中間出力を記憶するために割り当てられる、コンピュートメモリ1002のメモリデバイスは、データ処理回路1006によって更新され得る。そのような仕組みは、スパース画像データの処理のためのコンピュートメモリ1002へのアクセスを低減することができ、これは、全体としてコンピュートメモリ1002および画像プロセッサ810による電力消費をさらに低減することができる。
【0152】
たとえば、再び
図10Cを参照すると、スパースデータハンドリング回路1110は、入力ピクセルのグループ1064が完全に非アクティブであり、画像情報を含んでいないことがあるが、入力ピクセルのグループ1066がアクティブピクセルと画像情報とを含んでいることを検出することができる。スパースデータハンドリング回路1110は、中間出力が入力ピクセルのグループ1064についてコンピュートメモリ1002に書き込まれないように、(演算回路1050a~1050cを含む)演算回路の第1のグループから入力ピクセルのグループ1064と、対応する重みとを除外するか、またはさもなければ、演算回路の第1のグループを無効化することができる。入力ピクセルのグループ1064のための中間出力1068は、第1の畳み込み層1024のための処理の終了時にリセット値(たとえば、論理0)を保持することができる。一方、スパースデータハンドリング回路1110は、入力ピクセルのグループ1066と、対応する重みとを(演算回路1050d~1050fを含む)演算回路の第2のグループに提供して、中間出力1070を生成することができ、中間出力1070は、次いで、コンピュートメモリ1002に書き込まれ得る。スパースデータハンドリング回路1110はまた、入力データの非アクティブグループを検出することと、入力データの非アクティブグループをデータ処理回路1006から除外することとに基づいて、他のニューラルネットワーク層のためのスパースデータハンドリングを繰り返して、データ処理回路1006が、入力データのそれらの非アクティブグループについて計算を実施し、中間出力をコンピュートメモリ1002に書き込むのを防ぐことができる。
【0153】
さらに、データ処理回路1006は、スパースデータハンドリング回路1110によってフォワーディングされたアクティブ入力データのグループ内の非アクティブ/0入力データの処理に関連付けられた電力消費を低減するためのバイパス機構をも含むことができる。詳細には、
図11Cを参照すると、演算回路1050aは、ディセーブル回路1120とマルチプレクサ1122とを含むことができる。入力データ要素(i)または重みデータ要素(w)のうちの1つまたは複数が0であるとき、積は0になる。演算回路1050aが0を計算する際に電力を浪費することを回避するために、ディセーブル回路1120は、入力データ要素(i)または重みデータ要素(w)のうちの1つまたは複数が0であることを検出すると、加算器1052および乗算器1054を(たとえば、それらの電源を遮断することに基づいて)無効化することができる。その上、積が0になるので、マルチプレクサ1122は、入力部分和(p_in)を出力部分和(p_out)として直接渡すように制御され得る。
【0154】
いくつかの例では、電力消費をさらに低減し、電力および計算効率を改善するために、画像センサー802は、時間スパーシティ動作をサポートすることができる。アクティブピクセルの間の時間スパーシティ動作の一部として、静的であるピクセルと非静的であるピクセルとが識別され得る。画像プロセッサ810は、非静的ピクセルのみに対して画像処理動作を実施するように構成され得、静的ピクセル、ならびに非アクティブピクセルは、電力消費をさらに低減し、電力および計算効率を改善するために、スパースデータハンドリング回路1110によってデータ処理回路1006から除外され得る。
【0155】
図12Aは、静的ピクセルと非静的ピクセルとを有するアクティブピクセルのグループ1200の一例を示す。
図12Aに示されているように、アクティブピクセルのグループ1200は、時間T0において、および時間T1において、2つの画像フレーム中でキャプチャされる。アクティブピクセルのグループ1200は、追跡されるべき関心オブジェクト(たとえば、対象の頭部)を含むことができる。アクティブピクセルのグループ1200はまた、時間T0と時間T1との間で変化が起きる(
図12A中の眼および口のピクセルを含む)ピクセルのサブセット1202および1204を含むことができ、アクティブピクセル1200の残りは、時間T0と時間T1との間で静的なままである。ピクセルの変化の程度がしきい値を下回る場合、そのピクセルは静的であると決定され得る。
【0156】
いくつかの例では、フレームバッファ809は、画像センサーによって出力されたアクティブピクセルから静的ピクセルを検出し、それらのピクセルが静的ピクセルであることを画像プロセッサ回路にシグナリングするためにそれらのピクセルについてのピクセル値を記憶することができる。いくつかの例では、フレームバッファ809はまた、フレームバッファに記憶されたピクセルから静的ピクセルを検出することができ、それらのうちのいくつかは、画像センサーが提供せず、したがって静的なままである、非アクティブピクセルに対応することができる。
図12Bは、静的ピクセルのシグナリングをサポートするためのフレームバッファ809の例示的な内部構成要素を含む。
図12Bに示されているように、フレームバッファ809は、ピクセル更新モジュール1212と、バッファ1204と、ピクセル更新追跡テーブル1216とを含むことができる。詳細には、ピクセル更新モジュール1212は、アクティブピクセルと非アクティブピクセルとを含む、ピクセルセルアレイ808から受信された最も最近の画像フレームを受信し、バッファメモリ1214中の前の画像フレームピクセルを最も最近の画像フレームで上書きすることができる。バッファメモリ1214中の各ピクセルについて、ピクセル更新モジュール1212は、前の画像フレームに対するピクセルの変化の程度を決定し、変化の程度がしきい値を超えるかどうかに基づいて、ピクセルが静的であるのか非静的であるのかを決定することができる。ピクセル更新モジュール1212はまた、ピクセル更新追跡テーブル1216において、各ピクセルについて、ピクセルが更新された(および非静的であると見なされた)最後のフレーム時間を更新することができる。ピクセル更新モジュール1212が、ピクセルセルのアレイ808によって生成された前のフレームからのピクセル値でピクセルを更新した後に、ピクセル更新モジュール1212は、ピクセル更新追跡テーブル1216からの情報に基づいて、そのピクセルが静的なままであるいくつかのフレーム(静的フレーム時間)を追跡し、静的フレーム時間に基づいてピクセルのピクセル値を設定することができる。
【0157】
図12Cは、ピクセル更新モジュール1212が静的ピクセルのピクセル値を設定することができる、技法の例を示す。
図12Cの左側のチャート1220に示されているように、ピクセル更新モジュール1212は、以下のように、時定数Cを有するリーキー積分関数に基づいて静的ピクセルのピクセル値を設定することができる。
P=S0+Se
-t/C (式1)
【0158】
式1では、Pは、ピクセル更新モジュール1212によって設定されたピクセル値を表し、S0は、静的ピクセルを表すための所定のピクセル値を表し、Sは、前のフレームから取得された元のピクセル値とS0との間の差を表す。元のピクセル値は、そのピクセルが変化しきい値よりも大きい程度の変化が最後に置き、したがってフレームバッファ中で更新されたとき、前のフレームから取得される。静的ピクセルのピクセル値はS0+Sにおいて設定され、ピクセルが静的なままであるとき、減衰する。最終的に、静的ピクセルのピクセル値は、ピクセルが、拡張された数のフレームについて静的なままである場合、S0において安定する。
【0159】
別の例として、
図12Cの右側のチャート1222に示されているように、ピクセル更新モジュール1212は、ステップ関数に基づいて静的ピクセルのピクセル値を設定することができる。詳細には、ピクセル更新モジュール1212は、T
thによって表されるしきい値数のフレームについて、静的ピクセルのピクセル値をS0+Sのままにすることができる。しきい値数のフレームが通った後に、ピクセル更新モジュール1212は、ピクセル値をピクセル値S0において設定することができる。
【0160】
所定のピクセル値S0は、暗い色(0)、白色(255)、灰色(128)、または静的ピクセルを指示する任意の値に対応することができる。すべてのこれらの場合では、画像プロセッサは、静的ピクセルをシグナリングするピクセル値を識別したことに基づいて静的ピクセルと非静的ピクセルとを区別し、上記で説明されたように非静的ピクセルのみに対して画像処理動作を実施することができる。
【0161】
いくつかの例では、画像プロセッサ810のコントローラ1004は、静的ピクセルのハンドリングをさらに改良するための追加の構成要素を含むことができる。
図13Aに示されているように、コントローラ1004は、ニューラルネットワーク動作コントローラ1302とデータ伝搬コントローラ1304とを含むことができ、データ伝搬コントローラ1304は、
図11Bのスパースデータハンドリング回路1110を含むことができる。ニューラルネットワーク動作コントローラ1302は、入力データの取得、中間出力データの記憶、算術演算を含む、各ニューラルネットワーク層のための動作を決定し、これらの動作を反映する制御信号1306を生成することができる。データ伝搬コントローラ1304は、制御信号1306に基づいて入力データの取得と中間出力データの記憶とを行うことができる。
【0162】
詳細には、ニューラルネットワーク動作コントローラ1302は、たとえば、各ニューラルネットワーク層についてのおよび隣接するネットワーク層間の入出力接続性、各ニューラルネットワーク層のサイズ、各ニューラルネットワーク層における量子化動作および他の後処理演算(たとえば、アクティブ化関数処理、プーリング演算)、ニューラルネットワークの受容野などを含む、データ処理回路1006によって実装されているニューラルネットワークモデルのトポロジー情報を有することができる。ニューラルネットワーク動作コントローラ1302は、トポロジー情報に基づいて、入力データの取得と、中間出力データの記憶と、算術演算とを制御するための制御信号1306を生成することができる。たとえば、ニューラルネットワーク動作コントローラ1302は、制御信号1306の一部として、接続性情報に基づく、各ニューラルネットワークについての、コンピュートメモリ1002中の入力データのアドレスと中間出力のアドレスとの間のマッピングを含むことができ、これは、データ伝搬コントローラ1304が、入力データを取得し、中間出力データをコンピュートメモリ1002内の正しいメモリロケーションにおいて記憶することを可能にする。
【0163】
さらに、ニューラルネットワーク動作コントローラ1302は、静的ピクセルハンドリング動作を促進するための追加情報を制御信号1306中に含めることができる。たとえば、ニューラルネットワークモデルのトポロジー情報ならびにアクティブピクセルおよび非アクティブピクセルの分布に基づいて、ニューラルネットワーク動作コントローラ1302は、(画像フレーム間の)ピクセルの変化がニューラルネットワークの異なる層中をどのように伝搬するかを指示するデータ変化伝搬マップ1310を決定し、そのマップをデータ伝搬コントローラ1304に提供することができる。静的ピクセルを識別することと、データ変化伝搬マップとに基づいて、データ伝搬コントローラ1304(およびスパースデータハンドリング回路1110)は、中間出力データのサブセットを生成し、中間出力データのサブセットをコンピュートメモリ1002において記憶するために、非静的であるとあらかじめ決定された入力データを、データ処理回路1006に選択的に取得することができる。一方、(前のフレームから生成された)静的ピクセルに対応する中間出力データは、コンピュートメモリ1002中に保持され、更新されない。
【0164】
図13Bは、データ変化伝搬マップ1310に基づいて異なるニューラルネットワーク層のための非静的入出力を識別する例示的な動作を示す。
図13Bでは、暗い領域1314a、1314b、1314c、1314d、および1314nは、非静的/アクティブピクセルデータ、ならびに各ニューラルネットワーク層における非静的中間出力を記憶する、コンピュートメモリ1002中のアクティブデータアドレス領域に対応することができ、白い領域は、静的/非アクティブピクセルデータと静的中間出力とを記憶する、コンピュートメモリ1002中のアドレス領域に対応することができる。データ変化伝搬マップ1310に基づいて、データ伝搬コントローラ1304は、各ニューラルネットワーク層についてニューラルネットワーク計算(たとえば、乗算および累積演算)を実施するために、非静的/アクティブピクセルデータを記憶するかまたは記憶することになる、コンピュートメモリ1002中のデータアドレス領域を決定し、コンピュートメモリ1002中のそれらのデータ領域からのピクセルデータおよび/または中間出力データのみをデータ処理回路1006に取得することができる。
【0165】
再び
図13Aを参照すると、ニューラルネットワーク動作コントローラ302はまた、ピクセルが静的であるかどうかを決定するための変化しきい値1320を決定することができる。変化しきい値1320は、ニューラルネットワークモデルの深度など、ニューラルネットワークモデルのトポロジー、ならびに各層における量子化動作およびプーリング演算に基づいて決定され得る。詳細には、ピクセルデータの変化はニューラルネットワークモデルの異なる層を通って伝搬することができ、中間出力の、およびニューラルネットワークモデルの出力の変化の程度は、一般に、特に入力および出力データが高度に量子化される(たとえば、極めて数のビットによって表される)場合、より高いニューラルネットワーク層において減少する。したがって、ある数の層と、ある量子化方式とを有する所与のニューラルネットワークモデルの場合、ニューラルネットワーク動作コントローラ302は、非静的であると見なされるピクセルがニューラルネットワークモデル出力において少なくともある程度の変化をもたらすことができるように、ピクセルデータについての変化しきい値1320を決定することができる。いくつかの例では、ニューラルネットワーク動作コントローラ302はまた、非静的入力データが変化しきい値に基づいて選択されることが、そのニューラルネットワーク層のための出力データにおける有意味な変化をもたらすことができることを保証するために、たとえば、異なるプーリング演算が異なるニューラルネットワーク層において実施されること、異なるニューラルネットワーク層における異なる量子化精度、異なるニューラルネットワーク層のための入力データの異なるスパーシティ分布などにより、異なるニューラルネットワーク層についての異なる変化しきい値1320を決定することができる。
【0166】
いくつかの例では、データ伝搬コントローラ1304は、連続画像フレーム間のピクセルの変化、ならびに他の画像フレームのシーケンス(たとえば、10)によって分離された非連続画像フレーム間のピクセルの変化の両方を追跡するための、残差ハンドリング回路1316を含むことができる。残差ハンドリング回路1316は、ピクセルが連続画像フレーム間の小さい変化を有することにより静的であると決定されるが、非連続フレーム間のピクセルの変化は、ニューラルネットワークの中間出力が更新される必要があるほど十分に大きくなる状況をハンドリングすることができる。そのような状況は、
図13Cに示されている。
図13Cに示されているように、フレーム1とフレーム2とフレーム3とフレーム4との間では、ピクセル1330および1332のみがフレーム間で変化する。連続フレーム間では、ピクセル値の変化(0.2~0.3)は小さいことがあり、それらのピクセルは、静的ピクセルであると決定され得る。しかし、フレーム4とフレーム1との間では、変化は0.5~0.7であり、有意であり、変化は、フレーム1とフレーム4との間の畳み込み出力の有意な差(0.119対0.646)において反映される。そのような状況をハンドリングするために、残差ハンドリング回路1316は、2つの連続フレーム間のピクセルの変化だけでなく、所定の数のフレームによって分離された2つの非連続フレーム間の変化にも基づいて、ピクセルが静的であるかどうかを決定することができる。ピクセルが、2つの連続フレーム間で小さい変化を呈するが、非連続フレーム間で大きい変化を呈する場合、残差ハンドリング回路1316は、ピクセルが非静的ピクセルであると決定し、データ処理回路1006がそのピクセルに対して画像処理動作を実施することを可能にすることができる。
【0167】
図14Aおよび
図14Bは、画像センサー802の物理的配置の例を示す。
図14Aに示されているように、画像センサー802は、ピクセルセルのフォトダイオードなど、ピクセルセルアレイ808の構成要素のうちのいくつかを含む半導体基板1400と、バッファ606、量子化器607、およびメモリ955など、ピクセルセルアレイ808の処理回路、ならびにセンサーコンピュート回路806を含む1つまたは複数の半導体基板1402とを含み得る。いくつかの例では、1つまたは複数の半導体基板1402は、半導体基板1402aと半導体基板1402bとを含む。半導体基板1402aは、ピクセルセルアレイ808の処理回路を含むことができ、半導体基板1402bは、センサーコンピュート回路806を含むことができる。半導体基板1400および1つまたは複数の半導体基板1402は、チップを形成するために半導体パッケージ内に収容され得る。
【0168】
いくつかの例では、半導体基板1400および1つまたは複数の半導体基板1402は、基板の間の電気的接続を提供するための垂直相互接続1404および1406を伴って、(たとえば、z軸によって表される)垂直方向に沿ってスタックを形成することができる。そのような仕組みは、ピクセルセルアレイ808とセンサーコンピュート回路806との間の電気的接続のルーティング距離を低減することができ、これは、ピクセルセルアレイ808からセンサーコンピュート回路806へのデータ(特にピクセルデータ)の送信の速度を増加させ、送信に必要とされる電力を低減することができる。いくつかの例では、画像センサー802は、フレームバッファ809及びコンピュートメモリ1002に提供するために半導体基板上にまたは半導体基板の間に形成されたメモリデバイス(たとえば、SRAM、RRAMなど)のアレイを含み得る。
【0169】
図14Bは、画像センサー802のスタック構造の詳細の例を示す。
図14Bに示されているように、第1の半導体基板1000は、受光面として構成され、各ピクセルセルのフォトダイオードを含む裏側表面1408と、転送トランジスタ604および電荷貯蔵デバイス605(たとえば、転送トランジスタ604のフローティングドレイン)が実装される前側表面1410とを含み得るが、バッファ606、量子化器607、メモリ955などを含むピクセルセルの処理回路は、半導体基板1402aの前側表面1412の下方に実装される。半導体基板1400の前側表面1410は、チップ間銅接合を含む垂直相互接続1404によって、半導体基板1402aの前側表面1012と電気的に接続され得る。チップ間銅接合は、たとえば、各ピクセルセルの転送トランジスタ604と各ピクセルセルのバッファ606との間のピクセル相互接続を提供することができる。
【0170】
さらに、撮像センサー800は、ピクセルセルアレイ808とセンサーコンピュート回路806との間の、スルーシリコンビア(TSV)、マイクロTSV、銅-銅バンプ(Copper-Copper bump)など、スルー垂直相互接続(through vertical interconnect)をさらに含む。垂直相互接続は、スタックのショルダー領域1420および1422上にあり、半導体基板1402aおよび1402bを貫通することができる。垂直相互接続は、たとえば、第1のプログラミング信号820および画像フレーム(たとえば、第1の画像フレーム822)を送信するように構成され得る。垂直相互接続は、たとえば、画像特徴抽出動作を実施するために、ピクセルセルアレイ808から画像プロセッサ810への通常フレームレート(たとえば、60フレーム/秒)におけるピクセルデータのフルフレーム(たとえば、1920ピクセル×1080ピクセル)の送信をサポートすることができる。
【0171】
図15は、
図8Aの画像センサー802などの画像センサーを動作させる方法1500を示す。方法1500は、たとえば、センサーコンピュート回路806と、ピクセルセルアレイ808と、フレームバッファ809とを含む、画像センサー802の様々な構成要素によって実施され得る。センサーコンピュート回路806は、画像プロセッサ810とプログラミングマップ生成器812とをさらに含む。いくつかの例では、画像センサーは、第1の半導体基板中で実装され、フレームバッファおよびセンサーコンピュート回路は、1つまたは複数の第2の半導体基板中で実装されるが、第1の半導体基板および1つまたは複数の第2の半導体基板はスタックを形成し、単一の半導体パッケージ中に収容されている。
【0172】
ステップ1502において、プログラミングマップ生成器812は、第1のアクティブピクセルを生成するための複数のピクセルセルの第1のサブセットを選択するために、第1のプログラミングデータを、上記ピクセルセルを備える画像センサーに送信する。
【0173】
いくつかの例では、第1のプログラミングデータは、スパース画像検知動作に基づくホストプロセッサ804におけるオブジェクト検出および追跡動作をサポートするために生成され得る。ピクセルセルの第1のサブセットは、スパース画像検知動作をサポートするために、オブジェクトをアクティブピクセルとして追跡および検出することに関連するピクセルデータのみをキャプチャすること、またはアクティブピクセルのみをフレームバッファに送信することを選択的に可能にされ得る。第1のプログラミングデータは、たとえば、ホストプロセッサ804からのフィードバックデータに基づいて生成され得る。
【0174】
ステップ1504において、センサーコンピュート回路806は、フレームバッファ809から、第1のプログラミングデータに基づいて画像センサーによって選択されたピクセルセルの第1のサブセットによって生成されたアクティブピクセルのうちの少なくともいくつかを備える第1の画像フレームを受信する。第1の画像フレームは、アクティブピクセルを生成するために選択されなかったピクセルセルの第2のサブセットに対応する非アクティブピクセルをさらに備える。いくつかの例では、
図12A~
図12Cで説明されたように、フレームバッファ809はまた、ピクセルが、静的ピクセルであり、いくつかの画像フレームにわたってしきい値程度の変化が起きなかったことを指示するために、第1の画像フレーム中のピクセルのうちのいくつかを所定の値で上書きすることができる。
【0175】
詳細には、フレームバッファは、画像センサーによって出力されたアクティブピクセルから静的ピクセルを検出し、それらのピクセルが静的ピクセルであることを画像プロセッサにシグナリングするためにそれらのピクセルについてのピクセル値を記憶することができる。たとえば、フレームバッファは、画像センサーの各ピクセルセルからの(アクティブピクセルと非アクティブピクセルとを含む)最も最近のピクセルデータを第1の画像フレームとして記憶することができる。アクティブピクセルの各ピクセルについて、フレームバッファは、第1の画像フレームの直前の画像フレームなど、前のフレームに対するピクセルの変化の程度を決定することができる。フレームバッファは、様々なやり方で静的ピクセルを指示するようにピクセル値を設定することができる。たとえば、フレームバッファは、時定数を有するリーキー積分関数に基づいて、および画像センサーによって出力されたピクセルが静的なままであった連続画像フレームの数に基づいて、フレームバッファ中のピクセルについてのピクセル値を設定することができる。ピクセルが多数の連続画像フレームについて静的なままであった場合、ピクセルのピクセル値は、所定のピクセル値において安定することができる。別の例として、ピクセルがしきい値数(たとえば、10個)の連続画像フレームについて静的なままであった場合、フレームバッファは、フレームバッファ中のピクセルについての所定のピクセル値を設定することができる。所定のピクセル値は、暗い色(0)、白色(255)、灰色(128)、または静的ピクセルを指示する任意の値に対応することができる。
【0176】
ステップ1506において、画像プロセッサ810は、処理出力を生成するために、第1の画像フレームのピクセルの第1のサブセットに対して画像処理動作を実施し、それにより、第1の画像フレームのピクセルの第2のサブセットが画像処理動作から除外される。画像処理動作が実施される第1の画像フレームのピクセルの第1のサブセットは、たとえば、アクティブピクセル、フレーム間のある程度の変化が起きる非静的ピクセルなどに対応することができる。たとえば、ピクセルの第1のサブセットは、ホストプロセッサ804におけるオブジェクト検出および追跡動作によって追跡/検出されている関心オブジェクトに対応することができる。
【0177】
いくつかの例では、画像処理動作は、ニューラルネットワーク動作を含むことができる。詳細には、
図10Aを参照すると、画像プロセッサ810は、入力層と出力層とを含む多層畳み込みニューラルネットワーク(CNN)など、ニューラルネットワーク動作のためのハードウェアアクセラレーションを提供するためのデータ処理回路1006を含むことができる。画像プロセッサは、入力画像フレームと、各ニューラルネットワーク層に関連付けられた重みのセットとを記憶するためのコンピュートメモリ1002を含むことができる。重みのセットは、検出されるべきオブジェクトの特徴を表すことができる。画像プロセッサは、コンピュートメモリから入力画像フレームデータと重みとを取得するようにデータ処理回路を制御するためのコントローラ1004をも含むことができる。コントローラは、入力層のための中間出力データを生成するために、入力画像フレームと重みとの間で、積和(MAC)演算など、算術演算を実施するようにデータ処理回路を制御することができる。中間出力データは、たとえば、アクティブ化関数、プーリング演算などに基づいて後処理され、次いで、後処理された中間出力データは、コンピュートメモリに記憶され得る。後処理された中間出力データは、コンピュートメモリから取得され、入力として次のニューラルネットワーク層に提供され得る。算術演算、ならびに中間出力データの取得および記憶は、ニューラルネットワーク出力を生成するために、出力層までのすべての層について繰り返される。ニューラルネットワーク出力は、たとえば、入力画像フレーム中にオブジェクトが存在する可能性、および入力画像フレーム中のオブジェクトのピクセルロケーションを指示することができる。
【0178】
コントローラは、効率的な様式でスパース画像データを処理するようにデータ処理回路を構成することができる。たとえば、入力層の場合、コントローラは、コンピュートメモリからピクセルの第1のサブセットおよび対応する重みのみを取得するように、ならびに、入力層のためのアクティブピクセルに対応する中間出力のサブセットを生成するためにアクティブピクセルおよび対応する重みのみに対してMAC演算を実施するように、データ処理回路を制御することができる。コントローラはまた、ニューラルネットワークのトポロジーと後続のニューラルネットワーク層の間の接続とに基づいて、アクティブピクセルまで遡ることができる各後続のニューラルネットワークにおける中間出力データのサブセットを決定することができる。コントローラは、各後続のニューラルネットワーク層における中間出力データのサブセットのみを生成するためにMAC演算を実施するようにデータ処理回路を制御することができる。さらに、コンピュートメモリのアクセスを低減するために、各層のための中間出力データについての所定の値(たとえば、0)が、ニューラルネットワーク動作より前にコンピュートメモリに記憶され得る。アクティブピクセルのための中間出力データのみが更新される。これらのすべては、スパース画像データにわたるニューラルネットワーク動作による電力消費を低減することができる。
【0179】
いくつかの例では、電力消費をさらに低減し、電力および計算効率を改善するために、データ処理回路は、非静的ピクセルのための更新された出力を生成するために、第1の画像フレームの非静的ピクセルのみに対して画像処理動作(たとえば、ニューラルネットワーク動作)を実施することができる。(アクティブでないピクセルを含むことができる)静的ピクセルの場合、画像処理動作はスキップされ得、前の画像フレームに対する画像処理動作からの出力が保持され得る。画像処理動作がニューラルネットワーク動作を含む場合、コントローラは、入力層のための非静的ピクセルに対応する中間出力データのサブセットを更新するためにコンピュートメモリから非静的ピクセルおよび対応する重みデータのみを取得するように、データ処理回路を制御することができる。コンピュートメモリ中の、(前の画像フレームから取得された)静的ピクセルに対応し、(たとえば、0などの所定の値を有する)アクティブでないピクセルに対応する、中間出力データの残りは、入力層について保持され得る。コントローラはまた、ニューラルネットワークのトポロジーと後続のニューラルネットワーク層の間の接続とに基づいて、非静的ピクセルまで遡ることができる各後続のニューラルネットワークにおける中間出力データのサブセットを決定し、コンピュートメモリへのアクセスを低減するために、および電力消費を低減するために、中間出力データのサブセットのみを更新することができる。
【0180】
いくつかの例では、画像プロセッサはまた、非静的ピクセルの処理を促進するために追加情報を生成することができる。たとえば、画像プロセッサは、ニューラルネットワークモデルの入力層から出力層へのデータ変化の伝搬を追跡するデータ変化伝搬マップを、そのモデルのトポロジーに基づいて決定することができる。伝搬マップ、ならびにフレームバッファからの静的ピクセルに基づいて、画像プロセッサは、非静的である、各ニューラルネットワークのための入力データを識別し、各層におけるニューラルネットワーク動作のためにそれらの入力データのみを取得することができる。さらに、画像プロセッサはまた、非静的であると決定されたピクセルが出力層における必須の程度の変化をもたらし得ることを保証するために、ニューラルネットワークモデルのトポロジーに基づいて、静的/非静的ピクセル決定のための変化のしきい値程度を決定することができる。さらに、画像プロセッサはまた、連続フレーム間の、および非連続フレーム間のピクセルの変化を追跡することができる。画像プロセッサは、連続フレーム間の小さい変化を呈するピクセルを識別することができるが、非連続フレーム間の大きな変化を非静的ピクセルとして識別することもでき、それにより、画像プロセッサは、それらのピクセルに対して画像処理動作を実施することができる。
【0181】
ステップ1508において、プログラミングマップ生成器812は、処理出力に基づいて第2のプログラミングデータを生成する。第2のプログラミングデータは、処理出力に基づいて、たとえば、オブジェクトの移動、追跡されているオブジェクトの一部の変化などを反映することができる。
【0182】
ステップ1510において、プログラミングマップ生成器812は、第2の画像フレームのための第2のアクティブピクセルを生成するために、第2のプログラミングデータを画像センサーに送信する。
【0183】
本明細書のいくつかの部分は、情報に関する動作のアルゴリズムおよび記号表現に関して本開示の例について説明する。これらのアルゴリズム説明および表現は、データ処理技術分野の当業者が、他の当業者に自身の仕事の本質を効果的に伝えるために通常使用される。これらの動作は、機能的に、計算量的に、または論理的に説明されるが、コンピュータプログラムまたは等価な電気回路、マイクロコードなどによって実装されることが理解される。さらに、一般性の喪失なしに、動作のこれらの仕組みをモジュールと呼ぶことが時々好都合であることも証明された。説明される動作およびそれらの関連するモジュールは、ソフトウェア、ファームウェア、および/またはハードウェアにおいて具現され得る。
【0184】
説明されるステップ、動作、またはプロセスは、1つまたは複数のハードウェアまたはソフトウェアモジュールで、単独でまたは他のデバイスとの組合せで実施または実装され得る。いくつかの例では、ソフトウェアモジュールは、コンピュータプログラムコードを含んでいるコンピュータ可読媒体を備えるコンピュータプログラム製品で実装され、コンピュータプログラムコードは、説明されるステップ、動作、またはプロセスのいずれかまたはすべてを実施するためにコンピュータプロセッサによって実行され得る。
【0185】
本開示の例はまた、説明される動作を実施するための装置に関し得る。本装置は、必要とされる目的のために特別に構築され得、および/あるいは、本装置は、コンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化または再構成される汎用コンピューティングデバイスを備え得る。そのようなコンピュータプログラムは、非一時的有形コンピュータ可読記憶媒体、または、コンピュータシステムバスに接続され得る、電子命令を記憶するのに好適な任意のタイプの媒体に記憶され得る。さらに、本明細書で言及される任意のコンピューティングシステムは、単一のプロセッサを含み得るか、または増加された計算能力のために複数のプロセッサ設計を採用するアーキテクチャであり得る。
【0186】
本開示の例はまた、本明細書で説明されるコンピューティングプロセスによって製造される製品に関し得る。そのような製品は、コンピューティングプロセスから生じる情報を備え得、その情報は、非一時的有形コンピュータ可読記憶媒体に記憶され、本明細書で説明されるコンピュータプログラム製品または他のデータ組合せの任意の例を含み得る。
【0187】
本明細書で使用される言い回しは、主に読みやすさおよび教授の目的で選択されており、その言い回しは、本発明の主題を画定または制限するために選択されていないことがある。したがって、本開示の範囲はこの詳細な説明によって限定されるのではなく、むしろ、本明細書に基づく出願に関して生じる請求項によって限定されることが意図される。したがって、例の開示は、以下の特許請求の範囲に記載される本開示の範囲を例示するものであり、限定するものではない。
【国際調査報告】