IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 嘉楠明芯(北京)科技有限公司の特許一覧

<>
  • 特許-膨張畳み込み加速演算方法及び装置 図1
  • 特許-膨張畳み込み加速演算方法及び装置 図2
  • 特許-膨張畳み込み加速演算方法及び装置 図3
  • 特許-膨張畳み込み加速演算方法及び装置 図4a
  • 特許-膨張畳み込み加速演算方法及び装置 図4b
  • 特許-膨張畳み込み加速演算方法及び装置 図5
  • 特許-膨張畳み込み加速演算方法及び装置 図6
  • 特許-膨張畳み込み加速演算方法及び装置 図7
  • 特許-膨張畳み込み加速演算方法及び装置 図8
  • 特許-膨張畳み込み加速演算方法及び装置 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-12
(45)【発行日】2024-01-22
(54)【発明の名称】膨張畳み込み加速演算方法及び装置
(51)【国際特許分類】
   G06N 3/0464 20230101AFI20240115BHJP
   G06F 15/80 20060101ALI20240115BHJP
   G06F 17/10 20060101ALI20240115BHJP
【FI】
G06N3/0464
G06F15/80
G06F17/10 A
【請求項の数】 10
(21)【出願番号】P 2022580125
(86)(22)【出願日】2020-11-03
(65)【公表番号】
(43)【公表日】2023-07-20
(86)【国際出願番号】 CN2020126195
(87)【国際公開番号】W WO2022007265
(87)【国際公開日】2022-01-13
【審査請求日】2022-12-23
(31)【優先権主張番号】202010659646.6
(32)【優先日】2020-07-08
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】521211365
【氏名又は名称】嘉楠明芯(北京)科技有限公司
【氏名又は名称原語表記】Canaan Bright Sight Co., Ltd
【住所又は居所原語表記】Room 206, Tower C, Block 27, Zpark 8#, Haidian District, Beijing, 100094, China
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】徐兵
(72)【発明者】
【氏名】張楠▲ゲン▼
【審査官】小林 秀和
(56)【参考文献】
【文献】米国特許出願公開第2019/0042923(US,A1)
【文献】中国特許出願公開第111178519(CN,A)
【文献】米国特許出願公開第2018/0314671(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/0464
G06F 15/80
G06F 17/10
(57)【特許請求の範囲】
【請求項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に記載の装置。

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