JP2019079505A - 畳み込みニューラルネットワーク計算スループットの加速化 - Google Patents

畳み込みニューラルネットワーク計算スループットの加速化 Download PDF

Info

Publication number
JP2019079505A
JP2019079505A JP2018178236A JP2018178236A JP2019079505A JP 2019079505 A JP2019079505 A JP 2019079505A JP 2018178236 A JP2018178236 A JP 2018178236A JP 2018178236 A JP2018178236 A JP 2018178236A JP 2019079505 A JP2019079505 A JP 2019079505A
Authority
JP
Japan
Prior art keywords
output
data
pooling
component
convolution
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.)
Granted
Application number
JP2018178236A
Other languages
English (en)
Other versions
JP2019079505A5 (ja
JP7280026B2 (ja
Inventor
プラカシュ バラスブラマニアン,
Kalanjeri Balasubramanian Prakash
プラカシュ バラスブラマニアン,
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of JP2019079505A publication Critical patent/JP2019079505A/ja
Publication of JP2019079505A5 publication Critical patent/JP2019079505A5/ja
Application granted granted Critical
Publication of JP7280026B2 publication Critical patent/JP7280026B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • G06F18/24137Distances to cluster centroïds
    • G06F18/2414Smoothing the distance, e.g. radial basis function networks [RBFN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/95Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • G06V20/582Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads of traffic signs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/191Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
    • G06V30/19173Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/192Recognition using electronic means using simultaneous comparisons or correlations of the image signals with a plurality of references
    • G06V30/194References adjustable by an adaptive method, e.g. learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Neurology (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)

Abstract

【課題】畳み込みニューラルネットワーク計算スループットを加速化する技術を提供する。【解決手段】畳み込みニューラルネットワーク(CNN)コンポーネントにおいて、畳み込みコンポーネントは、1つ又は複数の画像からデータを抽出する畳み込み演算を実行し、且つデータを1つ又は複数の正規化線形関数(RELU)に提供する。RELUは、非線形畳み込み出力データを生成する。プーリングコンポーネントは、非線形畳み込み出力データのサブセットのプーリングウィンドウに基づくパイプラインプロセスを介して、畳み込み演算と並行してプーリング出力を生成する。全結合(FC)コンポーネントは、並行して動作する別のパイプラインプロセスを介して出力されたプーリング出力に基づいて人工ニューラルネットワーク(ANN)出力を提供し、且つANN出力に基づいて1つ又は複数の画像におけるパターンの認識を可能にする。【選択図】図18

Description

本開示は、ニューラルネットワークの分野におけるものであり、より詳細には、畳み込みニューラルネットワークのスループットの増大の分野におけるものである。
機械学習では、畳み込みニューラルネットワーク(CNN又は畳み込みネット)は、ニューロン間の接続パターンが動物の視角野の組織により示唆されるフィードフォワード人工ニューラルネットワークの一種である。個々の皮質ニューロンは、各野として知られる空間の限られた領域における刺激に応答する。異なるニューロンの各野は、視野をタイリングするように部分的に重複する。その各野内の刺激への個々のニューロンの応答は、畳み込み演算により数学的に近似することができる。畳み込みネットワークは、生物学的プロセスにより示唆され、最小量の事前処理を使用するように設計された多層知覚の変形である。畳み込みネットワークは、画像及びビデオ認識、レコメンダシステム、並びに自然言語処理において幅広い用途を有する。畳み込みニューラルネットワークは、シフト不変又は空間不変人工ニューラルネットワーク(SIANN)としても既知であり得、この名称は、重み共有アーキテクチャ及び並進不変特性に基づく。
CNNは、様々な計算層、すなわち畳み込み層、正規化線形関数(RELU)層、プーリング層、全結合(FC)層、及び出力層で構成することができる。これらのCNN層は、画像処理技法上に構築される人工知能プロセスを使用して判断を下すように動作する。チップセット供給業者は、畳み込み層にフォーカスすることによりCNNスループットの加速化に成功した。チップセット供給業者は、より多くのシングルインストラクションマルチプルデータ(SIMD)積和(SIMD MAC)ユニットを追加すると共に、デジタル信号プロセッサ(DSP)がはるかに高い周波数で動作することを可能にした。供給業者によっては、強力なスキャッターギャザー直接メモリアクセス(DMA)を提供するものもあり、これは、二次元(2D)畳み込みにとって有利であり得る。しかしながら、これまでの解決策は、切り替え消費電力の増大に繋がり得る。
記載される様々な態様(実施形態)による畳み込みニューラルネットワーク(CNN)システムを示すブロック図を示す。 記載される様々な態様によるCNNを示すブロック図を示す。 記載される様々な態様による畳み込み演算及び幾つかの関連するコンポーネントの態様の図を示す。 記載される様々な態様によるプーリング演算の態様の図を示す。 記載される様々な態様による畳み込み及びプーリング演算の態様の別の図を示す。 記載される様々な態様によるCNNの特定のコンポーネントの実行のクロノグラフを示す。 記載される様々な態様によるCNNのコンポーネントのデータフロープロセッサを示すブロック図である。 記載される様々な態様による制御フロー処理エンジンとデータフロー処理エンジンとの間の仕切りを示すブロック図である。 記載される様々な態様によるCNNの観測ユニットコンポーネントを示すブロック図である。 記載される様々な態様によるCNNのコプロセッサ又はコンポーネントアーキテクチャを示すブロック図である。 記載される様々な態様によるプロセスフローを示す流れ図である。 記載される様々な態様によるCNNの全結合(FC)層を示すブロック図である。 記載される様々な態様によるCNNの全結合(FC)層を示す別のブロック図である。 記載される様々な態様によるCNNの全結合(FC)層を示す別のブロック図である。 記載される様々な態様によるCNNの観測ユニットコンポーネントの詳細を示すブロック図である。 記載される様々な態様によるCNNのコプロセッサ又はコンポーネントアーキテクチャを示すブロック図である。 記載される様々な態様による別のプロセスフローを示す流れ図である。 記載される様々な態様によるプロセスフローを示す流れ図である。
ここで、本開示が添付図面図を参照して説明され、添付図面図では、全体を通して同様の参照符号が同様の要素を指すために使用され、示される構造及びデバイスは、必ずしも一定の縮尺で描かれているわけではない。本明細書で利用する場合、「コンポーネント」、「システム」、「インターフェース」等の用語は、コンピュータ関連エンティティ、ハードウェア、ソフトウェア(例えば、実行における)、及び/又はファームウェアを指すことが意図される。例えば、コンポーネントは、プロセッサ、プロセッサで実行中のプロセス、コントローラ、オブジェクト、実行可能ファイル、プログラム、記憶装置、及び/又は処理デバイスを有するコンピュータであり得る。例示として、サーバで実行中のアプリケーション及びサーバもコンポーネントであり得る。1つ又は複数のコンポーネントは、プロセス内に存在することができ、コンポーネントは、1つのコンピュータに局所化されてもよく、及び/又は2つ以上のコンピュータ間で分散してもよい。要素の集合又は他のコンポーネントの集合が本明細書に記載され得るが、「集合」という用語は、「1つ又は複数」として解釈することができる。
更に、これらのコンポーネントは、例えば、モジュール等の様々なデータ構造が記憶された様々なコンピュータ可読記憶媒体から実行することができる。コンポーネントは、1つ又は複数のデータパケット(例えば、ローカルシステム内、分散システム内、及び/又はインターネット、ローカルエリアネットワーク、広域ネットワーク若しくは他のシステムとの同様のネットワーク等のネットワークを介して別のコンポーネントと信号を介して対話するあるコンポーネントからのデータ)を有する信号等に従って、ローカル及び/又はリモートプロセッサを介して通信することができる。
別の例として、コンポーネントは、電気回路又は電子回路により動作する機械部品により提供される特定の機能を有する装置であり得、電気回路又は電子回路は、1つ又は複数のプロセッサにより実行されるソフトウェアアプリケーション又はファームウェアアプリケーションにより動作し得る。1つ又は複数のプロセッサは、装置の内部又は外部にあることができ、ソフトウェア又はファームウェアアプリケーションの少なくとも一部を実行することができる。更に別の例として、コンポーネントは、機械部品のない電子コンポーネントを通して特定の機能を提供する装置であり得、電子コンポーネントは、少なくとも部分的に、電子コンポーネントの機能を与えるソフトウェア及び/又はファームウェアを実行する1つ又は複数のプロセッサを含むことができる。
例示的なという用語の使用は、概念を具体的に提示することを意図する。本願で使用される場合、「又は」という用語は、排他的「論理和」ではなく、包括的「論理和」を意味することが意図される。すなわち、別段の指定がない限り又は文脈から明らかではない限り、「Xは、A又はBを利用する」は、自然な包括的置換のいずれかを意味することが意図される。すなわち、XがAを利用する場合、XがBを利用する場合、又はXがA及びBの両方を利用する場合、「Xは、A又はBを利用する」は、上記事例のいずれの下でも満たされる。加えて、本願及び特許請求の範囲で使用される場合、冠詞「1つの(a)」及び「1つの(an)」は、一般に、単数形を示す別段の指定がない限り又は文脈から明らかではない限り、「1つ又は複数」を意味するものと解釈すべきである。更に、「包含している」、「包含する」、「有している」、「有する」、「備える」という用語又はその変形が詳細な説明及び特許請求の範囲のいずれかで使用される限り、そのような用語は、「含む」という用語と同様に包括的であることが意図される。
CNNの上記定義を考慮して、様々な態様/実施形態は、様々なCNN計算層にわたる計算総利得の増大を可能にする。本開示の解決策として機能する態様/実施形態は、コストを上げることなく、CNNシステム内のコストを下げながら消費電力を低減し、スループットを増大する。本明細書に記載される実施形態又は態様は、CPU周波数を上げず、追加のCPUのコストを追加せずに、プーリング層及びFC層の実行を加速化する。したがって、開示される方法及びシステムは、消費電力を上げることによらずに効率を更に上げ、処理速度を更に上げることができる。例えば、畳み込み層及びプーリング層の実行は、互いにパイプライン化することができ、データフロープロセッサが利用可能時に直ちに畳み込み/RELU層出力のセクタの処理を開始できるようにすることにより、大きい加速利得をもたらす。
更に、FC層実行は、ニューラルネットワークを形成するコンポーネント又はコンポーネントのFC層とパイプライン化することもできる。これは、畳み込み/RELU層及びプーリング層間のパイプライン処理と一緒に追加の加速利得に更に寄与する。
実行パイプライン化は、データフロー処理動作原理を使用することにより達成することができる。例えば、良好にトレーニングされたCNNは、運転支援システムが、エンジン速度の低減、ブレーキ、停止、又は自動車の運転の安全性若しくは他のCNNシステムのいずれかに関連する他の同様の動作等の重大事項を決定できるようにする特定のカテゴリ/クラスにセンサデータを確実に分類することができる。
更に、例えば、フィルタカーネルを二次元画像上で一度に1ピクセルだけスライドさせることにより、二次元(2D)畳み込みを実行することができる。別の例では、畳み込みスライドウィンドウ(例えば、3×3畳み込みスライドウィンドウ又はn×nの他のサイズの畳み込みスライドウィンドウ(ここで、nは、正の整数である))は、検索されたセンサデータから受信され、ドット内積演算としてフィルタカーネルと乗算された画像の畳み込みを実行するように選択することができる。
ウィンドウデータの各(部分)集合は、最初に、例えばSIMDレジスタにロードすることができる。畳み込みウィンドウデータ及びフィルタカーネルの両方は、SIMD MACユニットに提供することができ、SIMD MACユニットは、幾つかのサイクルにわたりMAC演算を実行し、畳み込み出力をメモリ又はバッファに記憶する。処理する画像全体又は画像若しくは画像全体の所与のセクタのデータの集合は、同じ特徴(又はデータの階層)を用いて分析する対応する1つ又は複数のフィルタカーネルにより完了していない場合でも、特定のフィルタカーネルのデータ自体のサブセット若しくはウィンドウのみにより出力された値、又はフィルタカーネルが分析するようにトレーニングされた特徴に対して即座にプーリングを開始することができ、特徴は、データに対応するため、ピクセルのサブセットのスキャン及び計算に使用することができる。
更に、ソフトウェアにおいて、全結合(FC)層の各ニューロンのネット関数(NF)及び出力関数(OF)を続けて実行することができる。NFのインスタンスは、OFに続く。本開示の更なる実施形態では、OFの実行は、そのNFが出力を生成すると直ちにトリガーすることができる。OFが実行されている間、パイプライン処理を介した並列実行に別のニューロンコンポーネントのNFを取り上げることができる。
プロセッサコンポーネントの観測ユニットを利用し、必要とされるデータフロー処理をサポートするように拡張することができる。新しいテーブルの集合を動的に生成することができ、命令を提示することができる。FC層のニューロンのNFコンポーネントにより出力されるデータのメモリアドレスは、テーブルの第1の列からプログラムすることができ、一方、対応するOF出力データのアドレスは、テーブルの第2の列に入れることができる。活性化関数を実行し、テーブルの第3の列にプログラムすることができる。ソフトウェアがNFを実行すると直ちに、出力は、第1の列において指定された対応するアドレスに書き込まれ、トランザクションマッチ/モニタリングコンポーネント/ユニットは、OFコプロセッサをトリガーして、第3の列において指定された出力関数を実行し、出力を第2の列において指定されたアドレスに記憶することができる。したがって、FC層パイプラインからの追加の加速又は効率利得は、畳み込み層/RELU層とのプーリング層のパイプライン化を補足することができ、これは、追加の加速として実行することができる。したがって、FC層におけるニューロンのネット関数の実行の完了は、追加の加速及び追加のパイプライン動作として、CNNシステム内の更なる加速のために、次のニューロンにおける活性化関数が実行されている間に判断することができる。本開示の追加の態様及び詳細について、図を参照して以下に更に説明する。
図1は、運転支援システムが、自動車、他の車両又はデバイスが関わるエンジン速度の低減、ブレーキ、停止、又は他の機能等の重大事項を決定できるようにする特定のカテゴリ/クラスに画像を確実に分類することができる一例のCNNシステム100を示す。例えば、自動ナビゲーションシステム100は、データセットを入力としてCNN104に提供する1つ又は複数のセンサ102を含むことができ、CNN104は、様々なコンポーネントを有する複数の異なる計算/処理層を含む。次に、CNN104は、出力を1つ又は複数のADAS検出器106−102(例えば、歩行者検出器106、車検出器108、自転車又は自動二輪車検出器110、交通標識検出器112、又は他の検出器)に提供し、ADAS検出器106−102は、いずれか1つの検出器106−112に対応するデータのカテゴリ(歩行者特徴、車特徴、サイクル特徴、交通標識特徴等)に関連する状況が存在するか否かを検出する。CNNの出力データから状況が存在すると所与の検出器が特定するか否かに基づいて、検出器106−112は、例えば、衝突警告116、停止/減速のためのブレーキ機能、始動/停止を行う何らかの機能、又は自動車両ナビゲーションの一環として状況に応答する機能に関連する他のアプリケーション機能、又は他のシステム/デバイス機能等のアプリケーションに通知することができる。
一例では、センサ102は、カメラ、レーダー、光検出及び測距(LIDAR)、他の画像スキャンデバイス、又は画像捕捉デバイスからの信号で受信される画像等の画像からデータを検出し、処理する他のセンサ等の画像捕捉デバイスを含むことができる。次に、センサ102からのデータセットは、CNN104に提供することができ、信号をとり、次に信号が何を表しているかを見つけ出そうとし得る。例えば、前部カメラセンサが取り付けられた状態で高速道路を走行中の車は、任意の交通標識がある場合、交通標識の写真/画像を返し、街灯柱がある場合、街灯柱の写真/画像を返すことができ、又は前を走行中の車がある場合でも、場合によりその車の写真をセンサデータの一部として返す。
一般に、運転者が後部座席にいる自律運転システムでは、減速、ブレーキの適用、ホーンの鳴動、又は他の動作等の人間が行う多くの判断は、基本的に、専用コンピュータ処理コンポーネントが搭載された自動ナビゲーション/パイロットシステムにより行われ、次に何をすべきかを決定するために、前に何があるかを理解することが重要である。したがって、システム及びCNN104の主な目的は、これらの写真/画像に何が含まれているかを判断し、次にこれらの写真で見つけられたものに基づいて更なる判断を実施することである。
例えば、1つ又は複数の写真/画像の分析が、人間が約100m離れた道路の中央に存在する画像における状況/パターンを示す場合、搭載コンピュータは、明らかに減速し、場合によりそれに従って車両を停止させる。代替的には、画像内の状況に基づいて加速するとの判断がなされる場合、車線を変更し、次に加速するように車両に単に指示する。したがって、これらの判断又は他の判断は、システムにより返され、次に任意の数の所与の状況が画像に存在するか否かについて分析される特徴のパターンとして、画像内で分析されたデータの性質から導出することができる。システムは、生じ得るバリアントを検出して、様々な状況の中で状況を認識するように学習している間のフィルタ又はカーネルフィルタの初期トレーニングによりロバストであり得る。
CNN104は、所与の層の計算結果を次の層に提供する様々なコンポーネントを含め、CNN計算層として互いに接続することができ、互いに従属することができる一連の異なる計算を含むことができる。これらの層は、図1において、異なる陰影を有するCNN104ブロック内の様々な層として見ることができる。計算の終了時、パイプから出力(例えば、Pp、Pcar、Pcycle、Pts)が現れ、出力は、画像内又は画像のセクタサブセット内の生じ得る様々な状況の中からの異なる確率を含むことができる。これらの確率を合算することにより、得られた値は、例えば、1に等しいことができる。次に、最大の確率を有する物体のタイプ又はカテゴリ/クラスタイプは、画像又は画像セクタが対応し、したがって1つ又は複数の検出器106−112により検出され、且つアプリケーション114及び116の1つ又は複数により作用されるものであり得る。
例えば、画像が歩行者を含む場合、歩行者ADAS検出器106は、ブレーキを適用する信号をブレーキシステムに送信するように構成することができる。一例としての歩行者のみならず、1つ又は複数の検出器106−112により、任意の数の項目を画像内で検出することができる。更に、畳み込みニューラルネットワークシステムにより検出された物体のパターン/カテゴリタイプに応答して、コンポーネントが1つ又は複数の予め定義された基準に基づいて更なる判断を下すことをトリガーする信号を提供することができる。例えば、歩行者検出器は、歩行者が検出されていることを示す画像メッセージを衝突警告コンポーネント/システムに送信することができる。衝突警告システムは、即座に認識し、場合によりブレーキを適用して減速し、右若しくは左の方向に走行しながら車両を減速させることができ、又は画像内の歩行者のパターン認識に基づいて別の判断を下し、それにより致命的な衝突を回避することができる。車の検出、サイクル、交通標識、又は検出時に動作をトリガーする任意の他の外部パターン等のセンサデータからの画像内で検出される他のパターン又は状況から同様の例を挙げることができる。
図2を参照すると、特にCNN104を構成する様々な計算層の更に詳細な更なる例である。CNN104は、畳み込み層202、正規化線形関数(RELU)層204、プーリング層206、全結合(FC)層208(人工ニューラルネットワーク層)、及び出力層210を含め、幾つかの計算層を含むことができる。5つの計算層が示されているが、当業者が理解することができるように、より多数又はより少数の計算層を考えることができる。本明細書で使用される場合、層又は計算層は、数学的又は他の関数的手段により同様の機能で動作して、受信した入力を処理し、畳み込みニューラルネットワークシステム内の更なる処理のために、1つ又は複数の他のコンポーネントを有する次の層への出力を生成/導出する1つ又は複数のコンポーネントを指すことができる。
畳み込み層202は、例えば、データセットとして画像232のデータスライスを抽出する1つ又は複数の畳み込みコンポーネント212を含むことができる。畳み込み層202は、正規化線形関数(RELU)層204と組み合わせて、1つの計算層230又は一般に畳み込み層230と見なすか又は呼ぶこともできる。特に、畳み込み演算が畳み込みコンポーネント212により実行されて、カメラデータ、レーダーデータ、他のセンサデータ等の入力端末から入力として受信した画像から特徴を抽出することができる。例えば、畳み込みコンポーネント212により出力される結果として、畳み込み演算により生成された畳み込みデータの中から、人間の顔又は他の特徴を検出することができる。畳み込みプロセスは、例えば、特定の特徴についての画像232のセクションと共に画像データの集合/セグメント/サブセット/部分に対して実行することができる。まず、最初のパスにおいて、畳み込みコンポーネント212により生成された畳み込み演算は、低レベル特徴を抽出することができる。これは、特定のサイズ(例えば、畳み込み演算のウィンドウサイズn×n(ここで、nは、正の整数である)又はn×p(ここで、n及びpも同様に異なる正の整数である))のスライドウィンドウを用いて実行することができ、スライド畳み込みは、画像232の全体にわたり増分的に画像232からの重複データを用いて実行される。次に、続くパス又は反復において、同じコンポーネント又は異なるコンポーネントのいずれかによる、より低レベルの特徴の抽出で実行された前の畳み込み演算の結果を組み合わせることにより、追加のより高レベルの特徴を抽出することができる。次に、反復を続けて、画像の1つ又は複数の異なる反復又はパスを用いて異なる階層レベルのデータを生成することができる。
例えば、人間の顔は、輪郭線、傾斜線、曲線等を有することができる。畳み込みデータの1つの集合では、低レベル特徴(線、傾斜、曲線等)を抽出して、次に例えば画像内に楕円形がある場所、耳の縁部のように見える特徴がある場所、又は車若しくは例えば畳み込みニューラルネットワークを構成するコンポーネントの他のシステムとの衝突経路上にいる人間等の階層データセットの組合せに基づいて、画像232内に特定のパターン若しくは状況が存在するか否かを判断する一環であり得る特定の特徴/パターンの基本構造データを構成する他の特徴がある場所を特定することができる。
これらの畳み込み演算は、特徴マップを生成することができる。特徴マップは、センサからの画像232又は演算の前の層の出力データのいずれかに適用される1つの畳み込みコンポーネント212の出力と見なすことができる。フィルタインスタンスは、例えば、前の層の出力における各野にわたり引かれ、一度に1つ以上のピクセルだけ移される。各野は、フィルタ(フィルタカーネル)に接続された画像の小エリア/サブセットエリアと呼ぶことができる。例えば、フィルタは、特徴として三角形の存在について分析することができる。三角形の存在を探して完全な画像にわたり1つのフィルタをスライドさせる代わりに、様々なフィルタが、例えば、三角形又は他の特定の特徴について画像の様々なエリアを分析/支配することができる。
その受容野におけるフィルタの各位置における畳み込みにより、その位置においてカーネルにより表される特徴の存在の尺度を生成することができる。全ての畳み込み位置における特徴の存在の尺度は、フィルタカーネルの特徴マップであり得る。例えば、畳み込みフィルタが一度に1ピクセルだけスライドする場合、新しい畳み込み野は、(野幅−1)入力値だけ前の畳み込み野と重複することができる。例えば、32×32画像において、1ピクセルのストライド幅で入力画像データにわたり5×5畳み込みカーネルをドラッグして、畳み込みフィルタごとにサイズ28×28(32−5+1×32−5+1)の特徴マップ出力を生成する。「畳み込みカーネル」、「畳み込みフィルタカーネル」、「フィルタ」、「カーネル」、及び「フィルタカーネル」という用語は、本明細書では同義で使用することができ、更なる詳細について以下に提供する(例えば、図3を参照して)。また、本明細書で使用される場合、ストライド幅又はストライド長は、スライドウィンドウがシフトする量又はフィルタが入力データボリュームの周囲をどのように畳み込むかを定義することができる。
低レベル特徴として最低レベルの情報を抽出した後、出力は、畳み込み層202の畳み込みコンポーネント212により畳み込み情報又は畳み込みデータセットとして2つのエッジ/線を結合し、例えば、検出器106−112において、その結合が鼻に対応するか否か、又は目に対応するか否かを分析すること等により結合することができる。これらの低レベル特徴(例えば、エッジ、線等)の結合は、畳み込みデータセットの階層において、人間の顔、鼻、耳、目、額、顔の毛等の画像232内の状況に関連するわずかに標準的な特徴(例えば、中階層レベル)に対応するデータセットを形成することもでき、各セットは、より複雑な抽出データ特徴を含む。更に、データセットは、画像の特徴マップに沿って漸次的に結合することができ、システムが高レベル特徴を認識し、例えば画像内の物体/高レベル特徴として完全な人間の顔を特定できるようになるまで計算層に沿って更に処理することができる。
このようにして、低レベル特徴(例えば、曲線、エッジ、線、傾き等)は、1レベルのデータセット階層であり得、別のレベルの畳み込みデータセット(例えば、形状、パターンの組合せ等)は、別の階層レベルを形成することができるが、データセットの階層における畳み込み演算から任意の数の畳み込みデータセットを生成して、顔、人間、動物、自転車、自動二輪車、標識、標識の細部、又は任意の数の状況(例えば、衝突経路内の人間、横断して衝突経路に入っている動物、又は1つ若しくは複数の画像において生じている他の状況)を含め、より高レベルのパターンを特定することができる。
畳み込み演算は、線形であり得るため、畳み込み層202は、通常、固定経路を辿らず、通常ランダムである現実世界の挙動であると見なすことができるものを完全に常に反映するわけではない。したがって、よりランダム性を有する畳み込みの出力を生成するために、RELU層204をCNNシステム/コンポーネント104に構成することができ、更に、結合畳み込み層230の一部として結合することができる。畳み込みコンポーネント212は、RELU層のRELUコンポーネント214に接続することができる。RELUコンポーネント214は、RELU入力への畳み込みコンポーネント212から出力された畳み込みデータから線形性をなくすことにより、非線形畳み込み出力データの集合を生成するように構成することができる。例えば、RELUコンポーネント214は、畳み込みの出力内にときに含まれ得る負の値について入力をモニタリングすることができる。次に、これらとして受信された畳み込みデータセットに基づいて、入力は、非線形畳み込み出力データと同様の階層のデータセットを生成する。任意の負の値を検出したことに応答して、RELUコンポーネント214は、それらの負の値をゼロ又は正の値で置換する。このようにして、畳み込み層202の線形出力は、非線形畳み込み出力データとして、線形性が少なくともわずかであるか又はごくわずかであるデータに変換することができる。
抽出され、線形性が除去された特徴を用いて、プーリングコンポーネント216におけるプーリング層206は、非線形畳み込み出力データを受信してスケール不変にする。したがって、位置、照明、分析中の画像の不純度に関係なく、CNNシステムは、インテリジェント且つロバストであり得、同じ写真/画像のバリアントを検出することが可能である。
したがって、畳み込み層202は、特徴抽出を生成することができる。RELU層204は、データから線形性をなくして、現実世界のデータと一致させる。プーリング層206は、ボリューム低減を担当し、ネットワーク画像をスケール不変にし、これは、スケール不変特徴変換(SIFT)及び勾配方向ヒストグラム(HoG)等の他の画像処理技法と同様又は同等であり得る。
プーリングコンポーネント216は、畳み込み結合層230と並行したパイプラインプロセスを介してプーリング出力を生成するように構成される。実施形態では、プーリングコンポーネント216は、スケール不変処理を開始し、畳み込みデータ又は非線形畳み込み出力データの第1の集合/サブセットに対して統計学的演算を実行することができる。したがって、2つの異なる計算層は、互いの関数とパイプライン化し、互いの機能と並行して動作することができ、又は例えばスライド畳み込みウィンドウが画像232にわたり畳み込みデータの全体の一部又は幾つかを出力するにつれて同時に処理することができる。畳み込み層230、畳み込みコンポーネント212、又はRELUコンポーネント214の畳み込み/RELU演算は、プーリングコンポーネント216とのパイプラインプロセスとして動作する。これらのプーリングコンポーネント216は、非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、非線形畳み込み出力データに対して統計学的演算を実行する。
例えば、プーリング演算は、RELU層204により提供された入力データ(非線形畳み込み出力データ)のサイズを低減する。データの各サブセットが受信されるにつれて、非線形畳み込み出力データの1つの集合を処理し、プーリング層206においてサイズを低減し、次に全結合(FC)層208において分類を受け、最終的に、更に詳細に後述する分類器210により人間が理解可能な形態に変換することができる。
人工ニューラルネットワーク(ANN)のFCネットワーク層208は、ニューロンを用いて人間の脳の機能を表す。例えば、異なる値(例えば、1、5、60,000及び0.25又は値の他の集合)がANNの入力に現れ得、画像データに存在するパターン又は状況(例えば、男性、女性、人間等)を特定できるようにする。FCコンポーネントが数字の異なる集合を見る場合、場合により何か他のものであるシステム出力が検出されることになる。
プーリング層206のプーリングコンポーネント216の出力は、写真/画像が含んでいる可能性が最も高い候補を更に決定する、FC層208としても知られる人工ニューラルネットワークに供給することができる。したがって、次に、FCコンポーネントの出力としてのこれらの数字は、出力層210として知られるものにより確率に変換し、歩行者検出器106又は交通標識検出器112のような様々な検出器(例えば、図1の106−112)に供給することができ、例えば、アプリケーション114又は116における応答において必要な動作がとられる。
FCコンポーネント218は、第1のFC層(FC1)及び第2の(後続する)FC層(FC2)のそれぞれに従ってネット関数222、226及び出力関数224、228により形成されるニューロン構造を有するANNを形成する。各ニューロンN1−Nx及びN4−Nyの出力は、プログラムカウンタ及びフェッチされる外部命令の代わりに、入力データ(例えば、l1、l2)及び入力重み(例えば、w1、w2)の可用性に依存することができる。これは、各FCコンポーネント218が、命令をメモリからフェッチせずに動作し、代わりに1つ又は複数の入力(例えば、l1、l2)における入力データの可用性に応答して処理して、指定関数を実行することにより入力データを直ちに/即座に処理する1つ又は複数のデータフロープロセッサを含み得ることを意味する。入力(例えば、l1、l2)は、プーリングコンポーネント216のプーリング出力により又はFC2コンポーネント入力において利用可能なデータ(例えば、l1、l2)の前のFCコンポーネント/層(例えば、FC1、N1−Nx)により提供することができる。
データフロー処理は、例えば、入力における特定のデータの可用性のみに基づいてデータを処理するのではなく、プログラムカウンタを用いてメモリから命令をフェッチしてデータを処理するフォンノイマン制御フロー処理/フォンノイマン型計算機/プロセッサと対照的であるか又は異なることができる。FCコンポーネント218は、それぞれ個々に、層(例えば、FC1)内の各FCコンポーネントにおいて同じ複数の入力(例えば、l1、l2)を受信することもできる。例えば、N1−Nxは、全て各プーリングコンポーネント216から入力を受信し、これらの入力(例えば、l1、l2)は同じであり得る。更に、同様にFCコンポーネントの第2の(又は後続)層(例えば、FC2、N4−Ny)のそれぞれも同様に、例えば、コンポーネントの前の層(例えば、FC1、N1−Nx、前の計算層、又は他の計算層)から同じ入力(例えば、l1、l2)を受信することができ、ANNを形成する計算コンポーネントの1つ又は複数の異なる層であり得る様々なFC層208(例えば、FC1、FC2等)全体を通して同様である。
更に、FC層208のニューロン又はFCコンポーネント218の各ネット関数は、入力のドット積及び重みにより加重(各入力に考慮される重みとして)等の数学的演算を含むことができる。入力(例えば、l1、l2)は同じであり得、重み(例えば、w1、w2)は様々である。更に、各入力(l1、l2)の入力(l1、l2)及び重み(例えば、w1、w2)のドット積の合算は、各FCコンポーネントのそれぞれにおいて実行することもできる。異なるFCコンポーネント218は、異なる重み(例えば、w1、w2)を有することができ、又は代替的に、異なる入力(l1、l2)は、同じ群/集合/複数の入力(例えば、l1、l2)を受信する各FCコンポーネント218で別様に異なる重み(例えば、w1、w2)を有することができる。代替的には、これらの重みは、少なくとも幾つかのFCコンポーネント218が入力において同じ重み(例えば、w1、w2)を有することができ、一方、他のFCコンポーネント218が互いと異なる重み(例えば、w1、w2)を有し、処理において対応する入力を考慮/検討するための重み又は任意の量を与える異なる値を有するように、互いと同様であるか又は異なることができる。
加えて、各FCコンポーネント218の出力ニューロン224、228は、ネット関数222、226の結果に対して動作する数学的関数を含むこともできる。例えば、出力関数は、加重入力及びそれに対して実行された合算又は他の演算の結果に対して実行される三角関数(例えば、tanh、tan等)又は他の数学的関数を含むことができる。
最後に、出力層210は、FC層出力又はANN出力を受信した分類器関数220を含むことができる。これらの分類器関数は、例えば、その機能がFC層208の出力を0〜1の範囲の値に押し込む/圧縮することであり得るSoftMax関数を含むことができる。分類器関数220の出力は、確率を含むことができ、入力データに対応する最も可能性が高い出力クラスが最高確率を有する。出力層210は、例えば、サポートベクターマシン(SVM)又は他の分類器のような標準分類器でもあり得る。
本開示の実施形態では、畳み込み層230及びプーリング層206の実行は、パイプライン化することができ(実行パイプライン化又はパイプライン処理を介して)、大きい加速及び効率に繋がる。上述したように、プーリング層208は、第1の畳み込みスライドウィンドウ演算からのデータの可用性に基づいて、畳み込み層230と並列して又は同時に動作し、同時に又は画像データの重複若しくは後続のサブセットに対して実行される続くスライドウィンドウ演算中にプロセスを開始することができる。
実行パイプライン化又はパイプライン処理は、本明細書では、直列接続されたデータ処理要素、コンポーネント、又は関数の集合と呼ぶことができ、あるコンポーネント又は要素の出力は、次のコンポーネント又は要素の入力である。パイプラインの要素又はコンポーネントは、並列に又はタイムスライスされて実行され得、その場合、幾らかの量のバッファ記憶装置を要素間に挿入することができる。前又は先のコンポーネントが入力データの集合への動作を完全に終えるのを待つ代わりに、後続する又は続くコンポーネント又は要素は、例えば、前/先の要素又はコンポーネントからの結果の部分的又は不完全な集合に対して即座に処理を開始することができる。このようにして、プーリング層のコンポーネントは、例えば、一加速として、畳み込み結合層230からの少なくとも部分的な結果に対して動作するように構成することができる。
他の実施形態では、FC層208の実行をパイプライン化することもでき、したがって追加の加速及び効率に寄与する。更に、互いに並列に機能するために、前又は先のFCコンポーネント218からの部分出力データに応答して処理を開始するように、ニューロンとしてのFCコンポーネント218をパイプライン化することもできる。例えば、FC1のニューロン(例えば、N2)のネット関数222は、先のFCコンポーネント(例えば、N1)の出力関数224が完了する前にFC1の先のFCコンポーネント(例えば、N1)の出力関数224の処理動作と並列して処理を開始することができる。続けて、FCコンポーネントは、同様にそのようなパイプライン処理演算を介して互いに並行して動作することができる。
図3を参照すると、本明細書における様々な態様/実施形態による代表的な畳み込みデータ結果300の例を示す。畳み込み演算は、畳み込み層202の畳み込みコンポーネント212により、又は図2を参照して上述したように、RELUコンポーネント214との結合畳み込み層230として利用することができる。畳み込み層230の畳み込みコンポーネント212は、例えば、加重乗算及び合算を生成するように構成することができる。信号処理に関して、これらの演算は、一次元であり得、画像処理の場合、畳み込み演算は、それぞれが更なる処理で考慮又は検討されるべき量だけ別様又は同様に入力を加重する様々な重みがX軸及びY軸に沿って存在することができるように二次元であり得る。
一例では、数字の二次元アレイ302をメモリ304(メモリ1)で表されるメモリに記憶することができる。これらの値は、データのエリアの表現又はセンサ(例えば、画像/カメラ/ビデオ捕捉センサ等)による1つ又は複数の畳み込みコンポーネント212への入力として提供される注釈付き値であり得る。例えば、これらの値302は、画像又は画像データのサブセクション/サブセットに対応することができ、本明細書では、例示を目的として、畳み込みコンポーネント又は結合層230のコンポーネントによる畳み込み演算の潜在的な値の表現である。これらの値は、実数、虚数、1つ又は複数の変数の関数、又は例えば受信されるか若しくはメモリ304に記憶されるデータの他の表現であり得る。データ306は、データ302と同様であり得るが、わずかに異なって表現されて、例えばメモリ304に記憶するためにセンサ102により提供中であるため、データの線形記憶を示す。
畳み込みは、フィルタカーネルにより表される特徴の存在を検出するために、フィルタカーネルが画像にわたりスライドすることができる数学的演算である。CNNシステムでは、フィルタカーネルは、特徴を探す画像302の固定エリアを有することができる。したがって、フィルタの複数のインスタンスを局所受容野として知られている画像の非重複領域に接続することができる。各フィルタインスタンスは、全く同じ特徴を探すが、メモリ304における局所受容野においてのみ探す。したがって、探さなければならないあらゆる特徴について、局所受容野に接続されたフィルタカーネルインスタンスの対応する集合が用意されると言える。特徴の全てのフィルタカーネルインスタンスの畳み込み出力は、特徴の特徴マップを表す。複数のフィルタカーネルは、検出が意図される他の特徴に拡張される。
例えば、特定のフィルタカーネルにおける鼻の表現又は鼻の写真は、特定の位置又はサブセットにおいて画像(センサデータにより捕捉される)の上部に配置され、フィルタカーネルの下にある数字の乗算に使用することができ、乗算結果の合算を畳み込みコンポーネント212により実行して、特定の値を取得することができ、特定の値が次に記憶される。次に、カーネルは、1列だけある方向(例えば、右に)スライドすることができる。次に計算を繰り返し、計算は、ドット積乗算及び合算等の所与の数学的演算を用いて繰り返して結果を取得することができ、結果は記憶される。
スライド動作は、1つ又は複数の反復でx軸に沿って続けることができ、x軸の終わりに達すると、特定の行に沿って続けることができる。カーネルは、最初の列に戻され得るが、次に1行だけ下にスライドし、そこから、畳み込みコンポーネント212は、再びスライド動作を繰り返す。画像302の重複画像領域308は、畳み込みウィンドウを表す。これは、畳み込みが畳み込みコンポーネント212により実行されるこれらの畳み込みウィンドウ308上にあり、畳み込みウィンドウ308に沿う。データ並列プロセッサ(例えば、SIMDプロセッサ)上において、畳み込みウィンドウに属するデータ及びフィルタカーネルに属するデータは、両方ともベクトルレジスタにロードすることができ、ベクトル積和(MAC)ユニットに供給することができる。1つのベクトルMAC演算は、例えば、1つの畳み込み出力を生成することができる。次に、この畳み込み出力は、後にメモリ2(メモリ310)に記憶することができる。フィルタカーネルが全ての重複畳み込みウィンドウ308との畳み込みを完了した後、完成した畳み込み出力が畳み込み出力メモリ310において利用可能であり得る。
畳み込みプロセスから、本明細書の態様により、互いと並列して又は同時に階層データセットを生成することができ、その後、RELUコンポーネント214により非線形化されて、画像が鼻の写真を含むか否か及び画像内のその位置を判断することができる。この判断が肯定である場合、鼻の写真を含む画像の部分は、画像の他の部分よりも高い畳み込み値を出力する傾向を有する。
一例では、3×3(又は他のn×nサイズ、又はn×pサイズ(ここで、n及びpは、同じであるか又は異なることができる正の整数である))畳み込みスライドウィンドウ308の下で、より小さい数字(例えば、1、2、3、7、8、9、2、4、5)の集合を導出することができ、次に即座に別のシーケンス(例えば、2、3、4、8、9、1、4、5、9)を生成することができる。これらは、画像からとるか又は画像から導出することができる値を表すことができる代表的な値である。一連の数字(例えば、1、2、3、7、8、9、2、4、5)は、畳み込みスライドウィンドウデータとして初期エリア/数字のサブセットからのものであり得る。次に、1行目、2行目、及び3行目の最初の列を無視し、2番目、3番目、及び4番目の列で開始される数字にフォーカスすることにより、別のシーケンス(例えば、2、3、4、8、9、1、4、5、9)を得ることができる。
更に3×3ウィンドウ308を利用して、メモリ304に記憶された画像データから、一例としてサイズ3×3である小さいサイズの画像データ部分を分析することができる。他のサイズのウィンドウを利用することもでき、サイズ例は、必ずしも網羅的ではなく、又は本明細書における全ての態様に限定されない。更に1列だけウィンドウをスライドさせると、ウィンドウ結果は、別のスライドウィンドウ結果を形成する3、4、5、9、1、3、5、9、3であり得る。次に、ドット積乗算演算は、ABCDEFGHとしてメモリ2(例えば、310)により注釈付けられた右下隅に表すことができるスライドウィンドウ畳み込みの出力として各数字を取得することができる。例えば、代表的な結果の値(例えば、A)は、基本的に、1、2、3、7、8、9、2、4、5を含む第1のウィンドウとのフィルタカーネルの畳み込みの出力を表し、2、3、4、8、9、1、4、5、9を含む第2のウィンドウとの鼻(又は他の特徴)を表すカーネルの畳み込みの出力を表すB等であり、ここで、類似性Hは、例えば、最後のウィンドウ1、3、2、9、3、5、1、1、3との鼻(又は他の特徴)を表すフィルタカーネルの畳み込みである。
A、B、C、D、E、F、G、及びHは、様々な方法で、所与の文字が対応するデータ又は1レベルの階層データとしてのいずれか1つの領域/サブセット/エリアにおける鼻の可用性のレベルを示すことができる。例えば、Aが非常に高い値である場合、鼻(又はデータセットのカーネル又はスライド畳み込みウィンドウに対応する他の特徴)がこの位置にあり得る確率が高い。したがって、畳み込みは、特定の特徴が画像データにある可能性があるか否か及びどこにあるかの現実的な推定を提供することができる。同様に、それぞれ畳み込みコンポーネント212により且つ結合計算層230により、他の特徴又は任意の数の特徴を分析して、1つ又は複数の画像内の1つ又は複数をパターン又は状況を検出することができ、これは、特徴検出と呼ぶことができ、その出力は、例えば、畳み込み出力310により示すことができる。
図4を参照すると、CNNシステム100のプーリング動作の更なる例を示す。畳み込みの出力310は、ここで、アルファベットを含めてメモリ2を用いて更に拡大され、文字は、例えば、より大きい画像からの任意の値又は関数を表す。プーリング層206のプーリングコンポーネント216は、畳み込みの出力310を低減する刈り込み、トリミング、又は圧縮プロセスによりデータを処理することにより、畳み込み出力310を処理する。
例えば、非重複ブロックの集合は、異なる陰影で又はメモリ2(メモリ310)において区切られるブロックで表すことができる。例えば、ブロックA、B、I、Jはブロック/ウィンドウC、D、K、Lと異なり、ブロック/ウィンドウC、D、K、Lは、ブロックE、F、M、N及びブロックG、H、O、Pと異なる等である。したがって、図2のプーリングコンポーネント216は、統計学的演算を実行して、例えばメモリ3に記憶されるプーリング出力402を達成することにより、畳み込みの出力と、これらの2×2セルのそれぞれ内でX軸に沿って2であり、y軸に沿って2であるセクタ非重複領域2×2とを処理することができる。これらのプーリング出力402は、スケーリング不変特徴を表す。
2×2の非重複領域が本明細書において例として示され説明されるが、p×n非重複ブロック/ウィンドウを使用することができるように、他のサイズを考え、利用することもでき、ここで、p又はnは、例えば、ゼロ以外の任意の正の整数であり得、互いと異なり得、又は同じであり得る。
プーリングコンポーネント216により実行される統計学的演算は、スライド畳み込みのウィンドウの最小、最大、平均、メジアン、又は他の統計学的演算(例えば、A、B、I、Jの)を含むことができる。プーリングコンポーネント216は、任意の統計学的演算のプーリング演算を実行することができるが、大半の実装形態では、プーリングコンポーネントにより使用される統計学的演算は、最大であり得る。
したがって、スライド畳み込み310の出力上のこれらの2×2ブロックウィンドウ(又は他のサイズのブロック/ウィンドウ)のそれぞれから値(例えば、代表的なB)を選択することができる。この例では、Bが選ばれており、Kが次のブロックから選ばれており、メモリ3 402に記憶されるように、E、P、そしてZ、A、U、Xが続き、スケール不変特徴として又は畳み込みコンポーネント212からの畳み込み出力310若しくはRELUコンポーネント214からの非線形畳み込み出力データの集合から導出されるボリューム低減出力としてプーリング出力を含む。したがって、プーリングコンポーネント216は、プーリング演算として、受信した入力からデータサイズを低減することができる。次に、プーリング演算の出力は、人工ニューラルネットワーク又はFC層208に入力することができ、これらは、更に、更なる判断を下すために画像内のパターン/状況について判断しようとする。
様々な態様では、特定のコンポーネントハードウェアをこれらの計算の実行に割り当てることができ、それにより、全てのメインプロセッサ(例えば、エンジン制御ユニット又は他の主処理コンポーネント)がする必要があるのは、畳み込みニューラルネットワークコンポーネントハードウェアに以下のことを教えるのみである:i)分析する画像があり、ii)画像が何であるかを特定した後、結果の指示を提供する。したがって、CNN104の様々な層の計算は、CNNアクセラレータにオフロードして、例えばバックグラウンドで計算を実行して、結果をメインプロセッサに戻すことができる。これは、電力及び性能の効率に関して良好な解決策であり得るが、そのようなハードウェアユニットは、マイクロコントローラ上で大きい面積を占め得ると共に、機能するのに大量の電力を消費し得るため、犠牲を伴い得る。したがって、本明細書における態様は、専用ハードウェアアクセラレータの必要性をなくすこともでき、代わりに専用CNNアクセラレータほど集約的でない特定の1つ又は複数のより小型軽量のコンポーネントを使用することにより、チップ上の特定の基盤を再使用することができる。したがって、コストを削減することができると共に、メインプロセッサに過負荷を掛けずに性能を維持することができる。
実施形態では、プーリングプロセッサ216は、畳み込みコンポーネント212又は畳み込み+RELU結合層230及び関連するプロセスと並行して動作することにより、演算をパイプライン化することを介して動作することができる。CNN104の各層が、先の層が全ての計算演算を終えた(例えば、スライド畳み込み310の全ての出力が特徴の特定の階層又はサブセット画像部分の画像全体にわたる反復のいずれかで生成された)後にのみ動作を開始する代わりに、プーリングコンポーネント216は、通常、プーリングウィンドウの全てが前のコンポーネントにより生成されるのを待つのとは対照的に、そのようなウィンドウが前のコンポーネント(例えば、畳み込みコンポーネント212)により生成されると直ちに、プーリングウィンドウでプーリング演算を開始することができる。
例えば、トリガーイベント(例えば、アクセスマッチ又は観測ユニット出力とも呼ばれる)として、次の層の処理のためにデータブロックが入力において利用可能であり得、したがって、次の層は、即座に計算を開始する。したがって、畳み込み層202/212が計算出力の1つのブロック/ウィンドウ(例えば、共有ブロックA、B、I、Jの1つ)を計算すると直ちにプーリング演算を開始することにより、処理利得を増大することができる。
出力のプーリングを開始するために、畳み込み層が畳み込み出力A、B、C、D、E、F、G等をメモリ2の出力310の右下隅にあるFまで全てを生成するのを待つのではなく、プーリングコンポーネント216は、データ可用性に基づいてトリガーイベント又は指示(又はアクセスマッチ)に応答して処理することができる。例えば、トリガーイベントは、所与のウィンドウの最後の値(例えば、2×2ウィンドウの最初の共有ブロックではJ)に対応するメモリ2におけるロケーションへの書き込みであり得る。したがって、2×2ブロックの要素、値、又は任意の係数がメモリ又は特定のメモリロケーションに書き込まれると直ちに、第1のプーリングコンポーネント216は、利用可能なデータに対するプーリング演算の処理を即座に開始するようにトリガーすることができる。
別の実施形態/態様では、この例でのトリガー指示は追加又は代替として、p×pウィンドウ(例えば、2×2非重複データブロック)の最後の値、位置、又は結果に対応するスライド畳み込みの出力の可用性であり得、ここで、pは、任意の正の整数であり得る。更に、このトリガーは、様々な入力データに対応する全ての入力におけるデータの可用性を含むように拡張することができ、したがって、データ自体の受信が完了/終了したか否か又は前の層(例えば、結合層230、畳み込みコンポーネント212、RELUコンポーネント214等)が完了したか否かに関係なく、データフロー処理フローと同様に、全ての入力がデータを受信すると、次の層における処理をトリガーすることができる(例えば、プーリングコンポーネント216を介して)。
値の可用性又は特定の位置での書き込み動作の指示に応答して、完成したブロック又は非重複ウィンドウ(例えば、非線形畳み込み出力データの2×2ウィンドウ又はスライド畳み込み310の出力)へのプーリング演算をプーリングコンポーネント216により開始することができる。プーリングコンポーネント216は、1つ又は複数の畳み込みコンポーネント212と同時に又は並行して複数の演算を同時に実行することができる。畳み込みコンポーネント212は、スライド畳み込み出力310を提供するが、プーリングコンポーネント216は、各ブロック(例えば、8ブロックJ、L、N、P、Z、B、D、及びF)に出力アドレス502を有する最終プーリング出力を提供することができる。したがって、例えば、Jが畳み込みコンポーネント216から利用可能になると直ちに、データの同じ階層又は異なる階層レベル内の画像内の他のウィンドウ又はデータのサブセットからC、D、E、F等の他の結果を待たずに、プーリングコンポーネント216のプーリング演算の一環として、A、B、I、Jの最大を統計学的演算の一例として見つけることができる。更に、Nが利用可能になると直ちに、Oがメモリに書き込まれるのを待たずに、E、F、M、Nのプーリング演算を開始することができる。同様に、Pが利用可能になると直ちに、G、H、O、Pのプーリング計算を開始することができ、例えば、出力スライド畳み込みデータ又は非線形出力データ310とも呼ばれる各ブロックについて同様であり得る。
図6を参照すると、CNN演算600の追加の例を示す。畳み込み+RELU結合層230は、ここで、結合層602として表すことができる。一般に、プーリングコンポーネント604は、通常、全ての畳み込み計算が完了した場合にのみ開始する。プーリングコンポーネント604の演算が完了した後、結合層606の更なる演算を開始することができ、これは、層602(すなわち異なる特徴の)からの更なるフィルタ及び特徴マップ又は画像全体に沿った異なる画像データ上の同じものを含むことができる。続けて、プーリングコンポーネント608又は同じプーリングコンポーネント604は、データ結果に対して処理を開始することができる。しかしながら、結合層602/606とプーリングコンポーネント604/608との間のこれらの演算は、時間的に互いにシーケンシャルであり、各コンポーネントは、特定のフィルタ、特徴マップのコンポーネントの全ての計算が終わった後にのみ、且つパイプライン処理なしで対応するコンポーネントの画像分析が完了した後にのみ開始される。
次に、図6の中央において、「制御プロセッサユニット(CPU)周波数の増大による加速」なる見出しの下で、各計算層に対応するこれらのウィンドウ又はエリアのサイズはより小さくすることができる。これは、CPU周波数の増大により達成することができるものの加速表現であり、したがってプロセッサがより高速で動作する場合、より高速に計算し、計算速度利得をもたらす。周波数の増大は必須ではなく、問題を有し得、場合により、最大の問題は、例えば、過度の消費電力に関連する。
同様又は実質的な計算利得は、畳み込みスライドウィンドウの演算からのデータの所与のブロック/サブセット/部分を畳み込みコンポーネント212が完了することと並行して、完了によりトリガーされるプーリングコンポーネント216のパイプライン処理を介して構成することができる。したがって、プーリングコンポーネント216は、畳み込みコンポーネント212の畳み込み演算に組み入れることができる。畳み込みが、例えば、A、B、I、J又は他のデータセット(同じ又は異なるウィンドウを用いた)であり得るデータ310の1つのブロックを出力すると直ちに、及び最後の値Jが返されると直ちにプーリング演算を開始することができる。したがって、プーリング演算が、例えば、A、B、I、Jに対して実行中である間、畳み込みは停止されず、C、D、K、及びL等の別のデータセットを出力し続ける。例えば、C、D、K、Lが利用可能になると、例えば、別のプーリングコンポーネント又は同じプーリングコンポーネント216を介したプーリングの次のラウンドを即座に、及び同様に更なる反復で開始することができる。これは、CPU周波数を増大させずに、且つ消費電力の増大を生じさせずに、CPU周波数の増大のみの場合と同レベルの加速を達成し得ることを意味する。
畳み込み層230及びプーリング層206のパイプライン演算からの加速は、制御フロープロセッサよりも又は制御フロープロセッサの代わりにデータフロープロセッサコンポーネントを用いるデータフロー処理を利用することにより行うことができる。一般に、制御フロープロセッサは、フォンノイマン型計算機からなるか、又は計算デバイスから別個のユニットであり得るメモリに常駐するプログラムを有する計算デバイス(制御フロープロセッサ)として構成される。更に、フォンノイマン型計算機は、プログラムカウンタに含まれるアドレスにおける命令をその時点で実行しなければならないことを制御フロープロセッサ(又は計算デバイス)に教えるプログラムカウンタを含む。次に、特定のプロセッサは、プログラムカウンタにより示されるメモリロケーションを見つけ、命令をフェッチし、プロセッサ内部に命令を運び、最終的に命令を実行する。プログラムカウンタは、インクリメントされ、次に制御フロープロセッサの通常動作の一環として上記シーケンスを全て再び繰り返す。
制御フロープロセッサ又はフォンノイマン型計算機とは対照的に、図7は、プーリングコンポーネント216又はCNNシステム104の他のコンポーネントとして利用されるデータフロープロセッサ(FU1〜FU6)の動作フロー例700を示す。データフロープロセッサは、命令がメモリからフェッチされないという意味でフォンノイマン型計算機と異なることができる。命令は、計算デバイス内部で既に利用可能である。特に、命令により必要とされるデータが利用可能である場合、データフロープロセッサでの命令が実行され、命令により必要とされるデータが利用可能になるときまでは何も行われない。
例えば、FU1〜FU6を用いて注釈付けられたブロックは、コンポーネントに既にハードワイヤードされた命令であり得る。特に、FU1及びFU2から出てFU3において終端する2つの線/端子は、FU3の入力端子として機能する。例えば、FU3の出力は、FU4及びFU5に接続することもできる。これらの枠は、命令であり得、各FU枠(データフロープロセッサ要素)に入る値は、演算子又は入力データであり得、ブロックから出る線は、出力データ又は命令/演算子の実行結果であり得る。したがって、各データフロープロセッサ要素と同様に、FU3は、FU1及びFU2の両方が出力を生成するまで実行しない。同様に、FU4もFU3及びFU1の出力を受信してから実行し、FU5もFU3及びFU6の入力を受信するまで実行しない。したがって、データフロープロセッサは、あるノードから別のノードにデータが即座利用可能であることに基づいて、又は即時利用可能であることに応答して、既にハードワイヤードされた命令を実行する。したがって、命令は、機能ユニット又は単純にハードウェアユニットで置換することができる。各FUは、各入力で受信データが利用可能になった後にのみ始動するノードとして動作することができる。
ここで、図8を参照すると、様々な態様又は実施形態によるCNN層を動作させるアーキテクチャCNNシステム800の一例を示す。システム800は、制御フロープロセッサを用いてコンポーネント(例えば、フォンノイマン型プロセッサ)を動作させることができる制御フロー処理部分802と、データフロープロセッサ(例えば、FU1〜FU6又は図及び本開示に記載される他のコンポーネント)を用いてコンポーネントが動作することができるデータフロー処理部分804とを含む。
プロセッサ相互接続806は、制御フロー処理部分802の一部としてCPU808(例えば、メインプロセッサ又は他のファンノイマン型プロセッサ)及びメモリ814並びにデータフロー処理部分804のデータフロープロセッサコンポーネントとして観測ユニット810及び1つ又は複数のコプロセッサ812を含め、様々なコンポーネントを接続するように動作することができる。
態様では、データフロー処理部分のコンポーネントは、パイプライン処理のためにプーリング層206のプーリングコンポーネント216及びFC層208のFCコンポーネント218をサポート又は含むように動作することができる。プーリング動作は、畳み込み層202、204、又は230が1つのブロックデータ(例えば、2×2データウィンドウ又は非重複データウィンドウの他のサイズのブロック)を出力すると直ちに開始することができる。観測コンポーネント/ユニット810は、データブロックがメモリ内のロケーションにおいて利用可能であるこのイベントを判断するように構成することができる。データブロックの最後のデータ(例えば、ブロックA、B、I、JからのJ)が特定のメモリアドレスに書き込まれたと観測ユニットが判断すると直ちに、観測ユニット810は、このイベントを検出することができ、畳み込み層230と並行して動作するプーリングコンポーネント(例えば、プーリングコンポーネント216)を含むコプロセッサ812へのインターフェース(I/F)を介してトリガーをコプロセッサ812に提供することができる。
図9を参照すると、様々な態様/実施形態による畳み込み層ウォッチテーブル900の一例を示す。観測ユニット810は、例えば、畳み込み層202の畳み込みコンポーネント212、RELU層204のRELUコンポーネント214、又は結合層230のコンポーネント212、214に対応する幾つかのテーブル904a〜904nを含むことができる。テーブル904a〜904n(nは、任意の正の整数である)のそれぞれは、畳み込みウォッチアドレス部分と、各畳み込み/RELUコンポーネント212、214に関連する畳み込みスライド出力310のアドレスに対応するプーリング出力アドレス部分とを含むことができる。トランザクションマッチユニット906は、例えば、テーブル904a〜904nに書き込まれたデータの特定のロケーションに応答してトリガーを生成する観測ユニット810のコンポーネントであり得る。出力908は、処理のために任意のコプロセッサ812に提供することができ、コプロセッサ812は、例えば、少なくとも部分的にプーリング演算に指定されたプーリングコンポーネント216及び図12〜図15に関して更に詳細に以下に考察されるFCコンポーネント218であり得る。
畳み込みウォッチアドレスは、結合層230の特定の畳み込み/RELUコンポーネント212、214に割り当てられ対応するテーブル904に記憶された図5のスライド畳み込み310の出力(例えば、J、L、N、P、Z、B、D、及びF)のアドレス502であり得る。これらは、観測ユニット810がモニタリングする畳み込み出力アドレスであり、例えば、畳み込みスライドウィンドウが畳み込みデータ又は抽出結果の集合を生成することに応答して、畳み込みコンポーネント212、RELUコンポーネント214、又は他のコンポーネントにより対応するテーブル904の列1に書き込むことができる。
各畳み込みウォッチアドレスには、例えば、図4のプーリング出力402に関連する対応するプーリング出力アドレスであり得る。プーリング出力402(例えば、B、K、E、P、Z、A、U、X)のアドレスロケーション(プーリング出力アドレス)は、特定のテーブル(例えば、904a又は他のテーブル)に関連する指定されたプーリングコンポーネント216に対応するプーリングアドレスであり得る。出力908のプーリング出力アドレスは、層206の対応するプーリングコンポーネント216がその出力を書き込むことができるメモリロケーションを含むことができる。
これらの畳み込み出力310の1つが利用可能であることを、テーブル904及びトランザクションマッチユニットコンポーネント906を含む観測ユニット810が検出すると、又は畳み込み出力の1つに対応するメモリロケーションの畳み込みウォッチアドレスが書き込まれたことを観測ユニット810が検出すると直ちに、観測ユニット810は、トランザクションマッチユニットコンポーネント906を介して、例えばコプロセッサ812として対応するプーリングコンポーネント216への出力908のトリガーを瞬時に生成する(アクセスマッチ出力として)。アクセスマッチ出力908は、畳み込み/結合コンポーネント212、214が、特定のデータブロック(例えば、非線形畳み込み出力データ/畳み込みコンポーネント出力の1つの2×2ブロック)での畳み込みスライドウィンドウを用いた作業を完了したことを示す。アクセスマッチは、対応するテーブル904が書き込まれたとき及び特定のブロックサイズ(畳み込み出力データ/非線形畳み込み出力データの非重複ブロック)の最後の要素が利用可能であることを示す、特定のテーブル904a〜904nに対応するプーリングコンポーネント216に提供されるトリガーであり得、したがって利用可能なデータブロックを用いてプーリング演算を実行する指示信号であり得る。したがって、アクセスマッチは、利用可能なデータを用いてスケール不変データとしてプーリング出力の生成を開始するように、対応するプーリングコンポーネント216を始動させるトリガー信号/指示/イベントであり得る。
加えて、観測ユニット810は、トランザクションマッチユニットコンポーネント906を介して、畳み込み層識別情報(ID)/畳み込みコンポーネントIDを介して書き込まれたメモリロケーションに対応するテーブルを含め、プーリングウィンドウの詳細を示し、それにより、このIDに対応するプーリングコンポーネント216は、それに従ってアクティブ化し、特定のテーブル904でのプーリング演算のために対応するデータ(畳み込みウォッチアドレス/プーリング出力アドレス)を受信する。複数の畳み込みコンポーネントは、それぞれ各テーブルに対応し、同様に、複数のプーリングコンポーネントは、それぞれ様々な畳み込みコンポーネント/結合層(畳み込みコンポーネント+RELUコンポーネント)に対応するため、プーリングコンポーネント216に、様々な畳み込みコンポーネントのいずれがトリガーを担当するかについての情報を提供することができる。次に、スケール不変データを書き込むために、プーリングコンポーネント216によりプーリング出力アドレスを利用することができる。
図10を参照すると、CNNのプーリングプロセッサとして一例としてのプーリングコンポーネント216及びコプロセッサ812を示す。プーリングコンポーネント216は、1つ又は複数のストライドレジスタ1002、1つ又は複数の統計演算(Op)レジスタ1004、ロード/ストアユニット1006、及び統計演算エンジン1008を含むことができる。コプロセッサ812は、全体として、対応するテーブル904(例えば、テーブル904a〜904nのいずれか1つ)を介して出力908として、プーリングウィンドウの詳細、すなわちプーリング入力アドレス、プーリング出力アドレス、畳み込み層ID、及びマッチ信号として、インターフェース信号を対応するテーブル904から受信する。
プーリングコンポーネント216のそれぞれは、2つのレジスタ:ストライドレジスタ1002及び統計演算レジスタ1004を含むことができる。ストライドレジスタ1002は、メモリ内の非連続データ又はデータセット間のロケーション距離を与えられるようにし、これは、データを検索し処理するために利用することができる。
例えば、畳み込み出力310 A、B、I、及びJの第1のウィンドウでは特に、例えば畳み込み出力/非線形畳み込み出力データの様々な値をAと共にメモリロケーション10に、Bと共にメモリロケーション11に、Cと共にメモリロケーション12に、Dと共にメモリロケーション13に、Eと共にメモリロケーション14に、Fと共にメモリロケーション15に、Gと共にメモリロケーション16に、Hと共にメモリロケーション17に、Iと共にメモリロケーション18に、Jと共にメモリロケーション19に記憶することができる。したがって、A、B、I、及びJ(すなわちスライド畳み込みウィンドウの出力/プーリング層入力)は、厳密には連続ロケーションにない。A及びBは、単に互いに隣接して存在している。I及びJは、例えば、互いに隣り合うことができるが、A及びBは、I及びJに隣接しない。したがって、ストライドレジスタ1002は、ストライド長/距離としてBからIの非連続距離を検索し、記憶し、又はコプロセッサ812/プーリングコンポーネント216に示す。
トリガーがアクセスマッチ信号の形態で受信されると直ちに、プーリングコンポーネント216は、畳み込みコンポーネント/層IDを特定し、畳み込み層IDがそれ自体又は特定のプーリングコンポーネント216に対応するか否かを判断することができる。一態様では、プーリングコンポーネント216と畳み込み/RELUコンポーネント212/214との間に1対1のマッピングがあり得る。したがって、20の結合層230がある場合、例えば、同数の対応するプーリングコンポーネント216があり得る。したがって、畳み込み層の識別情報が利用可能になると直ちに、対応するプーリングコンポーネント216は、ストライドレジスタ1002を介してストライド長を識別し、プーリングコンポーネント216は、どこで停止するか、すなわち畳み込みウォッチアドレス(畳み込み出力データ/非線形畳み込み出力データの非重複ウィンドウの最後のデータであるデータの最後のアドレス)を知る。
ロードストアユニット1006は、ストライドレジスタ1002からのストライド情報を使用し、A、B、I、及びJ又は畳み込み出力データ/非線形畳み込み出力データのブロックを統計演算エンジン1008に提供することができるメモリアクセスユニットとして構成され、統計演算エンジン1008は、対応する統計演算レジスタ1004において指定される4要素のデータ(例えば、2×2非重複ブロック)に対して統計演算を実行するように構成される。統計演算は、例えば、最大であり得、畳み込み層230コンポーネントとプーリングコンポーネント216との対応する一致に応じて、本明細書に指定されるように同じ演算又は異なる演算であり得る。統計演算が実行されると、出力値は、対応するテーブル(例えば、904a)内のプーリング出力アドレスにより示されるアドレスに記憶することができ、ロードストアユニット1006によりメモリロケーションへのデータの記憶が再び行われる。
相互接続806は、CNNの様々なコンポーネントを接続する相互接続(例えば、オンチップバス相互接続)を含むことができる。Sポート1012は、スレーブポートであり、Mポート1010は、マスタポートである。スレーブポート1012は、例えば、ストライドレジスタ1002及び統計演算レジスタ1004のプログラムに使用することができる。マスタポート1010は、例えば、ロードストアユニット1006がメモリからデータをフェッチし、再びデータをメモリに記憶するのに使用することができる。
図11を参照すると、プロセス又は状態フロー例1100を示す。メインCPU808、テーブル904を有する観測ユニット、プーリングコンポーネント216又は接続された他のコンポーネント、及びレジスタ904、1002、1004/メモリ814を含め、様々なCNN層の態様が表され、レジスタ904、1002、1004/メモリ814から畳み込みデータ出力をフェッチ/記憶することができ、場合により同じ/異なるメモリにプーリング層の出力を返すことができる。プロセスフロー1100は、ソフトウェアが、テーブル904又は本明細書に記載される他のテーブルをプログラムする図8のメインCPU808で実行されて開始される。
1102において、テーブル904aに、デバッグ/観測ユニットにおいて、例えば対応する非重複データブロック(例えば、畳み込みスライドウィンドウ演算から生じる2×2ブロックの畳み込みの出力)の最後の値としてJ、L、N、P、Z、E、B、D、Fのアドレスを入れることができる。
その後、1104において、プーリングプロセッサに、ストライド情報又はストライド及び統計演算等の続けて実行されるプーリング演算のパラメータをプログラムすることができる。
1106において、畳み込み層は、メインプロセッサ808及び観測ユニットを用いて動作することができ、畳み込みの出力が記憶されることが意図されるアドレスへのアクセス又は書き込みアクセスについてモニタリングする。これが生じると直ちに、デバッグ/観測ユニット810は、データブロックの可用性についてプーリングコンポーネント/プロセッサ(proc)216に通知する。
1108において、テーブル904において指定されたメモリロケーションへの書き込みアクセスが検出されると、詳細をテーブル904から検索して出力信号908を更新し、プーリングコンポーネント216に転送することができる。
1110において、プーリングコンポーネント216は、近傍データをフェッチすることができ、この例では、例えばJ、Jのアドレスロケーションに更新が行われたことを観測ユニットが示した場合、プーリングコンポーネント216は、2×2ブロック(又は他のサイズの非重複ブロック)を完成するためにA、B、及びI、又は対応し関連するデータブロックのデータをフェッチしなければならないことを知る。次に、それらの4つ全てが利用可能になると、1112において迅速に統計処理を行う。次に、1114において、出力は、このプーリングコンポーネント216に指定又は関連するテーブル内のプーリング出力アドレスにより決定されるメモリロケーションに返される。
図2及び本明細書における他の図に関して上述したように、畳み込み及びプーリングコンポーネント212/214及び216は、計算利得における第1の加速及び観測されるより低い/同じ電力効率として、並列にパイプライン化(又はパイプライン処理を用いて利用)することができる。畳み込み出力の部分/サブセットが検出されると直ちに、同じ又は他の畳み込み/RELUコンポーネント212、214がデータブロックの他のウィンドウを処理し出力し始める間、プーリングコンポーネント216を開始することができる。
図12を参照すると、FC層208のFCコンポーネント218の一例を示す。これは、畳み込みコンポーネント212/結合コンポーネント230(畳み込み212+RELUコンポーネント214及びプーリングコンポーネント216)間のパイプライン処理演算を用いた第1の加速を更に補足する、電力を増やすことなく計算利得を更に上げるために行うことができるFC層208での第2の加速を示す。FC層1200は、全結合層の加速を示す。
FC層208においてANNを形成する各ニューロンは、第1のFC層FC1においてN1、N2、N3と記される円により、及び第2のFC層FC2の一部としてN4及びN5により表すことができる。N4及びN5は、表されるようにN1、N2、及びN3である先の層の出力のそれぞれに接続される。したがって、N1の出力は、N4及びN5の両方への入力として提供される。同様に、N2の出力はN4及びN5の両方に入力され、N3も同じである。同様に、3つ全てのニューロンN1、N2、及びN3は、入力X1、X2、及びX3の同じ集合に接続され、データフロープロセッサとして構造化される。N1、N2、及びN3に供給されるのは、入力X1、X2、及びX3の同じ集合である。したがって、全結合層218において、ニューロンの出力は、任意の数の複数のFC層を含むことができる次の層におけるあらゆる入力に接続される。更に、FC1の全てのニューロンはFC2の全ての入力に接続され、ここで、W1〜W15は、対応する入力データの処理又は考慮の一環として、各入力に割り当てられる特定の重み又は各入力が加重されるべき量を定義する特定の重みを表す。
図13を参照すると、例えば、図2のニューロン構造のネット関数222、226及び出力関数224、228のより詳細な別の実施形態を示す。
図2のニューロン構造に関して上述したように、各ニューロンは、少なくとも2つの関数を含むことができる。一方の関数は、ネット関数と呼ぶことができ、NFとして注釈付けられ、他方は、出力関数と呼ぶことができ、OFとして注釈付けられる。ネット関数により実行される数学的演算は、割り当てられた/予め定義された/所与の重みとの入力のドット積乗算であり得る。
例えば、N1の関数は、NF1及びOF1として注釈付けられる。同様に、ニューロン2のネット関数及び出力関数は、NF2及びOF2として注釈付けられ、ニューロンN3〜N5、NF3〜NF5、及びOF3〜OF5でも同様である。特定のFC層(例えば、FC1、FC2)のニューロンのそれぞれ1つは、他と全く同じ入力の集合であるが、N1ではW1、W2、W3、他のニューロンでは異なる他の重み − ニューロン2ではW4、W5、W6及びN3ではW7、W8、W9 − 等の各入力に関連する重みが異なるか又は様々である入力を受信するネット関数を有する。ニューロン(又はFCコンポーネント218)の各ネット関数は、以下に表されるように、現れる入力を重みで乗算する(例えば、x1をW1で乗算し、x2をW2で乗算したものに加算し、x3をW3で乗算したものに加算し、他のニューロンN2及びN3についても同様)数学的演算を実行することができる:ネット関数=xa.(Wa)+xb.(Wb)+.......+xm.(Wm)。
更に、各ニューロンの出力関数は、ネット関数の出力をとることができ、したがって、ネット関数の出力は、そのニューロンの出力関数への入力として機能する。したがって、各ニューロンの出力関数(OF)は、ネット関数の出力に対して既知の数学的関数(例えば、シグモイド、双曲正接、サイン(sign)等又は他の数学的関数)を実行することができ、次にFC2における次段階のニューロンへの入力になり、例えば任意の数の複数のFC層に応じて以下同様である。
図14を参照すると、更なる表現として図2のFC層208の詳細と同様又は同じである、図13のFC層1300のデータ従属性グラフ1400を示す。FC1の第1の段階では、NF1、NF2、及びNF3は、互いの隣に並び、OF1、OF2、及びOF3も同じFC1において下に並ぶ。例えば、NF1は、OF1において終端し、NF2は、OF2において終端又はOF2の出力に接続し、NF3もOF3で同様である。データフロープロセッサ/処理と同様に、線又は矢印は、OF1が、データをNF1から受信するまで実行を開始しないことを示す。各OFにおける処理は、入力においてデータが利用可能であることに応答して開始される。同様に、OF2も、NF2からデータを受信するまで実行を開始しない。更に、OF3も、NF3からのデータを受信するまで実行を開始しない。
FC2の次段階において、前の層FC1の出力関数の出力として、複数の接続(矢印)がNF4において終端する。同様に、全結合層208における各ニューロンも前の層のあらゆる出力に接続される。したがって、NF4の演算は、NF4の入力に提供されるOF1〜OF3の出力の可用性に依存し、NF5の演算は、NF5の入力に提供されるOF1〜OF3の出力の可用性に依存し、NF6でも同じである。図14は、図13と同様であるが、わずかに拡大された異なる表現である。ANN又は人工ニューラルネットワークを形成する各段階又は層において任意の数のFCコンポーネントを用いて、任意の数のFC層を実施することができる。NF4は、従属データをOF1〜OF3から受信すると直ちに、OF4に入力される出力を生成し、その後にのみ、OF4は、その結果を生成する。これは、データフロー処理である。
図14は、NF1が実行中であり、その関数NF1が実行すると直ちにOF1に引き継がれるような実行1402のクロノグラフを更に示す。その後、NF2が実行し、OF2が実行し、次にNF3が実行し、次にOF3が順次実行する。例えば、OF1、OF2、及びOF3が実行した場合のみ、OF4が実行する。したがって、OF4の出力が生成されるのは、NF4が利用可能になった後にのみである。
実施形態では、実行1404のクロノグラフを用いて、FC層208は、NF1が計算を完了すると直ちに、OF1が実行を開始し、OF1の実行が、入力データが利用可能であることによりトリガーされるようなパイプライン処理を用いて動作することもできる。OF1が実行中である間、NF2の実行を妨げるものはなく、したがってNF2の実行もOF1の実行と並行して開始される。NF2がNF1に続く実行1402の前のクロノグラフと比較して、OF1の実行中、コンポーネント及び技法を利用してNF2を実行することができ、したがってNF2及びOF1の実行が重複する。したがって、OF6をはるかに早く終えることができ、計算利得が上がる。
ここで、図15を参照すると、FC層208におけるパイプライン処理を可能にする観測ユニットコンポーネント810の別の態様1500を示す。テーブル904の少なくとも1つのテーブル(例えば、1510(ここで、nは、任意の整数である))は、観測ユニットコンポーネント810とのFC層208におけるパイプライン処理を可能にする更なる拡張として、他と異なるテーブルを含むことができる。1510を含め、これらのテーブル904は、例えば、FC層218のFCコンポーネント208及び最初にFC1の入力において受信されるプーリングコンポーネント216のプーリング出力と併せて動作することができる。FC層208及びFCコンポーネント216に専用又は割り当てられるのは、1つのテーブル1510である。
テーブル1510は、3つの列、すなわちニューロンネット関数の宛先アドレス列1502、ニューロン出力関数の宛先アドレス1504、及び活性化関数1506を含む。一例では、図13におけるNF1が実行中である場合、全ての乗算及び加算を行う。出力をOF1に提出することができると考えると、NF1は、その出力を特定のメモリロケーションに書き込む必要があり、そのメモリロケーションは、第1の列1502(ニューロンネット関数出力アドレス)に入る。次に、NF1により生成されたデータであるこのデータは、出力関数OF1に受け入れられる。NF1の出力の処理が行われ、次にOF1がその出力をどこかに書き込む必要があり、これは、基本的に、ニューロン活性化関数出力アドレス列1504におけるアドレスである。
しかしながら、出力関数は、ここで、特別なコプロセッサにより実行することができ、特別なコプロセッサには、トランザクションマッチユニット906により、対応するニューロンネット関数により生成されたデータの可用性について通知される。特定の一例では、NF1は、データをOF1に提供する。次に、OF1は、出力を計算し、それをロケーションに記憶し、NF1の出力アドレスは、特定の(例えば、最初の)行の最初の列にある。次の列1504において、テーブル1510は、出力関数OF1の出力アドレスを管理又は保持し、何を行わなければならないか又はどのような種類の出力関数を適用しなければならないか、シグモイド、tanh、シヌソイド等が同じ行の3列目1506に記載される。関数又は各行は、互いに異なってもよく又は同様であってもよい。したがって、ニューロンのネット関数(例えば、NF1)が出力アドレスに書き込むと直ちに、この演算は、トランザクションマッチコンポーネント906を介して検出され、この演算の詳細は、出力1508を介してFCコンポーネントとしてのコプロセッサに転送される。
出力1508は、入力アドレス及び出力アドレスを含む。入力アドレスは、基本的に、ネット関数が出力を書き込む場所である。出力アドレスは、出力関数の出力のアドレスである。出力関数は、例えば、活性化関数コプロセッサ812により実行される。出力関数は、3つの情報出力1508の一環として、トランザクションマッチユニット906により転送されるトリガー指示/イベントとして入力の1つとして関数セレクタを受信している。これらの3つの情報は、FC層208に指定されたテーブル1510の行の各セルからの情報である。関数セレクタは、3番目の列1506から入力され、入力アドレスは、最初の列1502から入力され、出力アドレスは、2番目の列1504から検索されている。
図16を参照すると、図15の出力1508の受信コンポーネントとして、例えばFCコンポーネント812a又はOFコンポーネントのコプロセッサ812の一例1600を示す。例えば、コプロセッサ812の1つとしてのFCコンポーネント812aは、出力1508を受信する受信側コンポーネントであり得る。FCコンポーネント812a又はFCコンポーネント218と同じものは、ロードストアユニット1608を含み、ロードストアユニット1608は、相互接続マスタポートM1610を通して、入力アドレスにより示されるメモリロケーションからデータを取得することができ、データを取得し、関数1 1602、関数2 1604、又は任意の数のコンポーネント関数m 1606として注釈付けられるハードウェアの部分に提出する。次に、ロード/ストアユニット1608は、その情報が関数セレクタ(SEL)と呼ばれるインターフェース又は出力/入力に利用可能であるため、これらの関数1602〜1606のいずれにこの最近フェッチされたデータを提出するか、又はいずれがデータを処理するかを知る。関数1 1602、関数2 1604、又はさもなければ1606が所与の関数に従って処理の作業を完了すると、その関数(例えば、演算子又は他の処理/数学的関数)により生成されたデータは、ロードストアユニット1608により「出力アドレス」で示されるメモリロケーションに記憶される。
したがって、本明細書に記載されるFCコンポーネントのネット関数は、メインCPUで実行することができ、出力関数は、関数コプロセッサで実施されて、ネット関数及び出力関数の実行をパイプライン処理で重複させる。プーリングコンポーネント及び結合層230のコンポーネントをパイプライン処理することによる第1の加速と併せて、CNNは、更なる並列処理のためにプーリングウィンドウの可用性を判断する能力を有して動作することができる。これは、各コンポーネントを介して進行中の畳み込み及びRELU演算と並行して、プーリングウィンドウに対して統計学的演算を開始する能力を含む。更に、CNNの第2の加速において、ニューロンのネット関数/FCコンポーネントの実行の完了を判断する能力及び次のニューロンのネット関数の実行と重ねてニューロンの活性化関数の実行を開始する能力がある。
図17を参照すると、FC層208内の一例のプロセス又は状態フロー1700を示す。図11と同様に、プロセスフローは、メインCPU808上のソフトウェア、テーブル1510で強化された観測ユニット、及び1つ又は複数の活性化関数コプロセッサ等として接続されるFCコンポーネント218、及びレジスタ904、1002、1004/メモリ814を含むことができ、レジスタ904、1002、1004/メモリ814から畳み込みデータ出力をフェッチし、場合により同じ/異なるメモリにプーリング層の出力を返すことができる。
プロセスフロー1700は、1702において開始され、観測ユニット810により管理されるテーブルとしてテーブル1510をプログラムする図8のメインCPU808でソフトウェアが実行される。
1704において、観測ユニットは、相互接続トランザクションをモニタリングして、ネット関数がアドレスにネット関数出力を書き込んだか否かを判断する。アドレスへの書き込み関数に応答して、観測ユニットは、1706においてこれを検出し、1708において、ANN内の活性化関数コプロセッサ又は次のFCコンポーネントにネット関数の出力可用性について通知する。1710において、活性化関数コプロセッサは、ネット関数の出力をフェッチし、1712において活性化関数をデータに適用し、1714において、例えば活性化関数出力をメモリに書き込む。
本開示内で説明される方法は、一連の動作又はイベントとして本明細書に示され説明されるが、そのような動作又はイベントの示される順序が限定の意味で解釈されるべきではないことが理解される。例えば、幾つかの動作は、本明細書に示され及び/又は説明される順序から離れて、異なる順序で及び/又は他の動作又はイベントと同時に行うことができる。加えて、本明細書における説明の1つ又は複数の態様又は実施形態を実施するために、示される全ての動作が必要であるわけではない。更に、本明細書に示される動作の1つ又は複数は、1つ又は複数の別個の動作及び/又はフェーズで実行し得る。
図18を参照すると、本開示に記載される様々な態様/実施形態/詳細による、CNNにおける異なるパイプライン処理を用いた様々な加速を利用するプロセスフロー1800を示す。方法1800は、1802において開始され、1つ又は複数のプロセッサ(例えば、畳み込みコンポーネント212)を介して、1つ又は複数の画像からデータを抽出する畳み込み演算を実行する。
1804において、畳み込みコンポーネントは、細部は階層であり得るデータセットとして畳み込みデータを1つ又は複数の正規化線形関数(RELU)214に提供し、RELU214は、次に畳み込み層202又は結合層230の一環として非線形畳み込み出力データを生成する。
1806において、プーリングコンポーネント216は、データ及びデータウィンドウ(例えば、プーリングウィンドウ)の可用性のトリガーを受信することができ、データウィンドウは、非線形畳み込み出力データの様々なデータセットからのデータの非重複ウィンドウであり得る。プーリングコンポーネント216は、非線形畳み込み出力データのサブセットであるプーリングウィンドウ及び画像で生成中の畳み込みデータに基づいて、畳み込み演算と並行してプーリング演算をデータブロックに対して開始することができる。プーリングコンポーネント216は、観測ユニット810によるこのデータウィンドウの可用性により、且つ処理が出力をメモリに書き込んだ後にトリガーされる。
他の実施形態では、方法1800は、ANNの第1の全結合FC層において、第1のネット関数ノードの第1のネット関数出力を第1の出力関数ノードに提供することを更に含むことができる。第1の出力関数ノードの第1の出力関数出力は、次に、ANN出力を生成するように構成された続くFC層の第2のネット関数ノードに提供することができる。第1のネット関数(例えば、NF1)の完了は、観測コンポーネント810により判断することができ、後続層に対して第1のノードの第1のネット関数の完了をトリガーすることができ、後続層では、パイプライン処理を介して第1のFC層の出力関数を生成する第1の出力ネットワークノードと並行して第2のノードの第2のネット関数を処理することができる。
1808において、方法は、プーリング出力に基づいてANNの人工ANN出力を提供することを更に含む。ANN出力は、FC層208の出力であり得、次にこれを更に使用して、例えばセンサデータの画像内の特定のパターン/高レベル特徴の認識又は特定のために確率に分類される。パターンの認識から様々な状況を特定することもでき、次に、様々な状況が存在するか否かに基づいて、歩行者が走行路にいる場合、ブレーキ等の判断をシステム内で下すことができる。
アプリケーション(例えば、プログラムモジュール)は、特定のタスクを実行し、及び/又は特定の抽象データ型を実施するルーチン、プログラム、コンポーネント、データ構造等を含む。更に、開示される動作が、1つ又は複数の関連するデバイスにそれぞれ動作可能に結合することができるシングルプロセッサ又はマルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ、パーソナルコンピュータ、ハンドヘルド計算デバイス、マイクロプロセッサベース若しくはプログラマブル消費者電子機器等を含め、他のシステム構成を用いて実施し得ることを当業者は認識する。
計算デバイスは、通常、様々なコンピュータ可読媒体を含むことができる。コンピュータ可読媒体は、コンピュータによりアクセス可能であり、揮発性媒体及び不揮発性媒体の両方、リムーバブル媒体及び非リムーバブル媒体の両方を含む任意の利用可能な媒体であり得る。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータ等の情報を記憶する任意の方法又は技術で実施される揮発性媒体及び不揮発性媒体の両方、リムーバブル媒体及び非リムーバブル媒体の両方を含む。コンピュータ記憶媒体(例えば、1つ又は複数のデータストア)は、限定ではなく、RAM、ROM、EEPROM、フラッシュメモリ、若しくは他のメモリ技術、CD ROM、デジタル多用途ディスク(DVD)、若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、若しくは他の磁気記憶装置、又は所望の情報の記憶に使用することができ、コンピュータによりアクセス可能な任意の他の媒体を含むことができる。
通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波若しくは他の輸送機構等の変調データ信号に含まれる他のデータを具現し、任意の情報送出媒体を含む。用語「変調データ信号」は、1つ又は複数の信号に情報を符号化するのと同様に設定又は変更される特性の1つ又は複数を有する信号を指す。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続等の有線媒体及び音響、RF、赤外線、及び他の無線媒体等の無線媒体を含む。上記の任意の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
例は、方法、方法の動作又はブロックを実行する手段、機械により実行されると、本明細書に記載される実施形態及び例に従って複数の通信技術を使用して同時通信する方法の動作又は装置若しくはシステムを機械に実行させる命令を含む少なくとも1つの機械可読媒体等の主題を含むことができる。
例1は、畳み込みニューラルネットワーク(CNN)のためのシステムであって、1つ又は複数の画像からデータを抽出し、且つ非線形畳み込み出力データを出力するように構成される1つ又は複数の正規化線形関数(RELU)にデータを提供する畳み込み演算を実行するように構成される畳み込みコンポーネントと、非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、畳み込み演算と並行してパイプラインプロセスを介してプーリング出力を生成するように構成されるプーリングコンポーネントと、プーリング出力に基づいてANN出力を提供する人工ニューラルネットワーク(ANN)を形成し、且つANN出力に基づいて1つ又は複数の画像におけるパターンの認識を可能にするように構成される全結合(FC)コンポーネントとを含むシステムである。
例2は、例1の主題を含み、プーリングコンポーネントは、プーリングウィンドウの可用性を特定し、且つ非線形畳み込み出力データの異なるサブセットに対応する複数のプーリングウィンドウを処理するように更に構成される。
例3は、任意選択的に任意の要素を包含又は省略して、例1又は2のいずれか1つの主題を含み、FCコンポーネントは、ニューロンの後続層に結合されるニューロンの第1の層を含み、第1の層及び後続層のニューロンは、ネット関数出力を提供するように構成されるネット関数ノードと、ネット関数出力から出力関数出力を生成するように構成される出力関数ノードとをそれぞれ含む。
例4は、任意選択的に任意の要素を包含又は省略して、例1〜3のいずれか1つの主題を含み、ニューロンの第1の層は、少なくとも1つの先行層から、プーリング出力、畳み込みコンポーネントからのデータ、又は非線形畳み込み出力データの少なくとも1つを含む出力を受け取る同じネット関数入力の第1の集合を有する第1のニューロンをそれぞれ含み、及びニューロンの後続層は、ニューロンの第1の層から同じ出力を受け取る同じネット関数入力の第2の集合を有する第2のニューロンをそれぞれ含む。
例5は、任意選択的に任意の要素を包含又は省略して、例1〜4のいずれか1つの主題を含み、ネット関数ノードは、それぞれ入力及び入力に関連する重みのドット積乗算及び対応する結果の合算を実行するように構成され、及び出力関数ノードは、ネット関数出力に活性化関数を実行して、FCコンポーネントの出力を提供するように構成され、第1のニューロンの出力関数ノードは、別のパイプラインプロセスを介して第2のニューロンのネット関数ノードと並行して動作する。
例6は、任意選択的に任意の要素を包含又は省略して、例1〜5のいずれか1つの主題を含み、プーリングコンポーネントは、非線形畳み込み出力データのボリュームの低減を生成し、且つ非線形畳み込み出力データを処理して、FCコンポーネントに提供されるプーリング出力としてスケーリング不変データにするように更に構成される。
例7は、任意選択的に任意の要素を包含又は省略して、例1〜6のいずれか1つの主題を含み、畳み込みコンポーネントとのプーリングコンポーネントのパイプラインプロセスに対応する1つ又は複数の第1のテーブルを含む観測ユニットコンポーネントと、畳み込みコンポーネントによる、1つ又は複数の第1のテーブル内にあるメモリロケーションへの書き込み動作を検出し、且つ畳み込みコンポーネントが1つ又は複数の第1のテーブル内のメモリロケーションへの書き込み動作を実行することに応答して、プーリングコンポーネントの統計学的演算をトリガーし、且つ1つ又は複数の第1のテーブルからプーリングコンポーネントへの複数の出力を生成するように構成されるトランザクションウォッチコンポーネントとを更に含む。
例8は、任意選択的に任意の要素を包含又は省略して、例1〜7のいずれか1つの主題を含み、複数の出力は、プーリングウィンドウに関連するマーカを識別する1つ若しくは複数の第1のテーブルの畳み込みウォッチアドレスに関連するプーリング入力アドレス、プーリングコンポーネントの演算へのトリガー、統計学的演算の結果を有する1つ若しくは複数の第1のテーブル内のアドレスを指すプーリング出力アドレス、又は1つ若しくは複数の第1のテーブルをプーリングコンポーネントに関連付ける畳み込み層識別子(ID)の少なくとも1つを含む。
例9は、任意選択的に任意の要素を包含又は省略して、例1〜8のいずれか1つの主題を含み、FC層に関連する第2のテーブルは、FCコンポーネントのネット関数ノードのネット関数出力に対応するニューロンネット関数出力アドレス、出力関数ノードのANN出力に対応するニューロン活性化出力アドレス、及び出力関数ノードによって実行される活性化関数の少なくとも1つを含む。
例10は、畳み込みニューラルネットワーク(CNN)のための装置であって、メモリに結合される1つ又は複数のプロセッサを含み、メモリは、1つ又は複数のプロセッサの動作を実行する命令を含み、1つ又は複数のプロセッサは、1つ又は複数の画像から、1つ又は複数のフィルタカーネルを介して、畳み込みデータセットを含むデータ特徴を抽出することと、畳み込みデータセットを非線形出力データの集合に変換することと、非線形出力データの集合のうちの非線形データの第1の集合又は畳み込みデータセットの畳み込みデータの第1の集合が利用可能であると判断することに応答して、データ特徴の抽出又は畳み込みデータセットの変換の少なくとも一方と並行して動作するパイプラインプロセスを介して、非線形出力データの集合に対するプーリング演算からプーリング出力を生成することとを行うように構成される、装置である。
例11は、例10の主題を含み、1つ又は複数のプロセッサは、1つ又は複数の画像の部分にわたってスライドする1つ又は複数の畳み込みウィンドウを用いてスライド畳み込みを実行することにより、データ特徴を抽出して、1つ又は複数の画像の特徴マップを生成し、且つ1つ又は複数の畳み込みウィンドウに対応するデータ特徴が存在する確率を特定するように更に構成される。
例12は、任意選択的に任意の要素を包含又は省略して、例10〜11の主題を含み、1つ又は複数のプロセッサは、畳み込みデータセットの畳み込みデータの第1の集合を処理して、プーリングウィンドウに基づいて畳み込みデータのスケーリング不変集合にするプーリング演算と並行した畳み込み演算を介して、1つ又は複数の画像から畳み込みデータセットの畳み込みデータの第2の集合を抽出するように更に構成される。
例13は、任意選択的に任意の要素を包含又は省略して、例10〜12の主題を含み、1つ又は複数のプロセッサは、非線形データの集合に対応するプーリング出力をカテゴリに分類することにより、全結合(FC)コンポーネントを介してプーリング出力を処理するように更に構成される。
例14は、任意選択的に任意の要素を包含又は省略して、例10〜13の主題を含み、1つ又は複数のプロセッサは、第1のFCコンポーネントにおけるプーリング出力からの入力及び重み並びに加重入力の和のドット積を含むネット関数を実行することと、第1のFCコンポーネントにおけるニューロンネット関数出力に対して出力関数を実行して、後続するFCコンポーネントにおける別のドット積及びプーリング出力からの入力の別の和を含む別のネット関数の実行と並行してニューロン活性化関数出力を生成して、第2のニューロンネット関数出力を生成することとを行うように更に構成される。
例15は、任意選択的に任意の要素を包含又は省略して、例10〜14の主題を含み、第1のFCコンポーネント及び後続するFCコンポーネントは、メモリから命令をフェッチすることなく、且つプーリング出力からの入力データ又は先行するFCコンポーネントがニューロン入力において利用可能であることに応答して動作するデータフロープロセスを含む。
例16は、任意選択的に任意の要素を包含又は省略して、例10〜15の主題を含み、1つ又は複数のプロセッサは、ネット関数出力に対応するニューロンネット関数出力アドレス、ニューロンの出力に対応するニューロン活性化関数出力アドレス、及びニューロンの出力関数によって実行される活性化関数のエントリを含むテーブルを埋めて、ネット関数出力に基づいてニューロンの出力を生成するように更に構成される。
例17は、畳み込みニューラルネットワーク(CNN)のための方法であって、1つ又は複数のプロセッサを介して、1つ又は複数の画像からデータを抽出する畳み込み演算を実行することと、1つ又は複数のプロセッサを介して、非線形畳み込み出力データを生成するように構成される1つ又は複数の正規化線形関数(RELU)にデータを提供することと、1つ又は複数のプロセッサを介して、非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、畳み込み演算と並行してプーリング出力を生成することと、1つ又は複数のプロセッサを介して、プーリング出力に基づいて人工ニューラルネットワーク(ANN)のANN出力を提供することとを含む方法である。
例18は、例17の主題を含み、プーリングウィンドウの可用性の判断を生成し、且つ非線形畳み込み出力データの異なるサブセットに対応する複数のプーリングウィンドウを処理することを更に含む。
例19は、任意選択的に任意の要素を包含又は省略して、例17〜18の主題を含み、ANNの第1の全結合(FC)層において、第1のネット関数ノードの第1のネット関数出力を第1の出力関数ノードに提供することと、ANN出力を生成するように構成される後続するFC層の第2のネット関数ノードに第1の出力関数ノードの第1の出力関数出力を提供することとを更に含む。
例20は、任意選択的に任意の要素を包含又は省略して、例17〜19の主題を含み、第1のネット関数ノードのうちの第1のネット関数ノードの完成を判断することと、完成に応答して、第1のFC層の出力関数を生成する第1の出力ネットワークノードと並行して第2のネット関数ノードの第2のネット関数を開始することとを更に含む。
本明細書に記載される態様がハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せにより実施可能であることを理解されたい。ソフトウェアで実施される場合、機能は、コンピュータ可読媒体上の1つ又は複数の命令又はコードとして記憶又は伝送し得る。コンピュータ可読媒体は、コンピュータ記憶媒体及びある場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体の両方を含む。記憶媒体は、汎用又は専用コンピュータによりアクセスすることができる任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROM、若しくは他の光ディスク記憶装置、磁気ディスク記憶装置、若しくは他の磁気記憶装置、又は命令若しくはデータ構造の形態で所望のプログラムコード手段を搬送若しくは記憶するのに使用することができ、汎用若しくは専用コンピュータ若しくは汎用若しくは専用プロセッサによりアクセス可能な任意の他の媒体を含むことができる。また、任意の接続も適宜コンピュータ可読媒体と呼ばれる。例えば、ソフトウェアが同軸ケーブル、光ファイバケーブル、撚り対線、デジタル加入者回線(DSL)、又は赤外線、電波、及びマイクロ波等の無線技術を使用してウェブサイト、サーバ、又は他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、撚り対線、DSL、又は赤外線、電波、及びマイクロ波等の無線技術は、媒体の定義に含められる。本明細書で使用される場合、ディスク(disk)及びディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク、及びブルーレイディスクを含み、ディスク(disk)は、通常、データを磁気的に再生成し、一方、ディスク(disc)は、レーザを用いてデータを光学的に再生成する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
本明細書に開示される態様と併せて説明された様々な例示的な論理、論理ブロック、モジュール、及び回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)若しくは他のプログラマブル論理デバイス、離散ゲート若しくはトランジスタ論理、離散ハードウェアコンポーネント、又は本明細書に記載される機能を実行するように設計されるそれらの任意の組合せを用いて実施又は実行し得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替では、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、又は状態機械であり得る。プロセッサは、計算デバイスの組合せ、例えばDSP及びマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと併せた1つ又は複数のマイクロプロセッサ、又は任意の他のそのような構成として実施することもできる。更に、少なくとも1つのプロセッサは、本明細書に記載される動作及び/又はアクションの1つ又は複数を実行するように動作可能な1つ又は複数のモジュールを含み得る。
ソフトウェア実施の場合、本明細書に記載される技法は、本明細書に記載される機能を実行するモジュール(例えば、プロシージャ、関数等)を用いて実施し得る。ソフトウェアコードは、メモリユニットに記憶し、プロセッサにより実行し得る。メモリユニットは、プロセッサ内で実施してもよく、又はプロセッサ外で実施してもよく、プロセッサ外の場合、メモリユニットは、当技術分野で既知の様々な手段を通してプロセッサに通信可能に結合し得る。更に、少なくとも1つのプロセッサは、本明細書に記載される機能を実行するように動作可能な1つ又は複数のモジュールを含み得る。
本明細書に記載される技法は、CDMA、TDMA、FDMA、OFDMA、SC−FDMA、及び他のシステム等の様々な無線通信システムに使用し得る。「システム」及び「ネットワーク」という用語は、多くの場合、同義で使用される。CDMAシステムは、ユニバーサル地上無線アクセス(UTRA)、CDMA2000等の無線技術を実施し得る。UTRAは、広帯域CDMA(W−CDMA)及びCDMAの他の変形を含む。更に、CDMA2000は、IS−2000、IS−95、及びIS−856標準を包含する。TDMAシステムは、モバイル通信用グローバルシステム(GSM)等の無線技術を実施し得る。OFDMAシステムは、進化型UTRA(E−UTRA)、ウルトラモバイルブロードバンド(UMB)、IEEE802.11(Wi−Fi)、IEEE802.16(WiMAX)、IEEE802.20、フラッシュOFDM等の無線技術を実施し得る。UTRA及びE−UTRAは、ユニバーサルモバイルテレコミュニケーションシステム(UMTS)の一部である。3GPPロングタームエボリューション(LTE)は、ダウンリンクでOFDMAを使用し、アップリンクでSC−FDMAを使用する、E−UTRAを使用するUMTSのリリースである。UTRA、E−UTRA、UMTS、LTE、及びGSMは、「第3世代パートナーシッププロジェクト」(3GPP)という名称の組織からの文書において説明されている。更に、CDMA2000及びUMBは、「第3世代パートナーシッププロジェクト2」(3GPP2)という名称の組織からの文書において説明されている。そのような無線通信システムは、ペアになっていないライセンス不要スペクトル、802.xx無線LAN、BLUETOOTH、及び任意の他の近距離又は長距離無線通信技法を使用することが多いピアツーピア(例えば、モバイルツーモバイル)アドホックネットワークシステムを含み得る。
シングルキャリア周波数分割多元アクセス(SC−FDMA)は、単一の搬送波変調及び周波数領域等化を利用し、開示される態様と共に利用することができる技法である。SC−FDMAは、OFDMAシステムと同様の性能及び基本的に同様の全体複雑性を有する。SC−FDMA信号は、固有のシングルキャリア構造により、低いピーク対平均電力比(PAPR)を有する。SC−FDMAは、低いPAPRが送信電力効率に関してモバイル端末で有益であり得るアップリンク通信で利用することができる。
更に、本明細書に記載される特徴の様々な態様は、標準のプログラミング及び/又は工学技法を使用して方法、装置、又は製品として実施し得る。「製品」という用語は、本明細書で使用される場合、任意のコンピュータ可読デバイス、搬送波、又は媒体からアクセス可能なコンピュータプログラムを包含することが意図される。例えば、コンピュータ可読媒体は、限定ではなく、磁気記憶装置(例えば、ハードディスク、フロッピーディスク、磁気ストライプ等)、光ディスク(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)等)、スマートカード、及びフラッシュメモリデバイス(例えば、EPROM、カード、スティック、キードライブ等)を含むことができる。更に、本明細書に記載される様々な記憶媒体は、情報を記憶する1つ又は複数のデバイス及び/又は他の機械可読媒体を表すことができる。「機械可読媒体」という用語は、限定ではなく、命令及び/又はデータを記憶、包含、及び/又は搬送可能な無線チャネル及び様々な他の媒体を含むことができる。更に、コンピュータプログラム製品は、コンピュータに本明細書に記載される機能を実行させるように動作可能な1つ又は複数の命令又はコードを有するコンピュータ可読媒体を含み得る。
更に、本明細書に開示される態様と併せて説明される方法又はアルゴリズムの動作及び/又はアクションは、ハードウェアで直接、プロセッサにより実行されるソフトウェアモジュールで、又はそれらの組合せで実施し得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、又は当技術分野で既知の任意の他の形態の記憶媒体に存在し得る。例示的な記憶媒体は、プロセッサに結合し得、それにより、プロセッサは、記憶媒体と情報を読み書きすることができる。代替では、記憶媒体は、プロセッサに統合し得る。更に、幾つかの態様では、プロセッサ及び記憶媒体は、ASICに存在し得る。更に、ASICはユーザ端末に存在し得る。代替では、プロセッサ及び記憶媒体は、ユーザ端末における個別のコンポーネントとして存在し得る。更に、幾つかの態様では、方法又はアルゴリズムの動作及び/又はアクションは、コンピュータプログラム製品に組み込み得る機械可読媒体及び/又はコンピュータ可読媒体上のコード及び/又は命令の1つ、又は任意の組合せ、又は集合として存在し得る。
要約書に記載されるものを含め、本開示の示される実施形態の上記説明は、網羅的であるか又は開示される厳密な形態に開示される実施形態を限定することを意図しない。特定の実施形態及び例が例示を目的として本明細書に記載されるが、当業者が認識することができるように、そのような実施形態及び例の範囲内と見なされる様々な変更形態が可能である。
これに関して、開示される主題について様々な実施形態及び対応する図と併せて説明したが、該当する場合、他の同様の実施形態が使用可能であり、又は開示される主題から逸脱することなく、開示される主題と同じ、同様、代替、又は代わりの機能を実行するために、説明された実施形態に対する変更形態及び追加形態がなされ得ることを理解されたい。したがって、開示される主題は、本明細書に記載されるいずれの1つの実施形態にも限定されるべきではなく、範囲について、以下の添付の特許請求の範囲に従って解釈されるべきである。
特に上述したコンポーネント又は構造(組立体、デバイス、回路、システム等)により実行される様々な機能に関して、そのようなコンポーネントの説明に使用される用語(「手段」への言及を含む)は、本明細書に示される本発明の例示的な実装形態における機能を実行する開示される機能と構造的に均等でない場合でも、記載されるコンポーネントの指定された機能を実行する任意のコンポーネント又は構造(例えば、機能的に均等である)に、別段のことが指定されない限り対応することが意図される。加えて、特定の特徴は、幾つかの実装形態の1つのみに関して開示され得るが、そのような特徴は、必要に応じて及び任意の所与又は特定の用途に有利であるように他の実装形態の1つ又は複数の他の特徴と組み合わせ得る。
100 CNNシステム
102 センサ
104 CNN
106 歩行者検出器
106−102 ADAS検出器
106−112 検出器
108 車検出器
110 自転車又は自動二輪車検出器
112 交通標識検出器
114、116 アプリケーション
116 衝突警告
202、230 畳み込み層
204 RELU層
206 プーリング層
208 全結合層
210 出力層
212 畳み込みコンポーネント
214 RELUコンポーネント
216、604、608 プーリングコンポーネント
218 全結合コンポーネント
220 分類器関数
222、226 ネット関数
224、228 出力関数
230、602、606 畳み込み結合層
232、302 画像
300 畳み込みデータ結果
304 メモリ1
308 畳み込みスライドウィンドウ
310 畳み込み出力
402 プーリング出力
502 出力アドレス
600 CNN演算
700 動作フロー例
800 アーキテクチャCNNシステム
802 制御フロー処理部分
804 データフロー処理部分
806 相互接続
808 CPU
810 観測ユニット
812 コプロセッサ
814 メモリ
900 畳み込み層ウォッチテーブル
904a〜904n テーブル
906 トランザクションマッチユニットコンポーネント
908、1508 出力
1002 ストライドレジスタ
1004 統計演算レジスタ
1005 統計演算エンジン
1006、1608 ロード/ストアユニット
1010 マスタポート
1012 スレーブポート
1100 状態フロー
1200、1300 FC層
1400 データ従属性グラフ
1402、1404 実行のクロノグラフ
1500 観測ユニットコンポーネントの態様
1502 ニューロンネット関数の宛先アドレス
1504 ニューロン出力関数の宛先アドレス
1506 活性化関数
1510 テーブル
1602 関数1
1604 関数2
1606 関数m
1700、1800 プロセスフロー

