JP6747305B2 - データ処理装置及びニューラルネットワークシステム - Google Patents

データ処理装置及びニューラルネットワークシステム Download PDF

Info

Publication number
JP6747305B2
JP6747305B2 JP2017006059A JP2017006059A JP6747305B2 JP 6747305 B2 JP6747305 B2 JP 6747305B2 JP 2017006059 A JP2017006059 A JP 2017006059A JP 2017006059 A JP2017006059 A JP 2017006059A JP 6747305 B2 JP6747305 B2 JP 6747305B2
Authority
JP
Japan
Prior art keywords
data
unit
signal
input
processing
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
JP2017006059A
Other languages
English (en)
Other versions
JP2018116419A (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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2017006059A priority Critical patent/JP6747305B2/ja
Publication of JP2018116419A publication Critical patent/JP2018116419A/ja
Application granted granted Critical
Publication of JP6747305B2 publication Critical patent/JP6747305B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)
  • Complex Calculations (AREA)

Description

本発明は、畳込み演算を行うデータ処理装置、及び前記装置により実現されるニューラルネットワークシステムに関する。
従来より、複数の処理層が階層的に接続されたニューラルネットワークによる演算を実行する演算処理装置が考えられている。特に画像認識を行う演算処理装置においては、いわゆる畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)が中核的な存在となっている。
特許第5184824号公報
ところで、この種の演算処理装置においては、演算処理層の階層数の増加や演算処理の複雑化に対応するために、複数の演算ブロックと複数のメモリを搭載し、例えば1つの演算ブロックに対し複数のメモリを接続し、また、1つのメモリに対し複数の演算ブロックを接続することが考えられている。この構成によれば、1つの演算ブロックが複数のメモリにデータを書き込むことができ、また、1つのメモリから複数の演算ブロックにデータを読み込ませることができるので、演算処理層の階層数の増加や演算処理の複雑化に対応して演算処理を効率的に行うことができる。しかし、複数の演算ブロックと複数のメモリとを接続する配線が複雑化し、これに伴う処理速度の低下や、演算処理装置の大型化が懸念される。
出願人は、上記の問題を解決するものとして、特願2016−31949号を出願している。しかしながら、上記出願の構成においても、異なる観点から以下の問題があった。処理対象となる画像データは外部メモリに格納されているが、その画像データについて演算ブロックが最終的な畳込み演算を行うには、その演算の対象となる画像データを準備するための「前処理」が必要となっている。したがって、演算ブロックは、「前処理」を行うため外部メモリに複数回アクセスする必要があり、連続的に畳込み演算を行うことができず、演算処理速度が低下することが問題となる。
本発明は上記事情に鑑みてなされたものであり、その目的は、各演算ブロックによる外部メモリへのアクセス回数を削減して、畳込み演算処理をより効率的に行うことができるデータ処理装置、及び前記装置により実現されるニューラルネットワークシステムを提供することにある。
請求項1記載のデータ処理装置によれば、複数の演算ブロックは、階層的に接続された複数の処理層に対応してそれぞれ畳込み演算を実行する。複数のデータ保持部は、複数の演算ブロックとそれぞれ対をなして配置され、各演算ブロックに入力されるデータ,及び各演算ブロックが出力するデータを保持する。読出し中継部は、外部メモリと各データ保持部との間に配置され、入力されるデータを中継して、各データ保持部に出力する。
複数の書込み中継部は、各演算ブロックと各データ保持部との間に配置され、各演算ブロックが出力するデータを中継して、対応するデータ保持部に出力する。信号出力部は、外部メモリより読出されたシリアルデータにおいて、対応する演算ブロックが処理対象とするデータを示す有効信号を周期的に出力する。
読出し中継部は、外部メモリより読出されたデータ,又は自身よりも上位側に位置する読出し中継部より出力されたデータがシリアルに入力されると、有効信号に基づいて取込んだデータを一定の処理単位毎に纏める前処理を行い、対応するデータ保持部又は自身よりも下位側に位置する読出し中継部に出力する。
このように読出し中継部が、有効信号に基づいて取込んだデータを一定の処理単位毎に纏める前処理を実行することで、各演算ブロックが前処理を行う場合よりも外部メモリに対するアクセス回数を削減できる。そして、各演算ブロックは、データ保持部を介して入力されるデータに対し、畳込み演算を一括して行うことが可能になる。したがって、畳込み演算をより高速に実行できる。
畳み込みニューラルネットワークの構成例を概念的に示す図 中間層における演算処理の流れを視覚的に示す図(その1) 中間層における演算処理の流れを視覚的に示す図(その2) 特徴量抽出処理に用いられる一般的な演算式および関数を示す図 本実施形態に係るデータ処理装置の構成例を概略的に示すブロック図 演算ブロックの構成例を概略的に示すブロック図 データ処理の流れを説明する図 先行出願に開示されている、対応する処理装置の構成例を概略的に示すブロック図 データ処理の流れを説明する図 インタフェースおよびデータ保持部の構成を示す機能ブロック図 基準EN生成部の構成を示す機能ブロック図 RD中継部の構成を示す機能ブロック図 EN生成部の動作を示すタイミングチャート EN生成部の構成を示す機能ブロック図 前処理の一例を説明する図 WR中継部側のデータ保持部の構成を示す機能ブロック図 外部メモリにおける画像データの配置例を示す図 RD中継部より出力されるシリアルデータを示すタイミングチャート 4ピクセルに対応して、RD中継部より出力されるシリアルデータを示すタイミングチャート データ処理装置の全体に亘る処理を示すタイミングチャート(その1) データ処理装置の全体に亘る処理を示すタイミングチャート(その2) 図20及び図21で実行される前処理の内容を示す図 データ処理装置により実現されるニューラルネットワークにより、画像データを処理するイメージを示す図 第2実施形態であり、RD中継部より出力されるシリアルデータを示すタイミングチャート パディングを説明する図(その1) パディングを説明する図(その2) 基準EN生成部の構成を示す機能ブロック図 第3実施形態であり、外部メモリにおけるデータの配置例を示す図 演算ブロックの一部の構成例を概略的に示すブロック図 第4実施形態であり、EN生成部の構成を示す機能ブロック図
(ニューラルネットワーク)
図1には、詳しくは後述するデータ処理装置10に適用されるニューラルネットワーク、この場合、畳み込みニューラルネットワークの構成を概念的に示している。畳み込みニューラルネットワークNは、入力データである画像データD1から所定の形状やパターンを認識する画像認識技術に応用されるものであり、中間層Naと全結合層Nbとを有する。中間層Naは、複数の特徴量抽出処理層Na1,Na2…が階層的に接続された構成である。各特徴量抽出処理層Na1,Na2…は、それぞれ畳み込み層Cおよびプーリング層Pを備える。
次に、中間層Naにおける処理の流れについて説明する。図2に例示するように、第1層目の特徴量抽出処理層Na1では、演算処理装置は、入力される画像データD1を例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第1層目の特徴量抽出処理層Na1では、例えば水平方向に延びる線状の特徴量や斜め方向に延びる線状の特徴量などといった比較的シンプルな単独の特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
第2層目の特徴量抽出処理層Na2では、演算処理装置は、前階層の特徴量抽出処理層Na1から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第2層目の特徴量抽出処理層Na2では、第1層目の特徴量抽出処理層Na1で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
第3層目の特徴量抽出処理層Na3では、演算処理装置は、前階層の特徴量抽出処理層Na2から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して周知の特徴量抽出処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。なお、第3層目の特徴量抽出処理層Na3では、第2層目の特徴量抽出処理層Na2で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このとき、演算処理装置は、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。このように、複数の特徴量抽出処理層による特徴量の抽出処理を繰り返すことで、演算処理装置は、画像データD1に含まれる検出対象物体の画像認識を行う。
演算処理装置は、中間層Naにおいて複数の特徴量抽出処理層Na1,Na2,Na3…による処理を繰り返すことで入力画像データD1に含まれる種々の特徴量を高次元で抽出していく。そして、演算処理装置は、中間層Naの処理により得られた結果を中間演算結果データとして全結合層Nbに出力する。
全結合層Nbは、中間層Naから得られる複数の中間演算結果データを結合して最終的な演算結果データを出力する。即ち、全結合層Nbは、中間層Naから得られる複数の中間演算結果データを結合し、さらに、その結合結果に対して重み係数を異ならせながら積和演算を行うことにより、最終的な演算結果データ、即ち、入力データである画像データD1に含まれる検出対象物を認識した画像データを出力する。このとき、積和演算による演算結果の値が大きい部分が検出対象物の一部または全部として認識される。
次に、演算処理装置による特徴量抽出処理の流れについて説明する。図3に例示するように、演算処理装置は、前階層の特徴量抽出処理層から入力される入力データDnを所定サイズ、この場合、図にてハッチングで示す3×3画素ごとのフィルタサイズにより走査する。なお、画素サイズは3×3画素に限ることなく、例えば5×5画素など適宜変更することができる。
そして、演算処理装置は、走査したデータに対して、それぞれ周知の畳み込み演算を行う。そして、演算処理装置は、畳み込み演算後のデータに対して周知の活性化処理を行い、畳み込み層Cの出力とする。そして、演算処理装置は、畳み込み層Cの出力データCnに対して、所定サイズ、この場合、2×2画素ごとに周知のプーリング処理を行い、プーリング層Pの出力とする。そして、演算処理装置は、プーリング層Pの出力データPnを次の階層の特徴量抽出処理層に出力する。なお、画素サイズは、2×2画素に限られず適宜変更することができる。
図4には、畳み込み演算処理に用いられる畳み込み関数、活性化処理に用いられる関数、プーリング処理に用いられる関数の一般的な例を示している。即ち、畳み込み関数Yijは、直前の層の出力Xijに学習により得られる重み係数Wp,qを乗算した値を累積する関数となっている。なお、「N」は1サイクルの畳み込み演算処理により処理される画素サイズを示す。即ち、例えば1演算サイクルの画素サイズが「3×3」画素である場合、Nの値は「2」である。
また、畳み込み関数Yijは、累積値に所定のバイアス値を加算する関数としてもよい。また、畳み込み関数は、全結合処理にも対応し得る積和演算が可能な関数であれば、種々の関数を採用することができる。また、活性化処理には、周知のロジスティックジグモイド関数やReLU関数(Rectified Linear Units)などが用いられる。また、プーリング処理には、入力されるデータの最大値を出力する周知の最大プーリング関数や、入力されるデータの平均値を出力する周知の平均プーリング関数などが用いられる。
上述した畳み込みニューラルネットワークNによれば、コンボルーション層Cによる処理及びプーリング層Pによる処理が繰り返されることにより、より高次元の特徴量の抽出が可能となる。次に、この畳み込みニューラルネットワークNを適用した演算処理装置に係る実施形態について説明する。
(第1実施形態)
図5に例示するデータ処理装置10は、複数の演算ブロック11、複数の中継部12及び13、複数のデータ保持部14、複数のインタフェース部15などを備える。データ処理装置10は、1つの演算ブロック11、RD中継部12及びWR中継部13、1つのデータ保持部14により1つの演算処理ユニット16を構成している。そして、データ処理装置10は、複数の演算処理ユニット16を列状に配列した構成となっている。なお、説明の便宜上、図の下側を上位側、図の上側を下位側と定義する。また、演算処理ユニット16は、それぞれインタフェース部15を介してインターコネクト部17に接続されている。インターコネクト部17は、データ処理装置10の外部に設けられた外部メモリ18に接続されている。
図6に例示するように、演算ブロック11は、それぞれ、畳み込み演算処理部11a、累積処理部11b、活性化処理部11c、プーリング処理部11dなどを備えている。これらの処理部は、例えば回路などのハードウェアにより構成してもよいし、ソフトウェアにより構成してもよいし、ハードウェアとソフトウェアの組み合わせにより構成してもよい。畳み込み演算処理部11aは、前階層から入力される入力データに対して周知の畳み込み演算処理を実行して、その処理結果データを累積処理部11bに出力する。
累積処理部11bは、例えば加算器などで構成されている。累積処理部11bは、上位側の演算ブロック11の累積処理部11bからデータが入力される場合には、そのデータを、自身と同じ演算ブロック11の畳み込み演算処理部11aから入力されるデータに加算する。これにより、複数の演算ブロック11は、それぞれの演算ブロック11の畳み込み演算処理部11aによる演算結果データを、上位側から下位側に向かって順次累積することが可能となっている。
累積処理部11bは、上位側の演算ブロック11からデータが入力されない場合には、自身と同じ演算ブロック11の畳み込み演算処理部11aから入力されるデータを活性化処理部11cに出力する。また、累積処理部11bは、下位側の演算ブロック11からデータが入力される場合には、自身と同じ演算ブロック11の畳み込み演算処理部11aから入力されるデータに下位側の演算ブロック11から入力されるデータを加算した累積データを活性化処理部11cに出力する。
活性化処理部11cは、累積処理部11bから入力されるデータに対して周知の活性化処理を実行して、その処理結果データをプーリング処理部11dに出力する。プーリング処理部11dは、活性化処理部11cによる処理結果データに対して周知のプーリング処理を実行して、その処理結果データを出力する。
RD中継部12は、インタフェース部15又は自身より上位側のRD中継部12を介して入力されるデータを中継し、データ保持部14に出力する。データ保持部14は、保持しているデータを自身と同じ演算処理ユニット16の演算ブロック11に出力する。
WR中継部13は、自身と同じ演算処理ユニット16の演算ブロック11から入力されるデータ,又は自身よりも下位側のWR中継部13から入力されるデータのうち何れか一方を選択し、その選択したデータを中継して自身と同じ演算処理ユニット16のデータ保持部14に出力する。
データ保持部14は、いわゆる内部メモリとして機能するもので、現階層における演算処理時に入力される入力データ、つまり演算結果データ,及び次階層における演算処理時に出力する出力データを一時的に保持する。データ保持部14は、それぞれ2つのバッファ14a,14bを備える。また、データ保持部14は、それぞれ図示しないスイッチング機能部を備える。スイッチング機能部は、バッファ14a,14bを、演算ブロック11へのデータ出力用および演算ブロック11からのデータ入力用に切り換える機能を有する。
即ち、スイッチング機能部は、例えば、バッファ14aをデータ出力用として機能させる場合には、バッファ14bをデータ入力用として機能させるように切り換える。また、スイッチング機能部は、バッファ14aをデータ入力用として機能させる場合には、バッファ14bをデータ出力用として機能させるように切り換える。
データ保持部14は、現階層における演算処理時に入力される入力データ、つまり演算結果データを、データ入力用に切り換えられているバッファ14a又はバッファ14bに保持する。そして、データ保持部14は、次回層の演算処理時には、現階層の演算処理時においてデータ入力用に切り換えられていたバッファ14a又はバッファ14bをデータ出力用に切り換え、そのバッファに保持されているデータを、演算ブロック11に出力する。これにより、データ保持部14は、現階層の演算処理時における演算結果データを外部メモリ18に退避させなくとも、データ処理装置10内部において、現階層の演算結果データを次階層に送ることができる。
外部メモリ18は、例えばDouble−Data−Rate−SDRAMなどで構成される大規模記憶媒体であり、入力画像データD1や、演算ブロック11による演算結果データなどを記憶可能である。外部メモリ18は、この場合、インターコネクト部17を介して複数のインタフェース部15、換言すれば複数の演算処理ユニット16に接続されている。インターコネクト部17は、外部メモリ18から読み出されるデータを各演算処理ユニット16に振り分ける機能を有する。また、インターコネクト部17は、各演算処理ユニット16から外部メモリ18に書き出されるデータを外部メモリ18に集約する機能を有する。
データ処理装置10は、さらに、冗長データ保持部19を備える。冗長データ保持部19は、データ保持部14と同様に2つのバッファ19a,19bを備える。これらバッファ19a,19bの機能は、上述したバッファ14a,14bと同様である。冗長データ保持部19は、最も上位側のWR中継部13が出力するデータを、最も上位側のデータ保持部14と冗長に保持する。そして、最も上位側の演算ブロック11は、冗長データ保持部19に保持されているデータを、自身が生成する演算結果データに加算する。
ここで、図8は、前述した本出願人による先行出願;特願2016−31949号の図5相当図である。この構成では、図3に示したように3×3の畳込み演算を実行する前に、図9に示すように外部メモリ18に対するアクセスを4回行い、1×1の畳込み演算及びサブサンプリングを行うことで演算ブロック11が演算を実行する際の処理単位に纏める「前処理」を行った後、演算ブロック11が3×3の畳込み演算を実行することになる。
これに対して、本実施形態のデータ処理装置10では、RD中継部12が上記の「前処理」を行うように構成している点が特徴である。
尚、上記先行出願では、図7〜図10において「累積」,「非累積:パラレル」,「分散」,「非分散:パラレル」の4つの動作例が示されているが、本実施形態のデータ処理装置10においてもこれらの動作は同様に可能である。
図10に示すように、インタフェース部15は、外部バスIF15a及びパラシリ変換15b及び基準EN生成部15cを備えている。尚、図10は、一例としてAXI(Advanced eXtensible Interface)に準拠したインタフェースを示している。パラシリ変換部15bは、FIFO21及びパラシリ変換コントローラ22を備えている。パラシリ変換コントローラ22は、外部バスIF15aが備えるインタフェースコントローラ23により制御され、FIFO21は、パラシリ変換コントローラ22により制御される。また、コントローラ22及び23には、システム全体を制御する図示しない上位のコントローラより、例えば外部メモリアドレスやデータサイズ等を設定するための制御値が入力される。
外部バスIF15aを介して入力されるパラレルデータ;rdataは、FIFO21によりシリアルに変換され、out_dataとしてRD中継部12に出力される。また、パラシリ変換コントローラ22は、基準EN生成15cに対し、有効信号である基準EN信号を生成させるための制御信号data_enableを出力する。
図11に示すように、基準EN生成部15cは、比較ロジック部24,フリップフロップ25,ANDゲート26,カウンタ27,比較ロジック部28及びANDゲート29を備えている。比較ロジック部24の入力端子in1には、スキップするピクセル数を与える信号pixel_skipが外部より入力される。また、同入力端子in0には、カウンタ27の出力端子outが接続されている。比較ロジック部24は、入力端子in0,in1の値が一致すると、出力端子outに「1」を出力する。
比較ロジック部24の出力端子outは、ANDゲート26の入力端子の一方に接続されており、同入力端子の他方には、フリップフロップ25を介して制御信号data_enableが与えられる。ANDゲート26の出力端子は、カウンタ27の入力端子resetに接続されており、同入力端子upはフリップフロップ25の出力端子に接続されている。カウンタ27は、ANDゲート26の出力端子がハイレベルになるとリセットされ、入力端子upに入力される信号の立上りエッジでアップカウントを行う。
カウンタ27の出力端子outは、比較ロジック部28の入力端子inに接続されている。比較ロジック部28は、入力端子inの値が「0」であれば、出力端子outに「1」を出力する。比較ロジック部28の出力端子outは、ANDゲート29の入力端子の一方に接続されており、同入力端子の他方には、制御信号data_enableが与えられる。そして、ANDゲート29の出力が、基準EN信号;gen_enableとなる。基準EN生成部15cは、信号出力部及び基準信号発生部に相当する。
図12に示すように、RD中継部12は、マルチプレクサ12a及び12b,フリップフロップ12c〜12d及びEN生成部12eを備えている。マルチプレクサ12aは、RD中継部12を介して入力されるデータである例えばidat0と、自身より1段上流側のRD中継部12より入力されるデータodat−1とを選択して、データodat0を出力する。マルチプレクサ12bは、RD中継部12を介して入力される基準EN信号例えばien0と、1段上流側のRD中継部12より入力される基準EN信号oen−1とを選択して、基準EN信号oen0として出力する。マルチプレクサ12a及び12bにおける入力選択は、図示しない制御部によって行われる。
データodat0は、フリップフロップ12cにおいてクロック同期されてから、下位側のRD中継部12に入力される。基準EN信号oen0は、フリップフロップ12e及び12dにおいて2段階でクロック同期されてから、前記RD中継部12に入力される。
図13に示すように、EN信号は、入力された信号レベルがハイからローに変化すると、その直後から、その直前にハイレベルを示した期間と同じ期間だけハイレベルを示すようにEN生成部12eにより出力される。但し、本実施形態では、EN信号がハイレベルを示す期間は全て1クロック周期であり、EN信号がハイレベルを示す期間が異なるケースについては第2実施形態にて説明する。EN生成部12eは、信号出力部及び信号中継部に相当する。
図14に示すように、EN生成部12eは、カウンタ30,比較ロジック部31,ANDゲート32及びNOTゲート33を備えている。カウンタ30の入力端子upには、マルチプレクサ12bを介してEN信号,ここではin_enableが入力される。カウンタ30は、上記信号の立上りエッジでアップカウントを行う。カウンタ30の入力端子downは、ANDゲート32の出力端子に接続されている。カウンタ30は、ANDゲート32が出力する信号の立上りエッジでダウンカウントを行う。
カウンタ30の出力端子outは、比較ロジック部31の入力端子inに接続されている。比較ロジック部31は、入力端子inの値が「0」でなければ、出力端子outに「1」を出力する。比較ロジック部31出力端子outは、ANDゲート32の入力端子の一方に接続されており、同入力端子の他方には、EN信号in_enableがNOTゲート33を介して与えられる。そして、ANDゲート32の出力端子は、次段のフリップフロップ12dの入力端子に接続される。
RD中継部12にデータが、例えば図15に示すように、P0,0,P1,0,P2,0,P3,0,P4,0,…P0,1,P1,1,P2,1,P3,1,P4,1,…とシリアルに入力された際に、信号pixel_skipの値が「1」であれば、RD中継部12がEN信号in_enableに応じて出力するデータは、P0,0,P2,0,P4,0,P6,0,…P0,2,P2,2,P4,2,P6,2,…となる。これが「前処理」に相当する。
再び図10を参照する。データ保持部14は、RD中継部12を介して入力されるデータをバッファ14aに転送するためのシリパラ変換・アドレス生成部14cを備えている。シリパラ変換・アドレス生成部14cは、FIFO34及びシリパラ変換コントローラ35を備えている。FIFO34は、シリパラ変換コントローラ35により制御される。このコントローラ35にも、前述した上位のコントローラより、同様の制御値が入力される。
RD中継部12を介して入力されるシリアルデータ;out_dataは、FIFO34によりパラレルに変換され、bufdataとしてバッファ14aに出力される。また、シリパラ変換コントローラ35は、バッファ14aに対し、アドレスbufaddr及びイネーブル信号bufenを出力する。
図16に示すように、WR中継部13側に対応するデータ保持部14は、バッファ14bの前段にアドレス生成部14dが配置される構成となる。この部分は、先行出願と同様である。
次に、本実施形態の作用について説明する。図17に示すように、外部メモリ18に配置されているビットマップとしての画像データは、「RGB」の三原色のピクセル毎にまとまって格納されている。これに対して、演算ブロック11が行う畳込み演算処理であるフィルタ処理は、それぞれの色毎に行われる。
そこで本実施形態では、RD中継部12が図18に示すように前処理を行うようにした。尚、図18では、複数の演算ブロック11に対応しているものを、上位側から下位側に、それぞれPE0,PE1,PE2で示している。説明を簡単にするため、外部メモリ18から読み出されるパラレルデータのサイズは4ビットであるとする。すると、例えばPE0によって最初に読み出されるデータは「RGBR」となり、順次「GBRG」,「BRGB」,「RGBR」と変化する。シリアルに変換されたデータは、「RGB」の繰り返しとなる。
これに対して、信号pixel_skipの値を「2」とすることで、PE0には「R」のみ,PE1は「G」のみ,PE2は「B」のみのデータが、それぞれに対応するRD中継部12によりピックアップされて読み込まれるようになる。
また図19は、4ピクセルの画像データに対応した場合を示す。この時は、信号pixel_skipの値を「3」とする。これにより、
PE0:データ0x0,4,8,c
PE1:データ0x1,5,9,d
PE2:データ0x2,6,a,e
PE3:データ0x3,7,b,f
のみが、それぞれに対応するRD中継部12によりピックアップされて読み込まれるようになる。
図20に示すタイミングチャートは、図15に示した前処理に対応する。PE0が外部メモリ18に対し、アドレスP0,0〜P3,0,P4,0,〜P7,0,P0,2〜P3,2,P4,2〜P7,2を順次出力してアクセスした場合、対応するインタフェースコントローラ23は、インターコネクト部17に、上記アドレスの出力期間に合わせて信号arvalidを出力する。すると、インターコネクト部17は、信号arvalidの最初の立ち上がりに応答して信号rareadyをハイレベルにする。そして、外部メモリ18から、パラレルデータP0,0〜P3,0,P4,0,〜P7,0,P0,2〜P3,2,P4,2〜P7,2が順次読み込まれ、インターコネクト部17は、データの入力期間に合せて信号rvalidをハイレベルにする。
また、パラシリ変換コントローラ23は、外部メモリ18に、最初のアクセスアドレスP0,0〜P3,0が出力されると、インターコネクト部17に出力する信号rreadyをハイレベルにし、最初のデータP0,0〜P3,0が読み込まれると同信号をローレベルにする。その後、データP4,0,〜P7,0,P0,2〜P3,2,P4,2〜P7,2が順次読み込まれると、各データの読み込みが完了するタイミングに合わせて信号rreadyをハイレベルにする。
パラシリ変換コントローラ23は、最初のデータP0,0〜P3,0の読み込みが完了すると、基準EN生成部15cに出力する基準EN信号data_enableをハイレベルにする。それに合わせて、基準EN生成部15cは、パラシリ変換コントローラ23に出力する信号addr_incをハイレベルにする。
基準EN生成部15cは、基準EN信号data_enableをハイレベルになった時点からEN信号oen0を1クロックだけハイレベルにし、以降は信号pixel_skipの値「1」に応じて1クロック措きにEN信号をハイレベルにする。すると、データP0,0,P1,0,P2,0,P3,0,P4,0,…P0,1,P1,1,P2,1,P3,1,P4,1,…がシリアルに入力された際に、PE0に対しては図15に示したケースと同様に、データP0,0,P2,0,P4,0,P6,0,P0,2,P2,2,P4,2,P6,2が前処理でピックアップされて入力される。
1段下位側となるPE1については、シリアルデータが1クロック遅れでRD中継部12に入力され、EN信号oen1は、EN信号oen0を2クロック遅延させたものとなる。その結果、PE1に対しては、データP1,0,P3,0,P5,0,P7,0,…P1,2,P3,2,P5,2,P7,2が前処理でピックアップされて入力される。
図21に示すPE2,PE3の処理は、PE0,PE1の処理と並列に実行される。したがって、これらの処理は、図20のタイミングチャートを、外部メモリ18に対するアドレスP0,1〜P3,1,P4,1,〜P7,1,P0,3〜P3,3,P4,3〜P7,3にシフトしたものとなる。これにより、PE2には、P0,1,P2,1,P4,1,P6,1,P0,3,P2,3,P4,3〜P6,3が前処理でピックアップされる。また、PE3には、P1,1,P3,1,P5,1,P7,1,P1,3,P3,3,P5,3〜P7,3が前処理でピックアップされる。
これにより、各演算ブロックPE0〜PE3で処理されるデータは図22に示すようになり、各演算ブロックPE0〜PE3は、対応するデータ保持部14を介して入力された画像データについて、そのまま畳込み演算を実行できる。そして、例えば図23に示すように、路上を人が歩行している画像に対応するデータが外部メモリ18に格納されており、1層目の演算が、異なる4領域をそれぞれ畳込んだものである場合、最終的な処理結果,つまり「人」の画像のみを抽出して認識する処理を、各層において各ピクセル1回の読出しで実行できる。
以上のように本実施形態によれば、複数の演算ブロック11は、階層的に接続された複数の処理層に対応してそれぞれ畳込み演算を実行する。複数のデータ保持部14は、複数の演算ブロック11とそれぞれ対をなして配置され、各演算ブロック11に入力されるデータ,及び各演算ブロック11が出力するデータを保持する。RD中継部12は、外部メモリ18と各データ保持部14との間に配置され、入力されるデータを中継して、各データ保持部14に出力する。
複数のWR中継部13は、各演算ブロック11と各データ保持部14との間に配置され、各演算ブロック11が出力するデータを中継して、対応するデータ保持部14に出力する。基準EN生成15c,EN生成部12eは、外部メモリ18より読出されたシリアルデータにおいて、対応する演算ブロック11が処理対象とするデータを示すEN信号を周期的に出力する。
RD中継部12は、外部メモリ18より読出されたデータ,又は自身よりも上位側に位置するRD中継部12より出力されたデータがシリアルに入力されると、EN信号に基づいて取込んだデータを一定の処理単位毎に纏める前処理を行い、対応するデータ保持部14又は自身よりも下位側に位置するRD中継部12に出力する。
このようにRD中継部12が前処理を実行することで、各演算ブロック11が前処理を行う場合よりも外部メモリ18に対するアクセス回数を削減できる。そして、各演算ブロック11は、データ保持部14を介して入力されるデータに対し、畳込み演算を一括して行うことが可能になる。したがって、畳込み演算をより高速に実行できる。
また、複数の演算ブロック11が外部メモリ18から読込むデータをパラレル/シリアル変換するインタフェース部15を備え、シリアルデータにおいて対応する演算ブロック11が処理対象とするデータを示す基準EN信号を周期的に出力する基準EN生成15cを、インタフェース部15に配置する。
そして、RD中継部12に、基準EN信号又は自身よりも上位側に位置するRD中継部12より入力されたEN信号を、自身よりも下位側に位置するRD中継部12に対し、クロック同期により出力するEN生成部12eを配置した。このように構成すれば、各演算ブロック11に対するEN信号を、基準EN信号を中継させることで順次生成することができる。
更に、データ処理装置10によりニューラルネットワークシステムを構成したので、例えば画像データを高速に処理して、その画像中の特定の部分を認識する等のアプリケーションに有効に適用できる。
(第2実施形態)
以下、第1実施形態と同一部分には同一符号を付して説明を省略し、異なる部分について説明する。第2実施形態はデータ処理装置を、畳込み処理後の画像サイズが変わらないように、画像データにパディングを行う場合に対応させたものである。例えば図24に示すように、先頭の4ビットのピクセルをそれぞれ2回読出し、それに合わせてEN信号は2ビット幅で生成出力する。これにより、図示しないRD中継部12Pが、図25に示すように、5ビットの通常画素Dの両端に、1ビットのパディング画素Pをそれぞれ追加する。
尚、パディング画素を例えばデータ「0」に固定して、つまりP=0として所謂ゼロパディングを行っても良いし、同じ通常画素Dを複数回読み出すことで、つまりP=Dとしてパディングする所謂近傍拡張を行っても良い。
また、図26は異なる例であるが、データP0,0〜P7,3に対し、信号pixel_skipの値「1」で近傍拡張によりパディングし、前処理を行った場合である。
図27に示す基準EN生成部41cは、図24に示すタイミングチャートに対応する基準EN信号を生成するもので、第1実施形態の構成に、加算器42〜44,乗算器45,カウンタ46,比較ロジック部47〜50,NORゲート51及びORゲート52を加えている。
信号pixel_skip,信号pad_sizeは、それぞれ加算器42,43により「1」が加算されて乗算器45に入力される。信号pad_sizeは、比較ロジック部50の入力端子in0にも入力される。信号data_enableは、カウンタ46の入力端子upにも与えられている。信号in_image_widthは、それぞれ加算器44により乗算器45の乗算結果と加算され、比較ロジック部49の入力端子in1に入力される。
加算器43の加算結果は、比較ロジック部47の入力端子in1にも入力される。カウンタ46の出力端子outは、比較ロジック部47,49の入力端子in0,比較ロジック部48の入力端子in1に接続されている。比較ロジック部47は、入力端子in0の値を入力端子in1の値で割った剰余を出力端子outに出力する。その出力結果は、比較ロジック部50の入力端子in1にも入力される。
比較ロジック部48,49は、入力端子in0の値が入力端子in1の値よりも大きい場合に出力端子outに「1」を出力する。比較ロジック部48,49の出力端子outは、それぞれNORゲート51の入力端子に接続されている。比較ロジック部50は、入力端子in0の値が入力端子in1の値よりも小さい場合に出力端子outに「1」を出力する。その出力結果は、ORゲート52の入力端子の一方に入力される。ORゲート52の入力端子の他方は、NORゲート51の出力端子に接続されている。そして、NORゲート51の出力端子は、フリップフロップ25の入力端子に接続されている。
信号pad_sizeの値はパディングデータの個別サイズを示し、信号in_image_widthの値はパディングデータの全体サイズを示す。図24に示す例では、
in_image_width=8
pixel_skip=3
pad_size=1
となる。
以上のように第2実施形態によれば、RD読出し中継部12Pは、対応する演算ブロック11が処理単位とするデータ列の両端に位置するデータを複数ビット連続して出力するパディング処理を行い、基準EN生成部41cは、基準EN信号がアクティブとなる期間を、処理対象とするデータが出力される期間に応じて可変設定する。このように構成すれば、RD読出し中継部12Pは、基準EN信号又はEN信号に従ってパディング処理を行うことが可能になる。
(第3実施形態)
第3実施形態は、外部メモリ18における画像データの配置が、図28に示すように、
アドレス0:データA〜Dの繰り返し
アドレス1:データE〜Hの繰り返し
アドレス2:データI〜Lの繰り返し
アドレス3:データM〜Pの繰り返し
アドレス4:データA〜Dの繰り返し

