(57)【要約】      （修正有）【課題】畳み込みニューラルネットワーク計算スループットを加速化する技術を提供する。【解決手段】畳み込みニューラルネットワーク（ＣＮＮ）コンポーネントにおいて、畳み込みコンポーネントは、１つ又は複数の画像からデータを抽出する畳み込み演算を実行し、且つデータを１つ又は複数の正規化線形関数（ＲＥＬＵ）に提供する。ＲＥＬＵは、非線形畳み込み出力データを生成する。プーリングコンポーネントは、非線形畳み込み出力データのサブセットのプーリングウィンドウに基づくパイプラインプロセスを介して、畳み込み演算と並行してプーリング出力を生成する。全結合（ＦＣ）コンポーネントは、並行して動作する別のパイプラインプロセスを介して出力されたプーリング出力に基づいて人工ニューラルネットワーク（ＡＮＮ）出力を提供し、且つＡＮＮ出力に基づいて１つ又は複数の画像におけるパターンの認識を可能にする。【選択図】図１８
2019079505.tif 000002
【特許請求の範囲】
【請求項１】
畳み込みニューラルネットワーク（ＣＮＮ）のためのシステムであって、
１つ又は複数の画像からデータを抽出し、且つ非線形畳み込み出力データを出力するように構成される１つ又は複数の正規化線形関数（ＲＥＬＵ）に前記データを提供する畳み込み演算を実行するように構成される畳み込みコンポーネントと、
前記非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、前記畳み込み演算と並行してパイプラインプロセスを介してプーリング出力を生成するように構成されるプーリングコンポーネントと、
前記プーリング出力に基づいてＡＮＮ出力を提供する人工ニューラルネットワーク（ＡＮＮ）を形成し、且つ前記ＡＮＮ出力に基づいて前記１つ又は複数の画像におけるパターンの認識を可能にするように構成される全結合（ＦＣ）コンポーネントと
を含むシステム。
【請求項２】
前記プーリングコンポーネントは、前記プーリングウィンドウの可用性を特定し、且つ前記非線形畳み込み出力データの異なるサブセットに対応する複数のプーリングウィンドウを処理するように更に構成される、請求項１に記載のシステム。
【請求項３】
前記ＦＣコンポーネントは、ニューロンの後続層に結合されるニューロンの第１の層を含み、前記第１の層及び前記後続層のニューロンは、ネット関数出力を提供するように構成されるネット関数ノードと、前記ネット関数出力から出力関数出力を生成するように構成される出力関数ノードとをそれぞれ含む、請求項１に記載のシステム。
【請求項４】
前記ニューロンの第１の層は、少なくとも１つの先行層から、プーリング出力、前記畳み込みコンポーネントからの前記データ、又は前記非線形畳み込み出力データの少なくとも１つを含む出力を受け取る同じネット関数入力の第１の集合を有する第１のニューロンをそれぞれ含み、及び前記ニューロンの後続層は、前記ニューロンの第１の層から同じ出力を受け取る同じネット関数入力の第２の集合を有する第２のニューロンをそれぞれ含む、請求項３に記載のシステム。
【請求項５】
前記ネット関数ノードは、それぞれ入力及び前記入力に関連する重みのドット積乗算及び対応する結果の合算を実行するように構成され、及び前記出力関数ノードは、前記ネット関数出力に活性化関数を実行して、ＦＣコンポーネントの出力を提供するように構成され、第１のニューロンの前記出力関数ノードは、別のパイプラインプロセスを介して第２のニューロンの前記ネット関数ノードと並行して動作する、請求項３に記載のシステム。
【請求項６】
前記プーリングコンポーネントは、前記非線形畳み込み出力データのボリュームの低減を生成し、且つ前記非線形畳み込み出力データを処理して、前記ＦＣコンポーネントに提供される前記プーリング出力としてスケーリング不変データにするように更に構成される、請求項１に記載のシステム。
【請求項７】
前記畳み込みコンポーネントとの前記プーリングコンポーネントの前記パイプラインプロセスに対応する１つ又は複数の第１のテーブルを含む観測ユニットコンポーネントと、前記畳み込みコンポーネントによる、前記１つ又は複数の第１のテーブル内にあるメモリロケーションへの書き込み動作を検出し、且つ前記畳み込みコンポーネントが前記１つ又は複数の第１のテーブル内の前記メモリロケーションへの前記書き込み動作を実行することに応答して、前記プーリングコンポーネントの統計学的演算をトリガーし、且つ前記１つ又は複数の第１のテーブルから前記プーリングコンポーネントへの複数の出力を生成するように構成されるトランザクションウォッチコンポーネントとを更に含む、請求項１に記載のシステム。
【請求項８】
前記複数の出力は、前記プーリングウィンドウに関連するマーカを識別する前記１つ若しくは複数の第１のテーブルの畳み込みウォッチアドレスに関連するプーリング入力アドレス、前記プーリングコンポーネントの前記演算への前記トリガー、前記統計学的演算の結果を有する前記１つ若しくは複数の第１のテーブル内のアドレスを指すプーリング出力アドレス、又は前記１つ若しくは複数の第１のテーブルを前記プーリングコンポーネントに関連付ける畳み込み層識別子（ＩＤ）の少なくとも１つを含む、請求項７に記載のシステム。
【請求項９】
前記ＦＣ層に関連する第２のテーブルは、前記ＦＣコンポーネントのネット関数ノードのネット関数出力に対応するニューロンネット関数出力アドレス、出力関数ノードのＡＮＮ出力に対応するニューロン活性化出力アドレス、及び前記出力関数ノードによって実行される活性化関数の少なくとも１つを含む、請求項７に記載のシステム。
【請求項１０】
畳み込みニューラルネットワーク（ＣＮＮ）のための装置であって、
メモリに結合される１つ又は複数のプロセッサ
を含み、前記メモリは、前記１つ又は複数のプロセッサの動作を実行する命令を含み、前記１つ又は複数のプロセッサは、
１つ又は複数の画像から、１つ又は複数のフィルタカーネルを介して、畳み込みデータセットを含むデータ特徴を抽出することと、
前記畳み込みデータセットを非線形出力データの集合に変換することと、
前記非線形出力データの集合のうちの非線形データの第１の集合又は前記畳み込みデータセットの畳み込みデータの第１の集合が利用可能であると判断することに応答して、前記データ特徴の抽出又は前記畳み込みデータセットの変換の少なくとも一方と並行して動作するパイプラインプロセスを介して、前記非線形出力データの集合に対するプーリング演算からプーリング出力を生成することと
を行うように構成される、装置。
【請求項１１】
前記１つ又は複数のプロセッサは、前記１つ又は複数の画像の部分にわたってスライドする１つ又は複数の畳み込みウィンドウを用いてスライド畳み込みを実行することにより、前記データ特徴を抽出して、前記１つ又は複数の画像の特徴マップを生成し、且つ前記１つ又は複数の畳み込みウィンドウに対応するデータ特徴が存在する確率を特定するように更に構成される、請求項１０に記載の装置。
【請求項１２】
前記１つ又は複数のプロセッサは、前記畳み込みデータセットの畳み込みデータの前記第１の集合を処理して、プーリングウィンドウに基づいて畳み込みデータのスケーリング不変集合にするプーリング演算と並行した畳み込み演算を介して、前記１つ又は複数の画像から前記畳み込みデータセットの畳み込みデータの第２の集合を抽出するように更に構成される、請求項１０に記載の装置。
【請求項１３】
前記１つ又は複数のプロセッサは、前記非線形データの集合に対応する前記プーリング出力をカテゴリに分類することにより、全結合（ＦＣ）コンポーネントを介して前記プーリング出力を処理するように更に構成される、請求項１０に記載の装置。
【請求項１４】
前記１つ又は複数のプロセッサは、
ニューロンネット関数出力を生成する第１のＦＣコンポーネントにおける、入力と重みとのドット積及び前記プーリング出力からの加重入力の和を含むネット関数を実行することと、
前記第１のＦＣコンポーネントにおける前記ニューロンネット関数出力に対して出力関数を実行して、後続するＦＣコンポーネントにおける別のドット積及び前記プーリング出力からの前記入力の別の和を含む別のネット関数の実行と並行してニューロン活性化関数出力を生成して、第２のニューロンネット関数出力を生成することと
を行うように更に構成される、請求項１３に記載の装置。
【請求項１５】
前記第１のＦＣコンポーネント及び前記後続するＦＣコンポーネントは、前記メモリから命令をフェッチすることなく、且つ前記プーリング出力からの入力データ又は先行するＦＣコンポーネントがニューロン入力において利用可能であることに応答して動作するデータフロープロセスを含む、請求項１４に記載の装置。
【請求項１６】
前記１つ又は複数のプロセッサは、ネット関数出力に対応するニューロンネット関数出力アドレス、ニューロンの出力に対応するニューロン活性化関数出力アドレス、及び前記ニューロンの出力関数によって実行される活性化関数のエントリを含むテーブルを埋めて、前記ネット関数出力に基づいて前記ニューロンの前記出力を生成するように更に構成される、請求項１０に記載の装置。
【請求項１７】
畳み込みニューラルネットワーク（ＣＮＮ）のための方法であって、
１つ又は複数のプロセッサを介して、１つ又は複数の画像からデータを抽出する畳み込み演算を実行することと、
前記１つ又は複数のプロセッサを介して、非線形畳み込み出力データを生成するように構成される１つ又は複数の正規化線形関数（ＲＥＬＵ）に前記データを提供することと、
前記１つ又は複数のプロセッサを介して、前記非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、畳み込み演算と並行してプーリング出力を生成することと、
前記１つ又は複数のプロセッサを介して、前記プーリング出力に基づいて人工ニューラルネットワーク（ＡＮＮ）のＡＮＮ出力を提供することと
を含む方法。
【請求項１８】
前記プーリングウィンドウの可用性の判断を生成し、且つ前記非線形畳み込み出力データの異なるサブセットに対応する複数のプーリングウィンドウを処理することを更に含む、請求項１７に記載の方法。
【請求項１９】
前記ＡＮＮの第１の全結合（ＦＣ）層において、第１のネット関数ノードの第１のネット関数出力を第１の出力関数ノードに提供することと、
前記ＡＮＮ出力を生成するように構成される後続するＦＣ層の第２のネット関数ノードに前記第１の出力関数ノードの第１の出力関数出力を提供することと
を更に含む、請求項１７に記載の方法。
【請求項２０】
前記第１のネット関数ノードのうちの第１のネット関数ノードの完成を判断することと、
前記完成に応答して、前記第１のＦＣ層の出力関数を生成する第１の出力ネットワークノードと並行して前記第２のネット関数ノードの第２のネット関数を開始することと
を更に含む、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ニューラルネットワークの分野におけるものであり、より詳細には、畳み込みニューラルネットワークのスループットの増大の分野におけるものである。
【背景技術】
【０００２】
機械学習では、畳み込みニューラルネットワーク（ＣＮＮ又は畳み込みネット）は、ニューロン間の接続パターンが動物の視角野の組織により示唆されるフィードフォワード人工ニューラルネットワークの一種である。個々の皮質ニューロンは、各野として知られる空間の限られた領域における刺激に応答する。異なるニューロンの各野は、視野をタイリングするように部分的に重複する。その各野内の刺激への個々のニューロンの応答は、畳み込み演算により数学的に近似することができる。畳み込みネットワークは、生物学的プロセスにより示唆され、最小量の事前処理を使用するように設計された多層知覚の変形である。畳み込みネットワークは、画像及びビデオ認識、レコメンダシステム、並びに自然言語処理において幅広い用途を有する。畳み込みニューラルネットワークは、シフト不変又は空間不変人工ニューラルネットワーク（ＳＩＡＮＮ）としても既知であり得、この名称は、重み共有アーキテクチャ及び並進不変特性に基づく。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ＣＮＮは、様々な計算層、すなわち畳み込み層、正規化線形関数（ＲＥＬＵ）層、プーリング層、全結合（ＦＣ）層、及び出力層で構成することができる。これらのＣＮＮ層は、画像処理技法上に構築される人工知能プロセスを使用して判断を下すように動作する。チップセット供給業者は、畳み込み層にフォーカスすることによりＣＮＮスループットの加速化に成功した。チップセット供給業者は、より多くのシングルインストラクションマルチプルデータ（ＳＩＭＤ）積和（ＳＩＭＤ  ＭＡＣ）ユニットを追加すると共に、デジタル信号プロセッサ（ＤＳＰ）がはるかに高い周波数で動作することを可能にした。供給業者によっては、強力なスキャッターギャザー直接メモリアクセス（ＤＭＡ）を提供するものもあり、これは、二次元（２Ｄ）畳み込みにとって有利であり得る。しかしながら、これまでの解決策は、切り替え消費電力の増大に繋がり得る。
【図面の簡単な説明】
【０００４】
【図１】記載される様々な態様（実施形態）による畳み込みニューラルネットワーク（ＣＮＮ）システムを示すブロック図を示す。
【図２】記載される様々な態様によるＣＮＮを示すブロック図を示す。
【図３】記載される様々な態様による畳み込み演算及び幾つかの関連するコンポーネントの態様の図を示す。
【図４】記載される様々な態様によるプーリング演算の態様の図を示す。
【図５】記載される様々な態様による畳み込み及びプーリング演算の態様の別の図を示す。
【図６】記載される様々な態様によるＣＮＮの特定のコンポーネントの実行のクロノグラフを示す。
【図７】記載される様々な態様によるＣＮＮのコンポーネントのデータフロープロセッサを示すブロック図である。
【図８】記載される様々な態様による制御フロー処理エンジンとデータフロー処理エンジンとの間の仕切りを示すブロック図である。
【図９】記載される様々な態様によるＣＮＮの観測ユニットコンポーネントを示すブロック図である。
【図１０】記載される様々な態様によるＣＮＮのコプロセッサ又はコンポーネントアーキテクチャを示すブロック図である。
【図１１】記載される様々な態様によるプロセスフローを示す流れ図である。
【図１２】記載される様々な態様によるＣＮＮの全結合（ＦＣ）層を示すブロック図である。
【図１３】記載される様々な態様によるＣＮＮの全結合（ＦＣ）層を示す別のブロック図である。
【図１４】記載される様々な態様によるＣＮＮの全結合（ＦＣ）層を示す別のブロック図である。
【図１５】記載される様々な態様によるＣＮＮの観測ユニットコンポーネントの詳細を示すブロック図である。
【図１６】記載される様々な態様によるＣＮＮのコプロセッサ又はコンポーネントアーキテクチャを示すブロック図である。
【図１７】記載される様々な態様による別のプロセスフローを示す流れ図である。
【図１８】記載される様々な態様によるプロセスフローを示す流れ図である。
【発明を実施するための形態】
【０００５】
ここで、本開示が添付図面図を参照して説明され、添付図面図では、全体を通して同様の参照符号が同様の要素を指すために使用され、示される構造及びデバイスは、必ずしも一定の縮尺で描かれているわけではない。本明細書で利用する場合、「コンポーネント」、「システム」、「インターフェース」等の用語は、コンピュータ関連エンティティ、ハードウェア、ソフトウェア（例えば、実行における）、及び／又はファームウェアを指すことが意図される。例えば、コンポーネントは、プロセッサ、プロセッサで実行中のプロセス、コントローラ、オブジェクト、実行可能ファイル、プログラム、記憶装置、及び／又は処理デバイスを有するコンピュータであり得る。例示として、サーバで実行中のアプリケーション及びサーバもコンポーネントであり得る。１つ又は複数のコンポーネントは、プロセス内に存在することができ、コンポーネントは、１つのコンピュータに局所化されてもよく、及び／又は２つ以上のコンピュータ間で分散してもよい。要素の集合又は他のコンポーネントの集合が本明細書に記載され得るが、「集合」という用語は、「１つ又は複数」として解釈することができる。
【０００６】
更に、これらのコンポーネントは、例えば、モジュール等の様々なデータ構造が記憶された様々なコンピュータ可読記憶媒体から実行することができる。コンポーネントは、１つ又は複数のデータパケット（例えば、ローカルシステム内、分散システム内、及び／又はインターネット、ローカルエリアネットワーク、広域ネットワーク若しくは他のシステムとの同様のネットワーク等のネットワークを介して別のコンポーネントと信号を介して対話するあるコンポーネントからのデータ）を有する信号等に従って、ローカル及び／又はリモートプロセッサを介して通信することができる。
【０００７】
別の例として、コンポーネントは、電気回路又は電子回路により動作する機械部品により提供される特定の機能を有する装置であり得、電気回路又は電子回路は、１つ又は複数のプロセッサにより実行されるソフトウェアアプリケーション又はファームウェアアプリケーションにより動作し得る。１つ又は複数のプロセッサは、装置の内部又は外部にあることができ、ソフトウェア又はファームウェアアプリケーションの少なくとも一部を実行することができる。更に別の例として、コンポーネントは、機械部品のない電子コンポーネントを通して特定の機能を提供する装置であり得、電子コンポーネントは、少なくとも部分的に、電子コンポーネントの機能を与えるソフトウェア及び／又はファームウェアを実行する１つ又は複数のプロセッサを含むことができる。
【０００８】
例示的なという用語の使用は、概念を具体的に提示することを意図する。本願で使用される場合、「又は」という用語は、排他的「論理和」ではなく、包括的「論理和」を意味することが意図される。すなわち、別段の指定がない限り又は文脈から明らかではない限り、「Ｘは、Ａ又はＢを利用する」は、自然な包括的置換のいずれかを意味することが意図される。すなわち、ＸがＡを利用する場合、ＸがＢを利用する場合、又はＸがＡ及びＢの両方を利用する場合、「Ｘは、Ａ又はＢを利用する」は、上記事例のいずれの下でも満たされる。加えて、本願及び特許請求の範囲で使用される場合、冠詞「１つの（ａ）」及び「１つの（ａｎ）」は、一般に、単数形を示す別段の指定がない限り又は文脈から明らかではない限り、「１つ又は複数」を意味するものと解釈すべきである。更に、「包含している」、「包含する」、「有している」、「有する」、「備える」という用語又はその変形が詳細な説明及び特許請求の範囲のいずれかで使用される限り、そのような用語は、「含む」という用語と同様に包括的であることが意図される。
【０００９】
ＣＮＮの上記定義を考慮して、様々な態様／実施形態は、様々なＣＮＮ計算層にわたる計算総利得の増大を可能にする。本開示の解決策として機能する態様／実施形態は、コストを上げることなく、ＣＮＮシステム内のコストを下げながら消費電力を低減し、スループットを増大する。本明細書に記載される実施形態又は態様は、ＣＰＵ周波数を上げず、追加のＣＰＵのコストを追加せずに、プーリング層及びＦＣ層の実行を加速化する。したがって、開示される方法及びシステムは、消費電力を上げることによらずに効率を更に上げ、処理速度を更に上げることができる。例えば、畳み込み層及びプーリング層の実行は、互いにパイプライン化することができ、データフロープロセッサが利用可能時に直ちに畳み込み／ＲＥＬＵ層出力のセクタの処理を開始できるようにすることにより、大きい加速利得をもたらす。
【００１０】
更に、ＦＣ層実行は、ニューラルネットワークを形成するコンポーネント又はコンポーネントのＦＣ層とパイプライン化することもできる。これは、畳み込み／ＲＥＬＵ層及びプーリング層間のパイプライン処理と一緒に追加の加速利得に更に寄与する。
【００１１】
実行パイプライン化は、データフロー処理動作原理を使用することにより達成することができる。例えば、良好にトレーニングされたＣＮＮは、運転支援システムが、エンジン速度の低減、ブレーキ、停止、又は自動車の運転の安全性若しくは他のＣＮＮシステムのいずれかに関連する他の同様の動作等の重大事項を決定できるようにする特定のカテゴリ／クラスにセンサデータを確実に分類することができる。
【００１２】
更に、例えば、フィルタカーネルを二次元画像上で一度に１ピクセルだけスライドさせることにより、二次元（２Ｄ）畳み込みを実行することができる。別の例では、畳み込みスライドウィンドウ（例えば、３×３畳み込みスライドウィンドウ又はｎ×ｎの他のサイズの畳み込みスライドウィンドウ（ここで、ｎは、正の整数である））は、検索されたセンサデータから受信され、ドット内積演算としてフィルタカーネルと乗算された画像の畳み込みを実行するように選択することができる。
【００１３】
ウィンドウデータの各（部分）集合は、最初に、例えばＳＩＭＤレジスタにロードすることができる。畳み込みウィンドウデータ及びフィルタカーネルの両方は、ＳＩＭＤ  ＭＡＣユニットに提供することができ、ＳＩＭＤ  ＭＡＣユニットは、幾つかのサイクルにわたりＭＡＣ演算を実行し、畳み込み出力をメモリ又はバッファに記憶する。処理する画像全体又は画像若しくは画像全体の所与のセクタのデータの集合は、同じ特徴（又はデータの階層）を用いて分析する対応する１つ又は複数のフィルタカーネルにより完了していない場合でも、特定のフィルタカーネルのデータ自体のサブセット若しくはウィンドウのみにより出力された値、又はフィルタカーネルが分析するようにトレーニングされた特徴に対して即座にプーリングを開始することができ、特徴は、データに対応するため、ピクセルのサブセットのスキャン及び計算に使用することができる。
【００１４】
更に、ソフトウェアにおいて、全結合（ＦＣ）層の各ニューロンのネット関数（ＮＦ）及び出力関数（ＯＦ）を続けて実行することができる。ＮＦのインスタンスは、ＯＦに続く。本開示の更なる実施形態では、ＯＦの実行は、そのＮＦが出力を生成すると直ちにトリガーすることができる。ＯＦが実行されている間、パイプライン処理を介した並列実行に別のニューロンコンポーネントのＮＦを取り上げることができる。
【００１５】
プロセッサコンポーネントの観測ユニットを利用し、必要とされるデータフロー処理をサポートするように拡張することができる。新しいテーブルの集合を動的に生成することができ、命令を提示することができる。ＦＣ層のニューロンのＮＦコンポーネントにより出力されるデータのメモリアドレスは、テーブルの第１の列からプログラムすることができ、一方、対応するＯＦ出力データのアドレスは、テーブルの第２の列に入れることができる。活性化関数を実行し、テーブルの第３の列にプログラムすることができる。ソフトウェアがＮＦを実行すると直ちに、出力は、第１の列において指定された対応するアドレスに書き込まれ、トランザクションマッチ／モニタリングコンポーネント／ユニットは、ＯＦコプロセッサをトリガーして、第３の列において指定された出力関数を実行し、出力を第２の列において指定されたアドレスに記憶することができる。したがって、ＦＣ層パイプラインからの追加の加速又は効率利得は、畳み込み層／ＲＥＬＵ層とのプーリング層のパイプライン化を補足することができ、これは、追加の加速として実行することができる。したがって、ＦＣ層におけるニューロンのネット関数の実行の完了は、追加の加速及び追加のパイプライン動作として、ＣＮＮシステム内の更なる加速のために、次のニューロンにおける活性化関数が実行されている間に判断することができる。本開示の追加の態様及び詳細について、図を参照して以下に更に説明する。
【００１６】
図１は、運転支援システムが、自動車、他の車両又はデバイスが関わるエンジン速度の低減、ブレーキ、停止、又は他の機能等の重大事項を決定できるようにする特定のカテゴリ／クラスに画像を確実に分類することができる一例のＣＮＮシステム１００を示す。例えば、自動ナビゲーションシステム１００は、データセットを入力としてＣＮＮ１０４に提供する１つ又は複数のセンサ１０２を含むことができ、ＣＮＮ１０４は、様々なコンポーネントを有する複数の異なる計算／処理層を含む。次に、ＣＮＮ１０４は、出力を１つ又は複数のＡＤＡＳ検出器１０６−１０２（例えば、歩行者検出器１０６、車検出器１０８、自転車又は自動二輪車検出器１１０、交通標識検出器１１２、又は他の検出器）に提供し、ＡＤＡＳ検出器１０６−１０２は、いずれか１つの検出器１０６−１１２に対応するデータのカテゴリ（歩行者特徴、車特徴、サイクル特徴、交通標識特徴等）に関連する状況が存在するか否かを検出する。ＣＮＮの出力データから状況が存在すると所与の検出器が特定するか否かに基づいて、検出器１０６−１１２は、例えば、衝突警告１１６、停止／減速のためのブレーキ機能、始動／停止を行う何らかの機能、又は自動車両ナビゲーションの一環として状況に応答する機能に関連する他のアプリケーション機能、又は他のシステム／デバイス機能等のアプリケーションに通知することができる。
【００１７】
一例では、センサ１０２は、カメラ、レーダー、光検出及び測距（ＬＩＤＡＲ）、他の画像スキャンデバイス、又は画像捕捉デバイスからの信号で受信される画像等の画像からデータを検出し、処理する他のセンサ等の画像捕捉デバイスを含むことができる。次に、センサ１０２からのデータセットは、ＣＮＮ１０４に提供することができ、信号をとり、次に信号が何を表しているかを見つけ出そうとし得る。例えば、前部カメラセンサが取り付けられた状態で高速道路を走行中の車は、任意の交通標識がある場合、交通標識の写真／画像を返し、街灯柱がある場合、街灯柱の写真／画像を返すことができ、又は前を走行中の車がある場合でも、場合によりその車の写真をセンサデータの一部として返す。
【００１８】
一般に、運転者が後部座席にいる自律運転システムでは、減速、ブレーキの適用、ホーンの鳴動、又は他の動作等の人間が行う多くの判断は、基本的に、専用コンピュータ処理コンポーネントが搭載された自動ナビゲーション／パイロットシステムにより行われ、次に何をすべきかを決定するために、前に何があるかを理解することが重要である。したがって、システム及びＣＮＮ１０４の主な目的は、これらの写真／画像に何が含まれているかを判断し、次にこれらの写真で見つけられたものに基づいて更なる判断を実施することである。
【００１９】
例えば、１つ又は複数の写真／画像の分析が、人間が約１００ｍ離れた道路の中央に存在する画像における状況／パターンを示す場合、搭載コンピュータは、明らかに減速し、場合によりそれに従って車両を停止させる。代替的には、画像内の状況に基づいて加速するとの判断がなされる場合、車線を変更し、次に加速するように車両に単に指示する。したがって、これらの判断又は他の判断は、システムにより返され、次に任意の数の所与の状況が画像に存在するか否かについて分析される特徴のパターンとして、画像内で分析されたデータの性質から導出することができる。システムは、生じ得るバリアントを検出して、様々な状況の中で状況を認識するように学習している間のフィルタ又はカーネルフィルタの初期トレーニングによりロバストであり得る。
【００２０】
ＣＮＮ１０４は、所与の層の計算結果を次の層に提供する様々なコンポーネントを含め、ＣＮＮ計算層として互いに接続することができ、互いに従属することができる一連の異なる計算を含むことができる。これらの層は、図１において、異なる陰影を有するＣＮＮ１０４ブロック内の様々な層として見ることができる。計算の終了時、パイプから出力（例えば、Ｐｐ、Ｐｃａｒ、Ｐｃｙｃｌｅ、Ｐｔｓ）が現れ、出力は、画像内又は画像のセクタサブセット内の生じ得る様々な状況の中からの異なる確率を含むことができる。これらの確率を合算することにより、得られた値は、例えば、１に等しいことができる。次に、最大の確率を有する物体のタイプ又はカテゴリ／クラスタイプは、画像又は画像セクタが対応し、したがって１つ又は複数の検出器１０６−１１２により検出され、且つアプリケーション１１４及び１１６の１つ又は複数により作用されるものであり得る。
【００２１】
例えば、画像が歩行者を含む場合、歩行者ＡＤＡＳ検出器１０６は、ブレーキを適用する信号をブレーキシステムに送信するように構成することができる。一例としての歩行者のみならず、１つ又は複数の検出器１０６−１１２により、任意の数の項目を画像内で検出することができる。更に、畳み込みニューラルネットワークシステムにより検出された物体のパターン／カテゴリタイプに応答して、コンポーネントが１つ又は複数の予め定義された基準に基づいて更なる判断を下すことをトリガーする信号を提供することができる。例えば、歩行者検出器は、歩行者が検出されていることを示す画像メッセージを衝突警告コンポーネント／システムに送信することができる。衝突警告システムは、即座に認識し、場合によりブレーキを適用して減速し、右若しくは左の方向に走行しながら車両を減速させることができ、又は画像内の歩行者のパターン認識に基づいて別の判断を下し、それにより致命的な衝突を回避することができる。車の検出、サイクル、交通標識、又は検出時に動作をトリガーする任意の他の外部パターン等のセンサデータからの画像内で検出される他のパターン又は状況から同様の例を挙げることができる。
【００２２】
図２を参照すると、特にＣＮＮ１０４を構成する様々な計算層の更に詳細な更なる例である。ＣＮＮ１０４は、畳み込み層２０２、正規化線形関数（ＲＥＬＵ）層２０４、プーリング層２０６、全結合（ＦＣ）層２０８（人工ニューラルネットワーク層）、及び出力層２１０を含め、幾つかの計算層を含むことができる。５つの計算層が示されているが、当業者が理解することができるように、より多数又はより少数の計算層を考えることができる。本明細書で使用される場合、層又は計算層は、数学的又は他の関数的手段により同様の機能で動作して、受信した入力を処理し、畳み込みニューラルネットワークシステム内の更なる処理のために、１つ又は複数の他のコンポーネントを有する次の層への出力を生成／導出する１つ又は複数のコンポーネントを指すことができる。
【００２３】
畳み込み層２０２は、例えば、データセットとして画像２３２のデータスライスを抽出する１つ又は複数の畳み込みコンポーネント２１２を含むことができる。畳み込み層２０２は、正規化線形関数（ＲＥＬＵ）層２０４と組み合わせて、１つの計算層２３０又は一般に畳み込み層２３０と見なすか又は呼ぶこともできる。特に、畳み込み演算が畳み込みコンポーネント２１２により実行されて、カメラデータ、レーダーデータ、他のセンサデータ等の入力端末から入力として受信した画像から特徴を抽出することができる。例えば、畳み込みコンポーネント２１２により出力される結果として、畳み込み演算により生成された畳み込みデータの中から、人間の顔又は他の特徴を検出することができる。畳み込みプロセスは、例えば、特定の特徴についての画像２３２のセクションと共に画像データの集合／セグメント／サブセット／部分に対して実行することができる。まず、最初のパスにおいて、畳み込みコンポーネント２１２により生成された畳み込み演算は、低レベル特徴を抽出することができる。これは、特定のサイズ（例えば、畳み込み演算のウィンドウサイズｎ×ｎ（ここで、ｎは、正の整数である）又はｎ×ｐ（ここで、ｎ及びｐも同様に異なる正の整数である））のスライドウィンドウを用いて実行することができ、スライド畳み込みは、画像２３２の全体にわたり増分的に画像２３２からの重複データを用いて実行される。次に、続くパス又は反復において、同じコンポーネント又は異なるコンポーネントのいずれかによる、より低レベルの特徴の抽出で実行された前の畳み込み演算の結果を組み合わせることにより、追加のより高レベルの特徴を抽出することができる。次に、反復を続けて、画像の１つ又は複数の異なる反復又はパスを用いて異なる階層レベルのデータを生成することができる。
【００２４】
例えば、人間の顔は、輪郭線、傾斜線、曲線等を有することができる。畳み込みデータの１つの集合では、低レベル特徴（線、傾斜、曲線等）を抽出して、次に例えば画像内に楕円形がある場所、耳の縁部のように見える特徴がある場所、又は車若しくは例えば畳み込みニューラルネットワークを構成するコンポーネントの他のシステムとの衝突経路上にいる人間等の階層データセットの組合せに基づいて、画像２３２内に特定のパターン若しくは状況が存在するか否かを判断する一環であり得る特定の特徴／パターンの基本構造データを構成する他の特徴がある場所を特定することができる。
【００２５】
これらの畳み込み演算は、特徴マップを生成することができる。特徴マップは、センサからの画像２３２又は演算の前の層の出力データのいずれかに適用される１つの畳み込みコンポーネント２１２の出力と見なすことができる。フィルタインスタンスは、例えば、前の層の出力における各野にわたり引かれ、一度に１つ以上のピクセルだけ移される。各野は、フィルタ（フィルタカーネル）に接続された画像の小エリア／サブセットエリアと呼ぶことができる。例えば、フィルタは、特徴として三角形の存在について分析することができる。三角形の存在を探して完全な画像にわたり１つのフィルタをスライドさせる代わりに、様々なフィルタが、例えば、三角形又は他の特定の特徴について画像の様々なエリアを分析／支配することができる。
【００２６】
その受容野におけるフィルタの各位置における畳み込みにより、その位置においてカーネルにより表される特徴の存在の尺度を生成することができる。全ての畳み込み位置における特徴の存在の尺度は、フィルタカーネルの特徴マップであり得る。例えば、畳み込みフィルタが一度に１ピクセルだけスライドする場合、新しい畳み込み野は、（野幅−１）入力値だけ前の畳み込み野と重複することができる。例えば、３２×３２画像において、１ピクセルのストライド幅で入力画像データにわたり５×５畳み込みカーネルをドラッグして、畳み込みフィルタごとにサイズ２８×２８（３２−５＋１×３２−５＋１）の特徴マップ出力を生成する。「畳み込みカーネル」、「畳み込みフィルタカーネル」、「フィルタ」、「カーネル」、及び「フィルタカーネル」という用語は、本明細書では同義で使用することができ、更なる詳細について以下に提供する（例えば、図３を参照して）。また、本明細書で使用される場合、ストライド幅又はストライド長は、スライドウィンドウがシフトする量又はフィルタが入力データボリュームの周囲をどのように畳み込むかを定義することができる。
【００２７】
低レベル特徴として最低レベルの情報を抽出した後、出力は、畳み込み層２０２の畳み込みコンポーネント２１２により畳み込み情報又は畳み込みデータセットとして２つのエッジ／線を結合し、例えば、検出器１０６−１１２において、その結合が鼻に対応するか否か、又は目に対応するか否かを分析すること等により結合することができる。これらの低レベル特徴（例えば、エッジ、線等）の結合は、畳み込みデータセットの階層において、人間の顔、鼻、耳、目、額、顔の毛等の画像２３２内の状況に関連するわずかに標準的な特徴（例えば、中階層レベル）に対応するデータセットを形成することもでき、各セットは、より複雑な抽出データ特徴を含む。更に、データセットは、画像の特徴マップに沿って漸次的に結合することができ、システムが高レベル特徴を認識し、例えば画像内の物体／高レベル特徴として完全な人間の顔を特定できるようになるまで計算層に沿って更に処理することができる。
【００２８】
このようにして、低レベル特徴（例えば、曲線、エッジ、線、傾き等）は、１レベルのデータセット階層であり得、別のレベルの畳み込みデータセット（例えば、形状、パターンの組合せ等）は、別の階層レベルを形成することができるが、データセットの階層における畳み込み演算から任意の数の畳み込みデータセットを生成して、顔、人間、動物、自転車、自動二輪車、標識、標識の細部、又は任意の数の状況（例えば、衝突経路内の人間、横断して衝突経路に入っている動物、又は１つ若しくは複数の画像において生じている他の状況）を含め、より高レベルのパターンを特定することができる。
【００２９】
畳み込み演算は、線形であり得るため、畳み込み層２０２は、通常、固定経路を辿らず、通常ランダムである現実世界の挙動であると見なすことができるものを完全に常に反映するわけではない。したがって、よりランダム性を有する畳み込みの出力を生成するために、ＲＥＬＵ層２０４をＣＮＮシステム／コンポーネント１０４に構成することができ、更に、結合畳み込み層２３０の一部として結合することができる。畳み込みコンポーネント２１２は、ＲＥＬＵ層のＲＥＬＵコンポーネント２１４に接続することができる。ＲＥＬＵコンポーネント２１４は、ＲＥＬＵ入力への畳み込みコンポーネント２１２から出力された畳み込みデータから線形性をなくすことにより、非線形畳み込み出力データの集合を生成するように構成することができる。例えば、ＲＥＬＵコンポーネント２１４は、畳み込みの出力内にときに含まれ得る負の値について入力をモニタリングすることができる。次に、これらとして受信された畳み込みデータセットに基づいて、入力は、非線形畳み込み出力データと同様の階層のデータセットを生成する。任意の負の値を検出したことに応答して、ＲＥＬＵコンポーネント２１４は、それらの負の値をゼロ又は正の値で置換する。このようにして、畳み込み層２０２の線形出力は、非線形畳み込み出力データとして、線形性が少なくともわずかであるか又はごくわずかであるデータに変換することができる。
【００３０】
抽出され、線形性が除去された特徴を用いて、プーリングコンポーネント２１６におけるプーリング層２０６は、非線形畳み込み出力データを受信してスケール不変にする。したがって、位置、照明、分析中の画像の不純度に関係なく、ＣＮＮシステムは、インテリジェント且つロバストであり得、同じ写真／画像のバリアントを検出することが可能である。
【００３１】
したがって、畳み込み層２０２は、特徴抽出を生成することができる。ＲＥＬＵ層２０４は、データから線形性をなくして、現実世界のデータと一致させる。プーリング層２０６は、ボリューム低減を担当し、ネットワーク画像をスケール不変にし、これは、スケール不変特徴変換（ＳＩＦＴ）及び勾配方向ヒストグラム（ＨｏＧ）等の他の画像処理技法と同様又は同等であり得る。
【００３２】
プーリングコンポーネント２１６は、畳み込み結合層２３０と並行したパイプラインプロセスを介してプーリング出力を生成するように構成される。実施形態では、プーリングコンポーネント２１６は、スケール不変処理を開始し、畳み込みデータ又は非線形畳み込み出力データの第１の集合／サブセットに対して統計学的演算を実行することができる。したがって、２つの異なる計算層は、互いの関数とパイプライン化し、互いの機能と並行して動作することができ、又は例えばスライド畳み込みウィンドウが画像２３２にわたり畳み込みデータの全体の一部又は幾つかを出力するにつれて同時に処理することができる。畳み込み層２３０、畳み込みコンポーネント２１２、又はＲＥＬＵコンポーネント２１４の畳み込み／ＲＥＬＵ演算は、プーリングコンポーネント２１６とのパイプラインプロセスとして動作する。これらのプーリングコンポーネント２１６は、非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、非線形畳み込み出力データに対して統計学的演算を実行する。
【００３３】
例えば、プーリング演算は、ＲＥＬＵ層２０４により提供された入力データ（非線形畳み込み出力データ）のサイズを低減する。データの各サブセットが受信されるにつれて、非線形畳み込み出力データの１つの集合を処理し、プーリング層２０６においてサイズを低減し、次に全結合（ＦＣ）層２０８において分類を受け、最終的に、更に詳細に後述する分類器２１０により人間が理解可能な形態に変換することができる。
【００３４】
人工ニューラルネットワーク（ＡＮＮ）のＦＣネットワーク層２０８は、ニューロンを用いて人間の脳の機能を表す。例えば、異なる値（例えば、１、５、６０，０００及び０．２５又は値の他の集合）がＡＮＮの入力に現れ得、画像データに存在するパターン又は状況（例えば、男性、女性、人間等）を特定できるようにする。ＦＣコンポーネントが数字の異なる集合を見る場合、場合により何か他のものであるシステム出力が検出されることになる。
【００３５】
プーリング層２０６のプーリングコンポーネント２１６の出力は、写真／画像が含んでいる可能性が最も高い候補を更に決定する、ＦＣ層２０８としても知られる人工ニューラルネットワークに供給することができる。したがって、次に、ＦＣコンポーネントの出力としてのこれらの数字は、出力層２１０として知られるものにより確率に変換し、歩行者検出器１０６又は交通標識検出器１１２のような様々な検出器（例えば、図１の１０６−１１２）に供給することができ、例えば、アプリケーション１１４又は１１６における応答において必要な動作がとられる。
【００３６】
ＦＣコンポーネント２１８は、第１のＦＣ層（ＦＣ１）及び第２の（後続する）ＦＣ層（ＦＣ２）のそれぞれに従ってネット関数２２２、２２６及び出力関数２２４、２２８により形成されるニューロン構造を有するＡＮＮを形成する。各ニューロンＮ１−Ｎｘ及びＮ４−Ｎｙの出力は、プログラムカウンタ及びフェッチされる外部命令の代わりに、入力データ（例えば、ｌ１、ｌ２）及び入力重み（例えば、ｗ１、ｗ２）の可用性に依存することができる。これは、各ＦＣコンポーネント２１８が、命令をメモリからフェッチせずに動作し、代わりに１つ又は複数の入力（例えば、ｌ１、ｌ２）における入力データの可用性に応答して処理して、指定関数を実行することにより入力データを直ちに／即座に処理する１つ又は複数のデータフロープロセッサを含み得ることを意味する。入力（例えば、ｌ１、ｌ２）は、プーリングコンポーネント２１６のプーリング出力により又はＦＣ２コンポーネント入力において利用可能なデータ（例えば、ｌ１、ｌ２）の前のＦＣコンポーネント／層（例えば、ＦＣ１、Ｎ１−Ｎｘ）により提供することができる。
【００３７】
データフロー処理は、例えば、入力における特定のデータの可用性のみに基づいてデータを処理するのではなく、プログラムカウンタを用いてメモリから命令をフェッチしてデータを処理するフォンノイマン制御フロー処理／フォンノイマン型計算機／プロセッサと対照的であるか又は異なることができる。ＦＣコンポーネント２１８は、それぞれ個々に、層（例えば、ＦＣ１）内の各ＦＣコンポーネントにおいて同じ複数の入力（例えば、ｌ１、ｌ２）を受信することもできる。例えば、Ｎ１−Ｎｘは、全て各プーリングコンポーネント２１６から入力を受信し、これらの入力（例えば、ｌ１、ｌ２）は同じであり得る。更に、同様にＦＣコンポーネントの第２の（又は後続）層（例えば、ＦＣ２、Ｎ４−Ｎｙ）のそれぞれも同様に、例えば、コンポーネントの前の層（例えば、ＦＣ１、Ｎ１−Ｎｘ、前の計算層、又は他の計算層）から同じ入力（例えば、ｌ１、ｌ２）を受信することができ、ＡＮＮを形成する計算コンポーネントの１つ又は複数の異なる層であり得る様々なＦＣ層２０８（例えば、ＦＣ１、ＦＣ２等）全体を通して同様である。
【００３８】
更に、ＦＣ層２０８のニューロン又はＦＣコンポーネント２１８の各ネット関数は、入力のドット積及び重みにより加重（各入力に考慮される重みとして）等の数学的演算を含むことができる。入力（例えば、ｌ１、ｌ２）は同じであり得、重み（例えば、ｗ１、ｗ２）は様々である。更に、各入力（ｌ１、ｌ２）の入力（ｌ１、ｌ２）及び重み（例えば、ｗ１、ｗ２）のドット積の合算は、各ＦＣコンポーネントのそれぞれにおいて実行することもできる。異なるＦＣコンポーネント２１８は、異なる重み（例えば、ｗ１、ｗ２）を有することができ、又は代替的に、異なる入力（ｌ１、ｌ２）は、同じ群／集合／複数の入力（例えば、ｌ１、ｌ２）を受信する各ＦＣコンポーネント２１８で別様に異なる重み（例えば、ｗ１、ｗ２）を有することができる。代替的には、これらの重みは、少なくとも幾つかのＦＣコンポーネント２１８が入力において同じ重み（例えば、ｗ１、ｗ２）を有することができ、一方、他のＦＣコンポーネント２１８が互いと異なる重み（例えば、ｗ１、ｗ２）を有し、処理において対応する入力を考慮／検討するための重み又は任意の量を与える異なる値を有するように、互いと同様であるか又は異なることができる。
【００３９】
加えて、各ＦＣコンポーネント２１８の出力ニューロン２２４、２２８は、ネット関数２２２、２２６の結果に対して動作する数学的関数を含むこともできる。例えば、出力関数は、加重入力及びそれに対して実行された合算又は他の演算の結果に対して実行される三角関数（例えば、ｔａｎｈ、ｔａｎ等）又は他の数学的関数を含むことができる。
【００４０】
最後に、出力層２１０は、ＦＣ層出力又はＡＮＮ出力を受信した分類器関数２２０を含むことができる。これらの分類器関数は、例えば、その機能がＦＣ層２０８の出力を０〜１の範囲の値に押し込む／圧縮することであり得るＳｏｆｔＭａｘ関数を含むことができる。分類器関数２２０の出力は、確率を含むことができ、入力データに対応する最も可能性が高い出力クラスが最高確率を有する。出力層２１０は、例えば、サポートベクターマシン（ＳＶＭ）又は他の分類器のような標準分類器でもあり得る。
【００４１】
本開示の実施形態では、畳み込み層２３０及びプーリング層２０６の実行は、パイプライン化することができ（実行パイプライン化又はパイプライン処理を介して）、大きい加速及び効率に繋がる。上述したように、プーリング層２０８は、第１の畳み込みスライドウィンドウ演算からのデータの可用性に基づいて、畳み込み層２３０と並列して又は同時に動作し、同時に又は画像データの重複若しくは後続のサブセットに対して実行される続くスライドウィンドウ演算中にプロセスを開始することができる。
【００４２】
実行パイプライン化又はパイプライン処理は、本明細書では、直列接続されたデータ処理要素、コンポーネント、又は関数の集合と呼ぶことができ、あるコンポーネント又は要素の出力は、次のコンポーネント又は要素の入力である。パイプラインの要素又はコンポーネントは、並列に又はタイムスライスされて実行され得、その場合、幾らかの量のバッファ記憶装置を要素間に挿入することができる。前又は先のコンポーネントが入力データの集合への動作を完全に終えるのを待つ代わりに、後続する又は続くコンポーネント又は要素は、例えば、前／先の要素又はコンポーネントからの結果の部分的又は不完全な集合に対して即座に処理を開始することができる。このようにして、プーリング層のコンポーネントは、例えば、一加速として、畳み込み結合層２３０からの少なくとも部分的な結果に対して動作するように構成することができる。
【００４３】
他の実施形態では、ＦＣ層２０８の実行をパイプライン化することもでき、したがって追加の加速及び効率に寄与する。更に、互いに並列に機能するために、前又は先のＦＣコンポーネント２１８からの部分出力データに応答して処理を開始するように、ニューロンとしてのＦＣコンポーネント２１８をパイプライン化することもできる。例えば、ＦＣ１のニューロン（例えば、Ｎ２）のネット関数２２２は、先のＦＣコンポーネント（例えば、Ｎ１）の出力関数２２４が完了する前にＦＣ１の先のＦＣコンポーネント（例えば、Ｎ１）の出力関数２２４の処理動作と並列して処理を開始することができる。続けて、ＦＣコンポーネントは、同様にそのようなパイプライン処理演算を介して互いに並行して動作することができる。
【００４４】
図３を参照すると、本明細書における様々な態様／実施形態による代表的な畳み込みデータ結果３００の例を示す。畳み込み演算は、畳み込み層２０２の畳み込みコンポーネント２１２により、又は図２を参照して上述したように、ＲＥＬＵコンポーネント２１４との結合畳み込み層２３０として利用することができる。畳み込み層２３０の畳み込みコンポーネント２１２は、例えば、加重乗算及び合算を生成するように構成することができる。信号処理に関して、これらの演算は、一次元であり得、画像処理の場合、畳み込み演算は、それぞれが更なる処理で考慮又は検討されるべき量だけ別様又は同様に入力を加重する様々な重みがＸ軸及びＹ軸に沿って存在することができるように二次元であり得る。
【００４５】
一例では、数字の二次元アレイ３０２をメモリ３０４（メモリ１）で表されるメモリに記憶することができる。これらの値は、データのエリアの表現又はセンサ（例えば、画像／カメラ／ビデオ捕捉センサ等）による１つ又は複数の畳み込みコンポーネント２１２への入力として提供される注釈付き値であり得る。例えば、これらの値３０２は、画像又は画像データのサブセクション／サブセットに対応することができ、本明細書では、例示を目的として、畳み込みコンポーネント又は結合層２３０のコンポーネントによる畳み込み演算の潜在的な値の表現である。これらの値は、実数、虚数、１つ又は複数の変数の関数、又は例えば受信されるか若しくはメモリ３０４に記憶されるデータの他の表現であり得る。データ３０６は、データ３０２と同様であり得るが、わずかに異なって表現されて、例えばメモリ３０４に記憶するためにセンサ１０２により提供中であるため、データの線形記憶を示す。
【００４６】
畳み込みは、フィルタカーネルにより表される特徴の存在を検出するために、フィルタカーネルが画像にわたりスライドすることができる数学的演算である。ＣＮＮシステムでは、フィルタカーネルは、特徴を探す画像３０２の固定エリアを有することができる。したがって、フィルタの複数のインスタンスを局所受容野として知られている画像の非重複領域に接続することができる。各フィルタインスタンスは、全く同じ特徴を探すが、メモリ３０４における局所受容野においてのみ探す。したがって、探さなければならないあらゆる特徴について、局所受容野に接続されたフィルタカーネルインスタンスの対応する集合が用意されると言える。特徴の全てのフィルタカーネルインスタンスの畳み込み出力は、特徴の特徴マップを表す。複数のフィルタカーネルは、検出が意図される他の特徴に拡張される。
【００４７】
例えば、特定のフィルタカーネルにおける鼻の表現又は鼻の写真は、特定の位置又はサブセットにおいて画像（センサデータにより捕捉される）の上部に配置され、フィルタカーネルの下にある数字の乗算に使用することができ、乗算結果の合算を畳み込みコンポーネント２１２により実行して、特定の値を取得することができ、特定の値が次に記憶される。次に、カーネルは、１列だけある方向（例えば、右に）スライドすることができる。次に計算を繰り返し、計算は、ドット積乗算及び合算等の所与の数学的演算を用いて繰り返して結果を取得することができ、結果は記憶される。
【００４８】
スライド動作は、１つ又は複数の反復でｘ軸に沿って続けることができ、ｘ軸の終わりに達すると、特定の行に沿って続けることができる。カーネルは、最初の列に戻され得るが、次に１行だけ下にスライドし、そこから、畳み込みコンポーネント２１２は、再びスライド動作を繰り返す。画像３０２の重複画像領域３０８は、畳み込みウィンドウを表す。これは、畳み込みが畳み込みコンポーネント２１２により実行されるこれらの畳み込みウィンドウ３０８上にあり、畳み込みウィンドウ３０８に沿う。データ並列プロセッサ（例えば、ＳＩＭＤプロセッサ）上において、畳み込みウィンドウに属するデータ及びフィルタカーネルに属するデータは、両方ともベクトルレジスタにロードすることができ、ベクトル積和（ＭＡＣ）ユニットに供給することができる。１つのベクトルＭＡＣ演算は、例えば、１つの畳み込み出力を生成することができる。次に、この畳み込み出力は、後にメモリ２（メモリ３１０）に記憶することができる。フィルタカーネルが全ての重複畳み込みウィンドウ３０８との畳み込みを完了した後、完成した畳み込み出力が畳み込み出力メモリ３１０において利用可能であり得る。
【００４９】
畳み込みプロセスから、本明細書の態様により、互いと並列して又は同時に階層データセットを生成することができ、その後、ＲＥＬＵコンポーネント２１４により非線形化されて、画像が鼻の写真を含むか否か及び画像内のその位置を判断することができる。この判断が肯定である場合、鼻の写真を含む画像の部分は、画像の他の部分よりも高い畳み込み値を出力する傾向を有する。
【００５０】
一例では、３×３（又は他のｎ×ｎサイズ、又はｎ×ｐサイズ（ここで、ｎ及びｐは、同じであるか又は異なることができる正の整数である））畳み込みスライドウィンドウ３０８の下で、より小さい数字（例えば、１、２、３、７、８、９、２、４、５）の集合を導出することができ、次に即座に別のシーケンス（例えば、２、３、４、８、９、１、４、５、９）を生成することができる。これらは、画像からとるか又は画像から導出することができる値を表すことができる代表的な値である。一連の数字（例えば、１、２、３、７、８、９、２、４、５）は、畳み込みスライドウィンドウデータとして初期エリア／数字のサブセットからのものであり得る。次に、１行目、２行目、及び３行目の最初の列を無視し、２番目、３番目、及び４番目の列で開始される数字にフォーカスすることにより、別のシーケンス（例えば、２、３、４、８、９、１、４、５、９）を得ることができる。
【００５１】
更に３×３ウィンドウ３０８を利用して、メモリ３０４に記憶された画像データから、一例としてサイズ３×３である小さいサイズの画像データ部分を分析することができる。他のサイズのウィンドウを利用することもでき、サイズ例は、必ずしも網羅的ではなく、又は本明細書における全ての態様に限定されない。更に１列だけウィンドウをスライドさせると、ウィンドウ結果は、別のスライドウィンドウ結果を形成する３、４、５、９、１、３、５、９、３であり得る。次に、ドット積乗算演算は、ＡＢＣＤＥＦＧＨとしてメモリ２（例えば、３１０）により注釈付けられた右下隅に表すことができるスライドウィンドウ畳み込みの出力として各数字を取得することができる。例えば、代表的な結果の値（例えば、Ａ）は、基本的に、１、２、３、７、８、９、２、４、５を含む第１のウィンドウとのフィルタカーネルの畳み込みの出力を表し、２、３、４、８、９、１、４、５、９を含む第２のウィンドウとの鼻（又は他の特徴）を表すカーネルの畳み込みの出力を表すＢ等であり、ここで、類似性Ｈは、例えば、最後のウィンドウ１、３、２、９、３、５、１、１、３との鼻（又は他の特徴）を表すフィルタカーネルの畳み込みである。
【００５２】
Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、及びＨは、様々な方法で、所与の文字が対応するデータ又は１レベルの階層データとしてのいずれか１つの領域／サブセット／エリアにおける鼻の可用性のレベルを示すことができる。例えば、Ａが非常に高い値である場合、鼻（又はデータセットのカーネル又はスライド畳み込みウィンドウに対応する他の特徴）がこの位置にあり得る確率が高い。したがって、畳み込みは、特定の特徴が画像データにある可能性があるか否か及びどこにあるかの現実的な推定を提供することができる。同様に、それぞれ畳み込みコンポーネント２１２により且つ結合計算層２３０により、他の特徴又は任意の数の特徴を分析して、１つ又は複数の画像内の１つ又は複数をパターン又は状況を検出することができ、これは、特徴検出と呼ぶことができ、その出力は、例えば、畳み込み出力３１０により示すことができる。
【００５３】
図４を参照すると、ＣＮＮシステム１００のプーリング動作の更なる例を示す。畳み込みの出力３１０は、ここで、アルファベットを含めてメモリ２を用いて更に拡大され、文字は、例えば、より大きい画像からの任意の値又は関数を表す。プーリング層２０６のプーリングコンポーネント２１６は、畳み込みの出力３１０を低減する刈り込み、トリミング、又は圧縮プロセスによりデータを処理することにより、畳み込み出力３１０を処理する。
【００５４】
例えば、非重複ブロックの集合は、異なる陰影で又はメモリ２（メモリ３１０）において区切られるブロックで表すことができる。例えば、ブロックＡ、Ｂ、Ｉ、Ｊはブロック／ウィンドウＣ、Ｄ、Ｋ、Ｌと異なり、ブロック／ウィンドウＣ、Ｄ、Ｋ、Ｌは、ブロックＥ、Ｆ、Ｍ、Ｎ及びブロックＧ、Ｈ、Ｏ、Ｐと異なる等である。したがって、図２のプーリングコンポーネント２１６は、統計学的演算を実行して、例えばメモリ３に記憶されるプーリング出力４０２を達成することにより、畳み込みの出力と、これらの２×２セルのそれぞれ内でＸ軸に沿って２であり、ｙ軸に沿って２であるセクタ非重複領域２×２とを処理することができる。これらのプーリング出力４０２は、スケーリング不変特徴を表す。
【００５５】
２×２の非重複領域が本明細書において例として示され説明されるが、ｐ×ｎ非重複ブロック／ウィンドウを使用することができるように、他のサイズを考え、利用することもでき、ここで、ｐ又はｎは、例えば、ゼロ以外の任意の正の整数であり得、互いと異なり得、又は同じであり得る。
【００５６】
プーリングコンポーネント２１６により実行される統計学的演算は、スライド畳み込みのウィンドウの最小、最大、平均、メジアン、又は他の統計学的演算（例えば、Ａ、Ｂ、Ｉ、Ｊの）を含むことができる。プーリングコンポーネント２１６は、任意の統計学的演算のプーリング演算を実行することができるが、大半の実装形態では、プーリングコンポーネントにより使用される統計学的演算は、最大であり得る。
【００５７】
したがって、スライド畳み込み３１０の出力上のこれらの２×２ブロックウィンドウ（又は他のサイズのブロック／ウィンドウ）のそれぞれから値（例えば、代表的なＢ）を選択することができる。この例では、Ｂが選ばれており、Ｋが次のブロックから選ばれており、メモリ３  ４０２に記憶されるように、Ｅ、Ｐ、そしてＺ、Ａ、Ｕ、Ｘが続き、スケール不変特徴として又は畳み込みコンポーネント２１２からの畳み込み出力３１０若しくはＲＥＬＵコンポーネント２１４からの非線形畳み込み出力データの集合から導出されるボリューム低減出力としてプーリング出力を含む。したがって、プーリングコンポーネント２１６は、プーリング演算として、受信した入力からデータサイズを低減することができる。次に、プーリング演算の出力は、人工ニューラルネットワーク又はＦＣ層２０８に入力することができ、これらは、更に、更なる判断を下すために画像内のパターン／状況について判断しようとする。
【００５８】
様々な態様では、特定のコンポーネントハードウェアをこれらの計算の実行に割り当てることができ、それにより、全てのメインプロセッサ（例えば、エンジン制御ユニット又は他の主処理コンポーネント）がする必要があるのは、畳み込みニューラルネットワークコンポーネントハードウェアに以下のことを教えるのみである：ｉ）分析する画像があり、ｉｉ）画像が何であるかを特定した後、結果の指示を提供する。したがって、ＣＮＮ１０４の様々な層の計算は、ＣＮＮアクセラレータにオフロードして、例えばバックグラウンドで計算を実行して、結果をメインプロセッサに戻すことができる。これは、電力及び性能の効率に関して良好な解決策であり得るが、そのようなハードウェアユニットは、マイクロコントローラ上で大きい面積を占め得ると共に、機能するのに大量の電力を消費し得るため、犠牲を伴い得る。したがって、本明細書における態様は、専用ハードウェアアクセラレータの必要性をなくすこともでき、代わりに専用ＣＮＮアクセラレータほど集約的でない特定の１つ又は複数のより小型軽量のコンポーネントを使用することにより、チップ上の特定の基盤を再使用することができる。したがって、コストを削減することができると共に、メインプロセッサに過負荷を掛けずに性能を維持することができる。
【００５９】
実施形態では、プーリングプロセッサ２１６は、畳み込みコンポーネント２１２又は畳み込み＋ＲＥＬＵ結合層２３０及び関連するプロセスと並行して動作することにより、演算をパイプライン化することを介して動作することができる。ＣＮＮ１０４の各層が、先の層が全ての計算演算を終えた（例えば、スライド畳み込み３１０の全ての出力が特徴の特定の階層又はサブセット画像部分の画像全体にわたる反復のいずれかで生成された）後にのみ動作を開始する代わりに、プーリングコンポーネント２１６は、通常、プーリングウィンドウの全てが前のコンポーネントにより生成されるのを待つのとは対照的に、そのようなウィンドウが前のコンポーネント（例えば、畳み込みコンポーネント２１２）により生成されると直ちに、プーリングウィンドウでプーリング演算を開始することができる。
【００６０】
例えば、トリガーイベント（例えば、アクセスマッチ又は観測ユニット出力とも呼ばれる）として、次の層の処理のためにデータブロックが入力において利用可能であり得、したがって、次の層は、即座に計算を開始する。したがって、畳み込み層２０２／２１２が計算出力の１つのブロック／ウィンドウ（例えば、共有ブロックＡ、Ｂ、Ｉ、Ｊの１つ）を計算すると直ちにプーリング演算を開始することにより、処理利得を増大することができる。
【００６１】
出力のプーリングを開始するために、畳み込み層が畳み込み出力Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ等をメモリ２の出力３１０の右下隅にあるＦまで全てを生成するのを待つのではなく、プーリングコンポーネント２１６は、データ可用性に基づいてトリガーイベント又は指示（又はアクセスマッチ）に応答して処理することができる。例えば、トリガーイベントは、所与のウィンドウの最後の値（例えば、２×２ウィンドウの最初の共有ブロックではＪ）に対応するメモリ２におけるロケーションへの書き込みであり得る。したがって、２×２ブロックの要素、値、又は任意の係数がメモリ又は特定のメモリロケーションに書き込まれると直ちに、第１のプーリングコンポーネント２１６は、利用可能なデータに対するプーリング演算の処理を即座に開始するようにトリガーすることができる。
【００６２】
別の実施形態／態様では、この例でのトリガー指示は追加又は代替として、ｐ×ｐウィンドウ（例えば、２×２非重複データブロック）の最後の値、位置、又は結果に対応するスライド畳み込みの出力の可用性であり得、ここで、ｐは、任意の正の整数であり得る。更に、このトリガーは、様々な入力データに対応する全ての入力におけるデータの可用性を含むように拡張することができ、したがって、データ自体の受信が完了／終了したか否か又は前の層（例えば、結合層２３０、畳み込みコンポーネント２１２、ＲＥＬＵコンポーネント２１４等）が完了したか否かに関係なく、データフロー処理フローと同様に、全ての入力がデータを受信すると、次の層における処理をトリガーすることができる（例えば、プーリングコンポーネント２１６を介して）。
【００６３】
値の可用性又は特定の位置での書き込み動作の指示に応答して、完成したブロック又は非重複ウィンドウ（例えば、非線形畳み込み出力データの２×２ウィンドウ又はスライド畳み込み３１０の出力）へのプーリング演算をプーリングコンポーネント２１６により開始することができる。プーリングコンポーネント２１６は、１つ又は複数の畳み込みコンポーネント２１２と同時に又は並行して複数の演算を同時に実行することができる。畳み込みコンポーネント２１２は、スライド畳み込み出力３１０を提供するが、プーリングコンポーネント２１６は、各ブロック（例えば、８ブロックＪ、Ｌ、Ｎ、Ｐ、Ｚ、Ｂ、Ｄ、及びＦ）に出力アドレス５０２を有する最終プーリング出力を提供することができる。したがって、例えば、Ｊが畳み込みコンポーネント２１６から利用可能になると直ちに、データの同じ階層又は異なる階層レベル内の画像内の他のウィンドウ又はデータのサブセットからＣ、Ｄ、Ｅ、Ｆ等の他の結果を待たずに、プーリングコンポーネント２１６のプーリング演算の一環として、Ａ、Ｂ、Ｉ、Ｊの最大を統計学的演算の一例として見つけることができる。更に、Ｎが利用可能になると直ちに、Ｏがメモリに書き込まれるのを待たずに、Ｅ、Ｆ、Ｍ、Ｎのプーリング演算を開始することができる。同様に、Ｐが利用可能になると直ちに、Ｇ、Ｈ、Ｏ、Ｐのプーリング計算を開始することができ、例えば、出力スライド畳み込みデータ又は非線形出力データ３１０とも呼ばれる各ブロックについて同様であり得る。
【００６４】
図６を参照すると、ＣＮＮ演算６００の追加の例を示す。畳み込み＋ＲＥＬＵ結合層２３０は、ここで、結合層６０２として表すことができる。一般に、プーリングコンポーネント６０４は、通常、全ての畳み込み計算が完了した場合にのみ開始する。プーリングコンポーネント６０４の演算が完了した後、結合層６０６の更なる演算を開始することができ、これは、層６０２（すなわち異なる特徴の）からの更なるフィルタ及び特徴マップ又は画像全体に沿った異なる画像データ上の同じものを含むことができる。続けて、プーリングコンポーネント６０８又は同じプーリングコンポーネント６０４は、データ結果に対して処理を開始することができる。しかしながら、結合層６０２／６０６とプーリングコンポーネント６０４／６０８との間のこれらの演算は、時間的に互いにシーケンシャルであり、各コンポーネントは、特定のフィルタ、特徴マップのコンポーネントの全ての計算が終わった後にのみ、且つパイプライン処理なしで対応するコンポーネントの画像分析が完了した後にのみ開始される。
【００６５】
次に、図６の中央において、「制御プロセッサユニット（ＣＰＵ）周波数の増大による加速」なる見出しの下で、各計算層に対応するこれらのウィンドウ又はエリアのサイズはより小さくすることができる。これは、ＣＰＵ周波数の増大により達成することができるものの加速表現であり、したがってプロセッサがより高速で動作する場合、より高速に計算し、計算速度利得をもたらす。周波数の増大は必須ではなく、問題を有し得、場合により、最大の問題は、例えば、過度の消費電力に関連する。
【００６６】
同様又は実質的な計算利得は、畳み込みスライドウィンドウの演算からのデータの所与のブロック／サブセット／部分を畳み込みコンポーネント２１２が完了することと並行して、完了によりトリガーされるプーリングコンポーネント２１６のパイプライン処理を介して構成することができる。したがって、プーリングコンポーネント２１６は、畳み込みコンポーネント２１２の畳み込み演算に組み入れることができる。畳み込みが、例えば、Ａ、Ｂ、Ｉ、Ｊ又は他のデータセット（同じ又は異なるウィンドウを用いた）であり得るデータ３１０の１つのブロックを出力すると直ちに、及び最後の値Ｊが返されると直ちにプーリング演算を開始することができる。したがって、プーリング演算が、例えば、Ａ、Ｂ、Ｉ、Ｊに対して実行中である間、畳み込みは停止されず、Ｃ、Ｄ、Ｋ、及びＬ等の別のデータセットを出力し続ける。例えば、Ｃ、Ｄ、Ｋ、Ｌが利用可能になると、例えば、別のプーリングコンポーネント又は同じプーリングコンポーネント２１６を介したプーリングの次のラウンドを即座に、及び同様に更なる反復で開始することができる。これは、ＣＰＵ周波数を増大させずに、且つ消費電力の増大を生じさせずに、ＣＰＵ周波数の増大のみの場合と同レベルの加速を達成し得ることを意味する。
【００６７】
畳み込み層２３０及びプーリング層２０６のパイプライン演算からの加速は、制御フロープロセッサよりも又は制御フロープロセッサの代わりにデータフロープロセッサコンポーネントを用いるデータフロー処理を利用することにより行うことができる。一般に、制御フロープロセッサは、フォンノイマン型計算機からなるか、又は計算デバイスから別個のユニットであり得るメモリに常駐するプログラムを有する計算デバイス（制御フロープロセッサ）として構成される。更に、フォンノイマン型計算機は、プログラムカウンタに含まれるアドレスにおける命令をその時点で実行しなければならないことを制御フロープロセッサ（又は計算デバイス）に教えるプログラムカウンタを含む。次に、特定のプロセッサは、プログラムカウンタにより示されるメモリロケーションを見つけ、命令をフェッチし、プロセッサ内部に命令を運び、最終的に命令を実行する。プログラムカウンタは、インクリメントされ、次に制御フロープロセッサの通常動作の一環として上記シーケンスを全て再び繰り返す。
【００６８】
制御フロープロセッサ又はフォンノイマン型計算機とは対照的に、図７は、プーリングコンポーネント２１６又はＣＮＮシステム１０４の他のコンポーネントとして利用されるデータフロープロセッサ（ＦＵ１〜ＦＵ６）の動作フロー例７００を示す。データフロープロセッサは、命令がメモリからフェッチされないという意味でフォンノイマン型計算機と異なることができる。命令は、計算デバイス内部で既に利用可能である。特に、命令により必要とされるデータが利用可能である場合、データフロープロセッサでの命令が実行され、命令により必要とされるデータが利用可能になるときまでは何も行われない。
【００６９】
例えば、ＦＵ１〜ＦＵ６を用いて注釈付けられたブロックは、コンポーネントに既にハードワイヤードされた命令であり得る。特に、ＦＵ１及びＦＵ２から出てＦＵ３において終端する２つの線／端子は、ＦＵ３の入力端子として機能する。例えば、ＦＵ３の出力は、ＦＵ４及びＦＵ５に接続することもできる。これらの枠は、命令であり得、各ＦＵ枠（データフロープロセッサ要素）に入る値は、演算子又は入力データであり得、ブロックから出る線は、出力データ又は命令／演算子の実行結果であり得る。したがって、各データフロープロセッサ要素と同様に、ＦＵ３は、ＦＵ１及びＦＵ２の両方が出力を生成するまで実行しない。同様に、ＦＵ４もＦＵ３及びＦＵ１の出力を受信してから実行し、ＦＵ５もＦＵ３及びＦＵ６の入力を受信するまで実行しない。したがって、データフロープロセッサは、あるノードから別のノードにデータが即座利用可能であることに基づいて、又は即時利用可能であることに応答して、既にハードワイヤードされた命令を実行する。したがって、命令は、機能ユニット又は単純にハードウェアユニットで置換することができる。各ＦＵは、各入力で受信データが利用可能になった後にのみ始動するノードとして動作することができる。
【００７０】
ここで、図８を参照すると、様々な態様又は実施形態によるＣＮＮ層を動作させるアーキテクチャＣＮＮシステム８００の一例を示す。システム８００は、制御フロープロセッサを用いてコンポーネント（例えば、フォンノイマン型プロセッサ）を動作させることができる制御フロー処理部分８０２と、データフロープロセッサ（例えば、ＦＵ１〜ＦＵ６又は図及び本開示に記載される他のコンポーネント）を用いてコンポーネントが動作することができるデータフロー処理部分８０４とを含む。
【００７１】
プロセッサ相互接続８０６は、制御フロー処理部分８０２の一部としてＣＰＵ８０８（例えば、メインプロセッサ又は他のファンノイマン型プロセッサ）及びメモリ８１４並びにデータフロー処理部分８０４のデータフロープロセッサコンポーネントとして観測ユニット８１０及び１つ又は複数のコプロセッサ８１２を含め、様々なコンポーネントを接続するように動作することができる。
【００７２】
態様では、データフロー処理部分のコンポーネントは、パイプライン処理のためにプーリング層２０６のプーリングコンポーネント２１６及びＦＣ層２０８のＦＣコンポーネント２１８をサポート又は含むように動作することができる。プーリング動作は、畳み込み層２０２、２０４、又は２３０が１つのブロックデータ（例えば、２×２データウィンドウ又は非重複データウィンドウの他のサイズのブロック）を出力すると直ちに開始することができる。観測コンポーネント／ユニット８１０は、データブロックがメモリ内のロケーションにおいて利用可能であるこのイベントを判断するように構成することができる。データブロックの最後のデータ（例えば、ブロックＡ、Ｂ、Ｉ、ＪからのＪ）が特定のメモリアドレスに書き込まれたと観測ユニットが判断すると直ちに、観測ユニット８１０は、このイベントを検出することができ、畳み込み層２３０と並行して動作するプーリングコンポーネント（例えば、プーリングコンポーネント２１６）を含むコプロセッサ８１２へのインターフェース（Ｉ／Ｆ）を介してトリガーをコプロセッサ８１２に提供することができる。
【００７３】
図９を参照すると、様々な態様／実施形態による畳み込み層ウォッチテーブル９００の一例を示す。観測ユニット８１０は、例えば、畳み込み層２０２の畳み込みコンポーネント２１２、ＲＥＬＵ層２０４のＲＥＬＵコンポーネント２１４、又は結合層２３０のコンポーネント２１２、２１４に対応する幾つかのテーブル９０４ａ〜９０４ｎを含むことができる。テーブル９０４ａ〜９０４ｎ（ｎは、任意の正の整数である）のそれぞれは、畳み込みウォッチアドレス部分と、各畳み込み／ＲＥＬＵコンポーネント２１２、２１４に関連する畳み込みスライド出力３１０のアドレスに対応するプーリング出力アドレス部分とを含むことができる。トランザクションマッチユニット９０６は、例えば、テーブル９０４ａ〜９０４ｎに書き込まれたデータの特定のロケーションに応答してトリガーを生成する観測ユニット８１０のコンポーネントであり得る。出力９０８は、処理のために任意のコプロセッサ８１２に提供することができ、コプロセッサ８１２は、例えば、少なくとも部分的にプーリング演算に指定されたプーリングコンポーネント２１６及び図１２〜図１５に関して更に詳細に以下に考察されるＦＣコンポーネント２１８であり得る。
【００７４】
畳み込みウォッチアドレスは、結合層２３０の特定の畳み込み／ＲＥＬＵコンポーネント２１２、２１４に割り当てられ対応するテーブル９０４に記憶された図５のスライド畳み込み３１０の出力（例えば、Ｊ、Ｌ、Ｎ、Ｐ、Ｚ、Ｂ、Ｄ、及びＦ）のアドレス５０２であり得る。これらは、観測ユニット８１０がモニタリングする畳み込み出力アドレスであり、例えば、畳み込みスライドウィンドウが畳み込みデータ又は抽出結果の集合を生成することに応答して、畳み込みコンポーネント２１２、ＲＥＬＵコンポーネント２１４、又は他のコンポーネントにより対応するテーブル９０４の列１に書き込むことができる。
【００７５】
各畳み込みウォッチアドレスには、例えば、図４のプーリング出力４０２に関連する対応するプーリング出力アドレスであり得る。プーリング出力４０２（例えば、Ｂ、Ｋ、Ｅ、Ｐ、Ｚ、Ａ、Ｕ、Ｘ）のアドレスロケーション（プーリング出力アドレス）は、特定のテーブル（例えば、９０４ａ又は他のテーブル）に関連する指定されたプーリングコンポーネント２１６に対応するプーリングアドレスであり得る。出力９０８のプーリング出力アドレスは、層２０６の対応するプーリングコンポーネント２１６がその出力を書き込むことができるメモリロケーションを含むことができる。
【００７６】
これらの畳み込み出力３１０の１つが利用可能であることを、テーブル９０４及びトランザクションマッチユニットコンポーネント９０６を含む観測ユニット８１０が検出すると、又は畳み込み出力の１つに対応するメモリロケーションの畳み込みウォッチアドレスが書き込まれたことを観測ユニット８１０が検出すると直ちに、観測ユニット８１０は、トランザクションマッチユニットコンポーネント９０６を介して、例えばコプロセッサ８１２として対応するプーリングコンポーネント２１６への出力９０８のトリガーを瞬時に生成する（アクセスマッチ出力として）。アクセスマッチ出力９０８は、畳み込み／結合コンポーネント２１２、２１４が、特定のデータブロック（例えば、非線形畳み込み出力データ／畳み込みコンポーネント出力の１つの２×２ブロック）での畳み込みスライドウィンドウを用いた作業を完了したことを示す。アクセスマッチは、対応するテーブル９０４が書き込まれたとき及び特定のブロックサイズ（畳み込み出力データ／非線形畳み込み出力データの非重複ブロック）の最後の要素が利用可能であることを示す、特定のテーブル９０４ａ〜９０４ｎに対応するプーリングコンポーネント２１６に提供されるトリガーであり得、したがって利用可能なデータブロックを用いてプーリング演算を実行する指示信号であり得る。したがって、アクセスマッチは、利用可能なデータを用いてスケール不変データとしてプーリング出力の生成を開始するように、対応するプーリングコンポーネント２１６を始動させるトリガー信号／指示／イベントであり得る。
【００７７】
加えて、観測ユニット８１０は、トランザクションマッチユニットコンポーネント９０６を介して、畳み込み層識別情報（ＩＤ）／畳み込みコンポーネントＩＤを介して書き込まれたメモリロケーションに対応するテーブルを含め、プーリングウィンドウの詳細を示し、それにより、このＩＤに対応するプーリングコンポーネント２１６は、それに従ってアクティブ化し、特定のテーブル９０４でのプーリング演算のために対応するデータ（畳み込みウォッチアドレス／プーリング出力アドレス）を受信する。複数の畳み込みコンポーネントは、それぞれ各テーブルに対応し、同様に、複数のプーリングコンポーネントは、それぞれ様々な畳み込みコンポーネント／結合層（畳み込みコンポーネント＋ＲＥＬＵコンポーネント）に対応するため、プーリングコンポーネント２１６に、様々な畳み込みコンポーネントのいずれがトリガーを担当するかについての情報を提供することができる。次に、スケール不変データを書き込むために、プーリングコンポーネント２１６によりプーリング出力アドレスを利用することができる。
【００７８】
図１０を参照すると、ＣＮＮのプーリングプロセッサとして一例としてのプーリングコンポーネント２１６及びコプロセッサ８１２を示す。プーリングコンポーネント２１６は、１つ又は複数のストライドレジスタ１００２、１つ又は複数の統計演算（Ｏｐ）レジスタ１００４、ロード／ストアユニット１００６、及び統計演算エンジン１００８を含むことができる。コプロセッサ８１２は、全体として、対応するテーブル９０４（例えば、テーブル９０４ａ〜９０４ｎのいずれか１つ）を介して出力９０８として、プーリングウィンドウの詳細、すなわちプーリング入力アドレス、プーリング出力アドレス、畳み込み層ＩＤ、及びマッチ信号として、インターフェース信号を対応するテーブル９０４から受信する。
【００７９】
プーリングコンポーネント２１６のそれぞれは、２つのレジスタ：ストライドレジスタ１００２及び統計演算レジスタ１００４を含むことができる。ストライドレジスタ１００２は、メモリ内の非連続データ又はデータセット間のロケーション距離を与えられるようにし、これは、データを検索し処理するために利用することができる。
【００８０】
例えば、畳み込み出力３１０  Ａ、Ｂ、Ｉ、及びＪの第１のウィンドウでは特に、例えば畳み込み出力／非線形畳み込み出力データの様々な値をＡと共にメモリロケーション１０に、Ｂと共にメモリロケーション１１に、Ｃと共にメモリロケーション１２に、Ｄと共にメモリロケーション１３に、Ｅと共にメモリロケーション１４に、Ｆと共にメモリロケーション１５に、Ｇと共にメモリロケーション１６に、Ｈと共にメモリロケーション１７に、Ｉと共にメモリロケーション１８に、Ｊと共にメモリロケーション１９に記憶することができる。したがって、Ａ、Ｂ、Ｉ、及びＪ（すなわちスライド畳み込みウィンドウの出力／プーリング層入力）は、厳密には連続ロケーションにない。Ａ及びＢは、単に互いに隣接して存在している。Ｉ及びＪは、例えば、互いに隣り合うことができるが、Ａ及びＢは、Ｉ及びＪに隣接しない。したがって、ストライドレジスタ１００２は、ストライド長／距離としてＢからＩの非連続距離を検索し、記憶し、又はコプロセッサ８１２／プーリングコンポーネント２１６に示す。
【００８１】
トリガーがアクセスマッチ信号の形態で受信されると直ちに、プーリングコンポーネント２１６は、畳み込みコンポーネント／層ＩＤを特定し、畳み込み層ＩＤがそれ自体又は特定のプーリングコンポーネント２１６に対応するか否かを判断することができる。一態様では、プーリングコンポーネント２１６と畳み込み／ＲＥＬＵコンポーネント２１２／２１４との間に１対１のマッピングがあり得る。したがって、２０の結合層２３０がある場合、例えば、同数の対応するプーリングコンポーネント２１６があり得る。したがって、畳み込み層の識別情報が利用可能になると直ちに、対応するプーリングコンポーネント２１６は、ストライドレジスタ１００２を介してストライド長を識別し、プーリングコンポーネント２１６は、どこで停止するか、すなわち畳み込みウォッチアドレス（畳み込み出力データ／非線形畳み込み出力データの非重複ウィンドウの最後のデータであるデータの最後のアドレス）を知る。
【００８２】
ロードストアユニット１００６は、ストライドレジスタ１００２からのストライド情報を使用し、Ａ、Ｂ、Ｉ、及びＪ又は畳み込み出力データ／非線形畳み込み出力データのブロックを統計演算エンジン１００８に提供することができるメモリアクセスユニットとして構成され、統計演算エンジン１００８は、対応する統計演算レジスタ１００４において指定される４要素のデータ（例えば、２×２非重複ブロック）に対して統計演算を実行するように構成される。統計演算は、例えば、最大であり得、畳み込み層２３０コンポーネントとプーリングコンポーネント２１６との対応する一致に応じて、本明細書に指定されるように同じ演算又は異なる演算であり得る。統計演算が実行されると、出力値は、対応するテーブル（例えば、９０４ａ）内のプーリング出力アドレスにより示されるアドレスに記憶することができ、ロードストアユニット１００６によりメモリロケーションへのデータの記憶が再び行われる。
【００８３】
相互接続８０６は、ＣＮＮの様々なコンポーネントを接続する相互接続（例えば、オンチップバス相互接続）を含むことができる。Ｓポート１０１２は、スレーブポートであり、Ｍポート１０１０は、マスタポートである。スレーブポート１０１２は、例えば、ストライドレジスタ１００２及び統計演算レジスタ１００４のプログラムに使用することができる。マスタポート１０１０は、例えば、ロードストアユニット１００６がメモリからデータをフェッチし、再びデータをメモリに記憶するのに使用することができる。
【００８４】
図１１を参照すると、プロセス又は状態フロー例１１００を示す。メインＣＰＵ８０８、テーブル９０４を有する観測ユニット、プーリングコンポーネント２１６又は接続された他のコンポーネント、及びレジスタ９０４、１００２、１００４／メモリ８１４を含め、様々なＣＮＮ層の態様が表され、レジスタ９０４、１００２、１００４／メモリ８１４から畳み込みデータ出力をフェッチ／記憶することができ、場合により同じ／異なるメモリにプーリング層の出力を返すことができる。プロセスフロー１１００は、ソフトウェアが、テーブル９０４又は本明細書に記載される他のテーブルをプログラムする図８のメインＣＰＵ８０８で実行されて開始される。
【００８５】
１１０２において、テーブル９０４ａに、デバッグ／観測ユニットにおいて、例えば対応する非重複データブロック（例えば、畳み込みスライドウィンドウ演算から生じる２×２ブロックの畳み込みの出力）の最後の値としてＪ、Ｌ、Ｎ、Ｐ、Ｚ、Ｅ、Ｂ、Ｄ、Ｆのアドレスを入れることができる。
【００８６】
その後、１１０４において、プーリングプロセッサに、ストライド情報又はストライド及び統計演算等の続けて実行されるプーリング演算のパラメータをプログラムすることができる。
【００８７】
１１０６において、畳み込み層は、メインプロセッサ８０８及び観測ユニットを用いて動作することができ、畳み込みの出力が記憶されることが意図されるアドレスへのアクセス又は書き込みアクセスについてモニタリングする。これが生じると直ちに、デバッグ／観測ユニット８１０は、データブロックの可用性についてプーリングコンポーネント／プロセッサ（ｐｒｏｃ）２１６に通知する。
【００８８】
１１０８において、テーブル９０４において指定されたメモリロケーションへの書き込みアクセスが検出されると、詳細をテーブル９０４から検索して出力信号９０８を更新し、プーリングコンポーネント２１６に転送することができる。
【００８９】
１１１０において、プーリングコンポーネント２１６は、近傍データをフェッチすることができ、この例では、例えばＪ、Ｊのアドレスロケーションに更新が行われたことを観測ユニットが示した場合、プーリングコンポーネント２１６は、２×２ブロック（又は他のサイズの非重複ブロック）を完成するためにＡ、Ｂ、及びＩ、又は対応し関連するデータブロックのデータをフェッチしなければならないことを知る。次に、それらの４つ全てが利用可能になると、１１１２において迅速に統計処理を行う。次に、１１１４において、出力は、このプーリングコンポーネント２１６に指定又は関連するテーブル内のプーリング出力アドレスにより決定されるメモリロケーションに返される。
【００９０】
図２及び本明細書における他の図に関して上述したように、畳み込み及びプーリングコンポーネント２１２／２１４及び２１６は、計算利得における第１の加速及び観測されるより低い／同じ電力効率として、並列にパイプライン化（又はパイプライン処理を用いて利用）することができる。畳み込み出力の部分／サブセットが検出されると直ちに、同じ又は他の畳み込み／ＲＥＬＵコンポーネント２１２、２１４がデータブロックの他のウィンドウを処理し出力し始める間、プーリングコンポーネント２１６を開始することができる。
【００９１】
図１２を参照すると、ＦＣ層２０８のＦＣコンポーネント２１８の一例を示す。これは、畳み込みコンポーネント２１２／結合コンポーネント２３０（畳み込み２１２＋ＲＥＬＵコンポーネント２１４及びプーリングコンポーネント２１６）間のパイプライン処理演算を用いた第１の加速を更に補足する、電力を増やすことなく計算利得を更に上げるために行うことができるＦＣ層２０８での第２の加速を示す。ＦＣ層１２００は、全結合層の加速を示す。
【００９２】
ＦＣ層２０８においてＡＮＮを形成する各ニューロンは、第１のＦＣ層ＦＣ１においてＮ１、Ｎ２、Ｎ３と記される円により、及び第２のＦＣ層ＦＣ２の一部としてＮ４及びＮ５により表すことができる。Ｎ４及びＮ５は、表されるようにＮ１、Ｎ２、及びＮ３である先の層の出力のそれぞれに接続される。したがって、Ｎ１の出力は、Ｎ４及びＮ５の両方への入力として提供される。同様に、Ｎ２の出力はＮ４及びＮ５の両方に入力され、Ｎ３も同じである。同様に、３つ全てのニューロンＮ１、Ｎ２、及びＮ３は、入力Ｘ１、Ｘ２、及びＸ３の同じ集合に接続され、データフロープロセッサとして構造化される。Ｎ１、Ｎ２、及びＮ３に供給されるのは、入力Ｘ１、Ｘ２、及びＸ３の同じ集合である。したがって、全結合層２１８において、ニューロンの出力は、任意の数の複数のＦＣ層を含むことができる次の層におけるあらゆる入力に接続される。更に、ＦＣ１の全てのニューロンはＦＣ２の全ての入力に接続され、ここで、Ｗ１〜Ｗ１５は、対応する入力データの処理又は考慮の一環として、各入力に割り当てられる特定の重み又は各入力が加重されるべき量を定義する特定の重みを表す。
【００９３】
図１３を参照すると、例えば、図２のニューロン構造のネット関数２２２、２２６及び出力関数２２４、２２８のより詳細な別の実施形態を示す。
【００９４】
図２のニューロン構造に関して上述したように、各ニューロンは、少なくとも２つの関数を含むことができる。一方の関数は、ネット関数と呼ぶことができ、ＮＦとして注釈付けられ、他方は、出力関数と呼ぶことができ、ＯＦとして注釈付けられる。ネット関数により実行される数学的演算は、割り当てられた／予め定義された／所与の重みとの入力のドット積乗算であり得る。
【００９５】
例えば、Ｎ１の関数は、ＮＦ１及びＯＦ１として注釈付けられる。同様に、ニューロン２のネット関数及び出力関数は、ＮＦ２及びＯＦ２として注釈付けられ、ニューロンＮ３〜Ｎ５、ＮＦ３〜ＮＦ５、及びＯＦ３〜ＯＦ５でも同様である。特定のＦＣ層（例えば、ＦＣ１、ＦＣ２）のニューロンのそれぞれ１つは、他と全く同じ入力の集合であるが、Ｎ１ではＷ１、Ｗ２、Ｗ３、他のニューロンでは異なる他の重み  −  ニューロン２ではＷ４、Ｗ５、Ｗ６及びＮ３ではＷ７、Ｗ８、Ｗ９  −  等の各入力に関連する重みが異なるか又は様々である入力を受信するネット関数を有する。ニューロン（又はＦＣコンポーネント２１８）の各ネット関数は、以下に表されるように、現れる入力を重みで乗算する（例えば、ｘ１をＷ１で乗算し、ｘ２をＷ２で乗算したものに加算し、ｘ３をＷ３で乗算したものに加算し、他のニューロンＮ２及びＮ３についても同様）数学的演算を実行することができる：ネット関数＝ｘａ．（Ｗａ）＋ｘｂ．（Ｗｂ）＋．．．．．．．＋ｘｍ．（Ｗｍ）。
【００９６】
更に、各ニューロンの出力関数は、ネット関数の出力をとることができ、したがって、ネット関数の出力は、そのニューロンの出力関数への入力として機能する。したがって、各ニューロンの出力関数（ＯＦ）は、ネット関数の出力に対して既知の数学的関数（例えば、シグモイド、双曲正接、サイン（ｓｉｇｎ）等又は他の数学的関数）を実行することができ、次にＦＣ２における次段階のニューロンへの入力になり、例えば任意の数の複数のＦＣ層に応じて以下同様である。
【００９７】
図１４を参照すると、更なる表現として図２のＦＣ層２０８の詳細と同様又は同じである、図１３のＦＣ層１３００のデータ従属性グラフ１４００を示す。ＦＣ１の第１の段階では、ＮＦ１、ＮＦ２、及びＮＦ３は、互いの隣に並び、ＯＦ１、ＯＦ２、及びＯＦ３も同じＦＣ１において下に並ぶ。例えば、ＮＦ１は、ＯＦ１において終端し、ＮＦ２は、ＯＦ２において終端又はＯＦ２の出力に接続し、ＮＦ３もＯＦ３で同様である。データフロープロセッサ／処理と同様に、線又は矢印は、ＯＦ１が、データをＮＦ１から受信するまで実行を開始しないことを示す。各ＯＦにおける処理は、入力においてデータが利用可能であることに応答して開始される。同様に、ＯＦ２も、ＮＦ２からデータを受信するまで実行を開始しない。更に、ＯＦ３も、ＮＦ３からのデータを受信するまで実行を開始しない。
【００９８】
ＦＣ２の次段階において、前の層ＦＣ１の出力関数の出力として、複数の接続（矢印）がＮＦ４において終端する。同様に、全結合層２０８における各ニューロンも前の層のあらゆる出力に接続される。したがって、ＮＦ４の演算は、ＮＦ４の入力に提供されるＯＦ１〜ＯＦ３の出力の可用性に依存し、ＮＦ５の演算は、ＮＦ５の入力に提供されるＯＦ１〜ＯＦ３の出力の可用性に依存し、ＮＦ６でも同じである。図１４は、図１３と同様であるが、わずかに拡大された異なる表現である。ＡＮＮ又は人工ニューラルネットワークを形成する各段階又は層において任意の数のＦＣコンポーネントを用いて、任意の数のＦＣ層を実施することができる。ＮＦ４は、従属データをＯＦ１〜ＯＦ３から受信すると直ちに、ＯＦ４に入力される出力を生成し、その後にのみ、ＯＦ４は、その結果を生成する。これは、データフロー処理である。
【００９９】
図１４は、ＮＦ１が実行中であり、その関数ＮＦ１が実行すると直ちにＯＦ１に引き継がれるような実行１４０２のクロノグラフを更に示す。その後、ＮＦ２が実行し、ＯＦ２が実行し、次にＮＦ３が実行し、次にＯＦ３が順次実行する。例えば、ＯＦ１、ＯＦ２、及びＯＦ３が実行した場合のみ、ＯＦ４が実行する。したがって、ＯＦ４の出力が生成されるのは、ＮＦ４が利用可能になった後にのみである。
【０１００】
実施形態では、実行１４０４のクロノグラフを用いて、ＦＣ層２０８は、ＮＦ１が計算を完了すると直ちに、ＯＦ１が実行を開始し、ＯＦ１の実行が、入力データが利用可能であることによりトリガーされるようなパイプライン処理を用いて動作することもできる。ＯＦ１が実行中である間、ＮＦ２の実行を妨げるものはなく、したがってＮＦ２の実行もＯＦ１の実行と並行して開始される。ＮＦ２がＮＦ１に続く実行１４０２の前のクロノグラフと比較して、ＯＦ１の実行中、コンポーネント及び技法を利用してＮＦ２を実行することができ、したがってＮＦ２及びＯＦ１の実行が重複する。したがって、ＯＦ６をはるかに早く終えることができ、計算利得が上がる。
【０１０１】
ここで、図１５を参照すると、ＦＣ層２０８におけるパイプライン処理を可能にする観測ユニットコンポーネント８１０の別の態様１５００を示す。テーブル９０４の少なくとも１つのテーブル（例えば、１５１０（ここで、ｎは、任意の整数である））は、観測ユニットコンポーネント８１０とのＦＣ層２０８におけるパイプライン処理を可能にする更なる拡張として、他と異なるテーブルを含むことができる。１５１０を含め、これらのテーブル９０４は、例えば、ＦＣ層２１８のＦＣコンポーネント２０８及び最初にＦＣ１の入力において受信されるプーリングコンポーネント２１６のプーリング出力と併せて動作することができる。ＦＣ層２０８及びＦＣコンポーネント２１６に専用又は割り当てられるのは、１つのテーブル１５１０である。
【０１０２】
テーブル１５１０は、３つの列、すなわちニューロンネット関数の宛先アドレス列１５０２、ニューロン出力関数の宛先アドレス１５０４、及び活性化関数１５０６を含む。一例では、図１３におけるＮＦ１が実行中である場合、全ての乗算及び加算を行う。出力をＯＦ１に提出することができると考えると、ＮＦ１は、その出力を特定のメモリロケーションに書き込む必要があり、そのメモリロケーションは、第１の列１５０２（ニューロンネット関数出力アドレス）に入る。次に、ＮＦ１により生成されたデータであるこのデータは、出力関数ＯＦ１に受け入れられる。ＮＦ１の出力の処理が行われ、次にＯＦ１がその出力をどこかに書き込む必要があり、これは、基本的に、ニューロン活性化関数出力アドレス列１５０４におけるアドレスである。
【０１０３】
しかしながら、出力関数は、ここで、特別なコプロセッサにより実行することができ、特別なコプロセッサには、トランザクションマッチユニット９０６により、対応するニューロンネット関数により生成されたデータの可用性について通知される。特定の一例では、ＮＦ１は、データをＯＦ１に提供する。次に、ＯＦ１は、出力を計算し、それをロケーションに記憶し、ＮＦ１の出力アドレスは、特定の（例えば、最初の）行の最初の列にある。次の列１５０４において、テーブル１５１０は、出力関数ＯＦ１の出力アドレスを管理又は保持し、何を行わなければならないか又はどのような種類の出力関数を適用しなければならないか、シグモイド、ｔａｎｈ、シヌソイド等が同じ行の３列目１５０６に記載される。関数又は各行は、互いに異なってもよく又は同様であってもよい。したがって、ニューロンのネット関数（例えば、ＮＦ１）が出力アドレスに書き込むと直ちに、この演算は、トランザクションマッチコンポーネント９０６を介して検出され、この演算の詳細は、出力１５０８を介してＦＣコンポーネントとしてのコプロセッサに転送される。
【０１０４】
出力１５０８は、入力アドレス及び出力アドレスを含む。入力アドレスは、基本的に、ネット関数が出力を書き込む場所である。出力アドレスは、出力関数の出力のアドレスである。出力関数は、例えば、活性化関数コプロセッサ８１２により実行される。出力関数は、３つの情報出力１５０８の一環として、トランザクションマッチユニット９０６により転送されるトリガー指示／イベントとして入力の１つとして関数セレクタを受信している。これらの３つの情報は、ＦＣ層２０８に指定されたテーブル１５１０の行の各セルからの情報である。関数セレクタは、３番目の列１５０６から入力され、入力アドレスは、最初の列１５０２から入力され、出力アドレスは、２番目の列１５０４から検索されている。
【０１０５】
図１６を参照すると、図１５の出力１５０８の受信コンポーネントとして、例えばＦＣコンポーネント８１２ａ又はＯＦコンポーネントのコプロセッサ８１２の一例１６００を示す。例えば、コプロセッサ８１２の１つとしてのＦＣコンポーネント８１２ａは、出力１５０８を受信する受信側コンポーネントであり得る。ＦＣコンポーネント８１２ａ又はＦＣコンポーネント２１８と同じものは、ロードストアユニット１６０８を含み、ロードストアユニット１６０８は、相互接続マスタポートＭ１６１０を通して、入力アドレスにより示されるメモリロケーションからデータを取得することができ、データを取得し、関数１  １６０２、関数２  １６０４、又は任意の数のコンポーネント関数ｍ  １６０６として注釈付けられるハードウェアの部分に提出する。次に、ロード／ストアユニット１６０８は、その情報が関数セレクタ（ＳＥＬ）と呼ばれるインターフェース又は出力／入力に利用可能であるため、これらの関数１６０２〜１６０６のいずれにこの最近フェッチされたデータを提出するか、又はいずれがデータを処理するかを知る。関数１  １６０２、関数２  １６０４、又はさもなければ１６０６が所与の関数に従って処理の作業を完了すると、その関数（例えば、演算子又は他の処理／数学的関数）により生成されたデータは、ロードストアユニット１６０８により「出力アドレス」で示されるメモリロケーションに記憶される。
【０１０６】
したがって、本明細書に記載されるＦＣコンポーネントのネット関数は、メインＣＰＵで実行することができ、出力関数は、関数コプロセッサで実施されて、ネット関数及び出力関数の実行をパイプライン処理で重複させる。プーリングコンポーネント及び結合層２３０のコンポーネントをパイプライン処理することによる第１の加速と併せて、ＣＮＮは、更なる並列処理のためにプーリングウィンドウの可用性を判断する能力を有して動作することができる。これは、各コンポーネントを介して進行中の畳み込み及びＲＥＬＵ演算と並行して、プーリングウィンドウに対して統計学的演算を開始する能力を含む。更に、ＣＮＮの第２の加速において、ニューロンのネット関数／ＦＣコンポーネントの実行の完了を判断する能力及び次のニューロンのネット関数の実行と重ねてニューロンの活性化関数の実行を開始する能力がある。
【０１０７】
図１７を参照すると、ＦＣ層２０８内の一例のプロセス又は状態フロー１７００を示す。図１１と同様に、プロセスフローは、メインＣＰＵ８０８上のソフトウェア、テーブル１５１０で強化された観測ユニット、及び１つ又は複数の活性化関数コプロセッサ等として接続されるＦＣコンポーネント２１８、及びレジスタ９０４、１００２、１００４／メモリ８１４を含むことができ、レジスタ９０４、１００２、１００４／メモリ８１４から畳み込みデータ出力をフェッチし、場合により同じ／異なるメモリにプーリング層の出力を返すことができる。
【０１０８】
プロセスフロー１７００は、１７０２において開始され、観測ユニット８１０により管理されるテーブルとしてテーブル１５１０をプログラムする図８のメインＣＰＵ８０８でソフトウェアが実行される。
【０１０９】
１７０４において、観測ユニットは、相互接続トランザクションをモニタリングして、ネット関数がアドレスにネット関数出力を書き込んだか否かを判断する。アドレスへの書き込み関数に応答して、観測ユニットは、１７０６においてこれを検出し、１７０８において、ＡＮＮ内の活性化関数コプロセッサ又は次のＦＣコンポーネントにネット関数の出力可用性について通知する。１７１０において、活性化関数コプロセッサは、ネット関数の出力をフェッチし、１７１２において活性化関数をデータに適用し、１７１４において、例えば活性化関数出力をメモリに書き込む。
【０１１０】
本開示内で説明される方法は、一連の動作又はイベントとして本明細書に示され説明されるが、そのような動作又はイベントの示される順序が限定の意味で解釈されるべきではないことが理解される。例えば、幾つかの動作は、本明細書に示され及び／又は説明される順序から離れて、異なる順序で及び／又は他の動作又はイベントと同時に行うことができる。加えて、本明細書における説明の１つ又は複数の態様又は実施形態を実施するために、示される全ての動作が必要であるわけではない。更に、本明細書に示される動作の１つ又は複数は、１つ又は複数の別個の動作及び／又はフェーズで実行し得る。
【０１１１】
図１８を参照すると、本開示に記載される様々な態様／実施形態／詳細による、ＣＮＮにおける異なるパイプライン処理を用いた様々な加速を利用するプロセスフロー１８００を示す。方法１８００は、１８０２において開始され、１つ又は複数のプロセッサ（例えば、畳み込みコンポーネント２１２）を介して、１つ又は複数の画像からデータを抽出する畳み込み演算を実行する。
【０１１２】
１８０４において、畳み込みコンポーネントは、細部は階層であり得るデータセットとして畳み込みデータを１つ又は複数の正規化線形関数（ＲＥＬＵ）２１４に提供し、ＲＥＬＵ２１４は、次に畳み込み層２０２又は結合層２３０の一環として非線形畳み込み出力データを生成する。
【０１１３】
１８０６において、プーリングコンポーネント２１６は、データ及びデータウィンドウ（例えば、プーリングウィンドウ）の可用性のトリガーを受信することができ、データウィンドウは、非線形畳み込み出力データの様々なデータセットからのデータの非重複ウィンドウであり得る。プーリングコンポーネント２１６は、非線形畳み込み出力データのサブセットであるプーリングウィンドウ及び画像で生成中の畳み込みデータに基づいて、畳み込み演算と並行してプーリング演算をデータブロックに対して開始することができる。プーリングコンポーネント２１６は、観測ユニット８１０によるこのデータウィンドウの可用性により、且つ処理が出力をメモリに書き込んだ後にトリガーされる。
【０１１４】
他の実施形態では、方法１８００は、ＡＮＮの第１の全結合ＦＣ層において、第１のネット関数ノードの第１のネット関数出力を第１の出力関数ノードに提供することを更に含むことができる。第１の出力関数ノードの第１の出力関数出力は、次に、ＡＮＮ出力を生成するように構成された続くＦＣ層の第２のネット関数ノードに提供することができる。第１のネット関数（例えば、ＮＦ１）の完了は、観測コンポーネント８１０により判断することができ、後続層に対して第１のノードの第１のネット関数の完了をトリガーすることができ、後続層では、パイプライン処理を介して第１のＦＣ層の出力関数を生成する第１の出力ネットワークノードと並行して第２のノードの第２のネット関数を処理することができる。
【０１１５】
１８０８において、方法は、プーリング出力に基づいてＡＮＮの人工ＡＮＮ出力を提供することを更に含む。ＡＮＮ出力は、ＦＣ層２０８の出力であり得、次にこれを更に使用して、例えばセンサデータの画像内の特定のパターン／高レベル特徴の認識又は特定のために確率に分類される。パターンの認識から様々な状況を特定することもでき、次に、様々な状況が存在するか否かに基づいて、歩行者が走行路にいる場合、ブレーキ等の判断をシステム内で下すことができる。
【０１１６】
アプリケーション（例えば、プログラムモジュール）は、特定のタスクを実行し、及び／又は特定の抽象データ型を実施するルーチン、プログラム、コンポーネント、データ構造等を含む。更に、開示される動作が、１つ又は複数の関連するデバイスにそれぞれ動作可能に結合することができるシングルプロセッサ又はマルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ、パーソナルコンピュータ、ハンドヘルド計算デバイス、マイクロプロセッサベース若しくはプログラマブル消費者電子機器等を含め、他のシステム構成を用いて実施し得ることを当業者は認識する。
【０１１７】
計算デバイスは、通常、様々なコンピュータ可読媒体を含むことができる。コンピュータ可読媒体は、コンピュータによりアクセス可能であり、揮発性媒体及び不揮発性媒体の両方、リムーバブル媒体及び非リムーバブル媒体の両方を含む任意の利用可能な媒体であり得る。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータ等の情報を記憶する任意の方法又は技術で実施される揮発性媒体及び不揮発性媒体の両方、リムーバブル媒体及び非リムーバブル媒体の両方を含む。コンピュータ記憶媒体（例えば、１つ又は複数のデータストア）は、限定ではなく、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、若しくは他のメモリ技術、ＣＤ  ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、若しくは他の磁気記憶装置、又は所望の情報の記憶に使用することができ、コンピュータによりアクセス可能な任意の他の媒体を含むことができる。
【０１１８】
通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波若しくは他の輸送機構等の変調データ信号に含まれる他のデータを具現し、任意の情報送出媒体を含む。用語「変調データ信号」は、１つ又は複数の信号に情報を符号化するのと同様に設定又は変更される特性の１つ又は複数を有する信号を指す。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続等の有線媒体及び音響、ＲＦ、赤外線、及び他の無線媒体等の無線媒体を含む。上記の任意の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０１１９】
例は、方法、方法の動作又はブロックを実行する手段、機械により実行されると、本明細書に記載される実施形態及び例に従って複数の通信技術を使用して同時通信する方法の動作又は装置若しくはシステムを機械に実行させる命令を含む少なくとも１つの機械可読媒体等の主題を含むことができる。
【０１２０】
例１は、畳み込みニューラルネットワーク（ＣＮＮ）のためのシステムであって、１つ又は複数の画像からデータを抽出し、且つ非線形畳み込み出力データを出力するように構成される１つ又は複数の正規化線形関数（ＲＥＬＵ）にデータを提供する畳み込み演算を実行するように構成される畳み込みコンポーネントと、非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、畳み込み演算と並行してパイプラインプロセスを介してプーリング出力を生成するように構成されるプーリングコンポーネントと、プーリング出力に基づいてＡＮＮ出力を提供する人工ニューラルネットワーク（ＡＮＮ）を形成し、且つＡＮＮ出力に基づいて１つ又は複数の画像におけるパターンの認識を可能にするように構成される全結合（ＦＣ）コンポーネントとを含むシステムである。
【０１２１】
例２は、例１の主題を含み、プーリングコンポーネントは、プーリングウィンドウの可用性を特定し、且つ非線形畳み込み出力データの異なるサブセットに対応する複数のプーリングウィンドウを処理するように更に構成される。
【０１２２】
例３は、任意選択的に任意の要素を包含又は省略して、例１又は２のいずれか１つの主題を含み、ＦＣコンポーネントは、ニューロンの後続層に結合されるニューロンの第１の層を含み、第１の層及び後続層のニューロンは、ネット関数出力を提供するように構成されるネット関数ノードと、ネット関数出力から出力関数出力を生成するように構成される出力関数ノードとをそれぞれ含む。
【０１２３】
例４は、任意選択的に任意の要素を包含又は省略して、例１〜３のいずれか１つの主題を含み、ニューロンの第１の層は、少なくとも１つの先行層から、プーリング出力、畳み込みコンポーネントからのデータ、又は非線形畳み込み出力データの少なくとも１つを含む出力を受け取る同じネット関数入力の第１の集合を有する第１のニューロンをそれぞれ含み、及びニューロンの後続層は、ニューロンの第１の層から同じ出力を受け取る同じネット関数入力の第２の集合を有する第２のニューロンをそれぞれ含む。
【０１２４】
例５は、任意選択的に任意の要素を包含又は省略して、例１〜４のいずれか１つの主題を含み、ネット関数ノードは、それぞれ入力及び入力に関連する重みのドット積乗算及び対応する結果の合算を実行するように構成され、及び出力関数ノードは、ネット関数出力に活性化関数を実行して、ＦＣコンポーネントの出力を提供するように構成され、第１のニューロンの出力関数ノードは、別のパイプラインプロセスを介して第２のニューロンのネット関数ノードと並行して動作する。
【０１２５】
例６は、任意選択的に任意の要素を包含又は省略して、例１〜５のいずれか１つの主題を含み、プーリングコンポーネントは、非線形畳み込み出力データのボリュームの低減を生成し、且つ非線形畳み込み出力データを処理して、ＦＣコンポーネントに提供されるプーリング出力としてスケーリング不変データにするように更に構成される。
【０１２６】
例７は、任意選択的に任意の要素を包含又は省略して、例１〜６のいずれか１つの主題を含み、畳み込みコンポーネントとのプーリングコンポーネントのパイプラインプロセスに対応する１つ又は複数の第１のテーブルを含む観測ユニットコンポーネントと、畳み込みコンポーネントによる、１つ又は複数の第１のテーブル内にあるメモリロケーションへの書き込み動作を検出し、且つ畳み込みコンポーネントが１つ又は複数の第１のテーブル内のメモリロケーションへの書き込み動作を実行することに応答して、プーリングコンポーネントの統計学的演算をトリガーし、且つ１つ又は複数の第１のテーブルからプーリングコンポーネントへの複数の出力を生成するように構成されるトランザクションウォッチコンポーネントとを更に含む。
【０１２７】
例８は、任意選択的に任意の要素を包含又は省略して、例１〜７のいずれか１つの主題を含み、複数の出力は、プーリングウィンドウに関連するマーカを識別する１つ若しくは複数の第１のテーブルの畳み込みウォッチアドレスに関連するプーリング入力アドレス、プーリングコンポーネントの演算へのトリガー、統計学的演算の結果を有する１つ若しくは複数の第１のテーブル内のアドレスを指すプーリング出力アドレス、又は１つ若しくは複数の第１のテーブルをプーリングコンポーネントに関連付ける畳み込み層識別子（ＩＤ）の少なくとも１つを含む。
【０１２８】
例９は、任意選択的に任意の要素を包含又は省略して、例１〜８のいずれか１つの主題を含み、ＦＣ層に関連する第２のテーブルは、ＦＣコンポーネントのネット関数ノードのネット関数出力に対応するニューロンネット関数出力アドレス、出力関数ノードのＡＮＮ出力に対応するニューロン活性化出力アドレス、及び出力関数ノードによって実行される活性化関数の少なくとも１つを含む。
【０１２９】
例１０は、畳み込みニューラルネットワーク（ＣＮＮ）のための装置であって、メモリに結合される１つ又は複数のプロセッサを含み、メモリは、１つ又は複数のプロセッサの動作を実行する命令を含み、１つ又は複数のプロセッサは、１つ又は複数の画像から、１つ又は複数のフィルタカーネルを介して、畳み込みデータセットを含むデータ特徴を抽出することと、畳み込みデータセットを非線形出力データの集合に変換することと、非線形出力データの集合のうちの非線形データの第１の集合又は畳み込みデータセットの畳み込みデータの第１の集合が利用可能であると判断することに応答して、データ特徴の抽出又は畳み込みデータセットの変換の少なくとも一方と並行して動作するパイプラインプロセスを介して、非線形出力データの集合に対するプーリング演算からプーリング出力を生成することとを行うように構成される、装置である。
【０１３０】
例１１は、例１０の主題を含み、１つ又は複数のプロセッサは、１つ又は複数の画像の部分にわたってスライドする１つ又は複数の畳み込みウィンドウを用いてスライド畳み込みを実行することにより、データ特徴を抽出して、１つ又は複数の画像の特徴マップを生成し、且つ１つ又は複数の畳み込みウィンドウに対応するデータ特徴が存在する確率を特定するように更に構成される。
【０１３１】
例１２は、任意選択的に任意の要素を包含又は省略して、例１０〜１１の主題を含み、１つ又は複数のプロセッサは、畳み込みデータセットの畳み込みデータの第１の集合を処理して、プーリングウィンドウに基づいて畳み込みデータのスケーリング不変集合にするプーリング演算と並行した畳み込み演算を介して、１つ又は複数の画像から畳み込みデータセットの畳み込みデータの第２の集合を抽出するように更に構成される。
【０１３２】
例１３は、任意選択的に任意の要素を包含又は省略して、例１０〜１２の主題を含み、１つ又は複数のプロセッサは、非線形データの集合に対応するプーリング出力をカテゴリに分類することにより、全結合（ＦＣ）コンポーネントを介してプーリング出力を処理するように更に構成される。
【０１３３】
例１４は、任意選択的に任意の要素を包含又は省略して、例１０〜１３の主題を含み、１つ又は複数のプロセッサは、第１のＦＣコンポーネントにおけるプーリング出力からの入力及び重み並びに加重入力の和のドット積を含むネット関数を実行することと、第１のＦＣコンポーネントにおけるニューロンネット関数出力に対して出力関数を実行して、後続するＦＣコンポーネントにおける別のドット積及びプーリング出力からの入力の別の和を含む別のネット関数の実行と並行してニューロン活性化関数出力を生成して、第２のニューロンネット関数出力を生成することとを行うように更に構成される。
【０１３４】
例１５は、任意選択的に任意の要素を包含又は省略して、例１０〜１４の主題を含み、第１のＦＣコンポーネント及び後続するＦＣコンポーネントは、メモリから命令をフェッチすることなく、且つプーリング出力からの入力データ又は先行するＦＣコンポーネントがニューロン入力において利用可能であることに応答して動作するデータフロープロセスを含む。
【０１３５】
例１６は、任意選択的に任意の要素を包含又は省略して、例１０〜１５の主題を含み、１つ又は複数のプロセッサは、ネット関数出力に対応するニューロンネット関数出力アドレス、ニューロンの出力に対応するニューロン活性化関数出力アドレス、及びニューロンの出力関数によって実行される活性化関数のエントリを含むテーブルを埋めて、ネット関数出力に基づいてニューロンの出力を生成するように更に構成される。
【０１３６】
例１７は、畳み込みニューラルネットワーク（ＣＮＮ）のための方法であって、１つ又は複数のプロセッサを介して、１つ又は複数の画像からデータを抽出する畳み込み演算を実行することと、１つ又は複数のプロセッサを介して、非線形畳み込み出力データを生成するように構成される１つ又は複数の正規化線形関数（ＲＥＬＵ）にデータを提供することと、１つ又は複数のプロセッサを介して、非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、畳み込み演算と並行してプーリング出力を生成することと、１つ又は複数のプロセッサを介して、プーリング出力に基づいて人工ニューラルネットワーク（ＡＮＮ）のＡＮＮ出力を提供することとを含む方法である。
【０１３７】
例１８は、例１７の主題を含み、プーリングウィンドウの可用性の判断を生成し、且つ非線形畳み込み出力データの異なるサブセットに対応する複数のプーリングウィンドウを処理することを更に含む。
【０１３８】
例１９は、任意選択的に任意の要素を包含又は省略して、例１７〜１８の主題を含み、ＡＮＮの第１の全結合（ＦＣ）層において、第１のネット関数ノードの第１のネット関数出力を第１の出力関数ノードに提供することと、ＡＮＮ出力を生成するように構成される後続するＦＣ層の第２のネット関数ノードに第１の出力関数ノードの第１の出力関数出力を提供することとを更に含む。
【０１３９】
例２０は、任意選択的に任意の要素を包含又は省略して、例１７〜１９の主題を含み、第１のネット関数ノードのうちの第１のネット関数ノードの完成を判断することと、完成に応答して、第１のＦＣ層の出力関数を生成する第１の出力ネットワークノードと並行して第２のネット関数ノードの第２のネット関数を開始することとを更に含む。
【０１４０】
本明細書に記載される態様がハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せにより実施可能であることを理解されたい。ソフトウェアで実施される場合、機能は、コンピュータ可読媒体上の１つ又は複数の命令又はコードとして記憶又は伝送し得る。コンピュータ可読媒体は、コンピュータ記憶媒体及びある場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体の両方を含む。記憶媒体は、汎用又は専用コンピュータによりアクセスすることができる任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、若しくは他の光ディスク記憶装置、磁気ディスク記憶装置、若しくは他の磁気記憶装置、又は命令若しくはデータ構造の形態で所望のプログラムコード手段を搬送若しくは記憶するのに使用することができ、汎用若しくは専用コンピュータ若しくは汎用若しくは専用プロセッサによりアクセス可能な任意の他の媒体を含むことができる。また、任意の接続も適宜コンピュータ可読媒体と呼ばれる。例えば、ソフトウェアが同軸ケーブル、光ファイバケーブル、撚り対線、デジタル加入者回線（ＤＳＬ）、又は赤外線、電波、及びマイクロ波等の無線技術を使用してウェブサイト、サーバ、又は他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、撚り対線、ＤＳＬ、又は赤外線、電波、及びマイクロ波等の無線技術は、媒体の定義に含められる。本明細書で使用される場合、ディスク（ｄｉｓｋ）及びディスク（ｄｉｓｃ）は、コンパクトディスク（ＣＤ）、レーザディスク、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピーディスク、及びブルーレイディスクを含み、ディスク（ｄｉｓｋ）は、通常、データを磁気的に再生成し、一方、ディスク（ｄｉｓｃ）は、レーザを用いてデータを光学的に再生成する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０１４１】
本明細書に開示される態様と併せて説明された様々な例示的な論理、論理ブロック、モジュール、及び回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）若しくは他のプログラマブル論理デバイス、離散ゲート若しくはトランジスタ論理、離散ハードウェアコンポーネント、又は本明細書に記載される機能を実行するように設計されるそれらの任意の組合せを用いて実施又は実行し得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替では、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、又は状態機械であり得る。プロセッサは、計算デバイスの組合せ、例えばＤＳＰ及びマイクロプロセッサの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと併せた１つ又は複数のマイクロプロセッサ、又は任意の他のそのような構成として実施することもできる。更に、少なくとも１つのプロセッサは、本明細書に記載される動作及び／又はアクションの１つ又は複数を実行するように動作可能な１つ又は複数のモジュールを含み得る。
【０１４２】
ソフトウェア実施の場合、本明細書に記載される技法は、本明細書に記載される機能を実行するモジュール（例えば、プロシージャ、関数等）を用いて実施し得る。ソフトウェアコードは、メモリユニットに記憶し、プロセッサにより実行し得る。メモリユニットは、プロセッサ内で実施してもよく、又はプロセッサ外で実施してもよく、プロセッサ外の場合、メモリユニットは、当技術分野で既知の様々な手段を通してプロセッサに通信可能に結合し得る。更に、少なくとも１つのプロセッサは、本明細書に記載される機能を実行するように動作可能な１つ又は複数のモジュールを含み得る。
【０１４３】
本明細書に記載される技法は、ＣＤＭＡ、ＴＤＭＡ、ＦＤＭＡ、ＯＦＤＭＡ、ＳＣ−ＦＤＭＡ、及び他のシステム等の様々な無線通信システムに使用し得る。「システム」及び「ネットワーク」という用語は、多くの場合、同義で使用される。ＣＤＭＡシステムは、ユニバーサル地上無線アクセス（ＵＴＲＡ）、ＣＤＭＡ２０００等の無線技術を実施し得る。ＵＴＲＡは、広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ）及びＣＤＭＡの他の変形を含む。更に、ＣＤＭＡ２０００は、ＩＳ−２０００、ＩＳ−９５、及びＩＳ−８５６標準を包含する。ＴＤＭＡシステムは、モバイル通信用グローバルシステム（ＧＳＭ）等の無線技術を実施し得る。ＯＦＤＭＡシステムは、進化型ＵＴＲＡ（Ｅ−ＵＴＲＡ）、ウルトラモバイルブロードバンド（ＵＭＢ）、ＩＥＥＥ８０２．１１（Ｗｉ−Ｆｉ）、ＩＥＥＥ８０２．１６（ＷｉＭＡＸ）、ＩＥＥＥ８０２．２０、フラッシュＯＦＤＭ等の無線技術を実施し得る。ＵＴＲＡ及びＥ−ＵＴＲＡは、ユニバーサルモバイルテレコミュニケーションシステム（ＵＭＴＳ）の一部である。３ＧＰＰロングタームエボリューション（ＬＴＥ）は、ダウンリンクでＯＦＤＭＡを使用し、アップリンクでＳＣ−ＦＤＭＡを使用する、Ｅ−ＵＴＲＡを使用するＵＭＴＳのリリースである。ＵＴＲＡ、Ｅ−ＵＴＲＡ、ＵＭＴＳ、ＬＴＥ、及びＧＳＭは、「第３世代パートナーシッププロジェクト」（３ＧＰＰ）という名称の組織からの文書において説明されている。更に、ＣＤＭＡ２０００及びＵＭＢは、「第３世代パートナーシッププロジェクト２」（３ＧＰＰ２）という名称の組織からの文書において説明されている。そのような無線通信システムは、ペアになっていないライセンス不要スペクトル、８０２．ｘｘ無線ＬＡＮ、ＢＬＵＥＴＯＯＴＨ、及び任意の他の近距離又は長距離無線通信技法を使用することが多いピアツーピア（例えば、モバイルツーモバイル）アドホックネットワークシステムを含み得る。
【０１４４】
シングルキャリア周波数分割多元アクセス（ＳＣ−ＦＤＭＡ）は、単一の搬送波変調及び周波数領域等化を利用し、開示される態様と共に利用することができる技法である。ＳＣ−ＦＤＭＡは、ＯＦＤＭＡシステムと同様の性能及び基本的に同様の全体複雑性を有する。ＳＣ−ＦＤＭＡ信号は、固有のシングルキャリア構造により、低いピーク対平均電力比（ＰＡＰＲ）を有する。ＳＣ−ＦＤＭＡは、低いＰＡＰＲが送信電力効率に関してモバイル端末で有益であり得るアップリンク通信で利用することができる。
【０１４５】
更に、本明細書に記載される特徴の様々な態様は、標準のプログラミング及び／又は工学技法を使用して方法、装置、又は製品として実施し得る。「製品」という用語は、本明細書で使用される場合、任意のコンピュータ可読デバイス、搬送波、又は媒体からアクセス可能なコンピュータプログラムを包含することが意図される。例えば、コンピュータ可読媒体は、限定ではなく、磁気記憶装置（例えば、ハードディスク、フロッピーディスク、磁気ストライプ等）、光ディスク（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）等）、スマートカード、及びフラッシュメモリデバイス（例えば、ＥＰＲＯＭ、カード、スティック、キードライブ等）を含むことができる。更に、本明細書に記載される様々な記憶媒体は、情報を記憶する１つ又は複数のデバイス及び／又は他の機械可読媒体を表すことができる。「機械可読媒体」という用語は、限定ではなく、命令及び／又はデータを記憶、包含、及び／又は搬送可能な無線チャネル及び様々な他の媒体を含むことができる。更に、コンピュータプログラム製品は、コンピュータに本明細書に記載される機能を実行させるように動作可能な１つ又は複数の命令又はコードを有するコンピュータ可読媒体を含み得る。
【０１４６】
更に、本明細書に開示される態様と併せて説明される方法又はアルゴリズムの動作及び／又はアクションは、ハードウェアで直接、プロセッサにより実行されるソフトウェアモジュールで、又はそれらの組合せで実施し得る。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、又は当技術分野で既知の任意の他の形態の記憶媒体に存在し得る。例示的な記憶媒体は、プロセッサに結合し得、それにより、プロセッサは、記憶媒体と情報を読み書きすることができる。代替では、記憶媒体は、プロセッサに統合し得る。更に、幾つかの態様では、プロセッサ及び記憶媒体は、ＡＳＩＣに存在し得る。更に、ＡＳＩＣはユーザ端末に存在し得る。代替では、プロセッサ及び記憶媒体は、ユーザ端末における個別のコンポーネントとして存在し得る。更に、幾つかの態様では、方法又はアルゴリズムの動作及び／又はアクションは、コンピュータプログラム製品に組み込み得る機械可読媒体及び／又はコンピュータ可読媒体上のコード及び／又は命令の１つ、又は任意の組合せ、又は集合として存在し得る。
【０１４７】
要約書に記載されるものを含め、本開示の示される実施形態の上記説明は、網羅的であるか又は開示される厳密な形態に開示される実施形態を限定することを意図しない。特定の実施形態及び例が例示を目的として本明細書に記載されるが、当業者が認識することができるように、そのような実施形態及び例の範囲内と見なされる様々な変更形態が可能である。
【０１４８】
これに関して、開示される主題について様々な実施形態及び対応する図と併せて説明したが、該当する場合、他の同様の実施形態が使用可能であり、又は開示される主題から逸脱することなく、開示される主題と同じ、同様、代替、又は代わりの機能を実行するために、説明された実施形態に対する変更形態及び追加形態がなされ得ることを理解されたい。したがって、開示される主題は、本明細書に記載されるいずれの１つの実施形態にも限定されるべきではなく、範囲について、以下の添付の特許請求の範囲に従って解釈されるべきである。
【０１４９】
特に上述したコンポーネント又は構造（組立体、デバイス、回路、システム等）により実行される様々な機能に関して、そのようなコンポーネントの説明に使用される用語（「手段」への言及を含む）は、本明細書に示される本発明の例示的な実装形態における機能を実行する開示される機能と構造的に均等でない場合でも、記載されるコンポーネントの指定された機能を実行する任意のコンポーネント又は構造（例えば、機能的に均等である）に、別段のことが指定されない限り対応することが意図される。加えて、特定の特徴は、幾つかの実装形態の１つのみに関して開示され得るが、そのような特徴は、必要に応じて及び任意の所与又は特定の用途に有利であるように他の実装形態の１つ又は複数の他の特徴と組み合わせ得る。
【符号の説明】
【０１５０】
１００  ＣＮＮシステム
１０２  センサ
１０４  ＣＮＮ
１０６  歩行者検出器
１０６−１０２  ＡＤＡＳ検出器
１０６−１１２  検出器
１０８  車検出器
１１０  自転車又は自動二輪車検出器
１１２  交通標識検出器
１１４、１１６  アプリケーション
１１６  衝突警告
２０２、２３０  畳み込み層
２０４  ＲＥＬＵ層
２０６  プーリング層
２０８  全結合層
２１０  出力層
２１２  畳み込みコンポーネント
２１４  ＲＥＬＵコンポーネント
２１６、６０４、６０８  プーリングコンポーネント
２１８  全結合コンポーネント
２２０  分類器関数
２２２、２２６  ネット関数
２２４、２２８  出力関数
２３０、６０２、６０６  畳み込み結合層
２３２、３０２  画像
３００  畳み込みデータ結果
３０４  メモリ１
３０８  畳み込みスライドウィンドウ
３１０  畳み込み出力
４０２  プーリング出力
５０２  出力アドレス
６００  ＣＮＮ演算
７００  動作フロー例
８００  アーキテクチャＣＮＮシステム
８０２  制御フロー処理部分
８０４  データフロー処理部分
８０６  相互接続
８０８  ＣＰＵ
８１０  観測ユニット
８１２  コプロセッサ
８１４  メモリ
９００  畳み込み層ウォッチテーブル
９０４ａ〜９０４ｎ  テーブル
９０６  トランザクションマッチユニットコンポーネント
９０８、１５０８  出力
１００２  ストライドレジスタ
１００４  統計演算レジスタ
１００５  統計演算エンジン
１００６、１６０８  ロード／ストアユニット
１０１０  マスタポート
１０１２  スレーブポート
１１００  状態フロー
１２００、１３００  ＦＣ層
１４００  データ従属性グラフ
１４０２、１４０４  実行のクロノグラフ
１５００  観測ユニットコンポーネントの態様
１５０２  ニューロンネット関数の宛先アドレス
１５０４  ニューロン出力関数の宛先アドレス
１５０６  活性化関数
１５１０  テーブル
１６０２  関数１
１６０４  関数２
１６０６  関数ｍ
１７００、１８００  プロセスフロー
【図１】
2019079505.tif 000003
【図２】
2019079505.tif 000004
【図３】
2019079505.tif 000005
【図４】
2019079505.tif 000006
【図５】
2019079505.tif 000007
【図６】
2019079505.tif 000008
【図７】
2019079505.tif 000009
【図８】
2019079505.tif 000010
【図９】
2019079505.tif 000011
【図１０】
2019079505.tif 000012
【図１１】
2019079505.tif 000013
【図１２】
2019079505.tif 000014
【図１３】
2019079505.tif 000015
【図１４】
2019079505.tif 000016
【図１５】
2019079505.tif 000017
【図１６】
2019079505.tif 000018
【図１７】
2019079505.tif 000019
【図１８】
2019079505.tif 000020
【外国語明細書】
2019079505000001.pdf
2019079505000002.pdf
2019079505000003.pdf
2019079505000004.pdf