JP2018067154A - 演算処理回路および認識システム - Google Patents

演算処理回路および認識システム Download PDF

Info

Publication number
JP2018067154A
JP2018067154A JP2016205451A JP2016205451A JP2018067154A JP 2018067154 A JP2018067154 A JP 2018067154A JP 2016205451 A JP2016205451 A JP 2016205451A JP 2016205451 A JP2016205451 A JP 2016205451A JP 2018067154 A JP2018067154 A JP 2018067154A
Authority
JP
Japan
Prior art keywords
dimensional
data
dimensional convolution
convolution operation
processing circuit
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.)
Pending
Application number
JP2016205451A
Other languages
English (en)
Inventor
坂口 浩章
Hiroaki Sakaguchi
浩章 坂口
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.)
Sony Semiconductor Solutions Corp
Original Assignee
Sony Semiconductor Solutions Corp
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 Sony Semiconductor Solutions Corp filed Critical Sony Semiconductor Solutions Corp
Priority to JP2016205451A priority Critical patent/JP2018067154A/ja
Priority to CN201780063513.9A priority patent/CN109844738A/zh
Priority to PCT/JP2017/024422 priority patent/WO2018074012A1/ja
Priority to US16/331,727 priority patent/US11461684B2/en
Publication of JP2018067154A publication Critical patent/JP2018067154A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • G06F18/24137Distances to cluster centroïds
    • G06F18/2414Smoothing the distance, e.g. radial basis function networks [RBFN]
    • 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
    • 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
    • G06N7/00Computing arrangements based on specific mathematical models
    • 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/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • 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

Landscapes

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

Abstract

【課題】畳込みニューラルネットワークにおける畳込み演算に適した並列処理を行う。【解決手段】複数の選択器の各々は、2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域におけるデータをそれぞれ順次選択する。複数の2次元畳込み演算回路の各々は、対応する選択器によって選択されたデータと係数メモリに記憶されている係数データとを乗算した結果を累加算して、2次元領域における2次元畳込み演算結果を互いに並列に算出する。複数の加算回路の各々は、2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する。【選択図】図6

Description

本技術は、演算処理回路に関する。詳しくは、畳込み演算を行う演算処理回路、および、その演算処理回路を用いてデータの認識を行う認識システムに関する。
複数の処理層が階層的に接続されたニューラルネットワークの一つとして、畳込みニューラルネットワーク(CNN:Convolutional Neural Network)が注目されている。この畳込みニューラルネットワークは、複数のカーネルによる畳込みを行う畳込み層と、サブサンプリングとして機能して抽象化の役割を果たすプーリング層と、出力層に近い層に配置されて出力に合わせた分類器として機能する全結合層とから構成される。この畳込みニューラルネットワークにおける畳込み演算を高速に実行するために、複数の演算器を並列に動作させる装置が提案されている。例えば、列方向にずれた位置の畳込み演算を複数の積和演算器によって並列に実行する装置が提案されている(例えば、特許文献1参照。)。また、2つのシストリックアレイを接続して、互いに異なる位置のデータの畳込み演算処理を並列に実行する装置が提案されている(例えば、特許文献2参照。)。
特開2010−134697号公報 特開2015−210709号公報
上述の従来技術では、複数の畳込み演算を並列に実行することにより、畳込みニューラルネットワークにおける演算処理の高速化を図っている。しかしながら、並列演算の対象を列方向のみに限定し、または、互いに異なる位置のみに限定すると、十分な並列性を確保することが困難になるおそれがある。
本技術はこのような状況に鑑みて生み出されたものであり、畳込みニューラルネットワークにおける畳込み演算に適した並列処理を行うことを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、第一の方向に配置された複数のシフトレジスタを上記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、上記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における上記データをそれぞれ順次選択する複数の選択器と、上記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、上記複数の選択器の各々に対応して設けられて当該選択器によって選択された上記データと上記係数メモリに記憶されている上記係数データとを乗算した結果を累加算して上記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、上記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路とを具備する演算処理回路である。これにより、2次元シフトレジスタから複数の選択器を介して複数の2次元畳込み演算回路に同時にデータを供給して、2次元畳込み演算結果を互いに並列に算出させるという作用をもたらす。
また、この第1の側面において、上記係数メモリは、複数の種類の上記係数データを記憶し、上記複数の2次元畳込み演算回路の各々は、上記2次元シフトレジスタに保持された上記データを入れ替えることなく連続して上記複数の選択器によって選択された上記データと上記複数の種類の上記係数データとの上記2次元畳込み演算を行うようにしてもよい。これにより、2次元シフトレジスタにおいて新しいデータをシフトインせずに連続して新たな係数の畳込み演算を行って、シフトイン動作の回数を抑制させるという作用をもたらす。
また、この第1の側面において、上記係数メモリは、複数の種類の上記係数データを記憶し、上記複数の2次元畳込み演算回路の各々は、上記2次元畳込み演算を上記複数の種類の上記係数データについて並列に行うようにしてもよい。これにより、異なる種類の係数の畳込み演算を同時に行うことにより、並列度を向上させるという作用をもたらす。
また、この第1の側面において、上記複数の2次元畳込み演算回路の各々は、上記2次元シフトレジスタに保持されたデータのうち互いに異なる2次元領域における上記データについて上記2次元畳込み演算をさらに並列に行うようにしてもよい。これにより、互いに異なる複数の2次元領域同士をさらに並列処理することにより、並列度を向上させるという作用をもたらす。
また、この第1の側面において、上記複数の2次元畳込み演算回路によるそれぞれの演算結果を保持する2次元畳込み演算結果保持部をさらに具備し、上記複数の加算回路は、当該複数の2次元畳込み演算回路によるそれぞれの演算結果と上記2次元畳込み演算結果保持部に保持されている演算結果とを上記チャネル方向に加算するようにしてもよい。これにより、2次元畳込み演算結果をチャネル方向に加算して3次元畳込み演算結果を生成するという作用をもたらす。
また、この第1の側面において、上記複数の加算回路は、上記複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に互いに並列に加算して3次元畳込み演算結果として出力するようにしてもよい。これにより、複数チャネルに関する2次元畳込み演算同士をチャネル方向にさらに並列処理することにより、並列度を向上させるという作用をもたらす。
また、この第1の側面において、上記複数の加算回路から出力された上記3次元畳込み演算結果に対して所定の活性化処理を行う活性化処理回路をさらに具備してもよい。これにより、畳込み層の演算に必要な活性化処理をさせるという作用をもたらす。
また、この第1の側面において、上記複数の加算回路から出力された上記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路をさらに具備してもよい。これにより、プーリング層の演算に必要なプーリング処理をさせるという作用をもたらす。この場合において、上記プーリング処理は、上記3次元畳込み演算結果における複数の値について総和、平均、および、最大値の少なくとも1つのプーリング値を生成する処理であってもよい。
また、この第1の側面において、上記2次元シフトレジスタは、(m×k+p−1)+1)×((k+p−1)+1)個以上の上記データを保持し、上記複数の2次元畳込み演算回路は、上記乗算を行う(m×p×p)個の乗算器と、上記累加算を行う(m×p×p)個の累加算器とを備えて、(k×k)のサイズの上記2次元畳込み演算を、(p×p)個の上記2次元領域に対して並列に行い、上記プーリング処理回路は、(m×p×p)個の上記3次元畳込み演算結果を入力データとしてm個の上記プーリング値を生成してもよい。但し、mは1以上の整数であり、k、k、p、pは2以上の整数である。これにより、(m×p×p)個の乗算器により(k×k)のサイズの上記2次元畳込み演算を、(p×p)個の上記2次元領域に対して並列に処理させるという作用をもたらす。この場合において、上記2次元シフトレジスタの上記複数のシフトレジスタは、各々が上記第一の方向に対して(p−1)個おきに結線されたレジスタからなり、p個単位で上記第一の方向へのシフト動作を行うようにしてもよい。これにより、2次元シフトレジスタにおいてp個単位で並列にシフトさせるという作用をもたらす。
また、この第1の側面において、上記2次元シフトレジスタに保持されるデータを入力として、畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行うようにしてもよい。
また、本技術の第2の側面は、処理対象となるデータを取得するデータ取得部と、上記データを入力として畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う演算処理回路とを具備する認識システムであって、上記演算処理回路は、第一の方向に配置された複数のシフトレジスタを上記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、上記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における上記データをそれぞれ順次選択する複数の選択器と、上記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、上記複数の選択器の各々に対応して設けられて当該選択器によって選択された上記データと上記係数メモリに記憶されている上記係数データとを乗算した結果を累加算して上記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、上記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と、上記複数の加算回路から出力された上記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路とを備え、上記データを上記2次元シフトレジスタに保持させて上記演算処理回路における処理を行って上記3次元畳込み演算結果を上記データの特徴量として出力した後、出力された上記特徴量を再び上記2次元シフトレジスタに保持させて上記演算処理回路における処理を行って上記3次元畳込み演算結果を新たな特徴量として出力する動作を繰り返す認識システムである。これにより、2次元シフトレジスタから複数の選択器を介して複数の2次元畳込み演算回路に同時にデータを供給して、2次元畳込み演算結果を互いに並列に算出させて、3次元畳込み演算結果を新たな特徴量として出力させるという作用をもたらす。
本技術によれば、畳込みニューラルネットワークにおける畳込み演算に適した並列処理を行うことができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
畳込みニューラルネットワークの概要を示す図である。 畳込みニューラルネットワークにおける畳込み層40の演算内容を示す図である。 畳込みニューラルネットワークにおけるプーリング層50の演算内容を示す図である。 畳込みニューラルネットワークにおける全結合層60の演算内容を示す図である。 本技術の実施の形態における画像認識システムの構成例を示す図である。 本技術の第1の実施の形態における画像認識処理回路200の構成例を示す図である。 本技術の第1の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。 本技術の実施の形態における入力バッファ210の第1の構成例を示す図である。 本技術の実施の形態における入力バッファ210の第2の構成例を示す図である。 本技術の実施の形態におけるセレクタ224の構成例を示す図である。 本技術の実施の形態におけるセレクタ224の制御例を示す図である。 本技術の実施の形態におけるオフセット領域間の並列処理の例を示す図である。 本技術の第1の実施の形態におけるオフセット領域間の並列処理のタイミング例を示す図である。 本技術の第2の実施の形態におけるセレクタ224の制御の例を示す図である。 本技術の第2の実施の形態のセレクタ224の制御におけるオフセット領域間の並列処理のタイミング例を示す図である。 本技術の第3の実施の形態における2次元畳込み演算の例を示す図である。 本技術の第3の実施の形態の2次元畳込み演算における並列処理のタイミング例を示す図である。 本技術の第4の実施の形態における画像認識処理回路200の要部の構成例を示す図である。 本技術の第4の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。 本技術の第5の実施の形態における画像認識処理回路200の要部の構成例を示す図である。 本技術の第5の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.畳込みニューラルネットワーク
2.第1の実施の形態(オフセット領域同士を並列処理する例)
3.第2の実施の形態(複数の異なる係数の畳込み演算を連続して行う例)
4.第3の実施の形態(複数の異なる係数の畳込み演算を同時に行う例)
5.第4の実施の形態(複数領域同士をさらに並列処理する例)
6.第5の実施の形態(チャネル方向にさらに並列処理する例)
<1.畳込みニューラルネットワーク>
図1は、畳込みニューラルネットワークの概要を示す図である。畳込みニューラルネットワークは、それぞれ視覚野と対応するニューロンが配置されたニューラルネットワークの一種であり、畳込み演算を利用することにより特徴量の抽出を効率的に行うものである。ここで想定する畳込みニューラルネットワークは、入力画像10に対して複数の層による処理を繰り返して出力90を得る。
この畳込みニューラルネットワークは、特徴量抽出器20と、識別器30とに大別される。特徴量抽出器20は、特徴量を抽出するための層であり、複数のカーネルによる畳込みを行う畳込み層40と、サブサンプリングとして機能して抽象化の役割を果たすプーリング層50とが交互に繰り返される。識別器30は、出力に合わせた分類器として機能する全結合層60が1つ以上続く分類のための層である。
畳込みニューラルネットワークは、哺乳類の脳の視覚野を参考にして設計されている。例えば、哺乳類である猫や人間の一次視覚野(V1野)は、方位選択性のあるガボールフィルタ(ガウシアンと正弦波の積)に近い処理がされており、V2野、V4野と上位の階層にいくと高次元の図形に反応することが実験により判明している。
畳込みニューラルネットワークの一段目の畳込み層40において学習で獲得されるフィルタも、ガボールフィルタに似たエッジ検出フィルタのような単純なフィルタが多いことが分かっており、後段へ行くに従ってより複雑なフィルタが学習で獲得される。それらが階層構造になっていることにより、深い層ではより高次元の図形に反応する特徴量抽出機能が獲得できるようになる。
昨今、ディープラーニング(Deep Learning:深層学習)としてニューラルネットワークの復活が議論されている。これは、ネットワークの層を深くすることによって、識別器だけでなく特徴量抽出も同時に学習することができるからである。また、ブースティング(Boosting)などの既存の認識器よりもよい性能を出すネットワークの学習が、大量のデータセットを用意するだけで可能であることが明らかになったからである。
図2は、畳込みニューラルネットワークにおける畳込み層40の演算内容を示す図である。
この畳込み層40に入力されるデータは、前層から出力された3次元の特徴マップa(x,y,k)である。ここで、xは水平方向の座標位置、yは垂直方向の座標位置、kはチャネル番号であり、それぞれ整数である。この特徴マップa(x,y,k)は、チャネル方向にKチャネルのサイズを有する。なお、Kは整数である。畳込みニューラルネットワークでは、512チャネル以上の特徴マップを扱う場合もある。
この畳込み層40では、出力側マップmに対する重み係数w(i,j,k)が用いられる。ここで、iは水平方向の座標位置、jは垂直方向の座標位置、mは出力側マップにおけるチャネル番号であり、それぞれ整数である。
この畳込み層40から出力されるデータは、3次元の特徴マップz(x,y,m)である。ここで、mはチャネル番号であり、整数である。この特徴マップz(x,y,m)は、チャネル方向にMチャネルのサイズを有する。なお、Mは整数である。
この畳込み層40では、チャネル方向にM種類の重み係数w(i,j,k)のそれぞれを、特徴マップa(x,y,k)に対して畳み込む畳込み演算が行われる。この畳込み演算は、重み係数w(i,j,k)による3次元のフィルタ処理に相当する。また、必要に応じてバイアスbが加算される。また、必要に応じて活性化関数f()が適用される。これらを式に表すと次式のようになる。
u(x,y,m)=b+Σk=0…K-1Σj=0…J-1Σi=0…I-1
(w(i,j,k)×a(x+i,y+j,k))
z(x,y,m)=f(u(x,y,m))
なお、Iは水平方向のサイズ、Jは垂直方向のサイズ、Kはチャネル方向のサイズであり、それぞれ整数である。同図の例では、5×5×5(I=J=K=5)のサイズの場合を示している。
なお、活性化関数f()としては、ランプ関数(ReLU)、シグモイド関数、双曲線正接関数(tanh)などが用いられるが、適用されない場合もある。
図3は、畳込みニューラルネットワークにおけるプーリング層50の演算内容を示す図である。
このプーリング層50に入力されるデータは、前層から出力された3次元の特徴マップa(x,y,m)である。ここで、xは水平方向の座標位置、yは垂直方向の座標位置、mはチャネル番号であり、それぞれ整数である。この特徴マップa(x,y,m)は、チャネル方向にMチャネルのサイズを有する。なお、Mは整数である。
このプーリング層50から出力されるデータは、3次元の特徴マップs(i,j,m)である。ここで、iは水平方向の座標位置、jは垂直方向の座標位置、mは出力側マップにおけるチャネル番号であり、それぞれ整数である。この特徴マップs(i,j,m)は、入力と同様に、チャネル方向にMチャネルのサイズを有する。
このプーリング層50では、特徴マップa(x,y,m)に対してプーリング関数fp()が適用される。このプーリング層50における処理を式に表すと次式のようになる。
s(i,j,m)=fp(a(2×i, 2×j, m),
a(2×i+1,2×j, m),
a(2×i, 2×j+1,m),
a(2×i+1,2×j+1,m))
なお、プーリング関数fp()としては、合計値、平均値、最大値などが用いられる。
図4は、畳込みニューラルネットワークにおける全結合層60の演算内容を示す図である。
この全結合層60に入力されるデータは、前層から出力された3次元の特徴マップa(x,y,k)である。ここで、xは水平方向の座標位置、yは垂直方向の座標位置、kはチャネル番号であり、それぞれ整数である。この特徴マップa(x,y,k)は、チャネル方向にKチャネルのサイズを有する。なお、Kは整数である。
この全結合層60では、出力側マップmに対する重み係数w(x,y,k)が用いられる。ここで、iは水平方向の座標位置、jは垂直方向の座標位置、mは出力側マップにおけるチャネル番号であり、それぞれ整数である。
この全結合層60から出力されるデータは、3次元の特徴マップz(x,y,m)である。ここで、mはチャネル番号であり、整数である。この特徴マップz(x,y,m)は、チャネル方向にMチャネルのサイズを有する。なお、Mは整数である。
この全結合層60では、チャネル方向にM種類の重み係数w(x,y,k)のそれぞれを、特徴マップa(x,y,k)に対して畳み込む畳込み演算が行われる。また、必要に応じてバイアスbが加算される。また、必要に応じて活性化関数f()が適用される。これらを式に表すと次式のようになる。
u(m)=b+Σk=0…K-1Σy=0…Y-1Σx=0…X-1
(w(x,y,k)×a(x,y,k))
z(m)=f(u(m))
なお、Xは水平方向のサイズ、Yは垂直方向のサイズ、Kはチャネル方向のサイズであり、それぞれ整数である。同図の例では、5×5×5(X=Y=K=5)のサイズの場合を示している。
なお、活性化関数f()としては、ランプ関数(ReLU)、シグモイド関数、双曲線正接関数(tanh)などが用いられるが、適用されない場合もある。
<2.第1の実施の形態>
[画像認識システム]
図5は、本技術の実施の形態における画像認識システムの構成例を示す図である。この画像認識システムは、画像取得部101と、外部メモリ102と、メモリコントローラ103と、DMAコントローラ104と、ワークメモリ105と、制御コンピュータ106と、画像認識処理回路200とを備える。なお、この実施の形態では一例として画像認識システムについて説明するが、本技術は多次元データ全般(テンソルデータ)に適用可能であり、画像以外のデータに対する認識システムに利用することができる。
画像取得部101は、画像認識の対象となる画像データを取得するものである。この画像取得部101は、被写体からの光を光電変換して画像データとして取得する画像センサであってもよく、また、他の装置や記録媒体から画像データを取得する入力部であってもよい。
制御コンピュータ106は、この画像認識システムの全体を制御するコンピュータである。外部メモリ102は、この画像認識システムの外部メモリであり、制御コンピュータ106などによってアクセスされる。メモリコントローラ103は、外部メモリ102にアクセスするためのコントローラである。DMAコントローラ104は、バス107を介して外部メモリ102とワークメモリ105との間で、DMA(Direct Memory Access)によりデータを転送するためのコントローラである。
画像認識処理回路200は、画像取得部101によって取得された画像を入力画像として、画像認識処理を行う回路である。この画像認識処理回路200は、畳込みニューラルネットワークにおける畳込み層40およびプーリング層50の特徴量抽出処理を行い、全結合層60の識別処理を行う。
ワークメモリ105は、画像認識処理回路200における処理に必要なデータを保持するメモリである。具体的には、このワークメモリ105は、画像認識の対象となる画像データ、各層において入出力される特徴マップや、バイアスbなどを保持する。なお、ワークメモリ105は、特許請求の範囲に記載の2次元畳込み演算結果保持部の一例である。
[画像認識処理回路]
図6は、本技術の第1の実施の形態における画像認識処理回路200の構成例を示す図である。この画像認識処理回路200は、入力バッファ210と、2次元シフトレジスタ220と、複数の2次元畳込み演算回路230と、複数の加算回路240と、プーリング処理回路250と、活性化処理回路260と、制御回路270とを備える。
入力バッファ210は、ワークメモリ105から特徴マップを読み出して画像認識処理回路200の入力データとして保持するバッファである。この入力バッファ210に保持されたデータは、2次元シフトレジスタ220に供給される。
2次元シフトレジスタ220は、入力バッファ210から供給されたデータを2次元の領域に保持するシフトレジスタである。この2次元シフトレジスタ220は、行方向に配置された複数のシフトレジスタを、列方向に並べて順次接続した構成を備える。なお、列方向に配置された複数のシフトレジスタを、行方向に並べて順次接続するようにしてもよい。この2次元シフトレジスタ220は、後述するように、複数の選択器を備えており、これら複数の選択器を介して2次元畳込み演算回路230にデータを供給する。
複数の2次元畳込み演算回路230は、選択器を介して供給されたデータに対して係数データを乗算した結果を累加算して、2次元シフトレジスタ220の2次元領域における2次元畳込み演算結果を、互いに並列に算出するものである。これら複数の2次元畳込み演算回路230は、係数メモリを備え、乗算に必要な係数データをこの係数メモリから読み出す。複数の2次元畳込み演算回路230の各々は、2次元シフトレジスタに保持されたデータのうち、互いに少なくとも一部が異なる2次元領域について2次元畳込み演算を行う。この例では、座標位置(+0,+0)を基準として、水平方向に1つずれた座標位置(+1,+0)、垂直方向に1つずれた座標位置(+0,+1)、水平方向および垂直方向にそれぞれ1つずれた座標位置(+1,+1)の4つの領域(オフセット領域)を想定する。そして、これら互いにずれた座標位置を基準として、複数の2次元畳込み演算回路230の各々は、2次元領域における2次元畳込み演算結果を並列に算出する。
複数の加算回路240は、複数の2次元畳込み演算回路230によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力するものである。これら複数の加算回路240による演算結果は、ワークメモリ105に保持される。そして、複数の加算回路240の各々は、ワークメモリ105に保持されている演算結果と、複数の2次元畳込み演算回路230による演算結果とをチャネル方向に加算する。その動作を繰り返すことにより、複数の加算回路240の各々は、画像全体の3次元畳込み演算結果を出力する。また、複数の加算回路240は、ワークメモリ105に保持されているバイアスbを、複数の2次元畳込み演算回路230による演算結果に加算するためにも用いられる。なお、加算回路240は、特許請求の範囲に記載の加算回路の一例である。
プーリング処理回路250は、複数の加算回路240による3次元畳込み演算結果に対してプーリング処理を行うものである。このプーリング処理回路250によるプーリング処理は、3次元畳込み演算結果に対してプーリング関数を適用するものである。プーリング関数としては、上述のように、合計値、平均値、最大値などが用いられる。なお、このプーリング処理回路250によるプーリング層50の処理が行われずに、畳込み層40の処理が連続する場合もある。
活性化処理回路260は、複数の加算回路240から出力された3次元畳込み演算結果に対して所定の活性化処理(Activation)を行うものである。この活性化処理回路260による活性化処理としては、上述のように、ランプ関数(ReLU)、シグモイド関数、双曲線正接関数(tanh)などが用いられる。この活性化処理回路260による出力は、次層に入力される特徴マップとしてワークメモリ105に保持される。なお、この活性化処理回路260による活性化処理が行われずに、そのまま特徴マップとして出力される場合もある。
制御回路270は、画像認識処理回路200の各部を制御するものである。
[2次元畳込み演算回路]
図7は、本技術の第1の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。
ここでは、k×kのカーネルサイズの同じ重み係数の2次元フィルタを同時に畳込み演算することを想定する。すなわち、上述の重み係数w(i,j,k)の種類は1つ(M=1)である。また、2次元の畳込み演算は、画素位置の異なるp×p個について同時に行われる。その結果、p×p個の畳込み演算結果が得られ、そのp×p個の畳込み演算結果を入力としてプーリング値の計算が行われる。ここで用いられるのは、(k+p−1)×(k+p−1)個のレジスタ221、p×p個の乗算器231、および、p×p個の累加算器233である。以下では、k=k=3、p=p=2とした例について説明する。
2次元シフトレジスタ220は、レジスタ221を行方向に配置した1次元シフトレジスタを、さらに列方向に並べて構成される。1次元シフトレジスタにおけるレジスタ221は、(p−1)個(=1個)おきに(すなわち、p個先と)結線されており、p個(=2個)単位で行方向へのシフト動作を行う。なお、この例では、画像における画素の配置と合致させており、これにより、1次元シフトレジスタにおいては右から左にシフトすることを想定している。なお、行方向に配置した1次元シフトレジスタは、特許請求の範囲に記載のシフトレジスタの一例である。これらを列方向に並べて構成された2次元シフトレジスタ220は、特許請求の範囲に記載の2次元シフトレジスタの一例である。また、レジスタ221は、特許請求の範囲に記載のレジスタの一例である。
この例では、k×k画素(3×3画素)の2次元フィルタをp×p(=2×2)の4つの領域に対して同時に畳込み演算することを想定する。ここで、4つの領域とは、上述の、座標位置(+0,+0)、水平方向に1つずれた座標位置(+1,+0)、垂直方向に1つずれた座標位置(+0,+1)、水平方向および垂直方向にそれぞれ1つずれた座標位置(+1,+1)の各々を基準とした4つの領域である。
4つの領域の各々の畳込み演算に必要なデータを参照するために、それぞれセレクタ222および223が設けられる。セレクタ222は、列方向に配置された3つのレジスタから1つのデータを選択するためのセレクタである。セレクタ223は、行方向の3つのセレクタ222から1つのデータを選択するためのセレクタである。すなわち、3つのセレクタ222と1つのセレクタ223とによって、9つのレジスタから1つのデータを選択する構成になっている。なお、畳込み演算に用いられるデータは例えば16ビット幅であり、レジスタ221、セレクタ222および223においてもこの16ビット幅のデータを扱う必要がある。
4つの領域の畳込み演算は、2次元畳込み演算回路230の4つの乗算器231および4つの累加算器233によって行われる。乗算器231は、係数メモリ232に記憶されている係数データとセレクタ223によって選択されたデータとを乗算するものである。係数メモリ232は、2次元シフトレジスタ220に保持されたデータのそれぞれに対する係数データ(重み係数)を記憶するメモリである。係数データは4つの乗算器231において共通のものを使用できるため、係数メモリ232は乗算器231に共有される。累加算器233は、乗算器231のそれぞれに対応して設けられ、その乗算器231による乗算結果を累加算して、2次元畳込み演算結果を出力するものである。
[入力バッファ]
図8は、本技術の実施の形態における入力バッファ210の第1の構成例を示す図である。この入力バッファ210の第1の構成例は、入力FIFO211と、シフトレジスタ212とを備える。
入力FIFO211は、2次元シフトレジスタ220の最下行に入力されるデータを保持するFIFO(First-In First-Out)構造のメモリである。この入力FIFO211は、少なくとも1段のレジスタからなる。この入力FIFO211は、p個(=2個)設けられ、2次元シフトレジスタ220の最下行の右端p個のレジスタ221にそれぞれデータを供給する。
シフトレジスタ212は、2次元シフトレジスタ220の最下行を除く各行に入力されるデータを保持するシフトレジスタである。このシフトレジスタ212は、2次元シフトレジスタ220の最下行を除く各行に対応してp個(=2個)ずつ設けられ、各行の右端p個のレジスタ221にそれぞれデータを供給する。なお、シフトレジスタ212は、FIFO構造により実現されてもよい。
この入力バッファ210の第1の構成例では、2次元シフトレジスタ220の各行の左端p個のデータは、その上の行の対応するシフトレジスタ212に入力される。2次元シフトレジスタ220の各行のレジスタ数とシフトレジスタ212の段数は、特徴マップの横幅のデータ数と一致する。これにより、入力バッファ210および2次元シフトレジスタ220の全体で特徴マップを全て保持することができ、順次シフトしていく単純な制御により、2次元畳込み演算を行うことができる。この例では、k×k画素(3×3画素)の2次元畳込み演算が行われるたびに、左にまとめてシフトイン動作が行われる。すなわち、9サイクルに1回の割合でシフトイン動作が行われる。
図9は、本技術の実施の形態における入力バッファ210の第2の構成例を示す図である。この入力バッファ210の第2の構成例は、入力バッファ213と、アドレス生成部214とを備える。
入力バッファ213は、2次元シフトレジスタ220の各行に入力されるデータを保持するバッファである。この入力バッファ213は、2次元シフトレジスタ220の各行に対応してp個(=2個)ずつ設けられ、各行の右端p個のレジスタ221にそれぞれデータを供給する。
この入力バッファ210の第2の構成例では、入力バッファ213のデータが、図示するように下行から上行に伝搬される。すなわち、2次元シフトレジスタ220の各行に必要な特徴マップのデータがワークメモリ105から読み出されて供給される。そのため、この入力バッファ210の第2の構成例では、ワークメモリ105における特徴マップの格納アドレスをアドレス生成部214が生成する。そのため、アドレス生成のための制御が必要になるが、第1の構成例のように全てのデータを順次シフトする必要がないため、演算開始前の2次元シフトレジスタ220へのデータ供給を比較的速く行うことができる。ただし、演算開始後のシフトイン動作の頻度は上述の第1の構成例と同様である。
[セレクタ]
図10は、本技術の実施の形態におけるセレクタ224の構成例を示す図である。上述のように、2次元シフトレジスタ220から1つの乗算器231にデータを供給するために、3つのセレクタ222および1つのセレクタ223が用いられる。ここでは、2次元シフトレジスタ220と乗算器231との関係を理解し易くするために、3つのセレクタ222および1つのセレクタ223をセレクタ224として表す。ただし、実際には、セレクタ222は複数のセレクタ223によって共有されるため、乗算器231の数に比例して3つのセレクタ222が必要になるわけではなく、セレクタ224は仮想的なものである。なお、セレクタ224は、特許請求の範囲に記載の選択器の一例である。
上述のように、3×3画素の畳込み演算を想定して、関係するレジスタ221に図のように#0から#8の番号を付す。レジスタ221から出力されるデータにもD0からD8の番号を付す。セレクタ222のうち1つ目はデータD0、D3およびD6の何れか1つを選択する。セレクタ222のうち2つ目はデータD1、D4およびD7の何れか1つを選択する。セレクタ222のうち3つ目はデータD2、D5およびD8の何れか1つを選択する。セレクタ223は、3つのセレクタ222の出力の何れか1つを選択する。すなわち、セレクタ224は、データD0からD8の9つから1つを選択する。
図11は、本技術の実施の形態におけるセレクタ224の制御例を示す図である。
第1サイクルでは、セレクタ222に選択信号「0」、セレクタ223に選択信号「0」がそれぞれ供給され、データD0が選択される。また、係数メモリ232にアドレス「0」が供給され、係数データ「Coef[0]」が選択される。その結果、累加算器233の出力は、「D0×Coef[0]」となる。この時点では、累加算器233の出力の有効ビットは「L」、すなわち2次元畳込み演算結果として無効となっている。
第2サイクルでは、セレクタ222に選択信号「0」、セレクタ223に選択信号「1」がそれぞれ供給され、データD1が選択される。また、係数メモリ232にアドレス「1」が供給され、係数データ「Coef[1]」が選択される。その結果、累加算器233の出力は、「(D0×Coef[0])+(D1×Coef[1])」となる。この時点では、累加算器233の出力の有効ビットは「L」、すなわち2次元畳込み演算結果として無効となっている。
以降、同様の処理が繰り返され、第9サイクルでは、セレクタ222に選択信号「2」、セレクタ223に選択信号「2」がそれぞれ供給され、データD8が選択される。また、係数メモリ232にアドレス「8」が供給され、係数データ「Coef[8]」が選択される。その結果、累加算器233の出力は、「(D0×Coef[0])+…+(D8×Coef[8])」となる。このとき、累加算器233の出力の有効ビットは「H」、すなわち2次元畳込み演算結果として有効な値であるとして出力される。
[オフセット領域間の並列処理]
図12は、本技術の実施の形態におけるオフセット領域間の並列処理の例を示す図である。上述のように、1つの乗算器231に対して仮想的なセレクタ224を1つずつ想定すると、9つのレジスタ221のデータを順次参照することになる。ここでは、水平方向および垂直方向の各方向にそれぞれ1つずつずれた3×3画素のオフセット領域を、4つ並列に処理する例を示す。オフセット領域は、図示するように、互いに一部が異なっている。
座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv_11が出力される。上述のように、セレクタ224は仮想的なものであり、ここに示した4つのセレクタ224内のセレクタ222は互いに共有されている。
図13は、本技術の第1の実施の形態におけるオフセット領域間の並列処理のタイミング例を示す図である。この例では、2次元畳込み演算回路230の数値は図12に示したレジスタ221の番号を表している。
シフトイン動作の後、4つの2次元畳込み演算回路230の各々において、上述のように9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われ、再び4つの2次元畳込み演算回路230の各々において、9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われて同様の処理が繰り返される。2次元シフトレジスタ220におけるシフトイン動作は、2次元畳込み演算回路230における演算とパイプライン処理されるため、図示したようにシフトイン動作のサイクルは隠蔽することができる。
このように、本技術の第1の実施の形態では、2次元シフトレジスタ220からセレクタ224を介して複数の乗算器231に同時にデータを供給することにより、1つの重み係数に対する複数の2次元畳込み演算結果を互いに並列に算出する。これにより、全体の処理を高速化することができる。
<3.第2の実施の形態>
上述の第1の実施の形態では、重み係数w(i,j,k)の種類は1つ(M=1)であることを想定したが、この第2の実施の形態では重み係数の種類を複数であると想定し、異なる係数の畳込み演算を連続して行う。すなわち、上述の第1の実施の形態では畳込み演算を行った後に毎回シフトイン動作を行っていたが、この第2の実施の形態では、ある係数の畳込み演算を行った後に、新しいデータをシフトインせずに連続して、新たな係数の畳込み演算を行う。これにより、シフトイン動作の回数を削減して全体の消費電力を低減することができる。
なお、この第2の実施の形態におけるシステム構成および回路構成は、上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
図14は、本技術の第2の実施の形態におけるセレクタ224の制御の例を示す図である。なお、係数メモリ232には、複数の種類の係数データが記憶されているものとする。
第1サイクルから第9サイクルまでは上述の図11により説明したものと同様である。 続く第10サイクルでは、セレクタ222に選択信号「0」、セレクタ223に選択信号「0」がそれぞれ供給され、データD0が選択される。また、係数メモリ232にアドレス「9」が供給され、係数データ「Coef[9]」が選択される。その結果、累加算器233の出力は、「D0×Coef[9]」となる。この時点では、累加算器233の出力の有効ビットは「L」、すなわち2次元畳込み演算結果として無効となっている。
第11サイクルでは、セレクタ222に選択信号「0」、セレクタ223に選択信号「1」がそれぞれ供給され、データD1が選択される。また、係数メモリ232にアドレス「10」が供給され、係数データ「Coef[10]」が選択される。その結果、累加算器233の出力は、「(D0×Coef[9])+(D1×Coef[10])」となる。この時点では、累加算器233の出力の有効ビットは「L」、すなわち2次元畳込み演算結果として無効となっている。
以降、同様の処理が繰り返され、第18サイクルでは、セレクタ222に選択信号「3」、セレクタ223に選択信号「2」がそれぞれ供給され、データD8が選択される。また、係数メモリ232にアドレス「17」が供給され、係数データ「Coef[17]」が選択される。その結果、累加算器233の出力は、「(D0×Coef[9])+…+(D8×Coef[17])」となる。このとき、累加算器233の出力の有効ビットは「H」、すなわち2次元畳込み演算結果として有効な値であるとして出力される。
図15は、本技術の第2の実施の形態のセレクタ224の制御におけるオフセット領域間の並列処理のタイミング例を示す図である。この例では、2次元畳込み演算回路230の数値は図12に示したレジスタ221の番号を表している。
シフトイン動作の後、4つの2次元畳込み演算回路230の各々において、上述のように9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作は行われずに、2次元シフトレジスタ220に保持されたデータを入れ替えることなく連続して、係数メモリ232からの読出しアドレスが変更される。これにより、再び4つの2次元畳込み演算回路230の各々において、9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われて同様の処理が繰り返される。
このように、本技術の第2の実施の形態によれば、ある係数の畳込み演算を行った後に、新しいデータをシフトインせずに連続して、新たな係数の畳込み演算を行うことにより、シフトイン動作の回数を削減して全体の消費電力を低減することができる。
<4.第3の実施の形態>
上述の第1の実施の形態では、重み係数w(i,j,k)の種類は1つ(M=1)であることを想定したが、この第3の実施の形態では重み係数の種類を複数であると想定し、異なる係数の畳込み演算を同時に行う。すなわち、上述の第1の実施の形態では互いに一部が異なる4つの領域について2次元畳込み演算を行っていたが、この第3の実施の形態では、その4つの領域とは重ならない他の4つの領域においても2次元畳込み演算を行う。
なお、この第3の実施の形態におけるシステム構成および回路構成は、上述の第1の実施の形態と同様であるため、詳細な説明は省略する。係数メモリ232には、複数の種類の係数データが記憶されているものとする。
図16は、本技術の第3の実施の形態における2次元畳込み演算の例を示す図である。
上述の第1の実施の形態と同様に、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv0_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv0_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv0_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv0_11が出力される。
また、この第3の実施の形態においては、座標位置(3,0)を基準とした領域に関しては2次元畳込み演算結果cnv1_00が出力される。座標位置(3,1)を基準とした領域に関しては2次元畳込み演算結果cnv1_01が出力される。座標位置(4,0)を基準とした領域に関しては2次元畳込み演算結果cnv1_10が出力される。座標位置(4,1)を基準とした領域に関しては2次元畳込み演算結果cnv1_11が出力される。第3の実施の形態において追加されたこれら4つの領域と、第1の実施の形態の4つの領域との間では異なる係数データが用いられる。すなわち、2種類の重み係数の2次元フィルタを同時に畳込み演算することになる(M=2)。
この第3の実施の形態では、2次元の畳込み演算は、画素位置の異なるp×p個について同時に行われて、M×p×p個の畳込み演算結果が得られる。そして、そのM×p×p個の畳込み演算結果を入力としてプーリング値の計算が行われる。ここで用いられるのは、(M×k+p−1)×(k+p−1)個のレジスタ221、M×p×p個の乗算器231、および、M×p×p個の累加算器233である。
図17は、本技術の第3の実施の形態の2次元畳込み演算における並列処理のタイミング例を示す図である。この例では、2次元畳込み演算回路230の数値は図16に示したレジスタ221の番号を表している。
シフトイン動作の後、8つの2次元畳込み演算回路230の各々において、上述のように9つずつのデータが順次選択されて、乗算および累加算が行われる。このとき、第3の実施の形態において追加された4つの領域と、第1の実施の形態の4つの領域との間では異なる係数データが用いられる。
その後、シフトイン動作が行われ、再び8つの2次元畳込み演算回路230の各々において、9つずつのデータが順次選択されて、乗算および累加算が行われる。その後、シフトイン動作が行われて同様の処理が繰り返される。
このように、本技術の第3の実施の形態によれば、異なる種類の係数の畳込み演算を、異なる領域について同時に行うことにより、並列度を向上させて全体の処理を高速化することができる。
<5.第4の実施の形態>
上述の第1の実施の形態では、1つの重み係数に対して、互いに一部が異なる4つの領域について同時に2次元畳込み演算を行っていたが、この第4の実施の形態では、複数領域同士をさらに並列処理する。これにより、1つの重み係数の2次元畳込み演算についてさらに並列度を向上させて、全体の処理を高速化する。
なお、この第4の実施の形態におけるシステム構成は、上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
[画像認識処理回路]
図18は、本技術の第4の実施の形態における画像認識処理回路200の要部の構成例を示す図である。なお、入力バッファ210、プーリング処理回路250、活性化処理回路260、制御回路270については、上述の第1の実施の形態と同様であるため、同図において省略している。
この第4の実施の形態における画像認識処理回路200は、4つの領域に対する4つの2次元畳込み演算回路230を複数組(この例では4組)備えることを想定する。同じ組における4つの領域は、一部が異なり、一部が重なっている。一方、異なる組同士は、独立に畳込み演算されるため、重なっている必要はない。
座標位置(+0,+0)、(+1,+0)、(+0,+1)、(+1,+1)のそれぞれを基準とする領域の演算結果は、4つの異なる加算器234によってそれぞれ加算される。すなわち、これら4つの加算器234は、異なる組の対応する領域の2次元畳込み演算を加算する加算器である。
4つの加算器234による加算結果は、4つの加算回路240にそれぞれ供給される。これら4つの加算回路240は、上述の第1の実施の形態のものと同様であり、主にチャネル方向の加算を行う加算器である。
[2次元畳込み演算回路]
図19は、本技術の第4の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。この例では、各レジスタ221に番号を付しており、以下ではこの番号を座標位置として参照する。
ここでは、座標位置「0」を基準とした領域に関しては2次元畳込み演算結果cnv00_00が出力される。座標位置「1」を基準とした領域に関しては2次元畳込み演算結果cnv00_10が出力される。座標位置「7」を基準とした領域に関しては2次元畳込み演算結果cnv00_01が出力される。座標位置「8」を基準とした領域に関しては2次元畳込み演算結果cnv00_11が出力される。これら4つの値は1つの組を形成する。
また、座標位置「3」を基準とした領域に関しては2次元畳込み演算結果cnv01_00が出力される。座標位置「4」を基準とした領域に関しては2次元畳込み演算結果cnv01_10が出力される。座標位置「10」を基準とした領域に関しては2次元畳込み演算結果cnv01_01が出力される。座標位置「11」を基準とした領域に関しては2次元畳込み演算結果cnv01_11が出力される。これら4つの値は1つの組を形成する。
また、座標位置「21」を基準とした領域に関しては2次元畳込み演算結果cnv10_00が出力される。座標位置「22」を基準とした領域に関しては2次元畳込み演算結果cnv10_10が出力される。座標位置「28」を基準とした領域に関しては2次元畳込み演算結果cnv10_01が出力される。座標位置「29」を基準とした領域に関しては2次元畳込み演算結果cnv10_11が出力される。これら4つの値は1つの組を形成する。
また、座標位置「24」を基準とした領域に関しては2次元畳込み演算結果cnv11_00が出力される。座標位置「25」を基準とした領域に関しては2次元畳込み演算結果cnv11_10が出力される。座標位置「31」を基準とした領域に関しては2次元畳込み演算結果cnv11_01が出力される。座標位置「32」を基準とした領域に関しては2次元畳込み演算結果cnv11_11が出力される。これら4つの値は1つの組を形成する。
加算器234は、各組の対応する座標位置同士の加算値を生成する。すなわち、2次元畳込み演算結果cnv00_00、cnv01_00、cnv10_00、cnv11_00の加算値が座標位置(+0,+0)を基準とした領域の2次元畳込み演算結果cnv_00として出力される。また、2次元畳込み演算結果cnv00_01、cnv01_01、cnv10_01、cnv11_01の加算値が座標位置(+0,+1)を基準とした領域の2次元畳込み演算結果cnv_01として出力される。また、2次元畳込み演算結果cnv00_10、cnv01_10、cnv10_10、cnv11_10の加算値が座標位置(+1,+0)を基準とした領域の2次元畳込み演算結果cnv_10として出力される。また、2次元畳込み演算結果cnv00_11、cnv01_11、cnv10_11、cnv11_11の加算値が座標位置(+1,+1)を基準とした領域の2次元畳込み演算結果cnv_11として出力される。
この例では、3×3画素を基本単位として、4つを組み合わせた出力の総和を座標位置(+0,+0)、(+0,+1)、(+1,+0)、(+1,+1)毎に算出している。これにより、座標位置毎の6×6画素の畳込み演算を行っていることになる。このとき、係数メモリ232に記憶される係数の適切な場所に「0」を設定し、または、セレクタにより選択するデータを制限することにより、6×6画素より小さいサイズの5×5画素や4×4画素の畳込みを行うことも可能である。
また、この例に示したのと同様の要領により、6×6画素を4つ組み合わせて、12×12画素の畳込みを行うことも可能である。また、上述の第3の実施の形態に示したのと同様の要領により、6×6画素を2つ組み合わせて、異なる2つの係数の6×6画素の畳込み演算を同時に行うことも可能である。
このように、本技術の第4の実施の形態によれば、互いに異なる複数の2次元領域同士をさらに並列処理することにより、並列度を向上させて全体の処理を高速化することができる。
<6.第5の実施の形態>
上述の実施の形態では、チャネル方向に対しては加算回路240によって逐次的に加算を繰り返していたが、この第5の実施の形態においてはさらにチャネル方向にも並列処理を行う。これにより、さらに並列度を向上させて、全体の処理を高速化する。
なお、この第5の実施の形態におけるシステム構成は、上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
[画像認識処理回路]
図20は、本技術の第5の実施の形態における画像認識処理回路200の要部の構成例を示す図である。なお、プーリング処理回路250、活性化処理回路260、制御回路270については、上述の第1の実施の形態と同様であるため、同図において省略している。また、入力バッファ210については図示を省略しているが、チャネル毎に独立した入力バッファ210を備え、チャネル毎にデータが入力され、それぞれ独立した2次元シフトレジスタ220にデータが供給される。
この第5の実施の形態における画像認識処理回路200は、1つの領域に対する4つの2次元畳込み演算回路230をチャネル方向に複数チャネル分(この例では4チャネル分)備えることを想定する。これにより、基準となる座標位置(+0,+0)、(+1,+0)、(+0,+1)、(+1,+1)に対して、4チャネル分の同時動作が可能となる。
基準となる座標位置(+0,+0)、(+1,+0)、(+0,+1)、(+1,+1)のそれぞれの演算結果は、4つの異なる加算器241によってそれぞれ加算される。すなわち、これら4つの加算器241は、チャネル方向に異なるチャネルの2次元畳込み演算を加算して、3次元畳込み演算結果を生成する加算器である。
[2次元畳込み演算回路]
図21は、本技術の第5の実施の形態における2次元シフトレジスタ220および2次元畳込み演算回路230の一構成例を示す図である。
ここでは、チャネルCH0について、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv0_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv0_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv0_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv0_11が出力される。
また、チャネルCH1について、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv1_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv1_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv1_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv1_11が出力される。
また、チャネルCH2について、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv2_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv2_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv2_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv2_11が出力される。
また、チャネルCH3について、座標位置(+0,+0)を基準とした領域に関しては2次元畳込み演算結果cnv3_00が出力される。座標位置(+0,+1)を基準とした領域に関しては2次元畳込み演算結果cnv3_01が出力される。座標位置(+1,+0)を基準とした領域に関しては2次元畳込み演算結果cnv3_10が出力される。座標位置(+1,+1)を基準とした領域に関しては2次元畳込み演算結果cnv3_11が出力される。
加算器241は、各チャネルの対応する座標位置同士の加算値を生成する。すなわち、2次元畳込み演算結果cnv0_00、cnv1_00、cnv2_00、cnv3_00の加算値が座標位置(+0,+0)を基準とした領域の2次元畳込み演算結果cnv_00として出力される。また、2次元畳込み演算結果cnv0_01、cnv1_01、cnv2_01、cnv3_01の加算値が座標位置(+0,+1)を基準とした領域の2次元畳込み演算結果cnv_01として出力される。また、2次元畳込み演算結果cnv0_10、cnv1_10、cnv2_10、cnv3_10の加算値が座標位置(+1,+0)を基準とした領域の2次元畳込み演算結果cnv_10として出力される。また、2次元畳込み演算結果cnv0_11、cnv1_11、cnv2_11、cnv3_11の加算値が座標位置(+1,+1)を基準とした領域の2次元畳込み演算結果cnv_11として出力される。
加算器241による加算は、全てのチャネルに関してでもよく、一部のチャネルに関してでもよい。全てのチャネルに関して並列に処理を行った場合、ワークメモリ105への保存および読出しが不要になる。加算器241によって一部のチャネルについて加算して、残りのチャネルに関しては、上述の実施の形態と同様に加算回路240によって、逐次的にチャネル方向に加算を行って3次元畳込み演算結果を生成してもよい。この場合であっても、複数チャネル毎に処理できるため、並列処理しない場合と比べてワークメモリ105へのアクセス回数を減らすことができる。そのため、必要なメモリバンド幅を削減することができる。
このように、本技術の第5の実施の形態によれば、複数チャネルに関する2次元畳込み演算同士をチャネル方向にさらに並列処理することにより、並列度を向上させて全体の処理を高速化することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、
前記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における前記データをそれぞれ順次選択する複数の選択器と、
前記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、
前記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と
を具備する演算処理回路。
(2)前記係数メモリは、複数の種類の前記係数データを記憶し、
前記複数の2次元畳込み演算回路の各々は、前記2次元シフトレジスタに保持された前記データを入れ替えることなく連続して前記複数の選択器によって選択された前記データと前記複数の種類の前記係数データとの前記2次元畳込み演算を行う
前記(1)に記載の演算処理回路。
(3)前記係数メモリは、複数の種類の前記係数データを記憶し、
前記複数の2次元畳込み演算回路の各々は、前記2次元畳込み演算を前記複数の種類の前記係数データについて並列に行う
前記(1)に記載の演算処理回路。
(4)前記複数の2次元畳込み演算回路の各々は、前記2次元シフトレジスタに保持されたデータのうち互いに異なる2次元領域における前記データについて前記2次元畳込み演算をさらに並列に行う
前記(1)から(3)のいずれかに記載の演算処理回路。
(5)前記複数の2次元畳込み演算回路によるそれぞれの演算結果を保持する2次元畳込み演算結果保持部をさらに具備し、
前記複数の加算回路は、当該複数の2次元畳込み演算回路によるそれぞれの演算結果と前記2次元畳込み演算結果保持部に保持されている演算結果とを前記チャネル方向に加算する
前記(1)から(4)のいずれかに記載の演算処理回路。
(6)前記複数の加算回路は、前記複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に互いに並列に加算して3次元畳込み演算結果として出力する
前記(1)から(4)のいずれかに記載の演算処理回路。
(7)前記複数の加算回路から出力された前記3次元畳込み演算結果に対して所定の活性化処理を行う活性化処理回路をさらに具備する前記(1)から(6)のいずれかに記載の演算処理回路。
(8)前記複数の加算回路から出力された前記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路をさらに具備する前記(1)から(7)のいずれかに記載の演算処理回路。
(9)前記プーリング処理は、前記3次元畳込み演算結果における複数の値について総和、平均、および、最大値の少なくとも1つのプーリング値を生成する処理である
前記(8)に記載の演算処理回路。
(10)前記2次元シフトレジスタは、(m×k+p−1)+1)×((k+p−1)+1)個以上の前記データを保持し、
前記複数の2次元畳込み演算回路は、前記乗算を行う(m×p×p)個の乗算器と、前記累加算を行う(m×p×p)個の累加算器とを備えて、(k×k)のサイズの前記2次元畳込み演算を、(p×p)個の前記2次元領域に対して並列に行い、
前記プーリング処理回路は、(m×p×p)個の前記3次元畳込み演算結果を入力データとしてm個の前記プーリング値を生成する
前記(8)または(9)に記載の演算処理回路。
但し、mは1以上の整数であり、k、k、p、pは2以上の整数である。
(11)前記2次元シフトレジスタの前記複数のシフトレジスタは、各々が前記第一の方向に対して(p−1)個おきに結線されたレジスタからなり、p個単位で前記第一の方向へのシフト動作を行う
前記(10)に記載の演算処理回路。
(12)前記2次元シフトレジスタに保持されるデータを入力として、畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う前記(8)から(11)のいずれかに記載の演算処理回路。
(13)処理対象となるデータを取得するデータ取得部と、
前記データを入力として畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う演算処理回路と
を具備する認識システムであって、
前記演算処理回路は、
第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、
前記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における前記データをそれぞれ順次選択する複数の選択器と、
前記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、
前記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と、
前記複数の加算回路から出力された前記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路とを備え、
前記データを前記2次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記3次元畳込み演算結果を前記データの特徴量として出力した後、出力された前記特徴量を再び前記2次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記3次元畳込み演算結果を新たな特徴量として出力する動作を繰り返す認識システム。
10 入力画像
20 特徴量抽出器
30 識別器
40 畳込み層
50 プーリング層
60 全結合層
90 出力
101 画像取得部
102 外部メモリ
103 メモリコントローラ
104 DMAコントローラ
105 ワークメモリ
106 制御コンピュータ
107 バス
200 画像認識処理回路
210 入力バッファ
212 シフトレジスタ
213 入力バッファ
214 アドレス生成部
220 2次元シフトレジスタ
221 レジスタ
222〜224 セレクタ
230 2次元畳込み演算回路
231 乗算器
232 係数メモリ
233 累加算器
234、240、241 加算器
250 プーリング処理回路
260 活性化処理回路
270 制御回路

