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

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

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特許-低パワー視覚センシング 図1
  • 特許-低パワー視覚センシング 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-27
(45)【発行日】2024-10-07
(54)【発明の名称】低パワー視覚センシング
(51)【国際特許分類】
   G06F 1/3231 20190101AFI20240930BHJP
   G06F 1/3287 20190101ALI20240930BHJP
【FI】
G06F1/3231
G06F1/3287
【請求項の数】 19
(21)【出願番号】P 2022532137
(86)(22)【出願日】2020-12-16
(65)【公表番号】
(43)【公表日】2023-03-23
(86)【国際出願番号】 US2020065387
(87)【国際公開番号】W WO2021127030
(87)【国際公開日】2021-06-24
【審査請求日】2022-08-25
(31)【優先権主張番号】62/949,386
(32)【優先日】2019-12-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】マダー,ローレンス・ジェイ,ザ・サード
【審査官】征矢 崇
(56)【参考文献】
【文献】国際公開第2019/104228(WO,A1)
【文献】特表2018-501531(JP,A)
【文献】特開2016-086334(JP,A)
【文献】特開2007-013472(JP,A)
【文献】特開2013-115649(JP,A)
【文献】特表2020-532779(JP,A)
【文献】米国特許出願公開第2011/0134250(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F1/26-1/3296
H04N5/222-5/257
(57)【特許請求の範囲】
【請求項1】
コンピューティングデバイスであって、
視覚センサデータを生成するように構成される視覚センサと、
前記視覚センサによって生成された前記視覚センサデータを低パワー検出プロセスに従って繰り返し処理するための手段と、
前記低パワー検出プロセスによって検出が示された場合に高パワー検出プロセスを実行するための手段と、
メインCPUクラスタと、
カメラと、前記カメラによって生成されたデータを処理するように構成されるメイン画像信号プロセッサとを備え、
前記コンピューティングデバイスは、前記視覚センサデータを格納するフレームバッファと前記メイン画像信号プロセッサとの間のプライベートチャネルを用いて、前記高パワー検出プロセス時に使用される前処理された視覚センサデータを生成するように構成され、
前記フレームバッファには、前記メインCPUクラスタにおいて実行されるスレッドによってアクセスが不可能なメモリが割り当てられる、コンピューティングデバイス。
【請求項2】
前記コンピューティングデバイスは、第1の処理コンポーネントを用いて前記低パワー検出プロセスを実行し、第2の処理コンポーネントを用いて前記高パワー検出プロセスを実行するように構成され、前記第1の処理コンポーネントは前記第2の処理コンポーネントよりも少ない電力を消費する、請求項1に記載のコンピューティングデバイス。
【請求項3】
前記第2の処理コンポーネントは、前記低パワー検出プロセスによって検出が示されるまで無効にされる、請求項2に記載のコンピューティングデバイス。
【請求項4】
複数のコンピュートタイルを有するメインマシンラーニングエンジンをさらに備え、前記コンピューティングデバイスは、前記メインマシンラーニングエンジンを前記第2の処理コンポーネントとして用いて前記高パワー検出プロセスを実行するように構成される、請求項2または3に記載のコンピューティングデバイス。
【請求項5】
前記コンピューティングデバイスは、前記メインマシンラーニングエンジンの前記複数のコンピュートタイルのすべてよりも少ないコンピュートタイルを前記第1の処理コンポーネントとして用いて前記低パワー検出プロセスを実行するように構成される、請求項4に記載のコンピューティングデバイス。
【請求項6】
アンビエントマシンラーニングエンジンをさらに備え、前記コンピューティングデバイスは、前記アンビエントマシンラーニングエンジンを前記第1の処理コンポーネントとして用いて前記低パワー検出プロセスを実行するように構成される、請求項4に記載のコンピューティングデバイス。
【請求項7】
前記フレームバッファに格納された前記視覚センサデータを用いて前記低パワー検出プロセスおよび前記高パワー検出プロセスを実行するように構成される、請求項1~6のいずれか1項に記載のコンピューティングデバイス。
【請求項8】
前記プライベートチャネルは、前記メインCPUクラスタにおいて実行されるスレッドによるアクセスが不可能である、請求項1または7に記載のコンピューティングデバイス。
【請求項9】
前記視覚センサは、前記低パワー検出プロセスのための第1のフレームレートと、前記高パワー検出プロセスのための前記第1のフレームレートよりも高い第2のフレームレートとを生成するように構成される、請求項1~8のいずれか1項に記載のコンピューティングデバイス。
【請求項10】
前記視覚センサは、前記低パワー検出プロセスのための第1の解像度と、前記高パワー検出プロセスのための前記第1の解像度よりも高い第2の解像度とで前記視覚センサデータを生成するように構成される、請求項1~9のいずれか1項に記載のコンピューティングデバイス。
【請求項11】
前記視覚センサによって生成された前記視覚センサデータを前記低パワー検出プロセスに従って繰り返し処理するための前記手段は、アンビエントコンピューティングシステムを含む、請求項1~10のいずれか1項に記載のコンピューティングデバイス。
【請求項12】
前記低パワー検出プロセスによって検出が示された場合、前記アンビエントコンピューティングシステムは、前記コンピューティングデバイスの1つ以上の他のコンポーネントを起動して、前記視覚センサデータを用いて前記高パワー検出プロセスを実行するようにさらに構成される、請求項11に記載のコンピューティングデバイス。
【請求項13】
コンピューティングデバイスによって実行される方法であって、
視覚センサデータを生成するように構成される視覚センサから前記視覚センサデータを受信するステップと、
前記視覚センサデータを低パワー検出プロセスに従って繰り返し処理するステップと、
前記低パワー検出プロセスによって検出が示された場合に、高パワー検出プロセスを実行するステップと、
カメラによって生成されたデータを処理するように構成されるメイン画像信号プロセッサと前記視覚センサデータを格納するフレームバッファとの間のプライベートチャネルを用いて、前記高パワー検出プロセス時に使用される前処理された視覚センサデータを生成するステップとを備え、
前記フレームバッファには、メインCPUクラスタにおいて実行されるスレッドによってアクセスが不可能なメモリが割り当てられる、方法。
【請求項14】
前記低パワー検出プロセスは、第1の処理コンポーネントを用いて実行され、
前記高パワー検出プロセスを実行するステップは、第2の処理コンポーネントを用いて前記高パワー検出プロセスを実行するステップを含み、
前記第1の処理コンポーネントは、前記第2の処理コンポーネントよりも少ない電力を消費する、請求項13に記載のコンピューティングデバイスによって実行される方法。
【請求項15】
前記第2の処理コンポーネントは、前記低パワー検出プロセスによって検出が示されるまで無効にされる、請求項14に記載のコンピューティングデバイスによって実行される方法。
【請求項16】
前記高パワー検出プロセスは、複数のコンピュートタイルを有するメインマシンラーニングエンジンを前記第2の処理コンポーネントとして用いて実行される、請求項14または15に記載のコンピューティングデバイスによって実行される方法。
【請求項17】
前記低パワー検出プロセスは、前記メインマシンラーニングエンジンの前記複数のコンピュートタイルのすべてよりも少ないコンピュートタイルを前記第1の処理コンポーネントとして用いて実行される、請求項16に記載のコンピューティングデバイスによって実行される方法。
【請求項18】
前記低パワー検出プロセスは、アンビエントマシンラーニングエンジンを前記第1の処理コンポーネントとして用いて実行される、請求項17に記載のコンピューティングデバイスによって実行される方法。
【請求項19】
請求項13~18のいずれか1項に記載の方法を、前記コンピューティングデバイスの複数のプロセッサに実行させる複数の命令を格納した1つ以上のコンピュータ記憶媒体であって、
前記複数の命令は、前記低パワー検出プロセス用の第1プロセッサが実行するコンピュータプログラム命令と、前記高パワー検出プロセス用の第2プロセッサが実行するコンピュータプログラム命令とを含む、コンピュータ記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
背景
本明細書は、アンビエントコンピューティング(ambient computing)に関する。
【0002】
たとえばスマートフォン、携帯情報端末、電子タブレットおよびラップトップなどといったモバイルコンピューティングデバイスは、典型的には、1つ以上の再充電可能バッテリによって供給される電力を使用する。再充電可能バッテリは、バッテリが再充電されなければならなくなる前に、たとえばバッテリに電流を適用することによってデバイスに有限量の電力のみを供給する。モバイルコンピューティングデバイスのバッテリを再充電することは、一般に、モバイルコンピューティングデバイスを電気グリッドに接続することを必要とする。これにより、そのモビリティが低減または除去される。したがって、モバイルコンピューティングデバイスの電力消費を低減し、それによってそれらのバッテリ寿命を延ばすことは、重要な目的である。
【0003】
モバイルコンピューティングデバイスは、1つ以上の周辺センサを含み得る。たとえば、いくつかのモバイルコンピューティングデバイスは、マイクロフォン、カメラ、および加速度計などを含む。モバイルコンピューティングデバイスはさらに、1つ以上の周辺センサによって収集されるデータを処理するために1つ以上の処理コンポーネントを含み得る。たとえば、いくつかのモバイルコンピューティングデバイスは、中央処理装置(CPU:central processing unit)、デジタル信号プロセッサ(DSP:digital signal processor)、または他の処理コンポーネントを含む。
【0004】
モバイルコンピューティングデバイスは、それらの1つ以上の周辺センサによって収集されるとともにそれらの1つ以上の処理コンポーネントによって処理されるデータに基づいて、アクションを行い得る。たとえば、いくつかのモバイルコンピューティングデバイスは、マイクロフォンによって検出されるとともにCPUによって処理されるボイスコマンドに応答してアクションを行い得る。しかしながら、センサデータを処理できるように処理コンポーネントをアクティブ状態に維持することは、かなりの量の電力を消費する。
【発明の概要】
【0005】
概要
本明細書では、コンピューティングデバイス上で低パワー視覚センシングを実現するための技術が記載される。これらの技術は、視覚センサデータの継続的なモニタリングに依存するさまざまな複雑なアプリケーションが、低電力状態で実行されることを可能にする。
【0006】
本明細書において記載される主題は、以下の利点のうちの1つ以上を実現するように特定の実施形態において実現され得る。アンビエントコンピューティングシステムは、視覚センシングに基づいてさまざまな複雑なタスクを行い得るが、消費される電力は少なくなる。この結果、電力が節約されてバッテリ寿命が増加する。これらの複雑な視覚センシングタスクは、デバイスのメインCPUクラスタを起動することなく行われ得る。さらに、システムのアーキテクチャは、メインCPUクラスタからのスレッドが視覚センサデータにアクセスすることを防止することによって、ユーザのプライバシーを保護し得る。これは、アンビエントコンピューティングシステムが、電力消費も低減しつつ、その環境における変化に対してより応答性が高くなることを可能にする。したがって、アンビエントコンピューティングシステムは、コンピューティングデバイスのバッテリ寿命に対して限られた影響でより優れた機能を提供し得、複雑なアンビエント状態を有するコンピューティングデバイスの全バッテリ寿命を増加し得る。
【0007】
本開示の第1の局面によれば、コンピューティングデバイスが提供され、コンピューティングデバイスは、視覚センサデータを生成するように構成される視覚センサと、アンビエントコンピューティングシステムとを含む。アンビエントコンピューティングシステムは、視覚センサによって生成された視覚センサデータを低パワー検出プロセスに従って繰り返し処理し、低パワー検出プロセスによって検出が示された場合、コンピューティングデバイスの1つ以上の他のコンポーネントを起動して、視覚センサデータを用いて高パワー検出プロセスを実行するように構成される。
【0008】
本開示の第2の局面によれば、コンピューティングデバイスが提供され、コンピューティングデバイスは、視覚センサデータを生成するように構成される視覚センサと、視覚センサによって生成された視覚センサデータを低パワー検出プロセスに従って繰り返し処理するための手段と、低パワー検出プロセスによって検出が示された場合に高パワー検出プロセスを実行するための手段とを含む。
【0009】
以下の特徴は、第1または第2の局面のいずれか一方と組み合わせて提供され得る。
デバイスは、第1の処理コンポーネントを用いて低パワー検出プロセスを実行し、第2の処理要素を用いて高パワー検出プロセスを実行するように構成され、第1の処理コンポーネントは第2の処理コンポーネントよりも少ない電力を消費し得る。
【0010】
第2の処理コンポーネントは、低パワー検出プロセスによって検出が示されるまで無効にされ得る。
【0011】
コンピューティングデバイスは、複数のコンピュートタイルを有するメインマシンラーニングエンジンをさらに含み得る。デバイスは、メインマシンラーニングエンジンを用いて高パワー検出プロセスを実行するように構成され得る。メインマシンラーニングエンジンは第2の処理要素を含み得る。
【0012】
デバイスは、メインマシンラーニングエンジンの複数のコンピュートタイルのすべてよりも少ないコンピュートタイルを用いて低パワー検出プロセスを実行するように構成され得る。
【0013】
コンピューティングデバイスは、アンビエントマシンラーニングエンジンをさらに含み得る。デバイスは、アンビエントマシンラーニングエンジンを用いて低パワー検出プロセスを実行するように構成され得る。アンビエントマシンラーニングエンジンは第1の処理要素を含み得る。
【0014】
コンピューティングデバイスは、メインCPUクラスタをさらに含み得る。デバイスは、メインCPUクラスタにおいて実行されるスレッドによってアクセス可能なメモリに視覚センサデータを格納することなく低パワー検出プロセスおよび高パワー検出プロセスを実行するように構成され得る。
【0015】
コンピューティングデバイスは、カメラと、カメラによって生成されたデータを処理するように構成されるメイン画像信号プロセッサ(ISP)とをさらに含み得る。デバイスは、視覚センサデータを格納するフレームバッファとメインISPとの間のプライベートチャネルを用いて、高パワー検出プロセス時に使用される前処理された視覚センサデータを生成するように構成され得る。プライベートチャネルは、メインCPUクラスタにおいて実行されるスレッドによるアクセスが不可能であり得る。
【0016】
視覚センサは、低パワー検出プロセスのための第1のフレームレートと、高パワー検出プロセスのための第1のフレームレートよりも高い第2のフレームとを生成するように構成され得る。
【0017】
視覚センサは、低パワー検出プロセスのための第1の解像度と、低パワー検出プロセスのための第1の解像度よりも高い第2の解像度とで視覚センサデータを生成するように構成され得る。
【0018】
視覚センサによって生成された視覚センサデータを低パワー検出プロセスに従って繰り返し処理するための上記手段は、アンビエントコンピューティングシステムを含み得る。視覚センサによって生成された視覚センサデータを低パワー検出プロセスに従って繰り返し処理するための上記手段は、アンビエントコンピューティングシステムであり得る。
【0019】
低パワー検出プロセスによって検出が示された場合、アンビエントコンピューティングシステムは、コンピューティングデバイスの1つ以上の他のコンポーネントを起動して、視覚センサデータを用いて高パワー検出プロセスを実行するようにさらに構成され得る。低パワー検出プロセスによって検出が示された場合に高パワー検出プロセスを実行するための上記手段は、コンピューティングデバイスの上記1つ以上の他のコンポーネントを含み得る。
【0020】
本開示の第3の局面によれば、第1または第2の局面のいずれか一方のコンピューティングデバイスによって実行される動作を実行することを含む方法が提供される。方法は、コンピューティングデバイスの視覚センサが、視覚センサデータを生成することと、視覚センサデータを低パワー検出プロセスに従って繰り返し処理することと、低パワー検出プロセスによって検出が示された場合に高パワー検出プロセスを実行することとを含み得る。
【0021】
方法は、コンピューティングデバイスのアンビエントコンピューティングシステムが、視覚センサによって生成された視覚センサデータを低パワー検出プロセスに従って繰り返し処理することと、低パワー検出プロセスによって検出が示された場合、コンピューティングデバイスの1つ以上の他のコンポーネントを起動して、視覚センサデータを用いて高パワー検出プロセスを実行することとを含み得る。
【0022】
本開示のさらなる局面によれば、コンピュータプログラム命令でエンコードされる1つ以上のコンピュータ記憶媒体が提供され、コンピュータプログラム命令は、データ処理装置によって実行されると、データ処理装置に第1もしくは第2の局面の動作、または第3の局面の方法を行わせるように動作可能である。
【0023】
第1および第2の局面の文脈において上記に記載した随意の特徴は、同様に上記に記載した第3のおよびさらなる局面と組み合わせて使用され得ることが理解されるであろう。
【0024】
本明細書の主題の1つ以上の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、局面、および利点は、説明、図面、および請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【0025】
図1】例示的なコンピューティングデバイスの図である。
図2】2段階の視覚検出プロセスを実行するための例示的なプロセスのフローチャートである。
【発明を実施するための形態】
【0026】
詳細な説明
さまざまな図面における同様の参照番号および呼称は、同様のコンポーネントを示す。
【0027】
図1は、低パワー視覚センシング能力を有する例示的なコンピューティングデバイス100の図である。デバイス100は、低パワー視覚センサを用いてその環境内の物体に反応し得るデバイスの一例である。デバイス100は、いくつかの例を挙げると、たとえば、スマートフォン、スマートウォッチ、フィットネストラッカー、携帯情報端末、電子タブレット、またはラップトップといった任意の適切なコンピューティングデバイスにおいて実現されるシステムであり得る。
【0028】
コンピューティングデバイス100のシステムは、コンピューティングデバイス100が視覚センサ111からの入力を継続的に処理しながら低電力状態に留まり得るように使用され得る。この文脈において、低電力状態にあるとは、最も強力なコンピューティングコンポーネントのうちの1つ以上が使用されないことを意味し、使用されないとは、これらのデバイスが部分的に電源を切られるまたは完全にオフにされることを意味し得る。たとえば図1において、最も強力なコンポーネントは、メインCPUクラスタ140と、メインマシンラーニング(ML:machine learning)エンジン150と、メイン画像信号プロセッサ(ISP:image signal processor)(160)とを含む。簡潔にするために、これらのコンポーネントをデバイスの高パワーコンポーネントと呼ぶことにする。典型的に、これらのデバイスは、動作時にアンビエントコンピューティングシステム110よりも多くの電力を消費するからである。
【0029】
したがって、デバイス100は、いずれの高パワーコンポーネントも使用することなく、アンビエントコンピューティングシステム110を使用して視覚センサデータを繰り返し処理し得る。しかしながら、低パワー検出がなされたとアンビエントコンピューティングシステム110が判断した場合は、高パワーコンポーネントが起動され得る。本明細書では、起動およびアクティベートという用語は、特定の処理コンポーネントまたは他の電子回路に増加した量の電力を供給することを意味するように使用される。システムは、起動またはアクティベートされている処理コンポーネントまたは他の回路に、それまで電力を供給している場合もあれば、供給していない場合もある。換言すると、起動またはアクティベートされているコンポーネントは、以前に完全に電源を切られている場合もあれば、切られていない場合もある。処理コンポーネントを起動またはアクティベートすることによって、処理コンポーネントがブートプロセスを実行し、処理コンポーネントのための命令およびデータがランダムアクセスメモリにロードされることになる。代替的または付加的には、処理コンポーネントを起動またはアクティベートすることは、以前にサスペンドされた状態から再開することを含み得る。
【0030】
本明細書では、視覚センサデータとは、視覚センサの1つ以上の光センサによって生成されるデータ要素の2次元アレイを指す。各データ要素は、たとえば、赤色、青色、および緑色光についての1つ以上の光強度値を含み得る。したがって、視覚センサデータは、光の各色の生の強度値として格納され得る。代替的または付加的には、各データ要素は、色情報なしの単一の強度値を格納し得る。
【0031】
本明細書では、低パワー検出とは、視覚センサ111によってキャプチャされたデータが低パワー検出モデルに従って処理されていること、および、さらなる処理に着手すべきであることを低パワー検出モデルが示していることを意味する。低パワー検出は、たとえば、低パワーCPU132、低パワーDSP、またはアンビエントMLエンジン134といった処理サブシステム130の低パワーコンポーネントのうちの1つ以上によって行われ得る。
【0032】
低パワー検出がなされた場合、デバイス100は、視覚センサデータ111をさらに処理するために、メインCPUクラスタ140、メインMLエンジン150、またはメインISPのうちの1つ以上を起動し得る。これらのコンポーネントは、より高性能でより洗練されたモデルを用いて視覚センサデータを処理し得る。これらのモデルは、より強力な処理デバイスをも利用するため、より多くの電力を消費することから、高パワー検出モデルと呼ぶことにする。
【0033】
本技術の説明のための一例は、携帯電話のロックを解除するための顔認識の使用である。異なるユーザの顔を確実に区別するために必要な高性能な特徴空間を有する完全な顔認識モデルは、大量の電力を消費する傾向がある。したがって、有限のバッテリ電力を有するデバイス上で、視覚センサによってキャプチャされたすべてのデータに対して完全な顔認識モデルを繰り返し実行することは、非実用的で非効率である。
【0034】
代わりに、アンビエントコンピューティングシステム110は、低パワー検出モデルを用いて、視覚センサ111によってキャプチャされたデータを繰り返し処理し得る。低パワー検出モデルは、より少ない層、より少ない特徴を有するモデルであり得るか、または、より小さい入力フレームに対して動作し得る。したがって、低パワー検出モデルは、個々のユーザを互いに区別するのに必要な高い性能を有しておらず、人間の頭または人間の顔を他の物体から区別することのみが可能であり得る。
【0035】
したがって、このデバイスは、低パワー検出モデルを用いて、特定の人間の頭または顔ではないが、人間の頭または顔に対応するデータを視覚センサ111がキャプチャしているか否かを高い信頼性で示し得る。視覚センサ111が人間の顔のデータをキャプチャしている可能性が高いことを低パワー検出が示した場合、アンビエントコンピューティングシステム110は、高パワーコンポーネントのうちの1つ以上を起動して完全な顔認識モデルを実行することにより、視覚センサ111が特定の人間の顔(たとえば携帯電話の所有者の人間の顔)のデータをキャプチャしているか否かを判断し得る。そして、電話のロックを解除するというシナリオの場合、システムは完全な顔認識モデルの出力を用いることにより、電話のロックを解除すべきか否かを判断し得る。
【0036】
低パワー検出状態では、アンビエントコンピューティングシステム110は、高パワー検出状態にあるときよりも低いフレームレート、低い解像度、またはその両方を用いるように視覚センサ111に命令し得る。たとえば、低パワー検出状態では、視覚センサ110は、わずか10フレーム/秒の140画素解像度でデータをキャプチャし得る。そして高パワー検出状態では、視覚センサ110は、30フレーム/秒の1080画素解像度でデータをキャプチャするように切り替わり得る。
【0037】
この構成は、電力を保存することに加えて、高度な顔認識モデルを使用する能力を提供し続けながらユーザのプライバシーも向上させる。換言すると、低パワー検出状態では、視覚センサ111は、任意の特定の人物を識別するために使用できるほど高い品質のデータをキャプチャしていない。したがって、視覚センサ111によってキャプチャされているデータを読み出すことができるマルウェアによって携帯電話が侵害されたとしても、キャプチャされたデータは、解像度が十分に高くないため、視覚センサ111によってキャプチャされたデータ内の特定の人物を識別するという目的には役に立たないことになる。
【0038】
デバイス100はさらに随意に、一体型カメラ170を含み得、随意に、カメラ170によってキャプチャされた画像を処理するためのメインISP160を含み得る。とりわけ、カメラ170は、視覚センサ111よりもはるかに高い解像能力を含み得る。たとえば、カメラは、10、20または30メガピクセル画像をキャプチャし得るのに対して、視覚センサ111は、高パワー検出モードにあるときでも最大で2メガピクセル画像しかキャプチャし得ない。
【0039】
アンビエントコンピューティングシステム110のアーキテクチャは、ユーザのプライバシーを高めるのにも役立ち得る。特に、アンビエントコンピューティングシステム110は、視覚センサデータがチップの他のコンポーネントに漏洩して、侵害されたソフトウェアプロセスによってアクセスされ得ることがないように設計され得る。
【0040】
したがって、アンビエントコンピューティングシステム110は、アンビエントコンピューティングシステム110のSRAM139に専用フレームバッファ133を割り当て得る。いくつかの実現例では、アンビエントコンピューティングシステム110は、メインCPUクラスタ140またはメインMLエンジン150を実行するスレッドによるアクセスが不可能なSRAM139の部分にフレームバッファを割り当てる。したがって、メインCPUクラスタ140上で実行されるソフトウェアプロセスが侵害されたとしても、侵害されたプロセスは、視覚センサ111によってキャプチャされたデータを格納するフレームバッファ133にアクセスするメカニズムを有していない。なぜなら、メインCPUクラスタ140によって使用される汎用DRAMとは異なり、SRAM139は、任意のユーザコードを決して実行し得ないアンビエントコンピューティングシステム110のコンポーネントによるアクセスのみが可能であるからである。
【0041】
場合によっては、より高品質の検出を提供するために、アンビエントコンピューティングシステムはメインISP160の処理パイプラインを借りることができる。メインISP160は、生画像データを順番に処理する複数の機能コンポーネントのパイプラインを含む、ハードウェアまたはソフトウェアによって実行されるシステムであり得る。たとえば、メインISP160は、線形化、黒レベル補正、レンズシェーディング補正、ホワイトバランスゲイン、およびハイライト回復を適用して最終的な出力画像を生成するモジュールを有し得る。
【0042】
メインISP160の画像処理パイプラインを用いて、フル解像度カメラ170によってキャプチャされた生画像データが処理され得る。さらに、いくつかの実現例では、メインISPの同じ処理パイプラインを用いて、視覚センサ111によってキャプチャされたデータが強化され得る。
【0043】
視覚センサ111によってキャプチャされたデータのデータ漏洩を防止するために、コンピューティングデバイスは、フレームバッファ133からメインISP160へのプライベートな専用チャネル135を有し得る。プライベートな専用チャネルであるとは、デバイス100のアーキテクチャが、チャネル135からの読み出しを行うその他のデバイスを提供しないことを意味する。換言すると、メインCPUクラスタ140上で実行されるスレッドは、プライベートチャネル135に沿って渡されるデータにアクセスするメカニズムを有していない。
【0044】
同様に、デバイス100はさらに、メインISPとメインMLエンジン150との間にプライベートチャネル137を実装し得る。これにより、メインMLエンジン150は、メインISP160を通して実行される高品質データがデバイス100の他のコンポーネントに漏洩して、メインCPUクラスタ140を実行する侵害されたスレッドによって読み出され得ることを防止するチャネル上で、そのようなデータに対して非常に高性能なモデルを実行することができる。
【0045】
異なるパワー検出レベルの別のユースケースは、ある言語から別の言語へのテキストの翻訳である。アンビエントコンピューティングシステム110は、視覚センサによって受信されたデータに対して、低パワー光学文字認識(OCR:optical character recognition)モデルを継続的に実行し得る。低パワー検出を示す低パワーOCRモデルとは、視覚センサ111が、たとえば標識のテキストまたは紙に書かれたテキストを有する画像を撮像していることを意味する。したがって、アンビエントコンピューティングシステム110は、メインMLエンジン150を起動して、視覚センサから認識されたテキストに対して完全な高パワー翻訳モデルを実行し得る。次いで、出力は、たとえばアンビエントディスプレイ上でまたはアンビエントテキスト・トゥ・スピーチモデル上で、ユーザに提供され得る。このように、デバイスは、翻訳すべきテキストを継続的に検索すること、テキストを検出することの両方を実行し得、メインCPUクラスタ140を決して起動させさせることなく、キャプチャされた任意のテキストの完全翻訳を自動的に実行して結果を出力し得る。
【0046】
コンピューティングデバイス100の1つ以上のコンポーネントは、コンピューティングデバイス内のシステムオンチップ(SoC:system on a chip)上で実現され得る。SoCは、単一のシリコン基板上に、または、たとえばシリコンインターポーザ、積層ダイ、または相互接続ブリッジを使用する複数の相互接続されたダイ上に、システムの各コンポーネントを含む集積回路であり得る。メインCPUクラスタ140を含むコンピューティングデバイスの他のコンポーネントは、同じダイ上または別個のダイ上に実装され得る。コンピューティングデバイス100は、センサ112、1つ以上のディスプレイ、バッテリ、および他のコンポーネントを含むコンポーネントを含み得、これらのコンポーネントは、SoCとは別個かつ独立しており、たとえば、共通のハウジング上に搭載され得る。
【0047】
簡潔に述べると、以下にさらに詳細に記載されるように、デバイス100は、コンピューティングデバイスの環境からの入力に基づいてセンサ信号を生成するように構成される多くの周辺センサ112を含む。デバイス100は、システムにおいてコンポーネントへの電力およびセンサ信号の供給を制御するための制御サブシステム120を含む。デバイス100は、センサ信号を処理するとともに出力を生成するための処理サブシステム130を含む。
【0048】
デバイス100はさらに、メインCPUクラスタ140を含む。メインCPUクラスタ140は、処理サブシステム130におけるデバイスとは別個の1つ以上の汎用プロセッサを含むコンピューティングデバイスのコンポーネントである。メインCPUクラスタ140のプロセッサは、一般に、処理サブシステム130におけるデバイスのうちのいずれよりも大きなコンピューティングパワーを有するので、メインCPUクラスタ140のプロセッサも、処理サブシステム130におけるデバイスのうちのいずれよりも多くの電力を消費し得る。
【0049】
デバイス100は随意に、メインマシンラーニング(ML)エンジン150をさらに含み得る。メインMLエンジン150は、1つ以上のマシンラーニングモデルを通じて推論パス(inference pass)を行うように構成される特殊目的の処理デバイスである。各推論パスは、マシンラーニングモデルの入力および学習されたパラメータ値を使用して、学習されたモデルによって予測される1つ以上の出力を生成する。メインMLエンジン150は、1つ以上のコンピュートタイル(compute tile)を含み得る。一般に、コンピュートタイルは、計算のセットを独立して実行するように構成される自己完結型コンピューテーショナルコンポーネント(self-contained computational component)である。マシンラーニングを促進するために使用されるタイルは、典型的に、超並列アーキテクチャを有する。いくつかの実現例では、各コンピュートタイルは計算アレイのグリッドを含み、計算アレイ内の各要素は、数学演算を独立して実行することができる処理要素である。したがって、たとえば、1つの3×3の畳み込みを計算する場合、タイルは9個の計算アレイを並列に使用し、各計算アレイは入力とモデルの重みとの間で16または32のテンソル乗算を並列に実行し得る。複数のコンピュートタイルを有する好適なマシンラーニングエンジンは、本願明細書において参照により援用される米国特許番号第9,710,265号に記載されている。
【0050】
メインMLエンジン150のタイルは、ネットワークに配置され得、かつ、メインMLエンジン150の各タイルがマシンラーニングモデルを通じて推論パスの一部分の動作を行うように構成されるようにプログラムされ得る。たとえば、マシンラーニングモデルがニューラルネットワークである場合、メインMLエンジン150における各タイルは、ニューラルネットワークの1つのレイヤーの計算を行うように構成され得る。
【0051】
メインMLエンジン150は、アンビエントコンピューティングシステム110の処理サブシステム130におけるデバイスのうちのいずれよりも高いパフォーマンスのコンピューティングパワーを提供する。したがって、メインMLエンジン150も、処理サブシステム130におけるデバイスのうちのいずれよりも多くの電力を消費する。
【0052】
処理サブシステム130は随意に、アンビエントマシンラーニングエンジン134を含む。アンビエントMLエンジン134も、アンビエントコンピューティングシステム110内に配置されるとともに、1つ以上のマシンラーニングモデルを通じて推論パスを行うように構成される、特殊目的の処理デバイスである。デバイス100がメインMLエンジン150およびアンビエントMLエンジン134の両方を含む場合、アンビエントMLエンジン134は、より少ないコンピュートタイルを有する。したがって、アンビエントMLエンジン134は、メインMLエンジン150よりも少ない処理パワーを有し、メインMLエンジン150よりも少ない電力を消費する。たとえば、アンビエントMLエンジン134は、1個または2個のタイルとして実現され得る一方、メインMLエンジン150は、8~16個またはそれ以上の相互接続されたタイルを有し得る。
【0053】
上述のように、処理サブシステム130は、アンビエントMLエンジン134を用いて視覚センサデータの低パワー検出を行うことによって電力を節約し得、次いで、完全に有効にされたMLエンジン150を用いて高パワー検出を行い得る。
【0054】
代替的または付加的には、アンビエントコンピューティングシステム110は、メインMLエンジン150を低減電力モードで動作するように再構成し得る。低減電力モードでは、すべてのコンピュートタイルよりも少ないコンピュートタイルが有効にされる。したがって、いくつかのコンピュートタイルは使用されない場合があるが、他のコンピュートタイルは推論パスの異なる部分について繰り返し使用される場合がある。たとえば、システムは、メインMLエンジン150上の単一のタイルを有効にし得、この単一のタイルを用いて、低パワー検出のためのニューラルネットワークのすべてのレイヤーを計算し得る。当然のことながら、単一のタイルを使用することで検出の計算が遅くなるが、その一方で、電力を消費する速度も遅くなる。さらに、上述のように、視覚センサは、低パワー検出のためのより低いフレームレートでデータを生成し得る。したがって、1つのコンピュートタイルを使用することによって処理速度が低下しても、1フレーム当たり1つの推論パスを計算するには十分であり得る。たとえば、メインMLエンジン150内のタイルのうちの2個、4個、8個、16個、またはその他の適切なサブセットを使用する低減電力モードといった他の構成も可能である。
【0055】
メインMLエンジン150の低減電力モードを使用することの利点は、アンビエントMLエンジン134を実装する場合にアンビエントコンピューティングシステム内に別個のコンピュートタイルを含める必要がないので、チップサイズおよびコストが減少することである。
【0056】
図示されていないが、コンピューティングデバイス100は、そのようなコンピューティングデバイス上に一般的に見つけられる1つ以上の他のコンポーネントをさらに含み得、いくつかの例を挙げると、当該他のコンポーネントはたとえば、ディスプレイ、モデム、グラフィック処理ユニット、ディスプレイプロセッサ、または特殊目的の画像プロセッサである。これらのコンポーネントは、以下で説明される低電力状態の間に電源が切られ得、センサ信号がそれらのアクティベーションを必要とするアプリケーションにマッチするとシステムが判断する場合にアクティベートされ得る。
【0057】
デバイス100は、多くの周辺センサ112を含む。周辺センサ112は、1つ以上のオーディオセンサ102と、1つ以上のレーダセンサ104と、1つ以上のタッチセンサ106と、グローバルポジショニングシステム(GPS:Global Positioning System)センサ108と、加速度計110とを含む。システムは、付加的な周辺センサ、より少ない周辺センサ、または、代替的な周辺センサを含み得る。たとえば、システムは、Wi-Fi(登録商標)信号検出器、セルラー信号検出器、気圧計、温度計、磁力計、または他のタイプの周辺センサを含み得る。
【0058】
周辺センサ112は、環境入力に応答してセンサ信号を生成するように構成されるデバイスであり得る。たとえばマイクロフォンといった1つ以上のオーディオセンサ102は、環境における音に基づいて、オーディオ信号を生成し得る。たとえば、オーディオセンサ102は、人間のスピーチに対応するオーディオ信号を生成し得る。1つ以上のレーダセンサ104は、コンピューティングデバイスの送信機によって発せられた後に反射された電波に基づいてレーダ信号を検出し得る。反射された電波における変動は、環境における動きを示し得る。たとえば、レーダセンサ104は、たとえばユーザがコンピューティングデバイスに近接してジェスチャを行っている際にユーザから反射されることによって受け取られるレーダ信号を生成し得る。同様に、1つ以上のタッチセンサ106は、デバイスの存在感知または圧力感知インターフェイス上でコンピューティングデバイスのユーザによって行われるタッチジェスチャによる信号を生成し得る。GPSセンサ108は、受け取られた位置データ通信に応答して信号を生成し得る。加速度計109は、コンピューティングデバイスが受ける加速度による信号を生成し得る。そして上述のように、視覚センサ111は、低パワー検出を行うためのより低い解像度およびフレームレートを有し得る視覚センサデータを生成し得る。本明細書では、センサ信号が他の処理コンポーネントへの入力であると記載される場合はいつでも、当該入力は、センサ自身によって生成されるアナログ電気信号であり得るか、センサ信号のデジタル表現であり得るか、または、オリジナルの信号の1つ以上の特性を表すセンサ信号の処理されたデジタル表現であり得る。コンピューティングデバイス100の周辺センサはさらに、いくつかの他の例を挙げると、慣性測定センサ、気圧計、比吸収率近接センサ(specific absorption rate proximity sensor)、および、WiFiネットワーク名センサ(WiFi network name sensor)を含み得る。
【0059】
アンビエントコンピューティングシステム110は、1つ以上の周辺インターフェイス114を含む。周辺インターフェイス114は、デバイスがその最も低い電力状態にあるときでも電源オンされるコンピューティングデバイス100のコンポーネントであり得る。周辺インターフェイス114は、周辺センサ112から受け取られた入力をアンビエントコンピューティングシステム110によって使用されるセンサ信号に変換するための任意の適切な周辺インターフェイスを含み得る。たとえば、周辺インターフェイス114は、いくつかの例を挙げると、パルス密度変調(PDM:pulse density modulation)インターフェイス、IC間サウンド(inter-IC sound)(I2S)インターフェイス、集積回路間(inter-integrated circuit)(I2C)インターフェイス、I3Cインターフェイス、時分割多重化(TDM:time division multiplexed)インターフェイス、および、シリアル周辺インターフェイス(SPI:serial peripheral interface)を含み得る。
【0060】
周辺インターフェイス114の各々は、環境入力を検出すると、それぞれの割り込みを生成するように構成される。一般に、各割り込みは、たとえば、当該割り込みを担う周辺インターフェイスまたはセンサの識別子といった、センサデータの源を識別し得る。割り込みは、1つ以上の割り込みコントローラ124によって受け取られて処理される。たとえば、割り込みを受け取ると、割り込みコントローラ124は、電力管理ユニット(PMU:power management unit)122およびクロック制御ユニット123を含む電力制御ユニット(PCU:power control unit)121を起動し得る。PMU122は、デバイス100のどのコンポーネントが電力を受け取るかと、各コンポーネントがどのくらいの電力を受け取るかとを制御し得る。クロック制御ユニット123は、デバイス100のコンポーネントが動作する周波数を制御し得る。いくつかの実現例では、各処理コンポーネントは、ベースクロック周波数の倍数または分数である異なるクロック周波数を有する。ベースクロック周波数の倍数または分数であるクロック周波数を有することによって、各処理コンポーネントは、他の処理コンポーネントとより効率的に信号を交換し得る。
【0061】
割り込みを受け取ると、PCU121は、割り込みの源に基づいて、割り込みを引き起こすセンサ信号をさらに処理するためにアンビエントコンピューティングシステム110のどの他のコンポーネントがアクティベートされるべきかを判断し得る。そのようなコンポーネントのための処理のサポートを提供するために、PCU121は、スタティックランダムアクセスメモリ(SRAM:static random access memory)139およびシステム通信ファブリックを起動し得る。ファブリックは、アンビエントコンピューティングシステム110の内部コンポーネントを通信可能に結合する通信サブシステム、外部コンポーネントへのそれらの通信、または、これらの何らかの組み合わせである。ファブリックは、たとえばバスまたは専用の相互接続回路といった通信ハードウェアの任意の適切な組み合わせを含み得る。
【0062】
スタティックランダムアクセスメモリ(SRAM)139は、処理サブシステム130の複数の処理コンポーネントによって共有され得る汎用のランダムアクセスメモリデバイスであり得る。たとえば、SRAM139は、センサ信号と、プロセッサ命令およびデータと、システム出力と、たとえばアンビエントMLエンジン134によって実現されるかまたは実現されることになるニューラルネットワークモデルのニューラルネットワークパラメータといった他のデータとを格納し得る。一般に、SRAMは、周期的にリフレッシュされる必要がないという点で、ダイナミックランダムアクセスメモリ(DRAM:dynamic random-access memory)と区別可能である。以下により詳細に説明するように、SRAM139は、処理サブシステム130における処理コンポーネントに直接的にアクセス可能であるか、または、1つ以上のDMAコントローラを介してアクセス可能である。いくつかの実現例では、SRAM139は、たとえば、各々1MB、10MB、または100MBといった実質的に同様の量のデータを各々格納し得る複数のバンクを含む。さらに、各個々のバンクは、低電力状態に入るときに個々に電源が切られ得る複数のブロックを含み得る。4つのバンク間でブロックの電源が切られる順序を注意深く順序付けることによって、SRAMアドレススペースは連続したままであり得る。
【0063】
PCU121がSRAM139を起動すると、PCU121は、SRAM139のすべてのブロックまたはすべてのメモリバンクよりも少ないブロックまたはメモリバンクを起動し得る。代わりに、PCU121は、処理サブシステム130の次のコンポーネントがデバイス100のコンポーネントの電源投入をさらに増加させるか否かを判断するのに十分な数のブロックのみを起動し得る。
【0064】
PCU121はさらに、SRAM139の異なるブロックに異なる電力レベルを供給し得る。たとえば、モニタリング電力状態では、PMU122は、SRAM139全体に対してより低い保持電圧を供給し得、これによりその電力消費を低減し得る。PMU122はさらに、処理コンポーネントがSRAM139にアクセスする必要がない場合、SRAM139に保持電圧を供給し得る。処理電力状態では、PMU122は、SRAM139のすべてまたは部分に通常の電圧を供給し得、SRAM139の他の部分には低下した電圧を供給するか、または電圧を供給しない。
【0065】
割り込みを処理するプロセスの間、アンビエントコンピューティングシステム110はさらに、1つ以上のDMAコントローラ128を起動し得る。DMAコントローラ128は、入力されるセンサ信号についてより高いデータ帯域幅を可能にするDMA経路を管理し得る。たとえば、DMAコントローラ128は、処理サブシステム130において処理コンポーネントによるアクセスのために、マイクロフォンからSRAM139にオーディオデータを連続的にストリーミングするために使用され得る。反対に、DMAコントローラはさらに、SRAM139に格納されたオーディオデータを1つ以上のスピーカを通じて音として出力するために連続的にストリーミングするように使用され得る。別の例として、DMAコントローラ128は、視覚センサ111からSRAM139に視覚センサデータをストリーミングするために使用され得る。DMAコントローラ128はさらに、任意の適切なセンサデータをSRAM139にストリーミングするために使用され得るが、プログラムされたIOを使用することが、少量のデータのためにDMAコントローラをアクティベートするよりも計算上安価であり得る。したがって、アンビエントコンピューティングシステム110は、たとえば、オーディオデータおよびレーダデータといった相対的に高帯域幅のセンサデータのためにDMAコントローラ128をアクティベートおよび使用し得、他のタイプのセンサデータのためにプログラムされたIOを使用し得る。
【0066】
ファブリックおよびSRAM139を準備した後、PCU121は、処理サブシステム130のどの他のコンポーネントを起動すべきかを判断するために、割り込みを使用し得る。たとえば、PMU122は、低パワーCPU132、低パワーDSP136、または処理サブシステム130の他のコンポーネントに電力が供給されるか否かを、1つ以上のセンサのうちどれが割り込みを生成したかに依存して制御し得る。いくつかの実現例では、周辺インターフェイス114と制御サブシステム120のコンポーネントとのみが、モニタリング電力状態において電源オンされるデバイス100のコンポーネントである。モニタリング電力状態は、システムがコンピューティングデバイスへの環境入力による割り込みを受け取るよう待機している電力状態である。
【0067】
処理サブシステム130の処理コンポーネントは、低パワーCPU132、アンビエントMLエンジン134、低パワーDSP136、および高パワーDSP138を含む。いくつかの実現例では、処理サブシステムは、たとえば、複数の低パワーDSPまたは複数の高パワーDSPといったこれらのコンポーネントのうちの1つ以上のうちの複数のインスタンスを有する。たとえば、処理サブシステム130は、オーディオ信号を処理するために専用である1つの高パワーDSPと、レーダ信号を処理するために専用である別個の高パワーDSPとを有し得る。代替的または付加的には、処理サブシステム130は、視覚センサ111によって生成された視覚センサデータを処理するために専用である高パワーDSPを有し得る。
【0068】
モニタリング電力状態では、処理サブシステム130における処理コンポーネントは、保持モードで維持され得る。PCU121は、コンポーネントに供給される電力を低減または除去することによって、コンポーネントを保持モードに維持し得る。たとえば、保持モードでは、PCU121は、レジスタ状態を維持するのに十分な電力だけを処理コンポーネントに供給し得るが、レジスタにおいてデータを処理するのに十分な電力は供給しない。
【0069】
低パワーCPU132は、レジスタ、制御回路、および算術論理演算装置(ALU:arithmetic logic unit)を含む汎用のプログラマブルプロセッサであり得る。一般に、低パワーCPU132は、コンピューティングデバイスのメインCPUクラスタ140よりも少ない電力を消費し、より少ない処理コアを含み得る。いくつかの実現例では、低パワーCPU132は、主に、単一の命令および単一のデータ入力に対して動作するスカラープロセッサである。
【0070】
低パワーDSP136および高パワーDSP138は、高度にベクトル化された信号(highly-vectorized signals)の効率的なデコーディングおよび処理のために構成される特殊目的のプロセッサであり得る。処理サブシステム130は、異なる目的のために設計されたさまざまなDSPを含み得る。たとえば、処理サブシステム130は、いくつかの例を挙げると、視覚センサデータを処理するように構成されるDSPと、オーディオ信号を処理するように構成されるDSPと、データプレーンアルゴリズムを行うように構成されるDSPと、無線通信信号を処理するように構成されるDSPと、GPS信号を処理するように構成されるDSPとを含み得る。一般に、高パワーDSPは、低パワーDSPよりも高いレベルの電力を消費する。その理由は、高パワーDSPは、よりアクティブなレジスタを有すること、多くのデータに並列にアクセスするとともに当該データを並列に処理すること、メモリ動作により多く依存すること、または、これらの何らかの組み合わせである。
【0071】
動作時、低パワーCPU132は、システムが処理電力状態に入ると、割り込みおよびセンサ信号を受け取り得る。低パワーCPU132が受け取るセンサ信号のタイプと、それらのセンサ信号の特性とに基づいて、低パワーCPU132は、たとえば、通信ファブリック、DMAコントローラ128、SRAM139、またはこれらの何らかの組み合わせといったシステムの他のコンポーネントがアクティベートされるべきと判断し得る。これらのコンポーネントをアクティベートした後、低パワーCPU132は随意に非動作状態に戻り得る。
【0072】
低パワー検出をサポートするために、低パワーCPU132は、視覚センサデータを受け取ると処理サブシステム130の他のコンポーネントを起動し得る。上述のように、これは、アンビエントMLエンジン134を起動して、SRAM139のフレームバッファ133に格納された視覚センサデータに対して低パワー検出を行うことを含み得る。代替的または付加的には、低パワーCPU132は、すべてのタイルよりも少ないタイルが有効にされる低電力モードでメインMLエンジン150を起動し得る。次いで、低パワーCPU132は、フレームバッファ133内のデータをメインMLエンジン150にストリーミングして低パワー検出を行い得る。
【0073】
いくつかの実現例では、視覚センサデータはまず、処理サブシステムの1つ以上のコンポーネントによって実行されるソフトウェア画像処理パイプラインによって前処理される。たとえば、低パワーDSP136または高パワーDSP138は、画像処理パイプラインの1つ以上の段階を実行することにより、視覚センサデータが低パワー検出に使用される前に視覚センサデータを強化し得る。これらのコンポーネントは、SRAM139の一部に格納された命令を用いて画像処理パイプラインを実行し得る。
【0074】
いくつかの他の実現例では、視覚センサデータは特殊目的の画像処理デバイスによって前処理される。たとえば、高パワーDSP138は、視覚センサデータを処理するように特別に設計された2次元DSPであり得る。高パワーDSP138は、低パワー検出のために視覚センサ111が生成する解像度およびフレームレートと同じ解像度およびフレームレートで動作するように構成され得る。
【0075】
低パワー検出の結果が肯定的である場合、低パワーCPU132は、さらに高パワーのコンポーネントを起動して高パワー検出プロセスを実行し得る。これは、メインCPUクラスタ140、メインMLエンジン150、メインISP160、またはこれらの何らかの組み合わせを起動することを含み得る。代替的または付加的には、高パワー検出は、たとえば高パワーDSP138などのアンビエントコンピューティングシステム110の別のコンポーネントによって行われ得る。上述のように、高パワー検出は、メインISP160またはアンビエントコンピューティングシステム110の別のコンポーネントによって実現される画像処理パイプラインによって前処理される視覚センサデータに対して動作し得る。画像前処理がメインISP160によって行われる場合、アンビエントコンピューティングシステム110は、低パワー検出が肯定的であったという表示を受信するとメインISP160を起動し得る。画像前処理がアンビエントコンピューティングシステム110の別のコンポーネントによって行われる場合は、結果の精度が低下し得るが、メインISP160の電源を入れる必要がないという利点がある。制御サブシステム120はさらに、システム異常を検出し、それらの異常を解決し得る電子タイマであるタイマ129を含み得る。通常動作中、システムはタイマ129を定期的にリセットして、タイマ129がタイムアウトするのを防止し得る。たとえば、ハードウェアの故障またはプログラムエラーによりシステムがタイマをリセットするのを失敗すると、タイマは、時間経過してタイムアウト信号を生成する。タイムアウト信号は、1つ以上の修正アクションを開始するために使用され得る。修正アクションは、システムを安全な状態に置くことと、通常のシステム動作を回復することとを含み得る。
【0076】
図2は、2段階の視覚検出プロセスを実行するための例示的なプロセスのフローチャートである。上述のように、アンビエントコンピューティングシステムは、低パワー処理コンポーネントを用いて視覚センサデータに対して低パワー検出プロセスを実行し、検出が示された場合、高パワー処理コンポーネントを用いて高パワー検出プロセスを実行し得る。この例示的なプロセスは、視覚センサと、低パワー処理コンポーネントと、高パワー処理コンポーネントとを有するシステム(たとえば図1のコンピューティングデバイス100)によって行われるものとして説明される。
【0077】
システムは、視覚センサを用いて視覚センサデータを生成する(210)。
システムは、低パワー処理コンポーネントを用いて低パワー検出プロセスを実行する(220)。上述のように、低パワー処理コンポーネントは、アンビエントコンピューティングシステム上のデバイスのうちのいずれか、または部分的に有効にされるメインMLエンジンであり得る。一般に、低パワー処理コンポーネントは、完全に有効にされたときのメインCPUクラスタまたはメインMLエンジンよりも少ない電力を消費する。さらに、低パワー検出プロセス時に、視覚センサは、より低いフレームレートで、より低い解像度で、またはその両方でデータを生成するように構成され得る。
【0078】
低パワー検出プロセスによって検出が示されない場合(230)、システムは、次にキャプチャされた視覚センサデータを用いて低パワー検出プロセスを再び繰り返す(220に分岐)。
【0079】
低パワー検出プロセスによって検出が示された場合(230)、システムは高パワー処理コンポーネントを起動する(240に分岐)。上述のように、これは、これまで電力が供給されていなかった高パワー処理コンポーネントに電力を供給すること、高パワー処理コンポーネントへの電力を増加させること、または高パワー処理コンポーネントの追加機能を有効にすることを意味し得る。たとえば、システムは、マシンラーニングエンジンの追加のコンピュートタイルを起動し得る。
【0080】
システムは、高パワー処理コンポーネントを用いて高パワー検出プロセスを実行する(250)。上述のように、高パワー処理コンポーネントは、メインMLエンジンまたはアンビエントコンピューティングシステムのDSPであり得る。高パワー検出プロセスは、すでにキャプチャされた視覚センサデータ、または更新された視覚センサデータのいずれか一方を使用し得る。
【0081】
高パワー検出プロセスによって検出が示されない場合(260)、システムは再び高パワー処理コンポーネントの電源を切ってその元の状態に戻し(280に分岐)、次にキャプチャされた視覚センサデータを用いて低パワー検出プロセスを繰り返し得る(220)。代替的または付加的には、システムは、高パワー検出プロセスを複数回繰り返してから、低パワー検出プロセスを実行するように切り替わり得る。
【0082】
高パワー検出プロセスによって検出が示された場合(260)、システムは処理コンポーネントを呼び出して高パワー検出を処理し得る(270に分岐)。たとえば、電話のロックを解除するシナリオでは、システムはメインCPUクラスタを呼び出して電話のロックを解除し得る。
【0083】
いくつかのアプリケーションについては、システムは、高パワー検出プロセスの結果にかかわらず、処理コンポーネントを呼び出して当該プロセスの出力を処理する。たとえば、自動テキスト翻訳のアプリケーションでは、システムは、高パワーテキスト翻訳プロセスの結果にかかわらず、当該プロセスの結果をデバイスのディスプレイに繰り返し出力し得る。
【0084】
本明細書において説明される主題ならびにアクションおよび動作の実施形態は、デジタル電子回路、有形に具現化されるコンピュータソフトウェアもしくはファームウェア、本明細書において開示される構造およびそれらの構造的均等物を含むコンピュータハードウェア、または、それらのうちの1つ以上の組み合わせにおいて実現され得る。本明細書において説明される主題の実施形態は、1つ以上のコンピュータプログラムとして実現され得る。すなわち、データ処理装置による実行のために、または、データ処理装置の動作を制御するために、有形の一時的でない記憶媒体上にエンコードされたコンピュータプログラム命令の1つ以上のモジュールとして実現され得る。代替的または付加的には、プログラム命令は、たとえば、データ処理装置による実行のために好適なレシーバ装置への送信のために情報をエンコードするために生成される、マシンによって生成される電気信号、光学信号、または、電磁信号といった人工的に生成された伝搬信号上でエンコードされ得る。コンピュータ記憶媒体は、マシン読み取り可能ストレージデバイス、マシン読み取り可能ストレージ基板、ランダムもしくはシリアルアクセスメモリデバイス、または、それらの1つ以上の組み合わせであり得るか、またはそれらの一部分であり得る。コンピュータ記憶媒体は伝搬信号ではない。
【0085】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードとも称され得るまたは記載され得るコンピュータプログラムは、コンパイルされた言語もしくは解釈された言語または宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述され得、スタンドアロンプログラムまたはモジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境において実行するのに好適な他のユニットを含む任意の形態でデプロイされ得る。当該環境は、1つ以上の位置におけるデータ通信ネットワークによって相互接続された1つ以上のコンピュータを含み得る。
【0086】
コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。コンピュータプログラムは、たとえばマークアップ言語ドキュメントに格納される1つ以上のスクリプトといった他のプログラムまたはデータを保持するファイルの部分に格納され得るか、対象のプログラム専用の単一のファイルに格納され得るか、または、たとえば1つ以上のモジュール、サブプログラム、もしくはコードの部分を格納するファイルといった複数の協調されたファイルに格納され得る。
【0087】
ユーザとのインタラクションを提供するために、本明細書で説明される主題の実施形態は、たとえばLCD(液晶ディスプレイ)モニタといったユーザに情報を表示するためのディスプレイデバイスと、たとえばキーボードおよびマウス、トラックボールまたはタッチパッドのようなポインティングデバイスといった、ユーザがコンピュータに入力を提供し得る入力デバイスとを有するコンピュータ上で実現され得るか、または、当該コンピュータと通信するように構成され得る。他の種類のデバイスも、ユーザとのインタラクションを提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックといった任意の形態の感覚フィードバックであり得る。さらに、ユーザからの入力は、音響入力、スピーチ入力、または触覚入力を含む任意の形態で受け取られ得る。さらに、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送り、デバイスからドキュメントを受け取ることによって、ユーザとインタラクションし得る。たとえば、ウェブブラウザから受け取られる要求に応答してユーザのデバイス上のウェブブラウザにウェブページを送ることによって、または、たとえばスマートフォンもしくは電子タブレットといったユーザデバイス上で実行されるアプリとインタラクションすることによって、ユーザとインタラクションし得る。さらに、コンピュータは、テキストメッセージまたは他の形態のメッセージを、たとえばメッセージングアプリケーションを実行しているスマートフォンといったパーソナルデバイスに送り、応答メッセージをユーザから返報として受け取ることによって、ユーザとインタラクションし得る。
【0088】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含むコンピューティングシステムにおいて実現され得るか、たとえばアプリケーションサーバといったミドルウェアコンポーネントを含むコンピューティングシステムにおいて実現され得るか、たとえばクライアントデバイスといった、ユーザが本明細書に記載される主題の実現例とインタラクションし得るグラフィカルユーザインターフェイス、ウェブブラウザもしくはアプリを有するフロントエンドコンポーネントを含むコンピューティングシステムにおいて実現され得るか、または、1つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムにおいて実現され得る。システムのコンポーネントは、たとえば通信ネットワークといったデジタルデータ通信の任意の形態または媒体によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(LAN:local area network)と、たとえばインターネットといったワイドエリアネットワーク(WAN:wide area network)とを含む。
【0089】
コンピューティングシステムはクライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いにリモートであり、典型的に通信ネットワークを介してインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されるとともに互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態において、サーバは、たとえば、クライアントとして機能するデバイスとインタラクションするユーザにデータを表示し、当該ユーザからのユーザ入力を受け取るために、たとえばHTMLページといったデータをユーザデバイスに送信する。たとえばユーザインタラクションの結果といったユーザデバイスにおいて生成されたデータは、サーバにおいてデバイスから受け取られ得る。
【0090】
本明細書は、多くの具体的な実現例の詳細を含むが、これらは、任意の発明の範囲または請求されているかまたは請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書に記載されているある特徴はさらに、単一の実施形態において組み合わせて実現され得る。反対に、単一の実施形態の文脈で記載されるさまざまな特徴はさらに、複数の実施形態において別々に、または任意の適切なサブコンビネーションで実現され得る。さらに、特徴は、ある組み合わせにおいて作用し、最初はそのようなものとして請求されると上で記載され得るが、請求される組み合わせからの1つ以上の特徴は、いくつかの場合、その組み合わせから取り除かれ得、請求項は、サブコンビネーションまたはサブコンビネーションの変形例に向けられ得る。
【0091】
同様に、動作は、図面に示され、請求の範囲において特定の順序で記載されているが、これは、望ましい結果を達成するために、そのような動作が、示された特定の順序もしくは順次の順序で実行される必要がある、または、すべての例示された動作が実行される必要があると理解されるべきではない。ある状況では、マルチタスクおよび並列処理が有利であり得る。さらに、上述の実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載されるプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一緒に統合され得るか、または、複数のソフトウェア製品にパッケージ化され得ると理解されるべきである。
【0092】
主題の特定の実施形態を説明してきた。他の実施形態は、添付の請求の範囲内である。たとえば、請求の範囲に記載されるアクションは、異なる順序で行われ得、それでも望ましい結果を達成し得る。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、必ずしも、示される特定の順序または順次の順序を必要としない。いくつかの場合では、マルチタスクおよび並列処理が有利であり得る。
図1
図2