アドレス7:データM〜Pの繰り返し
となるように配置されているものとする。このような画像データの処理効率を高めるようにデータ処理装置51を構成する。
図29に示すように、16個の演算処理ユニット16(A)〜16(P)及び対応するインタフェース部15(A)〜15(P)を、並列に設ける。RD中継部12(D)と12(E)との間,12(H)と12(I)との間,12(L)と12(M)との間は接続せず、4分割した演算処理ユニット16により、それぞれデータを4ビットずつ処理する。演算処理ユニット16(A)〜16(D)は、アドレス0の次はアドレス4にアクセスする。
このように構成すれば、4分割した演算処理ユニット16が、それぞれアドレス0,1,2,3に1回アクセスするだけで、畳込みの処理対象となるデータを各データ保存部14に保存することができる。
(第4実施形態)
図30に示す第4実施形態のRD中継部12Aは、第1実施形態のRD中継部12におけるEN生成部12eをフリップフロップに置き換えたものである。第1実施形態のようにパディングを行わず、EN信号のハイレベル期間が全て等しくなる場合には、フリップフロップ12eによりクロック同期をとって中継するのみで必要十分である。したがって、RD中継部12Aがより簡単に構成できる。
(その他の実施形態)
畳込み演算の処理対象は、画像データに限ることはない。
データ処理装置によって、必ずしもニューラルネットワークを構成する必要は無い。
本開示は、実施例に準拠して記述されたが、本開示は当該実施例や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素のみ、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。
図面中、10は演算処理装置、11は演算ブロック、12はRD中継部、13はWR中継部、14はデータ保持部、18は外部メモリを示す。

