JP2018073103A - 演算回路、その制御方法及びプログラム - Google Patents

演算回路、その制御方法及びプログラム Download PDF

Info

Publication number
JP2018073103A
JP2018073103A JP2016211898A JP2016211898A JP2018073103A JP 2018073103 A JP2018073103 A JP 2018073103A JP 2016211898 A JP2016211898 A JP 2016211898A JP 2016211898 A JP2016211898 A JP 2016211898A JP 2018073103 A JP2018073103 A JP 2018073103A
Authority
JP
Japan
Prior art keywords
filter
data
reference data
coefficient data
calculation
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
JP2016211898A
Other languages
English (en)
Other versions
JP6945987B2 (ja
Inventor
加藤 政美
Masami Kato
政美 加藤
山本 貴久
Takahisa Yamamoto
貴久 山本
野村 修
Osamu Nomura
修 野村
伊藤 嘉則
Yoshinori Ito
嘉則 伊藤
克彦 森
Katsuhiko Mori
克彦 森
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 JP2016211898A priority Critical patent/JP6945987B2/ja
Publication of JP2018073103A publication Critical patent/JP2018073103A/ja
Application granted granted Critical
Publication of JP6945987B2 publication Critical patent/JP6945987B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 参照データの転送性能がボトルネックになる場合において、並列演算器の性能を活かすことはできない。【解決手段】 演算回路は、フィルタ演算の参照データと該フィルタ演算に用いるフィルタの係数データとを記憶する記憶装置と接続する演算回路であって、参照データとフィルタの係数データとの前記フィルタ演算を実行する少なくとも一つの演算器と、前記記憶装置から転送された所定数の参照データを保持する第1保持手段と、前記記憶装置から転送された第1フィルタの係数データ及び第2フィルタの係数データを保持する第2保持手段と、前記演算器に、前記第1保持手段に保持された前記参照データと前記第1フィルタの係数データとの演算を実行させた後に、前記第1保持手段に保持された前記参照データと前記第2フィルタの係数データとの演算を実行させる制御手段と、を有することを特徴とする。【選択図】 図1

Description

本発明は、パターン認識等に使用される演算回路、その制御方法及びプログラムに関するものである。
パターン認識装置などの画像処理装置にニューラルネットワークの手法が広く応用されている。ニューラルネットワークの中でも、Convolutional Neural Networks(以下CNNと略記する)と呼ばれる演算手法が認識対象の変動に対して頑健なパターン認識を可能にする手法として注目されている。例えば、非特許文献1では、コンボリューショナルニューラルネットワーク(CNN)の様々な応用例・実装例が開示されている。CNN処理は、認識対象の信号や実現する認識機能等に応じて様々なネットワークの構成が提案されている。ここで、コンボリューショナルニューラルネットワークの構成は、階層の数やその階層内の特徴面の数等、コンボリューション演算の結合関係で表現される構成を示す。
図15は簡単なCNN処理の例を示すネットワーク構成図である。入力層1501は、画像データに対してCNN処理を行う場合、ラスタスキャンされた所定サイズの画像データに相当する。特徴面1503a〜1503cは第1階層1508の特徴面を示す。特徴面とは、所定の特徴抽出演算(コンボリューション演算及び非線形処理)の処理結果に相当するデータ面である。特徴面は上位階層で所定の対象を認識するための特徴抽出結果に相当すし、ラスタスキャンされた画像データに対する処理結果であるため、処理結果も面で表す。
特徴面1503a〜1503cは、入力層1501に対応するコンボリューション演算及び非線形処理により算出されるものである。例えば、特徴面1503aは、模式的に示す2次元のフィルタカーネル15021aのコンボリューション演算と演算結果の非線形変換により算出する。
例えば、フィルタカーネル(フィルタ係数マトリクス)サイズがcolumnSize×rowSizeであるコンボリューション演算は以下に示すような積和演算により処理する。
Figure 2018073103

ここで、「input(x,y)」は座標(x、y)での参照画素値を示し、「output(x,y)」は座標(x、y)での演算結果を示す。また、「weight(column,row)」は座標(x+column、y+row)での重み係数を示し、「columnSize」及び「rowSize」はコンボリューションカーネルサイズを示す。
CNN処理では複数のフィルタカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換することで特徴面を算出する。なお、特徴面1503aは前階層の一つの画像データから算出されるので、結合数が1である。特徴面1503aを算出するためのフィルタカーネル15021aは1つである。ここで、フィルタカーネル15021b、フィルタカーネル15021cはそれぞれ特徴面1503b、1503cを算出する際に使用されるフィルタカーネルである。また、フィルタカーネルは、フィルタ又はカーネルと略称することがある。
図16はCNN処理における特徴面1505aを算出す場合の例を説明する図である。特徴面1505aは前階層1508の3つの特徴面1503a〜cから算出され、特徴面1503a〜cと結合している。特徴面1505aのデータを算出する場合、まず、特徴面1503aに対しては模式的に示すカーネル15041aを用いたフィルタ演算(コンボリューション演算)を行い、その結果を累積加算器1601に保持する。同様に、特徴面1503b、1503cに対してはそれぞれカーネル15042a、15043aのコンボリューション演算を行い、その結果を累積加算器1601に累積加算する。3種類のカーネルを用いたコンボリューション演算の終了後、ロジスティック関数や双曲正接関数(tanh関数)を利用した非線形変換処理1602を行う。
以上の処理を画像全体に対して1画素ずつ走査しながら処理することで、特徴面1505aを算出する。同様に、特徴面1505bは前階層1508の3つの特徴面に対してカーネル15041b、カーネル15042b及びカーネル15043bで示す3つのコンボリューション演算を用いて算出する。更に、特徴面1507は前階層1509の特徴面1505a〜bのそれぞれに対してカーネル15061及びカーネル15062で示す2つのコンボリューション演算を用いて算出する。
なお、各コンボリューション係数はパーセプトロン学習やバックプロパゲーション学習等の一般的な手法を用いて予め学習により決定されているものとする。例えば、物体の検出やパターン認識等においては、10×10以上の大きなサイズのコンボリューションカーネルを使用することがある。
このように、CNN処理では多数の大きなカーネルサイズのコンボリューション演算を繰り返すため、膨大な回数の積和演算が必要となる。共通のハードウェアで様々な認識タスクに対応するためには、多様なネットワークを高い並列度で効率的に処理することが求められる。
特許文献1では積和演算器を複数用意し、複数の受容野位置(算出する特徴面の画素位置)に対応するコンボリューション演算を並列に処理することで高速化する装置が提案されている。また、特許文献2ではコンボリューションカーネルに対して演算器を割り付ける構成のCNN処理装置が提案されている。
特開2010−134697 US2012/0303932
Yann LeCun, Koray Kavukvuoglu and Clement Farabet: Convolutional Networks and Applications in Vision, Proc. International Symposium on Circuits and Systems (ISCAS’10), IEEE, 2010,
しかしながら、特許文献1では、算出する一つの特徴面に着目して、複数の受容野を並列に処理するが、コンボリューションのカーネルサイズや処理対象の領域等によっては、効率的に並列処理できない場合がある。例えば、カーネルサイズが小さい場合、積和演算器に入力するデータの転送時間がボトルネックとなり、積和演算の処理効率が低下する場合がある。
本発明は上記の課題に鑑みてなされたものであり、保持部に保持された一部の参照データと異なるフィルタとのフィルタ演算を順次に行うことによって、積和演算の処理効率の低下を避ける演算回路を提供することを目的とする。また、その演算回路の制御方法及びプログラムを提供することを目的とする。
上記課題を解決するために、本発明に係る演算回路は、以下の構成を有する。フィルタ演算の参照データと該フィルタ演算に用いるフィルタの係数データとを記憶する記憶装置と接続する演算回路であって、前記参照データと前記フィルタの係数データとの前記フィルタ演算を実行する少なくとも一つの演算器と、前記記憶装置から転送された所定数の参照データを保持する第1保持手段と、前記記憶装置から転送された第1フィルタの係数データ及び第2フィルタの係数データを保持する第2保持手段と、前記演算器に、前記第1保持手段に保持された前記参照データと前記第1フィルタの係数データとの演算を実行させた後に、前記第1保持手段に保持された前記参照データと前記第2フィルタの係数データとの演算を実行させる制御手段と、を有することを特徴とする演算回路。
本発明により、保持部に保持された一部の参照データと異なるフィルタとのフィルタ演算を順次に行うことによって、積和演算の処理効率の低下を避けることができる。
第1の実施形態の演算回路の構成を示すブロック図である。 第1の実施形態の演算回路の演算処理を概念的に説明する図である。 コンボリューション演算の基本的な考え方を説明する図である。 演算回路の制御部の構成を示す図である。 並列コンボリューション演算の例を説明する図である。 演算回路の並列積和演算器の構成を説明する図である。 演算回路のシフトレジスタの構成を説明する図である。 第1の実施形態の動作を説明するタイムチャートである。 第1の実施形態の動作を説明するタイムチャートである。 並列演算回路を具備した画像処理装置の構成を説明する図である。 画像処理装置の動作を説明するフローチャートである。 第2の実施形態の動作を説明するタイムチャートである。 第2の実施形態の演算回路の構成を示すブロック図である。 第2の実施形態の特徴的な構成と動作を説明する図である。 CNN処理の例を示すネットワーク構成図である。 CNN処理におけるコンボリューション演算を説明する図である。
(第1の実施形態)
まず、本発明の第1の実施形態について説明する。図1は本発明の第1の実施形態に係る演算回路の構成を説明する図である。
図1の説明に先立ち、本実施形態の演算回路が行う各種の演算処理の一例として、この演算回路によるコンボリューション演算の基本的な考え方を、図3を用いて説明する。図3は、コンボリューション演算によって参照特徴面302から特徴面306を算出する一例である。ここでは特徴面306の垂直方向に連続する3つの位置の特徴面データ305を並列に算出する場合の概念を説明する。なお、なお、基本的な考え方は、特徴面306の水平方向に連続する位置を並列に算出する場合についても同様である。コンボリューションカーネル(フィルタカーネル)のサイズは説明のため3行1列の係数とする。特徴面306のデータ305を並列に算出するのに必要な参照データが参照特徴面302のデータ301である。
図3のシフトレジスタ303及びシフトレジスタ307は、それぞれ参照データ301及びコンボリューションカーネルの係数データを保持する。シフトレジスタ303は複数の積和演算器304に異なる参照位置のデータを並列に供給し、シフトレジスタ307は複数の積和演算器304に共通の係数データを順次供給する。シフトレジスタ303及びシフトレジスタ307は図示しないクロックに同期して順次動作し、その出力を並列積和演算器304で並列に演算する。ここで、算出する特徴面のデータo1に着目すると、1クロック目でo1=i1×w1が算出され、2クロック目でo1=o1+i2×w2、3クロック目o1=o1+i3×w3が演算さる。結果として3クロックで所望のコンボリューション結果(i1×w1+i2×w2+i3×w3)が得られる。コンボリューションカーネルが2次元の場合、参照データと係数データを変えながら上記処理を列単位に繰り返して累積することで2次元のコンボリューション演算が実現する。
この様に算出特徴面306を基準にしてコンボリューション演算を行うことでフィルタカーネルのサイズに応じたクロック数で積和演算器304の並列度に対応する位置の特徴面306のデータを並列に算出することができる。
本実施形態はこの様な算出する特徴面を基準とした並列コンボリューション演算手法を例として説明する。本実施形態の演算手法は、フィルタカーネルのサイズ及び積和演算器304の並列度に因果関係がないという特徴を有している。つまり、コンボリューション演算を様々な並列度で処理することができる。
図1に示す演算回路は図10に示す画像処理装置における演算回路1002に相当する部分である。図1に示す演算回路は図15に示す様な複数のデータ群の階層的な結合関係に従って、下位の階層から特徴面を順次算出していく。RAM101は、演算対象となる前階層のデータや演算結果のデータを格納するメモリ。RAM101は図10のRAM101と同一である。
制御部102は、データ転送に関する制御・特徴面の処理順等に関する制御を司る。図4は制御部102のより詳細な構成を説明する図である。シーケンス制御部1201は、レジスタ群1202に設定された情報に従って、図1の動作を制御する各種制御信号1204を入出力する。同様に、シーケンス制御部1201はメモリ制御部1205を制御するための制御信号1206を出力する。シーケンス制御部1201はバイナリカウンタやジョンソンカウンタ等からなるシーケンサにより構成される。レジスタ群1202は、複数のレジスタセットからなり、例えば参照する特徴面や算出する特徴面に関する情報、カーネルに関する情報、特徴面の処理順等関する情報等を記録する。レジスタ群1202は、ブリッジ1004及び画像バス1003を介してCPU1007から予め所定の値が書き込まれる。
参照データシフトレジスタ106は並列積和演算器107に参照データを供給するデータ供給部である。参照データシフトレジスタ106は、参照データバッファ105にバッファリングされた参照データ(コンボリューション演算に必要な前階層の特徴面データ)を所定のタイミングで並列積和演算器107に並列に供給する。係数データシフトレジスタ104は並列積和演算器107に係数データを供給するデータ供給部であり、コンボリューション演算に必要なパラメータデータ(重み係数)を並列積和演算器107に順次に供給する。
並列積和演算器107は、m個(mは1以上)の積和演算器を内蔵するものとする。並列積和演算器107は同一のクロックで並列に動作する。図6は並列積和演算器107の概略構成を示す図である。データ6011〜601mは参照データシフトレジスタ106の出力データであり、各乗算器6031〜603mへ供給される異なる参照データである。データ602は係数データシフトレジスタ104の出力データであり、各乗算器6031〜603mへ共通に供給されるデータである。累積加算器6041〜604mは、コンボリューションカーネル演算期間中乗算結果を累積する。クリア信号605は、所定のコンボリューション演算単位が終了すると累積加算器6041〜604mの内蔵ラッチをクリアするために使用される。ラッチイネーブル信号(Latch Enable信号)606は、当該信号で累積加算値を更新する。Latch Enable信号には図示しないクロック信号に同期した信号が接続されるものとする。
係数データ保持部1031〜103nは、RAM101に格納されている係数データ(パラメータデータ)から、演算処理に必要な係数データを一時的に格納する。係数データ保持部1031〜103nは、キャッシュやプリフェッチバッファにより構成される。係数データ保持部1031〜103nは、n個(nは1以上)の保持部を有し、n種類のコンボリューションカーネルに対応する重み係数を保持する。本実施形態では、係数データはRAM101に格納されているものとするが、RAM101に限定せず、他の記憶部や記憶装置に格納してもよい。例えば、図示しないROM等に係数データが格納されている構成でもよい。演算結果取り出し部として、結果シフトレジスタ108はコンボリューション演算の終了毎に演算結果を取り出す。
本実施形態では、係数データバッファ1031〜103nに複数種類のコンボリューションカーネルを格納し、順次切り替えて並列積和演算器107に供給することで、同じ参照データに対して異なるコンボリューション演算を処理する。即ち、異なる特徴面のデータを順に算出する。
非線形変換処理部109は、結果シフトレジスタ108から出力されるデータに対してシグモイド関数等の非線形変換処理を行う。非線形変換処理部109の出力結果は制御部102を介してRAM101に格納され、次の階層の参照データとしてRAM101に保持される。RAM101に格納された前階層の演算結果である特徴面を参照することで多階層のネットワークを順次処理することができる。
係数データシフトレジスタ104、参照データシフトレジスタ106及び結果シフトレジスタ108はデータロード機能付のシフトレジスタである。参照データバッファ105及び係数データバッファ1031〜103nは、それぞれ参照データシフトレジスタ106及び係数データシフトレジスタ104と同じビット幅の複数のレジスタで構成される。結果シフトレジスタ108は、並列積和演算器107の累積加算器出力の有効ビットと同じビット数の複数のレジスタで構成される。図7にこれらのシフトレジスタの構成例を示す。
図7はレジスタ個数が4の場合の例を説明する。多ビットのフリップフロップ701a〜dは、CLOCK信号に同期して所定bitのデータをラッチする。セレクタ702a〜cは、選択信号(Load信号)が0の場合OUTx(x:0〜2)が選択され、1の場合INx(x:1〜3)が選択される。即ち、Load信号に応じてシフト動作とロード動作が選択される。Enalbe信号はデータ遷移のイネーブル信号であり、1である場合は、CLOCK信号の立ち上がりでデータをラッチし、0である場合は、ラッチしたデータをそのまま保持する(状態遷移しない)。
図1におけるLoad2/Load4/Load5信号はそれぞれ係数データシフトレジスタ104、参照データシフトレジスタ106、結果シフトレジスタ108のLoad信号である。図1におけるEnable1/Enable2/Enable3信号はそれぞれ係数データシフトレジスタ104、参照データシフトレジスタ106、結果シフトレジスタ108のEnable信号である。係数データシフトレジスタ104は初期データのロード後、水平方向のコンボリューションカーネルサイズと同じクロック数シフト動作を実行する。シフト動作に応じて、並列積和演算器107に対して重み係数データを順次供給する。シフトレジスタ405a,bのそれぞれの図7におけるOUTn信号が全ての並列積和演算器107に共通に接続される。
同様に、参照データシフトレジスタ106は参照データバッファ105から初期データがロードされる。以後水平方向のコンボリューションカーネルサイズと同じクロック数シフト動作を実行し、並列積和演算器107に対して複数の参照データ(図7 OUT1〜OUTn信号)を同時に供給する。
係数データシフトレジスタ104と参照データシフトレジスタ106は同期して動作する。係数データシフトレジスタ104及び参照データシフトレジスタ106から供給されるデータに従って、並列積和演算器107が積和演算を実行する。ここで得られた累積和は、対象特徴面に対応する全コンボリューションカーネルの演算終了後、結果シフトレジスタ108にロードされ、所定のタイミングで非線形変換処理部109に送られる。並列積和演算器107は、図6に示すようにそれぞれ同一クロックで動作する同一の回路がm個並んでいるものとする。結果シフトレジスタ108はm個の積和演算出力を保持することが可能なフリップフロップで構成する。
並列積和演算器107の出力は所定の有効ビットのみ結果シフトレジスタ108に接続する。非線形変換処理部109はルックアップテーブル等により構成することができる。ここで変換処理されたデータはRAM101の所定アドレスに格納される。ここでの格納アドレスも制御部102に従って制御される。
図5は本実施形態の演算回路による並列処理の具体例を模式的に説明する図である。図5の参照データ面802及び算出データ面804は、それぞれラスタスキャンされたデータ座標を用いて表す。参照データ面802は、各データ(模式的に示す最小一升)がラスタスキャン順でRAM101に格納された前階層の演算結果(input(x,y)、x:水平方向位置、y:垂直方向位置)を示すものであるとする。算出データ面804は、各データがラスタスキャンされた演算結果(output(x,y)、x:水平方向位置、y:垂直方向位置)を示すものとする。
算出範囲803は並列積和演算器107(m=4の場合)で並列に演算して得られるデータの位置を示し、参照範囲801がコンボリューション演算のカーネルサイズが3×3である場合の算出範囲803に対する参照データの範囲である。制御部は参照範囲801内の各ラインのデータを順に参照データレジスタバッファに転送し、並列積和演算器は参照データのシフト動作に伴ってコンボリューション演算を実現する。
ここで、コンボリューション演算処理の基本的な動作について説明する。本実施形態によるコンボリューション演算は、算出特徴面の水平方向に連続するm画素位置のデータを並列に算出するものである。係数データバッファ1031〜103nのそれぞれは少なくともコンボリューションカーネルの水平方向のサイズより多いレジスタで構成される。例えば重み係数が8ビットで表されるデータの場合、8ビット幅の複数のレジスタで構成される。例えば、水平方向のコンボリューションカーネルサイズが「11」の場合、当該レジスタの数は「11」とする。
実際には、想定する最大コンボリューションサイズのレジスタ数で構成する。制御部102は、積和演算処理に必要な複数種類の係数を当該レジスタに予めロードし、算出特徴面毎に選択して利用する。参照データバッファ105はRAM101に格納された参照データの一部を一時的に保持するために使用される。
参照データが8ビットで表されるデータの場合、参照データバッファ105は8ビット幅の複数のレジスタで構成される。参照データバッファ105は所定数以上の個数のレジスタで構成される。この所定数は、並列に処理する複数の演算器のそれぞれが一単位のコンボリューション演算を実行するために必要な参照データの数である。この所定数は、例えば、(「並列に処理する演算器の数」+「並列処理する方向と同じ方向のコンボリューションカーネルサイズ」−1)×「並列処理する方向と直行する方向のコンボリューションカーネルサイズ」によって計算される。
さらに、ここでは、参照データの読み出しとコンボリューション演算をパイプライン動作させるために、参照データバッファは上記サイズの2倍のレジスタからなるダブルバッファで構成されてよい。参照データバッファは制御部102の制御に従って参照データシフトレジスタ106にロードする複数のデータを並列に出力する。
図2は図1の演算回路の動作モードを概念的に説明する図である。
図2(A)は1対1の結合関係のネットワークを4並列で動作する積和演算器202を用いて算出する場合の例を示している。ここでは算出する特徴面206の4画素位置203のコンボリューション演算を並列に処理する。積和演算器202はコンボリューション演算の内容によって定まる必要な参照データ201を、データバッファ205を介して参照しながら並列処理単位でラスタ―スキャン順に演算を進める。
図2(B)は1対2の結合関係のネットワークを図2(A)で示す構成の演算処理装置で処理する場合の例を示している。4並列の積和演算器202を用いて特徴面208、209を順に処理する。特徴面208では算出領域207、210の順に算出する。即ち、並列処理単位で面順次処理により特徴面208、209を順次算出する。この場合、特徴面208と209が参照する参照データは共通であるが、特徴面を面順次で順に処理するため、特徴面208,209の処理毎に同じ参照データ201がデータバッファ205に転送されることになる。
図2(C)は4並列の積和演算器202を用いて異なる特徴面208、209を並列処理単位で順次算出する。つまり、算出領域207、211、210、212の順に処理する。この場合、例えば、2つの特徴面208、209の算出領域207,211の演算時に必要となる参照特徴面204上の参照データ201はデータバッファ205に保持され、再利用される。一般的に、参照特徴面は低速な大容量なメモリに格納され、データバッファ205は高速・小容量なメモリやレジスタ等で構成される。図2(C)に示すように複数の特徴面を跨いで並列処理単位で順に処理する場合、データバッファ205を介して特徴面208と209の対象領域算出時のデータを共用する事ができる。このため、図2(B)に示すように面順次で処理する場合に比べて参照データのデータバッファ205への転送数を半減させることができる。参照データの読み出し転送速度を考慮しない場合、図2(B)と図2(C)の処理時間を同等とみなすことができるが、転送速度が遅い場合、図2(B)はデータ転送時間が処理時間を律し、図2(C)に比べて処理時間が増加する場合がある。これは、演算器の並列度が高く、コンボリューションカーネルのサイズが小さい場合に顕著になる。
この例で示すように、CNNネットワークの構成や動作条件に応じて図2(A)と図2(C)に示すように処理順を切り替えることで並列演算器の数に応じた最良の性能を引き出すことができる。
本実施形態では、CNNネットワークの構成や動作条件に応じて演算回路の処理順を最適化し、適切な動作モードを選択することを提案する。
次に、図8及び図9を用いて本実施形態の演算回路の動作モードをより詳細に説明する。図8は、図2(A)に示すように、各特徴面を面順次で順次に演算する場合のタイムチャート概要を示す。図9は、図2(C)に示すように、2つの特徴面をコンボリューション演算単位で切り替えながら演算する場合のタイムチャート概要を示す。図8及び図9は、演算処理の処理順が異なる動作モードのタイムチャートである。動作モードは制御部102内のレジスタ群1202の設定で変更可能である。
まず、図8を用いて、一つの特徴面を並列処理単位でラスタスキャン処理する場合の例(図2Aの処理に相当する)を説明するで。なお、図8に示す信号は全て図示しないクロック信号に基づいて同期動作する。図8は特徴面処理開始時の一部のタイミングを示す。図8はカーネルサイズが5×5の場合である。
係数データバッファ1031〜103nには、特徴面の演算処理開始前に、必要な係数データがロードされているものとする。sel信号は係数データバッファ1031〜103nの出力を選択する信号であり、複数のコンボリューションカーネルに対応する係数から所望の係数を選択するために使用する。ここでは、一つの特徴面を演算処理する動作中では、sel信号は常に0である。
また、参照データバッファ105には、カーネル垂直方向演算区間1である区間402では、演算処理するために必要な参照データが全てロードされているものとする。
制御部102は、まず、次のカーネル垂直方向演算区間2である区間403で必要な参照データのロードを開始するためにLoad3信号を有効化する。ここで、Load3信号は信号レベル1の場合が有効化された状態であるものとする。なお、カーネル垂直方向区間1に必要な参照データは既に参照データバッファ105に格納済みであるとする。ここでは、参照データバッファはダブルバッファで構成されているとし、データの参照とデータのロードを同時に処理可能である。
制御部102は、Load3信号の有効化と同時にRAM101から参照データを取り出し、参照データバッファ105にセットする。セットするデータの数はコンボリューションカーネルの大きさ及び並列度から決定する。例えば、コンボリューション演算のカーネルサイズが5×5である場合、演算器の並列度を20とすると、20+5−1=24個のデータをセットする。*CLR信号は、並列積和演算器107の累積加算器6041〜604mを初期化するための信号であり、当該信号が0である場合、累積加算器に内蔵するレジスタは0に初期化される。
制御部102は、新たな特徴面位置のコンボリューション演算開始前に*CLR信号を0にする。参照データバッファ105はダブルバッファ構成であるため、カーネル垂直方向演算区間1(区間402)で使用するデータを出力すると共に、カーネル垂直方向演算区間2(区間403)で使用するためのデータを格納する。以後、参照データバッファ105は図示しないトグル信号に従ってダブルバッファとしてデータの読み出し、書き出しが制御される。
Load2信号は係数データシフトレジスタ104の初期化を指示するための信号である。当該信号が1でかつEnable1信号が有効(信号レベル1)の場合、係数データバッファ1031に保持する複数の重み係数データが係数データシフトレジスタ104に一括ロードされる。
Enable1信号はシフトレジスタのデータ遷移を制御する信号である。演算器の動作中は、Enable1信号は常に1に設定されているため、Load2信号が1の場合、クロック信号に応じての出力をラッチし、Load2信号が0の場合、クロック信号に応じてシフト処理を継続する。
制御部102のシーケンス制御部1201は、コンボリューションカーネルの水平方向サイズに応じたクロック数をカウントするとLoad2信号を有効化し、シフト動作を停止させる。同時に、シーケンス制御部1201は、係数データバッファ1031に保持する重み係数データを係数データシフトレジスタ104に一括ロードする。
即ち、コンボリューションカーネルの水平方向単位で重み係数を一括ロードし、ロードした係数を動作クロックに応じてシフトアウトする。ここで、図8の場合Sel信号は常に0x00であり、係数データバッファ1031〜1031nは特定のカーネルの係数を順次に出力する。つまり、同じカーネルで一つの特徴面を算出する。
Load4信号は、参照データシフトレジスタ106の初期化を指示するための信号である。当該信号が1でかつEnable2信号が有効(信号レベル1)の場合、参照データバッファ105に保持する参照データが参照データシフトレジスタ106に一括ロードされる。参照データバッファ105に格納されているデータは、図示しないタイミング信号に従って水平方向の処理単位で必要な参照データを出力する。参照データバッファ105が出力するデータはカーネル水平方向演算区間(区間401)毎に対応する異なる参照データを出力する。
なお、Enable2信号はシフトレジスタのデータ遷移を制御する信号であるが、動作中は常に1に設定されている。従って、Load4信号が1の場合、クロック信号に応じて参照データバッファ105の出力をラッチし、Load4信号が0である場合、クロック信号に応じてシフト処理を継続する。
制御部102のシーケンス制御部1201は、コンボリューションカーネルの水平方向サイズに応じたクロック数をカウントするとLoad4信号を有効化し、シフト動作を停止させると同時に参照データバッファ105に保持する参照データを一括ロードする。
即ち、コンボリューションカーネルの1列単位で必要な参照データを一括ロードし、ロードした参照データを動作クロックに応じてシフトする。以上、制御部102はLoad4信号をLoad2信号と同一タイミングで制御する。
並列積和演算器107は、クロックに同期して積和演算を継続しているため、シフトレジスタ104及び106のシフト動作に従って算出する特徴面の複数の点に対して同時にコンボリューションカーネルサイズに応じた積和演算処理を実行する。
具体的には、シフトレジスタ104とシフトレジスタ106のシフト動作期間(図8中のカーネル水平方向演算区間401)中にコンボリューションカーネルの1列分の積和演算がなされることになる。
当該列単位の演算を重み係数及び参照データを入替ながら水平方向に繰り返すことで並列度の数に応じた二次元のコンボリューション演算結果が算出される(図8のカーネル垂直方向演算区間1(区間402))。
このように、制御部102はカーネルサイズ及び並列度に応じて各信号を制御することで、積和演算処理と積和演算処理に必要なデータ(参照データ)のRAM101からの供給を並行に実行させる。
Load5信号は並列積和演算器の結果を結果シフトレジスタ108に並列にロードするための信号であり、制御部102は対象となる特徴面の並列処理単位の積和演算が終了するとLoad5信号及びEnable3信号に1を出力する。結果シフトレジスタ108はLoad5信号が1でEnable3信号が1の場合、並列積和演算器107の出力を一括ロードする。制御部102はシフトレジスタ104及び105のシフト動作中にEnable3の信号を有効化し、結果シフトレジスタ108に保持する演算結果をシフトアウトする。シフトアウトした演算結果は非線形変換処理部109で変換処理された後、制御部102により、レジスタ群1202に記された演算結果格納先ポインタ等の情報に従ってRAM101の所定のアドレスに格納される。
本実施形態の演算回路では、RAM101に対する参照データの読み出し、演算結果の書き出しを積和演算処理期間に並行処理することで、高速に処理することができる。但し、並列度とコンボリューションカーネルの関係によっては、RAM101へのアクセスを積和演算期間中に完全にパイプライン化できない場合もある。例えば、並列度が高くかつコンボリューションカーネルが小さい場合は、Load3による参照データの転送が間に合わない場合がある。その場合、制御部102はRAM101へアクセス完了を優先し、Enable1/Enable2/Enable3信号及び累積加算器のLatch Enable信号を制御することで積和演算処理の開始を遅延させる。
図9は2つの特徴面を並列演算単位で順に処理する場合のタイムチャートである。つまり、図2(C)に対応する。
ここでは図8との違いのみについて説明する。図9はSel信号とLoad3信号が図8と異なる。図9は2つの特徴面をカーネル演算単位で切り替えながら処理する場合の例を示している。特徴面の処理開始に先立ち、制御部102は係数データバッファ1031及び係数データバッファ1032にそれぞれ特徴面の演算に必要な重み係数を格納する。また、参照データバッファ105にはカーネル垂直方向演算区間1(区間502)及びカーネル垂直方向演算区間2(区間503)で共通に使用する参照データが既にロードされているものとする。
カーネル垂直方向演算区間1(区間502)ではsel=0x00で選択される係数データを用いて並列積和演算器107でコンボリューション演算実行される。一方カーネル垂直方向演算区間2(区間503)ではsel=0x01で選択される係数データを用いてコンボリューション演算が実行される。この2つの区間では、参照データバッファ105に格納済みの共通の参照データが参照され、参照データバッファ105が出力する参照データは図8の場合と同様に図示しないタイミング信号に従って水平方向の処理単位で必要な参照データを出力する。その際、カーネル垂直方向演算区間1(区間502)とカーネル垂直方向演算区間2(区間503)では水平方向の処理単位で同じ参照データが繰り返し出力する。このため、カーネル垂直方向演算区間3(区間504)と非図示のカーネル垂直方向演算区間4で共通に使用する参照データのロードに許される時間は区間505となり、図8のケース(区間405に対応)に対して2倍の時間となる。
図9の動作では参照データを共有し、係数データを入れ替えて順次処理することで図2(c)の特徴面208における算出領域207及び特徴面209における算出領域211のデータを順次に算出する。更に、カーネル垂直方向演算区間3(区間504)では再び係数を入れ替えて特徴面208の算出領域210のデータを算出する。この様に参照データを再利用しながら、係数を入れ替えることで算出する特徴面の処理順を制御する。
図8と比べて明らかな様に、図9の場合、2つのカーネル垂直方向演算区間(区間502、区間503)で参照データを共有することで、参照データバッファへのデータ転送回数(=転送レート)を半減することが可能になる。これにより、参照データの転送に時間を要する場合、或いはカーネルサイズが小さく、カーネル演算区間が短い場合に、データ転送が処理時間を律するケースを低減することができる。
例えば、並列積和演算器107の並列度を20、カーネルサイズを5とし、並列演算器は1サイクルで一つの重み係数に対する積和演算を完了するものとする。また重み係数が1バイトであり、データ転送サイクルが4バイト/サイクルであるとすると、一つのコンボリューション処理あたりの処理サイクルは図8の動作モードでは以下の様になる。
並列演算処理単位の処理サイクルは5×5=25サイクルである。
並列演算処理単位の演算に必要な参照データの転送に要する処理サイクルは(20+5−1)×5/4=30サイクル。
この場合、データ転送が処理時間を律することになり、並列演算器の性能を十分活かしていない。
一方、図9の動作モードでは、参照データを共有しているので、その処理サイクルは以下のようになる。
二つの並列演算処理単位の処理サイクル25×2=50サイクルである。
並列演算処理単位の演算に必要な参照データの転送に要する処理サイクルは30サイクルとなり演算処理が処理時間を律し、並列演算器の性能を活かしていることになる。
図10は本実施形態の演算回路1002を具備した画像処理装置の構成を示すものである。この画像処理装置は、入力画像データからパターン認識処理によって特定の物体を検出する機能を有する。図10の画像入力モジュール1000は、光学系、CCD又はCMOSセンサー等の光電変換デバイス及びセンサーを制御するドライバー回路/ADコンバーター/各種画像補正を司る信号処理回路/フレームバッファ等により構成される。
RAM(Random Access Memory)101は、演算回路1002の演算作業バッファとして使用されるメモリである。RAM101にはCNNの特徴面に相当するデータが記憶される。
DMAC(Direct Memory Access Controller)1006は、画像バス1003上の各処理部とCPUバス1010間のデータ転送を司る。ブリッジ1004は、画像バス1003とCPUバス1010のブリッジ機能を提供する。
前処理モジュール1005は、CNN処理によるパターン認識処理を効果的に行うための各種前処理を行う。前処理モジュール1005は、色変換処理/コントラスト補正処理等の画像データ変換処理を処理するハードウェアである。
CPU1007は、制御プログラムを実行することによって、装置全体の動作を制御するものである。ROM(Read Only Memory)1008は、CPU1007の動作を規定する命令やパラメータデータを格納する。RAM1009はCPU1007の動作に必要なメモリである。CPU1007はブリッジ1004を介して画像バス1003上のRAM101にアクセスすることも可能である。
図11は本実施形態の画像処理装置の動作を説明するフローチャートである。以下、フローチャートは、CPU1007が制御プログラムを実行することにより実現されるものとする。ステップS1101では認識処理の開始に先立ち、CPU1007が各種初期化処理を実行する。CPU1007は、演算回路の動作に必要な重み係数をROM1008からRAM101に転送すると共に、演算回路1002の動作、即ちCNNのネットワーク構成を定義する為の各種レジスタ設定を行う。具体的には、CPU1007は、演算回路1002の制御部102に存在する複数のレジスタに所定の値を設定する。同様に、CPU1007は、前処理モジュール1005等のレジスタに対しても動作に必要な値を書き込む。
次に、ステップS1102で各特徴面を算出する際の処理順を決定する。
図8と図9等で説明したように、CNNのネットワーク構造やRAM101から演算器に対するデータ転送性能、並列に動作する演算器の数等の条件に従って特徴面の処理順を決定する。例えば、下位階層の特徴面に対して複数の特徴面を算出する場合、転送サイクルと演算サイクルに基づいて処理順を決定する。転送サイクルは複数の算出特徴面の位置を並列に処理するコンボリューション演算に必要な参照データの読み出しに必要なサイクル(転送時間)であり、演算サイクルはコンボリューション演算に要する処理サイクルである。転送サイクルと演算サイクルに基づいて、処理順を決定する。
即ち、ステップS1102で、動作条件に基づいて各特徴面を面順次で特徴面毎に順次処理するか、或いは特徴面を跨いで演算器の処理単位で順次処理するかを決定する。
ステップS1101の初期化処理及びステップS1102の処理順決定が終了した後に、一連の物体認識動作が開始する。
まず、ステップS1103では画像入力モジュール1000が、画像センサーの出力する信号をディジタルデータに変換し、フレーム単位で図示しない(画像入力部1000に内蔵する)フレームバッファに格納する。
フレームバッファへの格納が完了すると、ステップS1104では、所定の信号に基づいて、前処理モジュール1005が画像変換処理を開始する。前処理モジュール1005は、前記フレームバッファ上の画像データから輝度データを抽出し、コントラスト補正処理を行う。
輝度データの抽出は一般的な線形変換処理によりRGB画像データから輝度データを生成する。コントラスト補正の手法も一般的に知られているコントラスト補正処理を適用してコントラストを強調する。前処理モジュール1005は、コントラスト補正処理後の輝度データを検出用画像としてRAM101に格納する。
1フレームの画像データに対して前処理が完了すると、前処理モジュール1005は図示しない完了信号を有効にする。ステップS1105では、演算回路1002は当該完了信号に基づいて演算回路1002を起動し、CNNに基づく物体の検出処理を開始する。ステップS1106では、最終層の特徴面の算出が終了すると演算回路1002はCPU1007に対して完了割り込みを発生する。ステップS1107では、CPU1007は演算回路1002の処理終了割り込を受信すると、最終層の特徴面を解析し、画像中の物体の位置や属性を判定する。ステップS1107の解析処理が完了すると、ステップS1108では、次のフレームの画像に対する処理を継続する。
以上、本実施形態では、並列積和演算器107に供給する参照データと係数データを動作条件に応じて制御することで処理する特徴面の順番をコンボリューションカーネル単位で変える。これにより、参照データの再利用性を高め、メモリアクセスボトルネックを解消することができる。
本実施形態によれば、CNNネットワークの構成や参照データの転送サイクル及び演算サイクルに基づいて特徴面の処理順を制御することで、簡単な制御で、様々なネットワークを効率的に処理することができる。
なお、本実施形態では2つ特徴面を跨ぐ処理順で処理する場合について説明したが、これに限るわけではなく、更に多くの特徴面を切り替えながら処理する構成でも良い。
また、本実施形態では係数データバッファを複数有する構成の例を示した。この場合、係数データのロード時間の影響を低減することができるが、この限りではない。
また、本実施形態では並列演算器で2次元のコンボリューション演算を処理する場合について説明したが、コンボリューション演算に限るわけではない。実施形態では2次元の画像データに対するCNN処理の例を説明したが、音声データ等の1次元データや時間方向の変化も含めた3次元データに対するCNN処理に適用することも可能である。
また、本実施形態ではCNN処理の場合について説明したがこれに限るわけではなく、Restricted Boltzmann MachinesやRecursive Neural Network等他の階層的な処理に適用可能である。
また、本実施形態では図5に示すように、水平方向に並ぶ複数の特徴面のデータを並列に処理する場合について説明したが、これに限るわけでなく、垂直方向に連続する特徴面データを並列に処理する構成にしても良い。
また、本実施形態では、複数の積和演算器が並列に処理することについて説明したが、これに限るわけでなく、一つの積和演算器を用いて特徴面データを算出する構成にしても良い。
(第2の実施形態)
実施形態1ではコンボリューションカーネル単位で処理する特徴面を切り替えながら処理する構成について説明したが、本実施形態では積和演算単位で処理する特徴面を切り替えながら処理する構成について説明する。
図13は本実施形態の演算回路の構成を示す図である。ここでは第1の実施形態との違いのみについて説明する。図13は図1の構成に対して積和ステート保持部110が新たに追加されている。積和ステート保持部110は、積和演算のステートを保持する機能を有する。図14は積和ステート保持部110を含む並列積和演算器107の構成と動作を説明する図である。
図14(A)に示すように3つの特徴面1405〜1407を演算処理単位で順に処理する場合について説明する。フィルタカーネル1402〜1404はそれぞれ特徴面1405〜1407を算出する際に必要となるコンボリューションカーネルマトリクスである。
図14(B)は係数データシフトレジスタ1408、参照データシフトレジスタ1409、並列積和演算器1410、積和ステート保持部110の例を説明する図である。係数データシフトレジスタ1408は、図1の係数データシフトレジスタ104と同様に、重み係数を積和演算器1410に順に供給する。参照データシフトレジスタ1409は、図1の参照データシフトレジスタ106と同様に、参照データを積和演算器1410に供給する。積和演算器1410は、ここでは並列積和演算器の中の一つの積和演算器を示している。積和演算器1410は乗算器と加算器からなる。積和ステート保持部1101411は、複数の積和ステート保持部の中の一つの積和ステート保持部を示している。累積和シフトレジスタ1412は、3つのシフトレジスタからなる。セレクタ―1413は、累積和シフトレジスタ1412の出力のいずれかを選択する。
図14(C)は、図14(B)に示す構成の動作を説明する図である。ここでは3つの特徴面1405〜1407を積和演算単位に順に処理する場合について説明する。係数データシフトレジスタ1408には係数データ1402〜1404が係数毎にインターリーブした順番で格納する。ここではカーネルサイズが3×3のフィルタカーネルについて説明する。データ列A1〜A3、データ列B1〜B3及びデータ列C1〜C3はそれぞれフィルタカーネル1402〜1404の一つのデータ列であるとする。この場合、セレクタ1413は、累積和シフトレジスタ1412のMA3出力をフィードバックするように設定する。
係数データシフトレジスタの出力1414は、異なるカーネルの係数がインターリーブされた順番で順に出力する。第1の実施形態ではSel信号を制御して演算に使用するカーネルの係数を選択する必要があるが、本実施形態の場合は、その必用はない。係数データバッファ1031〜103nに係数データを格納する際に異なるカーネルの係数データをインターリーブした順番で格納するだけで良い。制御部102は、係数データバッファ1031への係数データ格納時に、係数データをインターリーブした状態で格納しておく。
参照データシフトレジスタの出力1415は、参照データを順にシフト出力する。ここでは、参照データシフトレジスタのシフトクロックは、係数データシフトレジスタのシフトクロックの1/3となる。最初の3クロックで参照データD1に対する3つの異なるフィルタカーネルの積和演算を処理し、乗算器出力1406は、累積加算出力1417と同じである。その次に、順次に累積和シフトレジスタの出力1418〜1420が図14(C)のように変化する。累積和シフトレジスタ1412のMA3を積和演算器1410に帰還することで3つのステートの積和演算結果を保持することが可能になる。図14(C)において点線で示す矢印はコンボリューションカーネル1402に対する積和演算の状態を示すものである。累積和シフトレジスタ1412を介した積和演算ループにより、9サイクル後に累積和シフトレジスタ1412の出力にコンボリューション演算結果が出力されている(出力1420)。同様に、コンボリューションカーネル1403、1404に対するコンボリューション演算結果が累積和シフトレジスタ1412の出力として順次に出力する。
図12は本実施形態の動作タイミング例を示す図である。基本的な動作は第1の実施形態と同じである。本実形態ではLaod3信号の有効期間で、並列度水平方向とカーネルサイズに応じたデータをRAM101から読み出す。また、カーネル水平方向演算区間で3つの異なる特徴面の行単位の積和演算を算出し、カーネル垂直方向演算区間で3つの特徴面のコンボリューション演算を実行する。演算結果は非線形変換処理部109を通して、3つの特徴面の結果がインターリーブされた順番で出力される。
このように本実施形態では、積和演算単位で異なるコンボリューション演算を順次処理する。このため、参照データを積和演算単位で共有し、再利用することができる。即ち、3つの特徴面を算出するに際してRAM101から係数データシフトレジスタに転送する参照データの回数は1回で良い。従って、第1の実施形態の場合と同様にRAM101から係数データバッファ1031〜nへのデータ転送が処理時間を律する可能性を低減することができる。
また、第1の実施形態ではコンボリューションカーネル演算単位で特徴面を跨いで処理するため、参照データバッファに格納する参照データとして、カーネル演算に必要なサイズの参照データが必要になる。一方、本実施形態では、積和演算単位で特徴面を跨いで処理するため、積和演算単位に必要なサイズの参照データでよい。即ち、「並列に処理する演算器の数」+「並列処理する方向と同じ方向のコンボリューションカーネルサイズ」−1だけで良い。
更に、本実施形態では、特徴面を跨いで処理する特徴面の数を変更する場合、係数データシフトレジスタ1408に設定するデータとセレクタ1413の設定及び参照データシフトレジスタ1409のシフトクロックを修正するだけで良い。例えば、2つの特徴面を積和演算単位で跨いで処理する場合、係数データシフトレジスタには係数データAn1402とBn1403をインターリーブして格納する。参照データシフトレジスタのシフトクロックは1/2倍とし、累積和シフトレジスタ1412のMA2出力を積和演算器1410の加算器に帰還するように設定する。このように簡単な構成の追加で特徴面の処理順に関する自由度を高めることができる。
第2の実施形態では算出る特徴面の数が1〜3の場合に処理順を制御する場合について説明したがこれに限るわけではない。累積和シフトレジスタ1412の数を増やすことでより多くの算出特徴面に対して処理順を制御することができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101 RAM
102 制御部
103 係数データバッファ
104 係数データシフトレジスタ
105 参照データバッファ
106 参照データシフトレジスタ
107 並列積和演算器
108 結果シフトレジスタ
109 非線形変換処理部

Claims (16)

  1. フィルタ演算の参照データと該フィルタ演算に用いるフィルタの係数データとを記憶する記憶装置と接続する演算回路であって、
    前記参照データと前記フィルタの係数データとの前記フィルタ演算を実行する少なくとも一つの演算器と、
    前記記憶装置から転送された所定数の参照データを保持する第1保持手段と、
    前記記憶装置から転送された第1フィルタの係数データ及び第2フィルタの係数データを保持する第2保持手段と、
    前記演算器に、前記第1保持手段に保持された前記参照データと前記第1フィルタの係数データとの演算を実行させた後に、前記第1保持手段に保持された前記参照データと前記第2フィルタの係数データとの演算を実行させる制御手段と、
    を有することを特徴とする演算回路。
  2. 前記第1保持手段から参照データをロードし、前記演算器に供給する第1供給手段と、
    前記第2保持手段から第1フィルタの係数データ又は第2フィルタの係数データをロードし、前記演算器に供給する第2供給手段と、をさらに有し、
    前記制御手段は、前記第2供給手段に、前記第2保持手段から前記第1フィルタの係数データをロードさせた後に、前記第2保持手段から前記第2フィルタの係数データをロードさせることを特徴とする請求項1に記載の演算回路。
  3. 第1保持手段は、少なくとも第1バッファと第2バッファとを有し、前記第1バッファは前記フィルタ演算に用いる前記参照データを保持し、保持した該参照データを前記演算器に供給する期間において、前記第2バッファは、前記記憶装置から転送された参照データを保持することを特徴とする請求項1又は2に記載の演算回路。
  4. 前記フィルタ演算は、前記参照データと前記フィルタの係数データとのコンボリューション演算であることを特徴とする請求項1乃至3の何れか1項に記載の演算回路。
  5. 前記演算器の出力データを保持するシフトレジスタと、前記シフトレジスタの出力データに対して非線形変換の処理を行う変換手段と、をさらに有することを特徴とする請求項1乃至4の何れか1項に記載の演算回路。
  6. 前記制御手段は、前記シフトレジスタの前記出力データ又は前記変換手段の出力データを、前記記憶装置に記憶させることを特徴とする請求項5に記載の演算回路。
  7. フィルタ演算の参照データと該フィルタ演算に用いるフィルタの係数データとを記憶する記憶装置と接続する演算回路であって、
    前記参照データと前記フィルタの係数データとの前記フィルタ演算を実行する少なくとも一つの演算器と、
    前記記憶装置から転送された所定数の参照データを保持する第1保持手段と、
    前記記憶装置から転送された第1フィルタの係数データ及び第2フィルタの係数データを保持する第2保持手段と、
    前記第1保持手段から参照データをロードし、ロードされた該参照データを前記演算器に供給する第1供給手段と、
    前記第2保持手段から前記第1フィルタの係数データ及び前記第2フィルタの係数データをロードし、前記演算器に供給する第2供給手段と、
    前記演算器に、前記第1供給手段から供給された前記参照データと前記第1フィルタに含まれる一つの係数データとの演算を実行させた後に、該参照データと前記第2フィルタに含まれる一つの係数データとの演算を実行させる処理を繰り返す制御手段と、
    を有することを特徴とする演算回路。
  8. 前記フィルタ演算は、前記参照データと前記フィルタの係数データとのコンボリューション演算であることを特徴とする請求項7に記載の演算回路。
  9. 前記所定数は、前記演算器が一単位の前記コンボリューション演算を実行するために必要な参照データの数であって、前記演算器の数及び前記フィルタのサイズに基づいて決定されることを特徴とする請求項4又は8に記載の演算回路。
  10. 前記第1供給手段及び前記第2供給手段は、データロード機能付のシフトレジスタであることを特徴とする請求項2又は7に記載の演算回路。
  11. 前記フィルタ演算は、コンボリューショナルニューラルネットワークの複数のデータ群の階層的な結合関係により表現される演算であることを特徴とする請求項1乃至10の何れか1項に記載の演算回路。
  12. 前記演算回路は、前記フィルタ演算を並列に処理する複数の前記演算器を有し、前記制御手段は、前記階層的な結合関係に基づいて、前記複数の演算器による並列処理を制御することを特徴とする請求項11に記載の演算回路。
  13. 請求項1乃至12の何れか1項に記載の演算回路を有し、前記参照データとして画像データを処理することを特徴とする画像処理装置。
  14. 前記演算回路は、パターン認識のための演算処理を行うことを特徴とする請求項13に記載の画像処理装置。
  15. フィルタ演算の参照データと該フィルタ演算に用いるフィルタの係数データとを記憶する記憶装置と接続する演算回路の制御方法であって、
    前記参照データと前記フィルタの係数データとの前記フィルタ演算を、少なくとも一つの演算器によって実行する演算工程と、
    第1保持手段が、前記記憶装置から転送された所定数の参照データを保持する第1保持工程と、
    第2保持手段が、前記記憶装置から転送された第1フィルタの係数データ及び第2フィルタの係数データを保持する第2保持工程と、
    前記演算器に、前記第1保持手段に保持された前記参照データと前記第1フィルタの係数データとの演算を実行させた後に、前記第1保持手段に保持された前記参照データと前記第2フィルタの係数データとの演算を実行させる制御工程と、
    を有することを特徴とする方法。
  16. フィルタ演算の参照データと該フィルタ演算に用いるフィルタの係数データとを記憶する記憶装置と接続する演算回路の制御プログラムであって、
    前記参照データと前記フィルタの係数データとの前記フィルタ演算を、少なくとも一つの演算器に実行させる演算ステップと、
    前記第1保持手段に、前記記憶装置から転送された所定数の参照データを保持させる第1保持ステップと、
    前記第2保持手段に、前記記憶装置から転送された第1フィルタの係数データ及び第2フィルタの係数データを保持する第2保持ステップと、
    前記演算器に、前記第1保持手段に保持された前記参照データと前記第1フィルタの係数データとの演算を実行させた後に、前記第1保持手段に保持された前記参照データと前記第2フィルタの係数データとの演算を実行させる制御ステップと、
    をコンピュータに実行させることを特徴とするプログラム。
JP2016211898A 2016-10-28 2016-10-28 演算回路、その制御方法及びプログラム Active JP6945987B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016211898A JP6945987B2 (ja) 2016-10-28 2016-10-28 演算回路、その制御方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016211898A JP6945987B2 (ja) 2016-10-28 2016-10-28 演算回路、その制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2018073103A true JP2018073103A (ja) 2018-05-10
JP6945987B2 JP6945987B2 (ja) 2021-10-06

Family

ID=62114212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016211898A Active JP6945987B2 (ja) 2016-10-28 2016-10-28 演算回路、その制御方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6945987B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109460813A (zh) * 2018-09-10 2019-03-12 中国科学院深圳先进技术研究院 卷积神经网络计算的加速方法、装置、设备及存储介质
CN110276345A (zh) * 2019-06-05 2019-09-24 北京字节跳动网络技术有限公司 卷积神经网络模型训练方法、装置和计算机可读存储介质
JP2019219813A (ja) * 2018-06-18 2019-12-26 国立研究開発法人産業技術総合研究所 情報処理方法、システム及びプログラム
WO2020051751A1 (zh) * 2018-09-10 2020-03-19 中国科学院深圳先进技术研究院 卷积神经网络计算的加速方法、装置、设备及存储介质
CN111163690A (zh) * 2018-09-04 2020-05-15 深圳先进技术研究院 心律失常的检测方法、装置、电子设备及计算机存储介质
CN112766467A (zh) * 2021-04-06 2021-05-07 深圳市一心视觉科技有限公司 基于卷积神经网络模型的图像识别方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001298734A (ja) * 2000-04-11 2001-10-26 Matsushita Electric Ind Co Ltd 映像信号符号化方法及びその装置、並びに映像信号符号化プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2010134697A (ja) * 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001298734A (ja) * 2000-04-11 2001-10-26 Matsushita Electric Ind Co Ltd 映像信号符号化方法及びその装置、並びに映像信号符号化プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2010134697A (ja) * 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
安藤 洸太,外4名: "「深層畳込みニューラルネットワークに向けたデータ流再構成型演算器アレイアーキテクチャ」", 電子情報通信学会技術研究報告, vol. 第116巻,第53号, JPN6020040103, 12 May 2016 (2016-05-12), pages 29 - 34, ISSN: 0004369725 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019219813A (ja) * 2018-06-18 2019-12-26 国立研究開発法人産業技術総合研究所 情報処理方法、システム及びプログラム
JP7079483B2 (ja) 2018-06-18 2022-06-02 国立研究開発法人産業技術総合研究所 情報処理方法、システム及びプログラム
CN111163690A (zh) * 2018-09-04 2020-05-15 深圳先进技术研究院 心律失常的检测方法、装置、电子设备及计算机存储介质
JP2021526063A (ja) * 2018-09-04 2021-09-30 深▲セン▼先進技術研究院 不整脈検出方法、装置、電子装置およびコンピュータ記憶媒体
JP7304901B2 (ja) 2018-09-04 2023-07-07 深▲セン▼先進技術研究院 不整脈検出方法、装置、電子装置およびコンピュータ記憶媒体
CN109460813A (zh) * 2018-09-10 2019-03-12 中国科学院深圳先进技术研究院 卷积神经网络计算的加速方法、装置、设备及存储介质
WO2020051751A1 (zh) * 2018-09-10 2020-03-19 中国科学院深圳先进技术研究院 卷积神经网络计算的加速方法、装置、设备及存储介质
CN110276345A (zh) * 2019-06-05 2019-09-24 北京字节跳动网络技术有限公司 卷积神经网络模型训练方法、装置和计算机可读存储介质
CN112766467A (zh) * 2021-04-06 2021-05-07 深圳市一心视觉科技有限公司 基于卷积神经网络模型的图像识别方法

Also Published As

Publication number Publication date
JP6945987B2 (ja) 2021-10-06

Similar Documents

Publication Publication Date Title
JP6945986B2 (ja) 演算回路、その制御方法及びプログラム
JP6700712B2 (ja) 畳み込み演算装置
JP6945987B2 (ja) 演算回路、その制御方法及びプログラム
US9135553B2 (en) Convolution operation circuit and object recognition apparatus
EP3557485B1 (en) Method for accelerating operations and accelerator apparatus
US11467969B2 (en) Accelerator comprising input and output controllers for feeding back intermediate data between processing elements via cache module
US11449576B2 (en) Convolution operation processing method and related product
KR102258414B1 (ko) 처리 장치 및 처리 방법
JP6936592B2 (ja) 演算処理装置およびその制御方法
JP6800656B2 (ja) 演算回路、その制御方法及びプログラム
CN108681773B (zh) 数据运算的加速方法、装置、终端及可读存储介质
CN110989920A (zh) 能量高效的存储器系统和方法
JP2017151604A (ja) 演算処理装置
JP6532334B2 (ja) 並列演算装置、画像処理装置及び並列演算方法
JP7391553B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP7299770B2 (ja) 演算処理装置及び演算処理方法
Bevara et al. VLSI implementation of high throughput parallel pipeline median finder for IoT applications
JP6747305B2 (ja) データ処理装置及びニューラルネットワークシステム
CN110351482A (zh) 图像预处理装置、方法和一种相机
CN112184565B (zh) 一种多窗口串行的图像锐化方法
JP7321213B2 (ja) 情報処理装置、情報処理方法
Farahani et al. A Partial Method for Calculating CNN Networks Based On Loop Tiling.
Mishra et al. Hardware Acceleration of Computer Vision and Deep Learning Algorithms on the Edge using OpenCL
JP2020140625A (ja) 画像処理装置及び画像処理方法
CN111340224A (zh) 适用于低资源嵌入式芯片的cnn网络的加速设计方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191011

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210729

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210915

R151 Written notification of patent or utility model registration

Ref document number: 6945987

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151