JP7419574B2 - 膨張畳み込み加速演算方法及び装置 - Google Patents

膨張畳み込み加速演算方法及び装置 Download PDF

Info

Publication number
JP7419574B2
JP7419574B2 JP2022580125A JP2022580125A JP7419574B2 JP 7419574 B2 JP7419574 B2 JP 7419574B2 JP 2022580125 A JP2022580125 A JP 2022580125A JP 2022580125 A JP2022580125 A JP 2022580125A JP 7419574 B2 JP7419574 B2 JP 7419574B2
Authority
JP
Japan
Prior art keywords
convolution
dilation
sub
dilated
operations
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
JP2022580125A
Other languages
English (en)
Other versions
JP2023531070A (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.)
Canaan Bright Sight Co Ltd
Original Assignee
Canaan Bright Sight Co 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 Canaan Bright Sight Co Ltd filed Critical Canaan Bright Sight Co Ltd
Publication of JP2023531070A publication Critical patent/JP2023531070A/ja
Application granted granted Critical
Publication of JP7419574B2 publication Critical patent/JP7419574B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • G06T5/30Erosion or dilatation, e.g. thinning
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

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

Description

発明の詳細な説明
〔技術分野〕
本発明は、深層学習分野に属するものであり、具体的に、膨張畳み込み加速演算方法及び装置に関する。
〔背景技術〕
本部分は、特許請求の範囲に記載の本発明の実施形態のために、背景又は上下文を提供することを意図したものである。ここでの記載は、本部分に含まれることが原因で従来技術として認められるものではない。
畳込みニューラルネットワーク(Convolutional Neural Networks、CNNと略称)は、深層フィードフォワード人工ニューラルネットワークであり、数多くの分野に既に応用されており、例えば、画像識別分野が挙げられる。畳み込みニューラルネットワークは、画像データの処理過程において、より複雑な演算(畳み込み演算、バッチ正規化演算、活性化演算などを主に含む)を行う。
CCNによる画像処理の場合、モデルの受容野を増やすために、通常、複数回もの畳み込みやプーリング操作を行う必要がある。プール化することで、画像のサイズを小さくすることができ、その上で、畳み込みカーネルを用いると、受容野を増やすことができる。また、畳込みやプール化が行われた特性図は小さくなったので、その場合、全接続ネットワークに伝送されて分類されてもよい。しかしながら、画像分割の場合、画素点毎に予測する必要があるので、予測する前に、サイズが小さくなった特性図をアップサンプリングする方式(例えば、deconv逆畳込み)によって、元画像のサイズに戻しなければならない。ただし、その過程では、以下の問題点があった。(1)情報が紛失され、プーリング操作が逆転不可である点、例えば、特性図をアップサンプリングして元画像のサイズに戻す処理を行うとき、情報が紛失されてしまう恐れがある。(2)小さな物体の画像を再構成することができない点、例えば、4×4画素数の物体の場合、プーリング操作が4回行われた後、その物体の情報を再構成できなくなる。そのため、プーリング操作などによる受容野の拡大を回避するために、『MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS』では、膨張畳み込み(dilated convolution)が提案されている。膨張畳み込み演算は、畳み込み中に畳み込みカーネルを所定のサイズまで拡張するとともに、元畳み込みカーネルにおける占用されていない領域をゼロで充填させる。
従来技術では、画像データに対する畳み込み演算を加速化して画像処理の結果を取得するために、Im2col関数を用いて畳み込み演算を最適化する方法をとることが一般的である。CNN学習トレーニング過程において、通常、1枚の画像全体にわたる処理を一括して行うことではなく、画像を複数の小さなパッチ(patch)に分割するとともに、パッチ毎にIm2col処理を行って新たに配列し、3次元のパッチを1次元ベクトルに展開させてから、さらに、畳み込み操作を2次元行列乗算に変換することとなっている。
上記方案では、膨張畳み込み演算を1回行うとき、複数の行と複数の列のデータへのアクセスが同時に行われる必要がある。図1に示すように、3×3サイズで、膨張率が2である膨張畳み込みを例にすると、1回の膨張畳み込みの演算に必要な9個の数字は、3行と3列に分布していることが求められる。理解すべきなのは、データの読取が連続したデータを対象にしないと、データの読取の帯域幅を確保できないことである。そのため、上記9個の数字へのアクセスを同時に実現させるには、内部メモリの配列を特別に設計しなければならない。例えば、内部メモリのセグメンテーションにより、メモリアクセスの並列度を高めることが挙げられる。しかしながら、NPUは通常、異なるサイズの畳み込みをサポートする必要があるので、異なる畳み込みカーネルに対する汎用性を実現するために、メモリを数多くの小さなパッチに分割しないと、種々の配置に対応できなくなる。そうすると、一方では、内部メモリの面積が大きくなってしまい、他方では、データへのアクセス上の論理的複雑度が高くなる。
そのため、高汎用性、低複雑度を有する膨張畳み込み加速演算方法の設計は、現在解決すべき技術的課題となっている。
〔発明の概要〕
従来技術における膨張畳み込み演算の実現汎用性が良くなく、複雑度が高い問題に対し、本発明の実施例では、膨張畳み込み加速演算方法及び装置を提供する。このような方法及び装置によれば、上記問題を解決することができる。
本発明の実施例では、以下の方案が提供される。
第1態様では、R×Sの膨張畳み込み演算を、S個のR×1のサブ膨張畳み込み演算に分解するステップであって、前記Rが畳み込みカーネルの高さであり、前記Sが畳み込みカーネルの幅であるステップ、R×1のサブ膨張畳み込み演算ごとに、複数の重み値を演算部行列における複数の演算部に並行してバッファするステップ、入力画像データから、前記複数の重み値の各々に対応する多重入力データストリームをそれぞれ、特定し、前記多重入力データストリームを前記複数の演算部に並行して入力するステップ、前記複数の演算部の各々の内部において、バッファされている重み値と受信された入力データストリームに基づいて、スライド操作と乗算操作を実行するとともに、前記複数の演算部の間に累積加算操作を実行して、前記サブ膨張畳み込み演算の中間結果を出力するステップ、および、前記S個のR×1のサブ膨張畳み込み演算の中間結果を加算して、前記膨張畳み込み演算の畳み込み結果を取得するステップ、を含む、膨張畳み込み加速演算方法を提供する。
可能性のある一実施形態では、前記膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、入力画像データから、必要なデータを読み取ることで、前記重み値毎に対応する入力データストリームをスティッチングして構成する。
可能性のある一実施形態では、前記膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、前記入力画像データにおける複数行のデータを読み取ることで、前記重み値毎に対応する入力データストリームをスティッチングして構成する。
可能性のある一実施形態では、前記スライド操作のスライドステップサイズは、前記膨張畳み込み演算の前記畳み込みステップサイズによって決められる。
可能性のある一実施形態では、前記S個のR×1のサブ膨張畳み込み演算の中間結果を加算する前記ステップは、前記S個のR×1のサブ膨張畳み込み演算において、前記S個のR×1のサブ膨張畳み込み演算の中間結果をリアルタイムに加算すること、又は、前記S個のR×1のサブ膨張畳み込み演算の実行が終了した後、複数の中間結果を加算すること、を含む。
第2態様では、論理制御部と、演算部行列と、を備え、前記論理制御部は、R×Sの膨張畳み込み演算を、S個のR×1のサブ膨張畳み込み演算に分解し、前記Rが畳み込みカーネルの高さであり、前記Sが畳み込みカーネルの幅であり、R×1のサブ膨張畳み込み演算ごとに、複数の重み値を前記演算部行列における複数の演算部に並行してバッファし、入力画像データから、前記複数の重み値の各々に対応する多重入力データストリームをそれぞれ、特定し、前記多重入力データストリームを前記複数の演算部に並行して入力するために配置されており、前記演算部行列は、前記複数の演算部の各々の内部において、バッファされている重み値と受信された入力データストリームに基づいて、スライド操作と乗算操作を実行するとともに、前記複数の演算部の間に累積加算操作を実行して、前記サブ膨張畳み込み演算の中間結果を出力し、前記S個のR×1のサブ膨張畳み込み演算の中間結果を加算して、前記膨張畳み込み演算の畳み込み結果を取得するために配置されている、膨張畳み込み加速演算装置を提供する。
可能性のある一実施形態では、前記論理制御部は、前記膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、入力画像データから、必要なデータを読み取ることで、前記重み値毎に対応する入力データストリームをスティッチングして構成するために配置されている。
可能性のある一実施形態では、前記論理制御部は、前記膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、前記入力画像データにおける複数行のデータを読み取ることで、前記重み値毎に対応する入力データストリームをスティッチングして構成するために配置されている。
可能性のある一実施形態では、前記スライド操作のスライドステップサイズは、前記膨張畳み込み演算の前記畳み込みステップサイズによって決められる。
可能性のある一実施形態では、前記演算部行列は、前記S個のR×1のサブ膨張畳み込み演算において、前記S個のR×1のサブ膨張畳み込み演算の中間結果をリアルタイムに加算する、又は、前記S個のR×1のサブ膨張畳み込み演算の実行が終了した後、複数の中間結果を加算するために配置されている。
本願の実施例では、上記少なくとも1つの技術案によれば、以下の有益な効果が得られる。すなわち、R×Sの膨張畳み込み演算を、S個のR×1のサブ膨張畳み込み演算に分解し、分割して得られた複数の重み値を1列の演算部に並行してバッファし、各演算部がバッファされている重み値に基づいて入力データストリームにてスライド操作と乗算操作を行い、演算部の間に累積加算操作を行うことにより、膨張畳み込み演算を加速し、このような方案によれば、Im2colの機能を個別に実現する必要がないので、複雑度が低減される。
理解すべきなのは、上記説明は、本発明の技術手段をより明瞭に理解してもらうための、本発明の技術案の概要に過ぎず、明細書の内容を基にして実施することが可能である。また、本発明の上記目的及び他の目的、特徴、及びメリットをさらに明瞭的で分かりやすくするために、以下は、特に、本発明の具体的な実施の形態を例示する。
〔図面の簡単な説明〕
以下の例示的な実施例の詳細を閲覧したうえで、当業者は、本明細書に記載の利点や有益な効果、および、他の利点や有益な効果を理解できるだろう。添付図面は、例示的な実施例の目的を示すためのものに過ぎず、本発明を制限するものとして見なされない。しかも、全ての添付図面において、同一の部材は同一の記号で示される。添付図面において、
図1は、従来技術におけるIm2colに基づく膨張畳み込み演算の概略図である。
図2は、畳み込みニューラルネットワーク演算装置の構造概略図である。
図3は、本発明の一実施例に係る膨張畳み込み加速演算方法のフロー概略図である。
図4aは、膨張畳み込み演算の概略図であり、図4bは、図4aに示される膨張畳み込み演算の別の概略図である。
図5は、本発明の一実施例におけるR×Sの膨張畳み込み演算をS個のR×1のサブ膨張畳み込み演算に分解することの概略図である。
図6は、本発明の一実施例におけるR×Sの膨張畳み込み演算をS個のR×1のサブ膨張畳み込み演算に分解することの別の概略図である。
図7は、本発明の一実施例における重み値がバッファされている演算部(PE)を用いて膨張畳み込みを行うことの概略図である。
図8は、本発明の一実施例における重み値がバッファされている演算部(PE)を用いてスライド操作を行うことの概略図である。
図9は、本発明の一実施例に係る膨張畳み込み加速演算装置の構造概略図である。
添付図面において、同一又は対応な部分は、同一または対応な記号で示される。
〔具体的な実施の形態〕
以下は、添付図面を参照しながら、本開示の例示的な実施例をより詳しく説明する。添付図面には、本開示の例示的な実施例が示されたが、本開示は、種々な形式で実現することができ、ここに記載の実施例により限られたものではないと、理解すべきである。逆に、それらの実施例を提供する目的は、本開示をさらに明瞭に理解できるようにすることであって、本開示の範囲を当業者に完全に伝えることができることである。
本発明では、理解すべきなのは、例えば、「含む」や「備える」のような用語は、本発明により開示された特徴、数字、工程、行為、部材、部分又はそれらの組み合わせの存在を示すためのものであり、1つまたは複数の他の特徴、数字、工程、行為、部材、部分又はそれらの組み合わせの存在の可能性を排除することを意図しない。
なお、説明すべきなのは、衝突しない場合、本発明における実施例及び実施例に記載の特徴は互いに組み合わされてもよい。以下は、添付図面を参照しながら、実施例を組み合わせて本願発明を詳しく説明する。
図2は、膨張畳み込み加速演算装置の構造概略図20を示す。膨張畳み込み加速演算装置は、演算プラットフォーム21と、外部メモリ22と、を含み、演算プラットフォーム21は、少なくとも、膨張畳み込み演算を実行するための演算部(PE)行列211と内部メモリ212を含み、ここで、外部メモリ22は、通常、低コストの記憶媒体が用いられ、そして、帯域幅が限られるとともに、読取り・書込み用の電力消耗が高いことも一般的である。内部メモリは、通常、アクセス速度が速い記憶媒体が用いられ、例えば、帯域幅が高く、読取り・書込みコストが低いSRAMが挙げられる。しかし、高コストのものなので、容量が限られたことが一般的である。
図3は、本発明の実施例に係る膨張畳み込み加速演算方法300のフロー概略図を示す。以下は、図2に示される膨張畳み込み加速演算装置を組み合わせながら、図3中の膨張畳み込み加速演算方法300の各方面を詳しく説明する。
図3に示されるように、該方法300では、以下のステップを含んでもよい。
ステップ301:R×Sの膨張畳み込み演算を、S個のR×1のサブ膨張畳み込み演算に分解し、ここで、Rが畳み込みカーネルの高さであり、Sが畳み込みカーネルの幅であること、
ステップ302:R×1のサブ膨張畳み込み演算ごとに、複数の重み値を演算部行列における複数の演算部に並行してバッファすること、
ステップ303:入力画像データから、複数の重み値の各々に対応する多重入力データストリームをそれぞれ、特定し、多重入力データストリームを複数の演算部に並行して入力すること、
ステップ304:複数の演算部の各々の内部において、バッファされている重み値と受信された入力データストリームに基づいて、スライド操作と乗算操作を実行するとともに、複数の演算部の間に累積加算操作を実行して、サブ膨張畳み込み演算の中間結果を出力すること、および、
ステップ305:S個のR×1のサブ膨張畳み込み演算の中間結果を加算して、膨張畳み込み演算の畳み込み結果を取得すること。
図4aと図4bは、膨張畳み込み演算の例示を示す。ここで、図4aに示されるように、当該膨張畳み込み演算の入力画像データは、若干の画素値Dabcからなる行列データであり、ここで、下付き文字aがチャネル番号を示すものであり、下付き文字bが行番号を示し、0、1、……、6から値をとったものであり、下付き文字cが列番号を示し、0、1、……、6から値をとったものであり、すなわち、サイズが7(列)×7(行)である。当該入力画像データは、ニューラルネットワークモデルに入力された真の画像から得られてもよく、通常、外部メモリ22に行毎に、チャネル毎に順次に連続して記憶されている。当該膨張畳み込み層の畳み込みカーネルは、若干の重み値Wedfからなるものであり、ここで、下付き文字eがチャネル番号を示すものであり、下付き文字dが行番号を示し、0、1、2から値をとったものであり、下付き文字fが列番号を示し、0、1、2から値をとったものであり、すなわち、畳み込みカーネルのサイズが3(列)×3(行)である。畳み込みカーネルは、若干の画像サンプルデータをトレーニングすることによって得られてもよく、通常、外部メモリ22に記憶されている。図4bに示されるように、膨張畳み込みの結果は、畳み込みカーネルが入力画像データに対して膨張畳み込みを行うことによって得られた出力データであり、ここで、Pxyについて、下付き文字xが行番号を示し、0、1、2から値をとったものであり、下付き文字yが列番号を示し、0、1、2から値をとったものであり、すなわち、そのサイズが3(列)×3(行)である。本実施例では、実現された膨張畳み込み演算は、すなわち、入力画像データと重み行列から、膨張畳み込みの結果をマッピングされる操作である。本実施例では、チャネル0の演算を例にして説明する。当業者であれば、チャネル0の演算論理に従って他のチャネルへの演算も可能であることを理解できるはずである。
図4aと図4bに示された膨張畳み込み演算を例にして、本発明の実施例を詳しく説明する。
膨張畳み込み演算の膨張率λ=2、畳み込みステップサイズs=1と仮定する。まず、図4aと図4bに示される3×3の膨張畳み込み演算を、3個の3×1のサブ膨張畳み込み演算に分解してもよい。例えば、図5に示されるように、3×3の畳み込みカーネルを、第1の畳み込みサブカーネル、第2の畳み込みサブカーネル、および、第3の畳み込みサブカーネルという3個の3×1の畳み込みサブカーネルに分割し、その後、図4bに示される膨張畳み込み演算を、図6に示される3組のサブ膨張畳み込み演算に分割する。
次は、3×1のサブ膨張畳み込み演算毎に、図7に示されるように、チャネル0の畳み込み演算を例にして説明すると、まず、3つの重み値(W000、W010、W020)を演算部行列における3つの演算部に並行してバッファする。続いて、入力画像データから、3つの重み値(W000、W010、W020)の各々に対応する3チャネル入力データストリームをそれぞれ、特定し、3チャネル入力データストリームを3つの演算部に並行して入力する。
可能性のある幾つかの実施形態では、当該膨張畳み込み演算の膨張率λ=2と畳み込みステップサイズs=1に基づき、入力画像データにおける複数行データを特定するとともに、複数行データから、必要なデータを順次に読み取ることで、重み値毎に対応する入力データストリームをスティッチングして構成してもよい。例えば、重み値W000がバッファされた計算部に入力されたデータストリームは、(D000、D001、D002、D010、D011、D012、D020、D021、D022)となってもよい。つまり、「D000、……、D00(w-2λ-1)、D010、……、D01(w-2λ-1)、D0(w-2λ-1)0、……、D0(H-2λ-1)(W-2λ-1)」となる。ここで、Wが入力画像データの幅であり、Hが入力画像データの高さであり、W=7、H=7である。相応に、重み値W010とW020がバッファされた計算部に入力されたデータストリームは、順次に導き出されることができる。続いて、3つの演算部の各々の内部において、バッファされている重み値と受信された入力データストリームに基づいて、スライド操作と乗算操作を実行するとともに、複数の演算部の間に累積加算操作を実行して、サブ膨張畳み込み演算の中間結果を出力する。例えば、演算部の内部において、バッファされている重み値をスライドウィンドウとして入力データストリームに対してスライド操作を実行し、スライド操作毎にウィンドウ内のデータを乗算操作して乗算の結果を取得し、乗算操作が終了した度に、1列の演算部による乗算の結果を累積加算して、1画素位置に対応する中間結果を取得する。
可能性のある一実施形態では、S個のR×1のサブ膨張畳み込み演算の中間結果を加算する前記ステップは、前記S個のR×1のサブ膨張畳み込み演算において、前記S個のR×1のサブ膨張畳み込み演算の中間結果をリアルタイムに加算すること、又は、前記S個のR×1のサブ膨張畳み込み演算の実行が終了した後、複数の中間結果を加算すること、を含む。例えば、演算部行列によって、上記第1の中間結果、第2の中間結果、および、第3の中間結果が算出された後、バッファされている上記3個の3×1のサブ膨張畳み込み演算の中間結果を加算して、膨張畳み込み演算の畳み込み結果を取得する。選択的に、演算部による演算中に、リアルタイムに加算してもよい。例えば、第2の中間結果のP00’’を算出した後、第1の中間結果のP00’にリアルタイムに累積加算する。選択的に、オンチップバッファエリアの大きさによって、加算モードでは、演算中にリアルタイムに加算するように決められてもよく、又は、演算の実行が終了した後、複数の中間結果を加算するように決められてもよい。
可能性のある別の幾つかの実施形態では、データ読取論理をさらに簡素化するために、膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、入力画像データにおける複数行データを特定するとともに、複数行データに対して重み値毎に対応する入力データストリームをスティッチングして構成してもよい。例えば、膨張率λ=2、畳み込みステップサイズs=1、畳み込みカーネルのサイズが3×3であり、入力画像データのサイズが7×7の場合、重み値W000がバッファされた演算部に対して、当該入力画像データの1行目、2行目、および、3行目のデータをスティッチングして構成したものを直接に入力してもよい。つまり、(D000、……、D006、D010、……、D016、D020、……、D026)となり、また、演算部の内部において、スライド操作が行われるスライド領域を制御する。例えば、列番号が2未満であるデータストリームのみにて、スライド操作を行うとともに、列番号が2よりも大きいデータをスキップしてもよい。
図8に示されるように、上記3×3の膨張畳み込み演算を例にして、重み値W000がバッファされた演算部による演算部行列への操作を基にして説明する。ここで、タイミングT上にて、重み値W000が入力データストリームにてスライドして、D000に到達し、且つ、ウィンドウ内の重み値と入力データとに基づき、W000×D000という乗算操作を実行する。同時に、他の演算部(PE)もバッファされた重みセグメントを基にして対応する入力データストリームにて同期的にスライドするとともに、重み値とウィンドウ内のデータとに基づき、乗算操作を実行する。例えば、重み値W001がD020までスライドし、重み値W002がD020までスライドし、順次類推すると、各演算部(PE)のタイミングT上の乗算結果が得られるようになり、さらに、第1の畳み込みサブカーネルに対応する1列の演算部(PE)のタイミングT上の全ての乗算結果を加算して1つの出力値P00’が得られる。タイミングT上にて、重み値W000は、畳み込みステップサイズに基づいて、入力データストリームにてスライドして、D001に到達し、順次類推すると、図6中の別の出力値P01’が得られるようになり、また、タイミングT上にて、図6中の別の出力値P02’が得られるようになる。最終的に、図6中の第1の中間結果としての各値を取得するとともに、その第1の中間結果をバッファしてもよい。
理解すべきなのは、第1の畳み込みサブカーネルに係る演算が終了した後、演算部行列におけるバッファ値を、第2の畳み込みサブカーネルの複数の重み値に更新するとともに、上記方法と同様な方法により、図6中の第2の中間結果としての各値を取得し、順次類推すると、サブ膨張畳み込み演算ごとに対応する中間結果を取得することができ、上記複数の中間結果を位置に応じて加算することで、膨張畳み込み操作による畳み込み結果が得られる。
別の実施例では、複数列演算部(PE)を用いて、複数の畳み込みカーネルの膨張畳み込み演算を同時で並行して実現させることができる。さらに、異なる畳み込みカーネルにおいて、同一の位置にある重み値が同一の入力データストリームに対応するため、異なる畳み込みカーネルにおける同一の位置にある重み値を演算部(PE)行列の同一行に配列してもよい。
可能性のある幾つかの実施形態では、前記ステップ304は、当該スライド操作のスライドステップサイズは、膨張畳み込み演算の畳み込みスステップサイズによって決められる。例えば、図8に示されるスライド操作では、スライドステップサイズは畳み込みステップサイズと同じである。
本実施例では、上記方法が用いられたことで、高汎用性、低複雑度を有する膨張畳み込み加速演算の実現には、外部メモリにおける単一の記憶方向に連続して記憶された入力画像データを同時に行または列を跨いで頻繁に読み取る必要がなく、内部メモリの配列を特別に設計する必要もない。また、演算プラットフォームにおいてIm2colの機能を別途で実現する必要もないので、ハードウェアリソースや演算電力消耗が節約される。
同一または類似した技術的構想を基にして、本発明の実施例は、論理制御部91と、演算部(PE)行列211と、を備え、
論理制御部は、R×Sの膨張畳み込み演算を、S個のR×1のサブ膨張畳み込み演算に分解し、Rが畳み込みカーネルの高さであり、Sが畳み込みカーネルの幅であり、R×1のサブ膨張畳み込み演算ごとに、複数の重み値を演算部行列における複数の演算部に並行してバッファし、複数の重み値の各々に対応する多重入力データストリームをそれぞれ、特定し、多重入力データストリームを前記複数の演算部に並行して入力するために配置されており、
演算部行列は、複数の演算部の各々の内部において、バッファされている重み値と受信された入力データストリームに基づいて、スライド操作と乗算操作を実行するとともに、複数の演算部の間に累積加算操作を実行して、サブ膨張畳み込み演算の中間結果を出力し、S個のR×1のサブ膨張畳み込み演算の中間結果を加算して、膨張畳み込み演算の畳み込み結果を取得するために配置されている、膨張畳み込み加速演算装置をさらに提供する。
可能性のある幾つかの実施形態では、論理制御部91は、膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、入力画像データから、必要なデータを読み取ることで、重み値毎に対応する入力データストリームをスティッチングして構成するために配置されている。
可能性のある別の幾つかの実施形態では、論理制御部91は、膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、入力画像データにおける複数行データを読み取ることで、重み値毎に対応する入力データストリームをスティッチングして構成するために配置されている。
可能性のある幾つかの実施形態では、スライド操作のスライドステップサイズは、膨張畳み込み演算の畳み込みスステップサイズによって決められる。
可能性のある一実施形態では、演算部行列は、S個のR×1のサブ膨張畳み込み演算において、S個のR×1のサブ膨張畳み込み演算の中間結果をリアルタイムに加算する、又は、S個のR×1のサブ膨張畳み込み演算の実行が終了した後、複数の中間結果を加算するために配置されている。
本願における各実施例は、漸進的な方式により記述されており、各実施例間における同一や類似した部分について、相互参照すればよく、各実施例では、他の実施例との相違点に重点を置いて説明されている。特に、装置について、それが方法実施例と基本的に同じなので、それに対する記述は簡素化され、関連部分について、方法実施例における一部の説明を参照すればよい。
本願の実施例で提供される装置は、方法と一対一で対応するものである。そのため、装置は、それに対応する方法と類似した有益な技術的効果を有するものである。以上は、方法による有益な技術的効果について詳しく説明されているので、ここでは、装置による有益な技術的効果の説明を省略する。
本発明の精神と原理は、若干の具体的な実施の形態を参照して説明されているが、理解すべきなのは、本発明は、開示されている具体的な実施の形態によって限定されず、各態様の分割は、単に説明の便宜のためのものに過ぎず、これらの態様の特徴を組み合わせて利益を得ることができないことを意味しない。本発明は、添付の請求項の精神や範囲に含まれる様々な修正や同等の構成を包含することが意図される。
本発明の精神と原理は、若干の具体的な実施の形態を参照して説明されているが、理解すべきなのは、本発明は、開示されている具体的な実施の形態によって限定されず、各態様の分割は、単に説明の便宜のためのものに過ぎず、これらの態様の特徴を組み合わせて利益を得ることができないことを意味しない。本発明は、添付の請求項の精神や範囲に含まれる様々な修正や同等の構成を包含することが意図される。
従来技術におけるIm2colに基づく膨張畳み込み演算の概略図である。 畳み込みニューラルネットワーク演算装置の構造概略図である。 本発明の一実施例に係る膨張畳み込み加速演算方法のフロー概略図である。 膨張畳み込み演算の概略図である。 図4aに示される膨張畳み込み演算の別の概略図である。 本発明の一実施例におけるR×Sの膨張畳み込み演算をS個のR×1のサブ膨張畳み込み演算に分解することの概略図である。 本発明の一実施例におけるR×Sの膨張畳み込み演算をS個のR×1のサブ膨張畳み込み演算に分解することの別の概略図である。 本発明の一実施例における重み値がバッファされている演算部(PE)を用いて膨張畳み込みを行うことの概略図である。 本発明の一実施例における重み値がバッファされている演算部(PE)を用いてスライド操作を行うことの概略図である。 本発明の一実施例に係る膨張畳み込み加速演算装置の構造概略図である。

