JP2008310700A - 演算処理装置及び方法 - Google Patents

演算処理装置及び方法 Download PDF

Info

Publication number
JP2008310700A
JP2008310700A JP2007159491A JP2007159491A JP2008310700A JP 2008310700 A JP2008310700 A JP 2008310700A JP 2007159491 A JP2007159491 A JP 2007159491A JP 2007159491 A JP2007159491 A JP 2007159491A JP 2008310700 A JP2008310700 A JP 2008310700A
Authority
JP
Japan
Prior art keywords
processing
memory
arithmetic processing
ring buffer
unit
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.)
Granted
Application number
JP2007159491A
Other languages
English (en)
Other versions
JP2008310700A5 (ja
JP5184824B2 (ja
Inventor
Masami Kato
政美 加藤
Takahisa Yamamoto
貴久 山本
Yoshinori Ito
嘉則 伊藤
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 JP2007159491A priority Critical patent/JP5184824B2/ja
Priority to US12/663,687 priority patent/US7937346B2/en
Priority to CN2008800195360A priority patent/CN101681449B/zh
Priority to PCT/JP2008/061081 priority patent/WO2008153194A1/en
Publication of JP2008310700A publication Critical patent/JP2008310700A/ja
Publication of JP2008310700A5 publication Critical patent/JP2008310700A5/ja
Application granted granted Critical
Publication of JP5184824B2 publication Critical patent/JP5184824B2/ja
Expired - Fee Related 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)

Abstract

【課題】CNN演算等の、空間的な配置関係に基く階層的な演算処理を、入力データの分割を行うことなく、少ないメモリで実現可能にする。
【解決手段】入力データに演算を施して演算結果を生成する複数の処理ノードが階層的に接続されたネットワーク演算を実行する演算処理装置は、ネットワーク演算を実現するための、前記複数の処理ノードの各々が実行する所定の処理単位の演算の実行順序を規定したシーケンス情報に基づいて、演算処理を実行すべき処理ノードを順次に指定し、指定された処理ノードによる演算処理を上記処理単位で実行して演算結果を得る。そして、演算処理装置は、複数の処理ノードの各々に対してメモリの部分領域をリングバッファとして割り当て、上記処理単位の演算結果の量に対応したメモリ領域を単位としてデータの書き込み先を循環させながら、上記演算結果をメモリに書き込む。
【選択図】 図1

Description

本発明は、パターン識別装置、パターン識別システムや階層的なフィルタ演算処理装置等に適用される階層的演算処理方法及び装置に関するものである。
パターン識別システムや予測システム・制御システム等への応用として、ニューラルネットワークを利用した信号処理装置が広く利用されている。ニューラルネットワークはマイクロプロセッサ上で動作するソフトウェアとして実現される事が多く、パーソナルコンピュータやワークステーション等のアプリケーションソフトウェアとして提供されている。
図2は一般的な階層結合型ニューラルネットワークを利用する画像処理装置の概念的な構成例を示す図である。21は検出対象としての、例えば、ラスタスキャンされた画像データである。演算ユニット22は、3階層のニューラルネットワークで構成され、画像データ21の中から所定の物体を検出する演算ユニットである。23は演算結果に相当する出力データ面である。演算ユニット22は、画像データ21内の所定の画像領域24を走査参照しながら処理を行う事で、画像データ21の中に存在する検出対象を検出する。出力データ面23は検出対象の画像データ21と同じサイズのデータ面であり、演算ユニット22が画像データ21の全ての領域を走査しながら処理することにより得られた検出出力が走査順に格納すされる。演算ユニット22は対象物が検出された位置で大きな値を出力する事から、当該出力データ面23を走査する事で対象物の画像面内の位置を把握する事ができる。
演算ユニット22において、25,26、27は夫々ニューラルネットワークの階層を示し、各階層に所定の数のニューロン28が存在する。第1階層25は参照画像の画素数と同じ数のニューロン28を有する。各ニューロンは所定の重み係数でフィードフォワード結合される。
図3は1つのニューロン28の構成を示す図である。in_1〜in_nはニューロンの入力値であり、第2階層以降では、前階層ニューロンの出力値である。乗算器31a、31b…31nは、学習によって得られた係数w_1〜w_nを各前階層ニューロンの出力値に乗じた結果を出力する。累積加算器32は、乗算器31a、31b…31nからの乗算結果を累積加算する。非線形変換処理部33は、累積加算器32からの累積加算結果を、ロジスティック関数や双曲正接関数(tanh関数)等により非線形変換し、その変換結果を検出結果outとして出力する。この種の階層型ニューラルネットワークにおいて、夫々のニューロンに必要な重み係数w_1〜w_nは、一般的に知られているバックプロパゲーション等の学習アルゴリズムを使用して、検出する対象物毎に決定されている。
このような階層結合型ニューラルネットワークを組み込み機器等へ高性能かつ安価に実装する事を目的として、アナログハードウェアやディジタルハードウェアで階層結合型ニューラルネットワークを実現する手法が提案されている。
例えば、特許文献1では、単層のアナログニューラルネットワークハードウェアを時分割多重利用する事で多層化を実現する階層構造ニューラルネットのアーキテクチャが開示されている。又、特許文献2ではディジタルハードウェアにより実現する方法が開示されている。一方、ニューラルネットワークの中でもConvolutional Neural Networks(以下CNNと略記する)と呼ばれる演算手法は、識別対象の変動に対して頑健なパターン認識を可能にする手法として知られている。例えば、特許文献3及び特許文献4では画像中の対象物識別や検出に適用した例が提案されている。
図4は簡単なCNNの例を示す論理的なネットワーク構成図である。ここでは、第1階層406の特徴数が3、第2階層410の特徴数が2、第3階層411の特徴数が1の3階層CNNの例を示している。401は画像データであり、ラスタスキャンされた画像データに相当する。画像データ401はCNN演算への入力データである。403a〜403cは第1階層406の特徴面を示す。特徴面とは、所定の特徴抽出フィルタ(コンボリューション演算の累積和及び非線形処理)で前階層のデータを走査しながら演算して得られた処理結果を示す画像データ面である。特徴面はラスタスキャンされた画像データに対する検出結果であるため、検出結果も面で表される。特徴面403a〜403cは画像データ401から夫々対応する特徴抽出フィルタにより生成される。例えば、特徴面403a〜403cは、夫々2次元のコンボリューションフィルタ404a〜404cの演算結果を非線形変換することにより生成される。なお、402は、コンボリューションフィルタ404a〜404cのコンボリューション演算に必要な参照画像領域を示す。
例えば、カーネルサイズ(水平方向の長さと垂直方向の高さ)が11×11のコンボリューションフィルタ演算は以下に示すような積和演算により処理される。
Figure 2008310700
ここで、
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〜409eに相当する3つのコンボリューションフィルタの演算結果が累積加算される。つまり、特徴面407aは、コンボリューションフィルタ409a〜409cの出力を累積加算し、最後に非線形変換処理する事によって得る。
ここで、コンボリューションフィルタ409a〜409eは何れも異なるフィルタ係数のコンボリューションカーネルである。またコンボリューションフィルタ409a〜409cと、コンボリューションフィルタ409d〜409eは図示するように異なるカーネルサイズを有する。各コンボリューションフィルタの累積加算及び非線形変換処理の基本的構成は図3に示すニューロンの構成と同じである。即ち、コンボリューションカーネルの係数が重み係数w_1〜w_nに相当する。特徴面407a、407b、408の様に複数の前階層特徴面と結合される場合、複数のコンボリューションカーネル演算結果は累積加算器32で蓄積される事になる。即ち、総結合数はコンボリューションカーネルサイズ×前階層の特徴数に相当する。
図5はCNN演算における図形検出処理の一例を説明する図である。51a〜51cは第1階層の特徴抽出対象を模式的に示す図であり、それぞれ水平方向のエッジ及び斜め方向のエッジを抽出する様に学習されたコンボリューションカーネルである。52a、52bは複数の第1階層の特徴抽出結果とその空間的な配置関係から決定される図形である。53は最終的に抽出する図形を示している。なお、図形53は複数の第2階層特徴抽出結果とその空間配置関係から決定される。また、コンボリューションカーネルの各フィルタ係数は特徴毎にパーセプトロン学習やバックプロパゲーション学習等の一般的な手法を用いて予め学習により決定されているものとする。物体の検出や認識等においては、10×10以上の大きなサイズのフィルタカーネルを使用する事が多い。また、一般的に特徴毎にコンボリューションカーネルのサイズは異なる。
このように、CNN演算は、特徴抽出毎に画像面単位で結果を保持しながら階層的に結合する事で、プリミティブな特徴とその空間的な配置関係に基づく頑健なパターン検出を実現する。
特許第2679730号明細書 特開平3−55658号公報 特開平10−021406号公報 特開2002−358500号公報
図2で説明した様に、一般的な階層型ニューラルネットワークを利用した画像中の物体検出装置において、演算処理に必要なメモリサイズは、入出力画像バッファを除くと、各ニューロン出力を保持するためのバッファメモリがあれば十分である。即ち、ニューロン数と等価な数の所定ビット数のメモリがあれば所望の演算処理を実行できる。
一方、CNN演算の場合、前階層の複数の特徴抽出結果の空間的配置に基いて特徴抽出が行われるため、各階層間で所定サイズのデータバッファが必要になる。例えば、図4に例示したCNN演算の構成の場合、5個の特徴面403a〜403c、407a〜407b(バッファメモリ)が必要になる。すなわち、入出力画像バッファのほかに、画像サイズ×5の容量のメモリサイズが必要となり、一般的な階層型ニューラルネットに比べ処理に必要なメモリサイズが増大する。
特許文献3及び特許文献4に開示されている手法も特徴抽出結果を画像面で保持する手法であり、上記と同様に、処理に必要なメモリサイズは一般的な階層型ニューラルネットワークによる方式に比べて大きくなる。
その結果、特に、ハードウェアにより上述のようなCNN演算構成を実現する場合、LSIの内部にサイズの大きいRAM(Random Access Memory)を用意する必要が生じることになり、回路規模が増大してしまう。また、CNN演算構成をソフトウェアにより実現する場合であっても、組み込み機器に実装する場合、システムに必要なメモリ量が増大する事で同様にコストが上昇する。
一方、メモリの増大を避ける手法として、入力するデータを領域分割して投入する方法が利用されている。しかしながら、参照領域が広い演算を階層的に処理する場合、入力するデータを広い範囲でオーバーラップさせて分割投入する必要があるため、処理対象領域が増加し、処理速度が低下する。
本発明はこのような問題点を解決するためになされたものであり、CNN演算等の、空間的な配置関係に基く階層的な演算処理を、入力データの分割を行うことなく、少ないメモリで実現可能にすることを目的とする。
上記の目的を達成するための本発明の一態様による演算処理装置は、
入力データに演算処理を施す論理的な複数の処理ノードが階層的に接続されたネットワーク演算を実行する演算処理装置であって、
前記複数の処理ノードの各々が実行する予め定められた処理単位の演算の実行順序を規定したシーケンス情報に基づいて、前記複数の処理ノードから、演算処理を実行すべき処理ノードを順次に指定する指定手段と、
前記指定手段で指定された処理ノードによる演算処理を前記処理単位で実行して演算結果を得る実行手段と、
前記複数の処理ノードの各々に対してメモリの部分領域をリングバッファとして割り当て、前記処理単位の演算結果の量に対応したメモリ領域を単位としてデータの書き込み先を循環させながら、前記実行手段によって得られた各処理ノードの演算結果を対応するリングバッファに書き込むメモリ制御手段とを備える。
また、上記の目的を達成するための本発明の他の態様による演算処理方法は、
入力データに演算処理を施す論理的な複数の処理ノードが階層的に接続されたネットワーク演算を実行する演算処理装置の制御方法であって、
前記複数の処理ノードの各々が実行する予め定められた処理単位の演算の実行順序を規定したシーケンス情報に基づいて、前記複数の処理ノードから、演算処理を実行すべき処理ノードを順次に指定する指定工程と、
前記指定工程で指定された処理ノードによる演算処理を前記処理単位で実行して演算結果を得る実行工程と、
前記複数の処理ノードの各々に対してメモリの部分領域をリングバッファとして割り当て、前記処理単位の演算結果の量に対応したメモリ領域を単位としてデータの書き込み先を循環させながら、前記実行工程によって得られた各処理ノードの演算結果を対応するリングバッファに書き込むメモリ制御工程とを備える。
本発明によれば、中間演算結果を介して演算部を階層的に接続する多階層のネットワーク演算を少ないメモリで高速に処理する事が可能になる。
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
<第1実施形態>
第1実施形態の動作の詳細について図1、図6、図7、図8を用いて説明する。
図6は第1実施形態による階層的演算処理回路を具備した画像処理装置(本実施形態ではパターン検出装置として用いられる)の構成例を示すブロック図である。当該パターン検出装置は画像データ中の特定の物体(画像パターン)を検出する機能を有する。
図6において、61は画像入力部であり、光学系、CCD(Charge-CoupledDevices)又はCMOS(Complimentary Metal Oxide Semiconductor)センサ等の光電変換デバイスを具備する。さらに、画像入力部61は、光電変換デバイスを制御するドライバ回路、ADコンバータ、各種画像補正を司る信号処理回路、フレームバッファ等を有する。62は前処理部であり、検出処理を効果的に行うための各種前処理を行う。具体的には、前処理部62は、色変換処理/コントラスト補正処理等の画像データ変換をハードウェアで処理する。CNN処理部63は階層的演算処理回路を含み、特徴検出処理部として機能する。CNN処理部63の詳細は図1を用いて後述する。
66はDMAC(Direct Memory Access Controller)であり、画像バス64上の各処理部間及び画像バス64上のデバイスとCPUバス67上のRAM70との間のデータ転送を司る。65はブリッジであり、画像バス64とCPUバス67とのブリッジ機能を提供する。68はCPUであり、本装置全体の動作を制御する。69はROM(ReadOnly Memory)であり、CPU68の動作を規定する命令や各種演算に必要なパラメータデータを格納する。例えば、CNN処理部63の動作に必要な重み係数、ネットワーク結合情報、シーケンス情報等がROM69に格納される。RAM70はCPU68の動作に必要なメモリ(RAM:RandomAccess Memory)である。RAM70はDRAM(Dynamic RAM)等の比較的容量の大きいメモリで構成される。CPU68はブリッジ65を介して画像バス64上の各種処理部にアクセスする事が可能である。図6に示されるように画像バス64とCPUバス67とを分離する事で、ハードウェアによる画像入力部61、前処理部62、CNN処理部63の各処理部とCPU68とは同時に動作することが可能である。
図1はCNN処理部63の詳細な構成を示すブロック図である。CNN処理部63は、所定の条件に従って、時分割で論理的な処理ノード(後述)に対応する演算を実行する事でCNNネットワーク全体の演算を処理する。
図1において、101は演算部であり、所定のデータ群に対してコンボリューション演算と非線形処理とを実行する。図12は演算部101のより具体的な構成例を示す図である。図12において、乗算器1201は、カーネル選択信号に従って係数選択部1204が選択し出力する重み係数と、同期して入力される入力データとを乗じる。累積加算器1202は、乗算器1201の出力を、前段に接続された処理ノードの数だけ累積する。非線形変換処理部1203は、ロジスティック関数やtanh関数を用いて、累積加算器1202による累積加算結果を非線形変換する。なお、非線形変換は、各入力値に対する所定の関数値を列挙する関数テーブルで実現されてもよい。重み係数記憶部1205は、検出対象に応じた複数の重み係数データを格納する。重み係数記憶部1205はRAM等により構成される。係数選択部1204は、ネットワーク構成管理部108からの選択信号に従って、対応する重み係数を重み係数記憶部1205から順次読み出す。
本実施形態において、演算部101は論理的な処理ノードに対応してライン単位で時分割処理を行う。図22はライン単位で演算部101が処理を実行する場合の様子を模式的に説明する図である。
図22において、2201は演算対象データ面(参照データ面)を表している。演算対象画像2201内の模式的に示された最小一升が、ラスタスキャン順で表わされた入力画像の画素又は前階層の処理ノードでの演算結果画素(input(x,y)、x:水平方向位置、y:垂直方向位置)を示す。また、2202は演算結果画像を表している。演算結果画像2202内の模式的に示された最小一升が、ラスタスキャン順の演算結果画素(output(x,y)、x:水平方向位置、y:垂直方向位置)を表している。
演算対象画像2201における太線内の領域2203はoutput(6,7)位置のコンボリューション演算を処理する場合の参照データの領域を示す。2203はコンボリューションカーネルのサイズが水平方向「11」、垂直方向「13」の場合を示している。
演算結果画像2202における太線内の領域2204は、演算対象画像2201に対してライン単位の演算(水平方向1行分の演算)を行った結果が格納された領域を示す。領域2204内の格子状の網掛け領域(左右の端の5画素)は、コンボリューションカーネルのサイズに依存して発生する周辺領域(演算が行われない領域)の画素である。階層的処理においてこの周辺領域をどう扱うか(削除するか、デフォルト値を埋め込むか等)は、本発明において本質的でなく、周知のどのような手法を適用してもかまわないが、ここでは例えば、デフォルト値を埋め込むとする。
図22から明らかなように、単位演算(水平方向1行分の演算)を行う場合には、演算対象画像2201のうちの、少なくとも、網掛けにより示した領域2205のサイズの領域が必要となる。ここで、領域2205の水平方向サイズは演算対象画像と同じサイズ、垂直方向サイズはコンボリューションカーネルの垂直方向サイズとなる。領域2204の演算結果データを得る単位演算を、単位演算対象画像領域をずらしながら行うことで、演算対象画像2201の全領域にわたって1つのコンボリューション演算を行うことができる。尚、以下では、演算結果画素、演算結果画像及び演算結果データを総称して演算結果と記載する。
図1に戻り、102はメモリであり、RAMにより構成され、入力画像/中間層の特徴抽出結果/最終検出結果等を格納する。メモリ102はコンボリューション演算を高速に実行するため、高速にランダムアクセス可能なSRAM(Static RAM)を使用することが好ましい。
103はメモリアクセス制御部であり、メモリ102に対するアドレスの生成、リード/ライト信号制御、及びデータバスの方向制御等を司る。メモリアクセス制御部103はリングバッファ設定部104-1〜104-nの出力に従ってメモリにアクセスする。
104-1〜104-nは、CNN演算の論理的な処理ノード毎に独立してメモリ102をリングバッファとして利用するためのリングバッファ設定部である。以下、リングバッファ設定部の任意の一つを指す場合は、リングバッファ設定部104と記載する。リングバッファ設定部104は、リングバッファのサイズを指定するリングサイズ設定部106、リングバッファの動作状況を保持するリングカウンタ105及びメモリ102上の物理アドレスを決定するためのオフセットアドレス設定部107等を具備する。リングバッファ設定部104-1〜-nからの出力であるリングカウンタ値、オフセットアドレス値は、それぞれセレクタ1121、1122で選択される。
108はネットワーク構成管理部であり、1つの演算部101を利用して論理的な階層ネットワーク処理を実現するための構成とその動作を決定する。ネットワーク構成情報設定部110は、階層ネットワークの論理的な階層結合関係を指定する構成情報をテーブルデータ(構成情報テーブル)として保持する。この構成情報テーブルはレジスタやRAMで構成される。ネットワーク構成管理部108は、この構成情報テーブルに従ってメモリアクセス制御部103や演算部101の動作を制御するシーケンサを内蔵する。後述するシーケンス制御部109はライン単位のシーケンス制御を司るが、ネットワーク構成管理部108のシーケンサは論理的な処理ノードが1ライン分の演算を処理するためのシーケンスを制御する。
109はシーケンス制御部であり、シーケンス情報設定部111に記述されたシーケンス情報に従って、所定の演算処理単位での演算処理順を制御する。図22によって上述したように、本実施形態における所定の演算処理単位とは、水平方向1行分である。よって、シーケンス制御部109は、例えばライン単位で論理的な処理ノードを切り替えながら、複数の処理ノードの処理を時分割で実行するための処理順を制御する。シーケンス情報設定部111はシーケンス情報を保持するRAM等により構成される。
113はCPUバスアクセス制御部であり、CPU68がCNN処理部63内の各種レジスタやメモリにアクセスするためのバスインターフェースである。CNN処理部63内の各種設定データは当該インターフェースを介してCPU68によって書き込まれる。ここで、書き込まれる設定データとしては、リングサイズ設定部106内のバッファサイズ、ネットワーク構成情報設定部110内の構成情報テーブル、シーケンス情報設定部111内のシーケンス情報が挙げられる。また、演算部101内の重み係数記憶部1205(図12)への重み係数の設定も行われる。
図7は本実施形態で実現するCNNネットワークとバッファメモリの関係を説明する図である。図7は図4で説明したCNNネットワークを本実施形態のCNN処理部63に適用した場合の例を説明する図である。
図7において、701は入力層であり、所定サイズの検出対象画像データである。703a〜703cは第1階層706の演算出力である特徴面を格納するリングバッファを表す。また、図7において、リングバッファ703a〜703cの大きさは、それぞれの特徴面を格納するために割り当てられたメモリの部分領域の大きさに対応している。すなわち、入力層701に対するコンボリューションカーネル704a〜704c(コンボリューション演算及び非線形変換)による演算結果である特徴面が夫々独立したサイズを有する、メモリの部分領域(リングバッファ703a〜703c)に格納される。後述するように、この部分領域はリングバッファとして制御される。第1階層706の演算結果である特徴面は論理的には入力層701と同じサイズのデータ面となるが、ここでは所定高さのリングバッファ703a及び703bに格納される。これらのリングバッファは、幅が入力画像と同じであり、ライン単位で循環するバンドバッファである。
図13は本実施形態のリングバッファの動作を模式的に説明する図である。ここでは説明のためリングバッファの高さ(循環数)を6とする。また、L1〜L8でラスタスキャン順に入力される8ライン分の画像データ1300を6ライン分のリングバッファで参照する場合の例を説明する。1301はリングバッファに6ライン分のデータが充填された状態を表す。この場合、リングカウンタ105は0〜5の値を循環し、格納状態1301の場合、リングカウンタ105の値は「5」となる。次の処理単位ではリングバッファの先頭行にL7が充填され、リングカウンタ105は0となる。この場合、格納状態1302となり、L2〜L7を参照する事が可能になる。更に次の処理単位では、2行目位置にL8が充填され、リングカウンタ105は1となる。この場合、格納状態1303となり、L3〜L8を参照する事が可能になる。このように、リングバッファは、予め定められた処理単位の演算を処理ノードが実行して得られる演算結果の量に対応したメモリ領域を単位として循環する。すなわち、リングカウンタ105には、演算結果データの書き込み先を示すための循環位置が保持される。そして、このようなリングカウンタ105をネットワーク演算を構成する複数の処理ノードのそれぞれに関して設けることで、処理ノード毎に演算結果データの書き込み先を示す循環位置が保持される。
本実施形態において、リングバッファの高さ(循環数)は、後段に結合する全てのコンボリューションカーネルのサイズによって決定される。例えばリングバッファ703aの場合、コンボリューションカーネル709aと709dの高さ(垂直方向サイズ)のうち大きい値をリングバッファ高さとする。同様にリングバッファ703b、703cの高さは、夫々コンボリューションカーネル709b/709e、709c/709fのカーネルサイズから決定される。
また、第2階層710の演算結果である特徴面を格納するためのリングバッファ707a、707bでは、夫々コンボリューションカーネル712a、712bの高さがリングバッファの高さとなる。なお、リングバッファ703cのサイズは、カーネルサイズによって規定されてもよいが、本実施形態では、CPU68が判定処理に使用する特徴検出データであるため、入力画像データと同じサイズのバッファが割り当てられている。CPU68は、バッファ713に格納された最終階層711の特徴面及びリングバッファ703cに保持された第1階層706の特徴面を参照して検出対象画像の存在を判定する。
この様に、本実施形態では、中間層の特徴面を保持するリングバッファ703a、703b、703c,707a、707bをネットワークの結合状態及び目的に応じて夫々異なるサイズのメモリ領域にアサインする。これにより、CNNネットワークを実現する際に必要なメモリ量を最小化する。
以下、図8に示すフローチャートを用いて本実施形態の動作を詳細に説明する。図8では、CPU68の動作とCNN処理部63の動作が1つのフローチャート上に記述されている。図8中「CNN処理部動作」と明記したフロー(ステップS811〜S820)がCNN処理部63の動作を示す。
まず、ステップS801において、検出処理の開始に先立ち、CPU68が各種初期化処理を実行する。各処理部はCPU68の初期化指示に従って内部のレジスタ・メモリ等を初期化する。
次にステップS802で、検出する対象(検出対象画像データ)が選択される。ここでは、予め用意されている検出対象から所望の検出対象が選択される。本実施形態のCNN処理部63では、コンボリューションカーネルの重み係数、シーケンス情報、ネットワーク構成情報等を入れ替える事で、同一のハードウェアで様々なCNNを構成し、様々な検出対象に対応する。
以降、CPU68はブリッジ65及び画像バス64を介してCNN処理部63にアクセスし、CPUバスアクセス制御部113を介して所定のレジスタやメモリにデータを設定する。検出対象が決定されると、ステップS803において、CPU68は、決定された検出対象に応じた重み係数を演算部101内の重み係数記憶部1205に設定する。なお、重み係数は、検出対象毎に、学習によって生成されたコンボリューションカーネルの係数データである。
ステップS804において、CPU68は、ネットワーク構成管理部108のネットワーク構成情報設定部110にネットワーク構成情報を設定する。ネットワーク構成情報はネットワークの結合関係を指定する構成情報テーブルである。尚、ネットワーク構成情報も重み係数と同様に検出対象に応じて異なるデータが設定される。
図9はネットワーク構成情報(ネットワーク構成情報テーブル)のデータ構成例を示す図である。図9において、「指定処理ノード」は図7に示す論理的なネットワークの処理ノードに対応し、第1処理ノード〜第6処理ノードはそれぞれ特徴面を算出する論理的な処理ノードである。第1処理ノード〜第6処理ノードにより算出された特徴面は、それぞれリングバッファ703a〜703c、707a〜707b、713に格納される。論理的な処理ノードとは、演算部101を時分割利用する事により実現する論理的な演算処理単位である。図9に示すネットワークは図14に示す論理的なネットワーク構造で表現する事が出来る。ここで第0処理ノードは入力画像データ面に対応する処理ノードであり、実際には演算は実行しない。
「接続ノード数」は処理ノードが演算時に必要とする下位層の接続数を示す。例えば第4処理ノードの場合、3つの下位層に接続する。ネットワーク構成管理部108の内部シーケンサは当該接続数に応じてメモリアクセスと演算を制御する。
「隣接下層処理ノード」は処理ノードの演算時に必要とする下位層の処理ノード(前段に接続される処理ノード)を指定する情報である。例えば第4処理ノードの場合、第1処理ノード、第2処理ノード、第3処理ノードに接続される。つまり、第4処理ノードの演算時には、第1〜3処理ノードの演算結果(リングバッファ703a〜703cに保持された特徴面)が参照データとして使用される。
「演算種別」は実行する演算の種別を示す情報であり、CNN演算の場合、演算種別に応じて重み係数が選択される。演算部101が図12に示す構成の場合、「演算種別」に記述された演算種別番号が重み係数を選択するための「カーネル選択信号」に相当する。なお、CNN処理の場合、処理ノード毎に異なる演算(異なる重み係数のコンボリューション演算)が実行される。
また、図9のネットワーク構成情報テーブルにおいて、「参照データ幅」は「演算種別」に対応するコンボリューションカーネルの幅に相当し、「参照データ高さ」は「演算種別」に対応するコンボリューションカーネルの高さに相当する。
次に、ステップS805において、CPU68は、シーケンス制御部109のシーケンス情報設定部111にシーケンス情報を設定する。シーケンス情報は時分割処理する演算処理単位(本実施形態ではライン単位)のシーケンス動作を規定するテーブル情報である。図10にシーケンス情報テーブルのデータ構成例を示す。「シーケンス番号」はライン単位で更新するシーケンス番号、「処理ノード番号」はシーケンス番号に対応する論理的な実行処理ノードを示す。即ち、シーケンス番号1では処理ノード1に対して演算処理を実行し、シーケンス番号2では処理ノード2に対して処理を実行する。各処理ノードでは、1回の実行指示により、例えば1ラインを処理単位とした演算(コンボリューション演算+非線形変換)が実行される。従って、シーケンス情報には、複数の処理ノードによる、予め定められた処理単位の演算の実行順序が規定されていることになる。そして、本実施形態では、入力データは2次元の画像データであり、予め定められた処理単位の演算処理として、当該画像データの水平方向の1ラインの演算処理を実行する。その結果、1つのシーケンス番号に対応した演算処理では、水平方向の1ライン分の演算結果が取得され、メモリ102の当該処理ノードに対応する部分領域にその演算結果が保持されることになる。そして、メモリ102には、1ライン分のメモリ領域を単位としてデータの書き込み先を循環するリングバッファが、それぞれの処理ノードに対応して割り当てられた部分領域に形成される。
次にステップS806〜S807において、CPU68は、リングバッファの動作に必要な情報を設定する。本実施形態において、CPU68は、メモリ102へのバンドバッファの割り当て、各バンドバッファの高さ(リングバッファの循環数)を、ネットワーク演算における複数の処理ノードの論理的な接続状態に基づいて決定する。すなわち、CPU68は、リングバッファの動作に必要な情報を、論理的な処理ノードの数に対応する数のレジスタセット(リングバッファ設定部104)に設定する。図9のネットワーク構成情報テーブルによって示されるネットワーク構造の場合、6個のリングバッファ設定部(104-1〜104−6)に所定の値が設定される。リングサイズ設定部106には、対応する論理的な処理ノードのリングバッファの高さ(リングカウンタの循環数)が設定される。オフセットアドレス設定部107には、対応する処理ノードのリングバッファ先頭アドレスが設定される。図11は図7に示すネットワークを実現する場合の処理ノードとオフセットアドレス及びリングバッファ(バンドバッファ)の高さの関係を示すメモリマップである。ADRx(x:0〜6)がオフセットアドレス、BHx(x:0〜2)がリングバッファの高さに相当する(実際の設定値は「高さ-1」)。また、WIDTHは画像データの幅を示す。尚、第0処理ノードは入力画像データを保持するフレームバッファ領域である。
本実施形態では、このようにメモリ102を複数の領域に分割して、各領域をサイズの異なるリングバッファ或いはフレームバッファとして利用する。例えば、図7に示す演算処理の場合、第1処理ノードと第2処理ノードがBH1、第0処理ノードと第3処理ノードと第6処理ノードがBH0、第4処理ノードと第5処理ノードがBH2である。BH0はフレームメモリに相当する高さである(即ち、入力画像データの高さと同じ)。すなわち、処理ノードに割り当てられるリングバッファの循環数は、当該処理ノードの後段に接続されている処理ノードが所定の処理単位の演算を実行する際に参照する参照データのサイズに基づいて決定される。以上のように、ステップS806では、実行すべきネットワーク演算における、各処理ノードの演算処理内容や処理ノードの階層的な接続関係に応じてリングバッファが構成される。
各種設定を終了すると処理はステップS808に進む。ステップS808において、CPU68は、画像入力部61、前処理部62、CNN処理部63に対して処理(演算)の開始を指示する。ステップS809において、CPU68から処理の開始が指示された画像入力部61は、1フレーム分の画像データを取得し、図示しない内部バッファに格納する。格納を終了するとCPU68に対して画像取得終了割り込みを発生する。ステップS810において、CPU68は割り込みを検知すると、DMAC66を起動して、ステップS809で取得した画像データを前処理部62の内部メモリ(図示しない)に転送する。前処理部62は画像データの転送が終了すると、前処理を開始する。前処理部62は、例えば、予め指定されているコントラスト補正情報に従って当該画像データのコントラストを補正する。前処理部62は補正処理を終了するとCPU68に対して割り込みを発生する。CPU68は割り込みを検知するとDMAC66を起動し、補正された画像データをCNN処理部63内のメモリ102に転送する。CNN処理部63は補正後画像データのメモリ102への転送を終了すると検出処理を開始する。
以下、ステップS811〜S820はCNN処理部63のハードウェア処理に関する処理のフローである。
先ず、ステップS811において、シーケンス制御部109は、演算を実行すべき処理ノードを決定する。シーケンス制御部109は、シーケンス情報設定部111に保持されたシーケンス情報テーブルに従って処理ノードを決定する。例えば、図10に示すシーケンス情報テーブルの場合、初回のシーケンスでは処理ノード番号1を選択する。シーケンス制御部109はシーケンス回数をカウントするシーケンスカウンタを有し、シーケンス単位(この場合ライン単位の処理毎)でカウントアップする。シーケンス制御部109は、シーケンスカウンタをアドレスとして、図10の如きシーケンス情報テーブルを参照する事で処理対象の処理ノードを決定する。
ステップS812では、処理対象となった処理ノードの演算に必要な参照データがメモリ102から読み出され、演算部101に設定される。
先ず、ネットワーク構成管理部108は、シーケンス制御部109の出力するシーケンス指示情報に従って参照データに対応するリングバッファ設定部を、リングバッファ設定部104-1〜104-nより選択する。例えば、ステップS811で第1処理ノードが選択された場合、図9に示すネットワーク構成情報テーブルの内容に従って、「接続ノード数が1」「接続先ノードが第0処理ノード」「演算種別1」が決定される。ネットワーク構成管理部108は、ネットワーク構成情報テーブルの内容に従ってノード選択信号を出力し、参照データに対応するリングバッファ設定部104の出力を選択する。この場合、第0処理ノードに対応する選択信号が出力される。選択されたリングバッファ設定部104の情報に従って、メモリアクセス制御部103は読み出すメモリの先頭アドレスを生成する。
図16はメモリアクセス制御部103の内部を説明する図である。1601は制御部であり、ネットワーク構成管理部108の出力する動作制御信号に従って各処理部への信号及びメモリ102に対するメモリ制御信号を生成する。メモリ制御信号は、例えば、メモリ102に対するリード/ライト信号である。1602は列カウンタであり、行方向(列位置)の画素数をカウントする。1607はウインドウカウンタであり、列番号方向(水平方向)に連続する複数の参照画素を取り出す場合の参照ウインドウ幅(図15の1502)に対応したカウンタである。この参照ウインドウ幅は、コンボリューションカーネルの幅に相当する。ウインドウカウンタ1607は、参照ウインドウ幅分の画素数をカウントすると、当該参照ウインドウ幅の次の行の画素を指すようにカウント値が更新される。従って、列カウンタ1602と、ウインドウカウンタ1607と、アドレス変換部1605が生成する行先頭アドレスの値を加算器1603で加算する事で1行分のデータにアクセスするためのアドレス(行を指定するためのアドレス)が生成される。
なお、列カウンタ1602、ウインドウカウンタ1607には、ネットワーク構成管理部108が保持するネットワーク構成情報テーブル(図9)の内容に従って演算種別の変更毎にカウント数が設定される。
双方向制御部1604は、メモリ102との間のデータバスの双方向制御を司るバッファであり、制御部1601の出力するバッファ制御信号に従って方向制御を実行する。参照データキャッシュ1606は、コンボリューション演算に必要な参照データを一時的に保持するキャッシュメモリである。上述のアドレス変換結果に基づいてメモリ102から読み出された参照データは、参照データキャッシュ1606に格納される。制御部1601は、ウインドウカウンタ1607を更新しながら参照データキャッシュ1606を制御する事で、列番号方向(水平方向)に連続する参照データをキャッシュする。そして、演算部101は該キャッシュに格納された参照データを順次読み出しながらコンボリューション演算を実行する。
図15はメモリアクセス制御部103の参照データ読み出し動作を説明する図である。以下図16及び図15を用いてメモリアクセス制御部103の動作についてより具体的に説明する。
図15に於いて1501はある処理ノードに割り当てられたリングバッファ(ライン単位で循環利用するバンドバッファ)である。また、1502は演算するコンボリューションカーネルの参照ウインドウに相当する大きさを示す。更に、1503はコンボリューションカーネルの重み係数列セットを示す。ここではコンボリューションカーネルサイズが6×6の場合について説明する。重み系数列セット1503において、W00〜W05は1行目のデータ列に対する重み系数列、W10〜W15は2行目のデータ列に対する重み係数列であり、以下同様に各データ列に対する重み係数列が示されている。コンボリューション演算時は当該係数値と対応する位置の参照データの積和演算処理を実行する。
WIDTHは特徴面の幅(即ち本実施形態の場合、入力画像データの幅に相当)、L3〜L8は特徴面の3行目から8行目のラインデータであることを示す。またA1〜A6は夫々対応するラインのバンドバッファ上の先頭メモリアドレスとする。
メモリアクセス制御部103のアドレス変換部1605は、セレクタ1121,1122によって選択されたリングカウンタ105のリングカウンタ値とオフセットアドレス設定部107のオフセットアドレス値から、参照データの先頭アドレスを算出する。ここで「オフセットアドレス値」は、図15のA1に相当する。リングカウンタ値は現在までの最終処理ラインが保持されている行を示すポインタである。例えば、リングカウンタ値が1で、フィルタカーネル(=コンボリューションカーネル)の高さが6の場合、参照するデータの先頭ラインはA3で示すラインとなる。先頭アドレスが決定されると、制御部1601は、ウインドウカウンタ1607の値を更新しながらメモリアドレスを出力し、L3ラインの連続する参照データをメモリ102から読み出す。即ち、ウインドウカウンタ1607は、列番号方向(水平方向)に連続する参照データを取り出すためのカウンタとして動作する。尚、ウインドウカウンタ1607には参照領域の幅に対応する値(実際には幅−1)がカウントアップデータとしてロードされているものとする。ここでは、列番号方向に6個の連続するデータが読み出され、読み出されたデータは参照データキャッシュ1606に格納される。データの読み出しが完了する(即ち参照領域の幅に対応するカウント動作を終了すると)と、ウインドウカウンタは次の行の0番目の画素を指すように初期化される。次にアドレス変換部1605からのアドレス値と列カウンタ及びウインドウカウンタのカウント値により、A4のアドレスが成され、上記と同様に、参照領域におけるL4ラインの参照データが参照データキャッシュ1606に格納される。以降L5〜L8迄の参照データを順次に参照データキャッシュ1606に格納する。即ち、メモリアクセス制御部103は、リングカウンタ値を基にリングバッファ上の先頭行を把握し、各行の参照領域幅分の参照データを参照データキャッシュ1606に格納する。
ここで、参照される各行の先頭アドレスは、例えば、以下の演算式に基づいて算出する事が可能である。以下の式に対して、参照ライン毎にnを0から(フィルタカーネルの高さ−1)まで順次インクリメントする事で参照ラインの先頭アドレスを取得する。
Address(n)
=OffsetAddress
+(mod(RingCtr−(FilterHeight−1)+RingHeight+n,RingHeight))×WIDTH
ここで、
Address(n):nライン目の参照データ行先頭アドレス、
n:ライン番号昇順、
OffsetAddress:オフセットアドレス値(A1に相当するアドレス)、
RingCtr:リングカウンタ出力値、
RingHeight:リングバッファ高さ、
mod(x,y):xのyに対する剰余、
WIDTH:特徴データの幅、とする。
上記演算式はリングカウンタの値を基準にして、参照ラインのアドレスを演算するための算出法の一例である。図15に示す例の場合、nとアドレスの関係を(n,アドレス)の形式で列挙すると、(0,A3)、(1,A4)、(2,A5)、(3,A6)、(4,A1)(5,A2)となる。即ちリングカウンタが指し示すライン(A2を先頭アドレスとするライン)を最新のアドレスとして、過去のラインをラスタスキャン順に指定する事に相当する。
上述のアドレス変換処理はアドレス変換部1605が実行する。制御部1601がアドレス変換部1605に対して所定のタイミングでnを出力する事で順次先頭アドレスが生成される。なお、参照ラインアドレスの取得法は上記演算式に限るわけではなく、どのような方法でも良い。又、図15の例ではリングバッファの高さとフィルタカーネルの高さが同じ場合の例を示しているが、リングバッファの高さがフィルタカーネルの高さより大きい場合も同様に算出する事が可能である。
図8に戻り、上記のように参照データ群のメモリ102から参照データキャッシュ1606へのキャッシュを終了すると、処理はステップS812からステップS813に進む。ステップS813において、演算部101はコンボリューション演算処理を開始する。すなわち、ネットワーク構成管理部108は、ネットワーク構成情報テーブル(図9)に記録された「演算種別」情報に従って演算部101の重み係数を指定し、演算部101を駆動する。演算部101はメモリアクセス制御部103の参照データキャッシュ1606に格納されている参照データを読み出し、コンボリューション演算処理を実行する。
そして、ステップS814、S815により、全ての接続先処理ノード(隣接下層処理ノード)について実行されたコンボリューション演算の結果が累積加算される。以下、より具体的に説明する。
ステップS815では、CNN処理部63は、接続先処理ノードの数を判定する。例えば、図9に示す例において、処理対象ノードが第4処理ノードの場合、接続先ノード数は3である。この場合、ネットワーク構成情報テーブルの内容に従って第1処理ノードの演算結果、第2処理ノードの演算結果、第3処理ノードの演算結果の夫々に対するコンボリューション演算処理が順次実行され、それら演算処理結果を累積加算器1202に保持される。各処理ノードに対する参照データの読み出しと演算のシーケンスは前述した方法と同じである。即ち、メモリアクセス制御部103は、処理ノード毎に異なるリングカウンタ値、オフセットアドレス等の情報に従って演算対象の参照データ群をメモリ102から参照データキャッシュ1606に読み出す。そして、演算部101は当該キャッシュデータに対してコンボリューション演算を実行する。
全ての接続先ノードに対する演算を終了すると、処理はステップS815からステップS816へ進み、非線形変換処理部1203は累積加算器1202の出力を非線形変換する。次に、ステップS817において、変換結果をメモリ102に格納する。以下、変換結果のメモリ102への格納処理についてより具体的に説明する。
ネットワーク構成管理部108は自身の処理ノードに関するリングバッファ設定部104を選択する。例えば、第1処理ノードを演算している場合、ネットワーク構成管理部108は第1処理ノードに対応するリングバッファ設定部104を選択する。メモリアクセス制御部103は、選択されたリングバッファ設定部104のリングカウンタ105が示す行の次の行を先頭アドレスとしてメモリアドレスを生成する。なお、ライト動作時は制御部1601によって、ウインドウカウンタ1607は0に初期化されている。メモリアクセス制御部103は生成した先頭アドレスに演算結果を書き込む。書き込みを終了すると列カウンタ1602の値を1インクリメントする。列カウンタ1602は1つの演算結果を書き込む毎に1つインクリメントされる。従って、次の処理時は1列分(水平方向に1画素分の位置)だけずれた領域の参照データ群が読み出される。
図17は、以上で説明した演算の様子を、ネットワーク構成管理部108、メモリアクセス制御部103、演算部101別に模式的にタイムチャート化した図である。上段がネットワーク構成管理部108の動作を示し、メモリアクセス制御部103及び演算部101はネットワーク構成管理部108の指示に従って各処理を実行する。
上述したように、ネットワーク構成管理部108は、シーケンス制御部109からのシーケンス制御指示情報に従って処理ノードを選択する(1701)。そして、ネットワーク構成情報テーブルを参照して、接続ノード数を設定する(1702)。続いて、ネットワーク構成管理部108は、選択された処理ノードに関する情報(リングカウンタ値、オフセットアドレス値等)をメモリアクセス制御部103に通知し、参照データの読み出しを指示する(1703)。メモリアクセス制御部103は、通知されたリングカウンタ値、オフセットアドレス値を用いてメモリ102から参照データを読み出し、参照データキャッシュ1606にキャッシュする(1704,1705)。メモリアクセス制御部103による参照データの読み出しが完了すると、ネットワーク構成管理部108は、演算部101に対して、演算の開始を指示する。演算部101は、参照データキャッシュ1606にキャッシュされた参照データを読み出してコンボリューション演算処理を実行する(1706,1707)。演算部101におけるコンボリューション演算処理が完了すると、ネットワーク構成管理部108は、次の処理ノードについて同様の処理(1709〜1713)を繰り返す。隣接する下層の全ての処理ノードについてコンボリューション演算を完了すると、ネットワーク構成管理部108は、演算部101に非線形変換処理を実行させ(1714)、特徴面における1画素の演算結果を得る。この演算結果をメモリ102に格納するために、ネットワーク構成管理部108は、上記処理対象の処理ノードに関する情報(リングカウンタ値、オフセットアドレス値等)をメモリアクセス制御部103に通知し、演算結果の書込みを指示する。メモリアクセス制御部103は、通知されたリングカウンタ値、オフセットアドレス値を用いてメモリ102の、当該処理ノードに対応する部分領域に演算結果を書き込む(1716,1717)。そして、次の画素について上記処理を実行するために、列カウンタを1602をインクリメントする(1718)。以上の1703〜1718の処理を1行分繰り返すことで、特徴面の1行分の演算結果が得られる。
図8に戻り、ステップS812〜S817の処理を1ライン分繰り返し、1ライン分の処理が終了すると、すなわち、予め定められた処理単位の演算を終了すると、処理はステップS818からステップS819へ進む。ステップS819において、ネットワーク構成管理部108は、処理中の演算ノードに対応するリングバッファ設定部104のリングカウンタ105をインクリメントする。リングカウンタ105の更新は1ラインの処理終了毎に行われる。なお、リングカウンタ105は、カウント値がリングサイズ設定部106の値に等しくなった場合は、0に初期化される。つまり、リングカウンタ105は、リングサイズを基準にして循環する。こうして、リングカウンタ105のカウンタ値は、リングバッファにおける演算結果の書込み先のメモリ領域を示すものであり、リングカウンタの循環状態を示すものである。この様に、メモリ102に対するアクセスを論理的な処理ノード毎にリングカウンタ105の動作に伴って処理する事で、メモリ102上の複数の部分領域をサイズ(循環数)の異なる複数のリングバッファとして独立に使用する事になる。即ち、図11で示すメモリマップ上の複数の領域を夫々リングバッファとして利用する事になる。
次に、ステップS820において、CNN処理部63は、全ての処理ノードが演算を終了したか否かを判定する。ここではシーケンス情報テーブル(図10)に記述された全てのシーケンスを終了したか否かを判定する。なお、シーケンス制御部109は図示しないシーケンスカウンタを予め設定されたシーケンス数と比較する事で終了判定を行う。演算が終了していない場合、処理はステップS820からステップS811に戻る。シーケンス制御部109はシーケンスカウンタを更新し、カウンタ値に対応するテーブルを参照する事で次に処理する処理ノード番号を取得する。処理ノードを決定すると、シーケンス指示情報に従ってネットワーク構成管理部108は次の処理ノードに対する処理を開始する。異なる処理ノードを処理する場合も、リングバッファ及び演算に関する各種パラメータが異なるだけであり、前述した処理と同様の動作が繰り返される。
尚、図10に示す様に、演算処理は下位層から順次リングバッファに特徴データを格納しながら処理を進める。図23は図7に示す階層的ネットワークにおけるライン単位の演算処理の進行を模式的に説明する図である。図中、斜線によって塗りつぶした領域がバッファ上の処理済データの量を示す。
先ず、第1階層の特徴面を算出する処理ノード1〜3をライン単位に繰り返し実行し、リングバッファ703a〜703cに結果を充填する(図23の(a)の状態)。第2階層の特徴面を算出するために必要な量(高さ)の結果がリングバッファ703a〜703cに格納されると、処理ノード1〜5がライン単位で繰り返し実行される。リングバッファ703a〜703bは順次リング動作を繰り返し、リングバッファ703cには演算結果が順次格納されていく。更に、リングバッファとしてのリングバッファ707a、707bにも順次演算結果が格納されていく(図23の(b)の状態)。
次に、第3階層の特徴面を算出するために必要な量(高さ)の結果がリングバッファ707a、707bに格納されると、処理ノード1〜6がライン単位に繰り返し実行される。この状態でリングバッファ703a〜703bは順次リング動作を繰り返し、リングバッファ703cには演算結果が順次格納されていく。更に、リングバッファ707a、707bも順次リング動作を繰り返し、バッファ713に最終結果がライン単位で順次格納されていく(図23の(c)の状態)。
以上のシーケンスで下位層からライン単位で処理を進める事で、所望の最終特徴データがバッファ713に、所望の中間データがリングバッファ703cに生成される。
このように論理的な処理ノードをライン単位で切り替えながら時分割で実行することにより、処理ノードの変更に伴うオーバーヘッドの影響が少なく、更に必要なメモリサイズも少なくすることができる。
また、リングバッファを処理ノード毎に独立に制御する事で、任意の中間データをフレームデータとして保持する事も可能である。図23の例では、例えばリングバッファ703cに保持されるデータがそのようなフレームデータに該当する。
以上、ステップS811〜S820の処理を繰り返す事で、所定のCNNネットワークに基づく各特徴面の演算がライン単位で、時分割で実行される。そして、ステップS820で最終の処理ノードが終了したと判定されると、例えば図7のバッファ713には最終的な階層における特徴面の全データが格納されていることになる。また、この時点で、リングバッファ703cには処理ノード3によって算出された特徴面の全データが格納されていることになる。
CNN処理部63は全てのシーケンスを終了すると(S820でYES)、CPU68に対して割り込みを発生する。CPU68はこの割り込みを検知すると、ステップS821において判定処理を開始する。すなわち、CPU68は、DMAC66を起動して特徴検出データ1及び特徴検出データ2(図7)をRAM70に転送する。CPU68はRAM70上の特徴データを利用して対象物の検出状況を判定する。ステップS821の判定処理は、例えば、所定のしきい値で特徴データを2値化しその重心を取得する等の方法で対象物の有無を判定する。例えば、特徴データ1の結果を検出対象の有無を判定するために利用し、特徴データ2を検出対象付近のテクスチャ等を把握するために利用するというように構成することが可能である。
検出対象を変更する場合、処理はステップS822からステップS802に戻り、各種パラメータが再設定される。即ち、ステップS803〜S807で検出対象に応じた重み係数、ネットワーク構成情報、シーケンス情報がそれぞれ更新される。更にステップS806〜S807でリングバッファ設定部104のリングカウンタも新たな重み係数及びネットワーク構成情報に応じて再設定される。これにより、論理的な処理ノードは、検出対象に応じて、メモリ102上の異領域を異なるサイズのリングバッファとして利用し、処理を行う。即ち、検出対象に対応したCNNのための図11に示すメモリマップが構成される。このように、本実施形態によれば、検出対象の変更に応じて変更された、変更後のネットワーク演算における処理ノードの接続構造に基づいて、シーケンス情報が変更されると共に、メモリ102の、処理ノードへの部分領域の割り当てが変更される。
一方、検出対象を変更しない場合、処理はステップS822からステップS823に進む。ステップS823では、処理を終了するか否かが判定され、終了しない場合は、ステップS824に処理が進む。ステップS824、S825において、CNN処理部63は、それぞれのリングバッファ設定部104のリングカウンタ105及びシーケンス制御部109の内部カウンタ等を初期化する。そして、処理はステップS809に戻り、画像データの取得から処理を再開する。即ち次のフレーム画像に対して同じ検出処理が実行される。ステップS823で検出処理の終了が指示された場合は、本処理を終了する。
以上のように、第1実施形態によれば、論理的な処理ノードに毎にリングバッファを制御するリングバッファ設定部104を設け、ネットワーク構成と目的に応じてリングバッファのサイズ(循環数)を設定するように構成した。そして、この構成において、ライン単位に論理的な処理ノードを時分割で実行させながら演算を行うようにしている。そのため、最小のメモリサイズでコンボリューショナルニューラルネットワーク等の階層的な演算処理を高速に処理する事が可能になる。
更に、1つのハードウェア或いはソフトウエアで、様々な結合関係(結合係数のサイズ、結合ネットワーク関係、必要とする中間データ)の多階層のネットワーク演算を少ないメモリで高速に処理する事が出来る。
<第2実施形態>
第1実施形態では全ての論理的な処理ノード毎にリングバッファのサイズを設定可能な構成について説明したが、本発明はこれに限るわけではない。例えば、階層毎にのみリングバッファのサイズが異なるように構成しても良い。すなわち、リングバッファのサイズ(循環数)を、ネットワークにおける処理ノードが属する階層毎に設定可能にしてもよい。第2実施形態ではこのような構成について説明する。
図19は階層毎にリングバッファのサイズを規定する場合のCNN処理部63の構成を示す。図18は図19に示すCNN処理部63で実現するCNNネットワークの構成例を示す図である。図18は階層毎にのみリングバッファのサイズが異なる。即ち、第1階層1806のバッファメモリ1803a〜1803c及び第2階層1810のバッファメモリ1807a〜1807bを、夫々同じサイズのリングバッファで構成する。そのため、図18に示される構成では、図7に示される構成と比較して第1階層の第3特徴のリングバッファサイズが異なる。
以下、第2実施形態では第1実施形態との違いについて説明する。第2実施形態においても、第1実施形態と同様に、CNN処理部63は論理的な処理ノード毎にリングバッファ設定部194-1〜194-nを有する。以下、リングバッファ設定部の任意の一つを指す場合は、リングバッファ設定部194と記載する。リングバッファ設定部194は夫々リングカウンタ105とオフセットアドレス設定部107を有する。また、第2実施形態によるCNN処理部63は、論理的な階層毎に設けられたリングサイズ設定部1961a、1961bを有する。2つのリングサイズ設定部1961a,1961bが設けられた構成では、図18に示されるような階層数が3までの演算に対応することができる。
リングサイズ設定部1961a、1961bは夫々複数のリングバッファ設定部194に接続されているものとする。但し、各リングバッファ設定部には1つのリングサイズ設定部が接続される。即ち、リングバッファ設定部194-1〜194-nがリングサイズ設定部1961a,bによってグルーピングされている。図20にリングサイズ設定部とリングバッファ設定部の関係を図示する。
図18において、第1階層1806のリングバッファの制御に利用されるリングバッファ設定部には、リングサイズ設定部1961aが接続される。また、第2階層1810のリングバッファの制御に利用されるリングバッファ設定部には、リングサイズ設定部1961bが接続される。演算時、処理ノードに対応するリングバッファ設定部194の選択は、ネットワーク構成管理部108が保持するネットワーク構成情報テーブルに従って行われる。
以下、第2実施形態の処理フローに関して、図8を用いて第1実施形態との違いについて説明する。第2実施形態では、ステップS806で、リングサイズ設定部1961a、bへのリングバッファサイズの設定が階層毎に行われる。また、階層毎にグルーピングされたリングバッファ設定部194-1〜194-nの中から、構成するネットワークに対応するリングバッファ設定部が選択され、オフセットアドレスが設定される。なお、リングサイズ設定部1961a、bには、図18に示す論理的なネットワークを構成する場合、第1階層、第2階層のリングバッファ高さに相当する値が設定される。
以降の処理は第1実施形態と同じであるので説明を省略する。図18に示すネットワークを処理する場合、以上の設定でネットワーク構成管理部108が所定の論理処理ノードに対応するリングバッファ設定部をリングバッファ設定部194-1〜194-nより選択しながら処理を進める。こうして、第2実施形態においても、第1実施形態と同様にライン単位で処理が実行されていく。
以上説明した第2実施形態によれば、リングサイズ設定部を構成するレジスタの数を更に削減する事が可能になる。
<第3実施形態>
第1、第2実施形態ではCNN処理部63をハードウェアで実現する場合について説明したが、本発明はCNN処理部63をソフトウェアにより実現する場合にも適用することが可能である。図21は、ソフトウェアで実現する場合の画像処理装置(パターン検出装置)の構成例を示すブロック図である。図21に示す構成は、図6に示す構成からCNN処理部63を取り除き、ランダムアクセス可能な高速メモリ2103(以下、RAM2103)を追加したものであるため、その違いを中心に説明する。
CPU68は、ステップS810における前処理部62の処理の終了割り込みを受け付けると、DMAC66を起動して前処理部62内のメモリに格納する補正後画像データをRAM2103に転送する。CPU68は、RAM2103に格納した画像データに対して、ステップS811〜ステップS820の処理をソフトウェアにより実行する。その場合、CNN演算処理の動作に必要なワークメモリとしてRAM2103が使用される。即ち、CPU68は、RAM2103上に図11で示すメモリマップを構成し、処理ノードに対応する領域をリングバッファとして使用する。
また、第1実施形態のCNN処理部63に存在するリングバッファ設定部104等はソフトウェア上の変数として構成され、例えばRAM70上にアサインされる。
第3実施形態の場合もハードウェアにより構成する場合と同様に、処理に必要なバッファメモリを削減する事が可能になる。図21に示す構成の場合、一般的な階層ネットワーク演算に比べて、RAM2103を少ないメモリで実現する事が出来る。また、RAM2103を用意せずにRAM70をワークメモリとして利用する場合であっても同様である。
<他の実施形態>
上述の各実施形態では、メモリ102の連続するアドレス空間に複数の処理ノードに対応した複数の部分領域を割り当て、リングカウンタ105を使用して、メモリ102の各部分領域をライン単位で循環しながら使用する方法について説明した。しかしながら、本発明はこのようなメモリの使用方法に限るわけではない。例えば、リングカウンタに対応するメモリアドレステーブルを有し、当該テーブルを参照する事で、不連続な領域を所定の処理単位で割り当てながら処理する等の方法でも良い。即ち、本発明で規定するリングバッファとは、狭義のリングバッファ或いは循環バッファに限定されるものではない。
また、上記各実施形態では、シーケンス情報テーブル(図10)の内容に従って論理的な処理ノードをライン単位で時分割処理する場合について説明したが、他の方法を適用しても良い。例えば、読み取り側バッファと書き込みバッファの利用状況から、処理ノードの実行を適応的にスケジューリングする等の方法でも良い。
また、上記各実施形態では、特徴抽出結果を入力層と同じ解像度で保持する場合の例について説明したが、特徴面を入力面に対してサブサンプリングする場合に対しても同様に適用可能である。
また、上記各実施形態では、最も効率の良い処理単位としてライン単位でシーケンス制御する場合について説明したが本発明はこれに限るわけではない。例えば、1ライン以下の単位やブロック単位でシーケンス制御する場合にも適用可能である。
また、上記実施形態では、コンボリューショナルニューラルネットワーク演算への適用を説明したが本発明はこれに限るわけではない。所定の参照領域を必要とする様々な階層的な演算処理に対して本発明を適用することが可能である。更に、2次元演算に限るわけでもない。
また、上記各実施形態では、リングバッファ設定部104、194をレジスタとして提供する場合について説明したが、他のパラメータメモリやメモリ102と共有される構成にしてもよい。例えば、メモリ102上の所定のアドレスがリングバッファ設定部104、194に保持されるデータの格納先にマッピングされる構成にしても良い。その場合、回路リソースをより有効に利用できる。即ち、より柔軟なネットワーク構成を実現する事が可能になる。
また、上記各実施形態では、参照データキャッシュ1606に2次元の参照データを全て取り込んだ後に演算部101を起動する場合について説明したが、これに限られるものではない。コンボリューション演算等の場合、参照ウインドウ内の1行単位で演算部101を駆動する様に制御する事も可能である。この場合、ウインドウカウンタ1607のデクリメントに伴う連続する列番号方向(水平方向)の参照データの読み出しを終了すると、次のラインの参照データ読み出し処理開始前に演算部101を駆動する。そして、演算部101は、読み出したデータに対するコンボリューション演算を実行する。演算が終了すると次のラインの参照データ読み出しを開始する。以上の処理を繰り返す。この場合、参照データキャッシュのサイズが参照データ幅分のみで良いため、少ないキャッシュ容量で階層演算を実現する事が出来る。
また、第2実施形態では、リングサイズ設定部1961a,bを階層毎に有する場合について説明したが、リングバッファ設定部104を階層毎に有する構成でも良い。その場合は階層処理単位でリングカウンタを更新する様に制御する。論理的な処理ノードの動作シーケンスに制限が生じる(必ず階層単位でシーケンスする必要が生じる)が、より回路規模を削減する事が出来る。
また、各実施形態ではリングサイズ設定部がリングバッファサイズを任意に設定可能な場合(レジスタやRAMにより構成する場合)について説明したが、リングサイズ設定部の全て或いは一部でリングバッファサイズが固定的な値として設定される構成でも良い。
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したプログラムである。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するためのコンピュータ読み取り可能な記録媒体としては以下が挙げられる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどとの協働で実施形態の機能が実現されてもよい。この場合、OSなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行なう。
第1実施形態によるCNN処理部の構成例を示すブロック図である。 階層結合型ニューラルネットワークの構成例を説明する図である。 ニューロンの構成を示す図である。 CNNのネットワーク構成例を説明する図である。 CNNの特徴抽出の例を説明する図である。 第1実施形態による階層的演算処理を利用した画像処理装置(パターン検出装置)の構成例を示すブロック図である。 第1実施形態に関するCNNのネットワークの構成例を説明する図である。 第1実施形態によるパタン検出装置の動作を説明するフローチャートである。 ネットワーク構成情報テーブルのデータ構成例を示す図である。 シーケンス情報テーブルのデータ構成例を示す図である。 メモリの割り当てを説明する図である。 演算処部の構成例を示すブロック図である。 リングバッファの例を説明する図である。 処理ノードの論理的な接続構成を説明する図である。 参照データ群の読み出しを説明する図である。 メモリアクセス制御部103の構成を説明する図である。 CNN演算単位の動作タイミングを説明する図である。 第2実施形態によるCNNネットワークの構成を説明する図である。 第1実施形態によるCNN処理部の構成例を示すブロック図である。 第2実施形態によるリングバッファ設定部とリングサイズ設定部の関係を説明する図である。 第2実施形態による画像処理装置(パターン検出装置)の構成例を示すブロック図である。 ライン単位で演算部101が処理を実行する場合の様子を模式的に説明する図である。 図7に示す階層的ネットワークにおけるライン単位の演算処理の進行を模式的に説明する図である。

Claims (22)

  1. 入力データに演算処理を施す論理的な複数の処理ノードが階層的に接続されたネットワーク演算を実行する演算処理装置であって、
    前記複数の処理ノードの各々が実行する予め定められた処理単位の演算の実行順序を規定したシーケンス情報に基づいて、前記複数の処理ノードから、演算処理を実行すべき処理ノードを順次に指定する指定手段と、
    前記指定手段で指定された処理ノードによる演算処理を前記処理単位で実行して演算結果を得る実行手段と、
    前記複数の処理ノードの各々に対してメモリの部分領域をリングバッファとして割り当て、前記処理単位の演算結果の量に対応したメモリ領域を単位としてデータの書き込み先を循環させながら、前記実行手段によって得られた各処理ノードの演算結果を対応するリングバッファに書き込むメモリ制御手段とを備えることを特徴とする演算処理装置。
  2. 前記メモリ制御手段は、前記ネットワーク演算における前記複数の処理ノードの論理的な接続状態に基づいて、各処理ノードへのリングバッファの割り当てを決定することを特徴とする請求項1に記載の演算処理装置。
  3. 前記メモリ制御手段は、処理ノードに割り当てられるリングバッファの循環数を、当該処理ノードの後段に接続されている処理ノードが前記処理単位の演算を実行する際に参照するデータのサイズに基づいて決定することを特徴とする請求項2に記載の演算処理装置。
  4. 前記入力データは2次元の画像データであり、
    前記実行手段は、前記画像データの水平方向の1ラインを単位として演算処理を実行して水平方向の1ライン分の演算結果を取得し、
    前記メモリ制御手段は、水平方向の1ライン分のメモリ領域を単位としてデータの書き込み先を循環させることを特徴とする請求項1乃至3のいずれか1項に記載の演算処理装置。
  5. 前記指定手段は、ネットワーク演算の変更に応じて、前記シーケンス情報を変更し、
    前記メモリ制御手段は、変更後のネットワーク演算における処理ノードの接続構造に基づいて、前記メモリの、処理ノードへの部分領域の割り当てを変更することを特徴とする請求項2に記載の演算処理装置。
  6. 前記リングバッファにおける、前記演算結果の書き込み先を示す循環位置を、前記複数の処理ノードのそれぞれに関して保持する保持手段を更に備えることを特徴とする請求項1乃至5のいずれか1項に記載の演算処理装置。
  7. 前記メモリ制御手段は、前記リングバッファの循環数を、処理ノード毎に設定することを特徴とする請求項1乃至6のいずれか1項に記載の演算処理装置。
  8. 前記メモリ制御手段は、前記リングバッファの循環数を、前記ネットワークにおける処理ノードが属する階層毎に設定することを特徴とする請求項1乃至6のいずれか1項に記載の演算処理装置。
  9. 前記メモリが連続するアドレス空間を有するメモリであり、前記複数の処理ノードの各々に前記メモリの異なるアドレス空間が割り当てられることで、前記メモリが共有されることを特徴とする請求項1乃至8のいずれか1項に記載の演算処理装置。
  10. 前記ネットワークの演算処理がコンボリューショナルニューラルネットワークの演算処理であることを特徴とする請求項1乃至9のいずれか1項に記載の演算処理装置。
  11. 入力データに演算処理を施す論理的な複数の処理ノードが階層的に接続されたネットワーク演算を実行する演算処理装置の制御方法であって、
    前記複数の処理ノードの各々が実行する予め定められた処理単位の演算の実行順序を規定したシーケンス情報に基づいて、前記複数の処理ノードから、演算処理を実行すべき処理ノードを順次に指定する指定工程と、
    前記指定工程で指定された処理ノードによる演算処理を前記処理単位で実行して演算結果を得る実行工程と、
    前記複数の処理ノードの各々に対してメモリの部分領域をリングバッファとして割り当て、前記処理単位の演算結果の量に対応したメモリ領域を単位としてデータの書き込み先を循環させながら、前記実行工程によって得られた各処理ノードの演算結果を対応するリングバッファに書き込むメモリ制御工程とを備えることを特徴とする演算処理装置の制御方法。
  12. 前記メモリ制御工程は、前記ネットワーク演算における前記複数の処理ノードの論理的な接続状態に基づいて、各処理ノードへのリングバッファの割り当てを決定することを特徴とする請求項11に記載の演算処理装置の制御方法。
  13. 前記メモリ制御工程は、処理ノードに割り当てられるリングバッファの循環数を、当該処理ノードの後段に接続されている処理ノードが前記処理単位の演算を実行する際に参照するデータのサイズに基づいて決定することを特徴とする請求項12に記載の演算処理装置の制御方法。
  14. 前記入力データは2次元の画像データであり、
    前記実行工程は、前記画像データの水平方向の1ラインを単位として演算処理を実行して水平方向の1ライン分の演算結果を取得し、
    前記メモリ制御工程は、水平方向の1ライン分のメモリ領域を単位としてデータの書き込み先を循環させることを特徴とする請求項11乃至13のいずれか1項に記載の演算処理装置の制御方法。
  15. 前記指定工程は、ネットワーク演算の変更に応じて、前記シーケンス情報を変更し、
    前記メモリ制御工程は、変更後のネットワーク演算における処理ノードの接続構造に基づいて、前記メモリの、処理ノードへの部分領域の割り当てを変更することを特徴とする請求項12に記載の演算処理装置の制御方法。
  16. 前記リングバッファにおける、前記演算結果の書き込み先を示す循環位置を、前記複数の処理ノードのそれぞれに関して保持する保持工程を更に備えることを特徴とする請求項11乃至15のいずれか1項に記載の演算処理装置の制御方法。
  17. 前記メモリ制御工程は、前記リングバッファの循環数を、処理ノード毎に設定することを特徴とする請求項11乃至16のいずれか1項に記載の演算処理装置の制御方法。
  18. 前記メモリ制御工程は、前記リングバッファの循環数を、前記ネットワークにおける処理ノードが属する階層毎に設定することを特徴とする請求項11乃至16のいずれか1項に記載の演算処理装置の制御方法。
  19. 前記メモリが連続するアドレス空間を有するメモリであり、前記複数の処理ノードの各々に前記メモリの異なるアドレス空間が割り当てられることで、前記メモリが共有されることを特徴とする請求項11乃至18のいずれか1項に記載の演算処理装置の制御方法。
  20. 前記ネットワークの演算処理がコンボリューショナルニューラルネットワークの演算処理であることを特徴とする請求項11乃至19のいずれか1項に記載の演算処理装置の制御方法。
  21. 請求項11乃至20のいずれか1項に記載の制御方法をコンピュータに実行させるためのコンピュータプログラム。
  22. 請求項11乃至20のいずれか1項に記載の制御方法をコンピュータに実行させるためのコンピュータプログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体。
JP2007159491A 2007-06-15 2007-06-15 演算処理装置及び方法 Expired - Fee Related JP5184824B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2007159491A JP5184824B2 (ja) 2007-06-15 2007-06-15 演算処理装置及び方法
US12/663,687 US7937346B2 (en) 2007-06-15 2008-06-11 Calculation processing apparatus and method
CN2008800195360A CN101681449B (zh) 2007-06-15 2008-06-11 计算处理装置及方法
PCT/JP2008/061081 WO2008153194A1 (en) 2007-06-15 2008-06-11 Calculation processing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007159491A JP5184824B2 (ja) 2007-06-15 2007-06-15 演算処理装置及び方法

Publications (3)

Publication Number Publication Date
JP2008310700A true JP2008310700A (ja) 2008-12-25
JP2008310700A5 JP2008310700A5 (ja) 2010-07-29
JP5184824B2 JP5184824B2 (ja) 2013-04-17

Family

ID=40129791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007159491A Expired - Fee Related JP5184824B2 (ja) 2007-06-15 2007-06-15 演算処理装置及び方法

Country Status (4)

Country Link
US (1) US7937346B2 (ja)
JP (1) JP5184824B2 (ja)
CN (1) CN101681449B (ja)
WO (1) WO2008153194A1 (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105957238A (zh) * 2016-05-20 2016-09-21 聚龙股份有限公司 一种纸币管理方法及其系统
CN106056751A (zh) * 2016-05-20 2016-10-26 聚龙股份有限公司 冠字号码的识别方法及系统
JP2017126203A (ja) * 2016-01-14 2017-07-20 株式会社デンソー 演算処理装置
KR20180101055A (ko) * 2017-03-03 2018-09-12 삼성전자주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
CN109387521A (zh) * 2017-08-04 2019-02-26 欧姆龙株式会社 图像处理系统
EP3447682A1 (en) 2017-08-25 2019-02-27 Renesas Electronics Corporation Semiconductor device and image recognition system
US10248384B2 (en) 2016-08-03 2019-04-02 Fujitsu Limited Arithmetic processing device and control method for arithmetic processing device
US10353705B2 (en) 2016-08-12 2019-07-16 Fujitsu Limited Arithmetic processing device for deep learning and control method of the arithmetic processing device for deep learning
US10642622B2 (en) 2016-12-27 2020-05-05 Fujitsu Limited Arithmetic processing device and control method of the arithmetic processing device
JP2021508861A (ja) * 2017-12-29 2021-03-11 カンブリコン テクノロジーズ コーポレイション リミティド ニューラルネットワーク処理方法、コンピュータシステム及び記憶媒体
US20210133575A1 (en) * 2018-07-26 2021-05-06 Mitsubishi Electric Corporation Water treatment plant and method for operating water treatment plant
US11003990B2 (en) 2016-11-25 2021-05-11 Fujitsu Limited Controlling memory area for training a neural network
JP2022530309A (ja) * 2019-04-29 2022-06-29 グーグル エルエルシー 外部メモリを機械学習アクセラレータにとってローカルとする仮想化

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5495822B2 (ja) * 2010-01-29 2014-05-21 キヤノン株式会社 情報処理装置、その制御方法及びプログラム
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
JP5869759B2 (ja) 2010-11-04 2016-02-24 キヤノン株式会社 無線電力伝送システム、無線電力伝送システムの制御方法、無線送電装置、無線送電装置の制御方法、およびプログラム
JP5110235B1 (ja) * 2011-06-27 2012-12-26 コニカミノルタホールディングス株式会社 画像処理装置、画像処理方法、およびプログラム
JP5794686B2 (ja) 2011-08-10 2015-10-14 キヤノン株式会社 撮像装置及びその駆動方法
JP5852364B2 (ja) 2011-08-26 2016-02-03 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、およびプログラム
JP5911299B2 (ja) 2011-12-27 2016-04-27 キヤノン株式会社 情報処理装置、情報処理装置の制御方法およびプログラム
US8994746B2 (en) * 2012-06-27 2015-03-31 Google Inc. System and method for generating a flow based on multiple types of interactions
CN103544506B (zh) * 2013-10-12 2017-08-08 Tcl集团股份有限公司 一种基于卷积神经网络的图像分类方法和装置
JP6314628B2 (ja) 2014-04-28 2018-04-25 株式会社デンソー 演算処理装置
CN103984528A (zh) * 2014-05-15 2014-08-13 中国人民解放军国防科学技术大学 基于飞腾处理器平台的多线程并发数据压缩方法
JP6706788B2 (ja) * 2015-03-06 2020-06-10 パナソニックIpマネジメント株式会社 画像認識方法、画像認識装置およびプログラム
US10699186B2 (en) 2015-12-02 2020-06-30 Google Llc Determining orders of execution of a neural network
JP6333871B2 (ja) * 2016-02-25 2018-05-30 ファナック株式会社 入力画像から検出した対象物を表示する画像処理装置
US10942671B2 (en) * 2016-04-25 2021-03-09 Huawei Technologies Co., Ltd. Systems, methods and devices for a multistage sequential data process
EP3451238A4 (en) * 2016-04-29 2020-01-01 Cambricon Technologies Corporation Limited DEVICE AND METHOD FOR CARRYING OUT A POOLING OPERATION
CN111860812B (zh) * 2016-04-29 2024-03-01 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络训练的装置和方法
CN106056212B (zh) * 2016-05-25 2018-11-23 清华大学 一种人工神经网络计算核
JP6848216B2 (ja) * 2016-06-06 2021-03-24 株式会社デンソー 演算処理装置
DE102016216947A1 (de) * 2016-09-07 2018-03-08 Robert Bosch Gmbh Modellberechnungseinheit und Steuergerät zur Berechnung eines mehrschichtigen Perzeptronenmodells
US9940534B1 (en) * 2016-10-10 2018-04-10 Gyrfalcon Technology, Inc. Digital integrated circuit for extracting features out of an input image based on cellular neural networks
US10402628B2 (en) 2016-10-10 2019-09-03 Gyrfalcon Technology Inc. Image classification systems based on CNN based IC and light-weight classifier
US10043095B2 (en) * 2016-10-10 2018-08-07 Gyrfalcon Technology, Inc. Data structure for CNN based digital integrated circuit for extracting features out of an input image
US10366302B2 (en) 2016-10-10 2019-07-30 Gyrfalcon Technology Inc. Hierarchical category classification scheme using multiple sets of fully-connected networks with a CNN based integrated circuit as feature extractor
US10366328B2 (en) 2017-09-19 2019-07-30 Gyrfalcon Technology Inc. Approximating fully-connected layers with multiple arrays of 3x3 convolutional filter kernels in a CNN based integrated circuit
US10360470B2 (en) 2016-10-10 2019-07-23 Gyrfalcon Technology Inc. Implementation of MobileNet in a CNN based digital integrated circuit
US10339445B2 (en) 2016-10-10 2019-07-02 Gyrfalcon Technology Inc. Implementation of ResNet in a CNN based digital integrated circuit
CN106530210B (zh) * 2016-10-31 2019-09-06 北京大学 基于阻变存储器件阵列实现并行卷积计算的设备和方法
US10846836B2 (en) * 2016-11-14 2020-11-24 Ricoh Company, Ltd. View synthesis using deep convolutional neural networks
JP2018092294A (ja) * 2016-12-01 2018-06-14 ソニーセミコンダクタソリューションズ株式会社 演算装置、演算方法及びコンピュータプログラム
US10657424B2 (en) * 2016-12-07 2020-05-19 Samsung Electronics Co., Ltd. Target detection method and apparatus
JP6936592B2 (ja) 2017-03-03 2021-09-15 キヤノン株式会社 演算処理装置およびその制御方法
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
TWI647624B (zh) * 2017-06-08 2019-01-11 財團法人資訊工業策進會 辨識系統、辨識方法及非暫態電腦可讀取媒體
CN110443360B (zh) * 2017-06-16 2021-08-06 上海兆芯集成电路有限公司 用于操作处理器的方法
JP6929734B2 (ja) 2017-08-08 2021-09-01 キヤノン株式会社 判別演算装置、判別演算方法及びプログラム
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US10599978B2 (en) * 2017-11-03 2020-03-24 International Business Machines Corporation Weighted cascading convolutional neural networks
US11636665B2 (en) * 2018-01-15 2023-04-25 Shenzhen Corerain Technologies Co., Ltd. Streaming image semantic segmentation method, logical integrated circuit system and electronic device
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
EP3651073B1 (en) 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Computation device and method
US11709672B2 (en) 2018-02-13 2023-07-25 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN110162162B (zh) 2018-02-14 2023-08-18 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
WO2019204700A1 (en) * 2018-04-19 2019-10-24 University Of South Florida Neonatal pain identification from neonatal facial expressions
JP7169768B2 (ja) * 2018-05-08 2022-11-11 キヤノン株式会社 画像処理装置、画像処理方法
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
KR20190140808A (ko) * 2018-05-30 2019-12-20 삼성전자주식회사 프로세서, 전자 장치 및 그 제어 방법
US11244027B2 (en) * 2018-05-30 2022-02-08 Samsung Electronics Co., Ltd. Processor, electronics apparatus and control method thereof
EP3825841A1 (en) 2018-06-27 2021-05-26 Shanghai Cambricon Information Technology Co., Ltd Method and device for parallel computation of a network model
US10417342B1 (en) 2018-07-03 2019-09-17 Gyrfalcon Technology Inc. Deep learning device for local processing classical chinese poetry and verse
US10311149B1 (en) 2018-08-08 2019-06-04 Gyrfalcon Technology Inc. Natural language translation device
US11966583B2 (en) 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
US10387772B1 (en) 2018-10-22 2019-08-20 Gyrfalcon Technology Inc. Ensemble learning based image classification systems
CN111385462A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
JP7227769B2 (ja) 2019-01-10 2023-02-22 キヤノン株式会社 情報処理装置及びメモリ制御方法
CN111832739B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
JP7278150B2 (ja) * 2019-05-23 2023-05-19 キヤノン株式会社 画像処理装置、撮像装置、画像処理方法
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
WO2020248424A1 (zh) 2019-06-12 2020-12-17 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
EP4020321A4 (en) 2019-08-23 2024-01-17 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD, APPARATUS, COMPUTER APPARATUS AND STORAGE MEDIUM
CN112257859B (zh) * 2020-10-30 2024-07-05 地平线(上海)人工智能技术有限公司 特征数据处理方法及装置、设备、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1021406A (ja) * 1996-03-29 1998-01-23 Nec Corp 物体認識方法及び装置
JP2004246678A (ja) * 2003-02-14 2004-09-02 Yaskawa Electric Corp データ記憶処理装置およびこれを備えたデータ記憶装置

Family Cites Families (14)

* 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 半導体情報処理装置
JPH10162120A (ja) 1996-12-02 1998-06-19 Mitsubishi Electric Corp 動画像処理方法ならびに動画像処理装置
JPH11184841A (ja) * 1997-12-22 1999-07-09 Canon Inc 画像処理方法及び装置
EP1262907B1 (en) * 2001-05-28 2007-10-03 Honda Research Institute Europe GmbH Pattern recognition with hierarchical networks
JP4846924B2 (ja) * 2001-05-31 2011-12-28 キヤノン株式会社 パターン認識装置
US7016529B2 (en) * 2002-03-15 2006-03-21 Microsoft Corporation System and method facilitating pattern recognition
JP4051974B2 (ja) 2002-03-20 2008-02-27 富士ゼロックス株式会社 画像処理装置および画像処理方法
JP4035408B2 (ja) 2002-09-10 2008-01-23 キヤノン株式会社 解像度変換装置及び方法及び情報処理装置
US7028271B2 (en) * 2002-11-06 2006-04-11 Canon Kabushiki Kaisha Hierarchical processing apparatus
JP4532915B2 (ja) * 2004-01-29 2010-08-25 キヤノン株式会社 パターン認識用学習方法、パターン認識用学習装置、画像入力装置、コンピュータプログラム、及びコンピュータ読み取り可能な記録媒体
JP2005352900A (ja) * 2004-06-11 2005-12-22 Canon Inc 情報処理装置、情報処理方法、パターン認識装置、及びパターン認識方法
US7747070B2 (en) * 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1021406A (ja) * 1996-03-29 1998-01-23 Nec Corp 物体認識方法及び装置
JP2004246678A (ja) * 2003-02-14 2004-09-02 Yaskawa Electric Corp データ記憶処理装置およびこれを備えたデータ記憶装置

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017126203A (ja) * 2016-01-14 2017-07-20 株式会社デンソー 演算処理装置
CN106056751A (zh) * 2016-05-20 2016-10-26 聚龙股份有限公司 冠字号码的识别方法及系统
US10930105B2 (en) 2016-05-20 2021-02-23 Julong Co., Ltd. Banknote management method and system
CN105957238A (zh) * 2016-05-20 2016-09-21 聚龙股份有限公司 一种纸币管理方法及其系统
US10248384B2 (en) 2016-08-03 2019-04-02 Fujitsu Limited Arithmetic processing device and control method for arithmetic processing device
US10642613B2 (en) 2016-08-12 2020-05-05 Fujitsu Limited Arithmetic processing device for deep learning and control method of the arithmetic processing device for deep learning
US10353705B2 (en) 2016-08-12 2019-07-16 Fujitsu Limited Arithmetic processing device for deep learning and control method of the arithmetic processing device for deep learning
US11003990B2 (en) 2016-11-25 2021-05-11 Fujitsu Limited Controlling memory area for training a neural network
US10642622B2 (en) 2016-12-27 2020-05-05 Fujitsu Limited Arithmetic processing device and control method of the arithmetic processing device
KR20180101055A (ko) * 2017-03-03 2018-09-12 삼성전자주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
KR102499396B1 (ko) * 2017-03-03 2023-02-13 삼성전자 주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
CN109387521A (zh) * 2017-08-04 2019-02-26 欧姆龙株式会社 图像处理系统
US10885620B2 (en) 2017-08-04 2021-01-05 Omron Corporation Neural network image processing system
EP3447682A1 (en) 2017-08-25 2019-02-27 Renesas Electronics Corporation Semiconductor device and image recognition system
US11461633B2 (en) 2017-08-25 2022-10-04 Renesas Electronics Corporation Semiconductor device and image recognition system
JP2021508861A (ja) * 2017-12-29 2021-03-11 カンブリコン テクノロジーズ コーポレイション リミティド ニューラルネットワーク処理方法、コンピュータシステム及び記憶媒体
JP7299846B2 (ja) 2017-12-29 2023-06-28 カンブリコン テクノロジーズ コーポレイション リミティド ニューラルネットワーク処理方法、コンピュータシステム及び記憶媒体
US20210133575A1 (en) * 2018-07-26 2021-05-06 Mitsubishi Electric Corporation Water treatment plant and method for operating water treatment plant
JP2022530309A (ja) * 2019-04-29 2022-06-29 グーグル エルエルシー 外部メモリを機械学習アクセラレータにとってローカルとする仮想化
JP7412438B2 (ja) 2019-04-29 2024-01-12 グーグル エルエルシー 外部メモリを機械学習アクセラレータにとってローカルとする仮想化

Also Published As

Publication number Publication date
CN101681449A (zh) 2010-03-24
US20100223219A1 (en) 2010-09-02
US7937346B2 (en) 2011-05-03
CN101681449B (zh) 2013-03-06
JP5184824B2 (ja) 2013-04-17
WO2008153194A1 (en) 2008-12-18

Similar Documents

Publication Publication Date Title
JP5184824B2 (ja) 演算処理装置及び方法
JP5368687B2 (ja) 演算処理装置および方法
JP5171118B2 (ja) 演算処理装置及びその制御方法
JP6936592B2 (ja) 演算処理装置およびその制御方法
JP6987860B2 (ja) ハードウェアにおけるカーネルストライドの実行
KR102561261B1 (ko) 커널을 이용한 컨볼루션 연산 처리 방법 및 장치
JP6393058B2 (ja) 情報処理装置、情報処理方法
KR102572757B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
US20200272892A1 (en) Super-tiling in neural network processing to enabling analytics at lower memory speed
CN112561045A (zh) 用于图像识别的神经网络的处理器实现的方法和设备
JP2010134697A (ja) コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP7402623B2 (ja) フィルタ処理装置及びその制御方法
KR20210079785A (ko) 뉴럴 네트워크의 컨볼루션 연산 처리 방법 및 장치
JP6195342B2 (ja) 情報処理装置およびメモリアクセス制御方法
JP7114659B2 (ja) ニューラルネットワーク方法及び装置
JP6970827B2 (ja) 演算処理装置
JP7410961B2 (ja) 演算処理装置
CN113496248A (zh) 训练计算机实施的模型的方法和设备
JP7308674B2 (ja) 演算処理装置及び演算処理方法
CN108073550A (zh) 缓冲装置及卷积运算装置与方法
JP7321213B2 (ja) 情報処理装置、情報処理方法
JP7012168B2 (ja) 演算処理装置
JP7150668B2 (ja) 高位合成装置及び高位合成方法
KR20210100872A (ko) 필터 분해 기법을 이용한 에너지 효율적 재구성형 cnn 가속기 장치 및 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100615

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121101

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: 20121221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130117

R151 Written notification of patent or utility model registration

Ref document number: 5184824

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: 20160125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees