JP6823495B2 - 情報処理装置および画像認識装置 - Google Patents

情報処理装置および画像認識装置 Download PDF

Info

Publication number
JP6823495B2
JP6823495B2 JP2017034348A JP2017034348A JP6823495B2 JP 6823495 B2 JP6823495 B2 JP 6823495B2 JP 2017034348 A JP2017034348 A JP 2017034348A JP 2017034348 A JP2017034348 A JP 2017034348A JP 6823495 B2 JP6823495 B2 JP 6823495B2
Authority
JP
Japan
Prior art keywords
filter data
data
layer
storage area
filter
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
JP2017034348A
Other languages
English (en)
Other versions
JP2018142049A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2017034348A priority Critical patent/JP6823495B2/ja
Priority to US15/881,056 priority patent/US11507797B2/en
Publication of JP2018142049A publication Critical patent/JP2018142049A/ja
Application granted granted Critical
Publication of JP6823495B2 publication Critical patent/JP6823495B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • G06F18/2193Validation; Performance evaluation; Active pattern learning techniques based on specific statistical tests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/245Classification techniques relating to the decision surface
    • 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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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/94Hardware or software architectures specially adapted for image or video understanding

Description

本発明は高信頼に情報を処理する回路に関する。
近年、一般画像認識に畳込みニューラルネットワークを用いることで高い認識率を達成可能であることがわかり、注目を集めている(例えば特許文献1参照)。一般画像認識とは、一枚の画像に映る物体の種類を分類し識別する問題である。畳込みニューラルネットワークとは、入力情報の特徴量抽出を行うパーセプトロンを多層に組み合わせることで、特徴量抽出を多重に行い高い認識率を達成可能な機械学習技術である。
畳込みニューラルネットワークが機械学習アルゴリズムの中でも特に有効であることが最近になり判明した背景に、計算機の性能向上が挙げられる。畳込みニューラルネットワークにおいて高い認識率を達成するためには、中間層のパーセプトロンのフィルタデータを何千枚/何万枚もの画像データを用いて訓練し、最適化する必要がある。フィルタデータのデータ数を増やすほど画像の詳細な分類と高い認識率を達成可能となる。したがって、多量の画像を用いて多量のフィルタデータを訓練するために高い計算性能が必要であり、近年のサーバにおけるマルチコア技術やGPGPU(General−purpose computing on graphics processing units)技術など計算機の発展によって畳込みニューラルネットワークによる一般画像認識が可能となった。
畳込みニューラルネットワークの有効性が広く認知されたことで畳込みニューラルネットワークの研究は爆発的に広まり、様々な応用が検討されている。一例を挙げると、自動車の自動運転技術の開発において、周囲の物体を認識するために畳込みニューラルネットワークを用いることが検討されている。
特開2013−69132号公報
しかしながら、自動車などの組込み用途においては、サーバ環境と比較すると半導体チップの計算性能は非常に低く制限される。このため、こうした組込み用途で畳込みニューラルネットワークを実装するにあたり、認識率を達成するために必要な多量のフィルタデータをすべて搭載するためには記憶領域の容量が不足する問題点があった。そこで本発明の目的は畳込みニューラルネットワークの認識精度を落とすことなく全てのフィルタデータを組込み用途に搭載可能な画像認識装置を開発することである。
本発明の一側面は、データを受け付ける入力手段と、データに対して処理を行う畳込みニューラルネットワークを構成する演算ユニットと、演算ユニットで用いるデータを記憶する記憶領域と、処理の結果を出力する出力手段と、を備える情報処理装置である。畳込みニューラルネットワークは、第1の内積演算を含む第1の処理を行う第1の中間層と、第2の内積演算を含む第2の処理を行う第2の中間層と、を備え、第1の内積演算のための第1のフィルタデータと、第2の内積演算のための第2のフィルタデータのビット幅が異なるように構成される。
本発明の他の一側面は、画像を受け付ける入力手段と、画像を処理する演算ユニットと、演算ユニットで用いるデータを記憶する記憶領域と、処理の結果を出力する出力手段と、を備え、画像に写っている物体の種類を分類し識別する画像認識装置である。演算ユニットは、画像の処理のために、画像の特徴量抽出を行うフィルタの畳込み演算を行う複数の階層を有し、前の階層で得られた畳込み演算の結果に対して、後の階層で更に畳込み演算を行い、畳込み演算に用いられるフィルタデータのデータタイプは、少なくとも2つの異なるデータタイプが含まれるように、階層毎に定める。
本発明のさらに他の一側面は、データを受け付け、データに対して処理を行い、処理の結果を出力する畳込みニューラルネットワークであって、第1の内積演算を行う第1の中間層と、第2の内積演算を行う第2の中間層と、を備える畳込みニューラルネットワークのパラメータ設定方法である。この方法では、第1の内積演算のための第1のフィルタデータのビット幅と、第2の内積演算のための第2のフィルタデータのビット幅を独立に設定するパラメータ設定処理を含む。
本発明によれば、記憶領域に搭載すべきフィルタデータのデータ量の低減が可能となる。前述した以外の課題、構成及び効果は、以下の実施の形態の説明により明らかになる。
実施例における畳込みニューラルネットワークの構成を示す概念図である。 実施例におけるデータタイプの定義例を示す概念図である。 実施例におけるデータタイプとデータ容量を比較例と比較した表図である。 実施例1における画像認識装置100の構成を示すブロック図である。 実施例1におけるフィルタデータ記憶領域107の構成を示す概念図である。 実施例1における畳込み層のフィルタデータのビット数と画像認識装置の認識精度の関係を示すグラフ図である。 実施例における各中間層のフィルタデータのビット数と画像認識装置の認識精度の関係を示すグラフ図である。 実施例におけるそれぞれの中間層のフィルタデータのビット数の決定処理フローを示すフロー図である。 実施例における演算ユニット内部のデコード演算モジュールと畳込み演算・全結合演算モジュールの構成を示すブロック図である。 実施例におけるデコード演算モジュールが畳込み層のフィルタデータをデコードする様子を示すタイミングチャートである。 実施例における画像認識装置の処理手順を示すフローチャートである。 実施例における畳込み演算の処理を示すフロー図である。 実施例における全結合演算の処理を示すフロー図である。 実施例におけるフィルタデータのデコード処理を示すフロー図である。 図3に示したフィルタデータ記憶領域の変化の形態を示す概念図である。 図6に示したフィルタデータのビット数を決定する処理の他の形態例を示すフロー図である。 図14に示したフィルタデータのビット数を決定する処理の変形例を示すフロー図である。
以下、実施例を図面に基づいて説明する。なお、実施例を説明する全図において、同一の機能有する部材には同一の符号を付し、その繰り返しの説明は特に必要な場合を除き省略する。
以下で説明される実施例の一例を挙げるならば、複数の中間層を持つ畳込みニューラルネットワークであり、それぞれの中間層でフィルタデータのデータタイプを変更しビット幅を可変とする。データタイプのビット幅は畳込みニューラルネットワークの認識率を維持することが可能なフィルタデータの演算精度を見極めることで決定する。
図1Aは、実施例における、畳込みニューラルネットワークの処理の概念を示す図である。実施例では、ネットワークパラメータをネットワーク全体で一律に削減するのではなく、階層ごとにネットワークパラメータの有効精度を求め、有効精度のみを保存するように構成する例を説明している。以下の実施例では処理対象を画像データとしているが、これに限るものではない。
実施例での畳込みニューラルネットワークは入力層IN、第1の畳込み層CN1、第2の畳込み層CN2、全結合層IP1、出力層OUTを持つこととする。層の数は任意に変更することができる。また層の種類も上記には限らず、処理にパラメータを用いるものであれば本実施例を適用できる。入力層INは入力する画像101をを正規化したものである。出力層OUTは第2の全結合層IP2としている。なお、通常は畳込み層にはプーリング層や活性化層が付随するが、ここでは省略する。この畳込みニューラルネットワークには、画像101が入力され、認識結果102が出力される。
畳込み層は、入力された画像101から、認識するために必要な情報(特徴量)を抽出する。特徴量を抽出するために必要な畳込み処理(一種のフィルタリングのための内積演算)のために、畳込み層はパラメータ(フィルタデータ)を使用する。プーリング層は、畳み込み層で得られた情報を要約するとともに、データが画像の場合には、位置に対する不変性を高める。
全結合層IP1、IP2は、抽出された特徴量を使って、その画像がどのカテゴリに属するかを判断する、つまりパターン分類を行う。各全結合層は多層パーセプトロン(multi−layer perceptron)の一つの層を構成する。概念的には、一つの全結合層には複数のユニットが一列に並んでいると考えることができる。1つのユニットは、前の全結合層の全てのユニットと結合されている。結合一つ一つに対しては、パラメータ(重みデータ)が割り当てられている。後の全結合層のユニットの入力は、前の全結合層の入力と重みデータの内積に所定のバイアスを加算したものとなる。本明細書では、これらのフィルタデータ、重みデータ、バイアスなどを総称してフィルタデータということにする。本実施例では、ニューラルネットワークを構成するそれぞれの層でフィルタデータのデータタイプを変更し、異なるビット幅を使用する。
図1Bは、タイプ別にビット幅を定義した様子を示す概念図である。一例として、Type1は小数点以下5bitと符号の1bitで合計6bitである。同様に、Type2は小数点以下3bit、Type3は小数点以下3桁から3bit、Type4は小数点以下4桁から3bit、Type5は小数点以下2桁から2bitのように定義している。以下の実施例では、必要な演算精度に応じて、各層のビット幅を選択する。
図1Cは、図1Aに示す各層で異なるビット幅を用いた例と、均一にデータ削減をして同じビット幅を用いた例とで、データ容量の差を示した表図である。各層で異なるビット幅を用いると、データ容量を節減することが期待できる。
各層でビット幅をどのように定めるかは、(A)演算に必要となるパラメータの数が多い層では高精度が必要となるため、演算精度を相対的に多くする、(B)ネットワークの階層が進むほど必要な演算精度は自然と低下するため、演算精度を相対的に少なくする、(C)物体のエッジ検出を行う層では画像の階調を多く必要としないため演算精度を相対的に少なくし、色の情報を用いて物体の検出を行う層では演算精度を相対的に多くする、等の手法がある。さらに以下の実施例では、認識精度をフィードバックしてデータタイプを決定する方式も説明している。この方式では、階層ごとにネットワークパラメータの有効精度を求め、有効精度を考慮してデータタイプを決める。
図2に、本実施例における画像認識装置100の構成を示す。画像認識装置100の入力は画像101であり、出力は画像101の認識結果102である。画像認識装置100は内部に演算データ記憶領域103と演算ユニット104を持ち、入力ポートと出力ポートと演算データ記憶領域103と演算ユニット104はすべてバス105で接続されており、バス105を通じて演算データは転送される。
演算データ記憶領域103の内部は一時記憶領域106とフィルタデータ記憶領域107で構成される。一時記憶領域106には、画像認識装置100で実行される演算の途中結果が格納される。フィルタデータ記憶領域107には、畳込みニューラルネットワークの中間層のフィルタデータが予め格納されている。
演算ユニット104は、畳込みニューラルネットワークの演算に必要な演算モジュールで構成されている。
演算制御モジュール108は、畳込みニューラルネットワークのアルゴリズムにしたがって他の演算モジュールや演算データのフローを制御するモジュールである。
デコード演算モジュール109はフィルタデータ記憶領域に圧縮され格納されたフィルタデータをデコードするモジュールである。後に詳細に説明する。
畳込み演算・全結合演算モジュール110は畳込みニューラルネットワークにおける畳込み演算もしくは前結合演算を実行するモジュールである。畳込み演算と全結合演算の内容は、ともに内積演算であるため1つのモジュールで実行可能である。また畳込み層や全結合層が複数枚あったとしても、1つの畳込み演算・全結合演算モジュール110で実行可能である。
活性化演算モジュール111は、畳込みニューラルネットワークの活性化層の演算を実行するモジュールである。
プーリング演算モジュール112は、畳込みニューラルネットワークにおけるプーリング層の演算を実行するモジュールである。
正規化演算モジュール113は、畳込みニューラルネットワークにおける正規化層の演算を実行するモジュールである。
最大値演算モジュール114は、畳込みニューラルネットワークにおける出力層の最大値を検出し認識結果102を得るためのモジュールである。これら演算モジュールのなかで本実施例の内容に深く関わるモジュールはデコード演算モジュール109と畳込み演算・全結合演算モジュール110であり、これら2つのモジュールについて後に詳細に説明する。
自動車などの組込み用途においては、例えば、画像認識装置100はFPGA(field-programmable gate array)のような半導体集積回路で構成することができる。この半導体集積回路は、例えば1チップで構成され、汎用用途のCPU(Central Processing Unit)と協働して、主に画像に関する処理を行う。演算データ記憶領域103は、半導体メモリであって、例えばSRAM(Static Random Access Memory)のような高速のメモリが用いられる。また、画像認識装置100はFPGAではなく、記憶装置に格納されたプログラムがCPUによって実行されることで、定められた処理を他のハードウェアと協働して行うように構成することもできる。なお、本実施例では画像認識処理を例に説明しているが、本実施例は他の処理に用いることも可能であり、特に用途を限定するものではない。
この画像認識装置100がFPGAで構成される場合には、例えば演算データ記憶領域103はSRAMで構成され、演算ユニット104はプログラム可能なロジックセルで構成される。プログラムのためのデータは、例えばフラッシュメモリのような外部記憶装置(図示せず)から演算データ記憶領域103のコンフィグレーションメモリと呼ばれる領域(図示せず)にロードされ、演算ユニットの各モジュールを実現するようにロジックセルを設定する。
図3は、本実施例におけるフィルタデータ記憶領域107の構成を示す図である。フィルタデータ記憶領域には、畳込みニューラルネットワークにおける中間層の畳込み層と全結合層のフィルタデータが予め格納されている。本実施例での畳込みニューラルネットワークは畳込み層を2枚と全結合層を1枚持つこととする。フィルタデータ記憶領域107は、畳込み層1のフィルタデータ記憶領域120aと畳込み層2のフィルタデータ記憶領域120bと全結合層のフィルタデータ記憶領域120cとで構成される。
それぞれのフィルタデータ記憶領域120は内部がバンク121によって分割されアドレス122によりアドレス番号が振られている。これらバンク121の構成やアドレス122の振り方は画像認識装置100の物理的構成に依存しており、フィルタデータ記憶領域107の中で共通している。これに対して、それぞれのフィルタデータ記憶領域120で保存されるフィルタデータ124のビット幅123は異なる。
畳込み層1のフィルタデータ記憶領域120aのフィルタデータ124aは一つの番地に3つフィルタデータaが格納可能であるのに対して、畳込み層2のフィルタデータ記憶領域120bのフィルタデータ124bは一つの番地に1つ、畳込み層3のフィルタデータ記憶領域120cのフィルタデータ124cは一つの番地に2つ格納可能である。これは各畳込み層の演算に必要な演算精度を見極め、演算精度を満足するビット幅123のみを保存しているためである。この演算精度は畳込み層1、畳込み層2、全結合層で全て異なる場合がある。仮に演算精度の見極めをせずにフィルタデータのデータタイプを決めたとすると、アドレスのビット幅に適合したビット幅のデータタイプを用いることになる。一つのアドレスにつき一つのデータを格納可能なデータタイプを用いれば、畳込み層1では3倍、全結合層では2倍の記憶領域が必要となる。それぞれの中間層で必要な演算精度を層毎に個別に見極めることで、必要なビット幅のみを保存することができ、記憶領域を節約している。
図4は、本実施例における畳込み層1のフィルタデータのビット数130と画像認識装置の認識精度131の関係を示す図である。横軸が畳込み層1のフィルタデータのビット数130で、縦軸が画像認識装置の認識精度131である。畳込みニューラルネットワークの学習の段階では、画像認識装置100の認識精度がアプリケーションの要求する要求認識精度132を上回ることを目標にフィルタデータを訓練する。このとき、32bit幅の単精度浮動小数点数をフィルタデータのデータタイプに用いることが一般的である。これは畳込みニューラルネットワークの学習アルゴリズムではフィルタデータの微分値など微小量を扱うためである。
しかしながら、画像認識装置100に畳込みニューラルネットワークを実装するにあたりフィルタデータのデータタイプを学習に用いたのと同じ32bit幅の単精度浮動小数点数を用いると演算精度が余剰である。
図4に示すように、畳込み層1のフィルタデータのビット数130を32bit、31bit、…、(na+2)bit、 (na+1)bit、 na bitと削減したとしても画像認識装置100の認識精度がアプリケーションの要求する要求認識精度132を下回ることはない。フィルタデータのビット数na bitから(na-1)bitに削減したときに画像認識装置100の認識精度がアプリケーションの要求認識精度132をはじめて下回ったとすれば、畳込み層1のフィルタデータのビット数130の必要ビット数133aはna bitであることがわかる。したがって、畳込み層1のフィルタデータのビット数130はna bit以上である必要があり、畳込み層1のフィルタデータ記憶領域120aにおけるフィルタデータ124aの演算ビット幅123aはna bitとすることは妥当である。
図5は、本実施例における各中間層のフィルタデータのビット数140と画像認識装置の認識精度131の関係を示す図である。この図には3つのグラフが描画されており、それぞれ畳込み層1のフィルタデータのビット数のみ削減するグラフ141と、畳込み層1のフィルタデータのビット数のみ削減するグラフ142と、畳込み層1のフィルタデータのビット数のみ削減するグラフ143である。畳込み層1のフィルタデータのビット数のみ削減するグラフ141は図4に示したものと同一のものを省略して示したものである。
畳込み層2のフィルタデータのビット数のみ削減するグラフ142は、畳込み層2のフィルタデータのみを畳込み層1の場合と同様にフィルタデータのビット数を削減した場合の画像認識装置の認識精度131の変化を示すグラフである。畳込み層2のフィルタデータのビット数がnb bitまでは画像認識装置の認識精度131がアプリケーションの要求認識精度132を上回るが、(nb−1)bitでは下回る。したがって、畳込み層2のフィルタデータのビット数はnb bit以上である必要があり、畳込み層2のフィルタデータ記憶領域120bにおけるフィルタデータ124bの演算ビット幅123bはnb bitとする。
同様に、全結合のフィルタデータのビット数のみ削減するグラフ143を着目すると、nc bitでは画像認識装置の認識精度131が要求認識精度132を上回り、(nc-1)bitでは下回る。このため、畳込み層2のフィルタデータのビット数はnb bit以上である必要があり、全結合層のフィルタデータ記憶領域120cにおけるフィルタデータ124cの演算ビット幅123cはnc bitとする。それぞれの中間層の演算ビット幅na、 nb、 ncは必ずしも一致しない事実があり、画像認識装置100のフィルタデータ記憶領域107にフィルタデータを格納する場合は、それぞれの中間層の演算ビット幅na、 nb、 ncの大きさに応じてフィルタデータを保存することで記憶領域を効率的に利用可能である。
図6は、本実施例におけるそれぞれの中間層のフィルタデータのビット数の決定処理フローを示す図である。このフローでは、最初所定ビット(例えば32bit)でフィルタデータを通常の方法で学習し、その後、各中間層のフィルタデータのビット数を減少させ、要求認識精度が維持できるかどうかを確認していく。そして、要求認識精度が維持できるできるだけ小さなビット数で、各中間層のフィルタデータのビット数を設定する。このため、各層において図6の処理を行う。
ステップ150: 畳込みニューラルネットワークの学習により、フィルタデータすべてを32bitの単精度浮動小数点数で学習する。
ステップ151: 演算ビット数を n=31 bitに設定する。
ステップ152: 着目している中間層のフィルタデータすべての演算ビット数を演算精度まで削減する。ステップ150で求めた32bitの単精度浮動小数点数のデータタイプのフィルタデータのLSB(Least significant bit)から(32−n)bitをすべて”0”とする。このときフィルタデータの丸め方として最近点丸めを用いる。
ステップ153: 着目している中間層の演算ビット数を削減した畳込みニューラルネットワークの認識精度を求める。学習テストデータとして定義されるすべての画像データの認識をバッチ処理で行い、認識精度を取得する。
ステップ154: ステップ153で求めた認識精度がアプリケーションの要求認識精度132以上でかつ演算ビット数が0でないならステップ155に進む。そうでないなら、ステップ156に進む。
ステップ155: n=n−1とし、演算ビット数を1bit削減する。
ステップ156: n bitで要求認識精度132を満足しなかったため、(n+1)bit以上をフィルタデータのビット数に決定する。
図7は、本実施例における演算ユニット104内部のデコード演算モジュール109と畳込み演算・全結合演算モジュール110の構成を示す図である。演算ユニット104は複数の畳込み演算・全結合演算モジュール110を含み、全体で1つの層を構成する。また、各演算モジュールを相互接続するバス160が存在し、各演算モジュールが演算データを交換するために使用される。演算ユニット104内部のバスは画像認識装置100内部のバス105と接続しており、演算データ記憶領域103と演算データの交換が可能である。畳込み演算・全結合演算モジュール110は、1つのモジュールを、入力レジスタ163に格納するデータを変更してパラメータを変更することにより、異なる中間層として利用することできる。ただし、複数備えていても良い。
デコード演算モジュール109は内部にフィルタデータを一時保存するためのレジスタ162と、フィルタデータのデコードを行うためのデコード処理部161を持つ。畳込み演算・全結合演算モジュール110は内積演算を実行する演算モジュールであり、入力レジスタ163と乗算器164と加算器165と出力レジスタ166を持つ。入力レジスタ163は計(2N+1)個で奇数個あり、フィルターデータを保持するレジスタFと、前の層の演算結果を保持するレジスタDを含む。入力レジスタ163は、演算ユニット104内部のバス160と接続しバス160から入力データを受け取り保持する。これら入力レジスタ163は1個をのぞき全てが乗算器164の入力に接続し、残りの1個は加算器165の入力に接続する。乗算器164の入力に接続する2N個の入力レジスタ163は半数のN個+1個(レジスタF)は中間層のフィルタデータを受け取って保持し、残り半数のN個(レジスタD)は演算データ記憶領域103における一時記憶領域106に保存された演算中間結果を受け取って保持する。畳込み演算・全結合演算モジュール110はN個の乗算器と加算器を持つ。N個の乗算器はそれぞれがフィルタデータと演算中間結果の積を計算し出力する。N個の加算器は、N個の乗算器の結果と1個の入力レジスタの総和を計算し、その結果は出力レジスタ166に保存される。出力レジスタ166に保存された演算データは演算ユニット104内部のバス160を通じて他の記憶領域もしくは演算モジュールに転送される。
図8は、本実施例におけるデコード演算モジュール109が畳込み層1のフィルタデータ124aをデコードする様子を示すタイミングチャートである。本タイミングチャートでデコードの対象となるデータは、図3に示した畳込み層1のフィルタデータ記憶領域120aのi番目のバンク121でj番目のアドレス122に格納されている3つのフィルタデータであるデータp 124a_p、 データq 124a_q、 データr 124a_rである。
まず最初に、演算ユニット104内部の演算制御モジュール108がアドレス122に格納されている3つのフィルタデータp、 q、 rをデコード演算モジュール109内部のレジスタ162に転送するよう指示を出す。これにより1サイクル目170に演算ユニット内部のバス160はアドレス122に格納されているデータと同期し、2サイクル目171にはデコード演算モジュール109内部のレジスタ162のデータとバス160のデータが同期する。
デコード演算モジュール109内部のデコード処理部161はフィルタデータ124aのビット幅123aの情報を用いて上位からna bitが1つ目のデータp 124a_pであることを検出し、バス160を通じて畳込み演算・全結合演算モジュール110内部の入力レジスタ163pにデータp 124a_pを転送する。またデコード処理部161はデータp 124a_pの隣のna bitが2つ目のデータq 124a_qであることと更に隣のna bitが3つ目のデータr 124a_rであることを検出し、それぞれを畳込み演算・全結合演算モジュール110内部の入力レジスタ163q、 163rに転送する。これによって3サイクル目にバス160はデータp 124a_pと同既し、4サイクル目にバス160と入力レジスタ163pはそれぞれデータq 124a_qとバス160と同期し、5サイクル目にバス160と入力レジスタ163qはそれぞれデータr 124rとバス160と同期し、6サイクル目には入力レジスタ163rはバス160と同期する。
なお、上記で用いるビット幅の情報は、図1に示したような各層毎のデータタイプの情報を、演算データ記憶領域103に記憶しておき、デコード演算モジュール109が参照することによって実現される。あるいは、情報は一括して演算制御モジュール108が管理することにしてもよい。また、この情報は、各層のフィルタのフィルタデータ個数mや、該当するフィルタデータが一つのアドレスに格納されている個数nを含んでいても良い。また、各レジスタの大きさや、その他の記憶領域の管理に関する情報を含んでいても良い。
図9は、本実施例における画像認識装置100の処理手順を示すフローチャートである。
ステップ180: 画像認識装置100は入力データである画像101を受け取り、演算データ記憶領域103内部の一時記憶領域106に格納する。画像データは、畳込みニューラルネットワークにおける入力層INに相当する。
ステップ181: 畳込み演算・全結合演算モジュール110を用いてフィルタデータによる特徴量抽出を行う。畳込みニューラルネットワークにおける畳込み層に相当する。詳細は後ほど説明する。
ステップ182: 演算データ記憶領域103内部の一時記憶領域106に格納されている畳込み演算の結果や全結合演算の結果に対して、活性化演算モジュール111やプーリング演算モジュール112を適用する。畳込みニューラルネットワークにおける活性化層やプーリング層に相当する演算を実行する。
ステップ183: 演算データ記憶領域103内部の一時記憶領域106に格納されている中間層データに対して、正規化演算モジュールを適用する。畳込みニューラルネットワークにおける正規化層に相当する演算を実行する。
ステップ184: 畳込み演算・全結合演算モジュール110を用いてフィルタデータによる特徴量抽出を行う。畳込みニューラルネットワークにおける全結合層に相当する。詳細は後ほど説明する。
ステップ185: 出力層の中で最大値を持つ要素のインデックスを求め、認識結果102として出力する。
図10は、本実施例における畳込み演算の処理フロー181を示す図である。
ステップ190: ループ変数を i=1 と初期化する。
ステップ191: 畳込み層のi枚目のフィルタを選択する。
ステップ192: フィルタデータのデコードを行う。詳細は後ほど説明する。
ステップ193: 演算データ記憶領域103内部の一時記憶領域106に格納されている中間層のデータを、畳込み演算・全結合演算モジュール110の入力レジスタ163にロードする。
ステップ194: 畳込み演算・全結合演算モジュール110を用いて内積演算を実行する。出力レジスタ166に格納されている出力データは演算データ記憶領域103内部の一時記憶領域106に格納する。
ステップ195: すべての中間層データに対してフィルタを適用したならばステップ196に進む。そうでないなら、フィルタを適用する対象の中間層データを変更し、ステップ192に進む。
ステップ196: すべてのフィルタデータの処理が完了したならば、畳込み演算の処理フローを終了する。そうでないなら、ステップ197に進む。
ステップ197: ループ変数を i=i+1 と更新する。
以上の処理により、1つの畳込み層に対する処理が行われる。
図11は、本実施例における全結合演算の処理フロー184を示す図である。図11の処理には、図10の処理と同じ畳込み演算・全結合演算モジュール110を用いることができ、処理の構成も類似している。本質的に同一の構成には同一の符号を付している。
ステップ200: 全結合層のi枚目のフィルタを選択する。
ステップ201: すべてのフィルタデータの処理が完了したならば、全結合演算の処理フローを終了する。そうでないなら、ステップ197に進む。
以上の処理により、1つの全結合層に対する処理が行われる。
図12は、本実施例におけるフィルタデータのデコード処理フローのステップ192を示す図である。この処理のタイミングは図8に示したものに対応する。デコード処理フローのステップ192の結果、図7で示したレジスタFのそれぞれに、フィルタデータの格納が完了する。
ステップ210: 該当するフィルタのフィルタデータ個数を参照し、m個と設定する。また、該当するフィルタデータが一つのアドレスに格納されている個数を参照し、n個とする。
ステップ211: 外側ループ変数jを j=1 と初期化する。
ステップ212: 演算制御モジュール108はj番目のアドレスに格納されたフィルタデータすべてを、画像認識装置100内部のバス105や演算ユニット104内部のバス160を通じてデコード演算モジュール109内部のレジスタ162に転送する。これにより、デコード演算モジュール109はn個のフィルタデータを取得する。
ステップ213: 内側ループ変数iを i=1 と初期化する。
ステップ214: デコード演算モジュール109が取得したn個のデータのうち、i番目のデータを畳込み演算・全結合演算モジュール110内の(2*((j−1)*n+i)−1)番目の入力レジスタ163にロードする。これにより、畳込み演算・全結合演算モジュール110内部の乗算器164は一時記憶領域106に格納されている演算中間層のデータとフィルタデータを適切に乗算し、畳込み演算・全結合演算を実行可能である。
ステップ215: i≦nならばステップ216に進み、そうでないならステップ217に進む。
ステップ216: 内側ループ変数iをi=i+1と更新する。
ステップ217: j≦mならばステップ218に進み、そうでないならフィルタデータのデコード処理フローを終了する。
図13は図3に示したフィルタデータ記憶領域120の変化の形態を示す図である。図13が示すように、フィルタデータがアドレスの境界220をまたぐようにしてもよい。演算制御モジュール108がデータ幅n1を管理していれば、各アドレス122からデータ毎に切り出すことができる。
図14は図6に示したフィルタデータのビット数を決定する処理フローの他の形態例を示す図である。実施例1では浮動小数点型のフィルタデータを用いたが、実施例3では固定小数点型のフィルタデータを用いる。
ステップ230: 着目する全フィルタデータを32bit固定小数点数に変換する。このとき、固定小数点数の小数点の位置は全フィルタデータの中で絶対値が最大のものの小数点の位置を用いる。
ステップ231: 着目している中間層のフィルタデータすべての演算ビット数を演算精度まで削減する。ステップ230で求めた32bitの固定小数点数のデータタイプのフィルタデータのLSB(Least significant bit)から(32−n)bitをすべて”0”とする。このときフィルタデータの丸め方として最近点丸めを用いる。
図15は図14に示したフィルタデータのビット数を決定する処理フローの変化の形態を示す図であり、再学習処理ステップ240を含めたものである。
ステップ240: 畳込みニューラルネットワークの学習アルゴリズムを用いて、再度フィルタデータを学習する。学習した後、フィルタデータのLSB(Least significant bit)から(32-n)bitをすべて”0”とする。このときフィルタデータの丸め方として最近点丸めを用いる。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
101:画像、102:認識結果、103:演算データ記憶領域、104:演算ユニット、105:バス