Claims (4)

  1. 階層的に接続された複数の処理層に対応して、それぞれ畳込み演算を実行する複数の演算ブロック(11)と、
    前記複数の演算ブロックとそれぞれ対をなして配置され、前記複数の演算ブロックに入力されるデータ,及び前記複数の演算ブロックが出力するデータを保持する複数のデータ保持部(14)と、
    外部メモリ(18)と前記複数のデータ保持部との間に配置され、入力されるデータを中継して、前記複数のデータ保持部に出力する複数の読出し中継部(12,12P,12A)と、
    前記複数の演算ブロックと前記複数のデータ保持部との間に配置され、前記複数の演算ブロックが出力するデータを中継して、前記複数のデータ保持部に出力する複数の書込み中継部(13)と、
    前記外部メモリより読出されたシリアルデータにおいて、対応する演算ブロックが処理対象とするデータを示す有効信号を周期的に出力する信号出力部(12e,15c,41c)とを備え、
    前記読出し中継部は、前記外部メモリより読出されたデータ,又は自身よりも上位側に位置する読出し中継部より出力されたデータがシリアルに入力されると、前記有効信号に基づいて取込んだデータを一定の処理単位毎に纏める前処理を行い、対応するデータ保持部又は自身よりも下位側に位置する読出し中継部に出力するデータ処理装置。
  2. 前記読出し中継部(12P)は、対応する演算ブロックが処理単位とするデータ列の両端に位置するデータを複数ビット連続して出力するパディング処理を行い、
    前記信号出力部(41c)は、前記有効信号がアクティブとなる期間を、処理対象とするデータが出力される期間に応じて可変設定する請求項1記載のデータ処理装置。
  3. 前記複数の演算ブロックとそれぞれ対をなして配置され、前記複数の演算ブロックが外部メモリから読込むデータをパラレル/シリアル変換すると、当該シリアルデータにおいて対応する演算ブロックが処理対象とするデータを示す基準有効信号を周期的に出力する複数のインタフェース部(15,41)を備え、
    前記信号出力部は、前記インタフェース部に配置され、基準有効信号を発生する基準信号発生部(15c,41c)と、
    前記読出し中継部に配置され、前記基準有効信号又は自身よりも上位側に位置する読出し中継部より入力された有効信号を、自身よりも下位側に位置する読出し中継部に対し、クロック同期により出力する信号中継部(12e)とを備える請求項1又は2記載のデータ処理装置。
  4. 請求項1から3の何れか一項に記載のデータ処理装置を備えて構成されるニューラルネットワークシステム。
