(57)【要約】【課題】階層的な演算処理回路を少ない作業メモリで実現する。【解決手段】入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワークの演算処理を実行する演算処理装置は、複数の処理ノードの各々にメモリの部分領域を割り当て、処理ノードによって実行された演算処理の演算結果を当該処理ノードに割り当てられた部分領域の格納可能な領域に格納し、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を格納可能な領域に設定する。ネットワークを構成する処理ノードのうち、演算処理を実行するべく指定された処理ノードの演算を実行するか否かを、指定された処理ノードとその前段に接続された処理ノードに割り当てられたメモリの部分領域における演算結果の格納状態に基づいて判断する。【選択図】  図２
2008310524.tif 000002
【特許請求の範囲】
【請求項１】
入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワークによる演算処理を実行する演算処理装置であって、
前記複数の処理ノードの各々にメモリの部分領域を割り当て、処理ノードによって実行された演算処理の演算結果を当該処理ノードに割り当てられた部分領域の格納可能な領域に格納し、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を、格納可能な領域として設定するメモリ制御手段と、
前記ネットワークを構成する前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定手段と、
前記指定手段によって指定された処理ノードの演算を実行するか否かを、前記指定された処理ノードとその前段に接続された処理ノードのそれぞれに割り当てられた前記メモリの部分領域における演算結果の格納状態に基づいて判断する判断手段と、
前記判断手段によって演算を実行すると判断された場合、前記指定された処理ノードに対応する演算処理を実行させる実行手段とを備えることを特徴とする演算処理装置。
【請求項２】
前記判断手段は、
前記指定された処理ノードの前段に接続されている処理ノードに割り当てられた前記メモリの部分領域に、当該指定された処理ノードの演算に必要な演算結果が格納されており、且つ、
前記指定された処理ノードに割り当てられた前記メモリの部分領域に、当該指定された処理ノードによる演算結果を格納可能な領域が存在する場合に、
前記指定された処理ノードに対応する演算を実行すると判断することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記判断手段は、前記指定された処理ノードの前段に接続されている処理ノードに割り当てられたメモリの部分領域に格納された演算結果の格納量と、前記指定された処理ノードに予め設定されている閾値との比較により、前記指定された処理ノードの演算を実行するか否かを判断し、
前記格納量は、対応する処理ノードの演算処理の演算結果が対応するメモリの部分領域に書き込まれると予め決められた量が加算され、前記対応する処理ノードの後段に接続された処理ノードの演算処理が終了すると予め決められた量が減算されることを特徴とする請求項１または２に記載の演算処理装置。
【請求項４】
前記複数の処理ノードの各々は、前記指定手段による１回の指定に対して、処理対象の入力データの全体よりも小さい予め決められた量のデータを処理する単位演算を実行し、前記単位演算を繰り返すことで前記処理対象の入力データの全体に対する演算を行うことを特徴とする請求項１乃至３のいずれか１項に記載の演算処理装置。
【請求項５】
前記複数の処理ノードの各々による演算処理とは、２次元の入力データから２次元の出力データを生成する演算であり、
前記単位演算とは、前記２次元の出力データうちの１ライン分を出力する演算であることを特徴とする請求項４に記載の演算処理装置。
【請求項６】
前記メモリ制御手段は、前記単位演算の演算結果を前記メモリの割り当てられた部分領域に循環的に上書きしながら格納することを特徴とする請求項４または５に記載の演算処理装置。
【請求項７】
前記メモリが連続するアドレス空間を有するメモリであり、前記複数の処理ノードの各々に前記メモリの異なるアドレス空間が割り当てられることで、前記メモリが共用されることを特徴とする請求項１乃至６のいずれか１項に記載の演算処理装置。
【請求項８】
前記ネットワークの演算処理がコンボリューショナルニューラルネットワークの演算処理であることを特徴とする請求項１乃至７のいずれか１項に記載の演算処理装置。
【請求項９】
前記複数の処理ノードのうちの一つの処理ノードに対応する前記メモリの部分領域において、当該部分領域の全領域に格納された全ての演算結果に対する、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した場合に、当該部分領域に格納された演算結果について予め定められた処理を実行するために、前記ネットワークの演算を一時的に停止する一時停止手段を更に備えることを特徴とする請求項１乃至８のいずれか１項に記載の演算処理装置。
【請求項１０】
前記予め定められた処理は、前記部分領域に格納された演算結果を他のメモリ領域へ転送する処理であることを特徴とする請求項９に記載の演算処理装置。
【請求項１１】
入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワークによる演算処理を実行する演算処理装置の制御方法であって、
前記複数の処理ノードの各々にメモリの部分領域を割り当て、処理ノードによって実行された演算処理の演算結果を当該処理ノードに割り当てられた部分領域の格納可能な領域に格納し、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を、格納可能な領域として設定するメモリ制御工程と、
前記ネットワークを構成する前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定工程と、
前記指定工程によって指定された処理ノードの演算を実行するか否かを、前記指定された処理ノードとその前段に接続された処理ノードのそれぞれに割り当てられた前記メモリの部分領域における演算結果の格納状態に基づいて判断する判断工程と、
前記判断工程によって演算を実行すると判断された場合、前記指定された処理ノードに対応する演算処理を実行させる実行工程とを備えることを特徴とする演算処理装置の制御方法。
【請求項１２】
前記判断工程では、
前記指定された処理ノードの前段に接続されている処理ノードに割り当てられた前記メモリの部分領域に、当該指定された処理ノードの演算に必要な演算結果が格納されており、且つ、
前記指定された処理ノードに割り当てられた前記メモリの部分領域に、当該指定された処理ノードによる演算結果を格納可能な領域が存在する場合に、
前記指定された処理ノードに対応する演算を実行すると判断することを特徴とする請求項１１記載の演算処理装置の制御方法。
【請求項１３】
前記判断工程では、前記指定された処理ノードの前段に接続されている処理ノードに割り当てられたメモリの部分領域に格納された演算結果の格納量と、前記指定された処理ノードに予め設定されている閾値との比較により前記指定された処理ノードの演算を実行するか否かを判断し、
前記格納量は、対応する処理ノードの演算処理の演算結果が対応するメモリの部分領域に書き込まれると予め決められた量が加算され、前記対応する処理ノードの後段に接続された処理ノードの演算処理が終了すると予め決められた量が減算されることを特徴とする請求項１１または１２に記載の演算処理装置の制御方法。
【請求項１４】
前記複数の処理ノードの各々は、前記指定工程による１回の指定に対して、処理対象の入力データの全体よりも小さい予め決められた量のデータを処理する単位演算を実行し、前記単位演算を繰り返すことで前記処理対象の入力データの全体に対する演算を行うことを特徴とする請求項１１乃至１３のいずれか１項に記載の演算処理装置の制御方法。
【請求項１５】
前記複数の処理ノードの各々による演算処理とは、２次元の入力データから２次元の出力データを生成する演算であり、
前記単位演算とは、前記２次元の出力データうちの１ライン分を出力する演算であることを特徴とする請求項１４に記載の演算処理装置の制御方法。
【請求項１６】
前記メモリ制御工程は、前記単位演算の演算結果を前記メモリの割り当てられた部分領域に循環的に上書きしながら格納することを特徴とする請求項１４または１５に記載の演算処理装置の制御方法。
【請求項１７】
前記メモリが連続するアドレス空間を有するメモリであり、前記複数の処理ノードの各々に前記メモリの異なるアドレス空間が割り当てられることで、前記メモリが共用されることを特徴とする請求項１１乃至１６のいずれか１項に記載の演算処理装置の制御方法。
【請求項１８】
前記ネットワークの演算処理がコンボリューショナルニューラルネットワークの演算処理であることを特徴とする請求項１１乃至１７のいずれか１項に記載の演算処理装置の制御方法。
【請求項１９】
前記複数の処理ノードのうちの一つの処理ノードに対応する前記メモリの部分領域において、当該部分領域の全領域に格納された全ての演算結果に対する、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した場合に、当該部分領域に格納された演算結果について予め定められた処理を実行するために、前記ネットワークの演算を一時的に停止する一時停止工程を更に備えることを特徴とする請求項１１乃至１８のいずれか１項に記載の演算処理装置の制御方法。
【請求項２０】
前記予め定められた処理は、前記部分領域に格納された演算結果を他のメモリ領域へ転送する処理であることを特徴とする請求項１９に記載の演算処理装置の制御方法。
【請求項２１】
請求項１１乃至２０のいずれか１項に記載された制御方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項２２】
請求項１１乃至２０のいずれか１項に記載された制御方法をコンピュータに実行させるためのコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターン識別装置、パターン識別システムや階層的なフィルタ演算処理装置等に適用される階層的演算処理方法及び装置に関するものである。
【背景技術】
【０００２】
パターン識別システムや予測システム・制御システム等への応用として、ニューラルネットワークを利用した信号処理装置が広く利用されている。ニューラルネットワークはマイクロプロセッサ上で動作するソフトウェアとして実現される事が多く、パーソナルコンピュータやワークステーション等のアプリケーションソフトウェアとして提供されている。
【０００３】
図１４は一般的な階層結合型ニューラルネットワークを利用する画像処理装置の概念的な構成例を示す図である。図１４において、２１は検出対象のデータであり、例えば、ラスタスキャンされた画像データを示す。２２は画像中から所定の物体を検出する演算ユニットであり、図１４の例では３階層のニューラルネットワークで構成されている。２３は演算結果に相当する出力データ面である。演算ユニット２２は所定の画像領域２４を走査参照しながら処理を行うことで画像中に存在する検出対象を検出する。出力データ面２３は検出対象画像データ２１と同じサイズの画像面であり、演算ユニット２２が画像データ２１の全ての領域を走査しながら処理して得られた検出出力を格納する。演算ユニット２２は対象物が検出された位置で大きな値を出力することから、出力データ面２３を走査することで対象物の画像面内の位置を把握することができる。演算ユニット２２において、２５，２６、２７は夫々ニューラルネットワークの階層を示し、各階層に所定の数のニューロン２８が存在する。第１層２５は参照画像の画素数と同じ数のノード、すなわちニューロン２８を有する。各ニューロンは所定の重み係数でフィードフォワード結合する。図１５は１つのニューロン２８の構成を示す図である。in_1〜in_nは当該処理ノードへの入力値であり、第１層では検出対象画像データ、第２層以降では前の階層のニューロン出力値である。これらニューロン入力値in_1〜in_nのそれぞれに学習によって得られた係数w_1〜w_nを乗じた結果を累積加算部３２により累積加算する。非線形変換処理部３３は、累積加算部３２の累積加算結果をロジスティック関数や双曲正接関数（tanh関数）等により非線形変換し、その結果を検出結果outとして出力する。階層型ニューラルネットワークにおいて、夫々のニューロンに必要な重み係数w_1〜w_nは、一般的に知られているバックプロパゲーション等の学習アルゴリズムを使用して、検出する対象物に応じて予め決定されている。
【０００４】
このような階層結合型ニューラルネットワークを組み込み機器等へ安価に実装することを目的として、アナログハードウェアやディジタルハードウェアで実現する手法も提案されている。例えば、特許文献１では、単層のアナログニューラルネットワークハードウェアを時分割多重化使用することで多層化を実現する階層構造ニューラルネットのアーキテクチャが開示されている。又、特許文献２ではディジタルハードウェアにより実現する方法が開示されている。
【０００５】
一方、ニューラルネットワークの中でもConvolutional NeuralNetworks（以下ＣＮＮと略記する）と呼ばれる演算手法は、識別対象の変動に対して頑健なパターン認識を可能にする手法として知られている。例えば、特許文献３及び特許文献４では、画像中の対象物識別や検出に適用した例が提案されている。
【０００６】
図１６は簡単なＣＮＮの例を示す論理的なネットワーク構成図である。ここでは、第１層４０６の特徴数が３、第２層４１０の特徴数が２、第３層４１１の特徴数が１の３層ＣＮＮの例を示している。４０１は画像データであり、ラスタスキャンされた画像データに相当する。４０３ａ〜４０３ｃは第１階層４０６の特徴面を示す。特徴面とは、所定の特徴抽出フィルタ（コンボリューション演算の累積和及び非線形処理）で前の階層のデータを走査しながら演算した結果を示す画像データ面である。特徴面はラスタスキャンされた画像データに対する検出結果であるため、検出結果も面で表わされる。特徴面４０３ａ〜４０３ｃは、画像データ４０１から夫々対応する特徴抽出フィルタにより生成する。例えば、特徴面４０３ａ〜４０３ｃは、夫々模式的にフィルタカーネル４０４ａ〜４０４ｃに対応する２次元のコンボリューションフィルタ演算と演算結果の非線形変換により生成する。なお、４０２はコンボリューション演算に必要な参照画像領域を示す。
【０００７】
例えば、カーネルサイズ（水平方向の長さと垂直方向の高さ）が１１×１１のコンボリューションフィルタ演算は以下に示すような積和演算により処理する。
【０００８】
【数１】
2008310524.tif 000003
【０００９】
ここで、
input(x,y)：座標(x, y)での参照画素値、
output(x,y)：座標(x, y)での演算結果、
weight(column, row)：座標(x+column, y+row)での重み係数、
columnSize=11, rowSize=11：フィルタカーネルサイズ(フィルタタップ数)である。
【００１０】
４０４ａ〜４０４ｃは夫々異なる係数のコンボリューションフィルタカーネルである。また、特徴面によってコンボリューションカーネルのサイズも異なる。
【００１１】
ＣＮＮ演算では複数のフィルタカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換する事で特徴面を生成する。特徴面４０３ａを算出する場合は、前階層との結合数が１であるため、フィルタカーネルは１つ（４０４ａ）である。一方４０７ａ及び４０７ｂの特徴面を計算する場合、前階層との結合数が３であるため、夫々４０９ａ〜４０９ｃ及び４０９ｄ〜４０９ｆに相当する３つのコンボリューションフィルタの演算結果を累積加算する。コンボリューションカーネル４０９ａ〜４０９ｆは何れも異なるフィルタ係数を有する。また、コンボリューションカーネル４０９ａ〜４０９ｃとコンボリューションカーネル４０９ｄ〜４０９ｆは図示するように異なるカーネルサイズを有する。たとえば、特徴面４０７ａは、コンボリューションカーネル４０９ａ〜４０９ｃの出力を累積加算し、最後に非線形変換処理する事によって得られる。
【００１２】
コンボリューションカーネル（コンボリューションフィルタ）の累積加算及び非線形変換処理の基本的構成は図１５に示すニューロンの構成と同じである。即ち、コンボリューションカーネルの係数が重み係数w_1〜w_nに相当する。特徴面４０７ａ、４０７ｂ、４０８の様に、複数の前階層の特徴面と結合する場合、複数のコンボリューションカーネル演算結果を累積加算部３２で蓄積する事になる。即ち、総結合数がコンボリューションカーネルサイズ×前階層の特徴数に相当する。
【００１３】
図１７はＣＮＮ演算における図形検出処理の一例を説明する図である。５１ａ〜５１ｃは第１層の特徴抽出対象を模式的に示しており、それぞれ水平方向のエッジ及び斜め方向のエッジを抽出する様に学習されたコンボリューションカーネルである。５２ａ、５２ｂは複数の第１層特徴抽出結果とその空間的な配置関係から決定される図形である。５３は最終的に抽出する図形を示している。図形５３は複数の第２層特徴抽出結果とその空間配置関係から決定される。コンボリューションカーネルの各フィルタ係数は特徴毎にパーセプトロン学習やバックプロパゲーション学習等の一般的な手法を用いて予め学習により決定されているものとする。物体の検出や認識等においては、１０×１０以上の大きなサイズのフィルタカーネルを使用する事が多い。また、一般的に特徴毎にコンボリューションカーネルのサイズは異なる。
【００１４】
このように、ＣＮＮ演算では特徴抽出毎に画像面単位で結果を保持しながら階層的に結合する事で、プリミティブな特徴とその空間的な配置関係に基づく頑健なパターン検出が実現される。
【特許文献１】特許第２６７９７３０号明細書
【特許文献２】特開平０３-０５５６５８号公報
【特許文献３】特開平１０−０２１４０６号公報
【特許文献４】特開２００２−３５８５００号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
図１４で説明したように、一般的な階層型ニューラルネットワークを利用した画像中の物体検出装置において、演算処理に必要なメモリサイズは、入出力画像バッファを除くと、ニューロン出力を保持するためのバッファメモリがあれば十分である。即ち、ニューロン数と等価な数の所定ビット数のメモリがあれば所望の演算処理を実行する事が可能である。
【００１６】
一方、ＣＮＮ演算の場合、前階層の複数の特徴抽出結果の空間的配置に基いて特徴抽出を行うため、各階層間で所定サイズのデータバッファが必要になる。例えば、図１６に示すＣＮＮ演算構成例の場合、入出力画像バッファを除くと画像サイズ×５個の特徴面バッファメモリが必要となる。このため、一般的な階層型ニューラルネットに比べ処理に必要なメモリサイズが増大する。
【００１７】
特許文献３及び特許文献４に開示されている手法も特徴抽出結果を画像面で保持する手法であり、同様に、処理に必要なメモリサイズが一般的な階層型ニューラルネットワークによる方式に比べて大きい。
【００１８】
特に、ＣＮＮ演算をハードウェアにより実現する場合、ＬＳＩの内部にサイズの大きいＲＡＭ（Random Access Memory）を用意する必要があり、回路規模が増大して高価になるという課題がある。又、ＣＮＮ演算をソフトウェアにより実現する場合であっても、組み込み機器に実装する場合、システムに必要なメモリ量が増大する事で同様にコストが上昇する。
【００１９】
本発明はこのような課題を解決するためになされたものであり、ＣＮＮ演算等の空間的な配置関係に基づく階層的な演算処理を少ないメモリで実現する方法及び回路を提供することを目的とする。
【課題を解決するための手段】
【００２０】
上記の目的を達成するための本発明の一態様による演算処理装置は以下の構成を備える。すなわち、
入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワークによる演算処理を実行する演算処理装置であって、
前記複数の処理ノードの各々にメモリの部分領域を割り当て、処理ノードによって実行された演算処理の演算結果を当該処理ノードに割り当てられた部分領域の格納可能な領域に格納し、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を、格納可能な領域として設定するメモリ制御手段と、
前記ネットワークを構成する前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定手段と、
前記指定手段によって指定された処理ノードの演算を実行するか否かを、前記指定された処理ノードとその前段に接続された処理ノードのそれぞれに割り当てられた前記メモリの部分領域における演算結果の格納状態に基づいて判断する判断手段と、
前記判断手段によって演算を実行すると判断された場合、前記指定された処理ノードに対応する演算処理を実行させる実行手段とを備える。
【００２１】
また、上記の目的を達成するための本発明の一態様による演算処理装置の制御方法は、
入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワークによる演算処理を実行する演算処理装置の制御方法であって、
前記複数の処理ノードの各々にメモリの部分領域を割り当て、処理ノードによって実行された演算処理の演算結果を当該処理ノードに割り当てられた部分領域の格納可能な領域に格納し、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を、格納可能な領域として設定するメモリ制御工程と、
前記ネットワークを構成する前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定工程と、
前記指定工程によって指定された処理ノードの演算を実行するか否かを、前記指定された処理ノードとその前段に接続された処理ノードのそれぞれに割り当てられた前記メモリの部分領域における演算結果の格納状態に基づいて判断する判断工程と、
前記判断工程によって演算を実行すると判断された場合、前記指定された処理ノードに対応する演算処理を実行させる実行工程とを備える。
【発明の効果】
【００２２】
本発明によれば、ＣＮＮ演算等の空間的な配置関係に基づく階層的な演算処理を少ないメモリで実現することが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、添付の図面を参照して本発明の好適な実施形態について説明する。
【００２４】
＜第１実施形態＞
図１は第１実施形態による階層的演算処理回路を具備したパターン検出装置の構成例を示すブロック図である。パターン検出装置は画像データ中の特定の物体（画像パターン）を検出する機能を有する。図１において６１は画像入力部であり、光学系、ＣＣＤ（Charge-Coupled Devices）又はＣＭＯＳ（Complimentary Metal OxideSemiconductor）センサ等の光電変換デバイスを含む。さらに、画像入力部６１は、ＣＣＤまたはＣＭＯＳセンサを制御するドライバ回路／ＡＤコンバータ／各種画像補正を司る信号処理回路／フレームバッファ等を含む。６２は前処理部であり、画像からの図形等の検出処理を効果的に行うための各種前処理を行う。具体的には、前処理部６２は、色変換処理／コントラスト補正処理等の画像データ変換をハードウェアで処理する。ＣＮＮ処理部６３は、階層的演算処理装置を含む特徴検出処理部である。ＣＮＮ処理部６３の詳細は図２を用いてして後述する。
【００２５】
６６はＤＭＡＣ（Direct Memory Access Controller）であり、画像バス６４上の各処理部の間のデータ転送、及び画像バス６４上のデバイスとＣＰＵバス６７上のＲＡＭ７０との間のデータ転送を司る。６５はブリッジであり、画像バス６４とＣＰＵバス６７の間のブリッジ機能を提供する。６８はＣＵであり、本装置全体の動作を制御する。６９はＲＯＭ（ReadOnlyMemory）であり、ＣＰＵ６８の動作を規定する命令や各種演算に必要なパラメータデータを格納する。例えば、ＣＮＮ処理部６３の動作に必要な重み係数、ネットワーク結合情報、シーケンス情報等もＲＯＭ６９に格納される。７０はＲＡＭ（RandomAccessMemory）であり、ＣＰＵ６８の動作に必要なメインメモリとして機能する。ＲＡＭ７０はＤＲＡＭ（Dynamic RAM）等の比較的容量の大きいメモリで構成される。ＣＰＵ６８はブリッジ６５を介して画像バス６４上の各種処理部にアクセスする事が可能である。画像バス６４とＣＰＵバス６７を分離する事で、６１〜６３で示されるハードウェアによる処理部の動作とＣＰＵ６８の動作は同時に、すなわち並列に実行される。
【００２６】
図２は、第１実施形態のＣＮＮ処理部６３における階層的演算処理装置の構成例を示すブロック図である。
【００２７】
図２における階層的演算処理装置は、例えば図３に示されるような階層的な演算を行うのに用いられる。図３において処理ノードとは、コンボリューション演算の対象画像とコンボリューションカーネルから、コンボリューション演算結果を得る処理を行うブロックを指す。なお、図３では便宜上第０処理ノードを設けたが、通常第０処理ノードでは特になにも処理をせず、入力画像が第１〜第３処理ノードへ入力される。例えば、図３の第４処理ノードでは、第１〜３処理ノードの出力に対し、それぞれ係数の異なるコンボリューションカーネルを適用したコンボリューション演算が行われる。そして、第４処理ノードは、さらにそれぞれのコンボリューション演算の結果を加算し、非線形変換を行って演算結果を得ている。さらに、その第４処理ノードでの演算結果が、第６処理ノード及び第７処理ノードに入力されている。
【００２８】
図２に示した階層的演算処理装置を図３に示されるＣＮＮに適用する場合、図２に示した階層的演算処理装置を処理ノード間で時分割に使用することで、各処理ノードで規定された演算を実行する。例えば、階層的演算処理装置を用いて、まず第１処理ノードで規定された演算を行い、その後第２処理ノードで規定された演算を行う、というようにＣＮＮの演算が実行されていく。つまり、ＣＮＮを構成する処理ノードは複数存在し、論理的なネットワークを構成するが、処理ノードで規定された演算を実行する階層的演算処理装置は物理的に１つしか存在しない。
【００２９】
図２において、１１４はＣＰＵバスアクセス制御部であり、ＣＰＵ６８がＣＮＮ処理部６３内の各種レジスタやメモリ１０４にアクセスするためのバスインターフェースである。例えばネットワーク構成管理部１０２内のアドレス算出パラメータ格納テーブル１０７、演算部１０６内の重み係数セット１２０５（図１０により後述）等の各種設定データは当該インターフェースを介してデータを書込む。
【００３０】
図２において、シーケンス制御部１００は、あらかじめ設定された演算順序情報に従って、単位演算実行部１０１に対してシーケンス指示情報を出力する。本実施形態では、上述のように、階層的演算処理装置において、各処理ノードで規定された演算を時分割に実行する。従って、シーケンス制御部１００は、各処理ノードで規定された演算をどういった順序で単位演算実行部１０１において実行するかを制御している。
【００３１】
シーケンス制御部１００は、階層的演算のネットワークを構成する全処理ノードを巡回的に実行するように指示をする。例えば図３に示したＣＮＮを本実施形態の階層的演算処理装置によって実行する場合、シーケンス制御部１００は、単位演算実行部１０１に対して、
「第１処理ノードで規定された演算→第２処理ノードで規定された演算→… →第８処理ノードで規定された演算→第１処理ノードで規定された演算」
というように、各処理ノードを巡回的に実行するように指示する。
【００３２】
図２において、単位演算実行部１０１は、シーケンス制御部１００からの指示に従って、指示された処理ノードに規定されている演算を実行する。単位演算実行部１０１では、演算を実行する際の単位（これを単位演算と呼ぶ）があらかじめ設定されている。
【００３３】
図３に示されたＣＮＮを実行する場合、各処理ノードで規定されている演算は、コンボリューション演算とそれらの加算、及びその結果の非線形変換であり、この一連の演算を入力画像の全体（入力データの全体）にわたって行う。なお、コンボリューション演算結果の加算は、第４〜第８処理ノードのように複数の処理ノードの出力に対してコンボリューション演算が行われる場合に実行される。従って、各処理ノードで規定されている演算が行われると、演算結果も２次元的な画像になる。
【００３４】
それに対して、ここでいう単位演算とは、上記一連の演算で水平方向１行分（或いは垂直方向１列分）の演算結果を出力するだけの演算を行うことを意味し、この単位演算を繰り返すことで、各処理ノードで規定されている演算が遂行される。
【００３５】
図４は、処理ノードで行われる単位演算に関して模式的に説明する図である。ただし簡単のため、図４では、一つの処理ノードの演算出力画像（または、ネットワークへの入力画像）を演算対象画像としてコンボリューション演算を行う場合（図３の第１〜第３処理ノードのような場合）を示し、非線形変換も省略している。
【００３６】
図４の（Ａ）において、６０１は演算対象画像を表し、模式的に示す最小の一升がラスタスキャン順で示された入力画像又は前階層の処理ノードでの演算結果画素（input(x,y)、ｘ：水平方向位置、ｙ：垂直方向位置）を示すものとする。また、６０２は演算結果画像を表し、模式的に示す最小一升がラスタスキャン順の演算結果画素（output(x,y)、ｘ：水平方向位置、ｙ：垂直方向位置）を示すものとする。
【００３７】
参照画像領域６０３（太線内の領域）はoutput(6,7)位置のコンボリューション演算を処理する場合の参照画像の領域を示す。なお、図４の（Ａ）における参照画像領域６０３は、コンボリューションカーネルのサイズが水平方向「１１」垂直方向「１３」の場合を示している。
【００３８】
演算結果画像６０２中の太線内の領域６０４は、演算対象画像６０１に対して単位演算（水平方向１行分の演算）を行った結果領域を示す。結果領域６０４内の格子状の網掛け領域の画素は、コンボリューションカーネルのサイズに依存して発生する周辺領域（演算が行われない領域）の画素である。階層的処理においてこの周辺領域をどう扱うか（削除するか、デフォルト値を埋め込むか等）は、本発明において本質的な事項ではないので、ここでは例えば、デフォルト値を埋め込むとする。
【００３９】
図４の（Ａ）から明らかなように、単位演算を行う場合には、演算対象画像の必要領域として、少なくとも水平方向サイズが演算対象画像と同じサイズ、垂直方向サイズがコンボリューションカーネルの垂直方向サイズと同じサイズの領域６０５が必要となる。すなわち、この領域６０５のデータが、処理ノードによる単位演算による処理対象のデータとなる。説明の都合上、この領域６０５を単位演算対象画像領域と呼ぶ。結果領域６０４で示されるような単位演算を、単位演算対象画像領域６０５をずらしながら行うことで、演算対象画像６０１の全領域にわたってコンボリューション演算を行うことができる。なお、図４の（Ｂ）には、図４の（Ａ）の状態から１画素分（１水平ライン分）だけ下にずらした単位演算対象画像領域６１０に対して単位演算を行った場合を示している。結果領域６１１も結果領域６０４から１画素分だけ下にずれた領域となる。このとき、ある単位演算を実行できるか否かは、その単位演算の単位演算対象画像領域の画素データが、前階層の処理ノードによって演算され、その結果が出力されているか否かに依存する。
【００４０】
単位演算実行部１０１は、シーケンス制御部１００から指定された単位演算が終了すると、シーケンス制御部１００に対して、単位演算の終了を通知する（単位演算終了通知）。
【００４１】
以上のことから、本実施形態のシーケンス制御部１００と単位演算実行部１０１を利用して、単位演算を単位として、図３に示されたようなＣＮＮを実行していく場合には、以下のような動作になる。
【００４２】
（１）シーケンス制御部１００は、単位演算実行部１０１に対して、シーケンス指示情報として、第１処理ノードで規定された演算を行うよう指示する。以後、シーケンス制御部１００は、単位演算実行部１０１から単位演算終了の通知がくるごとに、第２処理ノードで規定された演算→ … →第８処理ノードで規定された演算→第１処理ノードで規定された演算、というように巡回的に指示を更新する。
【００４３】
（２）単位演算実行部１０１は、シーケンス制御部１００からシーケンス指示情報を受け取ると、単位演算実行判断部１０５において、指示された単位演算を実行できるか否かを判断する。なお、この単位演算実行判断部１０５の動作及び判断に関しては後述するが、上述のようにその単位演算の単位演算対象画像領域の画素データが揃っているかを一つの基準として判断する。実行すると判定された場合は、当該指示情報で指示された処理ノードで規定されている演算を単位演算（例えば水平方向１行分）だけ実行し、当該単位演算が終了したら、シーケンス制御部１００に単位演算終了を通知する。実行しないと判定された場合、単位演算実行部１０１は、該当する単位演算を実行せずに、シーケンス制御部１００に単位演算終了を通知する。
【００４４】
図２において、メモリ１０４は、各処理ノード毎に割り当てられた部分領域に分割されており、それぞれの部分領域はリングバッファとして用いられる。図５は、図３に示された階層演算を行う場合に、メモリ１０４が部分領域に分割された様子を模式的に表した図である。例えば図３の第４処理ノードに対応する演算を行う場合、単位演算実行部１０１は、メモリ１０４の第１処理ノード割り当てリングバッファと第２処理ノード割り当てリングバッファと第３処理ノード割り当てリングバッファとから演算対象となるデータを読み出す。そして、単位演算実行部１０１は、読み出したデータを用いて演算を行い、その演算結果を第４処理ノード割り当てリングバッファに格納する。なお、それぞれのリングバッファ中のどの位置からデータを読んで、どの位置にデータを書込むかの詳細については後述する。なお、図５に示すように、連続するアドレス空間を有するメモリ１０４の異なるアドレス空間を複数の処理ノードに割り当てて、それら処理ノードによってメモリを共用するようにすることが、メモリの効率的利用の面から、好ましい。
【００４５】
上述のように、メモリ１０４では、各処理ノード毎に割り当てられた部分領域はリングバッファとして用いられる。このときのリングバッファの（論理的な）幅は入力画像と同じである。リングバッファは、高さ１のライン単位で循環的に上書きされて使用される。従って、単位演算が行われるごとにリングバッファの１ラインが更新される。
【００４６】
ネットワーク構成管理部１０２は、本実施形態の階層的演算処理装置が演算する階層的演算のネットワーク構成を規定する情報を管理する。ネットワーク構成とは、処理ノード間の接続関係や、各処理ノードでの演算処理に用いるコンボリューションカーネルのサイズ等を意味する。
【００４７】
アドレス算出パラメータ格納テーブル１０７は、ネットワーク構成管理部１０２が管理しているネットワーク構成情報と、演算を行う際に生じるメモリ１０４への読み書きに必要とされるアドレス管理情報とが記録されたテーブルである。アドレス算出パラメータ格納テーブル１０７には、各処理ノード毎に、様々の情報が示されている。
【００４８】
説明を容易にするために、図６に、図３の階層ネットワークから第４処理ノードを中心として切り出した図を示す。また図７に、図３の第４処理ノードを対象として、アドレス算出パラメータ格納テーブル１０７とリングバッファのライン格納領域との関係を図示する。図７において、第４処理ノード割り当てリングバッファ（太線部）には９ライン分の画像データが格納できるとしている。すなわち、第４処理ノード割り当てリングバッファには、９個の単位演算の演算結果を格納することができる。
【００４９】
図７には、「第４処理ノード割り当てリングバッファ第６処理ノード算出時リードカウンタ値」（以下、第６処理ノード算出時リードカウンタ値という）が示されている。第６処理ノード算出時リードカウンタ値は、第４処理ノードに割り当てられたリングバッファに格納された画像データを、第６処理ノードに対応した演算を行う際の演算対象画素データとして用いる場合のデータの読み出し位置を規定している。例えば、第６処理ノードに対応した演算で５ライン分の演算対象画素データが必要だとすると、現在のカウンタ値が３なので、ライン格納領域３、４、５、６、７の５ライン分のデータがリングバッファから読み出される。なお、カウンタ値をカウントアップする手順に関しては、リングバッファ管理部１０３で説明する。
【００５０】
同じく、第４処理ノード割り当てリングバッファには、「第４処理ノード割り当てリングバッファ第７処理ノード算出時リードカウンタ値」（以下、第７処理ノード算出時リードカウンタ値という）が存在する。この第７処理ノード算出時カウンタ値は、第４処理ノードに割り当てられたリングバッファに格納された画像データを、第７処理ノードに対応した演算を行う際の演算対象画素データとして用いる場合のデータの読み出し位置を規定している。例えば、第７処理ノードに対応した演算で９ライン分の演算対象画素データが必要だとすると、現在のカウンタ値が８なので、ライン格納領域８、９、１、２、３、４、５、６、７の９ライン分のデータがリングバッファから読み出される。
【００５１】
図７において、「第４処理ノード割り当てリングバッファライトカウンタ値」は、第４処理ノードに対応した演算を行った演算結果画素データを格納する場合のデータの書込み位置を規定している。例えば、現在のカウンタ値が７の場合に単位演算が行われると、ライン格納領域７に単位演算の結果が格納される。なお、カウンタ値をカウントアップする手順に関しては、リングバッファ管理部１０３で説明する。
【００５２】
ネットワーク構成管理部１０２が保持するアドレス算出パラメータ格納テーブル１０７には、図８に示されるように、各処理ノード毎に、以下の情報が保持されている。
【００５３】
・対象処理ノード：シーケンス制御部１００からシーケンス情報として指定された処理ノードは指定処理ノードと呼ばれる。処理ノードが何個あるかは、階層的演算のネットワーク構成によってあらかじめ決定される。
【００５４】
・隣接下層処理ノード：ある処理ノードの入力側（前段）に接続されている処理ノード。どの処理ノードが、どの処理ノードの隣接処理ノードとなるかは、階層的演算のネットワーク構成によってあらかじめ決定される。
【００５５】
・リードカウンタ値：このカウンタ値は、メモリ１０４で割り当てられたリングバッファの先頭を基準としたライン格納領域を単位としたカウンタ値である（図７参照。カウンタ値の例は括弧内に記載）。この値は、階層的演算が進行していくにつれて循環的に更新される。
【００５６】
・ライトカウンタ値：このカウンタ値は、メモリ１０４で割り当てられたリングバッファの先頭を基準としたライン格納領域を単位としたカウンタ値である（図７参照。カウンタ値の例は括弧内に記載）。この値は、演算が進行していくにつれて循環的に更新される。
【００５７】
・オフセットアドレス：メモリ１０４内でその処理ノードに割り当てられたリングバッファの先頭を示すアドレス（図５、図７参照）。この値は、階層的演算のネットワーク構成によってあらかじめ決定される。
【００５８】
・格納可能ライン数：メモリ１０４内でその処理ノードに割り当てられたリングバッファに格納できるライン数。
【００５９】
格納可能ライン数は、その処理ノードの出力側（後段）に接続している処理ノード（隣接上層処理ノードと呼ぶ）において単位演算を行う際に必要な単位演算対象画像領域のライン数となる。従って、格納可能ライン数は、隣接上層処理ノードを演算する際に用いるコンボリューションカーネルの垂直方向サイズ以上であればよく、階層的演算のネットワーク構成によってあらかじめ決定される。但し、隣接上層処理ノードが複数あり、それぞれを演算する際のコンボリューションカーネルの大きさが異なる場合は、格納可能ライン数は、垂直方向サイズの最も大きいコンボリューションカーネルの垂直方向サイズ以上のライン数となる。図６に示される第４処理ノードの場合、格納可能ライン数は、コンボリューションカーネルW_4_6とW_4_7のうち垂直方向サイズの大きい方以上のライン数であればよい。図７では、格納可能ライン数が９である場合を示している。従って図６のW_4_6とW_4_7のうち垂直方向サイズの大きい方でも、そのサイズが９以下である。なお、本実施形態では、簡単のため、隣接上層処理ノードを演算する際に用いるコンボリューションカーネルの垂直方向サイズ（の中の最大のサイズ）に等しいとする。
【００６０】
・演算実行閾値ライン数：その処理ノードにおいて単位演算を行う際に必要な単位演算対象画像領域のライン数。このライン数は、その処理ノードを演算する際に用いるコンボリューションカーネルの垂直方向サイズ以上であればよい。図６では、コンボリューションカーネルW_1_4とW_2_4とW_3_4の垂直方向サイズとなる。W_1_4とW_2_4とW_3_4の垂直方向サイズが異なる場合は、最も大きい垂直方向サイズ以上であればよい。本実施形態では、簡単のため、その処理ノードを演算する際に用いるコンボリューションカーネルの垂直方向サイズの中の最大のサイズに等しいとする。
【００６１】
図２に戻り、ネットワーク構成管理部１０２は、シーケンス制御部１００からシーケンス指示情報を受け取ると、次の２項目を調査するために、アドレス算出パラメータ格納テーブル１０７を調べ、単位演算実行判断部１０５へ必要なデータを送出する。
（１）単位演算対象画像領域調査：シーケンス情報から特定される指定処理ノードに対応した単位演算を行うために必要な単位演算対象画像領域のデータが揃っているか。
（２）単位演算結果書込み領域調査：メモリ１０４内で指定処理ノードに割り当てられたリングバッファに単位演算の結果を書込む領域があるか。
【００６２】
まず、単位演算対象画像領域調査に必要なデータを集めるために、ネットワーク構成管理部１０２は、図８に示すアドレス算出パラメータ格納テーブル１０７に対して、以下のことを行う。
１．指定処理ノード（シーケンス制御部１００から演算の実行を指定された処理ノード）の隣接下層処理ノードを特定する（隣接下層処理ノードは複数ある場合もある）。
２．指定処理ノードと隣接下層処理ノードとからリードカウンタ値を選択する（隣接下層処理ノードが複数ある場合は、リードカウンタ値も複数ある）。
３．隣接下層処理ノードを対象処理ノードとしたときのライトカウンタ値を選択する。
４．隣接下層処理ノードを対象処理ノードとしたときの格納可能ライン数を選択する。
５．指定処理ノードから演算実行閾値ライン数を選択する。
６．上記項目２、３、４、５で選択した値を単位演算実行判断部１０５に送出する。
【００６３】
例えば、シーケンス制御部１００から指定処理ノードとして第４処理ノードが指定された場合、ネットワーク構成管理部１０２は、以下のことを行う（図８参照）。なお、指定処理ノードとして第４処理ノードが指定された場合を具体例１と呼ぶ。従って、ネットワーク構成管理部１０２の以下の動作は、具体例１において単位演算対象画像領域調査を行う場合の動作である。
１．第４処理ノードの隣接下層処理ノードとして、第１処理ノード、第２処理ノード、第３処理ノードを選択する。
２．第４処理ノードが指定処理ノードで、
第１処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第１処理ノード割り当てリングバッファ第４処理ノード算出時リードカウンタ値（MRA1_4）」、
第２処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第２処理ノード割り当てリングバッファ第４処理ノード算出時リードカウンタ値（MRA2_4）」、
第３処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第３処理ノード割り当てリングバッファ第４処理ノード算出時リードカウンタ値（MRA3_4）」、を選択する。
３．隣接下層処理ノードを対象処理ノードとしたときのライトカウンタ値、すなわち、
第１処理ノードのライトカウンタ値である「第１処理ノード割り当てリングバッファライトカウンタ値（MWA1）」と、
第２処理ノードのライトカウンタ値である「第２処理ノード割り当てリングバッファライトカウンタ値（MWA2）」と、
第３処理ノードのライトカウンタ値である「第３処理ノード割り当てリングバッファライトカウンタ値（MWA3）」とを選択する。
４．隣接下層処理ノードを対象処理ノードとしたときの格納可能ライン数、すなわち、
第１処理ノードの格納可能ライン数である「BH1」と、
第２処理ノードの格納可能ライン数である「BH2」と、
第３処理ノードの格納可能ライン数である「BH3」とを選択する。
５．第４処理ノードの演算実行閾値ライン数である「WH4」を選択する。
６．上記の項目２．３．４．５．で選択した値を単位演算実行判断部１０５に送出する。単位演算実行判断部１０５は、これらの値を用いて図１１により後述する単位演算実行判断処理を実行し、指定処理ノードにおける演算の実行に必要なデータがそろっているか否かを判断する。
【００６４】
次に、単位演算結果書込み領域調査に必要なデータを集めるために、ネットワーク構成管理部１０２は、アドレス算出パラメータ格納テーブル１０７に対して、以下のことを行う。
１．処理ノードの隣接上層処理ノードを特定する（隣接上層処理ノードは複数ある場合もある）。指定処理ノードの隣接上層処理ノードを特定することは、指定処理ノードを隣接下層処理ノードとしている処理ノードを特定すること同じである。
２．項目１で特定した隣接上層処理ノードを対象処理ノードとし、指定処理ノードを隣接下層処理ノードとしたときのリードカウンタ値を選択する（隣接上層処理ノードが複数ある場合は、リードカウンタ値も複数ある）。
３．指定処理ノードのライトカウンタ値を選択する。
４．指定処理ノードから格納可能ライン数を選択する。
５．上記項目２、３、４で選択した値を単位演算実行判断部１０５に送出する。
【００６５】
例えば、シーケンス制御部１００から指定処理ノードとして第４処理ノードが指定された場合、すなわち具体例１において、単位演算結果書込み領域調査を行う場合、ネットワーク構成管理部１０２は、以下のことを行う（図８参照）。
１．第４処理ノードの隣接上層処理ノードとして、第６処理ノード、第７処理ノードを選択する（第４処理ノードの隣接上層処理ノードを特定することは、第４処理ノードを隣接下層処理ノードとしている処理ノードを見つけることと同じ）。
２．隣接上層処理ノード（第６、第７処理ノード）を対象処理ノードとし、指定処理ノード（第４処理ノード）を隣接下層処理ノードとしたときのリードカウンタ値を選択する。すなわち、
第６処理ノードが対象処理ノードで、第４処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第４処理ノード割り当てリングバッファ第６処理ノード算出時リードカウンタ値（MRA4_6）」と、
第７処理ノードが対象処理ノードで、第４処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第４処理ノード割り当てリングバッファ第７処理ノード算出時リードカウンタ値（MRA4_7）」とを選択する。
３．第４処理ノードのライトカウンタ値である「第４処理ノード割り当てリングバッファライトカウンタ値（MWA4）」を選択する。
４．第４処理ノードの格納可能ライン数である「BH4」を選択する。
５．項目２、３、４で選択した値を単位演算実行判断部１０５に送出する。単位演算実行判断部１０５は、これらの値を用いて図１２により後述する単位演算結果書込み領域調査を実行し、指定処理ノードにおける演算の実行結果を保持するに必要な領域が当該指定処理ノードに割り当てられたリングバッファにあるかどうかを判断する。
【００６６】
さらに、ネットワーク構成管理部１０２は、単位演算実行判断部１０５から単位演算の開始が指示されると（通知の詳細は後述）、リングバッファ管理部１０３に対して、アドレス算出パラメータを出力し、アドレスの算出を指示する。リングバッファ管理部１０３に送出するアドレス算出パラメータには、演算対象画素データをメモリ１０４から読み出して演算部１０６へ供給する場合のものと、演算結果画素データを演算部１０６からメモリ１０４へ書き出す場合のものとある。
【００６７】
ネットワーク構成管理部１０２は、演算対象画素データをメモリ１０４から読み出す際には、単位演算対象画像領域調査を行うために上記で選択したリードカウンタ値、格納可能ライン数、演算実行閾値ライン数をリングバッファ管理部１０３に対して送出する。更に、ネットワーク構成管理部１０２は、隣接下層処理ノードを対象処理ノードとしたときに選択されるオフセットアドレスを、リングバッファ管理部１０３に対して送出する。
【００６８】
ネットワーク構成管理部１０２は、演算結果画素データをメモリ１０４に書込む際には、単位演算結果書込み領域調査を行うために選択したライトカウンタ値、格納可能ライン数をリングバッファ管理部１０３に対して送出する。また、ネットワーク構成管理部１０２は、指定処理ノードから選択したオフセットアドレスとを、リングバッファ管理部１０３に対して送出する。
【００６９】
図２において、リングバッファ管理部１０３は、ネットワーク構成管理部１０２から送られてくるアドレス算出パラメータ（アドレス算出指示）から、ライン単位のアドレスを算出する。そして、リングバッファ管理部１０３は、算出したライン単位のアドレス（リングカウンタ値）と、オフセットアドレス値をメモリアクセス制御部１１０に送出する。オフセットアドレス設定部１１１は、ネットワーク構成管理部１０２から送られてくるオフセットアドレスを一時的に格納し、格納している値をメモリアクセス制御部１１０へ出力する。リングサイズ設定部１１２は、ネットワーク構成管理部１０２から送られてくる格納可能ライン数を一時的に格納し、格納している値をリングカウンタ１１３に出力する。リングカウンタ１１３は、ネットワーク構成管理部１０２から送られてくるリードカウンタ値或いはライトカウンタ値をロードし、その値を初期値としてカウントアップ動作する。
【００７０】
演算対象画素データをメモリ１０４から読み出す際に、リングカウンタ１１３によってリードカウンタ値がカウントアップされる回数は、今演算しようとしているコンボリューション演算の「カーネルの垂直方向サイズ−１」回である。また、演算結果画素データをメモリ１０４に書込む際に、リングカウンタ１１３によってライトカウンタ値がカウントアップされる回数は１回である。カウントアップされたカウンタ値はネットワーク構成管理部１０２へ送られる。
【００７１】
ただし、カウンタ値がリングサイズ設定部１１２に設定されている値になると、カウンタ値は０にセットされる。つまり、カウンタ値の最大値は、「リングサイズ設定部１１２に設定されている値−１」となる。また前述のように、リングサイズ設定部１１２に設定されている値は、リードカウンタ値に対してカウントアップする場合と、ライトカウンタ値に対してカウントアップする場合で異なる。なお、リードカウンタ値は、演算対象画素データがメモリ１０４から読み出された場合にカウントアップされる。また、ライトカウンタ値は、演算結果画素データがメモリ１０４に書込まれた場合にカウントアップされる。
【００７２】
演算対象画素データをメモリ１０４から読み出す場合、リングカウンタ１１３は、メモリアクセス制御部１１０へリングカウンタ値として、初期値並びにカウントアップしていった値（合わせて、「カーネルの垂直方向サイズ」個の値）を出力する。また、演算結果画素データをメモリ１０４へ書込む場合、リングカウンタ１１３は、メモリアクセス制御部１１０へリングカウンタ値として、初期値を出力する。
【００７３】
さらにリングカウンタ１１３は、ネットワーク構成管理部１０２から送られてくるリードカウンタ値或いはライトカウンタ値に対して、１カウントアップした値をアドレス算出パラメータの更新値として、ネットワーク構成管理部１０２へ送る。なお、ネットワーク構成管理部１０２から送られてくるリードカウンタ値或いはライトカウンタ値は、リングカウンタ１１３の初期値である。また、リングカウンタ１１３は、１カウントアップした値が格納可能ライン数になるときは、カウント値を０に更新する。
【００７４】
例えば、上記の具体例１の場合（指定処理ノードとして第４処理ノードが指定された場合）で、演算対象画素データをメモリ１０４から読み出す場合には、ネットワーク構成管理部１０２は、アドレス算出パラメータとして、
リードカウンタ値としてMRA1_4、MRA2_4、MRA3_4、
格納可能ライン数としてBH1、BH2、BH3、
演算実行閾値ライン数としてWH4、
オフセットアドレスとしてOA1、OA2、OA3を、リングバッファ管理部１０３に送る。
【００７５】
従って、リングバッファ管理部１０３では、まず、リングカウンタ１１３にMRA1_4をセットし、リングサイズ設定部１１２にBH1を設定し、オフセットアドレス設定部１１１にOA1を設定する。続いて、リングカウンタ１１３は、WH4−１回カウントアップしながら、そのリングカウンタ値をメモリアクセス制御部１１０に出力する。これにより、リングカウンタ１１３は、初期値を含むWH4個の値をメモリアクセス制御部１１０に出力することになる。また、MRA1_4の更新データとして、MRA1_4を１回カウントアップした値（=(MRA1_4+1)modBH1）をネットワーク構成管理部１０２に送る（アドレス算出パラメータ更新）。
【００７６】
さらに、リングバッファ管理部１０３は、リングカウンタ１１３にMRA2_4をセットし、リングサイズ設定部１１２にBH2を設定し、オフセットアドレス設定部１１１にOA2を設定して、上記と同様の処理を繰り返す。さらに、リングバッファ管理部１０３は、リングカウンタ１１３にMRA3_4をセットし、リングサイズ設定部１１２にBH3を設定し、オフセットアドレス設定部１１１にOA3を設定して、同様の処理を繰り返す。
【００７７】
また、例えば、具体例１の場合（指定処理ノードとして第４処理ノードが指定された場合）で、演算結果画素データをメモリ１０４に書込む場合には、ネットワーク構成管理部１０２は、リングバッファ管理部１０３に、
ライトカウンタ値としてMWA4、
格納可能ライン数としてBH4、
オフセットアドレスとしてOA4を送る。
【００７８】
従って、リングバッファ管理部１０３は、まず、リングカウンタ１１３にMWA4をセットし、リングサイズ設定部１１２にBH4を設定し、オフセットアドレス設定部１１１にOA4を設定する。続いて、リングバッファ管理部１０３は、リングカウンタ１１３を１回カウントアップしながら、リングカウンタ値をメモリアクセス制御部１１０に出力する（初期値のみ）。また、MWA4の更新データとして、MWA4を１回カウントアップした値（=(MWA4+1)modBH4）をネットワーク構成管理部１０２に送る。
【００７９】
メモリアクセス制御部１１０は、リングバッファ管理部１０３から送られてくるリングカウンタ値とオフセットアドレス値とから物理的なアドレスを生成する。更に、メモリアクセス制御部１１０は、演算部１０６でのコンボリューション演算に必要な演算対象画素データを読み出すためのアドレス、及び演算結果画素データを格納するためのアドレスを算出する。
【００８０】
図９はメモリアクセス制御部１１０が演算対象画素データを読み出す場合の動作を説明する図である。図９において領域７０１（太線内の領域）はリングバッファ、領域７０２（斜線の領域）はコンボリューションカーネルの大きさ（図９では５画素×５画素）を示している。
【００８１】
メモリアクセス制御部１１０は、リングカウンタ値とオフセットアドレス値とから、リングバッファの各ライン格納領域の先頭アドレスを算出する。なお、演算対象画像の水平方向幅は予め設定されているものとする。さらにその各ライン格納領域の先頭アドレスを用いて、そのライン格納領域から、コンボリューション演算に必要な画素を読み出すためのアドレスを算出する。これは、例えば図９において網が掛かった画素、すなわち領域７０２内の画素のアドレスを算出するものである。
【００８２】
例えばリングバッファ管理部１０３からリングカウンタ値として、２，３，４，０，１と送られてきたとすると、まず、リングカウンタ値２に対してライン格納領域３の先頭アドレスを算出する。さらにライン格納領域３からコンボリューションカーネルの水平方向サイズ（５）の画素を読み出すためのアドレスを算出する。その後、リングカウンタ値３以降に対して同じ処理を繰り返す。
【００８３】
メモリアクセス制御部１１０において、演算結果を格納するためのアドレスを算出する場合も同様である。メモリアクセス制御部１１０は、算出したアドレス並びに、リード／ライトの制御信号等を生成し、メモリ１０４に出力する。さらに、リード時には、メモリ１０４から出力されるデータを演算部１０６へ転送し、ライト時には、演算部１０６からの演算結果出力をメモリ１０４へ転送する。
【００８４】
演算部１０６では、所定のデータ群に対してコンボリューション演算と非線形処理を実行する。
【００８５】
図１０は演算部１０６の一例を示すブロック図である。乗算器１２０１は、ネットワーク構成情報に従って係数選択部１２０４によって選択された重み係数セット１２０５が出力する係数と、その係数と同期して入力される演算対象画素データとを乗じて出力する。累積加算器１２０２は、乗算器１２０１の出力を所定の期間累積する。非線形変換処理部１２０３は、ロジスティック関数やtanh関数で累積加算結果を非線形変換する。なお、非線形変換は、所定の関数値を列挙する関数テーブルで実現するものとする。
【００８６】
図２に戻り、単位演算実行判断部１０５は、ネットワーク構成管理部１０２から送られてきた情報に基づいて、シーケンス制御部１００から指示された処理ノードに対応する単位演算が可能か否かを判断する。閾値記憶部１０８は、単位演算実行判断部１０５が単位演算の可否を判定する際の閾値を記憶しておく。単位演算対象画像領域調査を行う際には、閾値記憶部１０８では、ネットワーク構成管理部１０２から送られてきた演算実行閾値ライン数を記憶する。また、単位演算結果書込み領域調査を行う際には、ネットワーク構成管理部１０２から送られてきた格納可能ライン数を記憶する。格納量算出部１０９は、メモリ１０４の所定の領域に格納されている画素データの格納量を算出する。ここでいう格納量とは、所定の領域に格納されている画素データのうち、これらの画素データを演算対象として使用できるものの量を指す。また格納量の単位は、本実施形態では、説明の簡単のため、ライン数とする。
【００８７】
以下、図１１、図１２を参照して単位演算実行判断部１０５による単位演算実行判断処理について説明する。
【００８８】
例えば、図７において、最初どのライン格納領域にも画素データが格納されていなければ、格納量は０となる。次にライン格納領域１に単位演算の演算結果が格納されると格納量は１ライン分となる。単位演算を繰り返してライン格納領域５まで演算結果が格納されたとすると格納量は５ライン分となる。このときに、隣接上層処理ノードでライン格納領域１〜５までのデータを使用して単位演算が行われたとすると、ライン格納領域１のデータは使用されることはないので格納量は４ライン分となる。格納量は、隣接上層処理ノードが複数あると、それぞれに対して、算出される。
【００８９】
つまり、ある処理ノードの格納量は、その処理ノードの隣接上層処理ノードの数だけ存在し、それぞれは以下のように増減する。
・その処理ノードで単位演算が行われれば、すべての隣接上層処理ノードに対応した格納量が１ライン分増加する。
・その処理ノードの隣接上層処理ノードで単位演算が行われれば、その隣接上層処理ノードに対応した格納量が１ライン分減少する。
【００９０】
格納量算出部１０９は、単位演算対象画像領域調査を行う際（ステップＳ１０１〜Ｓ１１１）と単位演算結果書込み領域調査を行う際（ステップＳ２０１〜Ｓ２１１）に格納量を算出する。いずれの場合でも、格納量は、ネットワーク構成管理部１０２から送られてきたリードカウンタ値とライトカウンタ値と格納可能ライン数から算出される。但し、上述したように、単位演算対象画像領域調査において用いられるリードカウンタ値は、隣接下層処理ノードにおける指定処理ノードに関するリードカウンタ値である。また、単位演算対象画像領域調査において用いられるライトカウンタ値は、指定処理ノードを対象処理ノードとした場合のライトカウンタ値である。また、単位演算結果書込み領域調査において用いられるリードカウンタ値は、隣接上層処理ノードを対象処理ノードとし、指定処理ノードを隣接下層処理ノードとしたときのリードカウンタ値である。また、単位演算結果書込み領域調査において用いられるライトカウンタ値は、指定処理ノードのライトカウンタ値である。
【００９１】
格納量算出部１０９による格納量算出処理（ステップＳ１０２〜Ｓ１０９，ステップＳ２０２〜Ｓ２０９）を具体的に説明する。格納量算出部１０９は、格納量算出を開始すると（ステップＳ１０２、ステップＳ２０２）、まず、リードカウンタ値とライトカウンタ値の大小を比較する（ステップＳ１０３、ステップＳ２０３）。そして、ライトカウンタ値が大きければライトカウンタ値からリードカウンタ値を引いた値が格納量になる（ステップＳ１０４，Ｓ１０５、ステップＳ２０４，Ｓ２０５）。一方、ライトカウンタ値が小さければライトカウンタ値に格納可能ライン数を足した値からリードカウンタ値を引いた値が格納量になる（ステップＳ１０４，Ｓ１０６、ステップＳ２０４，Ｓ２０６）。
【００９２】
ライトカウンタ値とリードカウンタ値が等しいときは、格納量が０であるか、リングバッファに一杯に詰まっているのかのいずれかであるが、ライトカウンタ値とリードカウンタ値とからでは、それらのいずれであるかを区別できない。そこで、対応するライトカウンタとリードカウンタのうち、どちらが最後にカウントを行ったかを管理しておく。これにより、ライトカウンタ値とリードカウンタ値が等しいとき、ライトカウンタが最後にカウントを行った場合は、ライトカウンタ値がリードカウンタ値に追いついたと判断する。一方、リードカウンタが最後にカウントを行った場合は、リードカウンタ値がライトカウンタ値に追いついたと判断する。
・ライトカウンタ値がリードカウンタ値に追いついて、ライトカウンタ値とリードカウンタ値が等しくなったのか（この場合はリングバッファに一杯詰まっている）（ステップＳ１０３，Ｓ１０７，Ｓ１０６、ステップＳ２０３，Ｓ２０７，Ｓ２０６）、
・リードカウンタ値がライトカウンタ値に追いついて、ライトカウンタ値とリードカウンタ値が等しくなったのか（この場合はリングバッファの格納量が０）（ステップＳ１０３，Ｓ１０７，Ｓ１０８、ステップＳ２０３，Ｓ２０７，Ｓ２０８）、
を区別して格納量を算出する。こうして、格納量は、対応する処理ノードの演算処理の演算結果が対応するメモリの部分領域に書き込まれると予め決められた量が加算されることになる。また、対応する処理ノードの後段に接続された処理ノードの演算処理が終了すると予め決められた量が減算されることになる。
【００９３】
単位演算対象画像領域調査を行う場合には、隣接下層処理ノードが複数あれば、それぞれに割り当てられたリングバッファに関して格納量が算出される（ステップＳ１１１）。
【００９４】
また、単位演算結果書込み領域調査を行う場合には、隣接上層処理ノードが複数あれば、それぞれに対して格納量が算出される（ステップＳ２１１）。
【００９５】
単位演算実行判断部１０５は、単位演算対象画像領域調査で算出された全ての格納量と、閾値記憶部１０８に記憶されている演算実行閾値ライン数との大小を比較する（ステップＳ１１０）。さらに、単位演算実行判断部１０５では、単位演算結果書込み領域調査で算出された全ての格納量と、閾値記憶部１０８に記憶されている格納可能ライン数との大小を比較する（ステップＳ２１０）。
【００９６】
単位演算対象画像領域調査で算出された全ての格納量が、演算実行閾値ライン数より大きいか等しく、かつ、単位演算結果書込み領域調査で算出された全ての格納量が格納可能ライン数より小さい場合に処理はステップＳ２１３へ進む。この場合、当該メモリの部分領域には演算結果を格納可能な領域（格納可能領域）が存在するので、ステップＳ２１３において、単位演算実行判断部１０５は、ネットワーク構成管理部１０２に対して、単位演算の開始を指示する。そうでない場合、処理はステップＳ１１２或いはステップＳ２１２に進むことになり、単位演算実行判断部１０５は、単位演算のスキップを指示する。以上のように、処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域が順次を格納可能領域と判定され、新たな演算結果を格納することが可能となる。以上、図１１、図１２に示したように、割り当てられたメモリの部分領域における演算結果の格納状態、すなわち格納量に応じて、部分領域への演算結果の格納可否が判断される。
【００９７】
例えば具体例１の場合に、単位演算対象画像領域調査を行う場合には、ネットワーク構成管理部１０２から、
・リードカウンタ値としてMRA1_4、MRA2_4、MRA3_4、
・ライトカウンタ値としてMWA1、MWA2、MWA3、
・格納可能ライン数としてBH1、BH2、BH3、
・演算実行閾値ライン数としてWH4、が送られてくる。
【００９８】
従って、〔MRA1_4、MWA1、BH1〕の組から格納量を算出し、同様に〔MRA2_4、MWA2、BH2〕、〔MRA3_4、MWA3、BH3〕の各組により格納量を算出する。さらに算出した格納量の全てとWH4を比較することで、単位演算対象画像領域の必要な演算対象データの有無が調査できる。
【００９９】
また、例えば具体例１の場合に、単位演算結果書込み領域調査を行う場合には、ネットワーク構成管理部１０２から、
・リードカウンタ値としてMRA4_6、MRA4_7、
・ライトカウンタ値としてMWA4、
・格納可能ライン数としてBH4、が送られてくる。
【０１００】
従って、〔MRA4_6、MWA4、BH4〕の組から格納量を算出し、同様に〔MRA4_7、MWA4、BH4〕の組により格納量を算出する。さらに算出した格納量の全てとBH4を比較することで、単位演算の演算結果を格納できる領域の有無が調査できる。
【０１０１】
以上詳細に説明したように、第１実施形態によれば、各処理ノードで行われる演算は、あらかじめ決められた単位演算に分割され、単位演算を単位として演算が実行されていく。このため、中間階層の処理ノードでは、その上位階層の処理ノードで単位演算をするのに必要なだけの演算結果を保持するメモリがあればよくなる。従って、第１実施形態によれば、ある階層の処理ノードで行われた演算の結果を、その上層処理ノードの演算の入力に使うような階層的演算を行う場合に、必要なメモリ量を低減できる。すなわち、入力階層の処理ノード或いは中間階層の処理ノードでの一時的な演算結果（中間結果）を保持するためのメモリを少なくすることができる。
【０１０２】
また、単位演算実行部１０１では、単位演算を行う処理ノードを巡回的に指名することで、ある処理ノードで行われる単位演算に必要な下層処理ノードでの演算結果が揃ったらすぐに、単位演算を実行できるようにしている。さらに、上層処理ノードが直ちに単位演算を行い、その単位演算で使用されて不要になった演算結果を破棄する（その演算結果を格納している領域を上書き可能領域、すなわち新たな演算結果を格納可能な領域とする）。第１実施形態では、このようなメモリ制御により、メモリの有効活用を実現している。
【０１０３】
以上のように、第１実施形態によれば、各処理ノードで行われる演算をあらかじめ決められた単位演算に分割し、ある処理ノードで行われる単位演算に必要な下位階層での演算結果が揃ったらすぐに、単位演算を実行できるようにしている。その結果、コンボリューショナルニューラルネットワーク等の階層的演算装置の中間演算バッファを論理的な処理ノード毎にネットワーク構成に応じて最小のリングバッファで構成することができる。
【０１０４】
＜第２実施形態＞
第１実施形態では、中間階層の処理ノードの演算結果は、メモリ１０４の所定の割り当てリングバッファに格納され、階層的演算の最中は常に巡回的に上書きされている。従って、階層的演算の終了後に、中間階層の処理ノードの演算結果を別の処理に利用することはできなかった。
【０１０５】
第２実施形態では、階層的演算の終了後に、中間階層のある処理ノードの演算結果を別の処理に使用することを想定して、その処理ノードの演算結果だけは、上書きが行われる前に、別の領域に転送できるようにする。
【０１０６】
図１３に第２実施形態における階層的演算処理装置の構成例のブロック図を示す。図１３において、図２と同じ符号のものは、第１実施形態と同様の動作をするものであり、それらの説明は省略する。ここでは、第１実施形態と動作の異なる部分を中心に説明を行う。
【０１０７】
図１３において、ＣＰＵバスアクセス制御部１７１４は、第１実施形態のＣＰＵバスアクセス制御部１１４の動作に加えて、
・シーケンス制御部１７００からの割り込み要求をＣＰＵ６８に通知する機能と、
・ＣＰＵ６８からの巡回再開指示をシーケンス制御部１７００に通知する機能と、を持つ。
【０１０８】
また、シーケンス制御部１７００は、第１実施形態のシーケンス制御部１００の機能に加えて、単位演算実行部１７０１から巡回一時停止指示を受け取ると、次のシーケンス指示情報の出力を一時的に停止する機能を持つ。さらに、その一時的に停止している状態において、ＣＰＵバスアクセス制御部１７１４から巡回再開の指示があると、シーケンス制御部１７００は、シーケンス指示情報の出力を再開する。
【０１０９】
単位演算実行部１７０１は、第１実施形態の単位演算実行部１０１の機能に加えて次のような機能を有する。すなわち、単位演算実行部１７０１は、ネットワーク構成管理部１７０２からシーケンス制御部１７００のシーケンス指示情報の出力を一時的に停止させる要求を受けて、シーケンス制御部１７００に巡回一時停止を指示する機能を持つ。
【０１１０】
ネットワーク構成管理部１７０２は、第１実施形態のネットワーク構成管理部１０２の機能に加えて次の機能を有する。すなわち、上書き禁止処理ノード判定部１７１５からの指示によって、シーケンス制御部１７００からのシーケンス指示情報の出力を一時的に停止するよう要求を出す機能を持つ。また、ネットワーク構成管理部１７０２は、リングバッファ管理部１０３からアドレス算出パラメータの更新情報が通知されると、その情報を上書き禁止処理ノード判定部１７１５に通知する。
【０１１１】
上書き禁止処理ノード判定部１７１５には、あらかじめ演算結果の上書きを禁止する処理ノードが登録されている。さらに、リングバッファ管理部１０３から、その登録された処理ノード（上書き禁止処理ノードと呼ぶ）に対するライトカウンタ値の更新値が通知されたときにその更新値が０か否かを判定する。ライトカウンタ値の更新値が０ということは、この処理ノードの次回の単位演算において、リングバッファの先頭のライン格納領域に結果が格納されることを表す。従って、これまでの演算結果（リングバッファの先頭のライン格納領域に格納されている）が上書きされる可能性がある。従って、上書き禁止処理ノード判定部１７１５は、ライトカウンタ値の更新値として０が通知された場合には、シーケンス制御部１７００に対して、シーケンス指示情報の出力を一時的に停止するよう要求を出す（巡回一時停止指示）。
【０１１２】
以上のように構成することで、上書き禁止処理ノードに対応した演算結果はリングバッファ内で上書きされるまえに、演算が一時的に停止する。その一時停止中に、メモリ１０４の上書き禁止処理ノードに割り当てられたリングバッファから、これまでの演算結果を読み出し、別の場所（別のメモリ領域）に転送させること等が可能となる。
【０１１３】
例えば、ＣＰＵ６８は、シーケンス制御部１７００からの割り込み要求を受けるとメモリ１０４の上書き禁止処理ノードに割り当てられたリングバッファから、これまでの演算結果を読み出し、ＲＡＭ７０へ転送することができる。そして、ＣＰＵ６８は、必要な処理を終えた後に、シーケンス制御部１７００に対して巡回再開指示を与えることで、階層的演算を再開させることができる。
【０１１４】
このようにすることにより、中間階層の処理ノードによる演算結果を別の処理に利用することが可能となる。
【０１１５】
＜他の実施形態＞
上記の第１、第２実施形態では、リングカウンタを使用して、メモリ１０４の所定の連続領域をライン単位で循環しながら使用する方法について説明したが、本発明はこのようなメモリの使用方法に限られるものではない。例えば、リングカウンタに対応するメモリアドレステーブルを有し、当該テーブルを参照することで、不連続な領域を所定の処理単位で割り当てながら処理する等の方法を用いても良い。即ち、本発明で規定するリングバッファとは狭義のリングバッファ或いは循環バッファに限定されるものではない。
【０１１６】
上記第１、第２実施形態では特徴抽出結果を入力層と同じ解像度で保持する場合の例について説明したが、特徴面（演算結果）を入力面に対してサブサンプリングするような構成に対しても同様に適用可能である。
【０１１７】
上記第１、第２実施形態では最も効率の良い処理単位としてライン単位でシーケンス制御する場合について説明したが本発明はこれに限られるものではない。１ライン以下の単位やブロック単位でシーケンス制御する場合にも適用可能であり、その構成は、上記開示から当業者には明らかである。
【０１１８】
さらに、上記第１、第２実施形態では、単位演算として、水平方向１行分の演算の場合を示したが、本発明はこれに限られるものではない。例えば、垂直方向１列分の演算を単位演算としてもよい。また、水平方向でも、垂直方向でも１行（或いは１列）に限るものではない。例えば、水平方向２行分の演算を単位演算としてもよい。
【０１１９】
上気第１、第２実施形態では本発明をコンボリューショナルネットワークに適用する場合について説明したが、本発明はこれに限られるものではない。前段の演算結果における所定の参照領域を必要とする様々な階層的な演算処理に対して適用することが可能である。
【０１２０】
また、上記第１実施形態では本発明をＣＮＮ演算に適用した場合について説明したが、本発明はこれに限られるものではない。コンボリューション演算以外の他の２次元演算を階層的に処理する場合にも適用することが可能である。
【０１２１】
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１２２】
尚、上記各実施形態ではＣＮＮ演算部をハードウェアで実現する場合について説明したが、本発明はソフトウェアにより実現する場合にも適用することが可能である。従って、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したコンピュータプログラムである。
【０１２３】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１２４】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【０１２５】
プログラムを供給するためのコンピュータ読み取り可能な記憶媒体としては以下が挙げられる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などである。
【０１２６】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１２７】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
【０１２８】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどとの協働で実施形態の機能が実現されてもよい。この場合、ＯＳなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【０１２９】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行なう。
【図面の簡単な説明】
【０１３０】
【図１】実施形態の階層的演算処理を利用した画像処理装置の構成例を説明するブロック図である。
【図２】第１実施形態による階層的演算処理装置の構成例を示すブロック図である。
【図３】処理ノードの論理的な接続構成を説明する図である。
【図４】実施形態による各処理ノードの単位演算を説明する図である。
【図５】メモリの割り当てに関する例を示す図である。
【図６】図３の階層ネットワークから第４処理ノードを中心として切り出して示した図である。
【図７】図５に示したメモリの割り当ての一部を切り出して示した図である。
【図８】ネットワーク構成情報テーブルのデータ構成例を示す図である。
【図９】演算対象画素データの読み出しを説明する図である。
【図１０】演算部の構成例を説明するブロック図である。
【図１１】単位演算実行判断部の動作を説明するフローチャートである。
【図１２】単位演算実行判断部の動作を説明するフローチャートである。
【図１３】第２実施形態による階層的演算処理装置の構成例を説明するブロック図である。
【図１４】階層結合型ニューラルネットワークの構成例を説明する図である。
【図１５】ニューロンの構成例を示す図である。
【図１６】Convolutional NeuralNetworks （ＣＮＮ）のネットワーク構成例を説明する図である。
【図１７】ＣＮＮの特徴抽出の例を説明する図である。
【図１】
2008310524.tif 000004
【図２】
2008310524.tif 000005
【図３】
2008310524.tif 000006
【図４】
2008310524.tif 000007
【図５】
2008310524.tif 000008
【図６】
2008310524.tif 000009
【図７】
2008310524.tif 000010
【図８】
2008310524.tif 000011
【図９】
2008310524.tif 000012
【図１０】
2008310524.tif 000013
【図１１】
2008310524.tif 000014
【図１２】
2008310524.tif 000015
【図１３】
2008310524.tif 000016
【図１４】
2008310524.tif 000017
【図１５】
2008310524.tif 000018
【図１６】
2008310524.tif 000019
【図１７】
2008310524.tif 000020