Claims (8)

  1. データを受け付ける入力手段と、
    前記データに対して処理を行う畳込みニューラルネットワークを構成する演算ユニットと、
    前記演算ユニットで用いるデータを記憶する記憶領域と、
    前記処理の結果を出力する出力手段と、を備え、
    前記畳込みニューラルネットワークは、
    第1の内積演算を含む第1の処理を行う第1の中間層と、
    第2の内積演算を含む第2の処理を行う第2の中間層と、を備え、
    前記第1の内積演算のための第1のフィルタデータと、前記第2の内積演算のための第2のフィルタデータのビット幅が異な
    前記記憶領域は、フィルタデータ記憶領域を備え、
    前記フィルタデータ記憶領域は、
    第1のビット幅を有する第1のフィルタデータを記憶する第1の領域と、
    第2のビット幅を有する第2のフィルタデータを記憶する第2の領域と、を備え、
    前記第1の領域のバンク構成およびアドレスの振り方は、前記第2の領域のバンク構成およびアドレスの振り方と同じであり、
    前記第1のビット幅は前記第2のビット幅より大きく、
    1つのバンクには、前記第2のフィルタデータが、前記第1のフィルタデータより多くの数記憶される、
    情報処理装置。
  2. 前記第1の中間層は、畳込み層もしくは全結合層であり、
    前記第2の中間層は、畳込み層もしくは全結合層である、
    請求項1記載の情報処理装置。
  3. 前記記憶領域は、前記第1のフィルタデータのビット幅と、前記第2のフィルタデータのビット幅を記憶している、
    請求項1記載の情報処理装置。
  4. 前記第1の中間層は、前記第2の中間層より処理に必要なパラメータの数が多く、
    前記第1の内積演算のための第1のフィルタデータのビット幅は、前記第2の内積演算のための第2のフィルタデータのビット幅よりも大きい、
    請求項1記載の情報処理装置。
  5. 前記第1の中間層は、前記第2の中間層より前段にあり、
    前記第1の内積演算のための第1のフィルタデータのビット幅は、前記第2の内積演算のための第2のフィルタデータのビット幅よりも大きい、
    請求項1記載の情報処理装置。
  6. 前記第1の中間層は画像データに対して色の情報を用いて物体の検出を行う層であり、
    前記第2の中間層は画像データに対して物体のエッジ検出を行う層であり、
    前記第1の内積演算のための第1のフィルタデータのビット幅は、前記第2の内積演算のための第2のフィルタデータのビット幅よりも大きい、
    請求項1記載の情報処理装置。
  7. 前記情報処理装置はFPGAで構成され、
    前記記憶領域は、前記FPGAに搭載された半導体メモリであり、
    前記演算ユニットは、前記FPGAに搭載されたプログラム可能なロジックセルである、
    請求項1記載の情報処理装置。
  8. 画像を受け付ける入力手段と、
    前記画像を処理する演算ユニットと、
    前記演算ユニットで用いるデータを記憶する記憶領域と、
    前記処理の結果を出力する出力手段と、を備え、
    前記画像に写っている物体の種類を分類し識別する画像認識装置であって、
    前記演算ユニットは、
    前記画像の処理のために、前記画像の特徴量抽出を行うフィルタの畳込み演算を行う複数の階層を有し、
    前の階層で得られた畳込み演算の結果に対して、後の階層で更に畳込み演算を行い、
    前記畳込み演算に用いられるフィルタデータのデータタイプは、少なくとも2つの異なるデータタイプが含まれるように、階層毎に定め、
    前記記憶領域は、前記階層毎に、前記フィルタデータを格納するフィルタデータ記憶領域を備え、
    前記フィルタデータは前記フィルタデータ記憶領域の1つのアドレスに複数個記憶され、
    前記1つのアドレスに記憶されるフィルタデータの個数は、階層毎に同じではなく、
    前記フィルタデータのうち第1のフィルタデータは、それよりもビット幅の小さい第2のフィルタデータよりも、1つのアドレスあたりに記録される個数が少なく、
    前記フィルタデータは共通した畳込み演算器で使用され、
    前記畳込み演算器は、前記フィルタデータを格納するための、固定された大きさの複数のレジスタを備え、
    ある階層で行う畳込み演算に用いられる複数個のフィルタデータを、前記複数のレジスタに1対1に対応付けて格納し、
    他の階層で行う畳込み演算に用いられる複数個のフィルタデータを、前記複数のレジスタに1対1に対応付けて格納することにより、
    前記共通した畳込み演算器を、異なる畳込み演算を行う階層として機能させる、
    画像認識装置。
