(57)【要約】【課題】畳込みニューラルネットワークにおける畳込み演算に適した並列処理を行う。【解決手段】複数の選択器の各々は、２次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の２次元領域におけるデータをそれぞれ順次選択する。複数の２次元畳込み演算回路の各々は、対応する選択器によって選択されたデータと係数メモリに記憶されている係数データとを乗算した結果を累加算して、２次元領域における２次元畳込み演算結果を互いに並列に算出する。複数の加算回路の各々は、２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して３次元畳込み演算結果として出力する。【選択図】図６
2018067154.tif 000002
【特許請求の範囲】
【請求項１】
第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した２次元シフトレジスタと、
前記２次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の２次元領域における前記データをそれぞれ順次選択する複数の選択器と、
前記２次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記２次元領域における２次元畳込み演算結果を互いに並列に算出する複数の２次元畳込み演算回路と、
前記複数の２次元畳込み演算回路に対応して設けられて当該複数の２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して３次元畳込み演算結果として出力する複数の加算回路と
を具備する演算処理回路。
【請求項２】
前記係数メモリは、複数の種類の前記係数データを記憶し、
前記複数の２次元畳込み演算回路の各々は、前記２次元シフトレジスタに保持された前記データを入れ替えることなく連続して前記複数の選択器によって選択された前記データと前記複数の種類の前記係数データとの前記２次元畳込み演算を行う
請求項１記載の演算処理回路。
【請求項３】
前記係数メモリは、複数の種類の前記係数データを記憶し、
前記複数の２次元畳込み演算回路の各々は、前記２次元畳込み演算を前記複数の種類の前記係数データについて並列に行う
請求項１記載の演算処理回路。
【請求項４】
前記複数の２次元畳込み演算回路の各々は、前記２次元シフトレジスタに保持されたデータのうち互いに異なる２次元領域における前記データについて前記２次元畳込み演算をさらに並列に行う
請求項１記載の演算処理回路。
【請求項５】
前記複数の２次元畳込み演算回路によるそれぞれの演算結果を保持する２次元畳込み演算結果保持部をさらに具備し、
前記複数の加算回路は、当該複数の２次元畳込み演算回路によるそれぞれの演算結果と前記２次元畳込み演算結果保持部に保持されている演算結果とを前記チャネル方向に加算する
請求項１記載の演算処理回路。
【請求項６】
前記複数の加算回路は、前記複数の２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に互いに並列に加算して３次元畳込み演算結果として出力する
請求項１記載の演算処理回路。
【請求項７】
前記複数の加算回路から出力された前記３次元畳込み演算結果に対して所定の活性化処理を行う活性化処理回路をさらに具備する請求項１記載の演算処理回路。
【請求項８】
前記複数の加算回路から出力された前記３次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路をさらに具備する請求項１記載の演算処理回路。
【請求項９】
前記プーリング処理は、前記３次元畳込み演算結果における複数の値について総和、平均、および、最大値の少なくとも１つのプーリング値を生成する処理である
請求項８記載の演算処理回路。
【請求項１０】
前記２次元シフトレジスタは、（ｍ×ｋｗ＋ｐｗ−１）＋１）×（（ｋｈ＋ｐｈ−１）＋１）個以上の前記データを保持し、
前記複数の２次元畳込み演算回路は、前記乗算を行う（ｍ×ｐｗ×ｐｈ）個の乗算器と、前記累加算を行う（ｍ×ｐｗ×ｐｈ）個の累加算器とを備えて、（ｋｗ×ｋｈ）のサイズの前記２次元畳込み演算を、（ｐｗ×ｐｈ）個の前記２次元領域に対して並列に行い、
前記プーリング処理回路は、（ｍ×ｐｗ×ｐｈ）個の前記３次元畳込み演算結果を入力データとしてｍ個の前記プーリング値を生成する
請求項８記載の演算処理回路。
但し、ｍは１以上の整数であり、ｋｗ、ｋｈ、ｐｗ、ｐｈは２以上の整数である。
【請求項１１】
前記２次元シフトレジスタの前記複数のシフトレジスタは、各々が前記第一の方向に対して（ｐｗ−１）個おきに結線されたレジスタからなり、ｐｗ個単位で前記第一の方向へのシフト動作を行う
請求項１０記載の演算処理回路。
【請求項１２】
前記２次元シフトレジスタに保持されるデータを入力として、畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う請求項８記載の演算処理回路。
【請求項１３】
処理対象となるデータを取得するデータ取得部と、
前記データを入力として畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う演算処理回路と
を具備する認識システムであって、
前記演算処理回路は、
第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した２次元シフトレジスタと、
前記２次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の２次元領域における前記データをそれぞれ順次選択する複数の選択器と、
前記２次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記２次元領域における２次元畳込み演算結果を互いに並列に算出する複数の２次元畳込み演算回路と、
前記複数の２次元畳込み演算回路に対応して設けられて当該複数の２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して３次元畳込み演算結果として出力する複数の加算回路と、
前記複数の加算回路から出力された前記３次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路とを備え、
前記データを前記２次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記３次元畳込み演算結果を前記データの特徴量として出力した後、出力された前記特徴量を再び前記２次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記３次元畳込み演算結果を新たな特徴量として出力する動作を繰り返す認識システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、演算処理回路に関する。詳しくは、畳込み演算を行う演算処理回路、および、その演算処理回路を用いてデータの認識を行う認識システムに関する。
【背景技術】
【０００２】
複数の処理層が階層的に接続されたニューラルネットワークの一つとして、畳込みニューラルネットワーク（ＣＮＮ：Convolutional Neural Network）が注目されている。この畳込みニューラルネットワークは、複数のカーネルによる畳込みを行う畳込み層と、サブサンプリングとして機能して抽象化の役割を果たすプーリング層と、出力層に近い層に配置されて出力に合わせた分類器として機能する全結合層とから構成される。この畳込みニューラルネットワークにおける畳込み演算を高速に実行するために、複数の演算器を並列に動作させる装置が提案されている。例えば、列方向にずれた位置の畳込み演算を複数の積和演算器によって並列に実行する装置が提案されている（例えば、特許文献１参照。）。また、２つのシストリックアレイを接続して、互いに異なる位置のデータの畳込み演算処理を並列に実行する装置が提案されている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１３４６９７号公報
【特許文献２】特開２０１５−２１０７０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、複数の畳込み演算を並列に実行することにより、畳込みニューラルネットワークにおける演算処理の高速化を図っている。しかしながら、並列演算の対象を列方向のみに限定し、または、互いに異なる位置のみに限定すると、十分な並列性を確保することが困難になるおそれがある。
【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、畳込みニューラルネットワークにおける畳込み演算に適した並列処理を行うことを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、第一の方向に配置された複数のシフトレジスタを上記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した２次元シフトレジスタと、上記２次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の２次元領域における上記データをそれぞれ順次選択する複数の選択器と、上記２次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、上記複数の選択器の各々に対応して設けられて当該選択器によって選択された上記データと上記係数メモリに記憶されている上記係数データとを乗算した結果を累加算して上記２次元領域における２次元畳込み演算結果を互いに並列に算出する複数の２次元畳込み演算回路と、上記複数の２次元畳込み演算回路に対応して設けられて当該複数の２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して３次元畳込み演算結果として出力する複数の加算回路とを具備する演算処理回路である。これにより、２次元シフトレジスタから複数の選択器を介して複数の２次元畳込み演算回路に同時にデータを供給して、２次元畳込み演算結果を互いに並列に算出させるという作用をもたらす。
【０００７】
また、この第１の側面において、上記係数メモリは、複数の種類の上記係数データを記憶し、上記複数の２次元畳込み演算回路の各々は、上記２次元シフトレジスタに保持された上記データを入れ替えることなく連続して上記複数の選択器によって選択された上記データと上記複数の種類の上記係数データとの上記２次元畳込み演算を行うようにしてもよい。これにより、２次元シフトレジスタにおいて新しいデータをシフトインせずに連続して新たな係数の畳込み演算を行って、シフトイン動作の回数を抑制させるという作用をもたらす。
【０００８】
また、この第１の側面において、上記係数メモリは、複数の種類の上記係数データを記憶し、上記複数の２次元畳込み演算回路の各々は、上記２次元畳込み演算を上記複数の種類の上記係数データについて並列に行うようにしてもよい。これにより、異なる種類の係数の畳込み演算を同時に行うことにより、並列度を向上させるという作用をもたらす。
【０００９】
また、この第１の側面において、上記複数の２次元畳込み演算回路の各々は、上記２次元シフトレジスタに保持されたデータのうち互いに異なる２次元領域における上記データについて上記２次元畳込み演算をさらに並列に行うようにしてもよい。これにより、互いに異なる複数の２次元領域同士をさらに並列処理することにより、並列度を向上させるという作用をもたらす。
【００１０】
また、この第１の側面において、上記複数の２次元畳込み演算回路によるそれぞれの演算結果を保持する２次元畳込み演算結果保持部をさらに具備し、上記複数の加算回路は、当該複数の２次元畳込み演算回路によるそれぞれの演算結果と上記２次元畳込み演算結果保持部に保持されている演算結果とを上記チャネル方向に加算するようにしてもよい。これにより、２次元畳込み演算結果をチャネル方向に加算して３次元畳込み演算結果を生成するという作用をもたらす。
【００１１】
また、この第１の側面において、上記複数の加算回路は、上記複数の２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に互いに並列に加算して３次元畳込み演算結果として出力するようにしてもよい。これにより、複数チャネルに関する２次元畳込み演算同士をチャネル方向にさらに並列処理することにより、並列度を向上させるという作用をもたらす。
【００１２】
また、この第１の側面において、上記複数の加算回路から出力された上記３次元畳込み演算結果に対して所定の活性化処理を行う活性化処理回路をさらに具備してもよい。これにより、畳込み層の演算に必要な活性化処理をさせるという作用をもたらす。
【００１３】
また、この第１の側面において、上記複数の加算回路から出力された上記３次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路をさらに具備してもよい。これにより、プーリング層の演算に必要なプーリング処理をさせるという作用をもたらす。この場合において、上記プーリング処理は、上記３次元畳込み演算結果における複数の値について総和、平均、および、最大値の少なくとも１つのプーリング値を生成する処理であってもよい。
【００１４】
また、この第１の側面において、上記２次元シフトレジスタは、（ｍ×ｋｗ＋ｐｗ−１）＋１）×（（ｋｈ＋ｐｈ−１）＋１）個以上の上記データを保持し、上記複数の２次元畳込み演算回路は、上記乗算を行う（ｍ×ｐｗ×ｐｈ）個の乗算器と、上記累加算を行う（ｍ×ｐｗ×ｐｈ）個の累加算器とを備えて、（ｋｗ×ｋｈ）のサイズの上記２次元畳込み演算を、（ｐｗ×ｐｈ）個の上記２次元領域に対して並列に行い、上記プーリング処理回路は、（ｍ×ｐｗ×ｐｈ）個の上記３次元畳込み演算結果を入力データとしてｍ個の上記プーリング値を生成してもよい。但し、ｍは１以上の整数であり、ｋｗ、ｋｈ、ｐｗ、ｐｈは２以上の整数である。これにより、（ｍ×ｐｗ×ｐｈ）個の乗算器により（ｋｗ×ｋｈ）のサイズの上記２次元畳込み演算を、（ｐｗ×ｐｈ）個の上記２次元領域に対して並列に処理させるという作用をもたらす。この場合において、上記２次元シフトレジスタの上記複数のシフトレジスタは、各々が上記第一の方向に対して（ｐｗ−１）個おきに結線されたレジスタからなり、ｐｗ個単位で上記第一の方向へのシフト動作を行うようにしてもよい。これにより、２次元シフトレジスタにおいてｐｗ個単位で並列にシフトさせるという作用をもたらす。
【００１５】
また、この第１の側面において、上記２次元シフトレジスタに保持されるデータを入力として、畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行うようにしてもよい。
【００１６】
また、本技術の第２の側面は、処理対象となるデータを取得するデータ取得部と、上記データを入力として畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う演算処理回路とを具備する認識システムであって、上記演算処理回路は、第一の方向に配置された複数のシフトレジスタを上記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した２次元シフトレジスタと、上記２次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の２次元領域における上記データをそれぞれ順次選択する複数の選択器と、上記２次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、上記複数の選択器の各々に対応して設けられて当該選択器によって選択された上記データと上記係数メモリに記憶されている上記係数データとを乗算した結果を累加算して上記２次元領域における２次元畳込み演算結果を互いに並列に算出する複数の２次元畳込み演算回路と、上記複数の２次元畳込み演算回路に対応して設けられて当該複数の２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して３次元畳込み演算結果として出力する複数の加算回路と、上記複数の加算回路から出力された上記３次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路とを備え、上記データを上記２次元シフトレジスタに保持させて上記演算処理回路における処理を行って上記３次元畳込み演算結果を上記データの特徴量として出力した後、出力された上記特徴量を再び上記２次元シフトレジスタに保持させて上記演算処理回路における処理を行って上記３次元畳込み演算結果を新たな特徴量として出力する動作を繰り返す認識システムである。これにより、２次元シフトレジスタから複数の選択器を介して複数の２次元畳込み演算回路に同時にデータを供給して、２次元畳込み演算結果を互いに並列に算出させて、３次元畳込み演算結果を新たな特徴量として出力させるという作用をもたらす。
【発明の効果】
【００１７】
本技術によれば、畳込みニューラルネットワークにおける畳込み演算に適した並列処理を行うことができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１８】
【図１】畳込みニューラルネットワークの概要を示す図である。
【図２】畳込みニューラルネットワークにおける畳込み層４０の演算内容を示す図である。
【図３】畳込みニューラルネットワークにおけるプーリング層５０の演算内容を示す図である。
【図４】畳込みニューラルネットワークにおける全結合層６０の演算内容を示す図である。
【図５】本技術の実施の形態における画像認識システムの構成例を示す図である。
【図６】本技術の第１の実施の形態における画像認識処理回路２００の構成例を示す図である。
【図７】本技術の第１の実施の形態における２次元シフトレジスタ２２０および２次元畳込み演算回路２３０の一構成例を示す図である。
【図８】本技術の実施の形態における入力バッファ２１０の第１の構成例を示す図である。
【図９】本技術の実施の形態における入力バッファ２１０の第２の構成例を示す図である。
【図１０】本技術の実施の形態におけるセレクタ２２４の構成例を示す図である。
【図１１】本技術の実施の形態におけるセレクタ２２４の制御例を示す図である。
【図１２】本技術の実施の形態におけるオフセット領域間の並列処理の例を示す図である。
【図１３】本技術の第１の実施の形態におけるオフセット領域間の並列処理のタイミング例を示す図である。
【図１４】本技術の第２の実施の形態におけるセレクタ２２４の制御の例を示す図である。
【図１５】本技術の第２の実施の形態のセレクタ２２４の制御におけるオフセット領域間の並列処理のタイミング例を示す図である。
【図１６】本技術の第３の実施の形態における２次元畳込み演算の例を示す図である。
【図１７】本技術の第３の実施の形態の２次元畳込み演算における並列処理のタイミング例を示す図である。
【図１８】本技術の第４の実施の形態における画像認識処理回路２００の要部の構成例を示す図である。
【図１９】本技術の第４の実施の形態における２次元シフトレジスタ２２０および２次元畳込み演算回路２３０の一構成例を示す図である。
【図２０】本技術の第５の実施の形態における画像認識処理回路２００の要部の構成例を示す図である。
【図２１】本技術の第５の実施の形態における２次元シフトレジスタ２２０および２次元畳込み演算回路２３０の一構成例を示す図である。
【発明を実施するための形態】
【００１９】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．畳込みニューラルネットワーク
２．第１の実施の形態（オフセット領域同士を並列処理する例）
３．第２の実施の形態（複数の異なる係数の畳込み演算を連続して行う例）
４．第３の実施の形態（複数の異なる係数の畳込み演算を同時に行う例）
５．第４の実施の形態（複数領域同士をさらに並列処理する例）
６．第５の実施の形態（チャネル方向にさらに並列処理する例）
【００２０】
＜１．畳込みニューラルネットワーク＞
図１は、畳込みニューラルネットワークの概要を示す図である。畳込みニューラルネットワークは、それぞれ視覚野と対応するニューロンが配置されたニューラルネットワークの一種であり、畳込み演算を利用することにより特徴量の抽出を効率的に行うものである。ここで想定する畳込みニューラルネットワークは、入力画像１０に対して複数の層による処理を繰り返して出力９０を得る。
【００２１】
この畳込みニューラルネットワークは、特徴量抽出器２０と、識別器３０とに大別される。特徴量抽出器２０は、特徴量を抽出するための層であり、複数のカーネルによる畳込みを行う畳込み層４０と、サブサンプリングとして機能して抽象化の役割を果たすプーリング層５０とが交互に繰り返される。識別器３０は、出力に合わせた分類器として機能する全結合層６０が１つ以上続く分類のための層である。
【００２２】
畳込みニューラルネットワークは、哺乳類の脳の視覚野を参考にして設計されている。例えば、哺乳類である猫や人間の一次視覚野（Ｖ１野）は、方位選択性のあるガボールフィルタ（ガウシアンと正弦波の積）に近い処理がされており、Ｖ２野、Ｖ４野と上位の階層にいくと高次元の図形に反応することが実験により判明している。
【００２３】
畳込みニューラルネットワークの一段目の畳込み層４０において学習で獲得されるフィルタも、ガボールフィルタに似たエッジ検出フィルタのような単純なフィルタが多いことが分かっており、後段へ行くに従ってより複雑なフィルタが学習で獲得される。それらが階層構造になっていることにより、深い層ではより高次元の図形に反応する特徴量抽出機能が獲得できるようになる。
【００２４】
昨今、ディープラーニング（Deep Learning：深層学習）としてニューラルネットワークの復活が議論されている。これは、ネットワークの層を深くすることによって、識別器だけでなく特徴量抽出も同時に学習することができるからである。また、ブースティング（Boosting）などの既存の認識器よりもよい性能を出すネットワークの学習が、大量のデータセットを用意するだけで可能であることが明らかになったからである。
【００２５】
図２は、畳込みニューラルネットワークにおける畳込み層４０の演算内容を示す図である。
【００２６】
この畳込み層４０に入力されるデータは、前層から出力された３次元の特徴マップａ（ｘ，ｙ，ｋ）である。ここで、ｘは水平方向の座標位置、ｙは垂直方向の座標位置、ｋはチャネル番号であり、それぞれ整数である。この特徴マップａ（ｘ，ｙ，ｋ）は、チャネル方向にＫチャネルのサイズを有する。なお、Ｋは整数である。畳込みニューラルネットワークでは、５１２チャネル以上の特徴マップを扱う場合もある。
【００２７】
この畳込み層４０では、出力側マップｍに対する重み係数ｗｍ（ｉ，ｊ，ｋ）が用いられる。ここで、ｉは水平方向の座標位置、ｊは垂直方向の座標位置、ｍは出力側マップにおけるチャネル番号であり、それぞれ整数である。
【００２８】
この畳込み層４０から出力されるデータは、３次元の特徴マップｚ（ｘ，ｙ，ｍ）である。ここで、ｍはチャネル番号であり、整数である。この特徴マップｚ（ｘ，ｙ，ｍ）は、チャネル方向にＭチャネルのサイズを有する。なお、Ｍは整数である。
【００２９】
この畳込み層４０では、チャネル方向にＭ種類の重み係数ｗｍ（ｉ，ｊ，ｋ）のそれぞれを、特徴マップａ（ｘ，ｙ，ｋ）に対して畳み込む畳込み演算が行われる。この畳込み演算は、重み係数ｗｍ（ｉ，ｊ，ｋ）による３次元のフィルタ処理に相当する。また、必要に応じてバイアスｂｍが加算される。また、必要に応じて活性化関数ｆ（）が適用される。これらを式に表すと次式のようになる。
ｕ（ｘ，ｙ，ｍ）＝ｂｍ＋Σｋ＝０…Ｋ-１Σｊ＝０…Ｊ-１Σｉ＝０…Ｉ-１
（ｗｍ（ｉ，ｊ，ｋ）×ａ（ｘ＋ｉ，ｙ＋ｊ，ｋ））
ｚ（ｘ，ｙ，ｍ）＝ｆ（ｕ（ｘ，ｙ，ｍ））
なお、Ｉは水平方向のサイズ、Ｊは垂直方向のサイズ、Ｋはチャネル方向のサイズであり、それぞれ整数である。同図の例では、５×５×５（Ｉ＝Ｊ＝Ｋ＝５）のサイズの場合を示している。
【００３０】
なお、活性化関数ｆ（）としては、ランプ関数（ＲｅＬＵ）、シグモイド関数、双曲線正接関数（ｔａｎｈ）などが用いられるが、適用されない場合もある。
【００３１】
図３は、畳込みニューラルネットワークにおけるプーリング層５０の演算内容を示す図である。
【００３２】
このプーリング層５０に入力されるデータは、前層から出力された３次元の特徴マップａ（ｘ，ｙ，ｍ）である。ここで、ｘは水平方向の座標位置、ｙは垂直方向の座標位置、ｍはチャネル番号であり、それぞれ整数である。この特徴マップａ（ｘ，ｙ，ｍ）は、チャネル方向にＭチャネルのサイズを有する。なお、Ｍは整数である。
【００３３】
このプーリング層５０から出力されるデータは、３次元の特徴マップｓ（ｉ，ｊ，ｍ）である。ここで、ｉは水平方向の座標位置、ｊは垂直方向の座標位置、ｍは出力側マップにおけるチャネル番号であり、それぞれ整数である。この特徴マップｓ（ｉ，ｊ，ｍ）は、入力と同様に、チャネル方向にＭチャネルのサイズを有する。
【００３４】
このプーリング層５０では、特徴マップａ（ｘ，ｙ，ｍ）に対してプーリング関数ｆｐ（）が適用される。このプーリング層５０における処理を式に表すと次式のようになる。
ｓ（ｉ，ｊ，ｍ）＝ｆｐ（ａ（２×ｉ，    ２×ｊ，    ｍ），
ａ（２×ｉ＋１，２×ｊ，    ｍ），
ａ（２×ｉ，    ２×ｊ＋１，ｍ），
ａ（２×ｉ＋１，２×ｊ＋１，ｍ））
【００３５】
なお、プーリング関数ｆｐ（）としては、合計値、平均値、最大値などが用いられる。
【００３６】
図４は、畳込みニューラルネットワークにおける全結合層６０の演算内容を示す図である。
【００３７】
この全結合層６０に入力されるデータは、前層から出力された３次元の特徴マップａ（ｘ，ｙ，ｋ）である。ここで、ｘは水平方向の座標位置、ｙは垂直方向の座標位置、ｋはチャネル番号であり、それぞれ整数である。この特徴マップａ（ｘ，ｙ，ｋ）は、チャネル方向にＫチャネルのサイズを有する。なお、Ｋは整数である。
【００３８】
この全結合層６０では、出力側マップｍに対する重み係数ｗｍ（ｘ，ｙ，ｋ）が用いられる。ここで、ｉは水平方向の座標位置、ｊは垂直方向の座標位置、ｍは出力側マップにおけるチャネル番号であり、それぞれ整数である。
【００３９】
この全結合層６０から出力されるデータは、３次元の特徴マップｚ（ｘ，ｙ，ｍ）である。ここで、ｍはチャネル番号であり、整数である。この特徴マップｚ（ｘ，ｙ，ｍ）は、チャネル方向にＭチャネルのサイズを有する。なお、Ｍは整数である。
【００４０】
この全結合層６０では、チャネル方向にＭ種類の重み係数ｗｍ（ｘ，ｙ，ｋ）のそれぞれを、特徴マップａ（ｘ，ｙ，ｋ）に対して畳み込む畳込み演算が行われる。また、必要に応じてバイアスｂｍが加算される。また、必要に応じて活性化関数ｆ（）が適用される。これらを式に表すと次式のようになる。
ｕ（ｍ）＝ｂｍ＋Σｋ＝０…Ｋ-１Σｙ＝０…Ｙ-１Σｘ＝０…Ｘ-１
（ｗｍ（ｘ，ｙ，ｋ）×ａ（ｘ，ｙ，ｋ））
ｚ（ｍ）＝ｆ（ｕ（ｍ））
なお、Ｘは水平方向のサイズ、Ｙは垂直方向のサイズ、Ｋはチャネル方向のサイズであり、それぞれ整数である。同図の例では、５×５×５（Ｘ＝Ｙ＝Ｋ＝５）のサイズの場合を示している。
【００４１】
なお、活性化関数ｆ（）としては、ランプ関数（ＲｅＬＵ）、シグモイド関数、双曲線正接関数（ｔａｎｈ）などが用いられるが、適用されない場合もある。
【００４２】
＜２．第１の実施の形態＞
［画像認識システム］
図５は、本技術の実施の形態における画像認識システムの構成例を示す図である。この画像認識システムは、画像取得部１０１と、外部メモリ１０２と、メモリコントローラ１０３と、ＤＭＡコントローラ１０４と、ワークメモリ１０５と、制御コンピュータ１０６と、画像認識処理回路２００とを備える。なお、この実施の形態では一例として画像認識システムについて説明するが、本技術は多次元データ全般（テンソルデータ）に適用可能であり、画像以外のデータに対する認識システムに利用することができる。
【００４３】
画像取得部１０１は、画像認識の対象となる画像データを取得するものである。この画像取得部１０１は、被写体からの光を光電変換して画像データとして取得する画像センサであってもよく、また、他の装置や記録媒体から画像データを取得する入力部であってもよい。
【００４４】
制御コンピュータ１０６は、この画像認識システムの全体を制御するコンピュータである。外部メモリ１０２は、この画像認識システムの外部メモリであり、制御コンピュータ１０６などによってアクセスされる。メモリコントローラ１０３は、外部メモリ１０２にアクセスするためのコントローラである。ＤＭＡコントローラ１０４は、バス１０７を介して外部メモリ１０２とワークメモリ１０５との間で、ＤＭＡ（Direct Memory Access）によりデータを転送するためのコントローラである。
【００４５】
画像認識処理回路２００は、画像取得部１０１によって取得された画像を入力画像として、画像認識処理を行う回路である。この画像認識処理回路２００は、畳込みニューラルネットワークにおける畳込み層４０およびプーリング層５０の特徴量抽出処理を行い、全結合層６０の識別処理を行う。
【００４６】
ワークメモリ１０５は、画像認識処理回路２００における処理に必要なデータを保持するメモリである。具体的には、このワークメモリ１０５は、画像認識の対象となる画像データ、各層において入出力される特徴マップや、バイアスｂｍなどを保持する。なお、ワークメモリ１０５は、特許請求の範囲に記載の２次元畳込み演算結果保持部の一例である。
【００４７】
［画像認識処理回路］
図６は、本技術の第１の実施の形態における画像認識処理回路２００の構成例を示す図である。この画像認識処理回路２００は、入力バッファ２１０と、２次元シフトレジスタ２２０と、複数の２次元畳込み演算回路２３０と、複数の加算回路２４０と、プーリング処理回路２５０と、活性化処理回路２６０と、制御回路２７０とを備える。
【００４８】
入力バッファ２１０は、ワークメモリ１０５から特徴マップを読み出して画像認識処理回路２００の入力データとして保持するバッファである。この入力バッファ２１０に保持されたデータは、２次元シフトレジスタ２２０に供給される。
【００４９】
２次元シフトレジスタ２２０は、入力バッファ２１０から供給されたデータを２次元の領域に保持するシフトレジスタである。この２次元シフトレジスタ２２０は、行方向に配置された複数のシフトレジスタを、列方向に並べて順次接続した構成を備える。なお、列方向に配置された複数のシフトレジスタを、行方向に並べて順次接続するようにしてもよい。この２次元シフトレジスタ２２０は、後述するように、複数の選択器を備えており、これら複数の選択器を介して２次元畳込み演算回路２３０にデータを供給する。
【００５０】
複数の２次元畳込み演算回路２３０は、選択器を介して供給されたデータに対して係数データを乗算した結果を累加算して、２次元シフトレジスタ２２０の２次元領域における２次元畳込み演算結果を、互いに並列に算出するものである。これら複数の２次元畳込み演算回路２３０は、係数メモリを備え、乗算に必要な係数データをこの係数メモリから読み出す。複数の２次元畳込み演算回路２３０の各々は、２次元シフトレジスタに保持されたデータのうち、互いに少なくとも一部が異なる２次元領域について２次元畳込み演算を行う。この例では、座標位置（＋０，＋０）を基準として、水平方向に１つずれた座標位置（＋１，＋０）、垂直方向に１つずれた座標位置（＋０，＋１）、水平方向および垂直方向にそれぞれ１つずれた座標位置（＋１，＋１）の４つの領域（オフセット領域）を想定する。そして、これら互いにずれた座標位置を基準として、複数の２次元畳込み演算回路２３０の各々は、２次元領域における２次元畳込み演算結果を並列に算出する。
【００５１】
複数の加算回路２４０は、複数の２次元畳込み演算回路２３０によるそれぞれの演算結果をチャネル方向に加算して３次元畳込み演算結果として出力するものである。これら複数の加算回路２４０による演算結果は、ワークメモリ１０５に保持される。そして、複数の加算回路２４０の各々は、ワークメモリ１０５に保持されている演算結果と、複数の２次元畳込み演算回路２３０による演算結果とをチャネル方向に加算する。その動作を繰り返すことにより、複数の加算回路２４０の各々は、画像全体の３次元畳込み演算結果を出力する。また、複数の加算回路２４０は、ワークメモリ１０５に保持されているバイアスｂｍを、複数の２次元畳込み演算回路２３０による演算結果に加算するためにも用いられる。なお、加算回路２４０は、特許請求の範囲に記載の加算回路の一例である。
【００５２】
プーリング処理回路２５０は、複数の加算回路２４０による３次元畳込み演算結果に対してプーリング処理を行うものである。このプーリング処理回路２５０によるプーリング処理は、３次元畳込み演算結果に対してプーリング関数を適用するものである。プーリング関数としては、上述のように、合計値、平均値、最大値などが用いられる。なお、このプーリング処理回路２５０によるプーリング層５０の処理が行われずに、畳込み層４０の処理が連続する場合もある。
【００５３】
活性化処理回路２６０は、複数の加算回路２４０から出力された３次元畳込み演算結果に対して所定の活性化処理（Activation）を行うものである。この活性化処理回路２６０による活性化処理としては、上述のように、ランプ関数（ＲｅＬＵ）、シグモイド関数、双曲線正接関数（ｔａｎｈ）などが用いられる。この活性化処理回路２６０による出力は、次層に入力される特徴マップとしてワークメモリ１０５に保持される。なお、この活性化処理回路２６０による活性化処理が行われずに、そのまま特徴マップとして出力される場合もある。
【００５４】
制御回路２７０は、画像認識処理回路２００の各部を制御するものである。
【００５５】
［２次元畳込み演算回路］
図７は、本技術の第１の実施の形態における２次元シフトレジスタ２２０および２次元畳込み演算回路２３０の一構成例を示す図である。
【００５６】
ここでは、ｋｗ×ｋｈのカーネルサイズの同じ重み係数の２次元フィルタを同時に畳込み演算することを想定する。すなわち、上述の重み係数ｗｍ（ｉ，ｊ，ｋ）の種類は１つ（Ｍ＝１）である。また、２次元の畳込み演算は、画素位置の異なるｐｗ×ｐｈ個について同時に行われる。その結果、ｐｗ×ｐｈ個の畳込み演算結果が得られ、そのｐｗ×ｐｈ個の畳込み演算結果を入力としてプーリング値の計算が行われる。ここで用いられるのは、（ｋｗ＋ｐｗ−１）×（ｋｈ＋ｐｈ−１）個のレジスタ２２１、ｐｗ×ｐｈ個の乗算器２３１、および、ｐｗ×ｐｈ個の累加算器２３３である。以下では、ｋｗ＝ｋｈ＝３、ｐｗ＝ｐｈ＝２とした例について説明する。
【００５７】
２次元シフトレジスタ２２０は、レジスタ２２１を行方向に配置した１次元シフトレジスタを、さらに列方向に並べて構成される。１次元シフトレジスタにおけるレジスタ２２１は、（ｐｗ−１）個（＝１個）おきに（すなわち、ｐｗ個先と）結線されており、ｐｗ個（＝２個）単位で行方向へのシフト動作を行う。なお、この例では、画像における画素の配置と合致させており、これにより、１次元シフトレジスタにおいては右から左にシフトすることを想定している。なお、行方向に配置した１次元シフトレジスタは、特許請求の範囲に記載のシフトレジスタの一例である。これらを列方向に並べて構成された２次元シフトレジスタ２２０は、特許請求の範囲に記載の２次元シフトレジスタの一例である。また、レジスタ２２１は、特許請求の範囲に記載のレジスタの一例である。
【００５８】
この例では、ｋｗ×ｋｈ画素（３×３画素）の２次元フィルタをｐｗ×ｐｈ（＝２×２）の４つの領域に対して同時に畳込み演算することを想定する。ここで、４つの領域とは、上述の、座標位置（＋０，＋０）、水平方向に１つずれた座標位置（＋１，＋０）、垂直方向に１つずれた座標位置（＋０，＋１）、水平方向および垂直方向にそれぞれ１つずれた座標位置（＋１，＋１）の各々を基準とした４つの領域である。
【００５９】
４つの領域の各々の畳込み演算に必要なデータを参照するために、それぞれセレクタ２２２および２２３が設けられる。セレクタ２２２は、列方向に配置された３つのレジスタから１つのデータを選択するためのセレクタである。セレクタ２２３は、行方向の３つのセレクタ２２２から１つのデータを選択するためのセレクタである。すなわち、３つのセレクタ２２２と１つのセレクタ２２３とによって、９つのレジスタから１つのデータを選択する構成になっている。なお、畳込み演算に用いられるデータは例えば１６ビット幅であり、レジスタ２２１、セレクタ２２２および２２３においてもこの１６ビット幅のデータを扱う必要がある。
【００６０】
４つの領域の畳込み演算は、２次元畳込み演算回路２３０の４つの乗算器２３１および４つの累加算器２３３によって行われる。乗算器２３１は、係数メモリ２３２に記憶されている係数データとセレクタ２２３によって選択されたデータとを乗算するものである。係数メモリ２３２は、２次元シフトレジスタ２２０に保持されたデータのそれぞれに対する係数データ（重み係数）を記憶するメモリである。係数データは４つの乗算器２３１において共通のものを使用できるため、係数メモリ２３２は乗算器２３１に共有される。累加算器２３３は、乗算器２３１のそれぞれに対応して設けられ、その乗算器２３１による乗算結果を累加算して、２次元畳込み演算結果を出力するものである。
【００６１】
［入力バッファ］
図８は、本技術の実施の形態における入力バッファ２１０の第１の構成例を示す図である。この入力バッファ２１０の第１の構成例は、入力ＦＩＦＯ２１１と、シフトレジスタ２１２とを備える。
【００６２】
入力ＦＩＦＯ２１１は、２次元シフトレジスタ２２０の最下行に入力されるデータを保持するＦＩＦＯ（First-In First-Out）構造のメモリである。この入力ＦＩＦＯ２１１は、少なくとも１段のレジスタからなる。この入力ＦＩＦＯ２１１は、ｐｗ個（＝２個）設けられ、２次元シフトレジスタ２２０の最下行の右端ｐｗ個のレジスタ２２１にそれぞれデータを供給する。
【００６３】
シフトレジスタ２１２は、２次元シフトレジスタ２２０の最下行を除く各行に入力されるデータを保持するシフトレジスタである。このシフトレジスタ２１２は、２次元シフトレジスタ２２０の最下行を除く各行に対応してｐｗ個（＝２個）ずつ設けられ、各行の右端ｐｗ個のレジスタ２２１にそれぞれデータを供給する。なお、シフトレジスタ２１２は、ＦＩＦＯ構造により実現されてもよい。
【００６４】
この入力バッファ２１０の第１の構成例では、２次元シフトレジスタ２２０の各行の左端ｐｗ個のデータは、その上の行の対応するシフトレジスタ２１２に入力される。２次元シフトレジスタ２２０の各行のレジスタ数とシフトレジスタ２１２の段数は、特徴マップの横幅のデータ数と一致する。これにより、入力バッファ２１０および２次元シフトレジスタ２２０の全体で特徴マップを全て保持することができ、順次シフトしていく単純な制御により、２次元畳込み演算を行うことができる。この例では、ｋｗ×ｋｈ画素（３×３画素）の２次元畳込み演算が行われるたびに、左にまとめてシフトイン動作が行われる。すなわち、９サイクルに１回の割合でシフトイン動作が行われる。
【００６５】
図９は、本技術の実施の形態における入力バッファ２１０の第２の構成例を示す図である。この入力バッファ２１０の第２の構成例は、入力バッファ２１３と、アドレス生成部２１４とを備える。
【００６６】
入力バッファ２１３は、２次元シフトレジスタ２２０の各行に入力されるデータを保持するバッファである。この入力バッファ２１３は、２次元シフトレジスタ２２０の各行に対応してｐｗ個（＝２個）ずつ設けられ、各行の右端ｐｗ個のレジスタ２２１にそれぞれデータを供給する。
【００６７】
この入力バッファ２１０の第２の構成例では、入力バッファ２１３のデータが、図示するように下行から上行に伝搬される。すなわち、２次元シフトレジスタ２２０の各行に必要な特徴マップのデータがワークメモリ１０５から読み出されて供給される。そのため、この入力バッファ２１０の第２の構成例では、ワークメモリ１０５における特徴マップの格納アドレスをアドレス生成部２１４が生成する。そのため、アドレス生成のための制御が必要になるが、第１の構成例のように全てのデータを順次シフトする必要がないため、演算開始前の２次元シフトレジスタ２２０へのデータ供給を比較的速く行うことができる。ただし、演算開始後のシフトイン動作の頻度は上述の第１の構成例と同様である。
【００６８】
［セレクタ］
図１０は、本技術の実施の形態におけるセレクタ２２４の構成例を示す図である。上述のように、２次元シフトレジスタ２２０から１つの乗算器２３１にデータを供給するために、３つのセレクタ２２２および１つのセレクタ２２３が用いられる。ここでは、２次元シフトレジスタ２２０と乗算器２３１との関係を理解し易くするために、３つのセレクタ２２２および１つのセレクタ２２３をセレクタ２２４として表す。ただし、実際には、セレクタ２２２は複数のセレクタ２２３によって共有されるため、乗算器２３１の数に比例して３つのセレクタ２２２が必要になるわけではなく、セレクタ２２４は仮想的なものである。なお、セレクタ２２４は、特許請求の範囲に記載の選択器の一例である。
【００６９】
上述のように、３×３画素の畳込み演算を想定して、関係するレジスタ２２１に図のように＃０から＃８の番号を付す。レジスタ２２１から出力されるデータにもＤ０からＤ８の番号を付す。セレクタ２２２のうち１つ目はデータＤ０、Ｄ３およびＤ６の何れか１つを選択する。セレクタ２２２のうち２つ目はデータＤ１、Ｄ４およびＤ７の何れか１つを選択する。セレクタ２２２のうち３つ目はデータＤ２、Ｄ５およびＤ８の何れか１つを選択する。セレクタ２２３は、３つのセレクタ２２２の出力の何れか１つを選択する。すなわち、セレクタ２２４は、データＤ０からＤ８の９つから１つを選択する。
【００７０】
図１１は、本技術の実施の形態におけるセレクタ２２４の制御例を示す図である。
【００７１】
第１サイクルでは、セレクタ２２２に選択信号「０」、セレクタ２２３に選択信号「０」がそれぞれ供給され、データＤ０が選択される。また、係数メモリ２３２にアドレス「０」が供給され、係数データ「Ｃｏｅｆ［０］」が選択される。その結果、累加算器２３３の出力は、「Ｄ０×Ｃｏｅｆ［０］」となる。この時点では、累加算器２３３の出力の有効ビットは「Ｌ」、すなわち２次元畳込み演算結果として無効となっている。
【００７２】
第２サイクルでは、セレクタ２２２に選択信号「０」、セレクタ２２３に選択信号「１」がそれぞれ供給され、データＤ１が選択される。また、係数メモリ２３２にアドレス「１」が供給され、係数データ「Ｃｏｅｆ［１］」が選択される。その結果、累加算器２３３の出力は、「（Ｄ０×Ｃｏｅｆ［０］）＋（Ｄ１×Ｃｏｅｆ［１］）」となる。この時点では、累加算器２３３の出力の有効ビットは「Ｌ」、すなわち２次元畳込み演算結果として無効となっている。
【００７３】
以降、同様の処理が繰り返され、第９サイクルでは、セレクタ２２２に選択信号「２」、セレクタ２２３に選択信号「２」がそれぞれ供給され、データＤ８が選択される。また、係数メモリ２３２にアドレス「８」が供給され、係数データ「Ｃｏｅｆ［８］」が選択される。その結果、累加算器２３３の出力は、「（Ｄ０×Ｃｏｅｆ［０］）＋…＋（Ｄ８×Ｃｏｅｆ［８］）」となる。このとき、累加算器２３３の出力の有効ビットは「Ｈ」、すなわち２次元畳込み演算結果として有効な値であるとして出力される。
【００７４】
［オフセット領域間の並列処理］
図１２は、本技術の実施の形態におけるオフセット領域間の並列処理の例を示す図である。上述のように、１つの乗算器２３１に対して仮想的なセレクタ２２４を１つずつ想定すると、９つのレジスタ２２１のデータを順次参照することになる。ここでは、水平方向および垂直方向の各方向にそれぞれ１つずつずれた３×３画素のオフセット領域を、４つ並列に処理する例を示す。オフセット領域は、図示するように、互いに一部が異なっている。
【００７５】
座標位置（＋０，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ＿００が出力される。座標位置（＋０，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ＿０１が出力される。座標位置（＋１，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ＿１０が出力される。座標位置（＋１，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ＿１１が出力される。上述のように、セレクタ２２４は仮想的なものであり、ここに示した４つのセレクタ２２４内のセレクタ２２２は互いに共有されている。
【００７６】
図１３は、本技術の第１の実施の形態におけるオフセット領域間の並列処理のタイミング例を示す図である。この例では、２次元畳込み演算回路２３０の数値は図１２に示したレジスタ２２１の番号を表している。
【００７７】
シフトイン動作の後、４つの２次元畳込み演算回路２３０の各々において、上述のように９つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われ、再び４つの２次元畳込み演算回路２３０の各々において、９つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われて同様の処理が繰り返される。２次元シフトレジスタ２２０におけるシフトイン動作は、２次元畳込み演算回路２３０における演算とパイプライン処理されるため、図示したようにシフトイン動作のサイクルは隠蔽することができる。
【００７８】
このように、本技術の第１の実施の形態では、２次元シフトレジスタ２２０からセレクタ２２４を介して複数の乗算器２３１に同時にデータを供給することにより、１つの重み係数に対する複数の２次元畳込み演算結果を互いに並列に算出する。これにより、全体の処理を高速化することができる。
【００７９】
＜３．第２の実施の形態＞
上述の第１の実施の形態では、重み係数ｗｍ（ｉ，ｊ，ｋ）の種類は１つ（Ｍ＝１）であることを想定したが、この第２の実施の形態では重み係数の種類を複数であると想定し、異なる係数の畳込み演算を連続して行う。すなわち、上述の第１の実施の形態では畳込み演算を行った後に毎回シフトイン動作を行っていたが、この第２の実施の形態では、ある係数の畳込み演算を行った後に、新しいデータをシフトインせずに連続して、新たな係数の畳込み演算を行う。これにより、シフトイン動作の回数を削減して全体の消費電力を低減することができる。
【００８０】
なお、この第２の実施の形態におけるシステム構成および回路構成は、上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００８１】
図１４は、本技術の第２の実施の形態におけるセレクタ２２４の制御の例を示す図である。なお、係数メモリ２３２には、複数の種類の係数データが記憶されているものとする。
【００８２】
第１サイクルから第９サイクルまでは上述の図１１により説明したものと同様である。  続く第１０サイクルでは、セレクタ２２２に選択信号「０」、セレクタ２２３に選択信号「０」がそれぞれ供給され、データＤ０が選択される。また、係数メモリ２３２にアドレス「９」が供給され、係数データ「Ｃｏｅｆ［９］」が選択される。その結果、累加算器２３３の出力は、「Ｄ０×Ｃｏｅｆ［９］」となる。この時点では、累加算器２３３の出力の有効ビットは「Ｌ」、すなわち２次元畳込み演算結果として無効となっている。
【００８３】
第１１サイクルでは、セレクタ２２２に選択信号「０」、セレクタ２２３に選択信号「１」がそれぞれ供給され、データＤ１が選択される。また、係数メモリ２３２にアドレス「１０」が供給され、係数データ「Ｃｏｅｆ［１０］」が選択される。その結果、累加算器２３３の出力は、「（Ｄ０×Ｃｏｅｆ［９］）＋（Ｄ１×Ｃｏｅｆ［１０］）」となる。この時点では、累加算器２３３の出力の有効ビットは「Ｌ」、すなわち２次元畳込み演算結果として無効となっている。
【００８４】
以降、同様の処理が繰り返され、第１８サイクルでは、セレクタ２２２に選択信号「３」、セレクタ２２３に選択信号「２」がそれぞれ供給され、データＤ８が選択される。また、係数メモリ２３２にアドレス「１７」が供給され、係数データ「Ｃｏｅｆ［１７］」が選択される。その結果、累加算器２３３の出力は、「（Ｄ０×Ｃｏｅｆ［９］）＋…＋（Ｄ８×Ｃｏｅｆ［１７］）」となる。このとき、累加算器２３３の出力の有効ビットは「Ｈ」、すなわち２次元畳込み演算結果として有効な値であるとして出力される。
【００８５】
図１５は、本技術の第２の実施の形態のセレクタ２２４の制御におけるオフセット領域間の並列処理のタイミング例を示す図である。この例では、２次元畳込み演算回路２３０の数値は図１２に示したレジスタ２２１の番号を表している。
【００８６】
シフトイン動作の後、４つの２次元畳込み演算回路２３０の各々において、上述のように９つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作は行われずに、２次元シフトレジスタ２２０に保持されたデータを入れ替えることなく連続して、係数メモリ２３２からの読出しアドレスが変更される。これにより、再び４つの２次元畳込み演算回路２３０の各々において、９つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われて同様の処理が繰り返される。
【００８７】
このように、本技術の第２の実施の形態によれば、ある係数の畳込み演算を行った後に、新しいデータをシフトインせずに連続して、新たな係数の畳込み演算を行うことにより、シフトイン動作の回数を削減して全体の消費電力を低減することができる。
【００８８】
＜４．第３の実施の形態＞
上述の第１の実施の形態では、重み係数ｗｍ（ｉ，ｊ，ｋ）の種類は１つ（Ｍ＝１）であることを想定したが、この第３の実施の形態では重み係数の種類を複数であると想定し、異なる係数の畳込み演算を同時に行う。すなわち、上述の第１の実施の形態では互いに一部が異なる４つの領域について２次元畳込み演算を行っていたが、この第３の実施の形態では、その４つの領域とは重ならない他の４つの領域においても２次元畳込み演算を行う。
【００８９】
なお、この第３の実施の形態におけるシステム構成および回路構成は、上述の第１の実施の形態と同様であるため、詳細な説明は省略する。係数メモリ２３２には、複数の種類の係数データが記憶されているものとする。
【００９０】
図１６は、本技術の第３の実施の形態における２次元畳込み演算の例を示す図である。
【００９１】
上述の第１の実施の形態と同様に、座標位置（＋０，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０＿００が出力される。座標位置（＋０，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０＿０１が出力される。座標位置（＋１，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０＿１０が出力される。座標位置（＋１，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０＿１１が出力される。
【００９２】
また、この第３の実施の形態においては、座標位置（３，０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１＿００が出力される。座標位置（３，１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１＿０１が出力される。座標位置（４，０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１＿１０が出力される。座標位置（４，１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１＿１１が出力される。第３の実施の形態において追加されたこれら４つの領域と、第１の実施の形態の４つの領域との間では異なる係数データが用いられる。すなわち、２種類の重み係数の２次元フィルタを同時に畳込み演算することになる（Ｍ＝２）。
【００９３】
この第３の実施の形態では、２次元の畳込み演算は、画素位置の異なるｐｗ×ｐｈ個について同時に行われて、Ｍ×ｐｗ×ｐｈ個の畳込み演算結果が得られる。そして、そのＭ×ｐｗ×ｐｈ個の畳込み演算結果を入力としてプーリング値の計算が行われる。ここで用いられるのは、（Ｍ×ｋｗ＋ｐｗ−１）×（ｋｈ＋ｐｈ−１）個のレジスタ２２１、Ｍ×ｐｗ×ｐｈ個の乗算器２３１、および、Ｍ×ｐｗ×ｐｈ個の累加算器２３３である。
【００９４】
図１７は、本技術の第３の実施の形態の２次元畳込み演算における並列処理のタイミング例を示す図である。この例では、２次元畳込み演算回路２３０の数値は図１６に示したレジスタ２２１の番号を表している。
【００９５】
シフトイン動作の後、８つの２次元畳込み演算回路２３０の各々において、上述のように９つずつのデータが順次選択されて、乗算および累加算が行われる。このとき、第３の実施の形態において追加された４つの領域と、第１の実施の形態の４つの領域との間では異なる係数データが用いられる。
【００９６】
その後、シフトイン動作が行われ、再び８つの２次元畳込み演算回路２３０の各々において、９つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われて同様の処理が繰り返される。
【００９７】
このように、本技術の第３の実施の形態によれば、異なる種類の係数の畳込み演算を、異なる領域について同時に行うことにより、並列度を向上させて全体の処理を高速化することができる。
【００９８】
＜５．第４の実施の形態＞
上述の第１の実施の形態では、１つの重み係数に対して、互いに一部が異なる４つの領域について同時に２次元畳込み演算を行っていたが、この第４の実施の形態では、複数領域同士をさらに並列処理する。これにより、１つの重み係数の２次元畳込み演算についてさらに並列度を向上させて、全体の処理を高速化する。
【００９９】
なお、この第４の実施の形態におけるシステム構成は、上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【０１００】
［画像認識処理回路］
図１８は、本技術の第４の実施の形態における画像認識処理回路２００の要部の構成例を示す図である。なお、入力バッファ２１０、プーリング処理回路２５０、活性化処理回路２６０、制御回路２７０については、上述の第１の実施の形態と同様であるため、同図において省略している。
【０１０１】
この第４の実施の形態における画像認識処理回路２００は、４つの領域に対する４つの２次元畳込み演算回路２３０を複数組（この例では４組）備えることを想定する。同じ組における４つの領域は、一部が異なり、一部が重なっている。一方、異なる組同士は、独立に畳込み演算されるため、重なっている必要はない。
【０１０２】
座標位置（＋０，＋０）、（＋１，＋０）、（＋０，＋１）、（＋１，＋１）のそれぞれを基準とする領域の演算結果は、４つの異なる加算器２３４によってそれぞれ加算される。すなわち、これら４つの加算器２３４は、異なる組の対応する領域の２次元畳込み演算を加算する加算器である。
【０１０３】
４つの加算器２３４による加算結果は、４つの加算回路２４０にそれぞれ供給される。これら４つの加算回路２４０は、上述の第１の実施の形態のものと同様であり、主にチャネル方向の加算を行う加算器である。
【０１０４】
［２次元畳込み演算回路］
図１９は、本技術の第４の実施の形態における２次元シフトレジスタ２２０および２次元畳込み演算回路２３０の一構成例を示す図である。この例では、各レジスタ２２１に番号を付しており、以下ではこの番号を座標位置として参照する。
【０１０５】
ここでは、座標位置「０」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ００＿００が出力される。座標位置「１」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ００＿１０が出力される。座標位置「７」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ００＿０１が出力される。座標位置「８」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ００＿１１が出力される。これら４つの値は１つの組を形成する。
【０１０６】
また、座標位置「３」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０１＿００が出力される。座標位置「４」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０１＿１０が出力される。座標位置「１０」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０１＿０１が出力される。座標位置「１１」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０１＿１１が出力される。これら４つの値は１つの組を形成する。
【０１０７】
また、座標位置「２１」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１０＿００が出力される。座標位置「２２」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１０＿１０が出力される。座標位置「２８」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１０＿０１が出力される。座標位置「２９」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１０＿１１が出力される。これら４つの値は１つの組を形成する。
【０１０８】
また、座標位置「２４」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１１＿００が出力される。座標位置「２５」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１１＿１０が出力される。座標位置「３１」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１１＿０１が出力される。座標位置「３２」を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１１＿１１が出力される。これら４つの値は１つの組を形成する。
【０１０９】
加算器２３４は、各組の対応する座標位置同士の加算値を生成する。すなわち、２次元畳込み演算結果ｃｎｖ００＿００、ｃｎｖ０１＿００、ｃｎｖ１０＿００、ｃｎｖ１１＿００の加算値が座標位置（＋０，＋０）を基準とした領域の２次元畳込み演算結果ｃｎｖ＿００として出力される。また、２次元畳込み演算結果ｃｎｖ００＿０１、ｃｎｖ０１＿０１、ｃｎｖ１０＿０１、ｃｎｖ１１＿０１の加算値が座標位置（＋０，＋１）を基準とした領域の２次元畳込み演算結果ｃｎｖ＿０１として出力される。また、２次元畳込み演算結果ｃｎｖ００＿１０、ｃｎｖ０１＿１０、ｃｎｖ１０＿１０、ｃｎｖ１１＿１０の加算値が座標位置（＋１，＋０）を基準とした領域の２次元畳込み演算結果ｃｎｖ＿１０として出力される。また、２次元畳込み演算結果ｃｎｖ００＿１１、ｃｎｖ０１＿１１、ｃｎｖ１０＿１１、ｃｎｖ１１＿１１の加算値が座標位置（＋１，＋１）を基準とした領域の２次元畳込み演算結果ｃｎｖ＿１１として出力される。
【０１１０】
この例では、３×３画素を基本単位として、４つを組み合わせた出力の総和を座標位置（＋０，＋０）、（＋０，＋１）、（＋１，＋０）、（＋１，＋１）毎に算出している。これにより、座標位置毎の６×６画素の畳込み演算を行っていることになる。このとき、係数メモリ２３２に記憶される係数の適切な場所に「０」を設定し、または、セレクタにより選択するデータを制限することにより、６×６画素より小さいサイズの５×５画素や４×４画素の畳込みを行うことも可能である。
【０１１１】
また、この例に示したのと同様の要領により、６×６画素を４つ組み合わせて、１２×１２画素の畳込みを行うことも可能である。また、上述の第３の実施の形態に示したのと同様の要領により、６×６画素を２つ組み合わせて、異なる２つの係数の６×６画素の畳込み演算を同時に行うことも可能である。
【０１１２】
このように、本技術の第４の実施の形態によれば、互いに異なる複数の２次元領域同士をさらに並列処理することにより、並列度を向上させて全体の処理を高速化することができる。
【０１１３】
＜６．第５の実施の形態＞
上述の実施の形態では、チャネル方向に対しては加算回路２４０によって逐次的に加算を繰り返していたが、この第５の実施の形態においてはさらにチャネル方向にも並列処理を行う。これにより、さらに並列度を向上させて、全体の処理を高速化する。
【０１１４】
なお、この第５の実施の形態におけるシステム構成は、上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【０１１５】
［画像認識処理回路］
図２０は、本技術の第５の実施の形態における画像認識処理回路２００の要部の構成例を示す図である。なお、プーリング処理回路２５０、活性化処理回路２６０、制御回路２７０については、上述の第１の実施の形態と同様であるため、同図において省略している。また、入力バッファ２１０については図示を省略しているが、チャネル毎に独立した入力バッファ２１０を備え、チャネル毎にデータが入力され、それぞれ独立した２次元シフトレジスタ２２０にデータが供給される。
【０１１６】
この第５の実施の形態における画像認識処理回路２００は、１つの領域に対する４つの２次元畳込み演算回路２３０をチャネル方向に複数チャネル分（この例では４チャネル分）備えることを想定する。これにより、基準となる座標位置（＋０，＋０）、（＋１，＋０）、（＋０，＋１）、（＋１，＋１）に対して、４チャネル分の同時動作が可能となる。
【０１１７】
基準となる座標位置（＋０，＋０）、（＋１，＋０）、（＋０，＋１）、（＋１，＋１）のそれぞれの演算結果は、４つの異なる加算器２４１によってそれぞれ加算される。すなわち、これら４つの加算器２４１は、チャネル方向に異なるチャネルの２次元畳込み演算を加算して、３次元畳込み演算結果を生成する加算器である。
【０１１８】
［２次元畳込み演算回路］
図２１は、本技術の第５の実施の形態における２次元シフトレジスタ２２０および２次元畳込み演算回路２３０の一構成例を示す図である。
【０１１９】
ここでは、チャネルＣＨ０について、座標位置（＋０，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０＿００が出力される。座標位置（＋０，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０＿０１が出力される。座標位置（＋１，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０＿１０が出力される。座標位置（＋１，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ０＿１１が出力される。
【０１２０】
また、チャネルＣＨ１について、座標位置（＋０，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１＿００が出力される。座標位置（＋０，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１＿０１が出力される。座標位置（＋１，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１＿１０が出力される。座標位置（＋１，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ１＿１１が出力される。
【０１２１】
また、チャネルＣＨ２について、座標位置（＋０，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ２＿００が出力される。座標位置（＋０，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ２＿０１が出力される。座標位置（＋１，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ２＿１０が出力される。座標位置（＋１，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ２＿１１が出力される。
【０１２２】
また、チャネルＣＨ３について、座標位置（＋０，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ３＿００が出力される。座標位置（＋０，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ３＿０１が出力される。座標位置（＋１，＋０）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ３＿１０が出力される。座標位置（＋１，＋１）を基準とした領域に関しては２次元畳込み演算結果ｃｎｖ３＿１１が出力される。
【０１２３】
加算器２４１は、各チャネルの対応する座標位置同士の加算値を生成する。すなわち、２次元畳込み演算結果ｃｎｖ０＿００、ｃｎｖ１＿００、ｃｎｖ２＿００、ｃｎｖ３＿００の加算値が座標位置（＋０，＋０）を基準とした領域の２次元畳込み演算結果ｃｎｖ＿００として出力される。また、２次元畳込み演算結果ｃｎｖ０＿０１、ｃｎｖ１＿０１、ｃｎｖ２＿０１、ｃｎｖ３＿０１の加算値が座標位置（＋０，＋１）を基準とした領域の２次元畳込み演算結果ｃｎｖ＿０１として出力される。また、２次元畳込み演算結果ｃｎｖ０＿１０、ｃｎｖ１＿１０、ｃｎｖ２＿１０、ｃｎｖ３＿１０の加算値が座標位置（＋１，＋０）を基準とした領域の２次元畳込み演算結果ｃｎｖ＿１０として出力される。また、２次元畳込み演算結果ｃｎｖ０＿１１、ｃｎｖ１＿１１、ｃｎｖ２＿１１、ｃｎｖ３＿１１の加算値が座標位置（＋１，＋１）を基準とした領域の２次元畳込み演算結果ｃｎｖ＿１１として出力される。
【０１２４】
加算器２４１による加算は、全てのチャネルに関してでもよく、一部のチャネルに関してでもよい。全てのチャネルに関して並列に処理を行った場合、ワークメモリ１０５への保存および読出しが不要になる。加算器２４１によって一部のチャネルについて加算して、残りのチャネルに関しては、上述の実施の形態と同様に加算回路２４０によって、逐次的にチャネル方向に加算を行って３次元畳込み演算結果を生成してもよい。この場合であっても、複数チャネル毎に処理できるため、並列処理しない場合と比べてワークメモリ１０５へのアクセス回数を減らすことができる。そのため、必要なメモリバンド幅を削減することができる。
【０１２５】
このように、本技術の第５の実施の形態によれば、複数チャネルに関する２次元畳込み演算同士をチャネル方向にさらに並列処理することにより、並列度を向上させて全体の処理を高速化することができる。
【０１２６】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１２７】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１２８】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１２９】
なお、本技術は以下のような構成もとることができる。
（１）第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した２次元シフトレジスタと、
前記２次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の２次元領域における前記データをそれぞれ順次選択する複数の選択器と、
前記２次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記２次元領域における２次元畳込み演算結果を互いに並列に算出する複数の２次元畳込み演算回路と、
前記複数の２次元畳込み演算回路に対応して設けられて当該複数の２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して３次元畳込み演算結果として出力する複数の加算回路と
を具備する演算処理回路。
（２）前記係数メモリは、複数の種類の前記係数データを記憶し、
前記複数の２次元畳込み演算回路の各々は、前記２次元シフトレジスタに保持された前記データを入れ替えることなく連続して前記複数の選択器によって選択された前記データと前記複数の種類の前記係数データとの前記２次元畳込み演算を行う
前記（１）に記載の演算処理回路。
（３）前記係数メモリは、複数の種類の前記係数データを記憶し、
前記複数の２次元畳込み演算回路の各々は、前記２次元畳込み演算を前記複数の種類の前記係数データについて並列に行う
前記（１）に記載の演算処理回路。
（４）前記複数の２次元畳込み演算回路の各々は、前記２次元シフトレジスタに保持されたデータのうち互いに異なる２次元領域における前記データについて前記２次元畳込み演算をさらに並列に行う
前記（１）から（３）のいずれかに記載の演算処理回路。
（５）前記複数の２次元畳込み演算回路によるそれぞれの演算結果を保持する２次元畳込み演算結果保持部をさらに具備し、
前記複数の加算回路は、当該複数の２次元畳込み演算回路によるそれぞれの演算結果と前記２次元畳込み演算結果保持部に保持されている演算結果とを前記チャネル方向に加算する
前記（１）から（４）のいずれかに記載の演算処理回路。
（６）前記複数の加算回路は、前記複数の２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に互いに並列に加算して３次元畳込み演算結果として出力する
前記（１）から（４）のいずれかに記載の演算処理回路。
（７）前記複数の加算回路から出力された前記３次元畳込み演算結果に対して所定の活性化処理を行う活性化処理回路をさらに具備する前記（１）から（６）のいずれかに記載の演算処理回路。
（８）前記複数の加算回路から出力された前記３次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路をさらに具備する前記（１）から（７）のいずれかに記載の演算処理回路。
（９）前記プーリング処理は、前記３次元畳込み演算結果における複数の値について総和、平均、および、最大値の少なくとも１つのプーリング値を生成する処理である
前記（８）に記載の演算処理回路。
（１０）前記２次元シフトレジスタは、（ｍ×ｋｗ＋ｐｗ−１）＋１）×（（ｋｈ＋ｐｈ−１）＋１）個以上の前記データを保持し、
前記複数の２次元畳込み演算回路は、前記乗算を行う（ｍ×ｐｗ×ｐｈ）個の乗算器と、前記累加算を行う（ｍ×ｐｗ×ｐｈ）個の累加算器とを備えて、（ｋｗ×ｋｈ）のサイズの前記２次元畳込み演算を、（ｐｗ×ｐｈ）個の前記２次元領域に対して並列に行い、
前記プーリング処理回路は、（ｍ×ｐｗ×ｐｈ）個の前記３次元畳込み演算結果を入力データとしてｍ個の前記プーリング値を生成する
前記（８）または（９）に記載の演算処理回路。
但し、ｍは１以上の整数であり、ｋｗ、ｋｈ、ｐｗ、ｐｈは２以上の整数である。
（１１）前記２次元シフトレジスタの前記複数のシフトレジスタは、各々が前記第一の方向に対して（ｐｗ−１）個おきに結線されたレジスタからなり、ｐｗ個単位で前記第一の方向へのシフト動作を行う
前記（１０）に記載の演算処理回路。
（１２）前記２次元シフトレジスタに保持されるデータを入力として、畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う前記（８）から（１１）のいずれかに記載の演算処理回路。
（１３）処理対象となるデータを取得するデータ取得部と、
前記データを入力として畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う演算処理回路と
を具備する認識システムであって、
前記演算処理回路は、
第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した２次元シフトレジスタと、
前記２次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の２次元領域における前記データをそれぞれ順次選択する複数の選択器と、
前記２次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記２次元領域における２次元畳込み演算結果を互いに並列に算出する複数の２次元畳込み演算回路と、
前記複数の２次元畳込み演算回路に対応して設けられて当該複数の２次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して３次元畳込み演算結果として出力する複数の加算回路と、
前記複数の加算回路から出力された前記３次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路とを備え、
前記データを前記２次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記３次元畳込み演算結果を前記データの特徴量として出力した後、出力された前記特徴量を再び前記２次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記３次元畳込み演算結果を新たな特徴量として出力する動作を繰り返す認識システム。
【符号の説明】
【０１３０】
１０  入力画像
２０  特徴量抽出器
３０  識別器
４０  畳込み層
５０  プーリング層
６０  全結合層
９０  出力
１０１  画像取得部
１０２  外部メモリ
１０３  メモリコントローラ
１０４  ＤＭＡコントローラ
１０５  ワークメモリ
１０６  制御コンピュータ
１０７  バス
２００  画像認識処理回路
２１０  入力バッファ
２１２  シフトレジスタ
２１３  入力バッファ
２１４  アドレス生成部
２２０  ２次元シフトレジスタ
２２１  レジスタ
２２２〜２２４  セレクタ
２３０  ２次元畳込み演算回路
２３１  乗算器
２３２  係数メモリ
２３３  累加算器
２３４、２４０、２４１  加算器
２５０  プーリング処理回路
２６０  活性化処理回路
２７０  制御回路
【図１】
2018067154.tif 000003
【図２】
2018067154.tif 000004
【図３】
2018067154.tif 000005
【図４】
2018067154.tif 000006
【図５】
2018067154.tif 000007
【図６】
2018067154.tif 000008
【図７】
2018067154.tif 000009
【図８】
2018067154.tif 000010
【図９】
2018067154.tif 000011
【図１０】
2018067154.tif 000012
【図１１】
2018067154.tif 000013
【図１２】
2018067154.tif 000014
【図１３】
2018067154.tif 000015
【図１４】
2018067154.tif 000016
【図１５】
2018067154.tif 000017
【図１６】
2018067154.tif 000018
【図１７】
2018067154.tif 000019
【図１８】
2018067154.tif 000020
【図１９】
2018067154.tif 000021
【図２０】
2018067154.tif 000022
【図２１】
2018067154.tif 000023