Claims (10)

  1. R×Sの膨張畳み込み演算を、S個のR×1のサブ膨張畳み込み演算に分解するステップであって、前記Rが畳み込みカーネルの高さであり、前記Sが畳み込みカーネルの幅であるステップ、
    R×1のサブ膨張畳み込み演算ごとに、複数の重み値を演算部行列における複数の演算部に並行してバッファするステップ、
    入力画像データから、前記複数の重み値の各々に対応する多重入力データストリームをそれぞれ、特定し、前記多重入力データストリームを前記複数の演算部に並行して入力するステップ、
    前記複数の演算部の各々の内部において、バッファされている重み値と受信された入力データストリームに基づいて、スライド操作と乗算操作を実行するとともに、前記複数の演算部の間に累積加算操作を実行して、前記サブ膨張畳み込み演算の中間結果を出力するステップ、および、
    前記S個のR×1のサブ膨張畳み込み演算の中間結果を加算して、前記膨張畳み込み演算の畳み込み結果を取得するステップ、を含む、
    ことを特徴とする膨張畳み込み加速演算方法。
  2. 前記膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、入力画像データから、必要なデータを読み取ることで、前記重み値毎に対応する入力データストリームをスティッチングして構成する、ことを特徴とする請求項1に記載の方法。
  3. 前記膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、前記入力画像データにおける複数行のデータを読み取ることで、前記重み値毎に対応する入力データストリームをスティッチングして構成する、ことを特徴とする請求項1に記載の方法。
  4. 前記スライド操作のスライドステップサイズは、前記膨張畳み込み演算の前記畳み込みステップサイズによって決められる、ことを特徴とする請求項1に記載の方法。
  5. 前記S個のR×1のサブ膨張畳み込み演算の中間結果を加算する前記ステップは、
    前記S個のR×1のサブ膨張畳み込み演算において、前記S個のR×1のサブ膨張畳み込み演算の中間結果をリアルタイムに加算すること、又は、
    前記S個のR×1のサブ膨張畳み込み演算の実行が終了した後、複数の中間結果を加算すること、を含む、ことを特徴とする請求項1に記載の方法。
  6. 論理制御部と、演算部行列と、を備え、
    前記論理制御部は、R×Sの膨張畳み込み演算を、S個のR×1のサブ膨張畳み込み演算に分解し、前記Rが畳み込みカーネルの高さであり、前記Sが畳み込みカーネルの幅であり、R×1のサブ膨張畳み込み演算ごとに、複数の重み値を前記演算部行列における複数の演算部に並行してバッファし、入力画像データから、前記複数の重み値の各々に対応する多重入力データストリームをそれぞれ、特定し、前記多重入力データストリームを前記複数の演算部に並行して入力するために配置されており、
    前記演算部行列は、前記複数の演算部の各々の内部において、バッファされている重み値と受信された入力データストリームに基づいて、スライド操作と乗算操作を実行するとともに、前記複数の演算部の間に累積加算操作を実行して、前記サブ膨張畳み込み演算の中間結果を出力し、前記S個のR×1のサブ膨張畳み込み演算の中間結果を加算して、前記膨張畳み込み演算の畳み込み結果を取得するために配置されている、
    ことを特徴とする膨張畳み込み加速演算装置。
  7. 前記論理制御部は、
    前記膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、入力画像データから、必要なデータを読み取ることで、前記重み値毎に対応する入力データストリームをスティッチングして構成するために配置されている、ことを特徴とする請求項6に記載の装置。
  8. 前記論理制御部は、
    前記膨張畳み込み演算の膨張率と畳み込みステップサイズに基づき、前記入力画像データにおける複数行のデータを読み取ることで、前記重み値毎に対応する入力データストリームをスティッチングして構成するために配置されている、ことを特徴とする請求項6に記載の装置。
  9. 前記スライド操作のスライドステップサイズは、前記膨張畳み込み演算の前記畳み込みステップサイズによって決められる、ことを特徴とする請求項6に記載の装置。
  10. 前記演算部行列は、前記S個のR×1のサブ膨張畳み込み演算において、前記S個のR×1のサブ膨張畳み込み演算の中間結果をリアルタイムに加算する、又は、前記S個のR×1のサブ膨張畳み込み演算の実行が終了した後、複数の中間結果を加算するために配置されている、ことを特徴とする請求項6に記載の装置。