JP2017034348A 2017-02-27 2017-02-27 情報処理装置および画像認識装置 Active JP6823495B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017034348A JP6823495B2 (ja) 2017-02-27 2017-02-27 情報処理装置および画像認識装置
US15/881,056 US11507797B2 (en) 2017-02-27 2018-01-26 Information processing apparatus, image recognition apparatus, and parameter setting method for convolutional neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017034348A JP6823495B2 (ja) 2017-02-27 2017-02-27 情報処理装置および画像認識装置

Publications (2)

Publication Number Publication Date
JP2018142049A JP2018142049A (ja) 2018-09-13
JP6823495B2 true JP6823495B2 (ja) 2021-02-03

Family

ID=63246355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017034348A Active JP6823495B2 (ja) 2017-02-27 2017-02-27 情報処理装置および画像認識装置

Country Status (2)

Country Link
US (1) US11507797B2 (ja)
JP (1) JP6823495B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402628B2 (en) * 2016-10-10 2019-09-03 Gyrfalcon Technology Inc. Image classification systems based on CNN based IC and light-weight classifier
US20200159532A1 (en) * 2018-02-13 2020-05-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN109343920B (zh) * 2018-09-10 2021-09-07 深圳市腾讯网络信息技术有限公司 一种图像处理方法及其装置、设备和存储介质
US10474930B1 (en) * 2018-10-05 2019-11-12 StradVision, Inc. Learning method and testing method for monitoring blind spot of vehicle, and learning device and testing device using the same
JP7040771B2 (ja) * 2018-10-10 2022-03-23 LeapMind株式会社 ニューラルネットワーク処理装置、通信装置、ニューラルネットワーク処理方法、およびプログラム
US20200117981A1 (en) * 2018-10-11 2020-04-16 International Business Machines Corporation Data representation for dynamic precision in neural network cores
JP7278150B2 (ja) * 2019-05-23 2023-05-19 キヤノン株式会社 画像処理装置、撮像装置、画像処理方法
US11551054B2 (en) 2019-08-27 2023-01-10 International Business Machines Corporation System-aware selective quantization for performance optimized distributed deep learning
JP7008221B2 (ja) * 2019-12-27 2022-01-25 パナソニックIpマネジメント株式会社 ニューラルネットワーク最適化方法、ニューラルネットワーク最適化装置およびプログラム
WO2022009433A1 (ja) * 2020-07-10 2022-01-13 富士通株式会社 情報処理装置,情報処理方法および情報処理プログラム
US11868443B1 (en) * 2021-05-12 2024-01-09 Amazon Technologies, Inc. System for training neural network using ordered classes

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005024625A1 (ja) * 2003-08-28 2005-03-17 Hitachi Ulsi Systems Co., Ltd. データ処理装置
US7461116B2 (en) * 2003-09-17 2008-12-02 Agility Design Solutions Inc. Emulation of a fixed point operation using a corresponding floating point operation
JP4513865B2 (ja) * 2008-01-25 2010-07-28 セイコーエプソン株式会社 並列演算装置および並列演算方法
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP5772442B2 (ja) 2011-09-22 2015-09-02 富士ゼロックス株式会社 画像処理装置及び画像処理プログラム
US20160026912A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
US9563825B2 (en) * 2014-11-20 2017-02-07 Adobe Systems Incorporated Convolutional neural network using a binarized convolution layer
JP6586735B2 (ja) * 2015-02-20 2019-10-09 セイコーエプソン株式会社 回路装置、物理量検出装置、電子機器及び移動体
US10262259B2 (en) * 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US9633282B2 (en) * 2015-07-30 2017-04-25 Xerox Corporation Cross-trained convolutional neural networks using multimodal images