JP2017006059A 2017-01-17 2017-01-17 データ処理装置及びニューラルネットワークシステム Active JP6747305B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017006059A JP6747305B2 (ja) 2017-01-17 2017-01-17 データ処理装置及びニューラルネットワークシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017006059A JP6747305B2 (ja) 2017-01-17 2017-01-17 データ処理装置及びニューラルネットワークシステム

Publications (2)

Publication Number Publication Date
JP2018116419A JP2018116419A (ja) 2018-07-26
JP6747305B2 true JP6747305B2 (ja) 2020-08-26

Family

ID=62984148

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017006059A Active JP6747305B2 (ja) 2017-01-17 2017-01-17 データ処理装置及びニューラルネットワークシステム

Country Status (1)

Country Link
JP (1) JP6747305B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7162956B2 (ja) * 2019-09-02 2022-10-31 株式会社デンソー データ処理装置及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0567060A (ja) * 1991-08-02 1993-03-19 Iizeru Robotsuto Vision:Kk ニユーロデバイス
JPH0652132A (ja) * 1992-07-28 1994-02-25 Mitsubishi Electric Corp 並列演算半導体集積回路装置およびそれを用いたシステム
JPH0756605A (ja) * 1993-08-17 1995-03-03 Komatsu Ltd 制御装置の制御パラメータ調整装置
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置