JP2022580125A 2020-07-08 2020-11-03 膨張畳み込み加速演算方法及び装置 Active JP7419574B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202010659646.6A CN113989169A (zh) 2020-07-08 2020-07-08 一种膨胀卷积加速计算方法及装置
CN202010659646.6 2020-07-08
PCT/CN2020/126195 WO2022007265A1 (zh) 2020-07-08 2020-11-03 一种膨胀卷积加速计算方法及装置

Publications (2)

Publication Number Publication Date
JP2023531070A JP2023531070A (ja) 2023-07-20
JP7419574B2 true JP7419574B2 (ja) 2024-01-22

Family

ID=79552764

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022580125A Active JP7419574B2 (ja) 2020-07-08 2020-11-03 膨張畳み込み加速演算方法及び装置

Country Status (6)

Country Link
US (1) US12056530B2 (ja)
EP (1) EP4181024A4 (ja)
JP (1) JP7419574B2 (ja)
KR (1) KR20230081697A (ja)
CN (1) CN113989169A (ja)
WO (1) WO2022007265A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114565501B (zh) * 2022-02-21 2024-03-22 格兰菲智能科技有限公司 用于卷积运算的数据加载方法及其装置
CN115292662B (zh) * 2022-08-18 2023-09-22 上海燧原科技有限公司 一种卷积加速运算方法、装置、电子设备及存储介质
CN116152037A (zh) * 2022-12-06 2023-05-23 嘉楠明芯(北京)科技有限公司 图像反卷积方法和设备、存储介质
CN117407733B (zh) * 2023-12-12 2024-04-02 南昌科晨电力试验研究有限公司 一种基于对抗生成shapelet的流量异常检测方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180314671A1 (en) 2017-04-27 2018-11-01 Falcon Computing Systems And Methods For Systolic Array Design From A High-Level Program
US20190042923A1 (en) 2017-08-07 2019-02-07 Intel Corporation System and method for an optimized winograd convolution accelerator
CN111178519A (zh) 2019-12-27 2020-05-19 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速系统及方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
US10067509B1 (en) 2017-03-10 2018-09-04 TuSimple System and method for occluding contour detection
CN107862650B (zh) * 2017-11-29 2021-07-06 中科亿海微电子科技(苏州)有限公司 加速计算二维图像cnn卷积的方法
CN109919295B (zh) * 2017-12-12 2022-10-28 北京大学深圳研究生院 一种基于轻量级卷积神经网络的嵌入式音频事件检测方法
CN109032781A (zh) * 2018-07-13 2018-12-18 重庆邮电大学 一种卷积神经网络算法的fpga并行系统
CN109447893A (zh) * 2019-01-28 2019-03-08 深兰人工智能芯片研究院(江苏)有限公司 一种卷积神经网络fpga加速中图像前处理方法及装置
CN110543849B (zh) 2019-08-30 2022-10-04 北京市商汤科技开发有限公司 检测器的配置方法及装置、电子设备和存储介质
CN111260037B (zh) 2020-02-11 2023-10-13 深圳云天励飞技术股份有限公司 图像数据的卷积运算方法、装置、电子设备及存储介质
CN111951269B (zh) * 2020-10-16 2021-01-05 深圳云天励飞技术股份有限公司 图像处理方法及相关设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180314671A1 (en) 2017-04-27 2018-11-01 Falcon Computing Systems And Methods For Systolic Array Design From A High-Level Program
US20190042923A1 (en) 2017-08-07 2019-02-07 Intel Corporation System and method for an optimized winograd convolution accelerator
CN111178519A (zh) 2019-12-27 2020-05-19 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速系统及方法

