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

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

Info

Publication number
JP2021012596A
JP2021012596A JP2019127080A JP2019127080A JP2021012596A JP 2021012596 A JP2021012596 A JP 2021012596A JP 2019127080 A JP2019127080 A JP 2019127080A JP 2019127080 A JP2019127080 A JP 2019127080A JP 2021012596 A JP2021012596 A JP 2021012596A
Authority
JP
Japan
Prior art keywords
data
memory
feature
memories
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
JP2019127080A
Other languages
English (en)
Other versions
JP7308674B2 (ja
JP2021012596A5 (ja
Inventor
しおり 脇野
Shiori Wakino
しおり 脇野
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 JP2019127080A priority Critical patent/JP7308674B2/ja
Priority to US16/916,334 priority patent/US11347430B2/en
Publication of JP2021012596A publication Critical patent/JP2021012596A/ja
Publication of JP2021012596A5 publication Critical patent/JP2021012596A5/ja
Application granted granted Critical
Publication of JP7308674B2 publication Critical patent/JP7308674B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)
  • Image Input (AREA)

Abstract

【課題】 メモリからの高速な読み出しと、メモリ利用効率の向上と、を可能にするための技術を提供すること。【解決手段】 演算処理装置は、コンボリューション演算を行う演算部と、演算部の画像データと演算結果とを格納する複数のメモリで構成されるデータ保持部とを有する。さらに演算処理装置は、演算部が出力する演算結果を受信し、該受信した演算結果のうち、同一特徴面の連続するラインのデータを異なるメモリに書き込み、同じ階層の複数の特徴面の同一座標のデータを異なるメモリに書き込むメモリ書き込み制御部を有する。さらに演算処理装置は、同一特徴面の連続するラインのデータを異なるメモリから読み出し、同じ階層の異なる特徴面の同一座標のデータを異なるメモリから読み出し、演算部へ送信するメモリ読み出し制御部を有する。【選択図】 図1

Description

本発明は、階層的なフィルタ演算処理を行う技術に関するものである。
Convolutional Neural Network(以下CNNと略記する)に代表される階層的な演算手法が、認識対象の変動に対して頑健なパターン認識を可能にする手法として注目されている。例えば、非特許文献1では様々な応用例・実装例が開示されている。
図7は簡単なCNNの例を示すネットワーク構成図である。701は入力層であり、画像データに対してCNNによる処理を行う場合、ラスタスキャンされた所定サイズの画像データに相当する。703a〜703dは第1階層708の特徴面、705a〜705dは第2階層709の特徴面、707は第3階層710の特徴面を示す。特徴面とは、所定の特徴抽出演算(コンボリューション演算及び非線形処理)の処理結果に相当するデータ面である。特徴面は上位階層で所定の対象を認識するための特徴抽出結果に相当し、ラスタスキャンされた画像データに対する処理結果であるため、処理結果も面で表す。特徴面703a〜703dは、入力層701に対応するコンボリューション演算と非線形処理により生成されるものである。例えば、特徴面703aは、7021a〜dに模式的に示す2次元のコンボリューション演算と演算結果の非線形変換により算出する。例えば、カーネル(係数マトリクス)サイズがcolumnSize×rowSizeのコンボリューション演算は以下の式(1)に示すような積和演算により処理する。
Figure 2021012596
input(x,y):2次元座標(x、y)での参照画素値
output(x,y):2次元座標(x、y)での演算結果
weight(column,row):座標(x+column、y+row)での重み係数
L:前階層の特徴マップ数
columnSize、rowSize:コンボリューションカーネルサイズ
CNNによる処理では、複数のコンボリューションカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換することで特徴面を算出する。なお、特徴面703aを算出する場合は、前階層との結合数が1であるため、コンボリューションカーネルは1つである。ここで、7021a〜dはそれぞれ、特徴面703a〜dを算出する際に使用されるコンボリューションカーネルである。
図8は、特徴面705aを算出する場合の例を説明する図である。特徴面705aは、第1階層708(前階層)における特徴面703a〜dと結合している。特徴面705aのデータを算出する場合、特徴面703aに対しては7041aで模式的に示すカーネルを用いたフィルタ演算を畳み込み演算処理部801にて行い、該フィルタ演算の結果を累積加算器802に保持する。同様に特徴面703b〜dに対してはそれぞれ7042a、7043a、7044aで示すカーネルのコンボリューション演算を畳み込み演算処理部801にて行い、その演算結果を累積加算器802に蓄積する。この4種類のコンボリューション演算の終了後、累積加算器802により該4種類のコンボリューション演算の累積加算を行う。そして、該累積加算の結果に対して非線形変換処理部803によりロジスティック関数や双曲正接関数(tanh関数)を利用した非線形変換処理を行う。以上の処理を画像全体に対して1画素ずつ走査しながら行うことで特徴面705aを算出する。同様に特徴面705b〜dは第1階層708(前階層)の特徴面に対してそれぞれ7041b〜7044bで示すカーネルのコンボリューション演算、7041c〜7044cで示すカーネルのコンボリューション演算、7041d〜7044dで示すカーネルのコンボリューション演算を行い、累積加算、非線形処理し、算出する。更に、特徴面707は、第2階層709(前階層)の特徴面705a〜dに対して7061〜7064で示す4つのコンボリューション演算を用いて算出する。
なお、各カーネル係数はパーセプトロン学習やバックプロパゲーション学習等の一般的な手法を用いて予め学習により決定されているものとする。また、階層ごとにコンボリューションカーネルのサイズが異なることが多い。
特許第5368687 特開昭61−62187
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の手法は、内部にSRAMメモリを備え、中間階層の特徴面703a〜d、705a〜dの一部、または、全てを格納する中間バッファとして使用する。中間バッファから読み出したデータをコンボリューション演算処理し、得られた処理結果を、中間バッファへ格納する。このとき、1画素当たりのコンボリューション演算処理に必要な参照範囲は、コンボリューションカーネルサイズcolumnSize、rowSizeで決まる。以下では、columnSize=N,rowSize=MのコンボリューションカーネルサイズをN×Mと表記する。
図9は、第1階層708の特徴面703a〜d、第2階層709の特徴面705a〜d、中間バッファに格納する領域、を示す図である。ここではどちらの階層の特徴面も幅を20とし、n(x、y)は、特徴面703n、705n(n=a〜d)のデータ面の座標(x、y)のデータを示す。第2階層709を算出するコンボリューション演算のカーネルサイズを4×4とするとき、第2階層709の特徴面705a〜dの算出には、上述の式(1)で示されるように第1階層708の特徴面703a〜dのx方向4画素、y方向4画素を参照する。より具体的には、特徴面705a〜dの座標(0、0)におけるデータを算出するときは第1階層708の特徴面703a〜dにおいて領域902〜905内の画素が参照画素となる。したがって、中間バッファには少なくとも領域902〜905を格納しておく必要がある。効率よく第2階層709の特徴面を算出するためには、第1階層708の特徴面703a〜dの(0、0)〜(19、3)の4ラインを中間バッファに格納し、特徴面705a〜dの(0、0)〜(19、0)の1ラインをラスタ順に算出するのがよい。
同様に、第3階層710を算出するコンボリューション演算のカーネルサイズを5×5とするとき、特徴面707の算出にはx方向5画素、y方向5画素を参照する。そのため、特徴面705a〜dの(0、0)〜(19、4)の5ラインを中間バッファに格納し、特徴面707の1ラインを算出する。
また、一般的なフィルタ演算では必要になる複数ラインを別々のメモリに格納し、同時に読み出すことで高速化を図る技術が特許文献2などに開示されている。
図10は、中間バッファを2つのSRAM(メモリ0、メモリ1)で構成し、第1階層708の特徴面703a〜dを1ライン単位で異なるメモリに配置し、2ラインを同時に読み出すことで処理を高速化するためのメモリ格納方法を示す図である。SRAMのデータ幅を4バイト、特徴面における1座標あたりのデータサイズを1バイトとする。
特徴面703aの奇数ラインのデータをメモリ0に、偶数ラインのデータをメモリ1に格納する。メモリ内のラインの先頭アドレスから次のラインの先頭アドレスまでのオフセットをラインオフセットと呼び、メモリ0およびメモリ1のラインオフセットは0x14である。特徴面703b〜dについても同様に、奇数ラインのデータをメモリ0に、偶数ラインのデータをメモリ1に格納する。特徴面の先頭アドレスから次の特徴面の先頭アドレスまでのオフセットをチャネルオフセットと呼び、メモリ0およびメモリ1のチャネルオフセットは0x28である。
ここで、特徴面705a中の座標(0、0)におけるデータを算出するための動作について説明する。まず、特徴面703aのデータをコンボリューション演算するため、メモリ0およびメモリ1における先頭アドレス0x0のデータを同時に読み出す(すなわち1ライン目と2ライン目のデータを同時に読み出す)。続いて、メモリ0およびメモリ1において、現在の読み出しアドレス0x0にラインオフセットを加算したアドレス0x14におけるデータを同時に読み出す(すなわち3ライン目と4ライン目のデータを同時に読み出す)。この2回のリードデータを対象にしてコンボリューション演算を行って処理結果を得る。
続いて特徴面703bのデータは、メモリ0およびメモリ1における先頭アドレス0x0にチャネルオフセットを加算したアドレス0x28のデータを同時に読み出す(すなわち1ライン目と2ライン目のデータを同時に読み出す)。続いて現在の読み出しアドレスにラインオフセットを加算したアドレス0x3cのデータを同時に読み出す(すなわち3ライン目と4ライン目のデータを同時に読み出す)。この2回のリードデータを対象にしてコンボリューション演算を行って処理結果を得る。続いて特徴面703c〜dについても同様にデータを読み出し、処理結果を得る。
そして、特徴面703a〜dをコンボリューション演算した結果を累積加算し、該累積加算の結果を非線形処理することで、特徴面705aにおける座標(0、0)のデータを得る。
上記に示すように、中間バッファを2つのSRAMで構成するとき、同時に2ラインのデータが同時に読み出し可能であるため、1つのSRAMで構成した場合と比較して読み出し回数が1/2になり、高速に処理ができる。また、中間バッファに格納するライン数が偶数の場合はメモリ0、1の読み出しのアドレッシングは同一であるため、アドレッシング回路を共有することができ、コスト削減ができると共に、制御も容易である。
図11は、上記のメモリ0およびメモリ1で構成される中間バッファに第2階層709の特徴面705a〜dの5ラインを格納する方法を示す図である。データは、第1階層708の特徴面の格納領域の隣のアドレス0xa0から格納する。
特徴面705aの奇数ラインをメモリ0に、偶数ラインをメモリ1に格納する。特徴面705bについては、奇数ラインをメモリ0に、偶数ラインをメモリ1に配置するとメモリ0とメモリ1の使用量に偏りが生じるので、メモリを有効に使うため、奇数ラインをメモリ1に、偶数ラインをメモリ0に格納する。特徴面705cについては、特徴面705aと同様に奇数ラインをメモリ0に、偶数ラインをメモリ1に格納し、特徴面705dについては、特徴面705bと同様に奇数ラインをメモリ1に、偶数ラインをメモリ0に配置する。このとき、メモリ0、メモリ1のラインオフセットは0x14である。チャネルオフセットは固定値ではなく、0x28と0x3cが特徴面によって切り替わる。
ここで、特徴面707中の座標(0、0)におけるデータを算出するための動作について説明する。まず、特徴面705aのデータをコンボリューション演算するため、メモリ0およびメモリ1におけるアドレス0xa0からデータを同時に読み出す(すなわち1ライン目と2ライン目のデータを同時に読み出す)。続いて現在の読み出しアドレスにラインオフセットを加算したアドレス0xb4からデータを同時に読み出す(すなわち3ライン目と4ライン目のデータを同時に読み出す)。さらにメモリ0のみ、現在の読み出しアドレスにラインオフセットを加算したアドレス0xc8からデータを読み出し(すなわち5ライン目のデータを読み出し)、3回のリードデータを対象にしてコンボリューション演算を行って処理結果を得る。
続いて特徴面705bのデータを読み出すため、チャネルオフセットを加算する。メモリ0のチャネルオフセットは0x3c、メモリ1のチャネルオフセットは0x28であり、メモリ0、1のアドレスは異なる。1ライン目および2ライン目のデータとして、メモリ1におけるアドレス0xc8のデータ、メモリ0におけるアドレス0xdcのデータを同時に読み出す。また、3ライン目および4ライン目のデータとして、メモリ1におけるアドレス0xc8のデータ、メモリ0におけるアドレス0xf0のデータを同時に読み出す。さらに5ライン目のデータとして、メモリ1におけるアドレス0xf0のデータを読み出し、3回のリードデータを対象にしてコンボリューション演算を行って処理結果を得る。
続いて特徴面705cのデータを読み出すため、チャネルオフセットを加算する。このときのメモリ0のチャネルオフセットは0x28、メモリ1のチャネルオフセットは0x3cであり、特徴面705bのデータを読み出すときのチャネルオフセットと異なる。
同様に特徴面705c、705dのデータを各々読み出し、コンボリューション演算した結果を累積し、次階層の特徴面の座標(0、0)におけるデータとする。
上記に示すように、中間バッファに格納する特徴面のライン数が奇数の場合はメモリ0、1の読み出しのアドレスが異なるため、個別にアドレッシング回路が必要となり、さらにチャネルオフセットを切り替えながらアドレッシングするため、制御が複雑になる。
また、図10の構成において、中間バッファに5ライン格納する別の方法として、多めに6ラインを格納することでメモリ0、1の読み出しのアドレッシングは同一にできるが、1ラインの無駄が発生する。
上記の如くCNNにおける処理では、階層ごとにコンボリューションカーネルのサイズは様々で、中間バッファを複数個のメモリで構成する場合、カーネルサイズによってはメモリのアドレッシングが複雑になる、メモリ利用効率が低下する、という課題がある。本発明では、メモリからの高速な読み出しと、メモリ利用効率の向上と、を可能にするための技術を提供する。
本発明の一様態は、入力された画像データに対して階層的にフィルタ演算処理を施して複数の特徴面を算出する演算処理装置であって、コンボリューション演算を行う演算部と、前記演算部の画像データと演算結果とを格納する複数のメモリで構成されるデータ保持部と、前記演算部が出力する演算結果を受信し、該受信した演算結果のうち、同一特徴面の連続するラインのデータを前記複数のメモリのうち異なるメモリに書き込み、同じ階層の複数の特徴面の同一座標のデータを前記複数のメモリのうち異なるメモリに書き込むメモリ書き込み制御部と、同一特徴面の連続するラインのデータを、前記データ保持部の異なるメモリから読み出し、同じ階層の異なる特徴面の同一座標のデータを、前記データ保持部の異なるメモリから読み出し、前記演算部へ送信するメモリ読み出し制御部とを備えることを特徴とする。
本発明の構成によれば、メモリからの高速な読み出しとメモリ利用効率の向上とを容易なアドレッシングで可能にする。つまり、中間階層のデータを使用する演算で発生する中間バッファからのメモリの読み出し回数を減らすことができ、パターン認識を行う装置の処理性能を向上させつつ、中間バッファのメモリ量および回路規模の削減が可能である。
CNN処理部601のハードウェア構成例を示すブロック図。 メモリ書き込み制御部103の動作のフローチャート。 メモリ読み出し制御部104の動作のフローチャート。 CNN処理部601の動作に関する処理のフローチャート。 メモリ0およびメモリ1におけるデータ格納状態を示す図。 メモリ0およびメモリ1におけるデータ格納状態を示す図。 画像処理システムのハードウェア構成例を示すブロック図。 簡単なCNNの例を示すネットワーク構成図。 特徴面705aを算出する場合の例を説明する図。 第1階層708の特徴面703a〜d、第2階層709の特徴面705a〜d、中間バッファに格納する領域、を示す図。 2個のSRAMで構成する中間バッファにおける4ラインデータ格納方法を示す図。 2個のSRAM構成する中間バッファにおける5ラインデータ格納方法を示す図。 ラスタ順に演算処理する場合のメモリ書き込み制御部103の動作のフローチャート。 先にラスタ順に演算処理する場合のメモリ読み出し制御部104の動作のフローチャート。
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
[第1の実施形態]
先ず、本実施形態に係る演算処理装置としてのパターン認識装置を利用した画像処理システムのハードウェア構成例について、図6のブロック図を用いて説明する。本実施形態に係る画像処理システムは、入力画像から特定の物体の領域を検出する機能を有する。
画像入力部600は、撮像を行うことで画像データを入力画像として取得する。画像データは動画像における各フレームの画像のデータであっても良いし、静止画像のデータであっても良い。画像入力部600は、光学系、CCD(Charge−Coupled Devices)又はCMOS(Complimentary Metal Oxide Semiconductor)センサ等の光電変換デバイス及びセンサを制御するドライバー回路/ADコンバータ/各種画像補正を司る信号処理回路/フレームバッファ等により構成される。
CNN処理部601は、本実施形態に係る演算処理装置としてのパターン認識装置を含み、画像入力部600による画像データから特定の物体の領域を検出する。CNN処理部601はメモリ601aを有しており、該メモリ601aは中間バッファとして利用する2つのメモリ(後述するメモリ0およびメモリ1)を有しており、この2つのメモリにより2ラインの同時アクセスが可能である。
DMAC(Direct Memory Access Controller)605は、画像バス602上の各処理部と、CPUバス609上の各処理部と、の間のデータ転送を司る。
ブリッジ603は、画像バス602とCPUバス609のブリッジ機能を提供する。
前処理部604は、CNN処理部601によるパターン認識処理を効果的に行うための各種の前処理を行う。具体的には、前処理部604は、画像入力部600が取得した画像データに対して色変換処理/コントラスト補正処理等の画像変換処理をハードウェアで処理する。
CPU606は、ROM607やRAM608に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりCPU606は、画像処理システム全体の動作制御を行うと共に、画像処理システムが行うものとして後述する各処理を実行若しくは制御する。
ROM(Read Only Memory)607には、CPU606の動作を規定する命令を含むコンピュータプログラムやデータなどが格納されている。以下の説明において画像処理システムが既知の情報として取り扱う情報はROM607に格納されている。
RAM608はROM607からロードされたコンピュータプログラムやデータを格納するためのエリア、画像入力部600が取得した画像データを保持するためのエリア、処理対象とするデータを一時的に保持するためのエリア、等を有する。またRAM608は、CPU606が各種の処理を実行する際に用いるワークエリアを有する。このようにRAM608は各種のエリアを適宜提供することができる。
なお、RAM608もしくはROM607には、CNN処理部601が行うコンボリューション演算に使用する重み係数等のパラメータが格納されている。
画像入力部600が取得した画像データは前処理部604を介してCNN処理部601に入力される。CNN処理部601は、入力された前処理後の画像データに対して画素単位で所定の判別処理を行うことで、該画像データが表す画像中の特定の物体の領域を検出する。CNN処理部601によって検出された領域に係る情報(画像中の該領域を規定する情報や該領域内の画像など)は、DMAC605によってRAM608に転送されて該RAM608に格納される。
CNN処理部601のハードウェア構成例について、図1のブロック図を用いて説明する。CNN処理部601は、図7を用いて説明した中間層の特徴面を、階層的にフィルタ演算処理を施すことで算出する。特徴面は、座標単位で特徴面順に算出し、さらにx方向に算出する。例えば、座標(x、y)のデータを703(705)a、703(705)b、703(705)c、703(705)dの順(a−d順)で求めると、次に座標(x+1、y)のデータをa−d順で求め、次に座標(x+2、y)のデータをa−d順で求める。
制御部105は、CNN処理部601の全体を制御する。制御部105は内部に不図示の動作設定レジスタを有しており、該動作設定レジスタが保持するレジスタ値は、レジスタインターフェースを経由してCPU606により設定される。動作設定レジスタが保持するレジスタ値は、不図示の信号線を介して、後述するコンボリューション演算部101、メモリ書き込み制御部103、メモリ読み出し制御部104へ送出される。
動作設定レジスタはレジスタ値として、階層毎の特徴面の情報(特徴面の幅、ライン数、特徴面数、特徴面を配置する中間バッファの先頭アドレス、ライン数)、階層間の結合の情報(コンボリューションカーネルのサイズ)を保持している。また動作設定レジスタはイネーブルレジスタを有する。
CPU606が、全階層の特徴面の情報、階層間の結合の情報を設定し、イネーブルレジスタをオンにすると、制御部105は、全階層の特徴面の算出順序を1ライン単位で決定する。つまり、1ライン単位で算出対象の階層を切り替えて処理する。算出対象の階層内では、1座標ずつ特徴面方向に算出し、さらに座標をラスタ方向にずらし全特徴面の1ラインを処理する。
制御部105は上記の決定した順序に基づき算出対象の階層の番号(階層番号)と算出対象のラインの番号(ライン番号:y座標)をコンボリューション演算部101、メモリ書き込み制御部103、メモリ読み出し制御部104に送出して処理開始指示を出す。
コンボリューション演算部101は、外部から転送された画像データを入力するインターフェース、コンボリューション演算に使用する重み係数を入力するインターフェースを有する。さらにコンボリューション演算部101は、後述するメモリ読み出し制御部104から送信された中間階層データを入力するインターフェース、演算結果をメモリ書き込み制御部103に出力するインターフェースを備える。そしてコンボリューション演算部101は、画像データと中間階層データのどちらか一方の入力データを選択して(制御部105から処理開始指示時に引き渡される算出対象の階層の番号に応じて選択する)演算する。また、コンボリューション演算部101は、内部に複数の重み係数を格納するメモリを有し、算出対象の階層の番号に応じて、重み係数を選択して使用する。
算出対象が第1階層708の特徴面である場合、コンボリューション演算部101は画像データを入力とし、特徴面703a〜dの算出に使用する重み係数を使用する。また、算出対象が第2階層709の特徴面である場合、中間階層データを入力とし、特徴面705a〜dの算出に使用する重み係数を選択する。また、算出対象が第3階層710の特徴面707である場合、中間階層データを入力とし、特徴面707の算出に使用する重み係数を選択する。演算結果は画素単位で出力する。
データ保持部102は、中間階層のデータをバッファするためのメモリ(中間バッファ)であり、リード・ライト2ポート、データ幅4バイトのSRAM2個で構成する。SRAMのライトポートのインターフェースは、チップセレクト(WCS)、ライトイネーブル(WE)、ライトアドレス(WA)、ライトデータ(WD)の信号で構成される。リードポートのインターフェースはチップセレクト(RCS)、リードアドレス(RA)、リードデータ(RD)の信号で構成される。2個のSRAMのうち一方をメモリ0、他方をメモリ1と称する。中間階層(第1階層708、第2階層709、第3階層710)における特徴面のデータは階層ごとに中間バッファの先頭アドレスとライン数を指定して配置される。それぞれの中間バッファの領域はリングバッファとして使用される。
書き込み制御部103は、コンボリューション演算部101による演算結果を画素単位で受信し、データ保持部102へ書き込む。書き込み制御部103は、メモリ0およびメモリ1のライトポートのチップセレクトWCS[0]、WCS[1]、ライトイネーブルWE[0]、WE[1]、ライトアドレスWA[0]、WA[1]、ライトデータWD[0]、WD[1]を制御する。信号名に続く[番号]はメモリの番号(メモリ番号)を示す。メモリ0のメモリ番号は「0」、メモリ1のメモリ番号は「1」である。メモリのインターフェース信号の制御は、制御部105から与えられる算出対象の階層の番号と算出対象のラインの番号(y座標)に基づき行われる。
メモリ書き込み制御部103の動作について、図2のフローチャートに従って説明する。メモリ書き込み制御部103は、制御部105から、算出対象の階層の番号、算出対象のラインの番号(y座標)、処理開始指示が与えられると処理を開始する。与えられた階層番号から、メモリに書き込む階層の特徴面の情報(特徴面の幅、特徴面数、特徴面を配置する中間バッファの先頭アドレス、ライン数)を特定する。
ステップS201では、書き込み対象となる中間バッファのラインの番号(ライン番号:k)、チャネルオフセット(Cofst)、ライトアドレス(WA)を算出する。中間バッファをリングバッファとして使用するため、中間バッファのライン番号であるkは、算出対象のラインの番号であるy座標と中間バッファのライン数から、y座標の中間バッファのライン数による余剰演算(以下、余剰演算子をmodとする)で決定する。Cofstは、(特徴面の幅×中間バッファのライン数)として算出する。WAは、特徴面を配置する中間バッファの先頭アドレス(SA)と特徴面の幅、kで算出する。また、算出対象のx座標を0に初期化する。
ステップS202では、特徴面の番号(特徴面番号)を1に初期化し、特徴面番号=1のときのライトアドレスを保存する。このライトアドレスは、x座標が進むときに参照するアドレスとなる。
ステップS203では、演算結果のデータ受信を待機し、演算結果のデータを受信すると、処理はステップS204に進む。
ステップS204では、受信したデータ(演算結果のデータ)を書き込むメモリの番号であるメモリ番号Memを決定する。メモリ番号Memは、特徴面番号、中間バッファのライン番号k、メモリ数、を用いて{(k+特徴面番号−1) mod メモリ数}と計算される。本実施形態ではメモリ数は2であり、y座標=0、特徴面番号=1のとき、Mem=0となるので、メモリ0を選択し、その後、特徴面番号が増加するごとに、メモリ1、0、1、0と順に切り替える。また、中間バッファのライン番号kが増加するごとに同じ特徴面でもメモリを切り替える。
このような決定方法によると、特徴面番号が固定でkがインクリメントされるとき、メモリ番号はトグルする。すなわち、同一特徴面の連続するラインは異なるメモリに書き込まれる。また、kが固定で特徴面番号がインクリメントされるとき、メモリ番号はトグルする。すなわち、連続する特徴面の同一ラインは異なるメモリに書き込まれる。
ステップS205では、受信データを書き込む。メモリ番号が0のときメモリ0のチップセレクト(WCS[0])をアクティブにし、ライトアドレス(WA[0])にWAを設定、ライトデータ(WD[0])に受信データを設定し、メモリ0へ書き込む。ライトイネーブル(WE[0])は、メモリのデータ幅とWAの値に応じて適切なビットをアクティブにする。メモリ番号が1のとき、メモリ1に受信データを書き込む。
ステップS206にて次の特徴面のデータを書き込むメモリ番号(nextMem)を算出する。次の特徴面番号は、現在の特徴面番号を1つインクリメントすることで得られ、nextMemも現在のメモリ番号を1つインクリメントすることで得られる。
ステップS207では、次の特徴面のデータを書き込むメモリのメモリ番号nextMemが0であるのか、それとも1であるのかを判定する。この判定の結果、次の特徴面のデータを書き込むメモリのメモリ番号nextMemが0のとき、処理はステップS208に進む。一方、次の特徴面のデータを書き込むメモリのメモリ番号nextMemが1のとき、処理はステップS209に進む。
ステップS208では、ライトアドレスを現在のライトアドレスにチャネルオフセットを加算した値に更新する。一方、ステップS209では、ライトアドレスは更新しない。つまり、特徴面番号N、N+1(Nは奇数)の同一座標のデータは、ライトアドレスは替えず、メモリ番号のみ変えた場所に格納される。
ステップS210では、特徴面番号が特徴面数に達しているか否かを判定する。この判定の結果、達している場合には、処理はステップS211に進む。一方、達していない場合には、達するまで特徴面番号をインクリメントし、ステップS203〜ステップS209の処理を実行する。
ステップS211では、ライトアドレスをステップS202で保存した特徴面番号1のときのライトアドレスを1つインクリメントしたアドレスに更新する。x座標が特徴面の幅に達するまでx座標をインクリメントして、再度、特徴面番号1のデータから順に格納する。
ステップS212では、x座標が特徴面幅に達しているか否かを判定する。この判定の結果、達している場合には、図2のフローチャートに従った処理は終了する。一方、達していない場合には、達するまでx座標をインクリメントし、ステップS203〜ステップS211を実行する。
図2のフローチャートに従った処理によると、ステップS204〜ステップS205に示す通り、同一特徴面の連続するラインは異なるメモリに格納されるため、2ライン同時に読み出すことが可能である。また、ステップS206〜ステップS209に示す通り、特徴面番号N、N+1(Nは奇数)の同一座標のデータは、ライトアドレスは替えず、メモリ番号のみ変えて対応するメモリに格納される。然るに、特徴面数が2の倍数のとき、中間バッファのライン数に依らず2個のメモリには等しいデータ量のデータが格納される。具体的には、ステップS206〜ステップS209のアドレス更新方法によると、特徴面番号N、N+1の特徴面を1組とし、同じ組内の特徴面の同一座標のデータを異なるメモリの同一アドレスに格納する。
図1に戻って、メモリ読み出し制御部104は、データ保持部102からデータを読み出し、該読み出したデータを、コンボリューション演算部101に参照画素データとなる中間階層データを送信する。メモリ読み出し制御部104は、データ保持部102の2つのメモリ(メモリ0およびメモリ1)のリードポートのチップセレクトRCS[0]、RCS[1]、アドレスRA[0]、RA[1]を制御する。信号名に続く番号はメモリ番号を示す。メモリのインターフェース信号の制御は、制御部105から与えられる算出対象の階層の番号と算出対象のラインの番号(y座標)に基づき行われる。参照画素データは最大2ラインずつ、複数回に分けてコンボリューション演算部101に送信される。
メモリ読み出し制御部104の動作について、図3のフローチャートに従って説明する。メモリ読み出し制御部104は、制御部105から、算出対象の階層の番号、算出対象のラインの番号(y座標)、処理開始指示が与えられると処理を開始する。
算出対象の階層の番号から、参照される前階層の特徴面の情報(特徴面の幅、ライン数、特徴面数、特徴面を配置する中間バッファの先頭アドレス、ライン数)、階層間の結合の情報(コンボリューションカーネルのサイズ)を特定する。
ステップS301では、読み出し対象となる中間バッファの先頭ラインの番号(k)、チャネルオフセット(Cofst)、リードアドレス(RA)を算出する。中間バッファをリングバッファとして使用するため、中間バッファの先頭ラインの番号kは、算出対象のラインの番号(y座標)と中間バッファのライン数から、(y座標 mod 中間バッファのライン数)で決定する。Cofstは、(特徴面の幅×中間バッファのライン数)で算出する。RAは、特徴面を配置する中間バッファの先頭アドレス(SA)と特徴面の幅、kで算出する。また、算出対象のx座標を0に初期化する。
ステップS302では、特徴面番号を1に初期化し、特徴面番号=1のときのリードアドレスを保存する。このリードアドレスは、x座標が進むときに参照するアドレスとなる。
ステップS303では、参照画素のライン番号rowを0に初期化し、row=0のときのリードアドレスを保存する。
ステップS304では、読み出す参照画素の領域の先頭ラインのメモリ番号Memを決定する。メモリ番号Memの決定は、上記のステップS204と同様の決定方法で行う。
ステップS305では、送信するライン数(num_loop)を決定べく、(現在の参照画素のライン番号row+メモリ数)がrowSize以下であるか否かを判断する。この判断の結果、(現在の参照画素のライン番号row+メモリ数)がrowSize以下であれば、処理はステップS306に進む。一方、(現在の参照画素のライン番号row+メモリ数)がrowSizeよりも大きい場合には、処理はステップS307に進む。
ステップS306では、送信するライン数はメモリ数とする(num_loop=メモリ数)。一方、ステップS307では、送信するライン数はrowSize−rowとする(num_loop=rowSize−row)。
ステップS308では、メモリからデータを読み出す。ここで、ステップS304で決定したメモリ番号が0のときは、メモリ0のリードアドレスRA[0]=RAとなる。そして、RAからcolumnSizeバイトのデータを読み出し、該読み出したデータ(リードデータ)をrowのラインデータに設定する。さらにメモリ1のリードアドレスRA[1]=RA+特徴面幅×kからcolumnSizeバイトのデータを読み出し、該読み出したデータ(リードデータ)をrow+1のラインデータに設定する。一方、ステップS304で決定したメモリ番号が1のときは、メモリ1のリードアドレスRA[1]=RAとなり、RAからcolumnSizeバイトのデータを読み出し、該読み出したデータ(リードデータ)をrowのラインデータに設定する。さらにメモリ0のリードアドレスRA[0]=RA+特徴面幅×kからcolumnSizeバイトのデータを読み出し、該読み出したデータ(リードデータ)をrow+1のラインデータに設定する。メモリ0に対する読み出しおよびメモリ1に対する読み出しは同時に行ってもよい。ステップS308の処理は、送信するライン数分行う。
ステップS309では、num_loopラインのデータを送信し、次に、ステップS310では、次のラインの送信のためにRAを(RA+特徴面幅×メモリ数)に更新する。
ステップS311では、全ての参照画素ラインを送信したかを、参照画素のライン番号rowをから判断する。この判断の結果、全ての参照画素ラインを送信した場合には、処理はステップS312に進む。一方、未だ送信していない参照画素ラインが残っている場合には、全ての参照画素ラインの送信が完了するまで参照画素のライン番号rowをインクリメントし、ステップS305〜ステップS310の処理を実行する。一度にメモリ数分のラインのデータを送信するので、参照画素のライン番号rowもメモリ数ずつインクリメントする。
全ての参照画素ラインの送信が完了すると、次の特徴面の参照画素領域を送信する。ステップS312は、次の特徴面の参照画素領域の先頭メモリ番号nextMemを決定する。次の特徴面の参照画素領域の先頭メモリ番号nextMemは{(Mem+1) mod メモリ数}を計算することで得られる。
ステップS313では、nextMem=0であるか否かを判断する。この判断の結果、nextMem=0であれば、処理はステップS314に進み、nextMem≠0であれば、処理はステップS315に進む。
ステップS314では、RAを、ステップS303でバックアップしたリードアドレスA_bak2にチャネルオフセットを加算した値に更新する。一方、ステップS315では、RAを、ステップS303でバックアップしたリードアドレスA_bak2に戻す。
ステップS312〜ステップS315のアドレス更新方法によると、特徴面番号N、N+1(Nは奇数)では、リードアドレスRAはまったく同一のアドレッシングを繰り返し、ステップS308により、異なるメモリ番号のアドレスにアクセスすることになる。つまり、特徴面番号N、N+1の特徴面を1組とし、同じ組内の特徴面の同一座標のデータを、異なるメモリの同一アドレスから読み出す。
ステップS316では、特徴面番号が特徴面数に達しているか否かを判定する。この判定の結果、達している場合には、処理はステップS137に進む。一方、達していない場合には、達するまで特徴面番号をインクリメントし、ステップS303〜ステップS315を実行する。
ステップS317では、RAを、ステップS302でバックアップしたリードアドレスA_bak1に1を加算したアドレスに更新する。
ステップS318では、x座標が特徴面の幅に達しているか否かを判定する。この判定の結果、達している場合には、図3のフローチャートに従った処理は終了する。一方、達していない場合には、達するまでx座標をインクリメントし、ステップS302〜ステップS317の処理を実行する。
図3のフローチャートに従った処理によると、ステップS308に示す通り、同一特徴面の連続する2ラインは異なるメモリから同時に読み出す。また、アドレッシングは1つのリードアドレス(RA)のみ管理し、RA[0]、RA[1]はステップS304で算出したメモリ番号に応じ、ステップS308にてRAまたは(RA+特徴面幅×k)で決定するので、アドレッシング回路は1つでよい。
次に、図1の画像処理システムにおいて、図7の入力層である画像データに対してコンボリューション演算し、中間階層の特徴面703a〜d、705a〜d、707を生成するための動作について説明する。
CNN処理部601の動作に関する処理について、図4のフローチャートに従って説明する。
先ず、ステップS401では、CPU606は、CNN処理部601の制御部105の動作設定レジスタにおけるレジスタ値を設定する。レジスタ値として、第1階層708の特徴面703a〜dの情報、第2階層709の特徴面705a〜dの情報、第3階層710の特徴面707の情報、階層間の結合の情報、は以下のように設定されているものとする。なお、以下に示すレジスタ値は一例であり、これらの値に限定することを意図したものではない。なお、特徴面を配置する中間バッファの先頭アドレスは、いつもメモリ0とする。

<第1階層708>
・特徴面の幅:20
・特徴面数:4
・特徴面を配置する中間バッファの先頭アドレス:0x0
・中間バッファのライン数:4ライン

<第2階層709>
・特徴面の幅:20
・特徴面数:4
・特徴面を配置する中間バッファの先頭アドレス:0xa0
・中間バッファのライン数:5ライン

<第3階層710>
・特徴面の幅:20
・特徴面数:1
・特徴面を配置する中間バッファの先頭アドレス:0xa0

<第2階層演算に使用するコンボリューションカーネルサイズ>
・4×4

<第3階層演算に使用するコンボリューションカーネルサイズ>
・5×5

次に、ステップS402では、CPU606はDMAC605を起動し、コンボリューション演算部101に重み係数を転送する。コンボリューション演算部101に転送する重み係数は、特徴面703a〜d、特徴面705a〜d、特徴面707の演算に使用する全てとする。
そしてステップS403では、CPU606は、制御部105に対して処理開始を指示する。
ステップS404では、CPU606はDMAC605を使用し、コンボリューション演算部101に対して処理対象となる画像データを転送する。コンボリューション演算部101に入力される画像データは、使用するコンボリューションカーネルのサイズに応じた参照画素のブロック単位でコンボリューション演算部101に転送される。
ステップS405では、ステップS403にて処理開始の指示を受けた制御部105は、コンボリューション演算部101を画像入力モードに設定する。そしてコンボリューション演算部101は、転送された画像データと、コンボリューションカーネル7021a〜dの重み係数と、を用いて、特徴面703a〜dを1座標ずつ演算して出力する。
ステップS406では、ステップS403にて処理開始の指示を受けた制御部105は、メモリ書き込み制御部103に演算対象の階層の番号=1とy座標=0を渡し、処理開始を指示する。これに応じてメモリ書き込み制御部103は図2のフローチャートに従った処理を行うことで、特徴面703a〜dの1ライン分を格納する。
ここで、ステップS406でのメモリ書き込み処理における具体的なアドレッシングについて説明する。
ステップS201にて、階層番号=1である第1階層708のレジスタ値が参照される。特徴面の幅20、特徴面の数4、特徴面を配置する中間バッファの先頭アドレス0x0、中間バッファのライン数4であるから、k=0、チャネルオフセットCofst=0x50、ライトアドレスWA=0x0、x座標=0が設定される。さらにステップS202にて特徴面番号には1が設定される。
そして、最初に特徴面703aにおける座標(0、0)のデータを受信すると、ステップS204にて書き込むメモリのメモリ番号には0が選択され、ステップS205でメモリ0のアドレス0x0に格納する。そしてステップS206にて次の特徴面のデータを書き込むメモリのメモリ番号は1となり、ライトアドレスは更新しない。そして、特徴面番号をインクリメントして、データを待つ。
次に、特徴面703bにおける座標(0、0)のデータを受信すると、ステップS204にて書き込むメモリのメモリ番号には1が選択され、ステップS205でメモリ1のアドレス0x0に格納する。そしてステップS206にて次の特徴面のデータを書き込むメモリのメモリ番号は0となり、ステップS208にてライトアドレスはCofstを加算した0x50に更新する。そして、特徴面番号をインクリメントし、データを待つ。
次に、特徴面703cにおける座標(0、0)のデータを受信すると、ステップS204にて書き込むメモリのメモリ番号には0が選択され、ステップS205でメモリ0のアドレス0x50に格納する。そしてステップS206にて次の特徴面のデータを書き込むメモリのメモリ番号は1となり、ライトアドレスは更新しない。そして、特徴面番号をインクリメントし、データを待つ。
次に受信する特徴面703dにおける座標(0、0)のデータも同様に、メモリ1のアドレス0x50に格納する。ここで特徴面番号は4であり、ステップS210にて「達している」と判定されるため、処理はステップS211に進み、ステップS211にてライトアドレスはステップS202にて保存したアドレス0x0をインクリメントした0x1に更新する。
続いて、特徴面703aにおける座標(1、0)のデータ、特徴面703bにおける座標(1、0)のデータ、特徴面703cにおける座標(1、0)のデータ、特徴面703dにおける座標(1、0)のデータはそれぞれ、メモリ0のアドレス0x1、メモリ1のアドレス0x1、メモリ0のアドレス0x51、メモリ1のアドレス0x51に順次格納される。
そしてステップS212にてx座標が19に達するまでx座標をインクリメントしながらデータ書き込みを行う。そしてx座標が19に達すると、1ラインの格納が終わったので処理を終了する。この時点でのメモリ0およびメモリ1におけるデータ格納状態を図5Aの501に示す。
メモリ領域703aとメモリ領域703bとで同一座標のデータがメモリ0とメモリ1の同じアドレスに格納される。また、メモリ領域703cとメモリ領域703dとで同一座標のデータがメモリ0とメモリ1の同じアドレスに格納される。メモリ0とメモリ1のデータ格納量は同じである。
そしてステップS406にて1ラインの格納が終わると、ステップS407では制御部105は、次の階層の特徴面705a〜dが処理可能か否かを判定する。第1階層708と第2階層709のコンボリューションカーネルサイズは4×4であるため、4ラインが生成されるまでステップS404〜ステップS406の処理を繰り返し実行する。このとき、制御部105は、メモリ書き込み制御部103に演算対象の階層の階層番号=1とy座標=1、2、3を順次渡す。ステップS201にてライトアドレスWA=0x14、0x28、0x3c、特徴面番号1のときステップS204にて書き込むメモリ番号=1、0、1となる。従って、メモリ1のアドレス0x14、メモリ0のアドレス0x28、メモリ1のアドレス0x3cが特徴面番号1のラインの先頭アドレスとなる。4ラインの格納が終わった時点でのメモリ0およびメモリ1におけるデータ格納状態を図5Aの502に示す。
メモリ領域703aとメモリ領域703bとで同一座標のデータがメモリ0とメモリ1の同じアドレスに格納される。また、メモリ領域703cとメモリ領域703dとで同一座標のデータがメモリ0とメモリ1の同じアドレスに格納される。チャネルオフセットはメモリ0およびメモリ1ともに0x50である。
そしてステップS407にて処理可能と判定されると、処理はステップS408に進む。ステップS407にて処理可能と判定されると、特徴面705a〜dの1ラインを処理する。ステップS408にて制御部105がメモリ読み出し制御部104に演算対象の階層の階層番号=2とy座標=0を渡して処理開始指示を与える。すると、メモリ読み出し制御部104は図3のフローチャートに従って中間階層データを読み出し、コンボリューション演算部101に送信する。読み出した中間階層データは演算対象の前階層の番号である中間階層番号=1となる。参照画素のブロックサイズは第2階層709の演算に使用するコンボリューションカーネルサイズ4×4で決定する。
ここで、ステップS408でのメモリ読み出し処理の具体的なアドレッシングについて説明する。ステップS301にて階層番号=1である第1階層708のレジスタ値が参照される。特徴面の幅20、特徴面の数4、特徴面を配置する中間バッファの先頭アドレス0x0、中間バッファのライン数4であるので、k=0、Cofst=0x50、リードアドレスRA=0x0、x座標=0が設定される。さらにステップS302にて特徴面番号は1、ステップS303にて参照画素のライン番号には0が設定される。
ステップS304にて、k=0、特徴面番号は1であるので読み出す領域の先頭メモリのメモリ番号には0が選択される。ステップS305にて、参照画素のライン番号は0、メモリ数は2、第2階層709の演算に使用するコンボリューションカーネルのrowSizeは4であるから、処理はステップS306に進み、num_loop=2となる。
ステップS308でメモリ0のアドレスRA[0]=0x0から4バイトのデータを読み出し、該読み出したデータを参照画素1ライン目のデータに設定する。続いて、RA[1]=0x14から4バイトのデータを読み出し、該読み出したデータを参照画素2ライン目のデータに設定し、ステップS309で2ラインのデータを送信する。
そしてステップS310にて読み出したアドレスに(特徴面の幅×2)を加算し、RA=0x28に更新する。ステップS311では、rowSizeは4であるので、全ての参照画素ラインを送信していないと判定し、参照画素のライン番号rowを2つインクリメントした2に更新し、データ読み出しを継続する。書き込みメモリのメモリ番号は0のままであるので、ステップS306にてメモリ0のアドレスRA[0]=0x28、メモリ1のアドレスRA[1]=0x3cが設定される。参照画素のライン番号は2であるので、ステップS305で(現在の参照画素のライン番号row+メモリ数)がrowSize以下と判定され、処理はステップS306に進み、num_loop=2となる。
ステップS308でメモリ0のアドレス0x28、メモリ1のアドレス0x3cから4バイトのデータを読み出す。メモリ0から読み出したデータを参照画素3ライン目のデータ、メモリ1から読み出したデータを参照画素4ライン目のデータに設定し、2ラインのデータを送信する。
全ての参照画素の送信が完了したので、ステップS312にて次に読み出す領域の先頭メモリのメモリ番号を決定する。k=0、特徴面番号は1であることから、メモリ番号は1に決定し、ステップS315にてリードアドレスは保存していた0x0に更新する。特徴面番号=1であるので、ステップS316にて偽と判定し、特徴面番号をインクリメントして、特徴面番号=2とし、ステップS303に戻る。
次はステップS304にて、k=0、特徴面番号は2であるので読み出す領域の先頭メモリのメモリ番号には1が選択され、ステップS310にてメモリ1のアドレスRA[1]=0x0、メモリ0のアドレスRA[0]=0x14が設定される。参照画素のライン番号は0であるので、ステップS308で、メモリ1のアドレス0x0、メモリ0のアドレス0x14から4バイトのデータを読み出す。メモリ1から読み出したデータを参照画素1ライン目のデータ、メモリ0から読み出したデータを参照画素2ライン目のデータに設定し、2ラインのデータを送信する。
ステップS310にてリードアドレスに(特徴面の幅×2)を加算し、RA=0x28に更新する。rowSizeは4であるので、ステップS311にて偽と判定され、参照画素のライン番号を2つインクリメントした2に更新し、データ読み出しを継続する。引き続きステップS318にてメモリ1のアドレス0x28、メモリ0のアドレス0x3cから4バイトのデータを読み出す。メモリ1から読み出したデータを参照画素3ライン目のデータ、メモリ0から読み出したデータを参照画素4ライン目のデータに設定し、2ラインのデータを送信する。
全ての参照画素の送信が完了すると、ステップS312にて次に読み出す領域の先頭メモリのメモリ番号を決定する。k=0、特徴面番号は2であることから、メモリ番号は0に決定し、ステップS314にてリードアドレスは保存していた0x0にCofstを加算した0x50に更新する。特徴面番号=2であるので、ステップS316にて偽と判定し、特徴面番号をインクリメントして特徴面番号=3とし、ステップS303に戻る。
特徴面番号=3の処理も同様に、メモリ0のアドレス0x50、メモリ1のアドレス0x64から4バイトのデータを読み出す。そして、メモリ0から読み出したデータを1ライン目のデータに、メモリ1から読み出したデータを2ライン目のデータに設定し、2ラインのデータを送信する。
特徴面番号=4の処理も同様に、メモリ1のアドレス0x50、メモリ0のアドレス0x64から4バイトのデータを読み出す。そして、メモリ1から読み出したデータを1ライン目のデータに、メモリ0から読み出したデータを2ライン目のデータに設定し、2ラインのデータを送信する。
全ての特徴面の転送が終わるとステップS316にて真と判定し、ステップS317にてリードアドレスRAをステップS302で保存したアドレスに1を加算した0x1に更新する。その後、ステップS318にてx座標が19に達するまでx座標をインクリメントしながらデータ読み出し、送信を行う。x座標が19に達すると、1ラインの算出のために必要な参照画素の読み出しが終わったので処理を終了する。
一方、ステップS408にてメモリ読み出し制御部104がデータを読み出すと、ステップS409の処理が行われる。ステップS409ではコンボリューション演算部101は、転送された中間階層データと、コンボリューションカーネル7041a〜d、7042a〜d、7043a〜d、7044a〜dの重み係数を使用して特徴面705a〜dを1座標ずつ演算して出力する。
ステップS410では、メモリ書き込み制御部103は、階層番号=2とy座標=0が引き渡され、図2のフローチャートに従った処理により、受信データ、特徴面705a〜dの1ライン分を格納する。
1ラインの格納が終わると、ステップS411にて制御部105は、次の階層の特徴面707が処理可能か否かを判定する。次の階層の特徴面707が処理可能ではないと判定された場合には、処理はステップS404に進む。一方、次の階層の特徴面707が処理可能であると判定された場合には、処理はステップS412に進む。
コンボリューションカーネルサイズ5×5を使用するので、5ラインが生成されるまでステップS404〜ステップS410の処理を繰り返し実行する。5ラインの格納が終わった時点でのメモリ0およびメモリ1の格納状態を図5Bの503に示す。
メモリ領域705aとメモリ領域705bとで同一座標のデータがメモリ0とメモリ1の同じアドレスに格納される。また、メモリ領域705cとメモリ領域705dとで同一座標のデータがメモリ0とメモリ1の同じアドレスに格納される。メモリ0とメモリ1のデータ格納量は同じである。また、チャネルオフセットはいずれも0x64である。
ステップS412では、特徴面707の1ラインを処理する。制御部105がメモリ読み出し制御部104に演算対象の階層の階層番号=3とy座標=0とを渡し、処理開始指示を与えると、メモリ読み出し制御部104は図3のフローチャートに従った処理を行う。これによりメモリ読み出し制御部104は、中間階層データを読み出し、コンボリューション演算部101に送信する。読み出したデータは演算対象の前階層の階層番号=2となる。参照画素は第3階層710の演算に使用するコンボリューションカーネルサイズ5×5で決定する。
ステップS413では、ステップS412にてメモリ読み出し制御部104がデータを読み出すと、コンボリューション演算部101は中間階層のデータを入力とし、特徴面707の1ラインを演算処理する。
ステップS414では、メモリ書き込み制御部103は、階層番号=3とy座標=0が引き渡され、図2のフローチャートに従った処理により、受信データ、特徴面707の1ライン分を格納する。ステップS414でのメモリ書き込み処理のアドレッシングでは、レジスタ値として第3階層710の特徴面の情報が参照される。
1ラインの格納が終わると、ステップS415にて制御部105は、最初の階層の特徴面703a〜dが第2階層708の演算に使用するコンボリューションカーネルサイズの高さ分生成されたか否かを判定する。この判定の結果、生成されていないと判定した場合には、処理はステップS404に進み、特徴面703a〜d、705a〜d、707をさらに1ライン生成する。一方、ステップS415の判定において、生成されたと判定した場合には、処理はステップS416に進む。
ステップS416では、制御部105は、第2階層709の特徴面705a〜dが第3階層710の演算に使用するコンボリューションカーネルサイズの高さ分生成されたか否かを判定する。この判定の結果、生成されていないと判定した場合には、処理はステップS408に進み、特徴面705a〜d、707をさらに1ライン生成する。一方、ステップS416の判定において、生成されたと判定した場合には、処理はステップS417に進む。
ステップS417では、制御部105は、第3階層710の特徴面707が特徴面の高さ分生成されたか否かを判定する。この判定の結果、生成されていないと判定した場合には、処理はステップS412に進み、さらに1ライン生成する。一方、ステップS417における判定で生成されたと判定した場合には、図4のフローチャートに従った処理は終了する。
以上説明したように、本実施形態によれば、中間バッファを複数のメモリで構成するとき、同一特徴面の連続するラインを異なるメモリに格納し、複数の特徴面の同一座標のデータを、メモリ番号のみ変えた同じアドレスに格納する。これにより、コンボリューションカーネルサイズに依存するデータ格納量の偏りを解消し、高速な読み出しとメモリ利用効率の向上を、容易なアドレッシングで可能にする。このため、中間階層データの演算で発生する中間バッファからのメモリの読み出しサイクルを減らすことができ、パターン認識装置の処理性能を向上させつつ、中間バッファのメモリ量、及び、回路規模の削減が可能である。
[第2の実施形態]
以下では、第1の実施形態との差分について説明し、以下で特に触れない限りは第1の実施形態と同様であるものとする。第1の実施形態では、特徴面が二次元のデータである例を説明したが、特徴面のデータの次元数は2に限らず、例えば、一次元や三次元であってもよい。
また、第1の実施形態では、データ保持部102が有する中間バッファとしてのメモリの数を2とし、4つの特徴面のデータをこの2つのメモリに配置する例を説明したが、メモリの数や特徴面の数はこれらの数に限らない。
特徴面の数N(N>1)、メモリの数M(M>1)の場合も、メモリ書き込み制御部103の動作として図2のフローチャートは適用可能である。ステップS204〜ステップS205に示す通り、同一特徴面の連続するラインは異なるM個のメモリに格納されるため、Mラインを同時に読み出すことが可能である。また、ステップS206〜ステップS209に示す通り、特徴面番号N、N+1、… N+(M−1)の同一座標のデータは、ライトアドレスは替えず、メモリ番号のみ変えた場所に格納される。然るに、N mod M=0のとき、中間バッファのライン数に依らずM個のメモリには等しいデータ量が格納され、第1の実施形態と同様の効果を得ることができる。
また、メモリ読み出し制御部104のの動作として図3のフローチャートも適用可能であり、ステップS308に示す通り、同一特徴面の連続するMラインは異なるメモリからMライン同時に読み出す。また、アドレッシングは1つのリードアドレス(RA)のみ管理し、全てのメモリのアドレスはステップS304で算出したメモリ番号に応じ、ステップS308にてRA+特徴面幅×k×i(i=0、1、・・・、メモリ数−1)で決定する。然るに、アドレッシング回路は1つでよく、第1の実施形態と同様の効果を得ることができる。
また、第1の実施形態では、画素単位で特徴面順に、その後、ラスタ順に演算処理する例を説明したが、これに限らず、先にラスタ順に、その後、特徴面順に演算処理してもよい。
先にラスタ順に演算処理する場合のメモリ書き込み制御部103の動作について、図12のフローチャートに従って説明する。なお、ステップS1201〜ステップS1205はそれぞれ、上記のステップS201〜ステップS205と同様であるため、これらのステップに係る説明は省略する。
ステップS1211では、ステップS1205で受信データの書き込みが完了すると、次のデータはラスタ順に移動するため、WAをインクリメントする。ステップS1212では、x座標が特徴面の幅に達しているか否かを判定する。先にラスタ順に処理するときは、ステップS1210の特徴面番号が特徴面の数に達しているか判定するステップより先にくる。達するまでx座標をインクリメントし、ステップS1203〜ステップS1205、ステップS1211の処理を実行する。x座標が特徴面の幅に達すると、処理はステップS1206に進む。
ステップS1206〜ステップS1207はそれぞれ、上記のステップS206〜ステップS207と同様であるため、これらのステップに係る説明は省略する。次の特徴面のデータを書き込むメモリのメモリ番号が0のとき、処理はステップS1208に進み、ライトアドレスはステップS1202にて保存したバックアップアドレスにチャネルオフセットを加算した値に更新する。メモリ番号が1のとき、処理はステップS1209に進み、ライトアドレスはステップS1202にて保存したバックアップアドレスに戻す。
ステップS1210では、特徴面番号が特徴面の数に達しているか否かを判定する。達するまで特徴面番号をインクリメントし、ステップS1202〜ステップS1209の処理を実行する。特徴面番号が特徴面の数に達すると処理を完了する。
図12のフローチャートに従った処理によると、ラスタ順次に演算処理する場合も、ステップS1204〜ステップS1205に示す通り、同一特徴面の連続するラインは異なる2個のメモリに格納されるため、2ライン同時に読み出すことが可能である。また、ステップS1206〜ステップS1209に示す通り、特徴面番号N、N+1(Nは奇数)の同一座標のデータは、ライトアドレスは替えず、メモリ番号のみ変えた場所に格納される。然るに、特徴面数が2の倍数のとき、中間バッファのライン数に依らず2個のメモリには等しいデータ量が格納される。
先にラスタ順に演算処理する場合のメモリ読み出し制御部104の動作について、図13のフローチャートに従って説明する。ステップS1301〜ステップS1311はそれぞれ、上記のステップS301〜ステップS311と同様であるため、これらのステップに係る説明は省略する。
ステップS1317では、ステップS1311ですべての参照画素のラインの送信が完了すると、次のデータはラスタ順に移動するため、リードアドレスはステップS1303にて保存したバックアップアドレスをインクリメントした値に更新する。
ステップS1318では、x座標が特徴面幅に達しているか否かを判定する。先にラスタ順に処理するときは、ステップS1316の特徴面番号が特徴面の数に達しているか判定するステップより先にくる。達するまでx座標をインクリメントし、ステップS1303〜ステップS1311、ステップS1317の処理を実行する。x座標が特徴面幅に達すると、処理はステップS1312に進む。
ステップS1312〜ステップS1313はそれぞれ、上記のステップS312〜ステップS313と同様であるため、これらのステップに係る説明は省略する。次の特徴面のデータを読み出すメモリのメモリ番号が0のとき、処理はステップS1314に進み、リードアドレスはステップS1302にて保存したバックアップアドレスにチャネルオフセットを加算した値に更新する。メモリ番号が1のとき、処理はステップS1315に進み、リードアドレスはステップS1302にて保存したバックアップアドレスに戻す。
ステップS1316では、特徴面番号が特徴面の数に達しているか否かを判定する。達するまで特徴面番号をインクリメントし、ステップS1302〜ステップS1315の処理を実行する。特徴面番号が特徴面の数に達すると処理を完了する。
図13のフローチャートに従った処理によると、ラスタ順に演算処理する場合も、ステップS1308に示す通り、同一特徴面の連続する2ラインは異なるメモリから2ライン同時に読み出す。また、アドレッシングは1つのリードアドレス(RA)のみ管理し、全てのメモリのアドレスはステップS1304で算出したメモリ番号に応じ、ステップS1308にてRA+特徴面幅×k×i(i=0、1、・・・、メモリ数−1)で決定する。然るに、アドレッシング回路は1つでよく、第1の実施形態と同様の効果を得ることができる。
なお、上記の各実施形態では、図1に示した全ての機能部をハードウェアで実装したケースについて説明した。しかし、図1に示した機能部のうち一部の機能部(メモリ読み出し制御部104、メモリ書き込み制御部103、コンボリューション演算部101等)をソフトウェア(コンピュータプログラム)で実装しても良い。この場合、このコンピュータプログラムはCNN処理部601内のメモリやRAM608やROM607などに格納され、CPU606や制御部105がこのコンピュータプログラムを実行することで、対応する機能部の機能を実現させることができる。
なお、上記の説明において使用した具体的な数値は、具体的な説明を行うために使用したものであって、上記の各実施形態がこれらの数値に限定されることを意図したものではない。なお、以上説明した各実施形態の一部若しくは全部を適宜組み合わせても構わない。また、以上説明した各実施形態の一部若しくは全部を選択的に用いても構わない。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
101:コンボリューション演算部 102:データ保持部 103:メモリ書き込み制御部 104:メモリ読み出し制御部 105:制御部

Claims (6)

  1. 入力された画像データに対して階層的にフィルタ演算処理を施して複数の特徴面を算出する演算処理装置であって、
    コンボリューション演算を行う演算部と、
    前記演算部の画像データと演算結果とを格納する複数のメモリで構成されるデータ保持部と、
    前記演算部が出力する演算結果を受信し、該受信した演算結果のうち、同一特徴面の連続するラインのデータを前記複数のメモリのうち異なるメモリに書き込み、同じ階層の複数の特徴面の同一座標のデータを前記複数のメモリのうち異なるメモリに書き込むメモリ書き込み制御部と、
    同一特徴面の連続するラインのデータを、前記データ保持部の異なるメモリから読み出し、同じ階層の異なる特徴面の同一座標のデータを、前記データ保持部の異なるメモリから読み出し、前記演算部へ送信するメモリ読み出し制御部と
    を備えることを特徴とする演算処理装置。
  2. 前記フィルタ演算処理は、階層ごとにコンボリューションに使用するカーネルサイズを任意の値に設定することができることを特徴とする請求項1に記載の演算処理装置。
  3. 前記フィルタ演算処理は、階層ごとに前記データ保持部に格納する特徴面のライン数を任意の値に設定することができることを特徴とする請求項1に記載の演算処理装置。
  4. 前記メモリ書き込み制御部は、前記データ保持部を構成するメモリの数をM(M>1)、階層における特徴面の数をN(N>1)とすると、N mod M=0のとき、M個の特徴面を1組とし、同じ組内の特徴面の同一座標のデータを、異なるメモリの同一アドレスに格納することを特徴とする請求項1記載の演算処理装置。
  5. 入力された画像データに対して階層的にフィルタ演算処理を施して複数の特徴面を算出する演算処理装置が行う演算処理方法であって、
    前記演算処理装置の演算部が、コンボリューション演算を行う演算工程と、
    前記演算処理装置のメモリ書き込み制御部が、前記演算部が出力する演算結果を受信し、該受信した演算結果のうち、同一特徴面の連続するラインのデータを、前記演算部の画像データと演算結果とを格納する複数のメモリのうち異なるメモリに書き込み、同じ階層の複数の特徴面の同一座標のデータを前記複数のメモリのうち異なるメモリに書き込むメモリ書き込み制御工程と、
    前記演算処理装置のメモリ読み出し制御部が、同一特徴面の連続するラインのデータを、前記複数のメモリにおける異なるメモリから読み出し、同じ階層の異なる特徴面の同一座標のデータを、前記複数のメモリにおける異なるメモリから読み出し、前記演算部へ送信するメモリ読み出し制御工程と
    を備えることを特徴とする演算処理方法。
  6. 入力された画像データに対して階層的にフィルタ演算処理を施して複数の特徴面を算出する演算処理装置のコンピュータに、請求項5に記載の演算処理方法の各工程を実行させるためのコンピュータプログラム。
JP2019127080A 2019-07-08 2019-07-08 演算処理装置及び演算処理方法 Active JP7308674B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019127080A JP7308674B2 (ja) 2019-07-08 2019-07-08 演算処理装置及び演算処理方法
US16/916,334 US11347430B2 (en) 2019-07-08 2020-06-30 Operation processing apparatus that executes hierarchical calculation, operation processing method, and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019127080A JP7308674B2 (ja) 2019-07-08 2019-07-08 演算処理装置及び演算処理方法

Publications (3)

Publication Number Publication Date
JP2021012596A true JP2021012596A (ja) 2021-02-04
JP2021012596A5 JP2021012596A5 (ja) 2022-07-15
JP7308674B2 JP7308674B2 (ja) 2023-07-14

Family

ID=74102279

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019127080A Active JP7308674B2 (ja) 2019-07-08 2019-07-08 演算処理装置及び演算処理方法

Country Status (2)

Country Link
US (1) US11347430B2 (ja)
JP (1) JP7308674B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7278150B2 (ja) * 2019-05-23 2023-05-19 キヤノン株式会社 画像処理装置、撮像装置、画像処理方法
CN112860320A (zh) * 2021-02-09 2021-05-28 山东英信计算机技术有限公司 基于risc-v指令集进行数据处理的方法、系统、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10294859A (ja) * 1997-04-22 1998-11-04 Fuji Xerox Co Ltd 画像処理装置、画像処理方法、画像読取装置、複写機および記録媒体
JP2007122706A (ja) * 2005-10-01 2007-05-17 Samsung Electronics Co Ltd メモリマッピング方法及び装置
JP2018050198A (ja) * 2016-09-21 2018-03-29 キヤノン株式会社 画像処理装置、その制御方法、及びプログラム
JP2018147182A (ja) * 2017-03-03 2018-09-20 キヤノン株式会社 演算処理装置およびその制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6162187A (ja) 1984-09-03 1986-03-31 Fuji Xerox Co Ltd 画像処理装置
JP5368687B2 (ja) 2007-09-26 2013-12-18 キヤノン株式会社 演算処理装置および方法
US9665799B1 (en) * 2016-01-29 2017-05-30 Fotonation Limited Convolutional neural network
EP3460724A1 (en) * 2017-09-22 2019-03-27 Kabushiki Kaisha Toshiba Operation device and operation system
JP2019207458A (ja) * 2018-05-28 2019-12-05 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス設定方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10294859A (ja) * 1997-04-22 1998-11-04 Fuji Xerox Co Ltd 画像処理装置、画像処理方法、画像読取装置、複写機および記録媒体
JP2007122706A (ja) * 2005-10-01 2007-05-17 Samsung Electronics Co Ltd メモリマッピング方法及び装置
JP2018050198A (ja) * 2016-09-21 2018-03-29 キヤノン株式会社 画像処理装置、その制御方法、及びプログラム
JP2018147182A (ja) * 2017-03-03 2018-09-20 キヤノン株式会社 演算処理装置およびその制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
岡本 卓也: "高位合成による小規模FPGA向けDNN推論器の設計", 情報処理学会 研究報告 組込みシステム(EMB), vol. 2019−EMB−050, JPN6023022555, 10 March 2019 (2019-03-10), JP, pages 1 - 8, ISSN: 0005074949 *

Also Published As

Publication number Publication date
JP7308674B2 (ja) 2023-07-14
US20210011653A1 (en) 2021-01-14
US11347430B2 (en) 2022-05-31

Similar Documents

Publication Publication Date Title
US11699067B2 (en) Arithmetic processing apparatus and control method therefor
US9135553B2 (en) Convolution operation circuit and object recognition apparatus
CN111984189B (zh) 神经网络计算装置和数据读取、数据存储方法及相关设备
JP6800656B2 (ja) 演算回路、その制御方法及びプログラム
JP7308674B2 (ja) 演算処理装置及び演算処理方法
CN114041140A (zh) 事件驱动脉冲卷积神经网络
US11704546B2 (en) Operation processing apparatus that calculates addresses of feature planes in layers of a neutral network and operation processing method
US11775809B2 (en) Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium
JP7391553B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP2023058636A (ja) 情報処理装置及びメモリ制御方法
JP5327482B2 (ja) 画像処理装置及び画像処理方法
JP7297468B2 (ja) データ処理装置及びその方法
JP2010033507A (ja) メモリコントローラおよび画像処理装置
JP7321213B2 (ja) 情報処理装置、情報処理方法
CN110072032B (zh) 图像处理装置
US20230334820A1 (en) Image processing apparatus, image processing method, and non-transitory computer-readable storage medium
JP4835872B2 (ja) 画像処理装置
TWI632527B (zh) 影像擷取與輸出方法
TW202326606A (zh) 影像扭曲校正的方法
KR101712435B1 (ko) 윤곽선 깊이정보 확장장치
CN117274068A (zh) 图像的校正方法、系统和终端和计算机存储介质
JP2945028B2 (ja) 画像処理指定領域情報計算装置
KR20170068774A (ko) 적분 영상을 사용하지 않는 surf 특징점 추출 방법 및 장치
JPH0316374A (ja) 画像処理指定領域情報計算装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220707

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230530

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230704

R151 Written notification of patent or utility model registration

Ref document number: 7308674

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151