Claims (20)

  1. 畳み込みニューラルネットワーク(CNN)のためのシステムであって、
    1つ又は複数の画像からデータを抽出し、且つ非線形畳み込み出力データを出力するように構成される1つ又は複数の正規化線形関数(RELU)に前記データを提供する畳み込み演算を実行するように構成される畳み込みコンポーネントと、
    前記非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、前記畳み込み演算と並行してパイプラインプロセスを介してプーリング出力を生成するように構成されるプーリングコンポーネントと、
    前記プーリング出力に基づいてANN出力を提供する人工ニューラルネットワーク(ANN)を形成し、且つ前記ANN出力に基づいて前記1つ又は複数の画像におけるパターンの認識を可能にするように構成される全結合(FC)コンポーネントと
    を含むシステム。
  2. 前記プーリングコンポーネントは、前記プーリングウィンドウの可用性を特定し、且つ前記非線形畳み込み出力データの異なるサブセットに対応する複数のプーリングウィンドウを処理するように更に構成される、請求項1に記載のシステム。
  3. 前記FCコンポーネントは、ニューロンの後続層に結合されるニューロンの第1の層を含み、前記第1の層及び前記後続層のニューロンは、ネット関数出力を提供するように構成されるネット関数ノードと、前記ネット関数出力から出力関数出力を生成するように構成される出力関数ノードとをそれぞれ含む、請求項1に記載のシステム。
  4. 前記ニューロンの第1の層は、少なくとも1つの先行層から、プーリング出力、前記畳み込みコンポーネントからの前記データ、又は前記非線形畳み込み出力データの少なくとも1つを含む出力を受け取る同じネット関数入力の第1の集合を有する第1のニューロンをそれぞれ含み、及び前記ニューロンの後続層は、前記ニューロンの第1の層から同じ出力を受け取る同じネット関数入力の第2の集合を有する第2のニューロンをそれぞれ含む、請求項3に記載のシステム。
  5. 前記ネット関数ノードは、それぞれ入力及び前記入力に関連する重みのドット積乗算及び対応する結果の合算を実行するように構成され、及び前記出力関数ノードは、前記ネット関数出力に活性化関数を実行して、FCコンポーネントの出力を提供するように構成され、第1のニューロンの前記出力関数ノードは、別のパイプラインプロセスを介して第2のニューロンの前記ネット関数ノードと並行して動作する、請求項3に記載のシステム。
  6. 前記プーリングコンポーネントは、前記非線形畳み込み出力データのボリュームの低減を生成し、且つ前記非線形畳み込み出力データを処理して、前記FCコンポーネントに提供される前記プーリング出力としてスケーリング不変データにするように更に構成される、請求項1に記載のシステム。
  7. 前記畳み込みコンポーネントとの前記プーリングコンポーネントの前記パイプラインプロセスに対応する1つ又は複数の第1のテーブルを含む観測ユニットコンポーネントと、前記畳み込みコンポーネントによる、前記1つ又は複数の第1のテーブル内にあるメモリロケーションへの書き込み動作を検出し、且つ前記畳み込みコンポーネントが前記1つ又は複数の第1のテーブル内の前記メモリロケーションへの前記書き込み動作を実行することに応答して、前記プーリングコンポーネントの統計学的演算をトリガーし、且つ前記1つ又は複数の第1のテーブルから前記プーリングコンポーネントへの複数の出力を生成するように構成されるトランザクションウォッチコンポーネントとを更に含む、請求項1に記載のシステム。
  8. 前記複数の出力は、前記プーリングウィンドウに関連するマーカを識別する前記1つ若しくは複数の第1のテーブルの畳み込みウォッチアドレスに関連するプーリング入力アドレス、前記プーリングコンポーネントの前記演算への前記トリガー、前記統計学的演算の結果を有する前記1つ若しくは複数の第1のテーブル内のアドレスを指すプーリング出力アドレス、又は前記1つ若しくは複数の第1のテーブルを前記プーリングコンポーネントに関連付ける畳み込み層識別子(ID)の少なくとも1つを含む、請求項7に記載のシステム。
  9. 前記FC層に関連する第2のテーブルは、前記FCコンポーネントのネット関数ノードのネット関数出力に対応するニューロンネット関数出力アドレス、出力関数ノードのANN出力に対応するニューロン活性化出力アドレス、及び前記出力関数ノードによって実行される活性化関数の少なくとも1つを含む、請求項7に記載のシステム。
  10. 畳み込みニューラルネットワーク(CNN)のための装置であって、
    メモリに結合される1つ又は複数のプロセッサ
    を含み、前記メモリは、前記1つ又は複数のプロセッサの動作を実行する命令を含み、前記1つ又は複数のプロセッサは、
    1つ又は複数の画像から、1つ又は複数のフィルタカーネルを介して、畳み込みデータセットを含むデータ特徴を抽出することと、
    前記畳み込みデータセットを非線形出力データの集合に変換することと、
    前記非線形出力データの集合のうちの非線形データの第1の集合又は前記畳み込みデータセットの畳み込みデータの第1の集合が利用可能であると判断することに応答して、前記データ特徴の抽出又は前記畳み込みデータセットの変換の少なくとも一方と並行して動作するパイプラインプロセスを介して、前記非線形出力データの集合に対するプーリング演算からプーリング出力を生成することと
    を行うように構成される、装置。
  11. 前記1つ又は複数のプロセッサは、前記1つ又は複数の画像の部分にわたってスライドする1つ又は複数の畳み込みウィンドウを用いてスライド畳み込みを実行することにより、前記データ特徴を抽出して、前記1つ又は複数の画像の特徴マップを生成し、且つ前記1つ又は複数の畳み込みウィンドウに対応するデータ特徴が存在する確率を特定するように更に構成される、請求項10に記載の装置。
  12. 前記1つ又は複数のプロセッサは、前記畳み込みデータセットの畳み込みデータの前記第1の集合を処理して、プーリングウィンドウに基づいて畳み込みデータのスケーリング不変集合にするプーリング演算と並行した畳み込み演算を介して、前記1つ又は複数の画像から前記畳み込みデータセットの畳み込みデータの第2の集合を抽出するように更に構成される、請求項10に記載の装置。
  13. 前記1つ又は複数のプロセッサは、前記非線形データの集合に対応する前記プーリング出力をカテゴリに分類することにより、全結合(FC)コンポーネントを介して前記プーリング出力を処理するように更に構成される、請求項10に記載の装置。
  14. 前記1つ又は複数のプロセッサは、
    ニューロンネット関数出力を生成する第1のFCコンポーネントにおける、入力と重みとのドット積及び前記プーリング出力からの加重入力の和を含むネット関数を実行することと、
    前記第1のFCコンポーネントにおける前記ニューロンネット関数出力に対して出力関数を実行して、後続するFCコンポーネントにおける別のドット積及び前記プーリング出力からの前記入力の別の和を含む別のネット関数の実行と並行してニューロン活性化関数出力を生成して、第2のニューロンネット関数出力を生成することと
    を行うように更に構成される、請求項13に記載の装置。
  15. 前記第1のFCコンポーネント及び前記後続するFCコンポーネントは、前記メモリから命令をフェッチすることなく、且つ前記プーリング出力からの入力データ又は先行するFCコンポーネントがニューロン入力において利用可能であることに応答して動作するデータフロープロセスを含む、請求項14に記載の装置。
  16. 前記1つ又は複数のプロセッサは、ネット関数出力に対応するニューロンネット関数出力アドレス、ニューロンの出力に対応するニューロン活性化関数出力アドレス、及び前記ニューロンの出力関数によって実行される活性化関数のエントリを含むテーブルを埋めて、前記ネット関数出力に基づいて前記ニューロンの前記出力を生成するように更に構成される、請求項10に記載の装置。
  17. 畳み込みニューラルネットワーク(CNN)のための方法であって、
    1つ又は複数のプロセッサを介して、1つ又は複数の画像からデータを抽出する畳み込み演算を実行することと、
    前記1つ又は複数のプロセッサを介して、非線形畳み込み出力データを生成するように構成される1つ又は複数の正規化線形関数(RELU)に前記データを提供することと、
    前記1つ又は複数のプロセッサを介して、前記非線形畳み込み出力データのサブセットのプーリングウィンドウに基づいて、畳み込み演算と並行してプーリング出力を生成することと、
    前記1つ又は複数のプロセッサを介して、前記プーリング出力に基づいて人工ニューラルネットワーク(ANN)のANN出力を提供することと
    を含む方法。
  18. 前記プーリングウィンドウの可用性の判断を生成し、且つ前記非線形畳み込み出力データの異なるサブセットに対応する複数のプーリングウィンドウを処理することを更に含む、請求項17に記載の方法。
  19. 前記ANNの第1の全結合(FC)層において、第1のネット関数ノードの第1のネット関数出力を第1の出力関数ノードに提供することと、
    前記ANN出力を生成するように構成される後続するFC層の第2のネット関数ノードに前記第1の出力関数ノードの第1の出力関数出力を提供することと
    を更に含む、請求項17に記載の方法。
  20. 前記第1のネット関数ノードのうちの第1のネット関数ノードの完成を判断することと、
    前記完成に応答して、前記第1のFC層の出力関数を生成する第1の出力ネットワークノードと並行して前記第2のネット関数ノードの第2のネット関数を開始することと
    を更に含む、請求項19に記載の方法。