Also Published As

Publication number Publication date
JP2018116419A (ja) 2018-07-26

Similar Documents

Publication Publication Date Title
JP6645252B2 (ja) 演算処理装置
JP5376920B2 (ja) コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP6945986B2 (ja) 演算回路、その制御方法及びプログラム
CN109784489B (zh) 基于fpga的卷积神经网络ip核
US20210117810A1 (en) On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
CN108665063B (zh) 用于bnn硬件加速器的双向并行处理卷积加速系统
JP6365258B2 (ja) 演算処理装置
CN107844832A (zh) 一种信息处理方法及相关产品
CN107633297B (zh) 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器
US20210019594A1 (en) Convolutional neural network accelerating device and method
WO2019136764A1 (zh) 卷积器及其所应用的人工智能处理装置
JP6945987B2 (ja) 演算回路、その制御方法及びプログラム
JP6684951B2 (ja) 人工知能推論演算装置
WO2019216376A1 (ja) 演算処理装置
CN112905530B (zh) 片上架构、池化计算加速器阵列、单元以及控制方法
CN111582465B (zh) 基于fpga的卷积神经网络加速处理系统、方法以及终端
JP2020068027A (ja) アンサンブル学習ベースの画像分類システム
CN117217274B (zh) 向量处理器、神经网络加速器、芯片及电子设备
CN115221102A (zh) 用于优化片上系统的卷积运算操作的方法和相关产品
CN114462587B (zh) 一种用于光电混合计算神经网络的fpga实现方法
JP6747305B2 (ja) データ処理装置及びニューラルネットワークシステム
US20220113944A1 (en) Arithmetic processing device
CN111028136A (zh) 一种人工智能处理器处理二维复数矩阵的方法和设备
JP6631262B2 (ja) 演算処理装置
KR102667134B1 (ko) 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200529

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200720

R151 Written notification of patent or utility model registration

Ref document number: 6747305

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250