Also Published As

Publication number Publication date
US20180247182A1 (en) 2018-08-30
US11507797B2 (en) 2022-11-22
JP2018142049A (ja) 2018-09-13

Similar Documents

Publication Publication Date Title
JP6823495B2 (ja) 情報処理装置および画像認識装置
CN109102065B (zh) 一种基于PSoC的卷积神经网络加速器
EP3557485B1 (en) Method for accelerating operations and accelerator apparatus
US11467969B2 (en) Accelerator comprising input and output controllers for feeding back intermediate data between processing elements via cache module
US20220043886A1 (en) Hardware Implementation of Convolutional Layer of Deep Neural Network
Yuan et al. High performance CNN accelerators based on hardware and algorithm co-optimization
CN107239829B (zh) 一种优化人工神经网络的方法
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
JP6773568B2 (ja) 演算システムおよびニューラルネットワークの演算方法
US9886377B2 (en) Pipelined convolutional operations for processing clusters
US20190042251A1 (en) Compute-in-memory systems and methods
EP3480743A1 (en) End-to-end data format selection for hardware implementation of deep neural network
WO2021080873A1 (en) Structured pruning for machine learning model
CN114626516A (zh) 一种基于对数块浮点量化的神经网络加速系统
US20210216864A1 (en) Apparatus and method with neural network model reconfiguration
JP7251354B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
WO2020072619A1 (en) Addressing bottlenecks for deep neural network execution of a graphics processor unit
Han et al. A high-throughput scalable BNN accelerator with fully pipelined architecture
US20240143525A1 (en) Transferring non-contiguous blocks of data using instruction-based direct-memory access (dma)
US20240143986A1 (en) Methods and systems for executing a neural network on a neural network accelerator
Aiello Design of optimized architectures for non-linear convolutional neural networks
He et al. Research on Efficient CNN Acceleration Through Mixed Precision Quantization: A Comprehensive Methodology.
Sarma Optimizing Deep Learning for Memory and Compute: A joint Algorithm-Architecture Exploration
CN117808045A (zh) 用于对神经网络中的卷积层执行通道均衡的方法和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200609

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200730

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210108

R150 Certificate of patent or registration of utility model

Ref document number: 6823495

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150