JP2018178236A 2017-09-29 2018-09-25 畳み込みニューラルネットワーク計算スループットの加速化 Active JP7280026B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/719,829 2017-09-29
US15/719,829 US10482337B2 (en) 2017-09-29 2017-09-29 Accelerating convolutional neural network computation throughput

Publications (3)

Publication Number Publication Date
JP2019079505A true JP2019079505A (ja) 2019-05-23
JP2019079505A5 JP2019079505A5 (ja) 2021-11-04
JP7280026B2 JP7280026B2 (ja) 2023-05-23

Family

ID=65727803

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018178236A Active JP7280026B2 (ja) 2017-09-29 2018-09-25 畳み込みニューラルネットワーク計算スループットの加速化

Country Status (4)

Country Link
US (1) US10482337B2 (ja)
JP (1) JP7280026B2 (ja)
KR (1) KR20190038318A (ja)
DE (1) DE102018123143A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020201883A (ja) * 2019-06-13 2020-12-17 キヤノン株式会社 データ処理装置及びその制御方法
JP6854969B1 (ja) * 2019-12-04 2021-04-07 三菱電機株式会社 送信装置、送信方法および記憶媒体
JP2021114279A (ja) * 2020-01-20 2021-08-05 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド 画像の生成方法、生成装置、電子機器、コンピュータ可読媒体およびコンピュータプログラム
JP2021144265A (ja) * 2020-03-10 2021-09-24 株式会社東芝 プロセッサ性能測定装置
JP2022544739A (ja) * 2019-08-22 2022-10-21 グーグル エルエルシー 伝搬レイテンシの短縮
KR102670905B1 (ko) 2019-08-22 2024-05-31 구글 엘엘씨 전파 지연 감소

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366328B2 (en) * 2017-09-19 2019-07-30 Gyrfalcon Technology Inc. Approximating fully-connected layers with multiple arrays of 3x3 convolutional filter kernels in a CNN based integrated circuit
US10387740B2 (en) * 2016-10-10 2019-08-20 Gyrfalcon Technology Inc. Object detection and recognition apparatus based on CNN based integrated circuits
US10417527B2 (en) * 2017-09-06 2019-09-17 Irdeto B.V. Identifying an object within content
CN108062780B (zh) * 2017-12-29 2019-08-09 百度在线网络技术(北京)有限公司 图像压缩方法和装置
GB2574372B (en) * 2018-05-21 2021-08-11 Imagination Tech Ltd Implementing Traditional Computer Vision Algorithms As Neural Networks
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US10726516B2 (en) * 2018-10-11 2020-07-28 Futurewei Technologies, Inc. Arithmetic logic unit (ALU)-centric operations in graphics processing units (GPUs)
US11720997B2 (en) 2018-10-19 2023-08-08 Samsung Electronics Co.. Ltd. Artificial intelligence (AI) encoding device and operating method thereof and AI decoding device and operating method thereof
WO2020080827A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Ai encoding apparatus and operation method of the same, and ai decoding apparatus and operation method of the same
WO2020080665A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Methods and apparatuses for performing artificial intelligence encoding and artificial intelligence decoding on image
US11640522B2 (en) 2018-12-13 2023-05-02 Tybalt, Llc Computational efficiency improvements for artificial neural networks
US11144282B2 (en) * 2019-01-16 2021-10-12 Mediatek Inc. Mathematical accelerator for artificial intelligence applications
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US11113838B2 (en) * 2019-03-26 2021-09-07 Nec Corporation Deep learning based tattoo detection system with optimized data labeling for offline and real-time processing
CN110084363B (zh) * 2019-05-15 2023-04-25 电科瑞达(成都)科技有限公司 一种基于fpga平台的深度学习模型加速方法
US11586943B2 (en) * 2019-08-12 2023-02-21 Micron Technology, Inc. Storage and access of neural network inputs in automotive predictive maintenance
KR20210036715A (ko) 2019-09-26 2021-04-05 삼성전자주식회사 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법
KR20210039197A (ko) 2019-10-01 2021-04-09 삼성전자주식회사 데이터를 처리하는 방법 및 장치
EP4040342A4 (en) * 2019-10-02 2023-08-02 Electronics and Telecommunications Research Institute METHOD OF LEARNING AND SIMPLIFYING DEEP NEURONAL NETWORK STRUCTURE
KR20210056179A (ko) 2019-11-08 2021-05-18 삼성전자주식회사 Ai 부호화 장치 및 그 동작방법, 및 ai 복호화 장치 및 그 동작방법
CN111047035B (zh) * 2019-12-09 2024-04-19 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
CN111002980B (zh) * 2019-12-10 2021-04-30 苏州智加科技有限公司 基于深度学习的道路障碍物轨迹预测方法和系统
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
US20210216868A1 (en) * 2020-01-08 2021-07-15 Maxim Integrated Products, Inc. Systems and methods for reducing memory requirements in neural networks
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
CN111275784B (zh) * 2020-01-20 2023-06-13 北京百度网讯科技有限公司 生成图像的方法和装置
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US11507817B2 (en) 2020-04-17 2022-11-22 Samsung Electronics Co., Ltd. System and method for performing computations for deep neural networks
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
KR102243125B1 (ko) * 2020-07-31 2021-04-22 주식회사 웨이센 신경망 모델을 이용한 영상의 복합 특성 분류 방법 및 장치
CN112070210A (zh) * 2020-08-20 2020-12-11 成都恒创新星科技有限公司 一种基于fpga的多并行策略卷积网络加速器
CN112488126A (zh) * 2020-11-30 2021-03-12 北京百度网讯科技有限公司 特征图处理方法、装置、设备以及存储介质
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
KR102368075B1 (ko) * 2021-06-04 2022-02-25 오픈엣지테크놀로지 주식회사 고효율 풀링 방법 및 이를 위한 장치
KR102620823B1 (ko) * 2021-07-06 2024-01-04 한국과학기술원 인공지능 기반의 변형가능한 기준 마커 생성 및 인식 방법 및 그 시스템
CN114943635B (zh) * 2021-09-30 2023-08-22 太初(无锡)电子科技有限公司 一种基于异构协同计算核心的融合算子设计与实现方法
KR20230066697A (ko) * 2021-11-08 2023-05-16 한국전자기술연구원 딥러닝 가속기를 위한 풀링 장치
KR20230073757A (ko) * 2021-11-19 2023-05-26 서울과학기술대학교 산학협력단 심층신경망을 위한 희소성 학습 기반 필터 프루닝 기법
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015210709A (ja) * 2014-04-28 2015-11-24 株式会社デンソー 演算処理装置
US9373059B1 (en) * 2014-05-05 2016-06-21 Atomwise Inc. Systems and methods for applying a convolutional network to spatial data
US20170046616A1 (en) * 2015-08-15 2017-02-16 Salesforce.Com, Inc. Three-dimensional (3d) convolution with 3d batch normalization
US20170124711A1 (en) * 2015-11-04 2017-05-04 Nec Laboratories America, Inc. Universal correspondence network
JP2017138867A (ja) * 2016-02-05 2017-08-10 富士通株式会社 演算処理回路、および情報処理装置
US20170236053A1 (en) * 2015-12-29 2017-08-17 Synopsys, Inc. Configurable and Programmable Multi-Core Architecture with a Specialized Instruction Set for Embedded Application Based on Neural Networks

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US9514391B2 (en) * 2015-04-20 2016-12-06 Xerox Corporation Fisher vectors meet neural networks: a hybrid visual classification architecture
US9792531B2 (en) * 2015-09-16 2017-10-17 Siemens Healthcare Gmbh Intelligent multi-scale medical image landmark detection

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015210709A (ja) * 2014-04-28 2015-11-24 株式会社デンソー 演算処理装置
US9373059B1 (en) * 2014-05-05 2016-06-21 Atomwise Inc. Systems and methods for applying a convolutional network to spatial data
US20170046616A1 (en) * 2015-08-15 2017-02-16 Salesforce.Com, Inc. Three-dimensional (3d) convolution with 3d batch normalization
US20170124711A1 (en) * 2015-11-04 2017-05-04 Nec Laboratories America, Inc. Universal correspondence network
US20170236053A1 (en) * 2015-12-29 2017-08-17 Synopsys, Inc. Configurable and Programmable Multi-Core Architecture with a Specialized Instruction Set for Embedded Application Based on Neural Networks
JP2017138867A (ja) * 2016-02-05 2017-08-10 富士通株式会社 演算処理回路、および情報処理装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020201883A (ja) * 2019-06-13 2020-12-17 キヤノン株式会社 データ処理装置及びその制御方法
JP2022544739A (ja) * 2019-08-22 2022-10-21 グーグル エルエルシー 伝搬レイテンシの短縮
JP7326501B2 (ja) 2019-08-22 2023-08-15 グーグル エルエルシー 伝搬レイテンシの短縮
KR102670905B1 (ko) 2019-08-22 2024-05-31 구글 엘엘씨 전파 지연 감소
JP6854969B1 (ja) * 2019-12-04 2021-04-07 三菱電機株式会社 送信装置、送信方法および記憶媒体
JP2021114279A (ja) * 2020-01-20 2021-08-05 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド 画像の生成方法、生成装置、電子機器、コンピュータ可読媒体およびコンピュータプログラム
US11463631B2 (en) 2020-01-20 2022-10-04 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for generating face image
JP2021144265A (ja) * 2020-03-10 2021-09-24 株式会社東芝 プロセッサ性能測定装置
JP7404111B2 (ja) 2020-03-10 2023-12-25 株式会社東芝 プロセッサ性能測定装置

