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

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

Info

Publication number
JP6945986B2
JP6945986B2 JP2016211897A JP2016211897A JP6945986B2 JP 6945986 B2 JP6945986 B2 JP 6945986B2 JP 2016211897 A JP2016211897 A JP 2016211897A JP 2016211897 A JP2016211897 A JP 2016211897A JP 6945986 B2 JP6945986 B2 JP 6945986B2
Authority
JP
Japan
Prior art keywords
data
arithmetic
reference data
group
coefficient data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016211897A
Other languages
English (en)
Other versions
JP2018073102A (ja
Inventor
加藤 政美
政美 加藤
山本 貴久
貴久 山本
野村 修
修 野村
伊藤 嘉則
嘉則 伊藤
克彦 森
克彦 森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2016211897A priority Critical patent/JP6945986B2/ja
Priority to US15/791,223 priority patent/US10586149B2/en
Publication of JP2018073102A publication Critical patent/JP2018073102A/ja
Priority to US16/783,792 priority patent/US11068776B2/en
Application granted granted Critical
Publication of JP6945986B2 publication Critical patent/JP6945986B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/24Character recognition characterised by the processing or recognition method
    • G06V30/242Division of the character sequences into groups prior to recognition; Selection of dictionaries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/32Digital ink
    • G06V30/333Preprocessing; Feature extraction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Description

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

ここで、「input(x,y)」は座標(x、y)での参照画素値を示し、「output(x,y)」は座標(x、y)での演算結果を示す。また、「weight(column,row)」は座標(x+column、y+row)での重み係数を示し、「columnSize」及び「rowSize」はコンボリューションカーネルサイズを示す。
CNN処理では複数のフィルタカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換することで特徴面を算出する。なお、特徴面1603aは前階層の一つの画像データから算出されるので、結合数が1である。特徴面1603aを算出するためのカーネル16021aは1つである。ここで、フィルタカーネル16021b、16021cはそれぞれ特徴面1603b、1603cを算出する際に使用されるフィルタカーネルである。また、フィルタカーネルは、フィルタ又はカーネルと略称することがある。
図17はCNN処理における特徴面1605aを算出する場合の例を説明する図である。特徴面1605aは前階層1608の3つの特徴面1603a〜cから算出され、特徴面1603a〜cと結合している。特徴面1605aのデータを算出する場合、まず、特徴面1603aに対しては模式的に示すカーネル16041aを用いたフィルタ演算を行い、その結果を累積加算器1701に保持する。同様に、特徴面1603b、1603cに対してはそれぞれカーネル16042a、16043aのコンボリューション演算を行い、その結果を累積加算器1701に累積加算する。3種類のカーネルを用いたコンボリューション演算の終了後、ロジスティック関数や双曲正接関数(tanh関数)を利用した非線形変換処理1702を行う。
以上の処理を画像全体に対して1画素ずつ走査しながら処理することで、特徴面1605aを算出する。同様に、特徴面1605bは前階層1608の3つの特徴面に対してカーネル16041b、カーネル16042b及びカーネル16043bで示す3つのコンボリューション演算を用いて算出する。更に、特徴面1607は前階層1609の特徴面1605a〜bのそれぞれに対してカーネル16061及びカーネル16062で示す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グループの前記係数データとのフィルタ演算を実行することで、前記フィルタ演算を並列に実行する所定個の演算器と、前記記憶装置から転送された前記所定個のグループの参照データを保持し、前記所定個の演算器のそれぞれに並列に、その演算器に対応するグループの参照データをグループ単位で供給する参照データ供給手段と、前記記憶装置から転送された前記所定個のグループの係数データを保持し、前記所定個の演算器のそれぞれに並列に、その演算器に対応する1グループの係数データから順次1つずつ係数データを供給する係数データ供給手段とを有し、前記所定個の演算器の各々は、前記参照データ供給手段から供給された、その演算器に対応する1グループの参照データに対して、その演算器に対応する1グループの係数データから前記係数データ供給手段により順次1つずつ供給された1つの係数データを用いたフィルタ演算を実行することを特徴とする。
本発明により、保持部に保持された一部の参照データと複数の異なるフィルタとのフィルタ演算を並列に行うことによって、積和演算の処理効率の低下を避けることができる。
本発明の第1の実施形態の演算回路の構成概要を示すブロック図である。 本発明を概念的に説明する図である。 実施形態によるコンボリューション演算の基本的な考え方を説明する図である。 (a)第1の実施形態の演算回路のより詳細な構成と動作を説明する図である。(b)CNNのネットワーク構成と演算の関係を模式的に説明する図である。 (a)第1の実施形態の演算回路のより詳細な構成と動作を説明する図である。(b)CNNのネットワーク構成と演算の関係を模式的に説明する図である。 実施形態の並列積和演算器の構成を説明する図である。 図1のシフトレジスタ402a,b、405a,b、407a,bを説明する図である。 実施形態に係る並列コンボリューション演算の例を説明する図である。 実施形態の動作を示すタイムチャートである。 実施形態のパターン認識装置の構成を示す図である。 実施形態のパターン認識装置のフローチャートである。 実施形態の制御部102の詳細を説明する図である。 (a)第2の実施形態の構成と動作例を説明する図である。(b)CNNのネットワーク構成と演算の関係を模式的に説明する図である。 (a)第2の実施形態の構成と動作例を説明する図である。(b)CNNのネットワーク構成と演算の関係を模式的に説明する図である。 (a)第3の実施形態の特徴面を算出する一例を説明する図である。(b)第3の実施形態の特徴面を算出する一例を説明する図である。 CNN処理の例を示すネットワーク構成図である。 CNN処理におけるコンボリューション演算を説明する図である。
(第1の実施形態)
まず、本発明の第1の実施形態について説明する。図1は本発明の第1の実施形態に係る演算回路の構成を説明する図である。図1に示す演算回路は、図16に示すような複数のデータ群の階層的な結合関係にしたがって、下位の階層から特徴面を順次算出していく。並列演算部1081〜108nは、それぞれm個(mは1以上)の積和演算器を内蔵するものとする。並列演算部1081〜108nは、同一のクロックで並列に動作する。参照データ供給部107は、参照データ保持部105にバッファリングされた参照データ(コンボリューション演算に必要な前階層の特徴面データの一部)を所定のタイミングで並列演算部1081〜108nに供給する。参照データ供給部107は、所定のグループの参照データ供給部1061〜106nに分割されており、分割されたグループ単位でそれぞれ並列演算部1081〜108nに複数の異なるデータを並列に供給する。
ここでの参照データ供給部1061〜106nはシフトレジスタで構成され、並列演算部1081〜108nに各レジスタの値を並列に供給する。係数データ供給部103は、コンボリューション演算に必要なパラメータデータ(重み係数データ)を並列演算部1081〜108nに供給する。係数データ供給部103は、所定のグループに分割されており、分割されたグループ毎にそれぞれ対応する並列演算部1081〜108nにパラメータデータを供給する。なお、供給するデータは対応するグループの並列演算部が内包する複数の演算器に共通のデータを供給する。本実施形態ではパラメータデータはRAM101に格納されているものとするが、RAM101に限定せず、他の記憶部や記憶装置に格納してもよい。例えば、図示しないROM等にパラメータデータが格納されている構成でも良い。演算結果取り出し部109はコンボリューション演算の終了毎に演算結果を取り出す。制御部102は主にデータ転送に係わる制御を司る。演算結果はRAM101に格納され、次の階層の参照データとして当該メモリに保持される。次の階層を処理する場合、RAM101に格納された前階層の演算結果である特徴面を参照することで多階層のネットワークを順次処理することができる。本実施形態では、並列演算部、参照データ供給部、係数データ供給部を所定の単位で予めグルーピングすることで、算出する複数の特徴面にグループ単位で演算回路を割り当てることができる。
次に、本実施形態によるコンボリューション演算の基本的な考え方を、図3を用いて説明する。図3は、コンボリューション演算によって参照特徴面302から特徴面306を算出する一例である。ここでは特徴面306の垂直方向に連続する3つの位置の特徴面データを並列に算出する場合の概念を説明する。なお、基本的な考え方は、特徴面306の水平方向に連続する位置を並列に算出する場合についても同様である。コンボリューションカーネル(フィルタカーネル)のサイズは説明のため3行1列の係数とする。特徴面306のデータ305を並列に算出するのに必要な参照データが参照特徴面302のデータ301である。
図3のシフトレジスタ303及びシフトレジスタ307は、それぞれ参照データ301及びコンボリューションカーネルの係数を保持する。シフトレジスタ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の並列度に因果関係がないという特徴を有している。つまり、コンボリューション演算を様々な並列度で処理することができる。
図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及び特徴面209が参照する参照データは共通であるが、特徴面を順に算出する必要があるため、特徴面の処理毎に同じ参照データ201がデータバッファ205に転送されることになる。
図2(c)は、それぞれ2個の積和演算器からなる2組の並列積和演算器211及び並列積和演算器213を用いて、異なる特徴面208及び特徴面209を同時に算出する。即ち、算出する特徴面208上の2画素の算出領域212の値と算出する特徴面209上の2画素の算出領域214の値とは、それぞれ並列積和演算器211及び並列積和演算器213で並列に算出される。この場合、データバッファ205には特徴面208及び特徴面209の算出に際し、共通に必要となる参照特徴面204の参照データ210が保持される。参照特徴面は一般的に低速な大容量なメモリであるRAM101に格納される。一方、データバッファ205は高速・小容量なメモリやレジスタ等で構成される。図2(c)に示すように、複数の特徴面を並列に算出する場合には、データバッファ205を介して特徴面208及び特徴面209の算出時に参照データを共用することができる。そのため、図2(b)に示す構成で順番に特徴面を算出する場合に比べて、図2(c)に示す構成は、RAM101からデータバッファ205へ参照データを転送する回数を半減させることができる。参照データの転送速度を考慮しない場合、図2(b)及び図2(c)のそれぞれの構成では、特徴面を算出する時間は同等であるが、データ転送速度が遅い場合があると、図2(b)の構成ではデータ転送時間が特徴面を算出する時間を律することになる。従って、図2(b)の構成による特徴面の算出時間は、図2(c)の構成による特徴面の算出時間より長い場合がある。
この例で示すように、図2(b)の構成による特徴面の算出を行わずに、CNNのネットワーク構成や動作条件に応じて、図2(a)の構成と図2(c)の構成とを切り替えることで、並列演算器の数に応じた最良の性能を引き出すことができる。
本実施形態では、CNNのネットワーク構成や動作条件に応じて並列に動作する演算回路の割り当て(算出する特徴面に割り当てる並列演算器の数)を最適化することが可能な並列演算処理回路を提案することにある。
次に、図4、5を用いて図1の構成をより詳細に説明する。ここでは説明のために演算器のグループの数を2とした場合について説明するが、この二つのグループの演算器以外の演算器を含んでもよい。これによって、全ての演算器を一つの特徴面の算出に利用する場合と、2つの特徴面のそれぞれの算出に分割して利用する場合の2つのケースを選択可能な構成の例である。これは、図2(a)で説明した演算処理と図2(c)で説明した演算処理の切り替えに相当する。なお、図4と図5は説明のため2つのグループ単位で処理対象となる特徴面を切り替える場合について説明するが、これに限るわけではなく、より多くのグループに分割した構成で良い。
図4、5は共通のハードウェアである並列演算器の割り当てが異なる動作モードを説明する図である。また、図4、5は図1の構成を詳細化したものであり、同じ番号は同一の構成を示す。ここでは、図1の構成と相違する部分についてのみ説明する。
なお、以下では、先ず、本実施形態によるコンボリューション演算処理の基本的な共通動作について説明し、その後に本実施形態の特徴となる複数の動作モードの説明を行う。
参照データ保持部(参照データバッファ)105は、所定の数のレジスタで構成する。参照データ保持部105は少なくとも、シフトレジスタ402a、bに格納するデータの個数以上のレジスタを有する。制御部102は、並列積和演算器108a,bが参照するデータをRAM101から当該レジスタに転送する。参照データ供給部107は、ここでは、セレクタ401とシフトレジスタ402a、bで構成する。シフトレジスタ402a、bは、それぞれ並列積和演算器108a、bに参照データをm個並列に供給する。供給するデータは図示しないクロックにしたがって順次シフトしていく。係数データ供給手部103は、ここでは係数データバッファ403、セレクタ404、シフトレジスタ405a,bで構成する。係数データバッファ403は、所定の個数のレジスタ等により構成する。
係数データバッファ103は少なくとも、シフトレジスタ405a、bに格納するデータの個数以上のレジスタを有する。RAM101に格納されているパラメータデータ(コンボリューション演算の重み係数データ)は制御部102により係数データバッファ403に転送される。セレクタ404はシフトレジスタ405a,bへのデータ分配を選択する。シフトレジスタ405a,bの出力はそれぞれ並列積和演算器108a、bに接続する。
並列積和演算器108a、bに入力する係数はグループ毎に共通のデータである。並列積和演算器108a、bはそれぞれ同一のクロックで動作する複数の積和演算器を含むものとする。セレクタ401、404はそれぞれ参照データバッファ105、係数データバッファ403の出力を選択するマルチプレクサであるが、詳細は後述する。
図6は、並列積和演算器108a、bの構成を示す図である。参照データ供給部の出力6011〜601mから、各乗算器6031〜603mへ異なるデータを供給する。係数データ供給部の出力602から、各乗算器6031〜603mへ共通のデータを供給する。累積加算器6041〜604mは、コンボリューションカーネル演算の期間中に乗算結果を累積する。クリア信号605は、所定のコンボリューション演算単位が終了すると累積加算器6041〜604mの内蔵ラッチをクリアするために使用される。ラッチイネーブル信号(Latch Enable信号)606は、当該信号で累積加算値を更新する。Latch Enable信号606には図示しないクロック信号に同期した信号が接続されるものとする。
演算結果取り出し部109は、シフトレジスタ407a、b等からなる。シフトレジスタ407a、bは、並列積和演算器108a、bの出力データを所定のタイミングでラッチし、シフト動作で出力する。非線形変換処理部408は、コンボリューション演算の結果を必要に応じて非線形変換処理する。変換結果は制御部102を介してRAM101の所定領域に記録される。
図12は制御部102の詳細を説明する図である。シーケンス制御部1201は、レジスタ群1202に設定された情報にしたがって、演算回路1002の動作を制御する各種制御信号1204を入出力する。同様に、シーケンス制御部1201はメモリ制御部1205を制御するための制御信号1206を生成する。シーケンス制御部1201はバイナリカウンタやジョンソンカウンタ等からなるシーケンサにより構成される。レジスタ群1202は複数のレジスタセットからなり、階層的な処理を行うための情報が保持される。例えば、参照する特徴面や算出する特徴面に関する情報、カーネルに関する情報、特徴面の処理順等関する情報等が記録される。レジスタ群1202はブリッジ1004及び画像バス1003を介してCPU1007から予め所定の値が書き込まれる。
本実施形態によるコンボリューション演算は算出特徴面の水平方向に連続するm画素位置のデータをグループ毎に複数並列に算出するものである。係数データバッファ403及びシフトレジスタ405a,bは少なくともコンボリューションカーネルの水平方向のサイズより多いレジスタで構成される。例えば、重み係数が8ビットで表されるデータの場合、8ビット幅の複数のレジスタで構成される。例えば、水平方向のコンボリューションカーネルサイズが「11」の場合、当該レジスタの数は「11」とする。
実際には、想定する最大カーネルサイズのレジスタ数で構成する。なお、制御部102はシフトレジスタ405a,bのシフト動作中にRAM101から次の行の積和演算処理に必要な係数を係数データバッファ403にロードする。
参照データバッファ105はRAM101に格納された参照データを一時的に保持するために使用される。参照データが8ビットで表されるデータの場合、参照データバッファ105は8ビット幅の複数のレジスタで構成される。参照データバッファ105は所定数以上の個数のレジスタで構成される。この所定数は、例えば、(「並列に処理するデータの数」+「並列処理する方向と同じ方向のコンボリューションカーネルサイズ」−1)×「グループの数」によって計算される。制御部102はシフトレジスタ402a,bのシフト動作中にRAM101から次の行の処理に必要な参照データを参照データバッファ105にロードする。コンボリューション演算は図3で説明したように、参照データシフトレジスタ402a,b及び係数データシフトレジスタ405a,bのシフト動作により処理される。
以上の処理により、積和演算処理とRAM101からのデータロードをコンボリューションカーネルの水平行単位でパイプライン化することが可能になる。
シフトレジスタ402a,b、シフトレジスタ405a,b及びシフトレジスタ407a,bはそれぞれデータロード機能付のシフトレジスタである。シフトレジスタ402a,b及びシフトレジスタ405a,bはそれぞれ参照データバッファ105及び係数データバッファ103と同じビット幅の複数のレジスタで構成される。シフトレジスタ407a,bは並列積和演算器108a,bの出力データと同じビット数の複数のレジスタで構成される。
図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である場合は、ラッチしたデータをそのまま保持する(状態遷移しない)。
図4(a)におけるLoad2/Load4/Load5信号はそれぞれ係数データシフトレジスタ405a,b、参照データシフトレジスタ402a,b、結果シフトレジスタ407a,bのLoad信号である。図4(a)におけるEnable1/Enable2/Enable3信号はそれぞれ係数データシフトレジスタ405a,b、参照データシフトレジスタ402a,b、結果シフトレジスタ407a,bのEnable信号である。シフトレジスタ405a,bは初期データのロード(係数データバッファ403に保持された複数のデータをセレクタ404を介して一括ロード)後、水平方向のコンボリューションカーネルサイズと同じクロック数シフト動作を実行する。シフトレジスタ405a,bは、シフト動作に従って、並列積和演算器108a,bに対して重み係数データを順次供給する。シフトレジスタ405a,bのそれぞれの図7におけるOUTn信号(シフトレジスタ最終段出力)が全ての並列積和演算器108a,bに共通に接続される。
同様に、シフトレジスタ402a、bはセレクタ401を介して参照データバッファ105から初期データがロードされると、以後水平方向のコンボリューションカーネルサイズと同じクロック数シフト動作を実行する。また、シフトレジスタ402a、bは並列積和演算器108a、bに対して複数の参照データ(図7 OUT1〜OUTn信号)を同時に供給する。
シフトレジスタ405a,bとシフトレジスタ402a,bは同期して動作する。シフトレジスタ405a,b、402a,bから供給されるデータにしたがって並列積和演算器108a,bで積和演算が実行される。
ここで得られた累積和は、対象特徴面に対応する全コンボリューションカーネルの演算終了後、シフトレジスタ407a,bにロードされ、所定のタイミングで非線形変換処理部408に送られる。並列積和演算器108a,bのそれぞれは同一クロックで動作する同一の回路がm個並んでいるものとする。
シフトレジスタ407a,bは、m個の積和演算出力を保持することが可能なフリップフロップで構成する。並列積和演算器108a,bの出力は所定の有効ビットのみシフトレジスタ407a,bに接続する。
非線形変換処理部408はルックアップテーブル等により構成する。非線形変換処理部408で変換処理されたデータはRAM101の所定アドレスに格納される。ここでの格納アドレスも制御部102に従って制御される。
図8は本実施形態の演算回路による並列処理の具体例を模式的に説明する図である。図8の参照データ面802及び算出データ面804は、それぞれラスタスキャンされたデータ座標を用いて表す。参照特徴面802は、各データ(模式的に示す最小一升)がラスタスキャン順でRAM101に格納された前階層の演算結果(input(x,y)、x:水平方向位置、y:垂直方向位置)を示すものであるとする。算出データ面804は、各データがラスタスキャンされた演算結果(output(x,y)、x:水平方向位置、y:垂直方向位置)を示すものとする。
算出範囲803は並列積和演算器108aまたは108b(m=8の場合)で並列に演算するデータの位置を示し、参照範囲801がコンボリューション演算のカーネルサイズが3×3である場合の算出範囲803に対する参照データの範囲である。制御部は参照範囲801内の各ラインのデータを順に参照データレジスタバッファに転送し、並列積和演算器は参照データのシフト動作に伴ってコンボリューション演算を実現する。
図9は、図4或いは図5の演算回路のコンボリューション演算の共通動作を説明するタイムチャートである。以下、図4及び図9を用いて演算回路の特徴的な動作を説明する。図9は1つの特徴面のコンボリューション演算処理動作の一部を説明するための図である。また、図9に示す信号は全て図示しないクロック信号に基づいて同期動作する。
信号Load1は係数データバッファ403に重みデータをロードするためのイネーブル信号を示す。制御部102は当該信号が有効(信号レベルが1)の期間にRAM101から水平方向1列分の重みデータを読み出し係数データバッファ403に書き込む。ここでRAM101のデータ幅は32ビットであり、重み係数のデータ幅は8bitであるとすると、係数データバッファ403に水平方向3個の重み係数を書き込む場合、1クロックでロード処理を完了する。なお、以後、RAM101に対する読み出し/書き込みサイクルは全て1クロックで完了するものとする。
制御部102は、重み係数のロードが完了すると、次に参照データのロードを開始するためにLoad3信号を有効化する。ここで、Load3信号もLoad1信号と同様に信号レベル1の場合が有効化された状態であるものとする。制御部102はLoad3信号の有効化と同時にRAM101から参照データを取り出し参照データバッファ105にセットする。セットするデータの数はコンボリューションカーネルの大きさ及び並列度から決定する。
制御部102はRAM101から読み出すデータのアドレスを決定する。参照データの有効桁は8bitであるとすると、図8の例の場合コンボリューションカーネルの水平方向サイズが3、演算並列度が4であることから3+3−1=5個のデータをロードする必要がある。したがって、2サイクルで書き込みシーケンスを完了する。
*CLR信号は並列積和演算器108a、bの累積加算器6041〜604mを初期化するための信号であり、当該信号が0である場合に、累積加算器に内蔵するレジスタは0に初期化される。制御部102は新たな特徴面位置のコンボリューション演算開始前に当該信号を0にする。
Load2信号は係数データシフトレジスタ405a、bの初期化を指示するための信号である。Load2信号が1であり、かつEnable1信号が有効(信号レベル1)である場合、係数データバッファ403に保持する複数の重み係数データが係数データシフトレジスタ405a,bに一括ロードされる。Enable1信号はシフトレジスタのデータ遷移を制御する信号であるが、図9に示すように動作中は常に1に設定されている。そのため、Load2信号が1である場合、クロック信号に応じて係数データバッファ403の出力をラッチし、Load2信号が0である場合、クロック信号に応じてシフト処理を継続する。
制御部102のシーケンス制御部1201は、コンボリューションカーネルの水平方向サイズに応じたクロック数をカウントするとLoad2信号を有効化し、シフト動作を停止させる。同時に、シーケンス制御部1201は、セレクタ404を介して係数データバッファ403に保持する重み係数データを係数データシフトレジスタ405a、bに一括ロードする。即ち、コンボリューションカーネルの水平方向単位で重み係数を一括ロードし、ロードした係数を動作クロックに応じてシフトアウトする。
Load4信号は参照データシフトレジスタ402a,bの初期化を指示するための信号である。当該信号が1であり、かつEnable2信号が有効(信号レベル1)である場合、参照データバッファ105に保持する参照データがセレクタ401を介して参照データシフトレジスタ402a,bに一括ロードされる。Enable2信号はシフトレジスタのデータ遷移を制御する信号である。図9に示すようにEnable2信号は、動作中は常に1に設定されているため、Load4信号が1である場合、クロック信号に応じて参照データバッファ105の出力をラッチし、Load4信号が0である場合、クロック信号に応じてシフト処理を継続する。
制御部102のシーケンス制御部1201は、コンボリューションカーネルの水平方向サイズに応じたクロック数をカウントするとLoad4信号を有効化し、シフト動作を停止させると同時に参照データバッファ105に保持する参照データを一括ロードする。
即ち、コンボリューションカーネルの1列単位で必要な参照データを一括ロードし、ロードした参照データを動作クロックに応じてシフトする。
以上、制御部102は、Load4信号をLoad2信号と同一タイミングで制御する。
並列積和演算器108a,bはクロックに同期して積和演算を継続している。そのため、シフトレジスタ402a,b及びシフトレジスタ405a,bのシフト動作にしたがって算出する特徴面の複数の点に対して同時にコンボリューションカーネルサイズに応じた積和演算処理を実行する。具体的には、シフトレジスタ402a,bとシフトレジスタ405a,bのシフト動作期間(図9中の積和演算処理区間)中にコンボリューションカーネルの1列分(又は1行分)の積和演算がなされることになる。当該列単位の演算を重み係数及び参照データを入替ながら水平方向(又は垂直方向)に繰り返すことで並列度の数に応じた二次元のコンボリューション演算を処理する。
このように、制御部102はカーネルサイズ及び並列度に応じて各信号を制御することで、積和演算処理と積和演算処理に必要なデータ(重み係数データ及び参照データ)のRAM101からの供給を並行に実行させる。
Load5信号は並列積和演算器の結果を結果シフトレジスタ407a,bに並列にロードするための信号である。制御部102は対象となる特徴面の並列処理単位の積和演算が終了するとLoad5信号及びEnable3信号に1を出力する(当該タイミングは図9には図示しない)。
結果シフトレジスタ407a,bはLoad5信号が1でEnable3信号が1である場合、並列積和演算器108a,bの出力を一括ロードする。制御部102はシフトレジスタ402a,b,シフトレジスタ405a,b及びシフトレジスタ407a,bのシフト動作中にEnable3の信号を有効化し、結果シフトレジスタ407a,bに保持する演算結果をシフトアウトする。図7のOUTn信号(シフトレジスタ最終段出力)が非線形変換処理部408に接続されているものとする。シフトアウトした演算結果は非線形変換処理部408で変換処理された後、制御部102により、レジスタ群1202に記された演算結果格納先ポインタ等の情報にしたがってRAM101の所定のアドレスに格納される。
以上のように、制御部102は参照データバッファ105、係数データバッファ403及び非線形変換処理部408の3つの処理部のRAM101に対するアクセスを調停する。制御部102は、並列積和演算器の積和演算処理とこの3つの処理部(参照データバッファ105、係数データバッファ403及び非線形変換処理部408)のRAM101へのアクセスをパイプライン化する。つまり、RAM101に対する参照データの読み出し、演算結果の書き出しを積和演算処理期間に並行処理することで、高速に処理することができる。但し、並列度とコンボリューションカーネルの関係によっては、RAM101へのアクセスを積和演算期間中に完全にパイプライン化できない場合もある(並列積和演算器108a,bの並列度が高く、並列度コンボリューションカーネルが小さい場合など)。
その場合、制御部102はRAM101へのアクセス完了を優先し、Enable1/Enable2/Enable3信号及び累積加算器のLatch Enable信号を制御することで積和演算処理の開始を遅延させる。例えば、並列積和演算器の並列度が12、コンボリューションカーネルサイズが3×3の場合、コンボリューションカーネルの水平方向の演算に必要な参照データは12+3−1=14個となる。この場合、RAM101のデータ幅が32ビットであるとすると、4サイクル(14/4の切り上げ)の転送時間を要する。一方水平方向のコンボリューション演算は3クロックであり、この場合、参照データの転送時間が処理時間を律することになる。
次に、図4、5を用いて本実施形態の演算回路に特有の動作について説明する。図4(a)は、一つの特徴面を全ての積和演算器で並列に処理する場合の動作モードを説明する図である。
制御部102は、係数データバッファ403にコンボリューションカーネル水平方向単位の一種類の係数データをRAM101から転送する。セレクタは係数データバッファ403に格納するデータをそれぞれ係数データシフトレジスタ405aと係数データシフトレジスタ405bに分配するように選択する。即ち、係数データシフトレジスタ405a及び係数データシフトレジスタ405bは、係数データバッファ403に格納されている同じコンボリューションカーネル係数を格納するように、係数データバッファ403から同じ係数データをロードする。
次に、制御部102は、参照データバッファレジスタに連続する領域の参照データを転送する。転送するデータは参照データシフトレジスタ402a及び参照データシフトレジスタ402bに格納するデータであり、それぞれ並列積和演算器108a、108bの並列度に応じた連続する領域の所定個数の参照データである。この所定個数は、並列積和演算器108a、108bが並列に算出するデータのサイズ(並列度)+カーネルの水平方向サイズ−1で算出される。
セレクタ401は、参照データバッファ105の出力の図中上位に示すデータをそのまま参照データシフトレジスタ402aに出力し、下位に示すデータをそのまま参照データシフトレジスタ402bに出力するように動作する。
セレクタ404及びセレクタ401の動作は制御部102が生成するMode信号によって制御される。即ち、Mode信号の値(1又は0)に応じて入力データを選択して出力する。
参照データシフトレジスタ402a及び参照データシフトレジスタ402bへのデータ格納が完了するとシフト動作が開始し、並列積和演算器108a,bは、コンボリューションカーネルの水平方向単位の積和演算を開始する。コンボリューションカーネルの行単位に以上の処理を繰り返すことで所望の演算結果を並列度に応じて処理することができる。この動作モードでは水平方向に連続する2×m個の位置のコンボリューション演算を並列に処理する。
図4(b)は、図4(a)で説明した動作モード時のCNNのネットワーク構成と演算の関係を模式的に説明する図である。演算に必要な参照データ領域410、411は、それぞれ参照データレジスタ402a、402bに格納されるデータであり、参照特徴面の異なる領域である。また、参照特徴面における参照データ領域410,411は、カーネルサイズに応じたオーバーラップ領域を有してもよい。
コンボリューションカーネル414は、係数データレジスタ405a、405bに格納される係数データである。算出領域412、413は、それぞれ並列積和演算器108a,bで並列に演算することによって算出する特徴面の領域を示している。算出領域412、413は、それぞれ水平方向に連続するm個の位置のデータである。つまり、2×m個の位置の算出特徴面データを並列に計算することになる。図4(a)で説明した動作モードでは、算出領域412と算出領域413の合計領域単位でラスタスキャンすることにより特徴面を算出する。
図5(a)は、二つの特徴面を積和演算器で並列に処理する場合の動作モードを説明する図である。
制御部102は係数データバッファ403にコンボリューションカーネル水平方向単位の係数データをRAM101から転送する。ここでは複数の特徴面に対応する異なる係数のデータを係数データバッファ403に格納する。セレクタ404は係数データバッファ403に格納された異なる2種類の係数を係数データシフトレジスタ405a及び係数データシフトレジスタ405bにそれぞれ出力するように動作する。即ち、係数データシフトレジスタ405aと係数データシフトレジスタ405bには算出特徴面に対応する異なる係数が格納される。
次に、制御部102は参照データバッファ105に2つの算出特徴面が参照する同じ領域の参照データを転送する。転送するデータは参照データシフトレジスタ402a及び参照データシフトレジスタ402bに格納するデータであり、並列積和演算器108a、108bの並列度に応じた連続する領域の所定個数の参照データである。この所定個数は、算出するデータのサイズ+カーネルの水平方向サイズ−1で算出される。
ここでは参照データシフトレジスタ402a及び参照データシフトレジスタ402bに同一のデータを格納するため、参照データバッファ105に格納するデータは図4で説明した動作モードに対して半分のサイズである。従って、参照データバッファ105の図中上位に示す位置にのみデータが格納されている。セレクタ401は参照データシフトレジスタ402a及び参照データシフトレジスタ402bに参照データバッファ105の上位位置に格納されているデータを出力するように動作する。
参照データシフトレジスタ402a及び参照データシフトレジスタ402bへのデータ格納が完了するとシフト動作が開始し、並列積和演算器108a,bは、コンボリューションカーネルの水平方向単位の積和演算を開始する。コンボリューションカーネルの行単位に以上の処理を繰り返すことで所望の演算結果を並列度に応じて処理することができる。この動作モードでは二つの特徴面に対して水平方向に連続するm個の位置のコンボリューション演算を並列に処理する。
図5(b)は、図5(a)で説明した動作モード時のCNNのネットワーク構成と演算の関係を模式的に説明する図である。二つの特徴面の算出時に必要な参照データ領域502は、参照データシフトレジスタ402a及び参照データシフトレジスタ402bに格納されるデータであり、参照特徴面の領域である。コンボリューションカーネル503及びコンボリューションカーネル505は、それぞれ係数データシフトレジスタ405a及び係数データシフトレジスタ405bに格納される異なるデータである。並列に演算する算出特徴面の算出領域504及び算出領域506は、それぞれ水平方向に連続するm個の位置のデータ領域である。つまり、m個の位置の異なる算出特徴面データを並列に算出することになる。算出領域504と算出領域505の領域単位でラスタスキャンすることで2つの特徴面を算出する。
図4の動作モードで複数の特徴面を算出する場合、特徴面の算出毎に、参照特徴面のデータをRAM101から参照データバッファに転送する。即ち、参照する特徴面の数倍のデータ転送が必要となる。
一方、図5の動作モードでは、算出する異なる特徴面でそれぞれ参照する特徴面のデータを共有するために、参照する特徴面のデータの転送回数を削減することができる。つまり、演算に必要な参照データの転送レートを下げることができる。これにより、参照データバッファ105へのデータ転送時間が全体の処理時間を律するケースを低減し、演算リソース(並列演算器)を有効に活用することができる。前述した例のように、並列積和演算器の並列度(m×2)が12、コンボリューションカーネルサイズが3×3の場合、コンボリューションカーネルの水平方向の演算に必要な参照データは12÷2+3−1=8個となる。1個の参照データは8ビットで表されるので、転送する参照データは64ビットである。この場合、RAM101のデータ幅が32ビット/サイクルであるとすると、2サイクルの転送時間を要する。一方、水平方向のコンボリューション演算は3クロックであり、この場合は、演算器の処理時間が全体の処理時間を律することになる。つまり、演算器の能力を十分に活用していることになる。
以上、図4、図5で説明したように、本実施形態の演算回路では並列積和演算器108a及び並列積和演算器108bに供給する参照データ及びコンボリューションカーネル係数を変えることで算出する特徴面に割り当てる並列演算器の数を制御する。
図10は本実施形態の演算回路を具備した画像処理装置の構成例を示すものである。この画像処理装置は、入力画像データからパターン認識処理によって特定の物体を検出する機能を有する。図10の演算回路1002は、図1、図4及び図5で示された演算回路である。
図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は、演算回路1002の動作に必要な重み係数をROM1008からRAM101に転送すると共に、演算回路1002の動作、即ちCNNのネットワーク構成を定義する為の各種設定を行う。具体的には、CPU1007は、演算回路1002の制御部102に存在する複数の動作レジスタに所定の値を設定する。同様に、CPU1007は、前処理モジュール1005等のレジスタに対しても動作に必要な値を書き込む。
次に、ステップS1102で各特徴面を算出する際の並列演算器の割り当てを決定する。
ここではCNNのネットワーク構造やRAM101から演算器に対するータ転送性能、演算対象領域等の条件に従って、特徴面に割り当てる並列演算器の数を設定する。例えば、参照特徴面と算出特徴面の結合関係に応じて設定する。或いは、RAM101に格納する参照データの演算器への転送時間と演算器の処理サイクル(処理時間)との関係に基づいて決定する。
ステップ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では、次のフレームの画像に対する処理を継続する。
本実施形態によれば、簡単な制御で、算出する特徴面に割り当てる並列演算器の数を選択することが可能になる。これにより多様なネットワークを高い並列度で効率的に処理し、全体の処理時間を低減することが可能になる。
本実施形態では並列演算器で2次元のコンボリューション演算を処理する場合について説明したが、コンボリューション演算に限るわけではない。
本実施形態では2次元データ(画像データ)に対するCNN処理の例を説明したが、音声データ等の1次元データや時間方向の変化も含めた3次元データに対するCNN処理に適用することも可能である。
本実施形態ではCNN処理に対して本発明を適用する場合について説明したが、これに限るわけではない。演算処理の階層的な結合関係で表現される様々な処理に適用可能である。例えば、Restricted Boltzmann MachinesやRecursive Neural Network等他の階層的な処理に適用可能である。
(第2の実施形態)
第1の実施形態は2種類の並列演算器の割り付け方法を変更する場合について説明したが、本実施形態ではより自由度の高い割り付け方法を実現する構成例について説明する。
図13(a)は本実施形態の演算回路の構成を示す図である。RAM101、制御部102は図1の演算回路と同じである。参照データバッファレジスタ105は、図1の参照データ保持部105に相当し、図4及び図5に示したレジスタと同様に構成される。本実施形態の第1のデータ供給部107は、参照データシフトレジスタ1301とクロスバースイッチ1302からなる。なお、第1のデータ供給部107は参照データバッファレジスタ105及び参照データシフトレジスタ1301で構成し、クロスバースイッチ1302は経路制御部を構成するものであってもよい。この経路制御部は、第1のデータ供給部107の出力と並列演算器の入力との間の経路を制御する。ここで、参照データシフトレジスタ1301は、12個のレジスタd1〜d12により構成されているものとする。本実施形態の第2のデータ供給部103は、係数データバッファレジスタ1303、係数データシフトレジスタ1304及びクロスバースイッチ1308からなる。なお、第2のデータ供給部103は係数データバッファレジスタ1303及び係数データシフトレジスタ1304から構成し、クロスバースイッチ1308は経路制御部を構成するものであってもよい。この経路制御部は、第2のデータ供給部103の出力と並列演算器の入力との間の経路を制御する。
並列積和演算器1305は、ここではp1〜p6の6個の積和演算器からなる。並列積和演算器1305の2本の入力にはクロスバースイッチ1302とクロスバースイッチ1308の出力がそれぞれ接続されている。結果シフトレジスタ1306は、並列積和演算器1305の出力(演算結果)を所定のタイミングでラッチし、非線形変換処理部1307に順次出力する。得られた演算結果は制御部102を介してRAM101に格納される。クロスバースイッチ1302及び1308はそれぞれ参照データシフトレジスタ1301及び係数データシフトレジスタ1304と並列積和演算器間の経路を規定する。
本実施形態では第1の実施形態との違いのみについて説明する、本実施形態の動作はクロスバースイッチを介したデータ供給方法が異なるだけであり、各種動作タイミングは図4及び図5に記載した構成と同じである。即ち、制御部102による参照データバッファレジスタ、係数データバッファ1303、参照データシフトレジスタ1301、係数データシフトレジスタ1304、並列積和演算器1305等の動作タイミングは図9に示すタイミングと同様である。
制御部102はコンボリューション演算処理の開始に先立ち、クロスバースイッチ1302及びクロスバースイッチ1308の設定を行う。ここでの設定により、算出する特徴面に割り当てる積和演算器を決定する。
図13(b)は、3つの特徴面を並列に処理する場合のCNNのネットワーク構成と演算の関係を模式的に説明する図である。参照データ1310は演算に必要な参照特徴面1311の参照データ位置を示す。算出データ1312、1314、1316は並列積和演算器1305で同時に算出する特徴面のデータ位置を示す。
並列積和演算器1305は、算出データ1312,1314,1316の領域をラスタスキャンしながら処理することで3つの特徴面1313,1315,1317を算出する。
クロスバースイッチ1302、1308において、黒丸で示す位置が結合点となる。例えば、積和演算器p1には参照データシフトレジスタの出力d1と係数データシフトレジスタ1304の出力w1とが入力されることになる。図13の場合、並列積和演算が3つのグループに分けている。3つのグループは、それぞれのグループp1〜p2、グループp3〜p4及びグループp5〜p6である。この場合、各グループの並列度(m)が2となる。即ち、算出特徴面1313、算出特徴面1315及び算出特徴面1317はそれぞれ並列度2で算出される。
クロスバースイッチ1302の設定に従うと各グループに共通の参照データ(d1、d2の出力)が並列に並列積和演算器1305の各積和演算器に入力される。各グループ内の積和演算器にはそれぞれ出力d1、d2が入力される。一方、各グループの積和演算器には異なる係数となる出力w1、w4、w7が並列に入力され、グループ内の積和演算器には共通の係数データd1、d2が順次に入力される。
図13は、コンボリューションカーネルの水平方向カーネルサイズが3である場合の設定である。積和演算器p1、p2には係数データシフトレジスタ1304のw1出力を介して、シフト開始前の初期状態で係数データシフトレジスタ1304の出力w1、w2,w3の対応位置に格納されていた3つの係数c1、c2、c3が順に入力される。また、積和演算器p1にはシフト開始前の初期状態で参照データシフトレジスタ1301のそれぞれの出力d1、d2、d3の対応位置に格納されていた3つの参照データi1、i2、i3が順次に入力される。同様に、積和演算器p2には参照データシフトレジスタ1301の出力d2、d3、d4の対応位置に格納されていた3つの参照データi2、i3、i4が順次に入力される。積和演算器p1に着目すると、3クロック(参照データシフトレジスタ1301及び係数データシフトレジスタ1304のシフト動作)でc1×i1+c2×i2+c3×i3の積和演算結果が得られる。同様に、積和演算器p3、p4には、係数データシフトレジスタ1304のw4、w5、w6に格納されていた係数データが順次に入力される。積和演算器p5、p6には係数データシフトレジスタ1304のw7、w8、w9に格納されていた係数が順次入力されることになる。一方、各グループに入力される参照データは共通である。
参照データシフトレジスタ1301と係数データシフトレジスタ1304の同期したシフト動作により並列積和演算器1305で3つのグループのコンボリューション演算を処理する。以上の水平方向のコンボリューション演算を垂直方向に繰り返すことで、2次元のコンボリューション演算結果を得ることができる。所定のコンボリューション演算を完了するとシフトレジスタ1306に結果を転送し、非線形変換処理部1307に順次出力する。制御部102は得られた結果をRAM101上の所定の領域に格納する。ここで得られた演算結果が算出特徴面1313、1315、1317の対応位置の算出データ1312、1314、1316である。並列処理単位の演算をラスタスキャン処理することで、算出特徴面1313、1315、1317が算出される。
図14(a)は、図13(a)の装置と同じで、クロスバースイッチ1302、1308の設定のみが異なる。図13と同様に黒丸が結合点である。この場合、並列積和演算器1305の全ての積和演算器p1〜p6に異なる参照データを供給する。具体的には、積和演算器p1〜p6のそれぞれに参照データシフトレジスタ1301の出力d1〜d6を並列に供給する。一方、並列積和演算器1305の全ての積和演算器p1〜p6に同一の係数データ(出力w1など)を順次に供給する。即ち、図14(a)の構成は全ての積和演算器を1つのグループとして制御し、一つの特徴面の積和演算器数の位置を並列度6で並列に算出することに対応する。図14(b)は、ここで算出するCNNのネットワーク構成とその算出状況を模式的に説明する図であり、一つの算出特徴面1406内の複数の位置を含む算出領域1405のデータを並列に算出する。参照領域1402は算出領域1405のコンボリューション演算に必要な参照特徴面1403内のデータ領域を示している。コンボリューションカーネル1404は、係数データシフトレジスタを介して、並列積和演算器1305に供給される係数データである。
図14(a)は、図13(a)と同様にコンボリューションカーネルの水平方向サイズが3であるとする。積和演算器p1〜p6は、参照データシフトレジスタ1301と係数データシフトレジスタ1304の同期したシフト動作により、3クロックで同一特徴面の水平方向に連続する6つの位置のコンボリューション演算を実行する。積和演算器p1〜p6の出力が算出特徴面の水平方向に連続する位置の結果に対応する。例えば、積和演算器p4に着目する。参照データシフトレジスタ1301のシフト開始前に、参照データシフトレジスタ1301の出力d4〜d6の対応位置に格納されていた参照データを参照データi4〜i6とする。係数データシフトレジスタ1304のシフト開始前に、係数データシフトレジスタ1304の出力w1、w2、w3の対応位置に格納されていた係数データを係数データc1〜c3とする。1クロック目でc1×i4、2クロック目でc1×i4+c2×i5、3クロック目でc1×i4+c2×i5+c3×i6が累積される。積和演算器p1〜p6ではそれぞれ異なる位置の参照データを参照して複数の算出特徴面位置のコンボリューション演算を並列に処理する。得られた結果は、シフトレジスタ1306、非線形変換処理部1307を介してRAM101の所定の領域に格納される。
図13及び図14ではそれぞれ3つの特徴面を並列に算出する場合と一つの特徴面を並列に算出する場合について説明したが、本実施形態はこれらに限るわけではなく、クロスバースイッチの設定次第で様々の構成に対応することができる。また、図13及び図14は経路を変更する手段として完全なクロスバースイッチを有する場合につい説明したが、処理対象のネットワークや回路規模を考慮して、部分的なクロスバー構成でも良い。なお、データ供給部のグループ化の方法は、図4、5や図13、14に示した方法に限るわけではなく他の構成でも良い。
以上、図13及び図14に示すように、本実施形態ではクロスバースイッチの設定で並列積和演算器に供給するデータのグループを任意に設定することができる。これにより、CNNのネットワーク構成や動作条件に応じてより効率的な処理構成を選択して演算することができる。
(第3の実施形態)
第1の実施形態では2つの特徴面に演算器を分配する場合について説明したが、本実施形態では1つの特徴面を演算する場合の演算器の割り付け方法を変更する場合について説明する。なお、本実施形態の演算回路の構成は、第1の実施形態の演算回路と同じであるので、その説明を省略する。
図15は本実施形態で処理するCNNのネットワーク構成とその例を説明する図である。図15(a)は図4(b)で説明した場合と同様に、一つの特徴面の水平方向に連続する位置の算出特徴面のデータを並列に処理する場合の例を示している。本実施形態が図4(b)で説明した場合との違いは、処理対象となる参照特徴面の水平方向サイズが小さいことにある。例えば、画像中の所定特徴を含む一部領域に対して処理する際に、並列度が高い場合が、このようなケースがあり得る。また、画像の水平サイズが並列積和演算器108a,bの数の倍率にならない場合、画像の右端で同様の問題が生じる。図15(a)の算出領域1505及び算出領域1506は同時に算出する算出特徴面のデータ位置であるが、算出特徴面1507のサイズが小さいと、算出領域1506を算出するグループの演算器の処理が無駄になる。図15(b)は同時に演算する算出特徴面の位置を変えた場合の例を示している。図15(b)では、算出領域1506の位置を算出するグループの演算器は、算出領域1506の位置を算出する替わりに、算出領域1512の位置を算出する。
即ち、並列演算器は、並列に図15(a)で示した2つの算出領域1505、1506を算出する替わりに、算出領域1511、1512算出する。この場合、並列積和演算器1305内の積和演算器を全て動作させて処理することができる。図15(b)に示す処理例では図4で示す参照データシフトレジスタ402bに参照領域1509の位置に相当する参照データを供給する。なお、参照領域1508と参照領域1509はコンボリューションカーネルのサイズに応じたオーバーラップ部分を有してもよい。コンボリューションカーネル1504、1510である係数データの供給は図4に示す場合と同じである。
このように参照データ供給部に供給するデータを変えるだけで、複数のグループで並列に算出する算出領域を変えることができ、それにより並列化効率を向上させることができる。ここで示した並列に算出する算出領域の変更は図14(a)及び図15(a)に示す構成の場合も同様に対応することが可能である。図4(a)、5(a)及び図13(a)、14(a)に示すどちらの構成の場合も制御部102による参照データの転送内容が異なるだけである。
以上、本実施形態では算出処理の算出領域の形状(大きさ)に応じて並列演算器が算出する算出領域を、所定のグループ単位で算出することで並列演算器を効率的に動作させることができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101 RAM
102 制御部
103 係数データ供給部
105 参照データ保持部
107 参照データ供給部
1081〜108n 並列演算部
109 演算結果取り出し部

Claims (18)

  1. フィルタ演算の参照データと係数データとを記憶する記憶装置と接続する演算回路であって、
    各演算器が、その演算器に対応する1グループの前記参照データと、その演算器に対応する1グループの前記係数データとのフィルタ演算を実行することで、前記フィルタ演算を並列に実行する所定個の演算器と、
    前記記憶装置から転送された前記所定個のグループの参照データを保持し、前記所定個の演算器のそれぞれに並列に、その演算器に対応するグループの参照データをグループ単位で供給する参照データ供給手段と、
    前記記憶装置から転送された前記所定個のグループの係数データを保持し、前記所定個の演算器のそれぞれに並列に、その演算器に対応する1グループの係数データから順次1つずつ係数データを供給する係数データ供給手段とを有し、
    前記所定個の演算器の各々は、前記参照データ供給手段から供給された、その演算器に対応する1グループの参照データに対して、その演算器に対応する1グループの係数データから前記係数データ供給手段により順次1つずつ供給された1つの係数データを用いたフィルタ演算を実行する
    ことを特徴とする演算回路。
  2. 前記係数データ供給手段は、前記記憶装置から転送された1以上のグループの前記係数データを保持する係数データ保持手段と、前記係数データ保持手段から前記所定個の演算器のそれぞれに対応するフィルタの係数データのグループをロードする前記所定個の係数データシフトレジスタとをさらに有し、当該所定個の係数データシフトレジスタの各々が、前記所定個の演算器のうち対応する1つの演算器に順次1つずつ係数データを供給することを特徴とする請求項1に記載の演算回路。
  3. 前記係数データ供給手段は、前記所定個の係数データシフトレジスタが、前記係数データ保持手段から、それぞれ独立の係数データのグループをロードするか共通の係数データのグループをロードするかを選択する選択手段をさらに有することを特徴とする請求項2に記載の演算回路。
  4. 前記参照データ供給手段は、前記記憶装置から転送された1以上のグループの前記参照データを保持する参照データ保持手段と、前記参照データ保持手段からそれぞれに対応する1グループの参照データをロードする前記所定個の参照データシフトレジスタとをさらに有し、当該所定個の参照データシフトレジスタの各々が、前記所定個の演算器のうち対応する1つの演算器参照データをグループ単位で供給することを特徴とする請求項1乃至3の何れか1項に記載の演算回路。
  5. 前記参照データ供給手段は、前記所定個の参照データシフトレジスタが、前記参照データ保持手段から、それぞれ独立の参照データのグループをロードするか共通の参照データのグループをロードするかを選択する選択手段をさらに有することを特徴とする請求項4に記載の演算回路。
  6. 前記係数データ供給手段は、前記所定個の演算器に対して、第1のモードでは、当該所定個の演算器に共通の係数データのグループの係数データを1つずつ供給し、第2のモードでは、当該所定個の演算器それぞれ独立の係数データのグループの係数データを1つずつ供給し、
    前記参照データ供給手段は、前記所定個の演算器に対して、前記第1のモードでは、当該所定個の演算器それぞれ独立の参照データのグループをグループ単位で供給し、前記第2のモードでは、当該所定個の演算器に共通の参照データのグループをグループ単位で供給することを特徴とする請求項1に記載の演算回路。
  7. 前記係数データ供給手段から前記所定個の演算器のそれぞれに前記係数データを供給する経路を制御する経路制御手段をさらに有することを特徴とする請求項1又は6に記載の演算回路。
  8. 前記経路制御手段は、クロスバースイッチを用いることを特徴とする請求項7に記載の演算回路。
  9. 前記フィルタ演算は、前記1グループの参照データと前記1グループの係数データとのコンボリューション演算であることを特徴とする請求項1乃至8の何れか1項に記載の演算回路。
  10. 前記所定個の演算器のそれぞれの出力データを、各演算器に対応する1つが保持する前記所定個の結果シフトレジスタと、前記結果シフトレジスタの出力データに対して非線形変換の処理を行う変換手段と、をさらに有することを特徴とする請求項1乃至9の何れか1項に記載の演算回路。
  11. 前記結果シフトレジスタの前記出力データ又は前記変換手段の出力データを、前記記憶装置に記憶させる制御手段をさらに有することを特徴とする請求項10に記載の演算回路。
  12. 前記参照データは2次元データであって、前記所定個の演算器は、前記参照データのサイズに基づいて、前記2次元データの水平方向又は垂直方向における前記参照データに対して、順に前記フィルタ演算を行うことを特徴とする請求項1乃至11の何れか1項に記載の演算回路。
  13. 前記フィルタ演算は、コンボリューショナルニューラルネットワークの複数のデータ群の階層的な結合関係により表現される演算であることを特徴とする請求項1乃至12の何れか1項に記載の演算回路。
  14. 前記階層的な結合関係に基づいて、前記複数の演算器による並列処理を制御する制御手段をさらに有することを特徴とする請求項13に記載の演算回路。
  15. 請求項1乃至14の何れか1項に記載の演算回路を有し、前記参照データとして画像データを処理することを特徴とする画像処理装置。
  16. 前記演算回路は、パターン認識のための演算処理を行うことを特徴とする請求項15に記載の画像処理装置。
  17. フィルタ演算の参照データと係数データとを記憶する記憶装置と接続する演算回路の制御方法であって、
    所定個の演算器における各演算器が、その演算器に対応する1グループの前記参照データと、その演算器に対応する1グループの前記係数データとのフィルタ演算を実行することで、前記フィルタ演算を並列に実行する演算工程と、
    参照データ供給手段が、前記記憶装置から転送された前記所定個のグループの参照データを保持し、前記所定個の演算器のそれぞれに並列に、その演算器に対応するグループの参照データをグループ単位で供給する参照データ供給工程と、
    係数データ供給手段が、前記記憶装置から転送された前記所定個のグループの係数データを保持し、前記所定個の演算器のそれぞれに並列に、その演算器に対応する1グループの係数データのグループから順次1つずつ係数データを供給する係数データ供給工程とを有し、
    前記演算工程において、前記所定個の演算器の各々は、前記参照データ供給手段から供給された、その演算器に対応する1グループの参照データに対して、その演算器に対応する1グループの係数データから前記係数データ供給手段により順次1つずつ供給された1つの係数データを用いたフィルタ演算を実行する
    ことを特徴とする方法。
  18. フィルタ演算の参照データと係数データとを記憶する記憶装置と接続する演算回路の制御プログラムであって、
    所定個の演算器における各演算器に、その演算器に対応する1グループの前記参照データと、その演算器に対応する1グループの前記係数データとのフィルタ演算を実行させることで、前記フィルタ演算を並列に実行させる演算ステップと、
    参照データ供給手段に、前記記憶装置から転送された前記所定個のグループの参照データを保持させ、前記所定個の演算器のそれぞれに並列に、その演算器に対応するグループの参照データをグループ単位で供給させる参照データ供給ステップと、
    係数データ供給手段に、前記記憶装置から転送された前記所定個のグループの係数データを保持させ、前記所定個の演算器のそれぞれに並列に、その演算器に対応する1グループの係数データのグループから順次1つずつ係数データを供給させる係数データ供給ステップとをコンピュータに実行させ、
    前記演算ステップにおいて、前記所定個の演算器の各々に、前記参照データ供給手段から供給された、その演算器に対応する1グループの参照データに対して、その演算器に対応する1グループの係数データから前記係数データ供給手段により順次1つずつ供給された1つの係数データを用いたフィルタ演算を実行させる
    ことを特徴とするプログラム。
JP2016211897A 2016-10-28 2016-10-28 演算回路、その制御方法及びプログラム Active JP6945986B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016211897A JP6945986B2 (ja) 2016-10-28 2016-10-28 演算回路、その制御方法及びプログラム
US15/791,223 US10586149B2 (en) 2016-10-28 2017-10-23 Convolutional neural network based image data processing apparatus, method for controlling the same, and storage medium storing program
US16/783,792 US11068776B2 (en) 2016-10-28 2020-02-06 Convolutional neural network based data processing apparatus, method for controlling the same, and storage medium storing program

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2018073102A JP2018073102A (ja) 2018-05-10
JP6945986B2 true JP6945986B2 (ja) 2021-10-06

Family

ID=62022476

Family Applications (1)

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

Country Status (2)

Country Link
US (2) US10586149B2 (ja)
JP (1) JP6945986B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436442B2 (en) 2019-11-21 2022-09-06 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10769453B2 (en) * 2017-05-16 2020-09-08 Samsung Electronics Co., Ltd. Electronic device and method of controlling operation of vehicle
US10878310B2 (en) 2016-11-29 2020-12-29 Mellanox Technologies, Ltd. Accelerated convolution in convolutional neural networks
WO2018212538A1 (en) * 2017-05-16 2018-11-22 Samsung Electronics Co., Ltd. Electronic device and method of detecting driving event of vehicle
WO2019048966A1 (ja) * 2017-09-05 2019-03-14 株式会社半導体エネルギー研究所 表示システム
KR102614815B1 (ko) 2017-09-15 2023-12-20 가부시키가이샤 한도오따이 에네루기 켄큐쇼 표시 장치 및 전자 기기
US11265540B2 (en) * 2018-02-23 2022-03-01 Sk Telecom Co., Ltd. Apparatus and method for applying artificial neural network to image encoding or decoding
JP7038608B2 (ja) * 2018-06-15 2022-03-18 ルネサスエレクトロニクス株式会社 半導体装置
CN112334915A (zh) * 2018-06-25 2021-02-05 奥林巴斯株式会社 运算处理装置
KR20200028168A (ko) * 2018-09-06 2020-03-16 삼성전자주식회사 컨볼루셔널 뉴럴 네트워크를 이용하는 컴퓨팅 장치 및 그 동작 방법
CN111210012B (zh) * 2018-11-21 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN111209243B (zh) * 2018-11-21 2022-12-02 上海寒武纪信息科技有限公司 数据处理装置、方法及相关产品
CN111210011B (zh) * 2018-11-21 2022-12-02 上海寒武纪信息科技有限公司 数据处理装置及相关产品
CN111209244B (zh) * 2018-11-21 2022-05-06 上海寒武纪信息科技有限公司 数据处理装置及相关产品
JP7052678B2 (ja) * 2018-11-06 2022-04-12 株式会社デンソー 畳込み演算方法
KR102667134B1 (ko) * 2018-12-07 2024-05-20 서울대학교산학협력단 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법
JP7227769B2 (ja) * 2019-01-10 2023-02-22 キヤノン株式会社 情報処理装置及びメモリ制御方法
JP7297468B2 (ja) * 2019-02-28 2023-06-26 キヤノン株式会社 データ処理装置及びその方法
JP7292903B2 (ja) * 2019-03-01 2023-06-19 キヤノン株式会社 画像処理装置及び画像処理方法
JP7278150B2 (ja) * 2019-05-23 2023-05-19 キヤノン株式会社 画像処理装置、撮像装置、画像処理方法
JP7299770B2 (ja) * 2019-07-01 2023-06-28 キヤノン株式会社 演算処理装置及び演算処理方法
KR20210076420A (ko) * 2019-12-16 2021-06-24 삼성전자주식회사 전자 장치 및 그 제어 방법
CN112148668B (zh) * 2020-09-15 2023-03-14 浙江大华技术股份有限公司 基于片上缓存的数据保存方法及装置、存储介质
CN112784239B (zh) * 2021-01-22 2022-05-27 南京汇智互娱网络科技有限公司 一种基于人工智能的电子竞技运营信息管理***
CN113010469B (zh) * 2021-03-18 2023-05-26 恒睿(重庆)人工智能技术研究院有限公司 图像特征提取方法、装置以及计算机可读存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003009125A (ja) 2001-06-25 2003-01-10 Victor Co Of Japan Ltd コンテンツ情報の配送方法、コンテンツ情報の受信方法、コンテンツ情報配送装置、及びコンテンツ情報受信装置。
US20040054869A1 (en) * 2001-07-19 2004-03-18 Masahiro Igarashi Calculation apparatus and image processing apparatus
JP5368687B2 (ja) * 2007-09-26 2013-12-18 キヤノン株式会社 演算処理装置および方法
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
US10078620B2 (en) 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
JP6582416B2 (ja) * 2014-05-15 2019-10-02 株式会社リコー 画像処理装置、画像処理方法及びプログラム
US10417788B2 (en) * 2016-09-21 2019-09-17 Realize, Inc. Anomaly detection in volumetric medical images using sequential convolutional and recurrent neural networks

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436442B2 (en) 2019-11-21 2022-09-06 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof

Also Published As

Publication number Publication date
US20200175358A1 (en) 2020-06-04
US20180121795A1 (en) 2018-05-03
US11068776B2 (en) 2021-07-20
JP2018073102A (ja) 2018-05-10
US10586149B2 (en) 2020-03-10

Similar Documents

Publication Publication Date Title
JP6945986B2 (ja) 演算回路、その制御方法及びプログラム
JP6700712B2 (ja) 畳み込み演算装置
JP5376920B2 (ja) コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP6945987B2 (ja) 演算回路、その制御方法及びプログラム
EP3557485B1 (en) Method for accelerating operations and accelerator apparatus
US10846591B2 (en) Configurable and programmable multi-core architecture with a specialized instruction set for embedded application based on neural networks
KR20200143686A (ko) 연산을 가속하기 위한 가속기 및 시스템
JP6365258B2 (ja) 演算処理装置
US11487845B2 (en) Convolutional operation device with dimensional conversion
JP2018147182A (ja) 演算処理装置およびその制御方法
CN110188869B (zh) 一种基于卷积神经网络算法的集成电路加速计算的方法及***
JP6800656B2 (ja) 演算回路、その制御方法及びプログラム
CN108073549B (zh) 卷积运算装置及方法
JP7352684B2 (ja) フィルタ処理装置およびその制御方法
JP6532334B2 (ja) 並列演算装置、画像処理装置及び並列演算方法
JP2006154992A (ja) ニューロプロセッサ
JP7410961B2 (ja) 演算処理装置
CN112712457A (zh) 数据处理方法以及人工智能处理器
JP2019040403A (ja) 半導体装置および画像認識システム
JP2023058636A (ja) 情報処理装置及びメモリ制御方法
JP7299770B2 (ja) 演算処理装置及び演算処理方法
CN110765413B (zh) 矩阵求和结构及神经网络计算平台
JP2018055570A (ja) 演算処理装置、演算処理方法及びプログラム
JP7292903B2 (ja) 画像処理装置及び画像処理方法
CN115280277A (zh) 一种数据处理装置以及数据处理方法

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

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151