Claims (13)

  1. 第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、
    前記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における前記データをそれぞれ順次選択する複数の選択器と、
    前記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
    前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、
    前記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と
    を具備する演算処理回路。
  2. 前記係数メモリは、複数の種類の前記係数データを記憶し、
    前記複数の2次元畳込み演算回路の各々は、前記2次元シフトレジスタに保持された前記データを入れ替えることなく連続して前記複数の選択器によって選択された前記データと前記複数の種類の前記係数データとの前記2次元畳込み演算を行う
    請求項1記載の演算処理回路。
  3. 前記係数メモリは、複数の種類の前記係数データを記憶し、
    前記複数の2次元畳込み演算回路の各々は、前記2次元畳込み演算を前記複数の種類の前記係数データについて並列に行う
    請求項1記載の演算処理回路。
  4. 前記複数の2次元畳込み演算回路の各々は、前記2次元シフトレジスタに保持されたデータのうち互いに異なる2次元領域における前記データについて前記2次元畳込み演算をさらに並列に行う
    請求項1記載の演算処理回路。
  5. 前記複数の2次元畳込み演算回路によるそれぞれの演算結果を保持する2次元畳込み演算結果保持部をさらに具備し、
    前記複数の加算回路は、当該複数の2次元畳込み演算回路によるそれぞれの演算結果と前記2次元畳込み演算結果保持部に保持されている演算結果とを前記チャネル方向に加算する
    請求項1記載の演算処理回路。
  6. 前記複数の加算回路は、前記複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に互いに並列に加算して3次元畳込み演算結果として出力する
    請求項1記載の演算処理回路。
  7. 前記複数の加算回路から出力された前記3次元畳込み演算結果に対して所定の活性化処理を行う活性化処理回路をさらに具備する請求項1記載の演算処理回路。
  8. 前記複数の加算回路から出力された前記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路をさらに具備する請求項1記載の演算処理回路。
  9. 前記プーリング処理は、前記3次元畳込み演算結果における複数の値について総和、平均、および、最大値の少なくとも1つのプーリング値を生成する処理である
    請求項8記載の演算処理回路。
  10. 前記2次元シフトレジスタは、(m×k+p−1)+1)×((k+p−1)+1)個以上の前記データを保持し、
    前記複数の2次元畳込み演算回路は、前記乗算を行う(m×p×p)個の乗算器と、前記累加算を行う(m×p×p)個の累加算器とを備えて、(k×k)のサイズの前記2次元畳込み演算を、(p×p)個の前記2次元領域に対して並列に行い、
    前記プーリング処理回路は、(m×p×p)個の前記3次元畳込み演算結果を入力データとしてm個の前記プーリング値を生成する
    請求項8記載の演算処理回路。
    但し、mは1以上の整数であり、k、k、p、pは2以上の整数である。
  11. 前記2次元シフトレジスタの前記複数のシフトレジスタは、各々が前記第一の方向に対して(p−1)個おきに結線されたレジスタからなり、p個単位で前記第一の方向へのシフト動作を行う
    請求項10記載の演算処理回路。
  12. 前記2次元シフトレジスタに保持されるデータを入力として、畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う請求項8記載の演算処理回路。
  13. 処理対象となるデータを取得するデータ取得部と、
    前記データを入力として畳込みニューラルネットワークにおける畳込み層およびプーリング層の特徴量抽出処理を行う演算処理回路と
    を具備する認識システムであって、
    前記演算処理回路は、
    第一の方向に配置された複数のシフトレジスタを前記第一の方向に対して垂直に交差する第二の方向に並べて順次接続した2次元シフトレジスタと、
    前記2次元シフトレジスタに保持されたデータのうち互いに少なくとも一部が異なる所定の2次元領域における前記データをそれぞれ順次選択する複数の選択器と、
    前記2次元シフトレジスタに保持されたデータのそれぞれに対する係数データを記憶する係数メモリと、
    前記複数の選択器の各々に対応して設けられて当該選択器によって選択された前記データと前記係数メモリに記憶されている前記係数データとを乗算した結果を累加算して前記2次元領域における2次元畳込み演算結果を互いに並列に算出する複数の2次元畳込み演算回路と、
    前記複数の2次元畳込み演算回路に対応して設けられて当該複数の2次元畳込み演算回路によるそれぞれの演算結果をチャネル方向に加算して3次元畳込み演算結果として出力する複数の加算回路と、
    前記複数の加算回路から出力された前記3次元畳込み演算結果に対してプーリング処理を行うプーリング処理回路とを備え、
    前記データを前記2次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記3次元畳込み演算結果を前記データの特徴量として出力した後、出力された前記特徴量を再び前記2次元シフトレジスタに保持させて前記演算処理回路における処理を行って前記3次元畳込み演算結果を新たな特徴量として出力する動作を繰り返す認識システム。