Also Published As

Publication number Publication date
US20230273829A1 (en) 2023-08-31
CN113989169A (zh) 2022-01-28
JP2023531070A (ja) 2023-07-20
KR20230081697A (ko) 2023-06-07
WO2022007265A1 (zh) 2022-01-13
EP4181024A4 (en) 2024-04-24
EP4181024A1 (en) 2023-05-17
US12056530B2 (en) 2024-08-06

Similar Documents

Publication Publication Date Title
JP7419574B2 (ja) 膨張畳み込み加速演算方法及び装置
US11468301B2 (en) Method and apparatus for performing operation of convolutional layer in convolutional neural network
KR102659997B1 (ko) 저전력 컨볼루션 신경망 추론 애플리케이션을 위한 메모리 대역폭 감소 기술
US11256977B2 (en) Lowering hardware for neural networks
US11436017B2 (en) Data temporary storage apparatus, data temporary storage method and operation method
KR101298393B1 (ko) 그래픽 처리 유닛 상에서 콘볼루션 신경망을 트레이닝하는방법
JP2019109896A (ja) ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス
JP2019109895A (ja) ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス
JP2021509747A (ja) ハードウェアベースのプーリングのシステムおよび方法
CN110989920B (zh) 能量高效的存储器系统和方法
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
US11763131B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
US20230289230A1 (en) Method and apparatus for accelerating convolutional neural network
CN113673701B (zh) 神经网络模型的运行方法、可读介质和电子设备
KR102470027B1 (ko) 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체
US20200057919A1 (en) Apparatus for processing a neural network
US11599181B1 (en) Systems and methods for reducing power consumption of convolution operations of artificial neural networks
CN111311599B (zh) 图像处理方法、装置、电子设备和存储介质
US20220253683A1 (en) Implementing Fully-Connected Neural-Network Layers in Hardware
JP7332722B2 (ja) データ処理方法、装置、記憶媒体及び電子機器
US11699081B2 (en) Systems and methods for reducing data movement during convolution operations in artificial neural networks
CN117391162A (zh) 基于卷积神经网络的加速器及加速方法
CN114662647A (zh) 处理用于神经网络的层的数据
CN111125627A (zh) 用于池化多维矩阵的方法及相关产品
US20240111840A1 (en) Selecting a Tiling Scheme for Processing Instances of Input Data Through a Neural Netwok

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240110

R150 Certificate of patent or registration of utility model

Ref document number: 7419574

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531