JP2022540301A - 逆畳み込みのための最適化 - Google Patents
逆畳み込みのための最適化 Download PDFInfo
- Publication number
- JP2022540301A JP2022540301A JP2021571018A JP2021571018A JP2022540301A JP 2022540301 A JP2022540301 A JP 2022540301A JP 2021571018 A JP2021571018 A JP 2021571018A JP 2021571018 A JP2021571018 A JP 2021571018A JP 2022540301 A JP2022540301 A JP 2022540301A
- Authority
- JP
- Japan
- Prior art keywords
- pixel
- dot product
- output image
- kernel
- pixels
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000005457 optimization Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000013507 mapping Methods 0.000 claims description 55
- 238000013528 artificial neural network Methods 0.000 description 79
- 238000013473 artificial intelligence Methods 0.000 description 40
- 238000012545 processing Methods 0.000 description 38
- 210000002569 neuron Anatomy 0.000 description 28
- 230000008569 process Effects 0.000 description 27
- 238000013527 convolutional neural network Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 16
- 230000015654 memory Effects 0.000 description 13
- 230000004913 activation Effects 0.000 description 10
- 238000011176 pooling Methods 0.000 description 10
- 238000012549 training Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 8
- 230000035508 accumulation Effects 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 239000013598 vector Substances 0.000 description 7
- 238000003491 array Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4053—Scaling of whole images or parts thereof, e.g. expanding or contracting based on super-resolution, i.e. the output image resolution being higher than the sensor resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4023—Scaling of whole images or parts thereof, e.g. expanding or contracting based on decimating pixels or lines of pixels; based on inserting pixels or lines of pixels
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Computational Mathematics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本明細書の開示は、ドット積の数を減らすことによって逆畳み込みの計算効率を改善するためのシステム、方法、および、デバイスを含む。一態様では、画素のセットを有する入力画像が受信される。入力画像の画素のセットの中の1つのサブセットおよびカーネルの一部分に対して第1のドット積が実施されて出力画像の第1の画素を生成することができる。実施される第1のドット積に関連して実施される乗算の数は、カーネルの要素の数より少なくできる。出力画像の第1の画素を生成するために、カーネルの残りの部分に対する第2のドット積はバイパスされ得る。【選択図】図1A
Description
本開示は、一般に、逆畳み込み演算に関し、ドット積演算のための計算量を減らすことによって逆畳み込みの計算効率を改善することを含むがこれに限定されない。
逆畳み込みは、画像の解像度またはアップスケーリングを改善することを可能にする。一実現例では、画素のセットを有する入力画像に基づいて、所定の値(例えば、ヌルデータ)を有する画素を入力画像の画素のセットに対してパディングまたは追加することによって、入力画像より大きい画素数を有する中間画像が得られる。それから、中間画像はカーネルに畳み込まれ、入力画像より高い解像度を有するアップスケールされた画像の画素を得ることができる。例えば、ドット積演算は、中間画像の異なるサブセットおよびカーネルに対して実施され得る。しかしながら、中間画像を生成して、中間画像をカーネルに畳み込むことは多数のドット積演算を含む場合がある。このことは計算的に消耗的かつ非効率的である。
本明細書において開示される様々な実施形態は、入力画像に逆畳み込みを実施する方法に関する。いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって画素のセットを有する入力画像を受信することを含む。いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって、入力画像の画素のセットの中の1つのサブセットおよびカーネルの1つの部分に対して第1のドット積を実施して出力画像の第1の画素を生成することを含む。第1のドット積のために実施される乗算の数は、カーネルの要素の数より少なくできる。いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって、カーネルの残りの部分に対する第2のドット積をバイパスして出力画像の第1の画素を生成することを含む。
いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって、出力画像の各画素ごとにバイパスすべき対応するドット積を示すマッピング情報にしたがって、出力画像の第1の画素のためにバイパスすべき第2のドット積を識別することを含む。いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって、マッピング情報にしたがって、カーネルの残りの部分に対する第2のドット積をバイパスして出力画像の第1の画素を生成することを含む。
いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって、出力画像の各画素ごとに実施すべき対応するドット積を示すマッピング情報にしたがって、出力画像の第1の画素のために実施すべき第1のドット積を識別することを含む。いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって、マッピング情報にしたがって、入力画像の画素のセットの中の1つのサブセットおよびカーネルの1つの部分に対する第1のドット積を実施して出力画像の第1の画素を生成することを含む。いくつかの実施形態では、出力画像は入力画像より多数の画素数を有する。
いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって、i)入力画像の画素のセットの中の1つのサブセット、および、ii)カーネルの他の1つの部分に対する第3のドット積を実施して、出力画像の第2の画素を生成することを含む。いくつかの実施形態では、出力画像の第1の画素を生成するため第1のドット積のために実施される乗算の数は、出力画像の第2の画素を生成するための第3のドット積のために実施される乗算の数と同じである。
いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって、i)入力画像の画素のセットの中の他の1つのサブセット、および、ii)カーネルの1つの部分に対する第3のドット積を実施して、出力画像の第2の画素を生成することを含む。いくつかの実施形態では、出力画像の第1の画素を生成するための第1のドット積のために実施される乗算の数は、出力画像の第2の画素を生成するための第3のドット積のために実施される乗算の数と同じである。
いくつかの実施形態では、方法は、1つまたは複数のプロセッサによって、i)入力画像の画素のセットの中の他の1つのサブセット、および、ii)カーネルの他の1つの部分に対する第3のドット積を実施して、出力画像の第2の画素を生成することを含む。いくつかの実施形態では、出力画像の第1の画素を生成するための第1のドット積のために実施される乗算の数は、出力画像の第2の画素を生成するための第3のドット積のために実施される乗算の数と異なる。
本明細書において開示される様々な実施形態は、入力画像に逆畳み込みを実施するシステムに関する。いくつかの実施形態では、システムは、画素のセットを有する入力画像を受信して、入力画像の画素のセットの中の1つのサブセットおよびカーネルの1つの部分に対して第1のドット積を実施して出力画像の第1の画素を生成するように構成された1つまたは複数のプロセッサを含む。第1のドット積に関連して実施される乗算の数は、カーネルの要素の数より少なくできる。いくつかの実施形態では、1つまたは複数のプロセッサは、カーネルの残りの部分に対する第2のドット積をバイパスして出力画像の第1の画素を生成するように構成される。
いくつかの実施形態では、1つまたは複数のプロセッサは、出力画像の各画素ごとにバイパスすべき対応するドット積を示すマッピング情報にしたがって、出力画像の第1の画素のためにバイパスすべき第2のドット積を識別するように構成される。いくつかの実施形態では、1つまたは複数のプロセッサは、マッピング情報にしたがってカーネルの残りの部分に対する第2のドット積をバイパスして出力画像の第1の画素を生成するように構成される。
いくつかの実施形態では、1つまたは複数のプロセッサは、出力画像の各画素ごとに実施すべき対応するドット積を示すマッピング情報にしたがって、出力画像の第1の画素のために実施すべき第1のドット積を識別するように構成される。いくつかの実施形態では、1つまたは複数のプロセッサは、マッピング情報にしたがって、入力画像の画素のセットの中の1つのサブセットおよびカーネルの1つの部分に対する第1のドット積を実施して出力画像の第1の画素を生成するように構成される。いくつかの実施形態では、出力画像は入力画像より多数の画素数を有する。
いくつかの実施形態では、1つまたは複数のプロセッサは、i)入力画像の画素のセットの中の1つのサブセット、および、ii)カーネルの他の1つの部分に対する第3のドット積を実施して、出力画像の第2の画素を生成するように構成される。いくつかの実施形態では、出力画像の第1の画素を生成するための第1のドット積に関連して実施される乗算の数は、出力画像の第2の画素を生成するための第3のドット積に関連して実施される乗算の数と同じである。
いくつかの実施形態では、1つまたは複数のプロセッサは、i)入力画像の画素のセットの中の他の1つのサブセット、および、ii)カーネルの1つの部分に対する第3のドット積を実施して、出力画像の第2の画素を生成するように構成される。いくつかの実施形態では、出力画像の第1の画素を生成するための第1のドット積に関連して実施される乗算の数は、出力画像の第2の画素を生成するための第3のドット積に関連して実施される乗算の数と同じである。
いくつかの実施形態では、i)入力画像の画素のセットの中の他の1つのサブセット、および、ii)カーネルの他の1つの部分に対する第3のドット積を実施して、出力画像の第2の画素を生成するように構成される。いくつかの実施形態では、出力画像の第1の画素を生成するための第1のドット積に関連して実施される乗算の数は、出力画像の第2の画素を生成するための第3のドット積に関連して実施される乗算の数と異なる。
上記および他の態様ならびに実現例について、以下で詳細に考察する。上述の情報および以下で詳述する説明は、様々な態様および実現例の実例を含み、特許請求する態様および実現例の性質ならびに特徴を理解するための概観または枠組みを提供する。本発明の1つもしくは複数の態様または実施形態に組み込むのに好適なものとして、本明細書に記載される任意の特徴は、本開示のあらゆる態様および実施形態全体にわたって一般化できるものであることが意図されるものと理解されるであろう。図面は、様々な態様および実現例の例示ならびに更なる理解を提供し、本明細書に組み込まれるとともに本明細書の一部を構成する。
添付図面は縮尺通りに描かれることを意図しない。様々な図面における同様の参照番号および記号は同様の要素を示す。明瞭にするため、全ての図面において全ての構成要素に符号が付されるわけではない。
特定の実施形態を詳細に示す図面に移る前に、本開示は、明細書に記載されるかまたは図面に例示される、詳細もしくは方法論に限定されないことが理解されるべきである。また、本明細書で使用する専門用語は、単に説明のためのものであって限定とみなされるべきでないことが理解されるべきである。
以下の本発明の様々な実施形態についての説明を読むために、本明細書のセクションおよびそれらそれぞれの内容について、次の説明が有用であり得る。
セクションAは、本発明のシステム、方法、およびデバイスの一実施形態を実践または実現するのに有用な、環境、システム、構成、および/または他の態様について記載する。
セクションBは、ドット積演算のための計算量を減らすことによって効率的な逆畳み込みを実施するためのデバイス、システム、および、方法の実施形態について記載する。
セクションAは、本発明のシステム、方法、およびデバイスの一実施形態を実践または実現するのに有用な、環境、システム、構成、および/または他の態様について記載する。
セクションBは、ドット積演算のための計算量を減らすことによって効率的な逆畳み込みを実施するためのデバイス、システム、および、方法の実施形態について記載する。
A.人工知能に関連する処理のための環境
システム、デバイス、および/または方法の実施形態の詳細についてセクションBで考察する前に、システム、デバイス、および/または方法の特定の実施形態を実践もしくは実現するのに有用な、環境、システム、構成、および/または他の態様について考察するのが有用であり得る。ここで図1Aを参照すると、人工知能(AI)に関連する処理を実施するためのシステムの一実施形態が示される。概要では、システムは、入力データ110を使用してAIに関連する処理を実施することができる、1つまたは複数のAIアクセラレータ108を含む。AIアクセラレータ108として参照しているが、場合によっては、ニューラルネットワークアクセラレータ(NNA)、ニューラルネットワークチップもしくはハードウェア、AIプロセッサ、AIチップなどと呼ばれる。AIアクセラレータ108は、入力データ110および/またはパラメータ128(例えば、重みおよび/またはバイアス情報)にしたがって、AIに関連する処理を実施して、出力データ112を出力または提供することができる。AIアクセラレータ108は、1つもしくは複数のニューラルネットワーク114(例えば、人工ニューラルネットワーク)、1つもしくは複数のプロセッサ24、および/または1つもしくは複数の記憶デバイス126を含むことができ、ならびに/あるいは実装することができる。
システム、デバイス、および/または方法の実施形態の詳細についてセクションBで考察する前に、システム、デバイス、および/または方法の特定の実施形態を実践もしくは実現するのに有用な、環境、システム、構成、および/または他の態様について考察するのが有用であり得る。ここで図1Aを参照すると、人工知能(AI)に関連する処理を実施するためのシステムの一実施形態が示される。概要では、システムは、入力データ110を使用してAIに関連する処理を実施することができる、1つまたは複数のAIアクセラレータ108を含む。AIアクセラレータ108として参照しているが、場合によっては、ニューラルネットワークアクセラレータ(NNA)、ニューラルネットワークチップもしくはハードウェア、AIプロセッサ、AIチップなどと呼ばれる。AIアクセラレータ108は、入力データ110および/またはパラメータ128(例えば、重みおよび/またはバイアス情報)にしたがって、AIに関連する処理を実施して、出力データ112を出力または提供することができる。AIアクセラレータ108は、1つもしくは複数のニューラルネットワーク114(例えば、人工ニューラルネットワーク)、1つもしくは複数のプロセッサ24、および/または1つもしくは複数の記憶デバイス126を含むことができ、ならびに/あるいは実装することができる。
上述の要素または構成要素はそれぞれ、ハードウェア、またはハードウェアとソフトウェアの組み合わせの形で実装される。例えば、これらの要素または構成要素はそれぞれ、任意のアプリケーション、プログラム、ライブラリ、スクリプト、タスク、サービス、プロセス、あるいはデジタルおよび/またはアナログ要素(例えば、1つもしくは複数のトランジスタ、論理ゲート、レジスタ、メモリデバイス、抵抗素子、導電素子、容量素子)を含むことができる回路類などのハードウェア上で実行する、任意のタイプおよび形態の実行可能命令を含むことができる。
入力データ110は、AIアクセラレータ108のニューラルネットワーク114を構成、調整、訓練、および/または活性化するための、ならびに/あるいはプロセッサ124によって処理するための、任意のタイプもしくは形態のデータを含むことができる。ニューラルネットワーク114は、場合によっては、人工ニューラルネットワーク(ANN)と呼ばれる。ニューラルネットワークの構成、調整、および/または訓練は、履歴データなど、(例えば、入力データ110としての)訓練データセットがニューラルネットワークに提供されて処理される、機械学習のプロセスを指すかあるいは含むことができる。調整または構成は、ニューラルネットワーク114を訓練または処理して、ニューラルネットワークが精度を改善するのを可能にすることを指すかまたは含むことができる。ニューラルネットワーク114の調整または構成は、例えば、ニューラルネットワーク114に関する問題のタイプもしくは所望の目標に対して成功することが証明されているアーキテクチャを使用した、ニューラルネットワークの設計、形成、構築、合成、および/または確立を含むことができる。場合によっては、1つまたは複数のニューラルネットワーク114は、同じもしくは類似のベースラインモデルで開始してもよいが、調整、訓練、または学習プロセスの間、ニューラルネットワーク114の結果は、ベースラインモデルであるかあるいは異なる目標もしくは目的のために調整または訓練された異なるニューラルネットワークよりも高いレベルの精度および信頼性で、特定のタイプの入力を処理し、特定のタイプの出力を生成するように、各ニューラルネットワーク114を調整することができるような、十分に異なるものであることができる。ニューラルネットワーク114の調整は、各ニューラルネットワーク114に対して異なるパラメータ128を設定すること、各ニューラルネットワーク114に対してパラメータ128を異なるように微調整すること、または異なる重み(例えば、ハイパーパラメータ、もしくは学習率)、テンソルフローなどを割り当てることを含むことができる。したがって、ニューラルネットワークならびに/あるいはシステムの調整または訓練プロセスおよび目標に基づいて、ニューラルネットワーク114に対して適切なパラメータ128を設定することで、システム全体の性能を改善することができる。
AIアクセラレータ108のニューラルネットワーク114は、例えば、畳み込みニューラルネットワーク(CNN)、深層畳み込みネットワーク、順伝播型ニューラルネットワーク(例えば、多層パーセプトロン(MLP))、深層順伝播型ニューラルネットワーク、放射基底関数ニューラルネットワーク、コホネン自己組織化ニューラルネットワーク、回帰型ニューラルネットワーク、モジュール型ニューラルネットワーク、長期/短期メモリニューラルネットワークなど、任意のタイプのニューラルネットワークを含むことができる。ニューラルネットワーク114は、自然言語処理など、データ(例えば、画像、音声、映像)処理、オブジェクトもしくは特徴認識、レコメンダ機能、データもしくは画像分類、データ(例えば、画像)解析などを実施するために展開または使用することができる。
一例として、また1つまたは複数の実施形態では、ニューラルネットワーク114は、畳み込みニューラルネットワークとして構成することができ、または畳み込みニューラルネットワークを含むことができる。畳み込みニューラルネットワークは、それぞれ異なる目的に役立ち得る、1つもしくは複数の畳み込みセル(またはプーリング層)およびカーネルを含むことができる。畳み込みニューラルネットワークは、畳み込みカーネル(場合によっては、単に「カーネル」と呼ばれる)を含み、組み込み、および/または使用することができる。畳み込みカーネルは入力データを処理することができ、プーリング層は、例えば、maxなどの非線形関数を使用して、データを単純化し、それによって不要な特徴を低減することができる。畳み込みニューラルネットワークを含むニューラルネットワーク114は、画像、音声、または任意のデータの認識もしくは他の処理を容易にすることができる。例えば、(例えば、センサからの)入力データ110を、ファンネルを形成する畳み込みニューラルネットワークの畳み込み層に渡して、入力データ110の検出された特徴を圧縮することができる。畳み込みニューラルネットワークの第1の層は第1の特性を検出することができ、第2の層は第2の特性を検出することができ、その先も同様である。
畳み込みニューラルネットワークは、視覚心像、音声情報、および/または他の任意のタイプもしくは形態の入力データ110を解析するように構成された、深層順伝播型人工ニューラルネットワークのタイプであることができる。畳み込みニューラルネットワークは、最小限の前処理を使用するように設計された、多層パーセプトロンを含むことができる。畳み込みニューラルネットワークは、重み共有アーキテクチャおよび翻訳不変性特性に基づいて、シフト不変または空間不変人工ニューラルネットワークを含むことができ、またはそのように呼ぶことができる。畳み込みニューラルネットワークは、他のデータ分類/処理アルゴリズムと比較して相対的に少ない前処理を使用することができるので、畳み込みニューラルネットワークは、他のデータ分類/処理アルゴリズムのためにマニュアル設計されてもよいフィルタを自動的に学習して、ニューラルネットワーク114の構成、確立、またはセットアップと関連付けられた効率を改善することによって、他のデータ分類/処理技術と比べて技術的利点を提供することができる。
ニューラルネットワーク114は、ニューロンもしくはノードの、入力層116および出力層122を含むことができる。ニューラルネットワーク114はまた、ニューロンもしくはノードの、畳み込み層、プーリング層、全結合層、および/または正規化層を含むことができる、1つまたは複数の隠れ層118、119を有することができる。ニューラルネットワーク114では、各ニューロンは、前の層におけるいくつかの位置から入力を受信することができる。全結合層では、各ニューロンは、前の層の全ての要素からの入力を受信することができる。
ニューラルネットワーク114の各ニューロンは、前の層の受容野からの入力値に何らかの関数を適用することによって、出力値を計算することができる。入力値に適用される関数は、重みのベクトルおよびバイアス(一般的には実数)によって指定される。ニューラルネットワーク114における(例えば、訓練フェーズ中の)学習は、バイアスおよび/または重みを漸増的に調節することによって進行することができる。重みのベクトルおよびバイアスは、フィルタと呼ぶことができ、入力の何らかの特徴(例えば、特定の形状)を表すことができる。畳み込みニューラルネットワークの際立った特徴は、多くのニューロンが同じフィルタを共有できることである。これにより、各受容野が独自のバイアスおよび重みのベクトルを有するのではなく、単一のバイアスおよび重みの単一のベクトルを、該フィルタを共有する全ての受容野にわたって使用することができるので、メモリフットプリントが低減される。
例えば、畳み込み層では、システムは、畳み込み演算を入力層116に適用して、結果を次の層に渡すことができる。畳み込みは、個々のニューロンの応答をエミュレートして刺激を入力することができる。各畳み込みニューロンは、その受容野に対してのみデータを処理することができる。畳み込み演算は、全結合順伝播型ニューラルネットワークと比較して、ニューラルネットワーク114で使用されるニューロンの数を低減することができる。したがって、畳み込み演算は、自由パラメータの数を低減して、より少ないパラメータでネットワークをより深層化することを可能にすることができる。例えば、入力データ(例えば、画像データ)サイズにかかわらず、同じ共有重みをそれぞれ有するサイズ5×5のタイリング領域は、25個のみの学習可能パラメータを使用してもよい。このように、畳み込みニューラルネットワークを有する第1のニューラルネットワーク114は、逆伝播を使用することによって多くの層を有する従来の多層ニューラルネットワークを訓練する際の、勾配消失または発散の問題を解決することができる。
ニューラルネットワーク114(例えば、畳み込みニューラルネットワークで構成される)は、1つまたは複数のプーリング層を含むことができる。1つまたは複数のプーリング層は、ローカルプーリング層またはグローバルプーリング層を含むことができる。プーリング層は、1つの層におけるニューロンクラスタの出力を組み合わせて、次の層における単一のニューロンとすることができる。例えば、最大プーリングは、前の層におけるニューロンのクラスタそれぞれからの最大値を使用することができる。別の例は、前の層におけるニューロンのクラスタそれぞれからの平均値を使用することができる、平均プーリングである。
ニューラルネットワーク114(例えば、畳み込みニューラルネットワークで構成される)は、全結合層を含むことができる。全結合層は、1つの層の全てのニューロンを別の層の全てのニューロンに結合することができる。ニューラルネットワーク114は、畳み込み層で重みを共有して構成することができ、それは同じフィルタが層内の各受容野に使用されることを指すことができ、それにより、メモリフットプリントが低減され、第1のニューラルネットワーク114の性能が改善される。
隠れ層118、119は、入力データ(例えば、仮想現実システムなどからのセンサデータ)に基づいて、情報を検出するように調整または構成されるフィルタを含むことができる。システムがニューラルネットワーク114(例えば、畳み込みニューラルネットワーク)の各層を通るにつれて、システムは、第1の層からの入力を翻訳し、変換された入力を第2の層に出力することができ、その先も同様である。ニューラルネットワーク114は、検出、処理、および/または計算されるオブジェクトもしくは情報のタイプ、ならびに入力データ110のタイプに基づいて、1つまたは複数の隠れ層118、119を含むことができる。
いくつかの実施形態では、畳み込み層は、ニューラルネットワーク114(例えば、CNNとして構成される)のコアビルディングブロックである。層のパラメータ128は、小さい受容野を有するが、入力ボリュームの深さ全体を通って延在する、学習可能なフィルタ(またはカーネル)のセットを含むことができる。順方向パスの間、各フィルタは、入力ボリュームの幅および高さにわたって畳み込まれて、フィルタのエントリと入力との間のドット積を計算し、該フィルタの二次元活性化マップを作成する。結果として、ニューラルネットワーク114は、入力のある空間位置である特定のタイプの特徴を検出すると活性化する、フィルタを学習させることができる。深さ次元に沿って全てのフィルタの活性化マップを積み重ねることで、畳み込み層の全出力ボリュームが形成される。したがって、出力ボリュームの全てのエントリは、入力の小さい領域に注目し、同じ活性化マップのニューロンとパラメータを共有する、ニューロンの出力として解釈することもできる。畳み込み層では、ニューロンは、前の層の制限されたサブエリアから入力を受信することができる。一般的に、サブエリアは正方形形状のもの(例えば、サイズ5×5)である。ニューロンの入力エリアはその受容野と呼ばれる。そのため、全結合層では、受容野は前の層全体である。畳み込み層では、受容エリアは前の層全体よりも小さいものであり得る。
第1のニューラルネットワーク114は、(例えば、入力データ110に基づいて、オブジェクト、イベント、ワード、および/または他の特徴の確率を検出もしくは決定することによって)入力データ110を検出、分類、セグメント化、および/または翻訳するように訓練することができる。例えば、ニューラルネットワーク114の第1の入力層116は、入力データ110を受信し、入力データ110を処理してデータを第1の中間出力に変換し、第1の中間出力を第1の隠れ層118に伝達することができる。第1の隠れ層118は、第1の中間出力を受信し、第1の中間出力を処理して第1の中間出力を第2の中間出力に変換し、第2の中間出力を第2の隠れ層119に伝達することができる。第2の隠れ層119は、第2の中間出力を受信し、第2の中間出力を処理して第2の中間出力を第3の中間出力に変換し、第3の中間出力を、例えば出力層122に伝達することができる。出力層122は、第3の中間出力を受信し、第3の中間出力を処理して第3の中間出力を出力データ112に変換し、出力データ112を(例えば、場合によっては、ユーザに対するレンダリングのため、格納のためなど、後処理エンジンに)伝達することができる。出力データ112は、例として、オブジェクト検出データ、強化/翻訳/拡張されたデータ、推奨、分類、および/またはセグメント化されたデータを含むことができる。
再び図1Aを参照すると、AIアクセラレータ108は、1つまたは複数の記憶デバイス126を含むことができる。記憶デバイス126は、AIアクセラレータ108と関連付けられた任意のタイプもしくは形態のデータを、格納、保持、または維持するように、設計または実装することができる。例えば、データは、AIアクセラレータ108によって受信される入力データ110、および/または出力データ112(例えば、次のデバイスもしくは処理段階に出力される前)を含むことができる。データは、ニューラルネットワーク114および/またはプロセッサ124の処理段階のいずれかに使用される、またはいずれかからの、中間データを含むことができる。データは、記憶デバイス126から読み取るかまたはアクセスすることができる、ニューラルネットワーク114のニューロンに入力される、また該ニューロンで処理する、1つもしくは複数のオペランドを含むことができる。例えば、データは、記憶デバイス126に格納し、そこから読み取るかまたはアクセスすることができる、入力データ、重み情報、および/またはバイアス情報、活性化関数情報、ならびに/あるいは1つもしくは複数のニューロン(またはノード)のためのパラメータ128、および/またはニューラルネットワーク114の層を含むことができる。データは、記憶デバイス126に書き込み、またそこに格納することができる、ニューラルネットワーク114のニューロンからの出力データを含むことができる。例えば、データは、記憶デバイス126に転送するかもしくは書き込み、格納することができる、ニューラルネットワーク114の1つもしくは複数のニューロン(またはノード)および/または層のための、活性化データ、改良もしくは更新されたデータ(例えば、訓練段階などからの重み情報および/またはバイアス情報、活性化関数情報、および/または他のパラメータ128)を含むことができる。
いくつかの実施形態では、AIアクセラレータ108は1つまたは複数のプロセッサ124を含むことができる。1つまたは複数のプロセッサ124は、ニューラルネットワーク114またはAIアクセラレータ108のうち任意の1つもしくは複数に対する入力データを前処理するための、ならびに/あるいはニューラルネットワーク114またはAIアクセラレータ108のうち任意の1つもしくは複数に対する出力データを後処理するための、任意の論理、回路類、および/または処理構成要素(例えば、マイクロプロセッサ)を含むことができる。1つまたは複数のプロセッサ124は、ニューラルネットワーク114またはAIアクセラレータ108の1つもしくは複数の演算を構成、制御、および/または管理するための、論理、回路類、処理構成要素、および/または機能性を提供することができる。例えば、プロセッサ124は、ニューラルネットワーク114と関連付けられたデータまたは信号を受信して、(例えば、ニューラルネットワーク114の演算を実装する回路類に対するクロックゲート制御を介して)消費電力を制御または低減してもよい。別の例として、プロセッサ124は、(例えば、AIアクセラレータ108の様々な構成要素における、例えば並列の)別個の処理のため、(例えば、AIアクセラレータ108の同じ構成要素における、異なる時間もしくは段階での)逐次処理のため、あるいは記憶デバイスの異なるメモリスライスに、または異なる記憶デバイスに格納するため、データを区画化および/または再配置してもよい。いくつかの実施形態では、プロセッサ124は、特定の重み、活性化関数、および/またはパラメータ情報の識別、選択、ならびに/あるいはニューラルネットワーク114のニューロンおよび/または層へのロードによって、特定の文脈に対して演算を行い、特定のタイプの処理を提供し、ならびに/あるいは特定のタイプの入力データをアドレスするように、ニューラルネットワーク114を構成することができる。
いくつかの実施形態では、AIアクセラレータ108は、ディープラーニングおよび/またはAIワークロードを扱うかもしくは処理するように、設計および/または実装される。例えば、AIアクセラレータ108は、人工ニューラルネットワーク、マシンビジョン、および機械学習を含む人工知能用途のため、ハードウェアアクセラレーションを提供することができる。AIアクセラレータ108は、ロボティックス関連、物のインターネット(IoT)関連、または他のデータ集約的もしくはセンサ駆動のタスクを扱う演算向けに構成することができる。AIアクセラレータ108は、マルチコアまたは複数の処理要素(PE)設計を含んでもよく、人工現実(例えば、仮想、拡張、もしくは混合現実)システム、スマートフォン、タブレット、およびコンピュータなど、様々なタイプおよび形態のデバイスに組み込むことができる。AIアクセラレータ108の特定の実施形態は、少なくとも1つのデジタル信号プロセッサ(DSP)、コプロセッサ、マイクロプロセッサ、コンピュータシステム、プロセッサのヘテロジニアスコンピューティング構成、グラフィックス処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、および/または特定用途向け集積回路(ASIC)を含むかあるいはそれらを使用して実装することができる。AIアクセラレータ108は、トランジスタベース、半導体ベース、および/または量子コンピューティングベースのデバイスであることができる。
次に図1Bを参照すると、AIに関連する処理を実施するためのデバイスの例示の一実施形態が示される。概要では、デバイスは、例えば、図1Aに関連して上述した1つまたは複数の特徴を有する、AIアクセラレータ108を含むかまたはそれに対応することができる。AIアクセラレータ108は、1つまたは複数の記憶デバイス126(例えば、スタティックランダムアクセスメモリ(SRAM)デバイスなどのメモリ)、1つまたは複数のバッファ、複数の処理要素(PE)回路またはPE回路のアレイ、他の論理または回路類(例えば、加算器回路類)、ならびに/あるいは他の構造または構成(例えば、相互接続、データバス、クロック回路類、電力ネットワーク)を含むことができる。上述の要素または構成要素はそれぞれ、ハードウェア、または少なくともハードウェアとソフトウェアの組み合わせの形で実装される。ハードウェアは、例えば、回路要素(例えば、1つもしくは複数のトランジスタ、論理ゲート、レジスタ、メモリデバイス、抵抗素子、導電素子、容量素子、および/またはワイヤもしくは導電性コネクタ)を含むことができる。
AIアクセラレータ108において実装されたニューラルネットワーク114(例えば、人工ニューラルネットワーク)では、ニューロンは、様々な形態を取ることができ、処理要素(PE)またはPE回路と呼ぶことができる。ニューロンは、対応するPE回路として実装することができ、ニューロンで起こり得る処理/活性化は、PE回路で実施することができる。PEは接続されて、異なるパターンが異なる機能的目的に役立つ、特定のネットワークパターンまたはアレイとなる。人工ニューラルネットワークのPEは、(例えば、半導体の実現例の実施形態では)電気的に動作し、アナログ、デジタル、またはハイブリッドのいずれかであってもよい。生体シナプスの作用に匹敵するために、PE間の接続に、適正なシステム出力を作成するように校正または「訓練」することができる、乗法的な重みを割り当てることができる。
PEは、(例えば、ニューロンのマッカロック-ピッツモデルを表す)次式に関して定義することができる。
ζ=Σiwixi (1)
y=σ(ζ) (2)
式中、ζは入力の重み付き合計(例えば、入力ベクトルおよびタップ重みベクトルの内積)であり、σ(ζ)は重み付き合計の関数である。重みおよび入力要素がベクトルwおよびxを形成する場合、重み付き合計ζは単純なドット積となる。
ζ=w・x (3)
これは、活性化関数(例えば、閾値比較の場合)または伝達関数のどちらかと呼ばれることがある。いくつかの実施形態では、1つまたは複数のPEはドット積エンジンと呼ばれる場合がある。ニューラルネットワーク114に対する入力(例えば、入力データ110)xは、入力空間からのものであることができ、出力(例えば、出力データ112)は出力空間の一部である。いくつかのニューラルネットワークでは、出力空間Yは、{0,1}のように単純なものであってもよく、または複雑な多次元(例えば、複数チャネル)空間(例えば、畳み込みニューラルネットワークの場合)であってもよい。ニューラルネットワークは、入力空間の自由度ごとに1つの入力、および出力空間の自由度ごとに1つの出力を有する傾向がある。
ζ=Σiwixi (1)
y=σ(ζ) (2)
式中、ζは入力の重み付き合計(例えば、入力ベクトルおよびタップ重みベクトルの内積)であり、σ(ζ)は重み付き合計の関数である。重みおよび入力要素がベクトルwおよびxを形成する場合、重み付き合計ζは単純なドット積となる。
ζ=w・x (3)
これは、活性化関数(例えば、閾値比較の場合)または伝達関数のどちらかと呼ばれることがある。いくつかの実施形態では、1つまたは複数のPEはドット積エンジンと呼ばれる場合がある。ニューラルネットワーク114に対する入力(例えば、入力データ110)xは、入力空間からのものであることができ、出力(例えば、出力データ112)は出力空間の一部である。いくつかのニューラルネットワークでは、出力空間Yは、{0,1}のように単純なものであってもよく、または複雑な多次元(例えば、複数チャネル)空間(例えば、畳み込みニューラルネットワークの場合)であってもよい。ニューラルネットワークは、入力空間の自由度ごとに1つの入力、および出力空間の自由度ごとに1つの出力を有する傾向がある。
いくつかの実施形態では、PEは、シストリックアレイとして配置および/または実装することができる。シストリックアレイは、セルまたはノードと呼ばれる、PEなどの結合されたデータ処理装置(DPU)のネットワーク(例えば、ホモジニアスネットワーク)であることができる。各ノードまたはPEは、上流側の隣接するノードまたはPEから受信したデータの関数として、部分結果を独立して計算することができ、結果を自身に格納することができ、結果を例えば下流側に渡すことができる。シストリックアレイは、特定用途向けに構成されたハードワイヤードまたはソフトウェアであることができる。ノードまたはPEは、固定された同一のものであることができ、シストリックアレイの相互接続はプログラム可能であることができる。シストリックアレイは同期型データ転送に依存することができる。
再び図1Bを参照すると、PE120に対する入力xは、記憶デバイス126(例えば、SRAM)から読み取られるかまたはアクセスされる、入力ストリーム132の一部であることができる。入力ストリーム132は、PEの1つの行(水平のバンクもしくはグループ)に方向付けることができ、PEのうち1つもしくは複数にわたって共有するか、またはそれぞれのPEに対する入力としてのデータ部分(重なり合うもしくは重なり合わないデータ部分)に区画化することができる。重みストリーム(例えば、記憶デバイス126から読み取られる)における重み134(もしくは重み情報)は、PEの列(垂直のバンクもしくはグループ)に方向付けるかまたは提供することができる。列のPEはそれぞれ、同じ重み134を共有するか、または対応する重み134を受信してもよい。標的のPEそれぞれに対する入力および/または重みは、(例えば、他のPEを通過せずに)標的のPEに(例えば、記憶デバイス126から)直接ルーティングすることができ、あるいは1つもしくは複数のPEを通して(例えば、PEの行もしくは列に沿って)ルーティングすることができる。各PEの出力は、PEアレイの外に(例えば、他のPEを通過せずに)直接ルーティングすることができ、あるいは1つもしくは複数のPEを通して(例えば、PEの列に沿って)PEアレイを出るようにルーティングすることができる。PEの各列の出力は、それぞれの列の加算器回路類において合算または加算し、PEのそれぞれの列に対するバッファ130に提供することができる。バッファ130は、受信した出力を記憶デバイス126に提供、転送、ルーティング、書込み、および/または格納することができる。いくつかの実施形態では、記憶デバイス126によって格納された出力(例えば、ニューラルネットワークの1つの層からの活性化データ)を、記憶デバイス126から検索するかまたは読み取り、後の時間における(ニューラルネットワークの後続層の)処理のため、PE120のアレイに対する入力として使用することができる。特定の実施形態では、記憶デバイス126によって格納された出力を、AIアクセラレータ108に対する出力データ112として、記憶デバイス126から検索するかまたは読み取ることができる。
次に図1Cを参照すると、AIに関連する処理を実施するためのデバイスの例示の一実施形態が示される。概要では、デバイスは、例えば、図1Aおよび図1Bに関連して上述した1つまたは複数の特徴を有する、AIアクセラレータ108を含むかまたはそれに対応することができる。AIアクセラレータ108は、1つまたは複数のPE120、他の論理または回路類(例えば、加算器回路類)、ならびに/あるいは他の構造または構成(例えば、相互接続、データバス、クロック回路類、電力ネットワーク)を含むことができる。上述の要素または構成要素はそれぞれ、ハードウェア、または少なくともハードウェアとソフトウェアの組み合わせの形で実装される。ハードウェアは、例えば、回路要素(例えば、1つもしくは複数のトランジスタ、論理ゲート、レジスタ、メモリデバイス、抵抗素子、導電素子、容量素子、および/またはワイヤもしくは導電性コネクタ)を含むことができる。
いくつかの実施形態では、PE120は、1つもしくは複数の乗累算(MAC)ユニットまたは回路140を含むことができる。1つまたは複数のPEは、場合によっては、(単独でまたは集合的に)MACエンジンと呼ぶことができる。MACユニットは、乗累算を実施するように構成される。MACユニットは、乗算器回路、加算器回路、および/または累算器回路を含むことができる。乗累算は、2つの数字の積を計算し、その積を累算器に加える。MAC演算は、累算器オペランドa、ならびに入力bおよびcに関連して、次のように表すことができる。
a←a+(b×c) (4)
いくつかの実施形態では、MACユニット140は、組み合わせ論理に実装された乗算器とそれに続く加算器(例えば、組み合わせ論理を含むもの)、ならびに結果を格納する累算器レジスタ(例えば、順序および/または組み合わせ論理を含むもの)を含んでもよい。累算器レジスタの出力は、加算器の1つの入力にフィードバックすることができるので、各クロックサイクルにおいて、乗算器の出力を累算器レジスタに加算することができる。
a←a+(b×c) (4)
いくつかの実施形態では、MACユニット140は、組み合わせ論理に実装された乗算器とそれに続く加算器(例えば、組み合わせ論理を含むもの)、ならびに結果を格納する累算器レジスタ(例えば、順序および/または組み合わせ論理を含むもの)を含んでもよい。累算器レジスタの出力は、加算器の1つの入力にフィードバックすることができるので、各クロックサイクルにおいて、乗算器の出力を累算器レジスタに加算することができる。
上述したように、MACユニット140は、乗算および加算両方の機能を実施することができる。MACユニット140は2つの段階で演算することができる。MACユニット140は、最初に、第1の段階で所与の数(入力)の積を計算し、結果を第2の段階の演算(例えば、加算および/または累算)のために転送することができる。nビットのMACユニット140は、nビット乗算器、2nビット加算器、および2nビット累算器を含むことができる。(例えば、PEにおける)複数のMACユニット140またはMACユニットのアレイ140は、並列積分、畳み込み、相関、行列乗算、データ分類、および/またはデータ解析タスクのため、シストリックアレイの形で配置することができる。
本明細書に記載する様々なシステムおよび/またはデバイスを、コンピューティングシステムに実装することができる。図1Dは、代表的なコンピューティングシステム150のブロック図を示している。いくつかの実施形態では、図1Aのシステムは、コンピューティングシステム150の処理装置156(またはプロセッサ156)の少なくとも一部を形成することができる。コンピューティングシステム150は、例えば、スマートフォン、他の移動電話、タブレットコンピュータ、ウェアラブルコンピューティングデバイス(例えば、スマートウォッチ、眼鏡、ヘッドマウントディスプレイ)、デスクトップコンピュータ、ラップトップコンピュータなどのデバイス(例えばコンシューマデバイス)として実装するか、あるいは分散型コンピューティングデバイスを実装することができる。コンピューティングシステム150は、VR、AR、MR体験を提供するために実装することができる。いくつかの実施形態では、コンピューティングシステム150は、プロセッサ156、記憶デバイス158、ネットワークインターフェース151、ユーザ入力デバイス152、およびユーザ出力デバイス154など、従来の専用またはカスタムのコンピュータ構成要素を含むことができる。
ネットワークインターフェース151は、(ローカル/リモート)サーバまたはバックエンドシステムのネットワークインターフェースも接続される、ローカル/ワイドエリアネットワーク(例えば、インターネット)に対する接続を提供することができる。ネットワークインターフェース151は、有線インターフェース(例えば、イーサネット)、ならびに/あるいはWi-Fi、ブルートゥース、またはセルラーデータネットワーク規格(例えば、3G、4G、5G、LTEなど)などの様々なRFデータ通信規格を実装する無線インターフェースを含むことができる。
ユーザ入力デバイス152は、ユーザがコンピューティングシステム150に信号を提供するのに用いることができる、任意のデバイス(または複数のデバイス)を含むことができ、コンピューティングシステム150は、特定のユーザ要求または情報を示すものとして信号を解釈することができる。ユーザ入力デバイス152は、キーボード、タッチパッド、タッチスクリーン、マウスもしくは他のポインティングデバイス、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、マイクロフォン、センサ(例えば、モーションセンサ、視線追跡センサなど)などのいずれかまたは全てを含むことができる。
ユーザ出力デバイス154は、コンピューティングシステム150がユーザに情報を提供するのに用いることができる、任意のデバイスを含むことができる。例えば、ユーザ出力デバイス154は、コンピューティングシステム150によって生成されるかまたは該システムに送達される画像を表示する、ディスプレイを含むことができる。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)を含む発光ダイオード(LED)、投影システム、陰極線管(CRT)などの様々な画像生成技術を、サポートしている電子部品(例えば、デジタル・アナログもしくはアナログ・デジタル変換器、信号プロセッサなど)とともに組み込むことができる。入力および出力両方のデバイスとして機能する、タッチスクリーンなどのデバイスを使用することができる。ユーザ出力デバイス154は、ディスプレイに加えてまたはディスプレイの代わりに提供することができる。例としては、インジケータ光、スピーカ、触覚「ディスプレイ」デバイス、プリンタなどが挙げられる。
いくつかの実現例としては、コンピュータプログラム命令を非一時的なコンピュータ可読記憶媒体に格納する、マイクロプロセッサ、記憶装置、およびメモリなどの電子構成要素が挙げられる。本明細書に記載する特徴の多くは、コンピュータ可読記憶媒体として符号化されたプログラム命令のセットとして指定される、プロセスとして実現することができる。これらのプログラム命令は、1つまたは複数のプロセッサによって実行されると、プログラム命令に示されている様々な動作をプロセッサに実施させる。プログラム命令またはコンピュータコードの例としては、コンパイラによって作成されるものなどの機械コード、およびインタープリタを使用してコンピュータ、電子構成要素、またはマイクロプロセッサによって実行される、より高次のコードを含むファイルが挙げられる。好適なプログラミングを通して、プロセッサ156は、コンピューティングシステム150に対して、サーバまたはクライアントによって実施されるものとして本明細書に記載する機能性、またはメッセージ管理サービスと関連付けられた他の機能性のいずれかを含む、様々な機能性を提供することができる。
コンピューティングシステム150は例示であり、変形および修正が可能であることが認識されるであろう。本開示と関連して使用されるコンピュータシステムは、本明細書には具体的に記載しない他の能力を有することができる。更に、コンピューティングシステム150について、特定のブロックを参照して記載しているが、該ブロックは説明の便宜上定義されているものであり、構成部品の特定の物理的配置を示唆しようとするものではないことが理解されるべきである。例えば、異なるブロックを、同じ設備に、同じサーバラックに、または同じマザーボード上に配置することができる。更に、ブロックは必ずしも物理的に別個の構成要素に対応していなくてもよい。ブロックは、例えば、プロセッサをプログラミングするか、または適切な制御回路類を提供することによって、様々な動作を実施するように構成することができ、様々なブロックは、初期の構成がどのように得られるかに応じて再構成可能であってもなくてもよい。本開示の実現例は、回路類およびソフトウェアの任意の組み合わせを使用して実装される電子デバイスを含む、様々な装置で実現することができる。
B.ドット積演算の計算量を減らすことによる効率的な逆畳み込みのための方法およびデバイス
本明細書の開示は、ドット積のための計算量を減らすことによって逆畳み込み(時には、逆畳み込みプロセスまたは逆畳み込み演算と呼ばれる)の計算効率を改善するためのシステム、方法、および、デバイスの実施形態を含む。一態様では、開示された逆畳み込みは、入力画像のためのアップスケールされた画像を生成または獲得するために実施される。アップスケールされた画像は、入力画像より、より高い解像度を有するか、または、より大きい画素数を有する。
本明細書の開示は、ドット積のための計算量を減らすことによって逆畳み込み(時には、逆畳み込みプロセスまたは逆畳み込み演算と呼ばれる)の計算効率を改善するためのシステム、方法、および、デバイスの実施形態を含む。一態様では、開示された逆畳み込みは、入力画像のためのアップスケールされた画像を生成または獲得するために実施される。アップスケールされた画像は、入力画像より、より高い解像度を有するか、または、より大きい画素数を有する。
いくつかの実施形態では、画素のセットを有する入力画像が受信される。第1のドット積は入力画像の画素のセットの中の1つのサブセットおよびカーネルの1つの部分に対して実施され、出力画像の第1の画素を生成することができる。一態様では、第1のドット積に関連して実施される乗算の数は、カーネルの要素の数より少なくできる。出力画像の第1の画素を生成するためのカーネルの残りの部分に対する第2のドット積はバイパスまたは省略され得る。それにより、使用する計算リソースをより少なくして、消費電力を減らすことができる。
有利なことに、開示された逆畳み込みは、ドット積の計算(例えば、乗算および累算)の数を減らすことによって計算の効率化を達成する。一実現例では、所定の値(例えば、「0」)を有する画素を追加またはパディングすることによって、入力画像より大きいサイズ、または、より大きい画素数を有する中間画像が得られる。一実現例では、それから、中間画像はカーネルに畳み込まれて、出力画像の画素を生成することができる。一実現例では、ドット積演算は中間画像の複数の異なるサブセットおよびカーネルに対して実施され、出力画像の複数の異なる画素を生成することができる。中間画像のサブセットのカーネルとのドット積演算を実施することは、カーネルの要素の数に対応する多数の乗算および多数の累算を含み得る。例えば、カーネルの次元が3×3であると仮定すると、一般に、出力画像の1つの画素を生成するために9回の乗算および8回の累算が実施され得る。一態様では、開示された逆畳み込みは、所定の値(例えば、ヌルデータ)を有するパディングまたは付加された画素とカーネルの対応する部分とに対して実施されるドット積演算が上記1つの画素の値に影響を及ぼさないという特徴を利用する。それ故、開示された逆畳み込みは、カーネルの対応する部分に対するドット積演算をバイパス、回避、スキップ、または、省略して、ドット積演算数を減らして出力画像の画素を生成することができる。
有利なことに、開示された逆畳み込みは、中間行列の生成を回避することによって、更に計算の効率化を達成する。1つのアップローチでは、出力画像の各画素ごとに、ドット積演算を実施すべき、入力画像の1つまたは複数の画素とカーネルの対応する部分とが、マッピング情報として決定され格納されることができる。カーネルの対応する部分は、入力画像の上記1つまたは複数の画素の位置に対応する、または、揃う位置にあるカーネルの要素のことを意味し得る。上記のマッピング情報によれば、ドット積は、入力画像の関連する画素およびカーネルの対応する部分に対して実施され得、中間画像を生成または構成することなく、出力画像を生成することができる。中間画像を構成することを回避することによって、開示された逆畳み込みは、より少ない計算リソース(例えば、処理構成要素または記憶リソース)を用いて、より速く実施され得る。
図2を参照すると、本開示の一実現例によるアップスケーラ200のブロック図が例示される。いくつかの実施形態では、アップスケーラ200は、図1Aのシステムを含む、または、図1Aのシステムとして実現される。いくつかの実施形態では、アップスケーラ200は、カーネルジェネレータ210、カーネルストレージ215、逆畳み込みマッピングジェネレータ220、マッピングストレージ225、MACアレイ230、および/または、MACコントローラ235を含む。これらの構成要素はともに動作して、入力画像205を受信し、入力画像205に対する逆畳み込みを実施し、入力画像205より高い解像度、または、入力画像205より多い画素数を有する出力画像260を生成することができる。入力画像205は、RGB色空間の、または、(例えば、YCbCrなど)任意の色空間の値を有する画素を有することができる。他の実施形態では、アップスケーラ200は、図2に示されるより多いまたは少ない、あるいは、図2に示されるものと異なる構成要素を含む。本明細書において開示される各構成要素は、ハードウェアまたは少なくともハードウェアおよびソフトウェアの組み合わせによって実装される。
カーネルジェネレータ210は、カーネルを生成してカーネルストレージ215内にカーネルを記憶する、または、カーネルストレージ215を用いてカーネルを記憶する構成要素であるか、または、その構成要素を含む。カーネルは行列形式または行列配置の要素を有し得、カーネルの各要素は、カーネルに畳み込まれる画像の対応する画素によって乗じられ得る。各要素は、整数型または10進数型の値を有することができる。いくつかの実施形態では、カーネルジェネレータ210は、要素の所定のセットにしたがってカーネルを自動的に生成する。例えば、カーネルの要素は、ニューラルネットワークのトレーニングによって決定され得る。いくつかの実施形態では、カーネルジェネレータ210は、例えば、ユーザインターフェースを介して、カーネルの1つまたは複数の要素を指定するユーザ入力を受信し、カーネルの要素がユーザ入力にしたがって修正され得る。カーネルの要素の数またはサイズまたは次元は、予め定義されるか、または、設定可能であり得る。
逆畳み込みマッピングジェネレータ220は、マッピング情報を生成する構成要素であるか、または、その構成要素を含む。一態様では、マッピング情報は、出力画像260の各画素ごとに、ドット積演算を実施すべき、入力画像205の1つまたは複数の画素、および、カーネルの対応する部分(または、対応する要素)を示す。他の1つの態様においては、マッピング情報は、出力画像260の各画素ごとに、その一部分に対して、ドット積演算が、バイパス、スキップ、回避、または、省略され得る、カーネルの一部分を示す。マッピング情報は、ドット積演算を実施すべきカーネルの部分、および/または、ドット積演算をバイパスすべきカーネルの部分を示すための、任意のタイプもしくは型式のルール、位置のインジケータおよび/もしくは説明、画素、座標、行列要素、または、(相対的であるか絶対的な)空間情報を含むことができる。出力画像の画素を生成するために、カーネルの上記一部分に対するドット積演算が省略され得る。何故ならば、カーネルのこの部分に対して、または、カーネルのこの部分を使用して実施されるドット積演算は出力画像のこの画素に影響を及ぼさない(例えば、この画素に関する情報を提供も生成もしない)からである。例えば、出力画像260の第1の画素を生成するために、入力画像の第1の画素およびカーネルの第1の要素に対してドット積演算が実施され得、カーネルの他の要素に対するドット積演算は、出力画像260の第1の画素を生成するためには、バイパスまたは省略され得ることをマッピング情報は示すことができる。逆畳み込みマッピングジェネレータ220は、マッピング情報をマッピングストレージ225内に、または、マッピングストレージ225を用いて記憶することができる。
いくつかの実施形態では、逆畳み込みマッピングジェネレータ220はマッピング情報を自動的に生成する。1つのアプローチでは、逆畳み込みマッピングジェネレータ220は、入力画像205の画素と中間画像の画素との間のマッピング関係を示す第1のマッピング情報を得ることができる。中間画像は、所定の位置で入力画像205の画素の周囲に/間にパディングされた、または、入力画像205の画素の間に散在させられた所定の値(例えば、ヌルデータ)を有する画素を有することができる。一例では、入力画像205からの各画素は、ヌルデータを有しパディングされた画素によって囲まれる、または、パディングされた画素をまわりに散在させられることができる。逆畳み込みマッピングジェネレータ220は、出力画像260の各画素ごとに、カーネルとのドット積演算を実施すべき中間画像の画素の対応するサブセットを示す第2のマッピング情報を得ることもできる。逆畳み込みマッピングジェネレータ220は、第1のマッピング情報および第2のマッピング情報を組み合わせて、または、統合して、出力画像260の各画素ごとに、ドット積演算を実施すべき入力画像205の1つまたは複数の画素およびカーネルの対応する部分(または1つもしくは複数の対応する要素)を示すマッピング情報を自動的に生成することができる。
例えば、逆畳み込みマッピングジェネレータ220は、中間画像が、所定の位置に、ヌルデータである特定の画素を有し、他の位置に、入力画像の画素にマップされた特定の画素を有するであろうと判断することができる。逆畳み込みマッピングジェネレータ220は、出力画像260の各画素ごとに、カーネルのどの要素が中間画像のヌルデータに適用され、または、によって乗じられ(例えば、中間画像のヌルデータに対応し)、カーネルのどの要素が入力画像にマップされた画素に適用される、または、によって乗じられる(例えば、入力画像にマップされた画素に対応する)であろうと判断することができる。出力画像260の各画素ごとに、逆畳み込みマッピングジェネレータ220は、入力画像205の画素にマップされた中間画像の画素およびカーネルの対応する部分に対してドット積演算が実施されるべきであると判断することができる。更に、出力画像260の各画素ごとに、逆畳み込みマッピングジェネレータ220は、ヌルデータを有する中間画像の画素およびカーネルの対応する要素に対してドット積演算がバイパスまたは省略され得ると判断することができる。
MACアレイ230は複数のMACユニット140のアレイでもよい。MACコントローラ235は、MACアレイ230が入力画像の逆畳み込みまたはアップスケーリングを実施するように構成する構成要素である、または、その構成要素を含む。MACコントローラ235は、ストレージまたは他のデバイスから入力画像を、そして、カーネルストレージ215からカーネルを受信することができる。MACコントローラ235は、MACアレイ230が受信した入力に対するドット積演算を実施して出力画像260の画素を生成することができるように、MACアレイ230の第1の入力として入力画像の画素を適用し、MACアレイ230への第2の入力としてカーネルの対応する要素を適用することができる。一実現例では、MACユニット140がより少ない数のドット積演算のための乗算によって出力画像260の対応する画素を生成する、または、出力することができるように、1つのMACユニット140には、入力画像の画素の1つのサブセットとカーネルの対応する要素のサブセットとが適用される。MACコントローラ235は複数の異なるMACユニット140を、同時に、または、並行して、出力画像の画素を生成するように構成することができる。例えば、各MACユニット140には、入力画像205の画素の対応する1つのセットと、カーネル345の要素の対応する1つのセットとが入力として適用され得る。その代わりに、または、付加的に、MACコントローラ2365は、出力画像の異なる画素を異なる時間に(例えば、順次)生成するように同一のMACユニット140を構成することができる。例えば、1つのMACユニット140には、入力画像205の画素の第1のサブセットと、カーネル345の要素の第1のサブセットとが、第1の時間における入力として適用され、同じMACユニット140には、入力画像205の画素の第2のサブセットと、カーネル345の要素の第2のサブセットとが、第2の時間における入力として適用され得る。同じハードウェア構成要素を再利用することによって、計算のリソースが節約され得る。
一態様では、MACコントローラ235は、マッピングストレージ225からマッピング情報を獲得または受信し、出力画像260の1画素のために、マッピング情報にしたがって減少した計算量を有するドット積演算を決定する。MACコントローラ235は、マッピング情報によって示されるように出力画像260の1画素を生成するために入力画像205の画素の1つのサブセットおよびカーネルの対応する部分を適用することによって、出力画像260の1画素のためにマッピング情報にしたがって減少した数のドット積演算を実施するようにMACユニット140を構成することができる。例えば、入力画像205の9つの画素および3×3のカーネルの9つの要素に対するドット積演算を実施するのではなく、MACコントローラ235は、マッピング情報によって示されるように、入力画像205の1つの画素および3×3のカーネルの1要素に対するドット積を実施するようにできる。MACコントローラ235の動作の追加の例および説明が、以下に図3~図5を参照して提供される。
図3を参照すると、本開示の一実現例による、入力画像205をアップスケールするプロセスを例示するために、入力画像205、中間画像315、および、アップスケールされた画像260の一例が例示されている。一例では、入力画像205は9画素i1、i2、...i9を有する。一例では、81画素を有する中間画像315は、入力画像205の画素に、所定の値(例えば、陰影で表されるヌル、空、または、無効なデータ)を有する画素を追加またはパディングすることによって生成され得る。例えば、ヌルデータを有するパディングされた画素は、入力画像205の画素を囲む、および/または、入力画像205の画素のまわりに散在させられることができる。一例では、中間画像315はカーネル345に畳み込まれ、49画素を有する出力画像260を生成することができる。図3に示される例では、カーネル345は、9要素k1、k2、k3、...k9を有する。一例では、中間画像315の異なるサブセットおよびカーネル345に対して異なるドット積が実施され、出力画像260を生成する。例えば、中間画像315のサブセット318Aおよびカーネル345に対してドット積が実施され、出力画像260の画素(0,0)を生成することができる。他の1つの例については、中間画像315の他の1つのサブセット318Bに対してドット積が実施され、出力画像260の画素(0,6)を生成することができる。
一態様では、中間画像315を生成し中間画像315をカーネル345に畳み込んで出力画像260を生成することは、計算的に非効率である。例えば、中間画像315を生成することは81画素を格納するために記憶リソースを消費する。それから、中間画像315をカーネルに畳み込むことは441回の乗算を含む。図3に示される例は3×3のサイズを有する入力画像205、9×9のサイズを有する中間画像315、および、7×7のサイズを有する出力画像260を示すが、他の応用では、入力画像205、中間画像315、および、出力画像260は、図3に示される画像とは異なる、または、より大きいサイズを有することができる。例えば、1024×768画像を生成するために、乗算および累算の数は、数千万十または数億を超える場合もある。
1つのアプローチでは、ドット積演算のための計算をバイパス、回避、スキップ、または、省略することによって、開示された逆畳み込みまたはアップスケーリングは、改善された効率で、または、より少ない計算リソースで実施され得る。例えば、図4A~図4Dを参照すると、本開示の例示の一実現例により、計算をバイパスまたは省略することによってアップスケールされた画像の画素を得るために実施されるドット積の例が示されている。一例では、出力画像260の各画素ごとに、入力画像205の画素の対応するサブセットおよびカーネル345の対応する部分に対して実施すべきドット積をマッピング情報が示す。MACコントローラ235は、マッピング情報によって示されるように、入力画像205の画素のサブセットおよびカーネル345の対応する部分に対するドット積演算を実施して、出力画像260の画素を生成することができる。
例えば、図4Aで、出力画像260の画素(0,0)を生成するために、カーネル345の要素k9とともに入力画像205の画素i1に対してドット積演算が実施され得る。画素(0,0)を生成するためには、カーネル345の残りの要素(陰影で塗りつぶされた)に対するドット積演算はバイパスまたは省略され得る。何故ならば、カーネル345の残りの要素と中間画像315の対応する画素とに対するドット積演算は、中間画像315の対応する画素がヌルデータを有するので、画素(0,0)に影響を及ぼさない(例えば、何の値も、意味も、情報も与えない)であろうからである。図4Bにおける他の1つの例については、出力画像260の画素(0,1)を生成するために、カーネル345の要素k8と入力画像205の画素i1とに対してドット積演算が実施され得る。画素(0,1)を生成するためには、カーネル345(陰影で塗りつぶされた)の残りの要素に対するドット積演算はバイパスまたは省略され得る。何故ならば、カーネル345の残りの要素と中間画像315の対応する画素とに対するドット積演算は、中間画像315の対応する画素がヌルデータを有するので、画素(0,1)に影響を及ぼさないであろうからである。図4Cの他の1つの例については、出力画像260の画素(0,2)を生成するためには、カーネル345の要素k7、k9と入力画像205の画素i1、i2とに対してドット積演算が実施され得る。図4Dの他の1つの例については、出力画像260の画素(0,3)を生成するために、カーネル345の要素k8と入力画像205の画素i2とに対してドット積演算が実施され得る。
有利なことに、画素のサブセットおよびカーネルの一部分に対するドット積演算を実施することによって、そして、カーネルの残りの部分に対するドット積演算をバイパスすることによって、乗算および累算の数は、著しく(例えば、70~80%、場合によってはそれ以上)減らされ得る。更に、ヌルデータを有する中間画像315のパディングされた画像と関連したドット積演算がバイパスまたは省略され得るので、中間画像315を生成または構成することは、計算リソースの節減を達成するためには省略され得る。
図5を参照すると、本開示の例示の一実現例により、入力画像をアップスケールして、入力画像より多数の画素を有する、または、入力画像より高い解像度を有する出力画像を生成するプロセス500を示すフローチャートが示されている。いくつかの実施形態では、プロセス500は図2のアップスケーラ200によって実施される。いくつかの実施形態では、プロセス500は、他のエンティティによって実施される。いくつかの実施形態では、プロセス500は、図5に示されるより多い、より少ない、または、異なるステップを含む。
1つのアプローチでは、アップスケーラ200は、アップスケールされるべき入力画像を受信する(510)。1つのアプローチでは、アップスケーラ200は、出力画像の生成されるべき画素を選択し、入力画像の画素の1つのサブセットおよびカーネルの1つの部分(または、要素の1つのサブセット)に対してドット積を実施し(520)、出力画像の選択された画素を生成する。カーネルは、予め定められていても、再構成可能でもよい。1つのアプローチでは、アップスケーラ200は、カーネルの残りの部分に対するドット積をバイパスし(530)、出力画像の画素を生成する。
一般に、出力画像の選択された画素を生成するためのドット積に関連して実施される乗算の数は、カーネルの要素の数より少ない。一例では、出力画像の複数の異なる画素を生成するために、複数のドット積演算が、入力画像の同じ画素とカーネルの複数の異なる要素とに対して実施され得る。例えば、出力画像の画素(0,0)は画素i1にカーネルの要素k9を乗じることによって得られ得、出力画像の画素(0,1)は画素i1にカーネルの要素k8を乗じることによって得られ得る。他の一例では、出力画像の複数の異なる画素を生成するために、複数のドット積演算が、カーネルの同じ要素と入力画像の複数の異なる画素とに対して実施され得る。例えば、出力画像の画素(0,1)は画素i1にカーネルの要素k8を乗じることによって得られ得、出力画像の画素(0,3)は画素i2にカーネルの要素k8を乗じることによって得られ得る。他の一例では、出力画像の複数の異なる画素を生成するために、複数のドット積演算が、複数の異なる回数の乗算および累算によって実施され得る。例えば、出力画像の画素(0,1)は画素i1にカーネルの要素k8を乗じることによって得られ得、出力画像の画素(0,2)は画素i1にカーネルの要素k7を乗じ、画素i2にカーネルの要素k9を乗じ、2つの乗算結果を加算することによって得られ得る。
1つのアプローチでは、アップスケーラ200は、出力画像260の各画素ごとに、入力画像の画素の対応するサブセットおよびカーネルの対応する部分に対して実施すべきドット積を示すマッピング情報を得ることができる。このマッピング情報によれば、アップスケーラ200は、選択された画素のために、入力画像の画素のサブセットおよびカーネルの対応する部分を決定することができ、入力画像の画素の決定されたサブセットおよびカーネルの対応する部分に対するドット積演算を実施することができる。一態様では、マッピングは、出力画像260の各画素ごとに、バイパスまたは省略すべきカーネルの残りの部分に対するドット積を示す。上記のマッピング情報によれば、アップスケーラ200は、選択された画素のために、カーネルの残りの部分を決定することができ、カーネルの決定された残りの部分に対するドット積演算をバイパスまたは省略することができる。
1つのアプローチでは、アップスケーラ200は、生成すべき出力画像に更なる画素があるかどうかを判断する(540)。生成すべき出力画像に更なる画素があると判断することに応答して、アップスケーラ200はステップ520に戻って、更なる画素を生成することができる。生成すべき出力画像に更なる画素がないと判断することに応答して、アップスケーラ200は、他のデバイスに出力画像を格納および/または提供する、あるいは、出力画像を表示のためにレンダリングすることができる。
いくつかの例示的な実現例について記載してきたが、上記は例示であって限定ではなく、例として提示されていることが明白である。特に、本明細書に提示する例の多くには、方法行為またはシステム要素の特定の組み合わせが関与するが、それらの行為および要素は、同じ目的を遂行するために他の形で組み合わせることができる。1つの実現例に関連して考察される行為、要素、および特徴は、他の1つまたは複数の実現例における類似の役割から除外されないものとする。
本明細書に開示する実施形態と関連して記載される、様々なプロセス、動作、例示の論理、論理ブロック、モジュール、および回路を実現するのに使用される、ハードウェアおよびデータ処理構成要素は、汎用シングルもしくはマルチチッププロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラマブル論理デバイス、離散的ゲートもしくはトランジスタ論理、離散的ハードウェア構成要素、または本明細書に記載の機能を実施するように設計された上記のものの任意の組み合わせを用いて、実現または実施されてもよい。汎用プロセッサは、マイクロプロセッサ、または任意の従来のプロセッサ、コントローラ、マイクロコントローラ、もしくは状態機械であってもよい。プロセッサはまた、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと連動した1つもしくは複数のマイクロプロセッサ、または他の任意のかかる構成など、コンピューティングデバイスの組み合わせとして実現されてもよい。いくつかの実施形態では、特定のプロセスおよび方法は、所与の機能に特異的な回路類によって実施されてもよい。メモリ(例えば、メモリ、メモリユニット、記憶デバイスなど)は、本開示に記載する様々なプロセス、層、およびモジュールを完成させるかもしくは容易にする、データおよび/またはコンピュータコードを格納する、1つまたは複数のデバイス(例えば、RAM、ROM、フラッシュメモリ、ハードディスク記憶装置など)を含んでもよい。メモリは、揮発性メモリもしくは不揮発性メモリであるかまたはそれらを含んでもよく、本開示に記載する様々なアクティビティおよび情報構造をサポートする、データベース構成要素、オブジェクトコード構成要素、スクリプト構成要素、または他の任意のタイプの情報構造を含んでもよい。例示的実施形態によれば、メモリは、処理回路を介してプロセッサに通信可能に接続され、本明細書に記載の1つもしくは複数のプロセスを(例えば、処理回路および/またはプロセッサによって)実行するためのコンピュータコードを含む。
本開示は、様々な動作を遂行するための任意の機械可読媒体上における、方法、システム、およびプログラム製品を想到する。本開示の実施形態は、既存のコンピュータプロセッサを使用して、またはこの目的もしくは別の目的のために組み込まれる、適切なシステムのための専用コンピュータプロセッサによって、または配線接続システムによって、実現されてもよい。本開示の範囲内の実施形態は、格納された機械実行可能命令もしくはデータ構造を保持するかまたは有する、機械可読媒体を備えるプログラム製品を含む。かかる機械可読媒体は、汎用もしくは専用コンピュータ、またはプロセッサを有する他の機械によってアクセスすることができる、任意の利用可能な媒体であることができる。例として、かかる機械可読媒体は、RAM、ROM、EPROM、EEPROM、または他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、あるいは機械実行可能命令またはデータ構造の形態で所望のプログラムコードを保持または格納するのに使用することができ、汎用もしくは専用コンピュータまたはプロセッサを有する他の機械でアクセスすることができる、他の任意の媒体を含むことができる。上記のものの組み合わせはまた、機械可読媒体の範囲に含まれる。機械実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理機械に、特定の機能または機能群を実施させる、命令およびデータを含む。
本明細書で使用する用語および専門用語は、説明のためのものであって限定とみなされるべきではない。本明細書における、「~を含む」、「~を備える」、「~を有する」、「~を含有する」、「~を伴う」、「~によって特徴付けられる」、「~を特徴とする」およびそれらの変形の使用は、該用語とともに列挙される項目、それらの等価物、および追加の項目、ならびに排他的に該用語とともに列挙される項目から成る代替実現例を網羅することを意味する。一実現例では、本明細書に記載するシステムおよび方法は、記載する要素、行為、または構成要素のうちの1つ、2つ以上の各組み合わせ、または全てから成る。
単数形で言及される本明細書のシステムおよび方法の実現例または要素または行為に対する任意の言及は、複数のこれらの要素を含む実現例も包含することができ、本明細書の任意の実現例または要素または行為に対する複数形での任意の言及は、単一の要素のみを含む実現例も包含することができる。単数形または複数形での言及は、本明細書に開示されるシステムもしくは方法、それらの構成要素、行為、または要素を、単数または複数の構成に限定しようとするものではない。任意の情報、行為、または要素に基づいた任意の行為または要素に対する言及は、行為または要素が、任意の情報、行為、または要素に少なくとも部分的に基づく場合の実現例を含むことができる。
本明細書に開示する任意の実現例は、他の任意の実現例または実施形態と組み合わせることができ、「ある実現例」、「いくつかの実現例」、「一実現例」などに対する言及は、必ずしも相互に排他的ではなく、実現例と関連して記載する特定の特徴、構造、または特性が、少なくとも1つの実現例または実施形態に含まれ得ることを示すものとする。かかる用語は、本明細書で使用するとき、必ずしも全てが同じ実現例を指すものではない。任意の実現例は、本明細書に開示する態様および実現例と一致する任意の手法で、他の任意の実現例と包括的または排他的に組み合わせることができる。
図面、詳細な説明、または任意のクレームにおける技術的特徴に参照符号が付される場合、参照符号は、図面、詳細な説明、およびクレームの了解度を向上するために含まれるものである。したがって、参照符号が存在してもしなくても、任意のクレーム要素の範囲に対する限定的影響を何ら有さない。
本明細書に記載するシステムおよび方法は、それらの特性から逸脱することなく、他の特定の形態で具体化されてもよい。「約」、「およそ」、「実質的に」、または他の程度を表す用語に対する言及は、別段の明示がない限り、所与の測定値、単位、または範囲から±10%の変動を含む。結合された要素は、直接または介在要素を用いて、互いに電気的、機械的、または物理的に結合することができる。本明細書に記載するシステムおよび方法の範囲は、したがって、上述の記載ではなく添付のクレームによって示され、クレームの等価物の意味および範囲内にある変更は包含される。
「結合された」という用語およびその変形は、2つの部材を直接または間接的に互いに接合することを含む。かかる接合は、静的(例えば、恒久的もしくは固定)または可動(例えば、除去可能もしくは解放可能)であってもよい。かかる接合は、互いに直接結合され、または互いに対して結合された2つの部材によって、別個の介在部材および互いに結合された任意の追加の中間部材を使用して互いに結合された2つの部材によって、あるいは2つの部材の一方とともに単一の単位体として一体的に形成された介在部材を使用して互いに結合された2つの部材によって、達成されてもよい。「結合された」またはその変形が、追加の用語によって修正された場合(例えば、直接結合された)、上述の「結合された」の包括的定義は、追加の用語の平易な言葉の意味によって修正され(例えば、「直接結合された」は、任意の別個の介在部材を有さない2つの部材の接合を意味する)、それによって上述の「結合された」の包括的定義よりも狭い定義になる。かかる結合は機械的、電気的、または流体的であってもよい。
「または」に対する言及は包括的と解釈することができるので、「または」を使用して記載されるいずれの用語も、記載される用語の単一、2つ以上、および全てのいずれかを示すことができる。「『A』および『B』のうち少なくとも1つ」は、「A」のみ、「B」のみ、ならびに「A」および「B」の両方を含むことができる。「備える」または他のオープンな用語と併せて使用されるかかる言及は、追加の項目を含むことができる。
様々な要素のサイズ、寸法、構造、形状、および比率、パラメータの値、取付け構造、材料使用、色、向きにおける変形例など、記載される要素および行為の修正は、本明細書に開示する主題の教示および利点から実質的に逸脱することなく行うことができる。例えば、一体的に形成されるものとして示される要素は、複数の部分または要素で構築することができ、要素の位置を反転させるかまたは別の形で変動させることができ、離散的要素または位置の性質もしくは数を改変または変更することができる。他の置換、修正、変更、および省略も、本開示の範囲から逸脱することなく、開示の要素および動作の設計、動作条件、および配置に対して行うことができる。
本明細書における要素の位置に対する言及(例えば、「上側」、「下側」、「上方」、「下方」)は単に、図面における様々な要素の向きを説明するために使用されるものである。様々な要素の向きは、他の例示的実施形態によって異なってもよく、かかる変形は本開示に包含されるものとする。
Claims (15)
- 1つまたは複数のプロセッサによって、画素のセットを有する入力画像を受信することと、
出力画像の第1の画素を生成するために、前記1つまたは複数のプロセッサによって、前記入力画像の前記画素のセットの中の1つのサブセットおよびカーネルの1つの部分に対して第1のドット積を実施することであって、前記第1のドット積に関連して実施される乗算の数は前記カーネルの要素の数より少ない、前記第1のドット積を実施することと、
前記出力画像の前記第1の画素を生成するために、前記1つまたは複数のプロセッサによって、前記カーネルの残りの部分に対する第2のドット積をバイパスすることと、を含む、方法。 - 前記1つまたは複数のプロセッサによって、前記出力画像の各画素ごとにバイパスすべき対応するドット積を示すマッピング情報にしたがって、前記出力画像の前記第1の画素のためにバイパスすべき前記第2のドット積を識別することと、
前記1つまたは複数のプロセッサによって、前記出力画像の前記第1の画素を生成するために、前記マッピング情報にしたがって、前記カーネルの前記残りの部分に対する前記第2のドット積をバイパスすることと、を更に含む、請求項1に記載の方法。 - 前記1つまたは複数のプロセッサによって、前記出力画像の各画素ごとに実施すべき対応するドット積を示すマッピング情報にしたがって、前記出力画像の前記第1の画素のために実施すべき前記第1のドット積を識別することと、
前記1つまたは複数のプロセッサによって、前記出力画像の前記第1の画素を生成するために、前記マッピング情報にしたがって、前記入力画像の前記画素のセットの中の前記1つのサブセットおよび前記カーネルの前記1つの部分に対する前記第1のドット積を実施することと、を更に含む、請求項1または2に記載の方法。 - 前記出力画像が前記入力画像より多数の画素数を有する、請求項1から3のいずれか一項に記載の方法。
- 前記1つまたは複数のプロセッサによって、前記出力画像の第2の画素を生成するために、i)前記入力画像の前記画素のセットの中の前記1つのサブセット、および、ii)前記カーネルの他の1つの部分に対する第3のドット積を実施することを更に含み、また好ましくは、前記出力画像の前記第1の画素を生成するための前記第1のドット積に関連して実施される乗算の前記数が、前記出力画像の前記第2の画素を生成するための前記第3のドット積に関連して実施される乗算の数と同じである、請求項1から4のいずれか一項に記載の方法。
- 前記出力画像の第2の画素を生成するために、前記1つまたは複数のプロセッサによって、i)前記入力画像の前記画素のセットの中の他の1つのサブセット、および、ii)前記カーネルの前記1つの部分に対する第3のドット積を実施することを更に含み、また好ましくは、前記出力画像の前記第1の画素を生成するための前記第1のドット積に関連して実施される乗算の前記数が、前記出力画像の前記第2の画素を生成するための前記第3のドット積に関連して実施される乗算の数と同じである、請求項1から5のいずれか一項に記載の方法。
- 前記出力画像の第2の画素を生成するために、前記1つまたは複数のプロセッサによって、i)前記入力画像の前記画素のセットの中の他の1つのサブセット、および、ii)前記カーネルの他の1つの部分に対する第3のドット積を実施することを更に含み、また好ましくは、前記出力画像の前記第1の画素を生成するための前記第1のドット積に関連して実施される乗算の前記数は、前記出力画像の前記第2の画素を生成するための前記第3のドット積に関連して実施される乗算の数と異なる、請求項1から5のいずれか一項に記載の方法。
- 画素のセットを有する入力画像を受信し、
出力画像の第1の画素を生成するために、前記入力画像の前記画素のセットの中の1つのサブセットおよびカーネルの1つの部分に対して、関連して行われる乗算の数が前記カーネルの要素の数より少ない第1のドット積を実施し、
前記出力画像の前記第1の画素を生成するために、前記カーネルの残りの部分に対する第2のドット積をバイパスするように構成される1つまたは複数のプロセッサを備えるシステム。 - 前記1つまたは複数のプロセッサが、
前記出力画像の各画素ごとにバイパスすべき対応するドット積を示すマッピング情報にしたがって、前記出力画像の前記第1の画素のためにバイパスすべき前記第2のドット積を識別し、
前記出力画像の前記第1の画素を生成するために、前記マッピング情報にしたがって、前記カーネルの前記残りの部分に対する前記第2のドット積をバイパスするように構成される、請求項8に記載のシステム。 - 前記1つまたは複数のプロセッサが、
前記出力画像の各画素ごとに実施すべき対応するドット積を示すマッピング情報にしたがって、前記出力画像の前記第1の画素のために実施すべき前記第1のドット積を識別し、
前記出力画像の前記第1の画素を生成するために、前記マッピング情報にしたがって、前記入力画像の前記画素のセットの中の前記1つのサブセットおよび前記カーネルの前記1つの部分に対する前記第1のドット積を実施するように構成される、請求項8または9に記載のシステム。 - 前記出力画像が前記入力画像より多数の画素数を有する、請求項8から10のいずれか一項に記載のシステム。
- 前記1つまたは複数のプロセッサが、
前記出力画像の第2の画素を生成するために、i)前記入力画像の前記画素のセットの中の前記1つのサブセット、および、ii)前記カーネルの他の1つの部分に対する第3のドット積を実施するように構成され、また好ましくは、前記出力画像の前記第1の画素を生成するための前記第1のドット積に関連して実施される乗算の前記数が、前記出力画像の前記第2の画素を生成するための前記第3のドット積に関連して実施される乗算の数と同じである、請求項8から11のいずれか一項に記載のシステム。 - 前記1つまたは複数のプロセッサが、
前記出力画像の第2の画素を生成するために、i)前記入力画像の前記画素のセットの中の他の1つのサブセット、および、ii)前記カーネルの前記1つの部分に対する第3のドット積を実施するように構成され、また好ましくは、前記出力画像の前記第1の画素を生成するための前記第1のドット積に関連して実施される乗算の前記数が、前記出力画像の前記第2の画素を生成するための前記第3のドット積に関連して実施される乗算の数と同じである、請求項8から12のいずれか一項に記載のシステム。 - 前記1つまたは複数のプロセッサが、
前記出力画像の第2の画素を生成するために、i)前記入力画像の前記画素のセットの中の他の1つのサブセット、および、ii)前記カーネルの他の1つの部分に対する第3のドット積を実施するように構成される、請求項8から12のいずれか一項に記載のシステム。 - 前記出力画像の前記第1の画素を生成するための前記第1のドット積に関連して実施される乗算の前記数が、前記出力画像の前記第2の画素を生成するための前記第3のドット積に関連して実施される乗算の数と異なる、請求項14に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/513,389 | 2019-07-16 | ||
US16/513,389 US11222092B2 (en) | 2019-07-16 | 2019-07-16 | Optimization for deconvolution |
PCT/US2020/041384 WO2021011302A1 (en) | 2019-07-16 | 2020-07-09 | Optimization for deconvolution |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022540301A true JP2022540301A (ja) | 2022-09-15 |
Family
ID=71948746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021571018A Pending JP2022540301A (ja) | 2019-07-16 | 2020-07-09 | 逆畳み込みのための最適化 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11222092B2 (ja) |
EP (1) | EP4000038A1 (ja) |
JP (1) | JP2022540301A (ja) |
KR (1) | KR20220035099A (ja) |
CN (1) | CN114008664A (ja) |
WO (1) | WO2021011302A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220101086A1 (en) * | 2020-09-30 | 2022-03-31 | Stmicroelectronics S.R.L. | Reconfigurable hardware buffer in a neural networks accelerator framework |
CN112686377B (zh) | 2021-03-18 | 2021-07-02 | 北京地平线机器人技术研发有限公司 | 利用卷积硬件对特征数据进行反卷积处理的方法和装置 |
KR102543512B1 (ko) * | 2022-10-31 | 2023-06-13 | 서울대학교산학협력단 | 뉴럴 렌더링을 위한 저정밀도 하드웨어 가속기 및 그 동작 방법 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1022911B1 (en) * | 1990-03-16 | 2004-06-23 | Fujitsu Limited | An image data processing system |
GB2476800A (en) * | 2010-01-07 | 2011-07-13 | Linear Algebra Technologies Ltd | Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations |
US20160239706A1 (en) | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks |
US9940539B2 (en) * | 2015-05-08 | 2018-04-10 | Samsung Electronics Co., Ltd. | Object recognition apparatus and method |
US11244225B2 (en) * | 2015-07-10 | 2022-02-08 | Samsung Electronics Co., Ltd. | Neural network processor configurable using macro instructions |
KR20180034853A (ko) * | 2016-09-28 | 2018-04-05 | 에스케이하이닉스 주식회사 | 합성곱 신경망의 연산 장치 및 방법 |
KR102631381B1 (ko) * | 2016-11-07 | 2024-01-31 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
KR101879207B1 (ko) * | 2016-11-22 | 2018-07-17 | 주식회사 루닛 | 약한 지도 학습 방식의 객체 인식 방법 및 장치 |
US20180164866A1 (en) * | 2016-12-13 | 2018-06-14 | Qualcomm Incorporated | Low-power architecture for sparse neural network |
US20180181864A1 (en) * | 2016-12-27 | 2018-06-28 | Texas Instruments Incorporated | Sparsified Training of Convolutional Neural Networks |
US10871964B2 (en) * | 2016-12-29 | 2020-12-22 | Qualcomm Incorporated | Architecture for sparse neural network acceleration |
KR102415508B1 (ko) * | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
US10372416B2 (en) * | 2017-04-28 | 2019-08-06 | Intel Corporation | Multiply-accumulate “0” data gating |
US10776699B2 (en) * | 2017-05-05 | 2020-09-15 | Intel Corporation | Optimized compute hardware for machine learning operations |
US10671349B2 (en) * | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
WO2019074185A1 (en) * | 2017-10-12 | 2019-04-18 | Samsung Electronics Co., Ltd. | ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF |
KR20190066473A (ko) * | 2017-12-05 | 2019-06-13 | 삼성전자주식회사 | 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치 |
US10482156B2 (en) * | 2017-12-29 | 2019-11-19 | Facebook, Inc. | Sparsity-aware hardware accelerators |
US20190228285A1 (en) * | 2018-01-24 | 2019-07-25 | The Regents Of The University Of Michigan | Configurable Convolution Neural Network Processor |
KR20190106010A (ko) * | 2018-03-07 | 2019-09-18 | 삼성전자주식회사 | 전자 장치 및 머신 러닝 수행 방법 |
US10990650B1 (en) * | 2018-03-22 | 2021-04-27 | Amazon Technologies, Inc. | Reducing computations for data including padding |
KR102065672B1 (ko) * | 2018-03-27 | 2020-01-13 | 에스케이텔레콤 주식회사 | 합성곱 연산을 위한 장치 및 방법 |
US20190303757A1 (en) * | 2018-03-29 | 2019-10-03 | Mediatek Inc. | Weight skipping deep learning accelerator |
US11645529B2 (en) * | 2018-05-01 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Sparsifying neural network models |
US11120327B2 (en) * | 2018-05-04 | 2021-09-14 | Apple Inc. | Compression of kernel data for neural network operations |
CN112106078A (zh) * | 2018-05-08 | 2020-12-18 | 多伦多大学管理委员会 | 神经网络处理元件 |
US10817260B1 (en) * | 2018-06-13 | 2020-10-27 | Amazon Technologies, Inc. | Reducing dynamic power consumption in arrays |
US20190392287A1 (en) * | 2018-06-22 | 2019-12-26 | Samsung Electronics Co., Ltd. | Neural processor |
CN112437930A (zh) * | 2018-07-12 | 2021-03-02 | 华为技术有限公司 | 以熟练的推理速度和功耗,生成神经网络的压缩表示 |
KR20200091623A (ko) * | 2019-01-23 | 2020-07-31 | 삼성전자주식회사 | 위노그라드 변환에 기반한 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 |
US11188744B2 (en) * | 2019-03-15 | 2021-11-30 | Microsoft Technology Licensing, Llc | Spatially sparse convolutional neural networks for inking applications |
CN112534405A (zh) * | 2019-03-15 | 2021-03-19 | 英特尔公司 | 用于脉动阵列上的块稀疏操作的架构 |
KR20200125212A (ko) * | 2019-04-26 | 2020-11-04 | 에스케이하이닉스 주식회사 | 신경망 가속 장치 및 그것의 동작 방법 |
US20200401895A1 (en) * | 2019-06-21 | 2020-12-24 | Samsung Electronics Co., Ltd. | Neural network hardware accelerator system with zero-skipping and hierarchical structured pruning methods |
US11379555B2 (en) * | 2019-06-28 | 2022-07-05 | Amazon Technologies, Inc. | Dilated convolution using systolic array |
US11568200B2 (en) * | 2019-10-15 | 2023-01-31 | Sandisk Technologies Llc | Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference |
-
2019
- 2019-07-16 US US16/513,389 patent/US11222092B2/en active Active
-
2020
- 2020-07-09 JP JP2021571018A patent/JP2022540301A/ja active Pending
- 2020-07-09 EP EP20751410.0A patent/EP4000038A1/en not_active Withdrawn
- 2020-07-09 WO PCT/US2020/041384 patent/WO2021011302A1/en unknown
- 2020-07-09 KR KR1020227000412A patent/KR20220035099A/ko not_active Application Discontinuation
- 2020-07-09 CN CN202080046171.1A patent/CN114008664A/zh active Pending
-
2022
- 2022-01-10 US US17/571,946 patent/US11681777B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11681777B2 (en) | 2023-06-20 |
CN114008664A (zh) | 2022-02-01 |
EP4000038A1 (en) | 2022-05-25 |
US20210019363A1 (en) | 2021-01-21 |
US11222092B2 (en) | 2022-01-11 |
US20220129524A1 (en) | 2022-04-28 |
KR20220035099A (ko) | 2022-03-21 |
WO2021011302A1 (en) | 2021-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022540548A (ja) | エネルギー効率的な入力オペランド固定アクセラレータにおいて小チャネルカウント畳み込みを実施するためのシステムおよび方法 | |
JP2022540749A (ja) | シャッフルネットに類似したニューラルネットワークのチャネルにわたってシフトベースの情報混合を行うシステムおよび方法 | |
JP2022540550A (ja) | ニューラルネットワークアクセラレータにおいてスパースデータを読み取るおよび書き込むためのシステムおよび方法 | |
JP2022539660A (ja) | 畳み込みからの早期抜け出しのためのシステム、方法、およびデバイス | |
US20220308835A1 (en) | Counter based multiply-and-accumulate circuit for neural network | |
JP2022541721A (ja) | 効率的な乗算のための代替数字形式をサポートするシステムおよび方法 | |
JP2022540301A (ja) | 逆畳み込みのための最適化 | |
JP2022539662A (ja) | 分散処理を加速させるパイプライン並列化のためのシステムおよび方法 | |
US20220237262A1 (en) | Power efficient multiply-accumulate circuitry | |
US11429394B2 (en) | Efficient multiply-accumulation based on sparse matrix | |
JP2022539495A (ja) | 負および正の値に対する非対称スケーリングファクタをサポートするシステムおよび方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230421 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20231225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240116 |