Also Published As

Publication number Publication date
KR20190038318A (ko) 2019-04-08
JP7280026B2 (ja) 2023-05-23
US20190102640A1 (en) 2019-04-04
DE102018123143A1 (de) 2019-04-04
US10482337B2 (en) 2019-11-19

Similar Documents

Publication Publication Date Title
JP7280026B2 (ja) 畳み込みニューラルネットワーク計算スループットの加速化
US11436014B2 (en) Deep vision processor
Hu et al. Randla-net: Efficient semantic segmentation of large-scale point clouds
CN109740534B (zh) 图像处理方法、装置及处理设备
CN111401516B (zh) 一种神经网络通道参数的搜索方法及相关设备
EP3256992A1 (en) Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks
CN110222718B (zh) 图像处理的方法及装置
Heinrich et al. BRIEFnet: Deep pancreas segmentation using binary sparse convolutions
US20230401838A1 (en) Image processing method and related apparatus
CN111950702A (zh) 一种神经网络结构确定方法及其装置
Fan et al. Improved SSD-based multi-scale pedestrian detection algorithm
CN114821096A (zh) 一种图像处理方法、神经网络的训练方法以及相关设备
Vaidya et al. Hardware efficient modified cnn architecture for traffic sign detection and recognition
US20220066776A1 (en) Accelerating processor based artificial neural network computation
Liu et al. Lightweight target detection algorithm based on YOLOv4
WO2022179599A1 (zh) 一种感知网络及数据处理方法
Agarwal et al. Real-time traffic light signal recognition system for a self-driving car
Zhai et al. Geometry understanding from autonomous driving scenarios based on feature refinement
Hashemifard et al. Weakly supervised human skin segmentation using guidance attention mechanisms
Li et al. Deep Visible and thermal image fusion with cross-modality feature selection for pedestrian detection
Pereira et al. MPF6D: masked pyramid fusion 6D pose estimation
Saidani et al. Embedded Plant Disease Recognition using Deep PlantNet on FPGA-SoC
Wang et al. MS-HRNet: multi-scale high-resolution network for human pose estimation
He et al. Improving small object detection via context-aware and feature-enhanced plug-and-play modules
Al Amin et al. FPGA-based Real-Time Object Detection and Classification System using YOLO for Edge Computing

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210924

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210924

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221220

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230511

R150 Certificate of patent or registration of utility model

Ref document number: 7280026

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150