JP5171118B2 - 演算処理装置及びその制御方法 - Google Patents

演算処理装置及びその制御方法 Download PDF

Info

Publication number
JP5171118B2
JP5171118B2 JP2007156734A JP2007156734A JP5171118B2 JP 5171118 B2 JP5171118 B2 JP 5171118B2 JP 2007156734 A JP2007156734 A JP 2007156734A JP 2007156734 A JP2007156734 A JP 2007156734A JP 5171118 B2 JP5171118 B2 JP 5171118B2
Authority
JP
Japan
Prior art keywords
processing
processing node
calculation
unit
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007156734A
Other languages
English (en)
Other versions
JP2008310524A (ja
JP2008310524A5 (ja
Inventor
貴久 山本
政美 加藤
嘉則 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2007156734A priority Critical patent/JP5171118B2/ja
Priority to PCT/JP2008/061083 priority patent/WO2008153196A1/en
Priority to US12/602,628 priority patent/US7978905B2/en
Priority to CN2008800197192A priority patent/CN101681450B/zh
Publication of JP2008310524A publication Critical patent/JP2008310524A/ja
Publication of JP2008310524A5 publication Critical patent/JP2008310524A5/ja
Priority to US13/155,640 priority patent/US8385631B2/en
Application granted granted Critical
Publication of JP5171118B2 publication Critical patent/JP5171118B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Description

本発明は、パターン識別装置、パターン識別システムや階層的なフィルタ演算処理装置等に適用される階層的演算処理方法及び装置に関するものである。
パターン識別システムや予測システム・制御システム等への応用として、ニューラルネットワークを利用した信号処理装置が広く利用されている。ニューラルネットワークはマイクロプロセッサ上で動作するソフトウェアとして実現される事が多く、パーソナルコンピュータやワークステーション等のアプリケーションソフトウェアとして提供されている。
図14は一般的な階層結合型ニューラルネットワークを利用する画像処理装置の概念的な構成例を示す図である。図14において、21は検出対象のデータであり、例えば、ラスタスキャンされた画像データを示す。22は画像中から所定の物体を検出する演算ユニットであり、図14の例では3階層のニューラルネットワークで構成されている。23は演算結果に相当する出力データ面である。演算ユニット22は所定の画像領域24を走査参照しながら処理を行うことで画像中に存在する検出対象を検出する。出力データ面23は検出対象画像データ21と同じサイズの画像面であり、演算ユニット22が画像データ21の全ての領域を走査しながら処理して得られた検出出力を格納する。演算ユニット22は対象物が検出された位置で大きな値を出力することから、出力データ面23を走査することで対象物の画像面内の位置を把握することができる。演算ユニット22において、25,26、27は夫々ニューラルネットワークの階層を示し、各階層に所定の数のニューロン28が存在する。第1層25は参照画像の画素数と同じ数のノード、すなわちニューロン28を有する。各ニューロンは所定の重み係数でフィードフォワード結合する。図15は1つのニューロン28の構成を示す図である。in_1〜in_nは当該処理ノードへの入力値であり、第1層では検出対象画像データ、第2層以降では前の階層のニューロン出力値である。これらニューロン入力値in_1〜in_nのそれぞれに学習によって得られた係数w_1〜w_nを乗じた結果を累積加算部32により累積加算する。非線形変換処理部33は、累積加算部32の累積加算結果をロジスティック関数や双曲正接関数(tanh関数)等により非線形変換し、その結果を検出結果outとして出力する。階層型ニューラルネットワークにおいて、夫々のニューロンに必要な重み係数w_1〜w_nは、一般的に知られているバックプロパゲーション等の学習アルゴリズムを使用して、検出する対象物に応じて予め決定されている。
このような階層結合型ニューラルネットワークを組み込み機器等へ安価に実装することを目的として、アナログハードウェアやディジタルハードウェアで実現する手法も提案されている。例えば、特許文献1では、単層のアナログニューラルネットワークハードウェアを時分割多重化使用することで多層化を実現する階層構造ニューラルネットのアーキテクチャが開示されている。又、特許文献2ではディジタルハードウェアにより実現する方法が開示されている。
一方、ニューラルネットワークの中でもConvolutional NeuralNetworks(以下CNNと略記する)と呼ばれる演算手法は、識別対象の変動に対して頑健なパターン認識を可能にする手法として知られている。例えば、特許文献3及び特許文献4では、画像中の対象物識別や検出に適用した例が提案されている。
図16は簡単なCNNの例を示す論理的なネットワーク構成図である。ここでは、第1層406の特徴数が3、第2層410の特徴数が2、第3層411の特徴数が1の3層CNNの例を示している。401は画像データであり、ラスタスキャンされた画像データに相当する。403a〜403cは第1階層406の特徴面を示す。特徴面とは、所定の特徴抽出フィルタ(コンボリューション演算の累積和及び非線形処理)で前の階層のデータを走査しながら演算した結果を示す画像データ面である。特徴面はラスタスキャンされた画像データに対する検出結果であるため、検出結果も面で表わされる。特徴面403a〜403cは、画像データ401から夫々対応する特徴抽出フィルタにより生成する。例えば、特徴面403a〜403cは、夫々模式的にフィルタカーネル404a〜404cに対応する2次元のコンボリューションフィルタ演算と演算結果の非線形変換により生成する。なお、402はコンボリューション演算に必要な参照画像領域を示す。
例えば、カーネルサイズ(水平方向の長さと垂直方向の高さ)が11×11のコンボリューションフィルタ演算は以下に示すような積和演算により処理する。
Figure 0005171118
ここで、
input(x,y):座標(x, y)での参照画素値、
output(x,y):座標(x, y)での演算結果、
weight(column, row):座標(x+column, y+row)での重み係数、
columnSize=11, rowSize=11:フィルタカーネルサイズ(フィルタタップ数)である。
404a〜404cは夫々異なる係数のコンボリューションフィルタカーネルである。また、特徴面によってコンボリューションカーネルのサイズも異なる。
CNN演算では複数のフィルタカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換する事で特徴面を生成する。特徴面403aを算出する場合は、前階層との結合数が1であるため、フィルタカーネルは1つ(404a)である。一方407a及び407bの特徴面を計算する場合、前階層との結合数が3であるため、夫々409a〜409c及び409d〜409fに相当する3つのコンボリューションフィルタの演算結果を累積加算する。コンボリューションカーネル409a〜409fは何れも異なるフィルタ係数を有する。また、コンボリューションカーネル409a〜409cとコンボリューションカーネル409d〜409fは図示するように異なるカーネルサイズを有する。たとえば、特徴面407aは、コンボリューションカーネル409a〜409cの出力を累積加算し、最後に非線形変換処理する事によって得られる。
コンボリューションカーネル(コンボリューションフィルタ)の累積加算及び非線形変換処理の基本的構成は図15に示すニューロンの構成と同じである。即ち、コンボリューションカーネルの係数が重み係数w_1〜w_nに相当する。特徴面407a、407b、408の様に、複数の前階層の特徴面と結合する場合、複数のコンボリューションカーネル演算結果を累積加算部32で蓄積する事になる。即ち、総結合数がコンボリューションカーネルサイズ×前階層の特徴数に相当する。
図17はCNN演算における図形検出処理の一例を説明する図である。51a〜51cは第1層の特徴抽出対象を模式的に示しており、それぞれ水平方向のエッジ及び斜め方向のエッジを抽出する様に学習されたコンボリューションカーネルである。52a、52bは複数の第1層特徴抽出結果とその空間的な配置関係から決定される図形である。53は最終的に抽出する図形を示している。図形53は複数の第2層特徴抽出結果とその空間配置関係から決定される。コンボリューションカーネルの各フィルタ係数は特徴毎にパーセプトロン学習やバックプロパゲーション学習等の一般的な手法を用いて予め学習により決定されているものとする。物体の検出や認識等においては、10×10以上の大きなサイズのフィルタカーネルを使用する事が多い。また、一般的に特徴毎にコンボリューションカーネルのサイズは異なる。
このように、CNN演算では特徴抽出毎に画像面単位で結果を保持しながら階層的に結合する事で、プリミティブな特徴とその空間的な配置関係に基づく頑健なパターン検出が実現される。
特許第2679730号明細書 特開平03-055658号公報 特開平10−021406号公報 特開2002−358500号公報
図14で説明したように、一般的な階層型ニューラルネットワークを利用した画像中の物体検出装置において、演算処理に必要なメモリサイズは、入出力画像バッファを除くと、ニューロン出力を保持するためのバッファメモリがあれば十分である。即ち、ニューロン数と等価な数の所定ビット数のメモリがあれば所望の演算処理を実行する事が可能である。
一方、CNN演算の場合、前階層の複数の特徴抽出結果の空間的配置に基いて特徴抽出を行うため、各階層間で所定サイズのデータバッファが必要になる。例えば、図16に示すCNN演算構成例の場合、入出力画像バッファを除くと画像サイズ×5個の特徴面バッファメモリが必要となる。このため、一般的な階層型ニューラルネットに比べ処理に必要なメモリサイズが増大する。
特許文献3及び特許文献4に開示されている手法も特徴抽出結果を画像面で保持する手法であり、同様に、処理に必要なメモリサイズが一般的な階層型ニューラルネットワークによる方式に比べて大きい。
特に、CNN演算をハードウェアにより実現する場合、LSIの内部にサイズの大きいRAM(Random Access Memory)を用意する必要があり、回路規模が増大して高価になるという課題がある。又、CNN演算をソフトウェアにより実現する場合であっても、組み込み機器に実装する場合、システムに必要なメモリ量が増大する事で同様にコストが上昇する。
本発明はこのような課題を解決するためになされたものであり、CNN演算等の空間的な配置関係に基づく階層的な演算処理を少ないメモリで実現する方法及び回路を提供することを目的とする。
上記の目的を達成するための本発明の一態様による演算処理装置は以下の構成を備える。すなわち、
入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワークによる演算処理を実行する演算処理装置であって、
前記複数の処理ノードの各々にメモリの部分領域を割り当て、処理ノードによって実行された演算処理の演算結果を当該処理ノードに割り当てられた部分領域の格納可能な領域に格納し、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を、格納可能な領域として設定するメモリ制御手段と、
前記ネットワークを構成する前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定手段と、
前記指定手段によって指定された処理ノードの演算を実行するか否かを、前記指定された処理ノードとその前段に接続された処理ノードのそれぞれに割り当てられた前記メモリの部分領域における演算結果の格納状態に基づいて判断する判断手段と、
前記判断手段によって演算を実行すると判断された場合、前記指定された処理ノードに対応する演算処理を実行させる実行手段とを備える。
また、上記の目的を達成するための本発明の一態様による演算処理装置の制御方法は、
入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワークによる演算処理を実行する演算処理装置の制御方法であって、
メモリ制御手段が、前記複数の処理ノードの各々にメモリの部分領域を割り当て、処理ノードによって実行された演算処理の演算結果を当該処理ノードに割り当てられた部分領域の格納可能な領域に格納し、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を、格納可能な領域として設定するメモリ制御工程と、
指定手段が、前記ネットワークを構成する前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定工程と、
判断手段が、前記指定工程によって指定された処理ノードの演算を実行するか否かを、前記指定された処理ノードとその前段に接続された処理ノードのそれぞれに割り当てられた前記メモリの部分領域における演算結果の格納状態に基づいて判断する判断工程と、
実行手段が、前記判断工程によって演算を実行すると判断された場合、前記指定された処理ノードに対応する演算処理を実行させる実行工程とを備える。

本発明によれば、CNN演算等の空間的な配置関係に基づく階層的な演算処理を少ないメモリで実現することが可能となる。
以下、添付の図面を参照して本発明の好適な実施形態について説明する。
<第1実施形態>
図1は第1実施形態による階層的演算処理回路を具備したパターン検出装置の構成例を示すブロック図である。パターン検出装置は画像データ中の特定の物体(画像パターン)を検出する機能を有する。図1において61は画像入力部であり、光学系、CCD(Charge-Coupled Devices)又はCMOS(Complimentary Metal OxideSemiconductor)センサ等の光電変換デバイスを含む。さらに、画像入力部61は、CCDまたはCMOSセンサを制御するドライバ回路/ADコンバータ/各種画像補正を司る信号処理回路/フレームバッファ等を含む。62は前処理部であり、画像からの図形等の検出処理を効果的に行うための各種前処理を行う。具体的には、前処理部62は、色変換処理/コントラスト補正処理等の画像データ変換をハードウェアで処理する。CNN処理部63は、階層的演算処理装置を含む特徴検出処理部である。CNN処理部63の詳細は図2を用いてして後述する。
66はDMAC(Direct Memory Access Controller)であり、画像バス64上の各処理部の間のデータ転送、及び画像バス64上のデバイスとCPUバス67上のRAM70との間のデータ転送を司る。65はブリッジであり、画像バス64とCPUバス67の間のブリッジ機能を提供する。68はCUであり、本装置全体の動作を制御する。69はROM(ReadOnlyMemory)であり、CPU68の動作を規定する命令や各種演算に必要なパラメータデータを格納する。例えば、CNN処理部63の動作に必要な重み係数、ネットワーク結合情報、シーケンス情報等もROM69に格納される。70はRAM(RandomAccessMemory)であり、CPU68の動作に必要なメインメモリとして機能する。RAM70はDRAM(Dynamic RAM)等の比較的容量の大きいメモリで構成される。CPU68はブリッジ65を介して画像バス64上の各種処理部にアクセスする事が可能である。画像バス64とCPUバス67を分離する事で、61〜63で示されるハードウェアによる処理部の動作とCPU68の動作は同時に、すなわち並列に実行される。
図2は、第1実施形態のCNN処理部63における階層的演算処理装置の構成例を示すブロック図である。
図2における階層的演算処理装置は、例えば図3に示されるような階層的な演算を行うのに用いられる。図3において処理ノードとは、コンボリューション演算の対象画像とコンボリューションカーネルから、コンボリューション演算結果を得る処理を行うブロックを指す。なお、図3では便宜上第0処理ノードを設けたが、通常第0処理ノードでは特になにも処理をせず、入力画像が第1〜第3処理ノードへ入力される。例えば、図3の第4処理ノードでは、第1〜3処理ノードの出力に対し、それぞれ係数の異なるコンボリューションカーネルを適用したコンボリューション演算が行われる。そして、第4処理ノードは、さらにそれぞれのコンボリューション演算の結果を加算し、非線形変換を行って演算結果を得ている。さらに、その第4処理ノードでの演算結果が、第6処理ノード及び第7処理ノードに入力されている。
図2に示した階層的演算処理装置を図3に示されるCNNに適用する場合、図2に示した階層的演算処理装置を処理ノード間で時分割に使用することで、各処理ノードで規定された演算を実行する。例えば、階層的演算処理装置を用いて、まず第1処理ノードで規定された演算を行い、その後第2処理ノードで規定された演算を行う、というようにCNNの演算が実行されていく。つまり、CNNを構成する処理ノードは複数存在し、論理的なネットワークを構成するが、処理ノードで規定された演算を実行する階層的演算処理装置は物理的に1つしか存在しない。
図2において、114はCPUバスアクセス制御部であり、CPU68がCNN処理部63内の各種レジスタやメモリ104にアクセスするためのバスインターフェースである。例えばネットワーク構成管理部102内のアドレス算出パラメータ格納テーブル107、演算部106内の重み係数セット1205(図10により後述)等の各種設定データは当該インターフェースを介してデータを書込む。
図2において、シーケンス制御部100は、あらかじめ設定された演算順序情報に従って、単位演算実行部101に対してシーケンス指示情報を出力する。本実施形態では、上述のように、階層的演算処理装置において、各処理ノードで規定された演算を時分割に実行する。従って、シーケンス制御部100は、各処理ノードで規定された演算をどういった順序で単位演算実行部101において実行するかを制御している。
シーケンス制御部100は、階層的演算のネットワークを構成する全処理ノードを巡回的に実行するように指示をする。例えば図3に示したCNNを本実施形態の階層的演算処理装置によって実行する場合、シーケンス制御部100は、単位演算実行部101に対して、
「第1処理ノードで規定された演算→第2処理ノードで規定された演算→… →第8処理ノードで規定された演算→第1処理ノードで規定された演算」
というように、各処理ノードを巡回的に実行するように指示する。
図2において、単位演算実行部101は、シーケンス制御部100からの指示に従って、指示された処理ノードに規定されている演算を実行する。単位演算実行部101では、演算を実行する際の単位(これを単位演算と呼ぶ)があらかじめ設定されている。
図3に示されたCNNを実行する場合、各処理ノードで規定されている演算は、コンボリューション演算とそれらの加算、及びその結果の非線形変換であり、この一連の演算を入力画像の全体(入力データの全体)にわたって行う。なお、コンボリューション演算結果の加算は、第4〜第8処理ノードのように複数の処理ノードの出力に対してコンボリューション演算が行われる場合に実行される。従って、各処理ノードで規定されている演算が行われると、演算結果も2次元的な画像になる。
それに対して、ここでいう単位演算とは、上記一連の演算で水平方向1行分(或いは垂直方向1列分)の演算結果を出力するだけの演算を行うことを意味し、この単位演算を繰り返すことで、各処理ノードで規定されている演算が遂行される。
図4は、処理ノードで行われる単位演算に関して模式的に説明する図である。ただし簡単のため、図4では、一つの処理ノードの演算出力画像(または、ネットワークへの入力画像)を演算対象画像としてコンボリューション演算を行う場合(図3の第1〜第3処理ノードのような場合)を示し、非線形変換も省略している。
図4の(A)において、601は演算対象画像を表し、模式的に示す最小の一升がラスタスキャン順で示された入力画像又は前階層の処理ノードでの演算結果画素(input(x,y)、x:水平方向位置、y:垂直方向位置)を示すものとする。また、602は演算結果画像を表し、模式的に示す最小一升がラスタスキャン順の演算結果画素(output(x,y)、x:水平方向位置、y:垂直方向位置)を示すものとする。
参照画像領域603(太線内の領域)はoutput(6,7)位置のコンボリューション演算を処理する場合の参照画像の領域を示す。なお、図4の(A)における参照画像領域603は、コンボリューションカーネルのサイズが水平方向「11」垂直方向「13」の場合を示している。
演算結果画像602中の太線内の領域604は、演算対象画像601に対して単位演算(水平方向1行分の演算)を行った結果領域を示す。結果領域604内の格子状の網掛け領域の画素は、コンボリューションカーネルのサイズに依存して発生する周辺領域(演算が行われない領域)の画素である。階層的処理においてこの周辺領域をどう扱うか(削除するか、デフォルト値を埋め込むか等)は、本発明において本質的な事項ではないので、ここでは例えば、デフォルト値を埋め込むとする。
図4の(A)から明らかなように、単位演算を行う場合には、演算対象画像の必要領域として、少なくとも水平方向サイズが演算対象画像と同じサイズ、垂直方向サイズがコンボリューションカーネルの垂直方向サイズと同じサイズの領域605が必要となる。すなわち、この領域605のデータが、処理ノードによる単位演算による処理対象のデータとなる。説明の都合上、この領域605を単位演算対象画像領域と呼ぶ。結果領域604で示されるような単位演算を、単位演算対象画像領域605をずらしながら行うことで、演算対象画像601の全領域にわたってコンボリューション演算を行うことができる。なお、図4の(B)には、図4の(A)の状態から1画素分(1水平ライン分)だけ下にずらした単位演算対象画像領域610に対して単位演算を行った場合を示している。結果領域611も結果領域604から1画素分だけ下にずれた領域となる。このとき、ある単位演算を実行できるか否かは、その単位演算の単位演算対象画像領域の画素データが、前階層の処理ノードによって演算され、その結果が出力されているか否かに依存する。
単位演算実行部101は、シーケンス制御部100から指定された単位演算が終了すると、シーケンス制御部100に対して、単位演算の終了を通知する(単位演算終了通知)。
以上のことから、本実施形態のシーケンス制御部100と単位演算実行部101を利用して、単位演算を単位として、図3に示されたようなCNNを実行していく場合には、以下のような動作になる。
(1)シーケンス制御部100は、単位演算実行部101に対して、シーケンス指示情報として、第1処理ノードで規定された演算を行うよう指示する。以後、シーケンス制御部100は、単位演算実行部101から単位演算終了の通知がくるごとに、第2処理ノードで規定された演算→ … →第8処理ノードで規定された演算→第1処理ノードで規定された演算、というように巡回的に指示を更新する。
(2)単位演算実行部101は、シーケンス制御部100からシーケンス指示情報を受け取ると、単位演算実行判断部105において、指示された単位演算を実行できるか否かを判断する。なお、この単位演算実行判断部105の動作及び判断に関しては後述するが、上述のようにその単位演算の単位演算対象画像領域の画素データが揃っているかを一つの基準として判断する。実行すると判定された場合は、当該指示情報で指示された処理ノードで規定されている演算を単位演算(例えば水平方向1行分)だけ実行し、当該単位演算が終了したら、シーケンス制御部100に単位演算終了を通知する。実行しないと判定された場合、単位演算実行部101は、該当する単位演算を実行せずに、シーケンス制御部100に単位演算終了を通知する。
図2において、メモリ104は、各処理ノード毎に割り当てられた部分領域に分割されており、それぞれの部分領域はリングバッファとして用いられる。図5は、図3に示された階層演算を行う場合に、メモリ104が部分領域に分割された様子を模式的に表した図である。例えば図3の第4処理ノードに対応する演算を行う場合、単位演算実行部101は、メモリ104の第1処理ノード割り当てリングバッファと第2処理ノード割り当てリングバッファと第3処理ノード割り当てリングバッファとから演算対象となるデータを読み出す。そして、単位演算実行部101は、読み出したデータを用いて演算を行い、その演算結果を第4処理ノード割り当てリングバッファに格納する。なお、それぞれのリングバッファ中のどの位置からデータを読んで、どの位置にデータを書込むかの詳細については後述する。なお、図5に示すように、連続するアドレス空間を有するメモリ104の異なるアドレス空間を複数の処理ノードに割り当てて、それら処理ノードによってメモリを共用するようにすることが、メモリの効率的利用の面から、好ましい。
上述のように、メモリ104では、各処理ノード毎に割り当てられた部分領域はリングバッファとして用いられる。このときのリングバッファの(論理的な)幅は入力画像と同じである。リングバッファは、高さ1のライン単位で循環的に上書きされて使用される。従って、単位演算が行われるごとにリングバッファの1ラインが更新される。
ネットワーク構成管理部102は、本実施形態の階層的演算処理装置が演算する階層的演算のネットワーク構成を規定する情報を管理する。ネットワーク構成とは、処理ノード間の接続関係や、各処理ノードでの演算処理に用いるコンボリューションカーネルのサイズ等を意味する。
アドレス算出パラメータ格納テーブル107は、ネットワーク構成管理部102が管理しているネットワーク構成情報と、演算を行う際に生じるメモリ104への読み書きに必要とされるアドレス管理情報とが記録されたテーブルである。アドレス算出パラメータ格納テーブル107には、各処理ノード毎に、様々の情報が示されている。
説明を容易にするために、図6に、図3の階層ネットワークから第4処理ノードを中心として切り出した図を示す。また図7に、図3の第4処理ノードを対象として、アドレス算出パラメータ格納テーブル107とリングバッファのライン格納領域との関係を図示する。図7において、第4処理ノード割り当てリングバッファ(太線部)には9ライン分の画像データが格納できるとしている。すなわち、第4処理ノード割り当てリングバッファには、9個の単位演算の演算結果を格納することができる。
図7には、「第4処理ノード割り当てリングバッファ第6処理ノード算出時リードカウンタ値」(以下、第6処理ノード算出時リードカウンタ値という)が示されている。第6処理ノード算出時リードカウンタ値は、第4処理ノードに割り当てられたリングバッファに格納された画像データを、第6処理ノードに対応した演算を行う際の演算対象画素データとして用いる場合のデータの読み出し位置を規定している。例えば、第6処理ノードに対応した演算で5ライン分の演算対象画素データが必要だとすると、現在のカウンタ値が3なので、ライン格納領域3、4、5、6、7の5ライン分のデータがリングバッファから読み出される。なお、カウンタ値をカウントアップする手順に関しては、リングバッファ管理部103で説明する。
同じく、第4処理ノード割り当てリングバッファには、「第4処理ノード割り当てリングバッファ第7処理ノード算出時リードカウンタ値」(以下、第7処理ノード算出時リードカウンタ値という)が存在する。この第7処理ノード算出時カウンタ値は、第4処理ノードに割り当てられたリングバッファに格納された画像データを、第7処理ノードに対応した演算を行う際の演算対象画素データとして用いる場合のデータの読み出し位置を規定している。例えば、第7処理ノードに対応した演算で9ライン分の演算対象画素データが必要だとすると、現在のカウンタ値が8なので、ライン格納領域8、9、1、2、3、4、5、6、7の9ライン分のデータがリングバッファから読み出される。
図7において、「第4処理ノード割り当てリングバッファライトカウンタ値」は、第4処理ノードに対応した演算を行った演算結果画素データを格納する場合のデータの書込み位置を規定している。例えば、現在のカウンタ値が7の場合に単位演算が行われると、ライン格納領域7に単位演算の結果が格納される。なお、カウンタ値をカウントアップする手順に関しては、リングバッファ管理部103で説明する。
ネットワーク構成管理部102が保持するアドレス算出パラメータ格納テーブル107には、図8に示されるように、各処理ノード毎に、以下の情報が保持されている。
・対象処理ノード:シーケンス制御部100からシーケンス情報として指定された処理ノードは指定処理ノードと呼ばれる。処理ノードが何個あるかは、階層的演算のネットワーク構成によってあらかじめ決定される。
・隣接下層処理ノード:ある処理ノードの入力側(前段)に接続されている処理ノード。どの処理ノードが、どの処理ノードの隣接処理ノードとなるかは、階層的演算のネットワーク構成によってあらかじめ決定される。
・リードカウンタ値:このカウンタ値は、メモリ104で割り当てられたリングバッファの先頭を基準としたライン格納領域を単位としたカウンタ値である(図7参照。カウンタ値の例は括弧内に記載)。この値は、階層的演算が進行していくにつれて循環的に更新される。
・ライトカウンタ値:このカウンタ値は、メモリ104で割り当てられたリングバッファの先頭を基準としたライン格納領域を単位としたカウンタ値である(図7参照。カウンタ値の例は括弧内に記載)。この値は、演算が進行していくにつれて循環的に更新される。
・オフセットアドレス:メモリ104内でその処理ノードに割り当てられたリングバッファの先頭を示すアドレス(図5、図7参照)。この値は、階層的演算のネットワーク構成によってあらかじめ決定される。
・格納可能ライン数:メモリ104内でその処理ノードに割り当てられたリングバッファに格納できるライン数。
格納可能ライン数は、その処理ノードの出力側(後段)に接続している処理ノード(隣接上層処理ノードと呼ぶ)において単位演算を行う際に必要な単位演算対象画像領域のライン数となる。従って、格納可能ライン数は、隣接上層処理ノードを演算する際に用いるコンボリューションカーネルの垂直方向サイズ以上であればよく、階層的演算のネットワーク構成によってあらかじめ決定される。但し、隣接上層処理ノードが複数あり、それぞれを演算する際のコンボリューションカーネルの大きさが異なる場合は、格納可能ライン数は、垂直方向サイズの最も大きいコンボリューションカーネルの垂直方向サイズ以上のライン数となる。図6に示される第4処理ノードの場合、格納可能ライン数は、コンボリューションカーネルW_4_6とW_4_7のうち垂直方向サイズの大きい方以上のライン数であればよい。図7では、格納可能ライン数が9である場合を示している。従って図6のW_4_6とW_4_7のうち垂直方向サイズの大きい方でも、そのサイズが9以下である。なお、本実施形態では、簡単のため、隣接上層処理ノードを演算する際に用いるコンボリューションカーネルの垂直方向サイズ(の中の最大のサイズ)に等しいとする。
・演算実行閾値ライン数:その処理ノードにおいて単位演算を行う際に必要な単位演算対象画像領域のライン数。このライン数は、その処理ノードを演算する際に用いるコンボリューションカーネルの垂直方向サイズ以上であればよい。図6では、コンボリューションカーネルW_1_4とW_2_4とW_3_4の垂直方向サイズとなる。W_1_4とW_2_4とW_3_4の垂直方向サイズが異なる場合は、最も大きい垂直方向サイズ以上であればよい。本実施形態では、簡単のため、その処理ノードを演算する際に用いるコンボリューションカーネルの垂直方向サイズの中の最大のサイズに等しいとする。
図2に戻り、ネットワーク構成管理部102は、シーケンス制御部100からシーケンス指示情報を受け取ると、次の2項目を調査するために、アドレス算出パラメータ格納テーブル107を調べ、単位演算実行判断部105へ必要なデータを送出する。
(1)単位演算対象画像領域調査:シーケンス情報から特定される指定処理ノードに対応した単位演算を行うために必要な単位演算対象画像領域のデータが揃っているか。
(2)単位演算結果書込み領域調査:メモリ104内で指定処理ノードに割り当てられたリングバッファに単位演算の結果を書込む領域があるか。
まず、単位演算対象画像領域調査に必要なデータを集めるために、ネットワーク構成管理部102は、図8に示すアドレス算出パラメータ格納テーブル107に対して、以下のことを行う。
1.指定処理ノード(シーケンス制御部100から演算の実行を指定された処理ノード)の隣接下層処理ノードを特定する(隣接下層処理ノードは複数ある場合もある)。
2.指定処理ノードと隣接下層処理ノードとからリードカウンタ値を選択する(隣接下層処理ノードが複数ある場合は、リードカウンタ値も複数ある)。
3.隣接下層処理ノードを対象処理ノードとしたときのライトカウンタ値を選択する。
4.隣接下層処理ノードを対象処理ノードとしたときの格納可能ライン数を選択する。
5.指定処理ノードから演算実行閾値ライン数を選択する。
6.上記項目2、3、4、5で選択した値を単位演算実行判断部105に送出する。
例えば、シーケンス制御部100から指定処理ノードとして第4処理ノードが指定された場合、ネットワーク構成管理部102は、以下のことを行う(図8参照)。なお、指定処理ノードとして第4処理ノードが指定された場合を具体例1と呼ぶ。従って、ネットワーク構成管理部102の以下の動作は、具体例1において単位演算対象画像領域調査を行う場合の動作である。
1.第4処理ノードの隣接下層処理ノードとして、第1処理ノード、第2処理ノード、第3処理ノードを選択する。
2.第4処理ノードが指定処理ノードで、
第1処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第1処理ノード割り当てリングバッファ第4処理ノード算出時リードカウンタ値(MRA1_4)」、
第2処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第2処理ノード割り当てリングバッファ第4処理ノード算出時リードカウンタ値(MRA2_4)」、
第3処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第3処理ノード割り当てリングバッファ第4処理ノード算出時リードカウンタ値(MRA3_4)」、を選択する。
3.隣接下層処理ノードを対象処理ノードとしたときのライトカウンタ値、すなわち、
第1処理ノードのライトカウンタ値である「第1処理ノード割り当てリングバッファライトカウンタ値(MWA1)」と、
第2処理ノードのライトカウンタ値である「第2処理ノード割り当てリングバッファライトカウンタ値(MWA2)」と、
第3処理ノードのライトカウンタ値である「第3処理ノード割り当てリングバッファライトカウンタ値(MWA3)」とを選択する。
4.隣接下層処理ノードを対象処理ノードとしたときの格納可能ライン数、すなわち、
第1処理ノードの格納可能ライン数である「BH1」と、
第2処理ノードの格納可能ライン数である「BH2」と、
第3処理ノードの格納可能ライン数である「BH3」とを選択する。
5.第4処理ノードの演算実行閾値ライン数である「WH4」を選択する。
6.上記の項目2.3.4.5.で選択した値を単位演算実行判断部105に送出する。単位演算実行判断部105は、これらの値を用いて図11により後述する単位演算実行判断処理を実行し、指定処理ノードにおける演算の実行に必要なデータがそろっているか否かを判断する。
次に、単位演算結果書込み領域調査に必要なデータを集めるために、ネットワーク構成管理部102は、アドレス算出パラメータ格納テーブル107に対して、以下のことを行う。
1.処理ノードの隣接上層処理ノードを特定する(隣接上層処理ノードは複数ある場合もある)。指定処理ノードの隣接上層処理ノードを特定することは、指定処理ノードを隣接下層処理ノードとしている処理ノードを特定すること同じである。
2.項目1で特定した隣接上層処理ノードを対象処理ノードとし、指定処理ノードを隣接下層処理ノードとしたときのリードカウンタ値を選択する(隣接上層処理ノードが複数ある場合は、リードカウンタ値も複数ある)。
3.指定処理ノードのライトカウンタ値を選択する。
4.指定処理ノードから格納可能ライン数を選択する。
5.上記項目2、3、4で選択した値を単位演算実行判断部105に送出する。
例えば、シーケンス制御部100から指定処理ノードとして第4処理ノードが指定された場合、すなわち具体例1において、単位演算結果書込み領域調査を行う場合、ネットワーク構成管理部102は、以下のことを行う(図8参照)。
1.第4処理ノードの隣接上層処理ノードとして、第6処理ノード、第7処理ノードを選択する(第4処理ノードの隣接上層処理ノードを特定することは、第4処理ノードを隣接下層処理ノードとしている処理ノードを見つけることと同じ)。
2.隣接上層処理ノード(第6、第7処理ノード)を対象処理ノードとし、指定処理ノード(第4処理ノード)を隣接下層処理ノードとしたときのリードカウンタ値を選択する。すなわち、
第6処理ノードが対象処理ノードで、第4処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第4処理ノード割り当てリングバッファ第6処理ノード算出時リードカウンタ値(MRA4_6)」と、
第7処理ノードが対象処理ノードで、第4処理ノードが隣接下層処理ノードの時のリードカウンタ値である「第4処理ノード割り当てリングバッファ第7処理ノード算出時リードカウンタ値(MRA4_7)」とを選択する。
3.第4処理ノードのライトカウンタ値である「第4処理ノード割り当てリングバッファライトカウンタ値(MWA4)」を選択する。
4.第4処理ノードの格納可能ライン数である「BH4」を選択する。
5.項目2、3、4で選択した値を単位演算実行判断部105に送出する。単位演算実行判断部105は、これらの値を用いて図12により後述する単位演算結果書込み領域調査を実行し、指定処理ノードにおける演算の実行結果を保持するに必要な領域が当該指定処理ノードに割り当てられたリングバッファにあるかどうかを判断する。
さらに、ネットワーク構成管理部102は、単位演算実行判断部105から単位演算の開始が指示されると(通知の詳細は後述)、リングバッファ管理部103に対して、アドレス算出パラメータを出力し、アドレスの算出を指示する。リングバッファ管理部103に送出するアドレス算出パラメータには、演算対象画素データをメモリ104から読み出して演算部106へ供給する場合のものと、演算結果画素データを演算部106からメモリ104へ書き出す場合のものとある。
ネットワーク構成管理部102は、演算対象画素データをメモリ104から読み出す際には、単位演算対象画像領域調査を行うために上記で選択したリードカウンタ値、格納可能ライン数、演算実行閾値ライン数をリングバッファ管理部103に対して送出する。更に、ネットワーク構成管理部102は、隣接下層処理ノードを対象処理ノードとしたときに選択されるオフセットアドレスを、リングバッファ管理部103に対して送出する。
ネットワーク構成管理部102は、演算結果画素データをメモリ104に書込む際には、単位演算結果書込み領域調査を行うために選択したライトカウンタ値、格納可能ライン数をリングバッファ管理部103に対して送出する。また、ネットワーク構成管理部102は、指定処理ノードから選択したオフセットアドレスとを、リングバッファ管理部103に対して送出する。
図2において、リングバッファ管理部103は、ネットワーク構成管理部102から送られてくるアドレス算出パラメータ(アドレス算出指示)から、ライン単位のアドレスを算出する。そして、リングバッファ管理部103は、算出したライン単位のアドレス(リングカウンタ値)と、オフセットアドレス値をメモリアクセス制御部110に送出する。オフセットアドレス設定部111は、ネットワーク構成管理部102から送られてくるオフセットアドレスを一時的に格納し、格納している値をメモリアクセス制御部110へ出力する。リングサイズ設定部112は、ネットワーク構成管理部102から送られてくる格納可能ライン数を一時的に格納し、格納している値をリングカウンタ113に出力する。リングカウンタ113は、ネットワーク構成管理部102から送られてくるリードカウンタ値或いはライトカウンタ値をロードし、その値を初期値としてカウントアップ動作する。
演算対象画素データをメモリ104から読み出す際に、リングカウンタ113によってリードカウンタ値がカウントアップされる回数は、今演算しようとしているコンボリューション演算の「カーネルの垂直方向サイズ−1」回である。また、演算結果画素データをメモリ104に書込む際に、リングカウンタ113によってライトカウンタ値がカウントアップされる回数は1回である。カウントアップされたカウンタ値はネットワーク構成管理部102へ送られる。
ただし、カウンタ値がリングサイズ設定部112に設定されている値になると、カウンタ値は0にセットされる。つまり、カウンタ値の最大値は、「リングサイズ設定部112に設定されている値−1」となる。また前述のように、リングサイズ設定部112に設定されている値は、リードカウンタ値に対してカウントアップする場合と、ライトカウンタ値に対してカウントアップする場合で異なる。なお、リードカウンタ値は、演算対象画素データがメモリ104から読み出された場合にカウントアップされる。また、ライトカウンタ値は、演算結果画素データがメモリ104に書込まれた場合にカウントアップされる。
演算対象画素データをメモリ104から読み出す場合、リングカウンタ113は、メモリアクセス制御部110へリングカウンタ値として、初期値並びにカウントアップしていった値(合わせて、「カーネルの垂直方向サイズ」個の値)を出力する。また、演算結果画素データをメモリ104へ書込む場合、リングカウンタ113は、メモリアクセス制御部110へリングカウンタ値として、初期値を出力する。
さらにリングカウンタ113は、ネットワーク構成管理部102から送られてくるリードカウンタ値或いはライトカウンタ値に対して、1カウントアップした値をアドレス算出パラメータの更新値として、ネットワーク構成管理部102へ送る。なお、ネットワーク構成管理部102から送られてくるリードカウンタ値或いはライトカウンタ値は、リングカウンタ113の初期値である。また、リングカウンタ113は、1カウントアップした値が格納可能ライン数になるときは、カウント値を0に更新する。
例えば、上記の具体例1の場合(指定処理ノードとして第4処理ノードが指定された場合)で、演算対象画素データをメモリ104から読み出す場合には、ネットワーク構成管理部102は、アドレス算出パラメータとして、
リードカウンタ値としてMRA1_4、MRA2_4、MRA3_4、
格納可能ライン数としてBH1、BH2、BH3、
演算実行閾値ライン数としてWH4、
オフセットアドレスとしてOA1、OA2、OA3を、リングバッファ管理部103に送る。
従って、リングバッファ管理部103では、まず、リングカウンタ113にMRA1_4をセットし、リングサイズ設定部112にBH1を設定し、オフセットアドレス設定部111にOA1を設定する。続いて、リングカウンタ113は、WH4−1回カウントアップしながら、そのリングカウンタ値をメモリアクセス制御部110に出力する。これにより、リングカウンタ113は、初期値を含むWH4個の値をメモリアクセス制御部110に出力することになる。また、MRA1_4の更新データとして、MRA1_4を1回カウントアップした値(=(MRA1_4+1)modBH1)をネットワーク構成管理部102に送る(アドレス算出パラメータ更新)。
さらに、リングバッファ管理部103は、リングカウンタ113にMRA2_4をセットし、リングサイズ設定部112にBH2を設定し、オフセットアドレス設定部111にOA2を設定して、上記と同様の処理を繰り返す。さらに、リングバッファ管理部103は、リングカウンタ113にMRA3_4をセットし、リングサイズ設定部112にBH3を設定し、オフセットアドレス設定部111にOA3を設定して、同様の処理を繰り返す。
また、例えば、具体例1の場合(指定処理ノードとして第4処理ノードが指定された場合)で、演算結果画素データをメモリ104に書込む場合には、ネットワーク構成管理部102は、リングバッファ管理部103に、
ライトカウンタ値としてMWA4、
格納可能ライン数としてBH4、
オフセットアドレスとしてOA4を送る。
従って、リングバッファ管理部103は、まず、リングカウンタ113にMWA4をセットし、リングサイズ設定部112にBH4を設定し、オフセットアドレス設定部111にOA4を設定する。続いて、リングバッファ管理部103は、リングカウンタ113を1回カウントアップしながら、リングカウンタ値をメモリアクセス制御部110に出力する(初期値のみ)。また、MWA4の更新データとして、MWA4を1回カウントアップした値(=(MWA4+1)modBH4)をネットワーク構成管理部102に送る。
メモリアクセス制御部110は、リングバッファ管理部103から送られてくるリングカウンタ値とオフセットアドレス値とから物理的なアドレスを生成する。更に、メモリアクセス制御部110は、演算部106でのコンボリューション演算に必要な演算対象画素データを読み出すためのアドレス、及び演算結果画素データを格納するためのアドレスを算出する。
図9はメモリアクセス制御部110が演算対象画素データを読み出す場合の動作を説明する図である。図9において領域701(太線内の領域)はリングバッファ、領域702(斜線の領域)はコンボリューションカーネルの大きさ(図9では5画素×5画素)を示している。
メモリアクセス制御部110は、リングカウンタ値とオフセットアドレス値とから、リングバッファの各ライン格納領域の先頭アドレスを算出する。なお、演算対象画像の水平方向幅は予め設定されているものとする。さらにその各ライン格納領域の先頭アドレスを用いて、そのライン格納領域から、コンボリューション演算に必要な画素を読み出すためのアドレスを算出する。これは、例えば図9において網が掛かった画素、すなわち領域702内の画素のアドレスを算出するものである。
例えばリングバッファ管理部103からリングカウンタ値として、2,3,4,0,1と送られてきたとすると、まず、リングカウンタ値2に対してライン格納領域3の先頭アドレスを算出する。さらにライン格納領域3からコンボリューションカーネルの水平方向サイズ(5)の画素を読み出すためのアドレスを算出する。その後、リングカウンタ値3以降に対して同じ処理を繰り返す。
メモリアクセス制御部110において、演算結果を格納するためのアドレスを算出する場合も同様である。メモリアクセス制御部110は、算出したアドレス並びに、リード/ライトの制御信号等を生成し、メモリ104に出力する。さらに、リード時には、メモリ104から出力されるデータを演算部106へ転送し、ライト時には、演算部106からの演算結果出力をメモリ104へ転送する。
演算部106では、所定のデータ群に対してコンボリューション演算と非線形処理を実行する。
図10は演算部106の一例を示すブロック図である。乗算器1201は、ネットワーク構成情報に従って係数選択部1204によって選択された重み係数セット1205が出力する係数と、その係数と同期して入力される演算対象画素データとを乗じて出力する。累積加算器1202は、乗算器1201の出力を所定の期間累積する。非線形変換処理部1203は、ロジスティック関数やtanh関数で累積加算結果を非線形変換する。なお、非線形変換は、所定の関数値を列挙する関数テーブルで実現するものとする。
図2に戻り、単位演算実行判断部105は、ネットワーク構成管理部102から送られてきた情報に基づいて、シーケンス制御部100から指示された処理ノードに対応する単位演算が可能か否かを判断する。閾値記憶部108は、単位演算実行判断部105が単位演算の可否を判定する際の閾値を記憶しておく。単位演算対象画像領域調査を行う際には、閾値記憶部108では、ネットワーク構成管理部102から送られてきた演算実行閾値ライン数を記憶する。また、単位演算結果書込み領域調査を行う際には、ネットワーク構成管理部102から送られてきた格納可能ライン数を記憶する。格納量算出部109は、メモリ104の所定の領域に格納されている画素データの格納量を算出する。ここでいう格納量とは、所定の領域に格納されている画素データのうち、これらの画素データを演算対象として使用できるものの量を指す。また格納量の単位は、本実施形態では、説明の簡単のため、ライン数とする。
以下、図11、図12を参照して単位演算実行判断部105による単位演算実行判断処理について説明する。
例えば、図7において、最初どのライン格納領域にも画素データが格納されていなければ、格納量は0となる。次にライン格納領域1に単位演算の演算結果が格納されると格納量は1ライン分となる。単位演算を繰り返してライン格納領域5まで演算結果が格納されたとすると格納量は5ライン分となる。このときに、隣接上層処理ノードでライン格納領域1〜5までのデータを使用して単位演算が行われたとすると、ライン格納領域1のデータは使用されることはないので格納量は4ライン分となる。格納量は、隣接上層処理ノードが複数あると、それぞれに対して、算出される。
つまり、ある処理ノードの格納量は、その処理ノードの隣接上層処理ノードの数だけ存在し、それぞれは以下のように増減する。
・その処理ノードで単位演算が行われれば、すべての隣接上層処理ノードに対応した格納量が1ライン分増加する。
・その処理ノードの隣接上層処理ノードで単位演算が行われれば、その隣接上層処理ノードに対応した格納量が1ライン分減少する。
格納量算出部109は、単位演算対象画像領域調査を行う際(ステップS101〜S111)と単位演算結果書込み領域調査を行う際(ステップS201〜S211)に格納量を算出する。いずれの場合でも、格納量は、ネットワーク構成管理部102から送られてきたリードカウンタ値とライトカウンタ値と格納可能ライン数から算出される。但し、上述したように、単位演算対象画像領域調査において用いられるリードカウンタ値は、隣接下層処理ノードにおける指定処理ノードに関するリードカウンタ値である。また、単位演算対象画像領域調査において用いられるライトカウンタ値は、指定処理ノードを対象処理ノードとした場合のライトカウンタ値である。また、単位演算結果書込み領域調査において用いられるリードカウンタ値は、隣接上層処理ノードを対象処理ノードとし、指定処理ノードを隣接下層処理ノードとしたときのリードカウンタ値である。また、単位演算結果書込み領域調査において用いられるライトカウンタ値は、指定処理ノードのライトカウンタ値である。
格納量算出部109による格納量算出処理(ステップS102〜S109,ステップS202〜S209)を具体的に説明する。格納量算出部109は、格納量算出を開始すると(ステップS102、ステップS202)、まず、リードカウンタ値とライトカウンタ値の大小を比較する(ステップS103、ステップS203)。そして、ライトカウンタ値が大きければライトカウンタ値からリードカウンタ値を引いた値が格納量になる(ステップS104,S105、ステップS204,S205)。一方、ライトカウンタ値が小さければライトカウンタ値に格納可能ライン数を足した値からリードカウンタ値を引いた値が格納量になる(ステップS104,S106、ステップS204,S206)。
ライトカウンタ値とリードカウンタ値が等しいときは、格納量が0であるか、リングバッファに一杯に詰まっているのかのいずれかであるが、ライトカウンタ値とリードカウンタ値とからでは、それらのいずれであるかを区別できない。そこで、対応するライトカウンタとリードカウンタのうち、どちらが最後にカウントを行ったかを管理しておく。これにより、ライトカウンタ値とリードカウンタ値が等しいとき、ライトカウンタが最後にカウントを行った場合は、ライトカウンタ値がリードカウンタ値に追いついたと判断する。一方、リードカウンタが最後にカウントを行った場合は、リードカウンタ値がライトカウンタ値に追いついたと判断する。
・ライトカウンタ値がリードカウンタ値に追いついて、ライトカウンタ値とリードカウンタ値が等しくなったのか(この場合はリングバッファに一杯詰まっている)(ステップS103,S107,S106、ステップS203,S207,S206)、
・リードカウンタ値がライトカウンタ値に追いついて、ライトカウンタ値とリードカウンタ値が等しくなったのか(この場合はリングバッファの格納量が0)(ステップS103,S107,S108、ステップS203,S207,S208)、
を区別して格納量を算出する。こうして、格納量は、対応する処理ノードの演算処理の演算結果が対応するメモリの部分領域に書き込まれると予め決められた量が加算されることになる。また、対応する処理ノードの後段に接続された処理ノードの演算処理が終了すると予め決められた量が減算されることになる。
単位演算対象画像領域調査を行う場合には、隣接下層処理ノードが複数あれば、それぞれに割り当てられたリングバッファに関して格納量が算出される(ステップS111)。
また、単位演算結果書込み領域調査を行う場合には、隣接上層処理ノードが複数あれば、それぞれに対して格納量が算出される(ステップS211)。
単位演算実行判断部105は、単位演算対象画像領域調査で算出された全ての格納量と、閾値記憶部108に記憶されている演算実行閾値ライン数との大小を比較する(ステップS110)。さらに、単位演算実行判断部105では、単位演算結果書込み領域調査で算出された全ての格納量と、閾値記憶部108に記憶されている格納可能ライン数との大小を比較する(ステップS210)。
単位演算対象画像領域調査で算出された全ての格納量が、演算実行閾値ライン数より大きいか等しく、かつ、単位演算結果書込み領域調査で算出された全ての格納量が格納可能ライン数より小さい場合に処理はステップS213へ進む。この場合、当該メモリの部分領域には演算結果を格納可能な領域(格納可能領域)が存在するので、ステップS213において、単位演算実行判断部105は、ネットワーク構成管理部102に対して、単位演算の開始を指示する。そうでない場合、処理はステップS112或いはステップS212に進むことになり、単位演算実行判断部105は、単位演算のスキップを指示する。以上のように、処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域が順次を格納可能領域と判定され、新たな演算結果を格納することが可能となる。以上、図11、図12に示したように、割り当てられたメモリの部分領域における演算結果の格納状態、すなわち格納量に応じて、部分領域への演算結果の格納可否が判断される。
例えば具体例1の場合に、単位演算対象画像領域調査を行う場合には、ネットワーク構成管理部102から、
・リードカウンタ値として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を比較することで、単位演算対象画像領域の必要な演算対象データの有無が調査できる。
また、例えば具体例1の場合に、単位演算結果書込み領域調査を行う場合には、ネットワーク構成管理部102から、
・リードカウンタ値としてMRA4_6、MRA4_7、
・ライトカウンタ値としてMWA4、
・格納可能ライン数としてBH4、が送られてくる。
従って、〔MRA4_6、MWA4、BH4〕の組から格納量を算出し、同様に〔MRA4_7、MWA4、BH4〕の組により格納量を算出する。さらに算出した格納量の全てとBH4を比較することで、単位演算の演算結果を格納できる領域の有無が調査できる。
以上詳細に説明したように、第1実施形態によれば、各処理ノードで行われる演算は、あらかじめ決められた単位演算に分割され、単位演算を単位として演算が実行されていく。このため、中間階層の処理ノードでは、その上位階層の処理ノードで単位演算をするのに必要なだけの演算結果を保持するメモリがあればよくなる。従って、第1実施形態によれば、ある階層の処理ノードで行われた演算の結果を、その上層処理ノードの演算の入力に使うような階層的演算を行う場合に、必要なメモリ量を低減できる。すなわち、入力階層の処理ノード或いは中間階層の処理ノードでの一時的な演算結果(中間結果)を保持するためのメモリを少なくすることができる。
また、単位演算実行部101では、単位演算を行う処理ノードを巡回的に指名することで、ある処理ノードで行われる単位演算に必要な下層処理ノードでの演算結果が揃ったらすぐに、単位演算を実行できるようにしている。さらに、上層処理ノードが直ちに単位演算を行い、その単位演算で使用されて不要になった演算結果を破棄する(その演算結果を格納している領域を上書き可能領域、すなわち新たな演算結果を格納可能な領域とする)。第1実施形態では、このようなメモリ制御により、メモリの有効活用を実現している。
以上のように、第1実施形態によれば、各処理ノードで行われる演算をあらかじめ決められた単位演算に分割し、ある処理ノードで行われる単位演算に必要な下位階層での演算結果が揃ったらすぐに、単位演算を実行できるようにしている。その結果、コンボリューショナルニューラルネットワーク等の階層的演算装置の中間演算バッファを論理的な処理ノード毎にネットワーク構成に応じて最小のリングバッファで構成することができる。
<第2実施形態>
第1実施形態では、中間階層の処理ノードの演算結果は、メモリ104の所定の割り当てリングバッファに格納され、階層的演算の最中は常に巡回的に上書きされている。従って、階層的演算の終了後に、中間階層の処理ノードの演算結果を別の処理に利用することはできなかった。
第2実施形態では、階層的演算の終了後に、中間階層のある処理ノードの演算結果を別の処理に使用することを想定して、その処理ノードの演算結果だけは、上書きが行われる前に、別の領域に転送できるようにする。
図13に第2実施形態における階層的演算処理装置の構成例のブロック図を示す。図13において、図2と同じ符号のものは、第1実施形態と同様の動作をするものであり、それらの説明は省略する。ここでは、第1実施形態と動作の異なる部分を中心に説明を行う。
図13において、CPUバスアクセス制御部1714は、第1実施形態のCPUバスアクセス制御部114の動作に加えて、
・シーケンス制御部1700からの割り込み要求をCPU68に通知する機能と、
・CPU68からの巡回再開指示をシーケンス制御部1700に通知する機能と、を持つ。
また、シーケンス制御部1700は、第1実施形態のシーケンス制御部100の機能に加えて、単位演算実行部1701から巡回一時停止指示を受け取ると、次のシーケンス指示情報の出力を一時的に停止する機能を持つ。さらに、その一時的に停止している状態において、CPUバスアクセス制御部1714から巡回再開の指示があると、シーケンス制御部1700は、シーケンス指示情報の出力を再開する。
単位演算実行部1701は、第1実施形態の単位演算実行部101の機能に加えて次のような機能を有する。すなわち、単位演算実行部1701は、ネットワーク構成管理部1702からシーケンス制御部1700のシーケンス指示情報の出力を一時的に停止させる要求を受けて、シーケンス制御部1700に巡回一時停止を指示する機能を持つ。
ネットワーク構成管理部1702は、第1実施形態のネットワーク構成管理部102の機能に加えて次の機能を有する。すなわち、上書き禁止処理ノード判定部1715からの指示によって、シーケンス制御部1700からのシーケンス指示情報の出力を一時的に停止するよう要求を出す機能を持つ。また、ネットワーク構成管理部1702は、リングバッファ管理部103からアドレス算出パラメータの更新情報が通知されると、その情報を上書き禁止処理ノード判定部1715に通知する。
上書き禁止処理ノード判定部1715には、あらかじめ演算結果の上書きを禁止する処理ノードが登録されている。さらに、リングバッファ管理部103から、その登録された処理ノード(上書き禁止処理ノードと呼ぶ)に対するライトカウンタ値の更新値が通知されたときにその更新値が0か否かを判定する。ライトカウンタ値の更新値が0ということは、この処理ノードの次回の単位演算において、リングバッファの先頭のライン格納領域に結果が格納されることを表す。従って、これまでの演算結果(リングバッファの先頭のライン格納領域に格納されている)が上書きされる可能性がある。従って、上書き禁止処理ノード判定部1715は、ライトカウンタ値の更新値として0が通知された場合には、シーケンス制御部1700に対して、シーケンス指示情報の出力を一時的に停止するよう要求を出す(巡回一時停止指示)。
以上のように構成することで、上書き禁止処理ノードに対応した演算結果はリングバッファ内で上書きされるまえに、演算が一時的に停止する。その一時停止中に、メモリ104の上書き禁止処理ノードに割り当てられたリングバッファから、これまでの演算結果を読み出し、別の場所(別のメモリ領域)に転送させること等が可能となる。
例えば、CPU68は、シーケンス制御部1700からの割り込み要求を受けるとメモリ104の上書き禁止処理ノードに割り当てられたリングバッファから、これまでの演算結果を読み出し、RAM70へ転送することができる。そして、CPU68は、必要な処理を終えた後に、シーケンス制御部1700に対して巡回再開指示を与えることで、階層的演算を再開させることができる。
このようにすることにより、中間階層の処理ノードによる演算結果を別の処理に利用することが可能となる。
<他の実施形態>
上記の第1、第2実施形態では、リングカウンタを使用して、メモリ104の所定の連続領域をライン単位で循環しながら使用する方法について説明したが、本発明はこのようなメモリの使用方法に限られるものではない。例えば、リングカウンタに対応するメモリアドレステーブルを有し、当該テーブルを参照することで、不連続な領域を所定の処理単位で割り当てながら処理する等の方法を用いても良い。即ち、本発明で規定するリングバッファとは狭義のリングバッファ或いは循環バッファに限定されるものではない。
上記第1、第2実施形態では特徴抽出結果を入力層と同じ解像度で保持する場合の例について説明したが、特徴面(演算結果)を入力面に対してサブサンプリングするような構成に対しても同様に適用可能である。
上記第1、第2実施形態では最も効率の良い処理単位としてライン単位でシーケンス制御する場合について説明したが本発明はこれに限られるものではない。1ライン以下の単位やブロック単位でシーケンス制御する場合にも適用可能であり、その構成は、上記開示から当業者には明らかである。
さらに、上記第1、第2実施形態では、単位演算として、水平方向1行分の演算の場合を示したが、本発明はこれに限られるものではない。例えば、垂直方向1列分の演算を単位演算としてもよい。また、水平方向でも、垂直方向でも1行(或いは1列)に限るものではない。例えば、水平方向2行分の演算を単位演算としてもよい。
上気第1、第2実施形態では本発明をコンボリューショナルネットワークに適用する場合について説明したが、本発明はこれに限られるものではない。前段の演算結果における所定の参照領域を必要とする様々な階層的な演算処理に対して適用することが可能である。
また、上記第1実施形態では本発明をCNN演算に適用した場合について説明したが、本発明はこれに限られるものではない。コンボリューション演算以外の他の2次元演算を階層的に処理する場合にも適用することが可能である。
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、上記各実施形態ではCNN演算部をハードウェアで実現する場合について説明したが、本発明はソフトウェアにより実現する場合にも適用することが可能である。従って、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したコンピュータプログラムである。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するためのコンピュータ読み取り可能な記憶媒体としては以下が挙げられる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどとの協働で実施形態の機能が実現されてもよい。この場合、OSなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行なう。
実施形態の階層的演算処理を利用した画像処理装置の構成例を説明するブロック図である。 第1実施形態による階層的演算処理装置の構成例を示すブロック図である。 処理ノードの論理的な接続構成を説明する図である。 実施形態による各処理ノードの単位演算を説明する図である。 メモリの割り当てに関する例を示す図である。 図3の階層ネットワークから第4処理ノードを中心として切り出して示した図である。 図5に示したメモリの割り当ての一部を切り出して示した図である。 ネットワーク構成情報テーブルのデータ構成例を示す図である。 演算対象画素データの読み出しを説明する図である。 演算部の構成例を説明するブロック図である。 単位演算実行判断部の動作を説明するフローチャートである。 単位演算実行判断部の動作を説明するフローチャートである。 第2実施形態による階層的演算処理装置の構成例を説明するブロック図である。 階層結合型ニューラルネットワークの構成例を説明する図である。 ニューロンの構成例を示す図である。 Convolutional NeuralNetworks (CNN)のネットワーク構成例を説明する図である。 CNNの特徴抽出の例を説明する図である。

Claims (23)

  1. 入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワークによる演算処理を実行する演算処理装置であって、
    前記複数の処理ノードの各々にメモリの部分領域を割り当て、処理ノードによって実行された演算処理の演算結果を当該処理ノードに割り当てられた部分領域の格納可能な領域に格納し、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を、格納可能な領域として設定するメモリ制御手段と、
    前記ネットワークを構成する前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定手段と、
    前記指定手段によって指定された処理ノードの演算を実行するか否かを、前記指定された処理ノードとその前段に接続された処理ノードのそれぞれに割り当てられた前記メモリの部分領域における演算結果の格納状態に基づいて判断する判断手段と、
    前記判断手段によって演算を実行すると判断された場合、前記指定された処理ノードに対応する演算処理を実行させる実行手段とを備えることを特徴とする演算処理装置。
  2. 前記判断手段は、
    前記指定された処理ノードの前段に接続されている処理ノードに割り当てられた前記メモリの部分領域に、当該指定された処理ノードの演算に必要な演算結果が格納されており、且つ、
    前記指定された処理ノードに割り当てられた前記メモリの部分領域に、当該指定された処理ノードによる演算結果を格納可能な領域が存在する場合に、
    前記指定された処理ノードに対応する演算を実行すると判断することを特徴とする請求項1に記載の演算処理装置。
  3. 前記判断手段は、前記指定された処理ノードの前段に接続されている処理ノードに割り当てられたメモリの部分領域に格納された演算結果の格納量と、前記指定された処理ノードに予め設定されている閾値との比較により、前記指定された処理ノードの演算を実行するか否かを判断し、
    前記格納量は、対応する処理ノードの演算処理の演算結果が対応するメモリの部分領域に書き込まれると予め決められた量が加算され、前記対応する処理ノードの後段に接続された処理ノードの演算処理が終了すると予め決められた量が減算されることを特徴とする請求項1または2に記載の演算処理装置。
  4. 前記複数の処理ノードの各々は、前記指定手段による1回の指定に対して、処理対象の入力データの全体よりも小さい予め決められた量のデータを処理する単位演算を実行し、前記単位演算を繰り返すことで前記処理対象の入力データの全体に対する演算を行うことを特徴とする請求項1乃至3のいずれか1項に記載の演算処理装置。
  5. 前記複数の処理ノードの各々による演算処理とは、2次元の入力データから2次元の出力データを生成する演算であり、
    前記単位演算とは、前記2次元の出力データうちの1ライン分を出力する演算であることを特徴とする請求項4に記載の演算処理装置。
  6. 前記メモリ制御手段は、前記単位演算の演算結果を前記メモリの割り当てられた部分領域に循環的に上書きしながら格納することを特徴とする請求項4または5に記載の演算処理装置。
  7. 前記メモリが連続するアドレス空間を有するメモリであり、前記複数の処理ノードの各々に前記メモリの異なるアドレス空間が割り当てられることで、前記メモリが共用されることを特徴とする請求項1乃至6のいずれか1項に記載の演算処理装置。
  8. 前記ネットワークの演算処理がコンボリューショナルニューラルネットワークの演算処理であることを特徴とする請求項1乃至7のいずれか1項に記載の演算処理装置。
  9. 前記複数の処理ノードのうち、上書きを禁止する予め登録された処理ノードにおいて、次回の演算結果の書き込み先領域として、以前の演算結果の格納された領域が指定された場合に、当該領域に格納された演算結果について予め定められた処理を実行するために、前記ネットワークの演算を一時的に停止する一時停止手段を更に備えることを特徴とする請求項1乃至8のいずれか1項に記載の演算処理装置。
  10. 前記予め定められた処理は、前記部分領域に格納された演算結果を他のメモリ領域へ転送する処理であることを特徴とする請求項9に記載の演算処理装置。
  11. 入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワークによる演算処理を実行する演算処理装置の制御方法であって、
    メモリ制御手段が、前記複数の処理ノードの各々にメモリの部分領域を割り当て、処理ノードによって実行された演算処理の演算結果を当該処理ノードに割り当てられた部分領域の格納可能な領域に格納し、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を、格納可能な領域として設定するメモリ制御工程と、
    指定手段が、前記ネットワークを構成する前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定工程と、
    判断手段が、前記指定工程によって指定された処理ノードの演算を実行するか否かを、前記指定された処理ノードとその前段に接続された処理ノードのそれぞれに割り当てられた前記メモリの部分領域における演算結果の格納状態に基づいて判断する判断工程と、
    実行手段が、前記判断工程によって演算を実行すると判断された場合、前記指定された処理ノードに対応する演算処理を実行させる実行工程とを備えることを特徴とする演算処理装置の制御方法。
  12. 請求項11に記載された制御方法の各工程をコンピュータに実行させるためのコンピュータプログラム。
  13. 請求項11に記載された制御方法の各工程をコンピュータに実行させるためのコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体。
  14. 複数の処理ノードにより階層的に演算処理を実行する演算処理装置であって、
    前記複数の処理ノードの各処理ノードにメモリの部分領域を割り当て、当該各処理ノードの演算結果をその処理ノードに割り当てられた部分領域の格納可能な領域に格納するメモリ制御手段と、
    前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定手段と、
    前記指定手段によって指定された処理ノードによる演算を実行すべきか否かを、前記部分領域における演算結果の格納状態に基づいて判断する判断手段と、
    前記判断手段によって演算を実行すべきと判断された場合に、前記指定された処理ノードに演算を実行させるように制御する実行制御手段と
    を備えることを特徴とする演算処理装置。
  15. 前記判断手段は、前記指定された処理ノードと前段の処理ノードとに割り当てられた部分領域における演算結果の格納状態に基づいて、当該指定された処理ノードによる演算を実行すべきか否かを判断することを特徴とする請求項14に記載の演算処理装置。
  16. 前記判断手段は、前記指定された処理ノードに割り当てられた部分領域に記憶可能な領域がなければ、当該指定された処理ノードによる演算を実行すべきでないと判断することを特徴とする請求項14または15に記載の演算処理装置。
  17. 前記判断手段は、前記指定された処理ノードの前段の処理ノードに割り当てられた部分領域に、当該指定された処理ノードによる演算に必要なデータが揃っていなければ、当該指定された処理ノードによる演算を実行すべきでないと判断することを特徴とする請求項14乃至16のいずれか1項に記載の演算処理装置。
  18. 前記各処理ノードに割り当てられた部分領域において、当該処理ノードの後段に接続された全ての処理ノードによる参照が完了した演算結果が格納されている領域を、格納可能な領域として設定する設定手段を更に備えることを特徴とする請求項14乃至17のいずれか1項に記載の演算処理装置。
  19. 前記複数の処理ノードによる演算処理を同一の演算処理部により時分割で実行することを特徴とする請求項14乃至18のいずれか1項に記載の演算処理装置。
  20. 前記複数の処理ノードによる演算処理を前記演算処理部に循環的に割り当てて実行することを特徴とする請求項19に記載の演算処理装置。
  21. 複数の処理ノードにより階層的に演算処理を実行する演算処理装置の制御方法であって、
    メモリ制御手段が、前記複数の処理ノードの各処理ノードにメモリの部分領域を割り当て、当該各処理ノードの演算結果をその処理ノードに割り当てられた部分領域の格納可能な領域に格納するメモリ制御工程と、
    指定手段が、前記複数の処理ノードのうち、演算処理を実行すべき処理ノードを指定する指定工程と、
    判断手段が、前記指定工程によって指定された処理ノードによる演算を実行すべきか否かを、前記部分領域における演算結果の格納状態に基づいて判断する判断工程と、
    実行制御手段が、前記判断工程によって演算を実行すべきと判断された場合に、前記指定された処理ノードに演算を実行させるように制御する実行制御工程と
    を備えることを特徴とする演算処理装置の制御方法。
  22. 請求項21に記載された制御方法の各工程をコンピュータに実行させるためのコンピュータプログラム。
  23. 請求項21に記載された制御方法の各工程をコンピュータに実行させるためのコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体。
JP2007156734A 2007-06-13 2007-06-13 演算処理装置及びその制御方法 Active JP5171118B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007156734A JP5171118B2 (ja) 2007-06-13 2007-06-13 演算処理装置及びその制御方法
PCT/JP2008/061083 WO2008153196A1 (en) 2007-06-13 2008-06-11 Calculation processing apparatus and control method thereof
US12/602,628 US7978905B2 (en) 2007-06-13 2008-06-11 Calculation processing apparatus and control method thereof
CN2008800197192A CN101681450B (zh) 2007-06-13 2008-06-11 计算处理装置及其控制方法
US13/155,640 US8385631B2 (en) 2007-06-13 2011-06-08 Calculation processing apparatus and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007156734A JP5171118B2 (ja) 2007-06-13 2007-06-13 演算処理装置及びその制御方法

Publications (3)

Publication Number Publication Date
JP2008310524A JP2008310524A (ja) 2008-12-25
JP2008310524A5 JP2008310524A5 (ja) 2010-07-29
JP5171118B2 true JP5171118B2 (ja) 2013-03-27

Family

ID=40129793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007156734A Active JP5171118B2 (ja) 2007-06-13 2007-06-13 演算処理装置及びその制御方法

Country Status (4)

Country Link
US (2) US7978905B2 (ja)
JP (1) JP5171118B2 (ja)
CN (1) CN101681450B (ja)
WO (1) WO2008153196A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7141607B2 (ja) 2018-12-11 2022-09-26 リンテック株式会社 粘着シート
US11699067B2 (en) 2017-03-03 2023-07-11 Canon Kabushiki Kaisha Arithmetic processing apparatus and control method therefor

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5368687B2 (ja) 2007-09-26 2013-12-18 キヤノン株式会社 演算処理装置および方法
WO2011146147A1 (en) 2010-05-19 2011-11-24 The Regents Of The University Of California Neural processing unit
US9015093B1 (en) 2010-10-26 2015-04-21 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
US8775341B1 (en) 2010-10-26 2014-07-08 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
JP2014059862A (ja) 2012-08-22 2014-04-03 Canon Inc データフローのリソース割り当て装置および方法
JP6393058B2 (ja) 2014-03-31 2018-09-19 キヤノン株式会社 情報処理装置、情報処理方法
US10387773B2 (en) * 2014-10-27 2019-08-20 Ebay Inc. Hierarchical deep convolutional neural network for image classification
US10255547B2 (en) * 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
JP6516489B2 (ja) * 2015-01-29 2019-05-22 キヤノン株式会社 情報処理装置
JP6706788B2 (ja) * 2015-03-06 2020-06-10 パナソニックIpマネジメント株式会社 画像認識方法、画像認識装置およびプログラム
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
WO2017011702A1 (en) * 2015-07-15 2017-01-19 Cylance Inc. Malware detection
WO2017171852A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Four stable state neuron
CN111860811B (zh) * 2016-04-27 2024-01-16 中科寒武纪科技股份有限公司 一种用于执行人工神经网络全连接层正向运算的装置和方法
CN107329734B (zh) * 2016-04-29 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络正向运算的装置和方法
GB201607713D0 (en) 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
JP6708044B2 (ja) 2016-07-28 2020-06-10 富士通株式会社 画像認識装置、画像認識プログラム、画像認識方法および認識装置
JP6786948B2 (ja) * 2016-08-12 2020-11-18 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN106529679B (zh) * 2016-10-14 2020-01-14 腾讯科技(上海)有限公司 一种机器学习方法及系统
JP6852365B2 (ja) * 2016-11-25 2021-03-31 富士通株式会社 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
CN107066334A (zh) * 2017-03-17 2017-08-18 联想(北京)有限公司 信息处理方法及处理系统
EP3388981B1 (en) 2017-04-13 2021-09-01 Nxp B.V. Convolutional processing system
JP6929734B2 (ja) 2017-08-08 2021-09-01 キヤノン株式会社 判別演算装置、判別演算方法及びプログラム
WO2019104638A1 (zh) * 2017-11-30 2019-06-06 深圳市大疆创新科技有限公司 神经网络处理的方法、装置、加速器、系统和可移动设备
US11443185B2 (en) * 2018-10-11 2022-09-13 Powerchip Semiconductor Manufacturing Corporation Memory chip capable of performing artificial intelligence operation and method thereof
CN109615065A (zh) * 2018-12-17 2019-04-12 郑州云海信息技术有限公司 一种基于fpga的数据处理方法、设备以及存储介质
CN109739703B (zh) * 2018-12-28 2020-01-17 中科寒武纪科技股份有限公司 调错方法及相关产品
JP7297468B2 (ja) * 2019-02-28 2023-06-26 キヤノン株式会社 データ処理装置及びその方法
US10891537B2 (en) * 2019-03-20 2021-01-12 Huawei Technologies Co., Ltd. Convolutional neural network-based image processing method and image processing apparatus
JP7278150B2 (ja) * 2019-05-23 2023-05-19 キヤノン株式会社 画像処理装置、撮像装置、画像処理方法
US10976965B1 (en) * 2020-10-14 2021-04-13 First Capitol Consulting, Inc. Optimization of in-memory processing of data represented by an acyclic graph so that the removal and re-materialization of data in selected nodes is minimized
CN112270412B (zh) * 2020-10-15 2023-10-27 北京百度网讯科技有限公司 网络算子处理方法、装置、电子设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2679730B2 (ja) 1988-08-31 1997-11-19 富士通株式会社 階層構造ニューラルネット
FI894021A (fi) 1988-08-31 1990-03-01 Fujitsu Ltd Neuronstruktur.
JPH0355658A (ja) 1989-07-25 1991-03-11 Fujitsu Ltd 半導体情報処理装置
US6038337A (en) 1996-03-29 2000-03-14 Nec Research Institute, Inc. Method and apparatus for object recognition
JPH10162120A (ja) 1996-12-02 1998-06-19 Mitsubishi Electric Corp 動画像処理方法ならびに動画像処理装置
JP3849951B2 (ja) * 1997-02-27 2006-11-22 株式会社日立製作所 主記憶共有型マルチプロセッサ
JPH11184841A (ja) * 1997-12-22 1999-07-09 Canon Inc 画像処理方法及び装置
JP4846924B2 (ja) 2001-05-31 2011-12-28 キヤノン株式会社 パターン認識装置
JP4051974B2 (ja) * 2002-03-20 2008-02-27 富士ゼロックス株式会社 画像処理装置および画像処理方法
JP4035408B2 (ja) 2002-09-10 2008-01-23 キヤノン株式会社 解像度変換装置及び方法及び情報処理装置
CN1310186C (zh) * 2002-09-24 2007-04-11 中兴通讯股份有限公司 一种神经网络均衡器的优化训练方法
CN1331092C (zh) * 2004-05-17 2007-08-08 中国科学院半导体研究所 模式识别专用神经网络计算机系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11699067B2 (en) 2017-03-03 2023-07-11 Canon Kabushiki Kaisha Arithmetic processing apparatus and control method therefor
JP7141607B2 (ja) 2018-12-11 2022-09-26 リンテック株式会社 粘着シート

Also Published As

Publication number Publication date
US8385631B2 (en) 2013-02-26
CN101681450A (zh) 2010-03-24
JP2008310524A (ja) 2008-12-25
US20110239224A1 (en) 2011-09-29
CN101681450B (zh) 2013-08-14
US7978905B2 (en) 2011-07-12
WO2008153196A1 (en) 2008-12-18
US20100215253A1 (en) 2010-08-26

Similar Documents

Publication Publication Date Title
JP5171118B2 (ja) 演算処理装置及びその制御方法
JP5184824B2 (ja) 演算処理装置及び方法
US8391306B2 (en) Calculation processing apparatus and method
JP6936592B2 (ja) 演算処理装置およびその制御方法
CN110046702B (zh) 神经网络计算加速器及其执行的方法
US10831547B2 (en) Accelerator control apparatus for analyzing big data, accelerator control method, and program
US20200183834A1 (en) Method and device for determining memory size
CN109284233B (zh) 一种存储系统的垃圾回收方法及相关装置
CN108153594B (zh) 一种人工智能云平台的资源碎片整理方法及电子设备
JP6970827B2 (ja) 演算処理装置
US20200372332A1 (en) Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium
JP2022144168A (ja) プログラム、情報処理装置および情報処理方法
US20220236899A1 (en) Information processing apparatus, information processing method, and computer-readable recording medium storing information processing program
US20230418666A1 (en) Graph streaming neural network processing system and method thereof
JP6524733B2 (ja) 並列演算装置、並列演算システム、およびジョブ制御プログラム
CN114118395B (zh) 智能处理器装置与降低存储器带宽的方法
WO2021171374A1 (ja) 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体
JP7321213B2 (ja) 情報処理装置、情報処理方法
WO2022181253A1 (ja) 関節点検出装置、学習モデル生成装置、関節点検出方法、学習モデル生成方法、及びコンピュータ読み取り可能な記録媒体
US11029887B2 (en) Data process execution device, storage medium, and data process execution system
WO2022181251A1 (ja) 関節点検出装置、関節点検出方法、及びコンピュータ読み取り可能な記録媒体
EP4310731A1 (en) Electronic device and controlling method of electronic device
JP2018055570A (ja) 演算処理装置、演算処理方法及びプログラム
JP3818172B2 (ja) マルチプロセッサシステム、プロセス制御方法、および、プロセス制御プログラム
JPH05165397A (ja) スケジューリング装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100614

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120717

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120918

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121225

R151 Written notification of patent or utility model registration

Ref document number: 5171118

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160111

Year of fee payment: 3