(57)【特許請求の範囲】
【請求項１】
入力画像に含まれる特徴量を抽出するための畳み込み演算手段（１０１，２０１）、活性化手段（１０２，２０２）、プーリング手段（１０３，２０３）を備え、畳み込みニューラルネットワークによる演算を実行する演算処理装置（１００，２００）であって、
前記畳み込み演算手段、前記活性化手段、前記プーリング手段による処理により得られる中間演算結果データを格納する中間演算結果データ格納手段（１０７，２０７，２０８，２０９）と、
複数の領域に分割された探索窓を設定し、前記中間演算結果データ格納手段に格納されている前記中間演算結果データに対して前記探索窓を移動させながら同一の前記領域に含まれる画像データを単位画像データとして順次読み出す単位画像データ読み出し手段（１０４，２０４）と、
前記単位画像データ読み出し手段が順次読み出す前記単位画像データに対して前記畳み込み演算手段による演算処理を実行することにより単位演算結果データを生成する単位演算結果データ生成手段（１０１，２０１）と、
前記単位演算結果データ生成手段が順次生成する前記単位演算結果データを累積することにより累積演算結果データを生成する累積演算結果データ生成手段（１０５，２０５）と、
前記単位演算結果データ生成手段が生成する前記単位演算結果データおよび前記累積演算結果データ生成手段が生成する前記累積演算結果データを第１記憶手段（１０８，１０９、２０７，２０８，２０９）および第２記憶手段（１０８，１０９、２０７，２０８，２０９）に交互に切り替えながら格納する演算結果データ格納手段（１０６，２０６）と、
前記第１記憶手段または前記第２記憶手段に格納されている前記単位演算結果データを選択して前記累積演算結果データ生成手段に与え、前記第１記憶手段または前記第２記憶手段に格納されている前記累積演算結果データを選択して最終演算結果データとして出力する演算結果データ選択手段（１１０，２１１）と、
を備えることを特徴とする演算処理装置。
【請求項２】
前記中間演算結果データ、前記単位演算結果データ、前記累積演算結果データを格納可能な３つの演算結果データ格納手段（２０７，２０８，２０９）と、
前記演算結果データ格納手段のうち何れか１つを前記前記中間演算結果データ格納手段として選択する第１選択手段（２１０）と、
前記演算結果データ格納手段のうち残りの２つを前記第１記憶手段および前記第２記憶手段として選択する第２選択手段（２１１）と、
を備え、
前記第２選択手段は、前記第１記憶手段および前記第２記憶手段として選択した２つの前記演算結果データ格納手段を用いて前記演算結果データ選択手段として動作することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記演算結果データ選択手段が出力する前記最終演算結果データを格納する最終演算結果データ格納手段（３００）を備え、
複数の前記中間演算結果データから得られる複数の前記最終演算結果データを前記畳み込み演算手段の１演算サイクルにより処理される画素サイズと同じサイズの格納領域にまとめて格納することを特徴とする請求項１または２に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置に関する。
【背景技術】
【０００２】
従来より、複数の処理層が階層的に接続されたニューラルネットワークによる演算を実行する演算処理装置が考えられている。特に画像認識を行う演算処理装置においては、いわゆる畳み込みニューラルネットワーク（ＣＮＮ：Convolutional Neural Network）が中核的な存在となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５１８４８２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
畳み込みニューラルネットワークによれば、入力される画像データに対して中間層の処理および全結合層の処理が順次施されることにより、画像に含まれる対象物が認識された最終的な演算結果データが得られる。中間層では、複数の特徴量抽出処理層が階層的に接続されており、各処理層において、前階層から入力される入力データに対して畳み込み演算処理、活性化処理、プーリング処理を実行する処理が行われる。中間層は、このように各処理層における処理を繰り返すことで入力画像データに含まれる特徴量を高次元で抽出し、その結果を中間演算結果データとして出力する。全結合層では、中間層から得られる複数の中間演算結果データを結合して最終的な演算結果データを出力する。
【０００５】
このように畳み込みニューラルネットワークにおいては、中間層で行われる処理と全結合層で行われる処理とが異なる。そのため、従来の構成では、中間層を実現する回路と全結合層を実現する回路とを別々に設けており、従って、演算処理装置全体として回路規模が大きくなるという課題を有している。
【０００６】
そこで、本発明は、中間層を実現する回路を利用して全結合層を実現する回路を構成することにより、ニューラルネットワークによる演算処理を実現する演算処理装置の全体の回路規模を小さくすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る演算処理装置は、中間層の処理の後に行う全結合層の処理を以下のように行う。即ち、演算処理装置は、畳み込み演算手段、活性化手段、プーリング手段による一連の特徴量抽出処理により得られる中間演算結果データ、つまり、中間層の処理により得られる中間演算結果データに対して、複数の領域に分割された探索窓を走査しながら、同一の領域に含まれる画像データを単位画像データとして順次読み出す。そして、演算処理装置は、順次読み出す単位画像データに対して畳み込み演算手段による演算処理を実行することにより単位演算結果データを順次生成する。また、演算処理装置は、順次生成する単位演算結果データを累積して累積演算結果データを生成する。そして、演算処理装置は、単位演算結果データおよび累積演算結果データを第１記憶手段および第２記憶手段に交互に切り替えながら格納する処理を繰り返す。そして、演算処理装置は、最終的に第１記憶手段または第２記憶手段に記憶されている累積演算結果データを選択し、その累積演算結果データを最終演算結果データ、つまり、全結合層の処理による最終的な演算結果データとして出力する。
【０００８】
即ち、演算処理装置によれば、中間層を実現する回路の一部、つまり畳み込み演算手段を利用して全結合層の処理を行うようにした。従って、中間層を実現する回路と別個に全結合層を実現する回路を設ける必要がなく、ニューラルネットワークによる演算処理を実現する演算処理装置の全体の回路規模を小さくすることができる。
【０００９】
さらに、全結合層の処理を多階層にわたって行う場合には、演算処理装置は、中間演算結果データ、単位演算結果データ、累積演算結果データを格納可能な３つの演算結果データ格納手段を備える構成とするとよい。そして、演算処理装置は、これら複数の演算結果データ格納手段のうち何れか１つを中間演算結果データ格納手段として選択し、残りの２つを第１記憶手段および第２記憶手段として選択して使用する構成とするとよい。
【００１０】
この構成によれば、今回の階層における最終演算結果データは、３つの演算結果データ格納手段のうち何れか１つに格納される。そのため、次の階層における処理では、その最終演算結果データを格納する演算結果データ格納手段を中間演算結果データ格納手段としてそのまま用いることができる。従って、全結合層の処理を多階層にわたって行う場合であっても、効率良く処理を進めることができる。また、このように３つの演算結果データ格納手段をローテーションさせながら中間演算結果データ格納手段、第１記憶手段、第２記憶手段として使用する構成によれば、全結合層の処理を多階層にわたって行うための回路を別個に設ける必要がない。従って、演算処理装置の回路規模を大きくしなくとも、全結合層の処理を多階層にわたって行うことができる。
【００１１】
また、演算処理装置は、複数の中間演算結果データから得られる複数の最終演算結果データを畳み込み演算手段の１演算サイクルにより処理される画素サイズと同じサイズの格納領域にまとめて格納する構成とするとよい。全結合層の処理には、最終演算結果データを得るための前段の処理と、この最終演算結果データに対して重み係数を異ならせながら積和演算を行う後段の処理とが含まれる。前段の処理により得られる最終演算結果データを畳み込み演算手段の１演算サイクルにより処理される画素サイズに合わせて格納しておけば、後段の処理における積和演算も畳み込み演算手段を利用して行うことができる。そのため、全結合層の後段の処理を実現するための回路を別個に設ける必要がなく、演算処理装置の全体の回路規模を抑えることができる。
【図面の簡単な説明】
【００１２】
【図１】畳み込みニューラルネットワークの構成例を概念的に示す図
【図２】中間層における演算処理の流れを視覚的に示す図（その１）
【図３】中間層における演算処理の流れを視覚的に示す図（その２）
【図４】特徴量抽出処理に用いられる一般的な演算式および関数を示す図
【図５】第１実施形態に係る演算処理装置の構成例を概略的に示すブロック図
【図６】畳み込み演算処理部の構成例を概略的に示すブロック図
【図７】演算器の構成例を概略的に示すブロック図
【図８】探索窓の設定例を示す図
【図９】全結合層における演算処理の流れを視覚的に示す図
【図１０】全結合層における演算処理の結果データの格納例を示す図
【図１１】第２実施形態に係る演算処理装置の構成例を概略的に示すブロック図
【図１２】第３実施形態に係る演算処理装置の構成例を概略的に示すブロック図
【図１３】第４実施形態に係る演算処理装置の構成例を概略的に示すブロック図
【発明を実施するための形態】
【００１３】
以下、演算処理装置の複数の実施形態について図面を参照しながら説明する。なお、各実施形態において実質的に同一の要素には同一の符号を付し、説明を省略する。
（ニューラルネットワーク）
図１には、詳しくは後述する演算処理装置１００，２００に適用されるニューラルネットワーク、この場合、畳み込みニューラルネットワークの構成を概念的に示している。畳み込みニューラルネットワークＮは、入力データである画像データＤ１から所定の形状やパターンを認識する画像認識技術に応用されるものであり、中間層Ｎａと全結合層Ｎｂとを有する。中間層Ｎａは、複数の特徴量抽出処理層Ｎａ１，Ｎａ２・・・が階層的に接続された構成である。各特徴量抽出処理層Ｎａ１，Ｎａ２・・・は、それぞれ畳み込み層Ｃおよびプーリング層Ｐを備える。
【００１４】
次に、中間層Ｎａにおける処理の流れについて説明する。図２に例示するように、第１層目の特徴量抽出処理層Ｎａ１では、演算処理装置は、入力される画像データＤ１を例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる特徴量を抽出する。なお、第１層目の特徴量抽出処理層Ｎａ１では、例えば水平方向に延びる線状の特徴量や斜め方向に延びる線状の特徴量などといった比較的シンプルな単独の特徴量を抽出する。
【００１５】
第２層目の特徴量抽出処理層Ｎａ２では、演算処理装置は、前階層の特徴量抽出処理層Ｎａ１から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる特徴量を抽出する。なお、第２層目の特徴量抽出処理層Ｎａ２では、第１層目の特徴量抽出処理層Ｎａ１で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。
【００１６】
第３層目の特徴量抽出処理層Ｎａ３では、演算処理装置は、前階層の特徴量抽出処理層Ｎａ２から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる特徴量を抽出する。なお、第３層目の特徴量抽出処理層Ｎａ３では、第２層目の特徴量抽出処理層Ｎａ２で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このように、複数の特徴量抽出処理層による特徴量の抽出処理を繰り返すことで、演算処理装置は、画像データＤ１に含まれる検出対象物体の画像認識を行う。
【００１７】
演算処理装置は、中間層Ｎａにおいて複数の特徴量抽出処理層Ｎａ１，Ｎａ２，Ｎａ３・・・による処理を繰り返すことで入力画像データＤ１に含まれる種々の特徴量を高次元で抽出していく。そして、演算処理装置は、中間層Ｎａの処理により得られた結果を中間演算結果データとして全結合層Ｎｂに出力する。
【００１８】
全結合層Ｎｂは、中間層Ｎａから得られる複数の中間演算結果データを結合して最終的な演算結果データを出力する。即ち、全結合層Ｎｂは、中間層Ｎａから得られる複数の中間演算結果データを結合し、さらに、その結合結果に対して重み係数を異ならせながら積和演算を行うことにより、最終的な演算結果データ、即ち、入力データである画像データＤ１に含まれる検出対象物を認識した画像データを出力する。このとき、積和演算による演算結果の値が大きい部分が検出対象物の一部または全部として認識される。
【００１９】
なお、後述する各実施形態においては、演算処理装置は、中間層Ｎａを実現する回路の一部を利用して全結合層Ｎｂを実現する回路を構成している。即ち、本発明に係る演算処理装置は、中間層を実現する回路と全結合層を実現する回路と共通化した構成となっている。
【００２０】
次に、演算処理装置による特徴量抽出処理の流れについて説明する。図３に例示するように、演算処理装置は、前階層の特徴量抽出処理層から入力される入力データＤｎを所定サイズ、この場合、図にてハッチングで示す３×３画素ごとに走査する。なお、画素サイズは、３×３画素に限られず適宜変更することができる。
【００２１】
そして、演算処理装置は、走査したデータに対して、それぞれ周知の畳み込み演算を行う。そして、演算処理装置は、畳み込み演算後のデータに対して周知の活性化処理を行い、畳み込み層Ｃの出力とする。そして、演算処理装置は、畳み込み層Ｃの出力データＣｎに対して、所定サイズ、この場合、２×２画素ごとに周知のプーリング処理を行い、プーリング層Ｐの出力とする。そして、演算処理装置は、プーリング層Ｐの出力データＰｎを次の階層の特徴量抽出処理層に出力する。なお、画素サイズは、２×２画素に限られず適宜変更することができる。
【００２２】
図４には、畳み込み演算処理に用いられる畳み込み関数、活性化処理に用いられる関数、プーリング処理に用いられる関数の一般的な例を示している。即ち、畳み込み関数Ｙｉｊは、直前の層の出力Ｘｉｊに学習により得られる重み係数Ｗｐ，ｑを乗算した値を累積する関数となっている。なお、「Ｎ」は１サイクルの畳み込み演算処理により処理される画素サイズを示す。即ち、例えば１演算サイクルの画素サイズが「３×３」画素である場合、Ｎの値は「２」である。また、畳み込み関数Ｙｉｊは、累積値に所定のバイアス値を加算する関数としてもよい。また、畳み込み関数は、全結合処理にも対応し得る積和演算が可能な関数であれば、種々の関数を採用することができる。また、活性化処理には、周知のロジスティックジグモイド関数やＲｅＬＵ関数（Rectified Linear Units）などが用いられる。また、プーリング処理には、入力されるデータの最大値を出力する周知の最大プーリング関数や、入力されるデータの平均値を出力する周知の平均プーリング関数などが用いられる。
【００２３】
（第１実施形態）
図５に例示する演算処理装置１００は、畳み込みニューラルネットワークによる演算を実行する装置であり、畳み込み演算処理部１０１、活性化処理部１０２、プーリング処理部１０３、データ読み出し処理部１０４、加算処理部１０５、切替回路１０６、記憶部１０７、記憶部１０８、記憶部１０９、選択回路１１０などを備える。記憶部１０７，１０８，１０９は、例えば半導体メモリなどといった記憶媒体で構成される。また、記憶部１０７，１０８，１０９以外の構成要素は、ソフトウェアにより仮想的に実現してもよいし、ハードウェアにより構成してもよい。
【００２４】
この場合、演算処理装置１００は、中間層Ｎａを実現する回路として機能する状態と全結合層Ｎｂを実現する回路として機能する状態とに切り替えられるようになっている。活性化処理部１０２、プーリング処理部１０３は、演算処理装置１００が中間層Ｎａを実現する回路として機能する場合に動作し、全結合層Ｎｂを実現する回路として機能する場合には動作しないようになっている。
【００２５】
畳み込み演算処理部１０１は、畳み込み演算手段の一例であり、入力されるデータに対して周知の畳み込み演算処理を行う。畳み込み演算処理部１０１は、複数のシストリックアレイにより構成されており、１回の演算サイクルにより、この場合、３×３画素のデータに対して演算処理を実行するようになっている。
【００２６】
ここで、畳み込み演算処理部１０１の構成例についてさらに詳細に説明する。図６に例示するように、畳み込み演算処理部１０１は、同一構成の複数の演算器１２０を相互に接続した構成である。この場合、演算器１２０は、前階層からデータが入力される入力側から演算結果データを出力する出力側に向かって複数段、この場合、３段に配列されている。また、畳み込み演算処理部１０１は、それぞれ３段の演算器１２０からなる３本の演算ラインＬａ１〜Ｌａ３を並列に備えている。
【００２７】
畳み込み演算処理部１０１は、それぞれの演算ラインＬａ１〜Ｌａ３において各段の演算器１２０による演算結果を演算サイクルごとに出力側の演算器に順次転送してくことで、畳み込み演算を並列的に行うようにした構成である。そして、畳み込み演算処理部１０１は、各演算ラインＬａ１〜Ｌａ３により得られる演算結果データを加算器１２１により加算して畳み込み演算結果データとして出力する。
【００２８】
また、各段の演算器１２０には、前階層から入力される入力データがフリップフロップ回路１３０によりタイミングを調整されながら入力される構成である。また、各段の演算器１２０には、重み係数記憶部１４０から重み係数が入力される構成である。なお、フリップフロップ回路１３０や重み係数記憶部１４０も、入力側から出力側に向かって各段の演算器１２０に対応して複数段に配列されている。
【００２９】
図７に例示するように、演算器１２０は、入力データと重み係数とを乗算する乗算器１２０ａと、乗算器１２０ａによる演算結果を加算する加算器１２０ｂとを備える。そして、演算器１２０は、加算器１２０ｂによる演算結果データをフリップフロップ回路１２０ｃを介して出力する構成である。なお、演算器１２０は、この構成に限られるものではない。
【００３０】
活性化処理部１０２は、活性化手段の一例であり、畳み込み演算処理部１０１が出力するデータに対して周知の活性化処理を行う。なお、活性化処理部１０２による活性化処理は、ロジスティックジグモイド関数またはＲｅＬＵ関数の何れの関数を採用してもよい。また、活性化処理部１０２による活性化処理は、その他の非線形関数を採用してもよい。プーリング処理部１０３は、プーリング手段の一例であり、活性化処理部１０２が出力するデータに対して周知のプーリング処理を行う。
【００３１】
演算処理装置１００は、中間層Ｎａを実現する回路として機能する場合には、畳み込み演算処理部１０１、活性化処理部１０２、プーリング処理部１０３による一連の特徴量抽出処理を繰り返すことにより、入力データに含まれる特徴量を高次元で抽出していく。そして、演算処理装置１００は、中間層Ｎａとして機能することにより得られた最終的な演算結果データを中間演算結果データとして出力する。そして、演算処理装置１００は、出力した中間演算結果データを記憶部１０７に格納する。この場合、記憶部１０７は、中間演算結果データ格納手段の一例として機能する。演算処理装置１００は、記憶部１０７に中間演算結果データを格納すると、全結合層Ｎｂを実現する回路として機能するように切り替えられる。
【００３２】
データ読み出し処理部１０４は、単位画像データ読み出し手段の一例として機能する。即ち、データ読み出し処理部１０４は、矩形状の探索窓Ｗを設定するとともに、その探索窓Ｗを複数、この場合、４つの矩形状の領域に分割する。この場合、図８に例示するように、データ読み出し処理部１０４は、畳み込み演算処理部１０１の１回の演算サイクルにより処理される画素サイズ、この場合、３×３画素の探索窓よりも大きい５×５画素のサイズの探索窓Ｗを設定する。そして、データ読み出し処理部１０４は、畳み込み演算処理部１０１の１回の演算サイクルにより処理される画素サイズ、この場合、３×３画素ごとに、探索窓Ｗを４つの領域ｗ１〜ｗ４に分割する。なお、この場合、領域ｗ２〜ｗ４は、その一部が探索窓Ｗからはみ出してしまう。そのため、領域ｗ２〜ｗ４のうち探索窓Ｗからはみ出す部分に含まれる画素に対する処理は無効化されるようになっている。
【００３３】
データ読み出し処理部１０４は、記憶部１０７に格納されている中間演算結果データに対して探索窓Ｗを移動させながら同一の領域ｗ１〜ｗ４に含まれる画像データを単位画像データとして順次読み出す。即ち、データ読み出し処理部１０４は、１回目の走査処理においては、中間演算結果データに対して探索窓Ｗを移動させながら領域ｗ１に含まれる画像データを単位画像データとして読み出し、畳み込み演算処理部１０１に出力する。また、データ読み出し処理部１０４は、２回目の走査処理においては、中間演算結果データに対して探索窓Ｗを移動させながら領域ｗ２に含まれる画像データを単位画像データとして読み出し、畳み込み演算処理部１０１に出力する。以降、データ読み出し処理部１０４は、３回目の走査処理においては領域ｗ３に、４回目の走査処理においては領域ｗ４に含まれる画像データをそれぞれ単位画像データとして読み出して畳み込み演算処理部１０１に出力する。このようにして、データ読み出し処理部１０４は、探索窓Ｗに含まれる全ての領域ｗ１〜ｗ４について、それぞれ走査処理を行っていく。
【００３４】
演算処理装置１００が全結合層Ｎｂを実現する回路として機能する場合には、畳み込み演算処理部１０１は、単位演算結果データ生成手段の一例として機能する。即ち、畳み込み演算処理部１０１は、畳み込み演算処理に用いられる畳み込み関数を用いて、データ読み出し処理部１０４が読み出す単位画像データに対して演算処理を行うことにより単位演算結果データを生成する。畳み込み演算処理部１０１は、データ読み出し処理部１０４が順次読み出す全ての単位画像データについて、それぞれ単位演算結果データを生成する。そして、畳み込み演算処理部１０１は、単位演算結果データを生成するごとに、その単位演算結果データを加算処理部１０５および切替回路１０６に出力する。
加算処理部１０５は、累積演算結果データ生成手段の一例として機能する。即ち、加算処理部１０５は、詳しくは後述するように、畳み込み演算処理部１０１が順次生成する単位演算結果データを累積することにより累積演算結果データを生成する。
【００３５】
切替回路１０６は、演算結果データ格納手段の一例として機能する。畳み込み演算処理部１０１が生成する単位演算結果データおよび加算処理部１０５が生成する累積演算結果データを記憶部１０８および記憶部１０９に交互に切り替えながら格納する。即ち、切替回路１０６は、例えば、１回目の演算サイクルにおいて、単位演算結果データを記憶部１０８に格納し、累積演算結果データを記憶部１０９に格納した場合には、２回目の演算サイクルにおいては、単位演算結果データを記憶部１０９に格納し、累積演算結果データを記憶部１０８に格納する。そして、切替回路１０６は、３回目の演算サイクルにおいては、再び、単位演算結果データを記憶部１０８に、累積演算結果データを記憶部１０９に格納し、以降、１演算サイクルごとに、単位演算結果データを格納する記憶部と累積演算結果データを格納する記憶部とを順次切り替えていく。なお、ここでは、便宜的に、記憶部１０８を第１記憶手段の一例として定義し、記憶部１０９を第２記憶手段の一例として定義する。但し、記憶部１０８を第２記憶手段の一例として定義し、記憶部１０９を第１記憶手段の一例として定義してもよい。
【００３６】
選択回路１１０は、演算結果データ選択手段の一例として機能する。即ち、選択回路１１０は、畳み込み演算処理部１０１からの単位演算結果データの出力が続いている場合には、その時点において記憶部１０８または記憶部１０９に格納されている単位演算結果データを選択して加算処理部１０５に与える。加算処理部１０５は、選択回路１１０から与えられる単位演算結果データに畳み込み演算処理部１０１から与えられる単位演算結果データを加算することにより、単位演算結果データを順次累積して累積演算結果データを生成する。一方、選択回路１１０は、畳み込み演算処理部１０１からの単位演算結果データの出力が途絶えると、その時点において記憶部１０８または記憶部１０９に格納されている累積演算結果データを選択して最終演算結果データとして出力する。
【００３７】
次に、演算処理装置１００が全結合層Ｎｂを実現する回路として機能する場合における動作例について説明する。即ち、演算処理装置１００は、中間演算結果データに対する全結合処理を、探索窓Ｗの左上領域ｗ１、右上領域ｗ２、左下領域ｗ３、右下領域ｗ４に分けて行う。
【００３８】
まず、左上領域ｗ１についての全結合処理では、演算処理装置１００は、中間演算結果データに対して探索窓Ｗを左上端から右下端に向けて走査させながら、その走査に伴い移動する左上領域ｗ１に含まれる９画素の画像データを記憶部１０７から順次読み込み、順次読み込んだ画像データに対してそれぞれ演算処理を行っていく。そして、演算処理装置１００は、左上領域ｗ１について得られた演算結果データを、この場合、記憶部１０８に格納する。
【００３９】
次に、右上領域ｗ２についての全結合処理では、演算処理装置１００は、中間演算結果データに対して探索窓Ｗを左上端から右下端に向けて走査させながら、その走査に伴い移動する右上領域ｗ２に含まれる９画素の画像データを記憶部１０７から順次読み込み、読み込んだ画像データに対してそれぞれ演算処理を行っていく。なお、右上領域ｗ２のうち探索窓Ｗからはみ出した部分に含まれる画素に対する演算処理の結果は無効化される。
【００４０】
そして、演算処理装置１００は、右上領域ｗ２について得られた演算結果データを、この場合、記憶部１０９に格納する。このとき、演算処理装置１００は、記憶部１０８に格納されているデータを読み出して加算処理部１０５に入力することにより、左上領域ｗ１の演算結果データと右上領域ｗ２の演算結果データを累積した累積演算結果データを得る。そして、演算処理装置１００は、得られた累積演算結果データを記憶部１０９に格納する。
【００４１】
次に、左下領域ｗ３についての全結合処理では、演算処理装置１００は、中間演算結果データに対して探索窓Ｗを左上端から右下端に向けて走査させながら、その走査に伴い移動する左下領域ｗ３に含まれる９画素の画像データを記憶部１０７から順次読み込み、読み込んだ画像データに対してそれぞれ演算処理を行っていく。なお、左下領域ｗ３のうち探索窓Ｗからはみ出した部分に含まれる画素に対する演算処理の結果は無効化される。
【００４２】
そして、演算処理装置１００は、左下領域ｗ３について得られた演算結果データを、この場合、記憶部１０８に格納する。このとき、演算処理装置１００は、記憶部１０９に格納されているデータを読み出して加算処理部１０５に入力することにより、左上領域ｗ１の演算結果データと右上領域ｗ２の演算結果データと左下領域ｗ３の演算結果データを累積した累積演算結果データを得る。そして、演算処理装置１００は、得られた累積演算結果データを記憶部１０８に格納する。
【００４３】
次に、右下領域ｗ４についての全結合処理では、演算処理装置１００は、中間演算結果データに対して探索窓Ｗを左上端から右下端に向けて走査させながら、その走査に伴い移動する右下領域ｗ４に含まれる９画素の画像データを記憶部１０７から順次読み込み、読み込んだ画像データに対してそれぞれ演算処理を行っていく。なお、右下領域ｗ４のうち探索窓Ｗからはみ出した部分に含まれる画素に対する演算処理の結果は無効化される。
【００４４】
そして、演算処理装置１００は、右下領域ｗ４について得られた演算結果データを、この場合、記憶部１０９に格納する。このとき、演算処理装置１００は、記憶部１０８に格納されているデータを読み出して加算処理部１０５に入力することにより、左上領域ｗ１の演算結果データと右上領域ｗ２の演算結果データと左下領域ｗ３の演算結果データと右下領域ｗ４の演算結果データを累積した累積演算結果データを得る。そして、演算処理装置１００は、得られた累積演算結果データを記憶部１０９に格納する。これにより、探索窓Ｗ全体についての全結合処理の演算結果データが得られる。
【００４５】
演算処理装置１００は、左上領域ｗ１についての全結合処理、右上領域ｗ２についての全結合処理、左下領域ｗ３についての全結合処理、右下領域ｗ４についての全結合処理において、それぞれ演算に用いる重み係数を異ならせる。そのため、このように、左上領域ｗ１の全結合処理を全て完了してから、次の右上領域ｗ２の全結合処理に進み、右上領域ｗ２の全結合処理を全て完了してから、次の左下領域ｗ３の全結合処理に進む、という処理態様を採用する演算処理装置によれば、演算対象となる領域が変わるときにのみ重み係数を変更すればよい。なお、分割領域ｗ１〜ｗ４の全てについて演算処理を行ってから探索窓Ｗを移動させる構成では、探索窓Ｗを移動させるたびに分割領域の数に応じた重み係数の変更処理が必要となり、その処理負荷が増大する。
【００４６】
以上の全結合処理を視覚的に示すと、図９（ａ）に例示するように、まず左上領域ｗ１についての全結合処理では、探索窓Ｗの移動に伴い左上領域ｗ１から読み出される９画素ずつの画像データに対してそれぞれ畳み込み演算処理部１０１による演算処理が行われる。そして、その演算結果データがメモリ３００に順次格納されていく。
【００４７】
続く右上領域ｗ２についての全結合処理では、図９（ｂ）に例示するように、探索窓Ｗの移動に伴い右上領域ｗ２から読み出される９画素ずつの画像データに対してそれぞれ畳み込み演算処理部１０１による演算処理が行われる。そして、その演算結果データがメモリ３００に加算されていく。
【００４８】
続く左下領域ｗ３についての全結合処理では、図９（ｃ）に例示するように、探索窓Ｗの移動に伴い左上領域ｗ３から読み出される９画素ずつの画像データに対してそれぞれ畳み込み演算処理部１０１による演算処理が行われる。そして、その演算結果データがメモリ３００に加算されていく。以降、右下領域ｗ４についても同様な演算処理が行われ、その演算結果が加算されていく。
【００４９】
このようにして演算処理装置１００は、１つの中間演算結果データについての全結合処理の結果データをメモリ３００に格納する。ところで、中間層Ｎａからは、特徴マップとして複数の中間演算結果データが出力される。そのため、演算処理装置１００は、複数の中間演算結果データに対してそれぞれ同様の全結合処理を行い、その結果データをメモリ３００に格納していく。図１０には、特徴マップとして９つの中間演算結果データが出力された場合において、これら複数の中間演算結果データに対して全結合処理を実施し、その結果データを格納した状態を示している。
【００５０】
メモリ３００は、記憶部１０８，１０９を概念的に含む記憶媒体であり、最終演算結果データ格納手段の一例として機能する。なお、メモリ３００は、記憶部１０８，１０９とは別個の記憶媒体として構成してもよい。そして、演算処理装置１００によれば、メモリ３００に対する最終演算結果データの格納態様にも工夫が施されている。即ち、演算処理装置１００は、複数、この場合、９つの中間演算結果データから得られる複数の最終演算結果データＭ１〜Ｍ９を、畳み込み演算処理部１０１の１演算サイクルにより処置される画素サイズと同じサイズである所定の格納領域Ｒにまとめて格納するようになっている。この場合、畳み込み演算処理部１０１の１演算サイクルにより処理される画素サイズは３×３画素であるから、演算処理装置１００は、これと同じサイズの３×３画素の格納領域Ｒを設定する。
【００５１】
上述したように演算処理装置１００は、各分割領域ｗ１〜ｗ４についての全結合処理において、探索窓Ｗを左上端から右下端に向けて走査させていく。このとき、演算処理装置１００は、１走査サイクルごとに探索窓Ｗを１画素ずつずらしてく。そして、演算処理装置１００は、１つ目の中間演算結果データに対する全結合処理の結果データを次のように格納する。即ち、図１０に例示するように、演算処理装置１００は、分割領域ｗ１についての１走査サイクル目の最終演算結果データＭ１［１］をメモリ３００のアドレス（１，１）に格納し、分割領域ｗ１についての２走査サイクル目の最終演算結果データＭ１［２］をメモリ３００のアドレス（４，１）に格納し、分割領域ｗ１についての３走査サイクル目の最終演算結果データＭ１［３］をメモリ３００のアドレス（１，４）に格納し、分割領域ｗ１についての４走査サイクル目の最終演算結果データＭ１［４］をメモリ３００のアドレス（４，４）に格納する。
【００５２】
また、演算処理装置１００は、２つ目の中間演算結果データに対する全結合処理の結果データを次のように格納する。即ち、演算処理装置１００は、分割領域ｗ１についての１走査サイクル目の最終演算結果データＭ２［１］をメモリ３００のアドレス（２，１）に格納し、分割領域ｗ１についての２走査サイクル目の最終演算結果データＭ２［２］をメモリ３００のアドレス（５，１）に格納し、分割領域ｗ１についての３走査サイクル目の最終演算結果データＭ２［３］をメモリ３００のアドレス（２，４）に格納し、分割領域ｗ１についての４走査サイクル目の最終演算結果データＭ２［４］をメモリ３００のアドレス（５，４）に格納する。
【００５３】
以降、演算処理装置１００は、３つ目以降の中間演算結果データに対する全結合処理の結果データＭ３，Ｍ４，・・・を同様に格納していく。即ち、演算処理装置１００は、この場合、メモリ３００のＸ方向およびＹ方向にそれぞれ３アドレス分のオフセットをとりながら各走査サイクルの最終演算結果データを格納していく。なお、図１０では、左右方向をメモリ３００のＸ方向、上下方向をメモリ３００のＹ方向と定義している。
【００５４】
演算処理装置１００は、このように格納領域Ｒごとにまとめた最終演算結果データに対して、全結合層の後段の処理を実行する。即ち、演算処理装置１００は、格納領域Ｒごとにまとめられた最終演算結果データに対して、重み係数を異ならせながら積和演算を行う。このとき、最終演算結果データは、畳み込み演算処理部１０１の１演算サイクルにより処理される画素サイズと同じサイズの格納領域Ｒにまとめられている。そのため、演算処理装置１００は、畳み込み演算処理部１０１を利用して各格納領域Ｒごとに積和演算を行うことができるようになっている。
【００５５】
演算処理装置１００によれば、中間層Ｎａの処理の後に行う全結合層Ｎｂの処理を以下のように行う。即ち、演算処理装置１００は、畳み込み演算処理部１０１、活性化処理部１０２、プーリング処理部１０３による一連の特徴量抽出処理により得られる中間演算結果データ、つまり、中間層Ｎａの処理により得られる中間演算結果データに対して、複数の領域ｗ１〜ｗ４に分割された探索窓Ｗを走査しながら、同一の領域ｗ１〜ｗ４に含まれる画像データを単位画像データとして順次読み出す。そして、演算処理装置１００は、順次読み出す単位画像データに対して畳み込み演算処理部１０１による演算処理を実行することにより単位演算結果データを順次生成する。また、演算処理装置１００は、順次生成する単位演算結果データを累積して累積演算結果データを生成する。そして、演算処理装置１００は、単位演算結果データおよび累積演算結果データを記憶部１０８および記憶部１０９に交互に切り替えながら格納する処理を繰り返す。そして、演算処理装置１００は、最終的に記憶部１０８または記憶部１０９に記憶されている累積演算結果データを選択し、その累積演算結果データを最終演算結果データ、つまり、全結合層Ｎｂの前段の処理による最終的な演算結果データとして出力する。
【００５６】
即ち、演算処理装置１００によれば、中間層Ｎａを実現する回路の一部である畳み込み演算処理部１０１を利用して全結合層Ｎｂの処理を行うようにした。従って、中間層Ｎａを実現する回路と別個に全結合層Ｎｂを実現する回路を設ける必要がなく、ニューラルネットワークによる演算処理を実現する演算処理装置１００の全体の回路規模を小さくすることができる。
【００５７】
また、演算処理装置１００は、複数の中間演算結果データから得られる複数の最終演算結果データを畳み込み演算処理部１０１の１演算サイクルにより処理される画素サイズと同じサイズの格納領域Ｒにまとめて格納する。このように、全結合層Ｎｂの前段の処理により得られる最終演算結果データを畳み込み演算処理部１０１の１演算サイクルにより処理される画素サイズに合わせて格納しておけば、後段の処理における積和演算を畳み込み演算処理部１０１により行うことができる。そのため、全結合層Ｎｂの後段の処理を実現するための回路を別個に設ける必要がなく、演算処理装置１００の全体の回路規模を抑えることができる。
【００５８】
（第２実施形態）
図１１に例示する演算処理装置２００は、畳み込みニューラルネットワークによる演算を実行する装置であり、畳み込み演算処理部２０１、活性化処理部２０２、プーリング処理部２０３、データ読み出し処理部２０４、加算処理部２０５、切替回路２０６、記憶部２０７、記憶部２０８、記憶部２０９、第１選択回路２１０、第２選択回路２１１などを備える。記憶部２０７、記憶部２０８、記憶部２０９は、例えば半導体メモリなどといった記憶媒体で構成される。また、記憶部２０７，２０８，２０９以外の構成要素は、ソフトウェアにより仮想的に実現してもよいし、ハードウェアにより構成してもよい。
【００５９】
この場合、演算処理装置２００は、中間層Ｎａを実現する回路として機能する状態と全結合層Ｎｂを実現する回路として機能する状態とに切り替えられるようになっている。また、畳み込み演算処理部２０１、活性化処理部２０２、プーリング処理部２０３、データ読み出し処理部２０４、加算処理部２０５、切替回路２０６は、それぞれ、畳み込み演算処理部１０１、活性化処理部１０２、プーリング処理部１０３、データ読み出し処理部１０４、加算処理部１０５、切替回路１０６に相当するものである。以下、異なる部分を説明する。
【００６０】
記憶部２０７、記憶部２０８、記憶部２０９は、何れも演算結果データ格納手段の一例として機能するものであり、中間演算結果データ、単位演算結果データ、累積演算結果データを格納することが可能な記憶媒体である。第１選択回路２１０は、第１選択手段の一例として機能するものであり、記憶部２０７、記憶部２０８、記憶部２０９のうち何れか１つを中間演算結果データ格納手段として選択する。第２選択回路２１１は、第２選択手段の一例として機能するものであり、記憶部２０７、記憶部２０８、記憶部２０９のうち残りの２つを第１記憶手段および第２記憶手段として選択する。そして、第２選択回路２１１は、第１記憶手段および第２記憶手段として選択した２つの記憶部を用いて演算結果データ選択手段として動作する。
【００６１】
次に、演算処理装置２００が全結合層Ｎｂを実現する回路として機能する場合における動作例について説明する。この場合、演算処理装置２００は、全結合層の前段の処理を多階層にわたって行う。即ち、演算処理装置２００は、全結合層の前段の処理を多層にわたって複数回繰り返すことにより、より高次元の全結合処理を行う。
【００６２】
演算処理装置２００は、全結合層Ｎｂの前段の処理を開始すると、第１層目では、中間層Ｎａから得られた中間演算結果データを記憶部２０７に格納する。即ち、演算処理装置２００は、記憶部２０７を中間演算結果データ格納手段として選択する。そして、演算処理装置２００は、第１層目で得られた最終演算結果データを記憶部２０８または記憶部２０９に格納する。最終演算結果データを記憶部２０８および記憶部２０９の何れに格納するのかは、適宜変更して設定することができる。例えば、中間演算結果データに対する走査回数、つまり探索窓Ｗの分割数が奇数である場合には最終演算結果データを記憶部２０８に格納し、偶数である場合には最終演算結果データを記憶部２０９に格納するように構成してもよい。また、奇数である場合には最終演算結果データを記憶部２０９に格納し、偶数である場合には最終演算結果データを記憶部２０８に格納するように構成してもよい。
【００６３】
第１層目の処理により、記憶部２０８または記憶部２０９の何れかに最終演算結果データが格納される。そのため、演算処理装置２００は、第２層目の処理においては、その最終演算結果データを格納する記憶部を中間演算結果データ格納手段としてそのまま用いる。そして、演算処理装置２００は、中間演算結果データ格納手段としてそのまま用いられる記憶部以外の記憶部を第１記憶手段および第２記憶手段として選択する。そして、第２層目の処理により、第１記憶手段または第２記憶手段として選択されている記憶部の何れかに最終演算結果データが格納される。そのため、演算処理装置２００は、第３層目の処理においては、その最終演算結果データを格納する記憶部を中間演算結果データ格納手段としてそのまま用い、残りの２つの記憶部を第１記憶手段および第２記憶手段として用いる。このように、演算処理装置２００は、２つの記憶部２０７，２０８，２０９を各層ごとにローテーションさせながら全結合層Ｎｂの前段の処理を進める。
【００６４】
演算処理装置２００によれば、中間演算結果データ、単位演算結果データ、累積演算結果データを格納可能な３つの記憶部２０７，２０８，２０９を備える。そして、演算処理装置２００は、記憶部２０７，２０８，２０９のうち何れか１つを中間演算結果データ格納手段として選択し、残りの２つを第１記憶手段および第２記憶手段として選択して使用する。
【００６５】
この構成によれば、今回の階層における最終演算結果データは、記憶部２０７，２０８，２０９のうち何れか１つに格納される。そのため、次の階層における処理では、その最終演算結果データを格納する記憶部を中間演算結果データ格納手段としてそのまま用いることができる。従って、全結合層の処理を多階層にわたって行う場合であっても、効率良く処理を進めることができる。また、このように３つの記憶部２０７，２０８，２０９をローテーションさせながら中間演算結果データ格納手段、第１記憶手段、第２記憶手段として使用する構成によれば、全結合層の処理を多階層にわたって行うための回路を別個に設ける必要がない。従って、演算処理装置２００の回路規模を大きくしなくとも、全結合層の処理を多階層にわたって行うことができる。
なお、演算処理装置２００は、演算処理装置１００と同様に、複数の中間演算結果データから得られる複数の最終演算結果データを畳み込み演算処理部２０１の１演算サイクルにより処理される画素サイズと同じサイズの格納領域にまとめてメモリ３００に格納する。
【００６６】
（第３実施形態）
図１２に例示するように、演算処理装置１００は、畳み込み演算処理部１０１と切替回路１０６との間に活性化処理部１０２およびプーリング処理部１０３を備える構成としてもよい。この構成によれば、加算処理部１０５、切替回路１０６、記憶部１０８，１０９、選択回路１１０からなる構成を中間層Ｎａにおける処理にも利用することができる。
【００６７】
（第４実施形態）
図１３に例示するように、演算処理装置２００は、畳み込み演算処理部２０１と切替回路２０６との間に活性化処理部２０２およびプーリング処理部２０３を備える構成としてもよい。この構成によれば、加算処理部２０５、切替回路２０６、記憶部２０７，２０８，２０９、選択回路２１１からなる構成を中間層Ｎａにおける処理にも利用することができる。
【００６８】
（その他の実施形態）
本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
【符号の説明】
【００６９】
図面中、１００，２００は演算処理装置、１０１，２０１は畳み込み演算処理部（畳み込み演算手段、単位演算結果データ生成手段）、１０２，２０２は活性化処理部（活性化手段）、１０３，２０３はプーリング処理部（プーリング手段）、１０４，２０４はデータ読み出し処理部（単位画像データ読み出し手段）、１０５，２０５は加算処理部（累積演算結果データ生成手段）、１０６，２０６は切替回路（演算結果データ格納手段）、１０７，２０７，２０８，２０９は記憶部（中間演算結果データ格納手段）、１０８，１０９、２０７，２０８，２０９は記憶部（第１記憶手段）、１０８，１０９、２０７，２０８，２０９は記憶部（第２記憶手段）、１１０，２１１は選択回路（演算結果データ選択手段）、２０７，２０８，２０９は記憶部（演算結果データ格納手段）、２１０は第１選択回路（第１選択手段）、２１１は第２選択回路（第２選択手段）、３００はメモリ（最終演算結果データ格納手段）を示す。
【図１】
0006365258.tif 000002
【図２】
0006365258.tif 000003
【図３】
0006365258.tif 000004
【図４】
0006365258.tif 000005
【図５】
0006365258.tif 000006
【図６】
0006365258.tif 000007
【図７】
0006365258.tif 000008
【図８】
0006365258.tif 000009
【図９】
0006365258.tif 000010
【図１０】
0006365258.tif 000011
【図１１】
0006365258.tif 000012
【図１２】
0006365258.tif 000013
【図１３】
0006365258.tif 000014