JP2016205451A 2016-10-19 2016-10-19 演算処理回路および認識システム Pending JP2018067154A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2016205451A JP2018067154A (ja) 2016-10-19 2016-10-19 演算処理回路および認識システム
CN201780063513.9A CN109844738A (zh) 2016-10-19 2017-07-04 运算处理电路和识别系统
PCT/JP2017/024422 WO2018074012A1 (ja) 2016-10-19 2017-07-04 演算処理回路および認識システム
US16/331,727 US11461684B2 (en) 2016-10-19 2017-07-04 Operation processing circuit and recognition system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016205451A JP2018067154A (ja) 2016-10-19 2016-10-19 演算処理回路および認識システム

Publications (1)

Publication Number Publication Date
JP2018067154A true JP2018067154A (ja) 2018-04-26

Family

ID=62019479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016205451A Pending JP2018067154A (ja) 2016-10-19 2016-10-19 演算処理回路および認識システム

Country Status (4)

Country Link
US (1) US11461684B2 (ja)
JP (1) JP2018067154A (ja)
CN (1) CN109844738A (ja)
WO (1) WO2018074012A1 (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020024524A (ja) * 2018-08-06 2020-02-13 Kddi株式会社 ニューラルネットワークの全結合層を畳み込み層に置き換えるプログラム
WO2020145142A1 (ja) * 2019-01-08 2020-07-16 ソニー株式会社 固体撮像素子およびその信号処理方法、並びに電子機器
WO2020158384A1 (ja) * 2019-01-30 2020-08-06 Necプラットフォームズ株式会社 演算処理装置、演算処理方法及びコンフィグレーションプログラム
JP2020140507A (ja) * 2019-02-28 2020-09-03 Necプラットフォームズ株式会社 畳み込み演算処理装置および畳み込み演算処理方法
KR20200111106A (ko) 2019-03-18 2020-09-28 한국전자통신연구원 합성곱 계층 가속 장치, 그것을 포함하는 임베디드 시스템 및 그것의 동작 방법
WO2021070303A1 (ja) * 2019-10-09 2021-04-15 オリンパス株式会社 演算処理装置
JP2021100247A (ja) * 2020-01-20 2021-07-01 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッドBeijing Baidu Netcom Science Technology Co., Ltd. 歪んだドキュメント画像の矯正方法及び装置
JP2021517702A (ja) * 2018-03-13 2021-07-26 レコグニ インコーポレイテッド 効率的な畳み込みエンジン
WO2021241460A1 (ja) * 2020-05-29 2021-12-02 ソニーグループ株式会社 メモリ内蔵装置、処理方法、パラメータ設定方法及びイメージセンサ装置
US11380375B2 (en) 2020-08-25 2022-07-05 Kabushiki Kaisha Toshiba Storage device and neural network apparatus
WO2022259427A1 (ja) * 2021-06-09 2022-12-15 日本電信電話株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
US11822900B2 (en) 2019-06-17 2023-11-21 Canon Kabushiki Kaisha Filter processing device and method of performing convolution operation at filter processing device
US11853864B2 (en) 2019-03-07 2023-12-26 Canon Kabushiki Kaisha Data processing apparatus and data processing method for executing processing using neural network
JP7467786B2 (ja) 2020-03-12 2024-04-16 公立大学法人会津大学 データ処理装置及びデータ処理方法
US12001810B2 (en) 2018-07-11 2024-06-04 Sony Corporation Signal processing circuit, signal processing device, and signal processing method to suppress power consumption

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10878310B2 (en) 2016-11-29 2020-12-29 Mellanox Technologies, Ltd. Accelerated convolution in convolutional neural networks
KR102061408B1 (ko) * 2017-03-24 2019-12-31 (주)제이엘케이인스펙션 가상 3차원 심층 신경망을 이용하는 영상 분석 장치 및 방법
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11205115B1 (en) 2018-04-20 2021-12-21 Perceive Corporation Neural network inference circuit
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US11531868B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Input value cache for temporarily storing input values
US10977338B1 (en) 2018-04-20 2021-04-13 Perceive Corporation Reduced-area circuit for dot product computation
KR102557572B1 (ko) * 2018-05-23 2023-07-24 한국전자통신연구원 인공 신경망 장치 및 그 동작 방법
JP7000586B2 (ja) * 2018-08-31 2022-01-19 オリンパス株式会社 データ処理システムおよびデータ処理方法
US20200175355A1 (en) * 2018-11-30 2020-06-04 Electronics And Telecommunications Research Institute Neural network accelerator with systolic array structure
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
CN110377342B (zh) * 2019-06-10 2022-08-30 平安科技(深圳)有限公司 基于卷积神经网络的显存处理方法、装置及存储介质
CN110705701B (zh) * 2019-09-05 2022-03-29 瑞芯微电子股份有限公司 一种高并行度的卷积运算方法和电路
WO2021183567A1 (en) * 2020-03-10 2021-09-16 Verheyen Henry Hardware architecture for processing data in neural network
TWI768326B (zh) * 2020-04-20 2022-06-21 國立陽明交通大學 卷積運算模組及方法以及其適用之卷積神經網路系統
GB2599098B (en) * 2020-09-22 2024-04-10 Imagination Tech Ltd Hardware implementation of windowed operations in three or more dimensions
CN113240103B (zh) * 2021-06-25 2022-10-04 清华大学 神经网络池化电路
US11762946B1 (en) * 2022-09-23 2023-09-19 Recogni Inc. Systems for using shifter circuit and 3×3 convolver units to emulate functionality of larger sized convolver units
CN116861973B (zh) * 2023-09-05 2023-12-15 深圳比特微电子科技有限公司 用于卷积运算的改进的电路、芯片、设备及方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001067338A (ja) * 1999-08-30 2001-03-16 Mitsubishi Precision Co Ltd 高速たたみ込み演算方式とその演算器および高速補間方式と高速補間器
JP4833690B2 (ja) * 2006-03-03 2011-12-07 川崎マイクロエレクトロニクス株式会社 演算回路および演算方法
JP5368687B2 (ja) * 2007-09-26 2013-12-18 キヤノン株式会社 演算処理装置および方法
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
CN102065309B (zh) * 2010-12-07 2012-12-05 青岛海信信芯科技有限公司 一种dct实现方法及dct实现电路
JP6314628B2 (ja) * 2014-04-28 2018-04-25 株式会社デンソー 演算処理装置
CN105681628B (zh) * 2016-01-05 2018-12-07 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
US10032110B2 (en) * 2016-12-13 2018-07-24 Google Llc Performing average pooling in hardware
US10176551B2 (en) * 2017-04-27 2019-01-08 Apple Inc. Configurable convolution engine for interleaved channel data

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021517702A (ja) * 2018-03-13 2021-07-26 レコグニ インコーポレイテッド 効率的な畳み込みエンジン
US12001810B2 (en) 2018-07-11 2024-06-04 Sony Corporation Signal processing circuit, signal processing device, and signal processing method to suppress power consumption
JP2020024524A (ja) * 2018-08-06 2020-02-13 Kddi株式会社 ニューラルネットワークの全結合層を畳み込み層に置き換えるプログラム
WO2020145142A1 (ja) * 2019-01-08 2020-07-16 ソニー株式会社 固体撮像素子およびその信号処理方法、並びに電子機器
US12010418B2 (en) 2019-01-08 2024-06-11 Sony Group Corporation Solid-state imaging element, signal processing method thereof, and electronic device
WO2020158384A1 (ja) * 2019-01-30 2020-08-06 Necプラットフォームズ株式会社 演算処理装置、演算処理方法及びコンフィグレーションプログラム
JP2020123125A (ja) * 2019-01-30 2020-08-13 Necプラットフォームズ株式会社 演算処理装置、演算処理方法及びプログラム
JP2020140507A (ja) * 2019-02-28 2020-09-03 Necプラットフォームズ株式会社 畳み込み演算処理装置および畳み込み演算処理方法
US11853864B2 (en) 2019-03-07 2023-12-26 Canon Kabushiki Kaisha Data processing apparatus and data processing method for executing processing using neural network
US11580386B2 (en) 2019-03-18 2023-02-14 Electronics And Telecommunications Research Institute Convolutional layer acceleration unit, embedded system having the same, and method for operating the embedded system
KR20200111106A (ko) 2019-03-18 2020-09-28 한국전자통신연구원 합성곱 계층 가속 장치, 그것을 포함하는 임베디드 시스템 및 그것의 동작 방법
US11822900B2 (en) 2019-06-17 2023-11-21 Canon Kabushiki Kaisha Filter processing device and method of performing convolution operation at filter processing device
WO2021070303A1 (ja) * 2019-10-09 2021-04-15 オリンパス株式会社 演算処理装置
JP7108061B2 (ja) 2020-01-20 2022-07-27 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド 歪んだドキュメント画像の矯正方法及び装置
US11756170B2 (en) 2020-01-20 2023-09-12 Beijing Baidu Netcom Science Technology Co., Ltd. Method and apparatus for correcting distorted document image
JP2021100247A (ja) * 2020-01-20 2021-07-01 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッドBeijing Baidu Netcom Science Technology Co., Ltd. 歪んだドキュメント画像の矯正方法及び装置
JP7467786B2 (ja) 2020-03-12 2024-04-16 公立大学法人会津大学 データ処理装置及びデータ処理方法
WO2021241460A1 (ja) * 2020-05-29 2021-12-02 ソニーグループ株式会社 メモリ内蔵装置、処理方法、パラメータ設定方法及びイメージセンサ装置
US11380375B2 (en) 2020-08-25 2022-07-05 Kabushiki Kaisha Toshiba Storage device and neural network apparatus
WO2022259427A1 (ja) * 2021-06-09 2022-12-15 日本電信電話株式会社 画像処理装置、画像処理方法、及び画像処理プログラム

Also Published As

Publication number Publication date
US11461684B2 (en) 2022-10-04
US20190205780A1 (en) 2019-07-04
WO2018074012A1 (ja) 2018-04-26
CN109844738A (zh) 2019-06-04

Similar Documents

Publication Publication Date Title
WO2018074012A1 (ja) 演算処理回路および認識システム
KR102659997B1 (ko) 저전력 컨볼루션 신경망 추론 애플리케이션을 위한 메모리 대역폭 감소 기술
JP7132824B2 (ja) ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
KR102216019B1 (ko) 콘볼루션 뉴럴 네트워크들을 위한 효율적인 데이터 레이아웃들
JP6314628B2 (ja) 演算処理装置
JP5376920B2 (ja) コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
KR102414583B1 (ko) 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법
EP3891663A1 (en) Neural network processor
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
TW202123093A (zh) 實行卷積運算的系統及方法
US20240095532A1 (en) Method and apparatus for processing data
CN109146065B (zh) 二维数据的卷积运算方法及装置
JP7402623B2 (ja) フィルタ処理装置及びその制御方法
US11763131B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
US11164032B2 (en) Method of performing data processing operation
WO2022121474A1 (zh) 优化神经网络卷积残差结构的方法、系统、设备及介质
JP6800656B2 (ja) 演算回路、その制御方法及びプログラム
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
JP6532334B2 (ja) 並列演算装置、画像処理装置及び並列演算方法
KR20200129957A (ko) 피처맵 데이터에 대한 압축을 수행하는 뉴럴 네트워크 프로세서 및 이를 포함하는 컴퓨팅 시스템
CN116010313A (zh) 一种通用、可配置的图像滤波计算多行输出系统和方法
JP5608932B2 (ja) 並列プロセッサ用のアドレス指定装置
JP5045652B2 (ja) 相関処理装置及びその相関処理装置で読みとり可能な媒体
WO2019136747A1 (zh) 反卷积器及其所应用的人工智能处理装置