JP7021904B2 - 畳み込み神経網処理方法及び装置 - Google Patents

畳み込み神経網処理方法及び装置 Download PDF

Info

Publication number
JP7021904B2
JP7021904B2 JP2017210622A JP2017210622A JP7021904B2 JP 7021904 B2 JP7021904 B2 JP 7021904B2 JP 2017210622 A JP2017210622 A JP 2017210622A JP 2017210622 A JP2017210622 A JP 2017210622A JP 7021904 B2 JP7021904 B2 JP 7021904B2
Authority
JP
Japan
Prior art keywords
kernel
input
neural network
loaded
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.)
Active
Application number
JP2017210622A
Other languages
English (en)
Other versions
JP2018077842A (ja
Inventor
辰 雨 孫
昌 用 孫
昌 圭 崔
在 濬 韓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2018077842A publication Critical patent/JP2018077842A/ja
Application granted granted Critical
Publication of JP7021904B2 publication Critical patent/JP7021904B2/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
    • 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/08Learning methods
    • 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

Landscapes

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

Description

以下の実施形態は、畳み込み神経網の処理技術に関する。
ニューラルネットワーク・ベースディープラーニング(deep learning)技術は、様々な分野で活用されている。例えば、顔、紅彩、音声などを認識するディープラーニング・ベースの生体認識/認証アプリケーションは埋込み端末(例えば、スマートフォン)に採用される。畳み込み神経網(Convolutional Neural Network;CNN)は、畳み込み演算を活用する多階層神経網として、ディープラーニング・ベースの映像及び音声認識分野に優れる性能を示す。
本発明の目的は、畳み込み神経網の処理技術を提供することにある。
実施形態に係る畳み込み神経網処理方法は、畳み込みレイヤのカーネルの特性及び前記畳み込みレイヤの入力の特性のうち少なくとも1つに基づいて、前記カーネルを再使用する第1演算モード及び前記入力を再使用する第2演算モードのいずれか1つの演算モードを選択するステップと、前記選択された演算モードに応じて畳み込み演算を行うステップとを含む。
一実施形態によると、畳み込み神経網は、前記畳み込みレイヤを含み、前記畳み込みレイヤのカーネルの特性及び前記畳み込みレイヤの入力の特性に基づいて、前記畳み込みレイヤごとに前記第1演算モード及び前記第2演算モードのいずれか1つを適応的に選択するステップをさらに含み得る。
一実施形態によると、前記カーネルの特性は、前記カーネルに含まれたカーネル要素のうち0が占めている比率及び前記カーネルの大きさのうち少なくとも1つを含み、前記入力の特性は、前記入力に含まれた入力要素のうち0が占めている比率及び前記入力の大きさのうち少なくとも1つを含み得る。
一実施形態によると、前記いずれか1つの演算モードを選択するステップは、
前記入力に含まれた入力要素のうち0が占めている比率を取得するステップと、前記取得された比率及び前記カーネルに含まれたカーネル要素のうち0が占めている比率のうち大きい値に対応する演算モードを選択するステップとを含み得る。
一実施形態によると、前記いずれか1つの演算モードを選択するステップは、前記入力の大きさ及び前記カーネルの大きさの比率に基づいて演算モードを選択するステップを含み得る。
一実施形態によると、前記カーネルの特性及び前記入力の特性は、畳み込み神経網内の前記畳み込みレイヤの深さに応じて決定され、前記いずれか1つの演算モードを選択するステップは、前記カーネルの特性及び前記入力の特性のうち少なくとも1つに基づいて、データロードの回数及び動作メモリの容量のうち少なくとも1つに関する制限条件を満足する演算モードを選択するステップを含み得る。
一実施形態によると、前記いずれか1つの演算モードを選択するステップは、前記第1演算モードの第1データロードの回数及び前記第2演算モードの第2データロードの回数のうち小さい値に対応する演算モードを選択するステップを含み得る。
一実施形態によると、前記演算モードを選択するステップは、前記第1データロードの回数を取得するステップを含み、前記第1データロードの回数は、前記カーネルの大きさから算出された前記カーネルのロードの回数と、前記カーネルに含まれたカーネル要素のうち0の個数と前記入力の大きさに基づいて算出された前記入力のロードの回数の合計によって算出され得る。
一実施形態によると、前記演算モードを選択するステップは、前記入力に含まれた入力要素のうち0の個数を取得するステップと、前記入力の大きさから算出された前記入力のロードの回数と、前記入力要素のうち0の個数と前記カーネルの大きさに基づいて算出された前記カーネルのロードの回数の合計により前記第2データロードの回数を算出するステップとを含み得る。
一実施形態によると、前記畳み込み演算を行うステップは、前記第1演算モードが選択される場合、前記入力に含まれた入力要素のうち、前記カーネルに含まれたカーネル要素に対応する入力要素を特定する第1情報、及び前記畳み込み演算の出力に含まれた出力要素のうち前記カーネル要素と前記特定された入力要素との間の演算結果がマッピングされる出力要素を特定する第2情報に基づいて畳み込み演算を行うステップを含み得る。
一実施形態によると、前記畳み込み演算を行うステップは、前記カーネル要素のいずれか1つのカーネル要素をロードするステップと、前記第1情報に基づいて、前記ロードされたカーネル要素に対応する入力要素をロードするステップと、前記第2情報に基づいて、前記ロードされたカーネル要素及び前記ロードされた入力要素の間の演算結果がマッピングされる出力要素を更新するステップとを含み得る。
一実施形態によると、前記第1情報は、前記カーネル要素の位置、前記カーネルの大きさ、及びストライド、前記入力の大きさ、及びパッドに基づいて決定され、前記第2情報は、前記カーネル要素の位置及び前記特定された入力要素の位置に基づいて決定され得る。
一実施形態によると、前記畳み込み演算を行うステップは、前記第1演算モードが選択される場合、前記カーネル要素のいずれか1つのカーネル要素をロードするステップと、前記ロードされたカーネル要素が0である場合、前記ロードされたカーネル要素に対応する入力要素のロード又は前記ロードされたカーネル要素に関する演算をスキップするステップとを含み得る。
一実施形態によると、前記畳み込み演算を行うステップは、前記第1演算モードが選択される場合、前記カーネルに含まれたカーネル要素に対応する臨時バッファを割り当てるステップと、前記カーネルに含まれたカーネル要素のいずれか1つのカーネル要素をロードするステップと、前記ロードされたカーネル要素及び前記ロードされたカーネル要素に対応する臨時バッファに基づいて畳み込み演算を行うステップとを含み得る。
一実施形態によると、前記畳み込み演算を行うステップは、前記カーネル要素のうち前記ロードされたカーネル要素と異なる他のカーネル要素をロードするステップと、前記他のカーネル要素が0と異なる場合、前記他のカーネル要素及び前記他のカーネル要素に対応する臨時バッファに格納された入力要素の間の演算結果に基づいて畳み込み演算を行うステップとをさらに含み得る。
一実施形態によると、前記畳み込み演算を行うステップは、前記第1演算モードが選択される場合、前記カーネルに含まれたカーネル要素のいずれか1つのカーネル要素をロードするステップと、前記ロードされたカーネル要素が0である場合、臨時バッファの割当をスキップするステップと、前記ロードされたカーネル要素が0と異なる場合、前記ロードされたカーネル要素の位置、前記カーネルの大きさ及びストライド、前記入力の大きさ及びパッドに基づいて臨時バッファを割り当てるステップと、前記ロードされたカーネル要素に対応する入力要素をロードし、前記割り当てられた臨時バッファに格納するステップと、前記ロードされたカーネル要素及び前記臨時バッファに格納された入力要素の間の演算結果に基づいて畳み込み演算を行うステップとを含み得る。
一実施形態によると、前記畳み込み演算を行うステップは、前記第2演算モードが選択される場合、前記カーネルに含まれたカーネル要素のうち、前記入力に含まれた入力要素に対応するカーネル要素を特定する第1情報、及び前記畳み込み演算の出力に含まれた出力要素のうち前記入力要素と前記特定されたカーネル要素との間の演算結果がマッピングされる出力要素を特定する第2情報に基づいて畳み込み演算を行うステップを含み得る。
一実施形態によると、前記畳み込み演算を行うステップは、前記入力要素のいずれか1つの入力要素をロードするステップと、前記第1情報に基づいて前記ロードされた入力要素に対応するカーネル要素をロードするステップと、前記第2情報に基づいて前記ロードされた入力要素及び前記ロードされたカーネル要素の間の演算結果がマッピングされる出力要素を更新するステップとを含み得る。
一実施形態によると、前記第1情報は、前記入力要素の位置、前記カーネルの大きさ、及びストライド、前記入力の大きさ、及びパッドに基づいて決定され、
前記第2情報は、前記入力要素の位置及び前記特定されたカーネル要素の位置に基づいて決定され得る。
一実施形態によると、前記畳み込み演算を行うステップは、前記第2演算モードが選択される場合、前記入力要素のいずれか1つの入力要素をロードするステップと、前記ロードされた入力要素が0である場合、前記ロードされた入力要素に対応するカーネル要素のロード又は前記ロードされた入力要素に関する演算をスキップするステップとを含み得る。
一実施形態に係る畳み込み神経網処理装置は、畳み込みレイヤのカーネルの特性及び前記畳み込みレイヤの入力の特性のうち少なくとも1つに基づいて、前記カーネルを再使用する第1演算モード及び前記入力を再使用する第2演算モードのいずれか1つの演算モードを選択し、前記選択された演算モードに応じて畳み込み演算を行うプロセッサを含む。
一実施形態に係る畳み込み神経網処理装置は、前記第1演算モードの第1データロードの回数を記録するメモリをさらに含み得る。
本発明によると、一実施形態に係るCNNを用いた認識技術は制限されたリソースの端末環境で駆動可能であり、様々な環境で強靭な性能を提供する。例えば、一実施形態に係るCNNの処理方式は、顔認識装置をスマートフォンのトラストゾーン(Trust-Zone)内で制限された時間内に反応するように実現される。CNNの処理方式は、シングル-コアで駆動されるなど、制限されたコンピューティングリソースのみを用いても実現できる。与えられたデータに行列積算演算を適用するCNNにおいて、一実施形態に係るCNNの処理方式は、データロードと演算回数を減らしてメモリ使用を節減し、CNNの高速処理を提供する。
一実施形態に係る畳み込み神経網処理方法を説明するためのフローチャートである。 一実施形態に係る畳み込み神経網の例示図である。
一実施形態に係る畳み込み演算を説明するための図である。 一実施形態に係る第1演算モードを説明するための図である。 一実施形態に係る第2演算モードを説明するための図である。 一実施形態に係る演算モード選択の動作を説明するための図である。 一実施形態に係る第1演算モードを説明するための図である。 一実施形態に係る第1演算モードを説明するための図である。 一実施形態に係る第1演算モードを説明するための図である。 一実施形態に係る第2演算モードを説明するための図である。 一実施形態に係る第2演算モードを説明するための図である。 一実施形態に係る畳み込み神経網処理装置の構成の例示図である。
実施形態に対する特定の構造的又は機能的説明は、単に例示のための目的として開示されたものであり、様々な形態に変更されて実施され得る。したがって、実施形態は、特定の開示形態で限定されることなく、本明細書の範囲は技術的な思想に含まれる変更、均等物、又は代替物を含む。
第1又は第2などの用語を複数の構成要素を説明するために用いることができるが、このような用語は1つの構成要素を他の構成要素から区別する目的としてのみ解釈されなければならない。例えば、第1構成要素は第2構成要素と命名することができ、同様に第2構成要素は第1構成要素にも命名することができる。
いずれかの構成要素が他の構成要素に「連結されて」いると言及された場合、その次の構成要素に直接的に連結されてもよく、又は中間に他の構成要素が存在することもあり得ると理解されなければならない。
単数の表現は、文脈上、明白に異なる意味をもたない限り複数の表現を含む。本明細書において、「含む」又は「有する」等の用語は明細書上に記載した特徴、数字、ステップ、動作、構成要素、部品又はこれらを組み合わせたものが存在することを示すものであって、1つ又はそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品、又はこれを組み合わせたものなどの存在又は付加の可能性を予め排除しないものとして理解しなければならない。
異なるように定義さがれない限り、技術的であるか又は科学的な用語を含むここで用いる全ての用語は、本実施形態が属する技術分野で通常の知識を有する者によって一般的に理解されるものと同じ意味を有する。一般的に用いられる予め定義された用語は、関連技術の文脈上で有する意味と一致する意味を有するものと解釈すべきであって、本明細書で明白に定義しない限り、理想的又は過度に形式的な意味として解釈されることはない。
以下、実施形態を添付する図面を参照しながら詳細に説明する。各図面に提示された同一の参照符号は同一の部材を示す。
図1は、一実施形態に係る畳み込み神経網処理方法を説明するためのフローチャートである。
図1を参照すると、畳み込み神経網処理装置は、畳み込みレイヤのカーネルの特性及び畳み込みレイヤの入力の特性のうち少なくとも1つに基づいて、カーネルを再使用する第1演算モード、及び入力を再使用する第2演算モードのいずれか1つの演算モードを選択する(S101)。機械学習(machine learning)において、神経網(Neural Network)の一種である畳み込み神経網(Convolutional Neural Network;CNN)は、畳み込み演算を行うように設計された畳み込みレイヤを含む。CNNを構成している畳み込みレイヤは、カーネルを用いて入力に関する畳み込み演算を行う。
畳み込み神経網処理装置は畳み込み神経網を処理する装置として、ソフトウェアモジュール、ハードウェアモジュール、又はその組合せで実現する。例えば、畳み込み神経網処理装置は、畳み込み神経網に関連する動作、演算、及び命令等を生成又は処理する。
畳み込み神経網処理装置は、畳み込みレイヤごとに第1演算モード及び第2演算モードのいずれか1つを適応的に選択できるが、ここで、第1演算モードは当該の畳み込みレイヤのカーネルを再使用する方式で演算を行うモードであり、第2演算モードは当該の畳み込みレイヤの入力を再使用する方式で演算を行うモードである。第1演算モードに関する実施形態については、図3、図4、図7A、図7B、及び図7Cを参照して説明し、第2演算モードに関する実施形態については、図3、図5、図8A及び図8Bを参照して詳細に説明する。
カーネル又は入力を再使用するとは、予めロードされたカーネル又は入力を繰り返し使用して畳み込みレイヤで畳み込み演算が実行されることを指す。畳み込み神経網処理装置は、予め構築されたデータベースからカーネル又は入力をロードし、データベースは、畳み込み神経網処理装置に含まれたメモリで具現するか、畳み込み神経網処理装置と有線、無線、又はネットワークなどに接続可能なサーバなどの外部装置に具現できる。
図2は、一実施形態に係る畳み込み神経網の例示図である。図2を参照すると、畳み込み神経網200は、複数の畳み込みレイヤ201、202及び203を含む。畳み込み神経網処理装置は、畳み込みレイヤのカーネルの特性及び入力の特性に基づいて、畳み込みレイヤごとに演算モードを選択できるため、各畳み込みレイヤに適用される演算モードは、当該の畳み込みレイヤの入力とカーネルによって変わり得る。
ここで、畳み込みレイヤの入力は、当該の畳み込みレイヤに入力として採用されるデータとして、最初入力データ又は以前のレイヤによって生成された出力である特徴マップ(feature map)を含む。例えば、図2に示された畳み込みレイヤ(1)201の入力はCNN200の最初入力204であり、畳み込みレイヤ(2)202の入力はサブ-サンプリングレイヤの出力206である。ここで、畳み込みレイヤ(2)202の入力206は、畳み込みレイヤ(1)201の出力205に基づいてサブ-サンプリングレイヤによって生成されたものである。畳み込みレイヤ203の入力は、W×H×Cの大きさである特徴マップ208である。畳み込み神経網処理装置は、畳み込みレイヤ203のカーネルを用いて特徴マップ208に畳み込み演算を行う。畳み込みレイヤ203の演算結果、W×H×Dの大きさである特徴マップ209が生成される。
畳み込みレイヤのカーネルは、当該の畳み込みレイヤで畳み込み演算を行うために採用されるカーネルとして、例えば、3次元の複数のフィルタに構成される。例えば、畳み込みレイヤ203は、W×H×Cの大きさである特徴マップ208に畳み込み演算を適用するためのカーネルであって、D個のフィルタを含むカーネルを採用する。
畳み込み神経網200は、複数の畳み込みレイヤ201、202及び203を含み、各畳み込みレイヤ201、202、及び203の入力204、206及び208の特性と、カーネルの特性(例えば、feature mapの大きさ及びフィルタの個数、大きさ)はそれぞれ異なってもよい。例えば、畳み込みレイヤ201、202、及び203のうち、畳み込みレイヤ201の深さが最も小さく、畳み込みレイヤ203の深さが最も大きい場合、畳み込みレイヤの入力の特性及びカーネルの特性は、畳み込み神経網200内の当該の畳み込みレイヤの深さに応じて決定され得る。
畳み込み神経網処理装置は、畳み込みレイヤ201、202、及び203のカーネル、及び入力204、206、及び208によって畳み込みレイヤ201、202、及び203ごとに演算モードを適応的に選択し、これにより畳み込み演算に必要なデータのロードの回数、演算(例えば、MAC(Multiply‐accumulate)operation)回数を減らしてメモリ使用を節減し、CNNの高速処理を提供することができる。
再び図1を参照すると、畳み込み神経網処理装置は、選択された演算モードに応じて畳み込み演算を行う(S102)。畳み込み神経網処理装置は、第1演算モード及び第2演算モードのうち選択された演算モードに応じて当該の畳み込みレイヤの畳み込み演算を行う。
以下、図2に示す畳み込みレイヤ203の入力208及び出力209を例示に挙げて、畳み込み演算が実行される実施形態について図3~図5を参照して説明する。
図3は、一実施形態に係る畳み込み演算を説明するための図である。
図3を参照すると、畳み込み神経網処理装置は、カーネル301の特性及び入力208の特性に基づいて、畳み込みレイヤ203に対応する演算モードを選択する。ここで、カーネル301は、畳み込みレイヤ203で畳み込み演算を行うために採用されるカーネルであり、D個のフィルタを含み、各フィルタの大きさはK×K×Cである。この場合、カーネル301の大きさは、K×K×C×Dである。
入力208の大きさはW×H×Cであるため、入力208は、それぞれの大きさがW×HであるデータをC個含んでもよい。ここで、入力208は、パッディング(padding)が適用された特徴マップであるが、パッディングとは、入力の一部領域(例えば、一般的に端を示すが設計意図に応じて変わる)を特定値に満たす方式を意味する。具体的に、パッドの大きさを1にし、入力にパッディングを適用することは、特徴マップの各フレームの端に特定値(例えば、0)を満たす動作を意味し、ゼロパッディング(zero padding)はその特定値を0に設定することを意味する。例えば、X×Y×Zの大きさである入力にパッドの大きさが1であるゼロパッディングが適用されれば、パッディングが適用された入力は端が0であり、大きさが(X+1)×(Y+1)×Zであるデータとなる。
演算モードが選択されれば、畳み込み神経網処理装置は、D個のフィルタを用いて入力208をフィルタリングして各フィルタに対応するフィルタリング結果から出力209を生成する。図3を参照すると、K×K×Cの大きさである各フィルタによって入力208がフィルタリングされるため、W×Hの大きさであるフィルタリング結果の個数はD個であり、D個のフィルタリング結果からW×H×Dの大きさである出力209が生成される。
ここで、出力209は、D個のチャネルによって生成されたD個のフィルタリング結果を含む。具体的に、K×K×C大きさのD番目のフィルタ302によってW×H×C大きさの入力208がフィルタリングされ、W×H大きさのフィルタリング結果303が生成される。より具体的に、D番目のフィルタ302はC個の加重値マップを含み、各加重値マップの大きさはK×Kである。畳み込み神経網処理装置は、入力208に含まれたW×Hの大きさである各フレーム上でK×Kの大きさである各加重値マップを特定ストライドでスライドし、D番目のフィルタ302及び入力208の間のフィルタリング結果303を生成する。ここで、ストライドとは、畳み込み演算時に加重値マップをスライドする間隔を意味する。
一般的に、K×K×C×Dの大きさであるカーネル301と、W×H×Dの大きさである入力208を用いてストライドが1である畳み込み演算を行う場合、カーネル301の各フィルタはW×H回だけスライドされるため、カーネル301はW×H回だけ重複してロードされる必要がある。したがって、カーネル301のデータは、合わせてK×K×C×D×W×H回ロードされる(K×K×C×Dの大きさであるカーネル301のデータがW×H回重複してロードされるためである)。また、入力208のデータは、加重値マップの大きさであるK×K回重複してロードされ、フィルタの個数(出力209のチャネルの数)のD回重複してロードされる必要がある。したがって、入力208のデータは、合わせてK×K×C×D×W×H回ロードされる(W×H×Cの大きさである入力208のデータがK×K×D回重複してロードされるためである)。ここで、畳み込み演算を行うためのデータロードの回数は、2×K×K×C×D×W×H(カーネル301のロードの回数と入力208のロードの回数の合計)となる。
一実施形態によれば、畳み込み神経網処理装置は、第1演算モードに応じて畳み込み演算時カーネル301を再使用してデータロードの回数と演算回数を減らすことができるが、第1演算モードに関する実施形態について図4を参照して説明する。他の実施形態によれば、畳み込み神経網処理装置は、第2演算モードに応じて畳み込み演算時に入力208を再使用してデータロードの回数と演算回数を減らし得るが、第2演算モードに関する実施形態について図5を参照して説明する。
図4は、一実施形態に係る第1演算モードを説明するための図である。第1演算モードはカーネル再使用モードであり得る。
一実施形態によれば、畳み込み神経網処理装置は、カーネル301に含まれたカーネル要素をロードし、ロードされたカーネル要素を再使用して畳み込み演算を行う。図4を参照すると、畳み込み神経網処理装置は、カーネル301に含まれたカーネル要素401をロードする。畳み込み神経網処理装置は、入力208に含まれた入力要素のうち、ロードされたカーネル要素401に対応する入力要素402を特定する第1情報に基づいて入力要素402をロードする。畳み込み神経網処理装置は、ロードされたカーネル要素401とロードされた入力要素402との間の演算を行う。
畳み込み神経網処理装置は、出力209に含まれた出力要素のうちロードされたカーネル要素401と入力要素402との間の演算結果がマッピングされる出力要素403を特定する第2情報に基づいて出力要素403を更新する。畳み込み神経網処理装置は、ロードされたカーネル要素401とロードされた入力要素402との間の演算結果を用いて出力要素403を更新できる。
一実施形態に係る第1演算モードにおいて、第1情報は、入力208に含まれた入力要素のうちカーネル301に含まれたカーネル要素に対応する入力要素を特定する。第1情報は、カーネル301に含まれたカーネル要素の位置、カーネル301の大きさ(K×K×C×D)、及びストライド、入力208の大きさ(W×H×C)及びパッドに基づいて決定される。例えば、パッディングが適用された入力208の大きさがW×H×Cであり、ストライドが1であると仮定しよう。この場合、第1情報は、カーネル要素401の位置に基づいて入力要素のうちカーネル要素401に対応する入力要素402を特定する。
一実施形態に係る第1演算モードにおいて、第2情報は、出力209に含まれた出力要素のうち、カーネル要素と特定された入力要素との間の演算結果がマッピングされる出力要素を特定する。第2情報は、カーネル301に含まれたカーネル要素の位置及び第1情報によって特定された入力要素の位置に基づいて決定される。例えば、第2情報は、カーネル要素401の位置と入力要素402との間の演算結果がマッピングされる出力要素403を特定する。カーネル要素401に関する演算結果によって更新された出力要素403は、カーネル要素401と他のカーネル要素によって更新され得るため、図4に示された出力要素403は最終出力ではないという旨として点線のように示した。
畳み込み神経網処理装置は、ロードされたカーネル要素401に関する演算を行ったため次のカーネル要素をロードする。畳み込み神経網処理装置は、第1情報に基づいてロードされた後、カーネル要素に対応する入力要素をロードする。畳み込み神経網処理装置は、第2情報に基づいてロードされた後カーネル要素とロードされた入力要素との間の演算結果がマッピングされる出力要素を更新する。第1演算モードによれば、畳み込み神経網処理装置は、カーネル301に含まれたカーネル要素をそれぞれ一回ずつロードする。畳み込み演算の実行時に、畳み込み神経網処理装置は、ロードされたカーネル要素に対応する入力要素の数だけロードされたカーネル要素を再使用する。例えば、第1演算モードで畳み込み神経網処理装置は、カーネル301のカーネル要素を1回ずつだけロードすればよいため、カーネル301のロードの回数はK×K×C×D(カーネル301の大きさ)となる。第1演算モードで畳み込み神経網処理装置は、入力208の入力要素をK×K×D回だけ重複してロードするため、ストライドが1である場合、入力208のロードの回数はK×K×C×D×W×Hとなる。この場合、第1演算モードのデータロードの回数(以下、第1データロードの回数とする)は、K×K×C×D(1+W×H)となるため、畳み込み神経網処理装置は、第1演算モードを用いてデータロードの回数を減らし得る。
一実施形態に係る第1演算モードで、畳み込み神経網処理装置は、ロードされたカーネル要素401が0であるか否かを判断する。畳み込み神経網処理装置は、ロードされたカーネル要素401が0である場合、カーネル要素401に対応する入力要素402のロード又はカーネル要素401に関する演算をスキップ(skip)する。ロードされたデータが0である場合、当該データに関する追加ロード又は演算をスキップする方式をゼロスキッピング(zero skipping)という。畳み込み神経網処理装置は、ゼロスキッピングを用いて第1演算モードのデータロードの回数を減らすことができる。例えば、カーネルに含まれたカーネル要素のうち、0であるカーネル要素の個数をZとすれば、畳み込み神経網処理装置は、0であるカーネル要素に対応する入力要素のロードをスキップすることができるため、ストライドが1である場合、入力208のロードの回数はW×H×(K×K×C×D-Z)である。この場合、第1データロードの回数は、K×K×C×D+W×H×(K×K×C×D-Z)になり、畳み込み神経網処理装置は、ゼロスキッピングを用いてZ個のカーネル要素に関する演算をスキップすることができる。
図5は、一実施形態に係る第2演算モードを説明するための図である。第2演算モードは入力再使用モードであり得る。
一実施形態によれば、畳み込み神経網処理装置は、入力208に含まれた入力要素をロードし、ロードされた入力要素を再使用して畳み込み演算を行う。図5を参照すると、畳み込み神経網処理装置は、入力208に含まれた入力要素501をロードする。畳み込み神経網処理装置は、カーネル301に含まれたカーネル要素のうち、ロードされた入力要素501に対応するカーネル要素502を特定する第1情報に基づいてカーネル要素502をロードする。畳み込み神経網処理装置は、ロードされた入力要素501とロードされたカーネル要素502との間の演算を行う。
畳み込み神経網処理装置は、出力503に含まれた出力要素のうち、ロードされた入力要素501とカーネル要素502との間の演算結果がマッピングされる出力要素503を特定する第2情報に基づいて出力要素503を更新する。畳み込み神経網処理装置は、ロードされた入力要素501とロードされたカーネル要素502との間の演算結果を用いて出力要素503を更新する。
一実施形態に係る第2演算モードにおいて、第1情報は、カーネル301に含まれたカーネル要素のうち、入力208に含まれた入力要素に対応するカーネル要素を特定する。第1情報は、入力208に含まれた入力要素の位置、カーネル301の大きさ(K×K×C×D)及びストライド、入力208の大きさ(W×H×C)及びパッドに基づいて決定される。例えば、パッディングが適用された入力208の大きさがW×H×Cであり、ストライドを1に仮定しよう。この場合、第1情報は、入力要素501の位置に基づいてカーネル要素のうち入力要素501に対応するカーネル要素502を特定する。
一実施形態に係る第2演算モードにおいて、第2情報は、出力209に含まれた出力要素のうち、入力要素と特定されたカーネル要素との間の演算結果がマッピングされる出力要素を特定する。第2情報は、入力208に含まれた入力要素の位置及び第1情報によって特定されたカーネル要素の位置に基づいて決定される。例えば、第2情報は、入力要素501の位置とカーネル要素502との間の演算結果がマッピングされる出力要素503を特定する。入力要素501に関する演算結果によって更新された出力要素503は、入力要素501と他の入力要素によって更新され得るため、図5に示された出力要素503は、最終出力ではないという旨として点線のように示した。
畳み込み神経網処理装置は、ロードされた入力要素501に関する演算を行ったため、次のような入力要素をロードする。畳み込み神経網処理装置は、第1情報に基づいてロードされた後、入力要素に対応するカーネル要素をロードする。畳み込み神経網処理装置は、第2情報に基づいてロードされた後、入力要素とロードされたカーネル要素との間の演算結果がマッピングされる出力要素を更新する。第2演算モードによれば、畳み込み神経網処理装置は、入力208に含まれた入力要素をそれぞれ一回ずつロードする。畳み込み演算の実行時に、畳み込み神経網処理装置は、ロードされた入力要素に対応するカーネル要素の数だけロードされた入力要素を再使用する。例えば、第2演算モードで畳み込み神経網処理装置は、入力208の入力要素を一回ずつだけロードされればよいため、入力208のロードの回数はW×H×C(入力208の大きさ)となる。第2演算モードで畳み込み神経網処理装置は、カーネル301のカーネル要素をW×H回だけ重複してロードするため、ストライドが1である場合、カーネル301のロードの回数はK×K×C×D×W×Hとなる。この場合、第2演算モードのデータロードの回数(以下、第2データロードの回数という)はW×H×C(1+K×K×D)がなるため、畳み込み神経網処理装置は、第2演算モードを用いてデータロードの回数を減らすことができる。
一実施形態に係る第2演算モードで畳み込み神経網処理装置は、ロードされた入力要素501が0であるか否かを判断する。畳み込み神経網処理装置は、ロードされた入力要素501が0である場合、入力要素501に対応するカーネル要素502のロード又は入力要素501に関する演算をスキップする。畳み込み神経網処理装置は、ゼロスキッピングを用いて第2演算モードのデータロードの回数を減らし得る。例えば、入力に含まれた入力要素のうち、0である入力要素の個数をZとすれば、畳み込み神経網処理装置は、0である入力要素に対応するカーネル要素のロードをスキップし得るため、ストライドが1である場合、カーネル301のロードの回数はK×K×D×(W×H×C-Z)であり得る。この場合、第2データロードの回数は、W×H×C+K×K×D×(W×H×C-Z)になり、畳み込み神経網処理装置は、ゼロスキッピングによってZ個のカーネル要素に関する演算をスキップすることができる。
一実施形態によれば、入力要素のうち0である入力要素は、畳み込み神経網の活性化関数として採用されたReLU(Rectified Linear Unit)関数によって生成され得る。畳み込み神経網の中間の畳み込みレイヤにReLUが採用されれば、その次の畳み込みレイヤの入力は、0である入力要素を含んでもよい。より具体的に、ReLU関数はF(x)=max(0、x)に表現される。xは畳み込みの結果であり、F(x)はReLU関数による出力値である。負数である畳み込み結果はReLU関数によって0として出力される。学習完了した畳み込みのカーネルは、正規分布にしたがって入力映像について畳み込み結果として、確率的に50%は負数、50%は正数である。
一実施形態によれば、入力要素のうち0である入力要素は、畳み込み神経網のプロセスのうち用いられるアップ-スケーリング(up-scaling)によって生成される。アップ-スケーリングは、入力の解像度を増加させる方式として、例えば、既存の入力に含まれた各ピクセル周辺に新しいピクセルを生成する方式として、アップ-スケーリングが実現される。この場合、新しく生成されたピクセルは0に設定されてもよい。一例として、イメージセグメンテーションで、プーリング(pooling)又はサンプリング(sampling)に解像度が減少されてから、アンプーリング(unpooling)又はアンサンプリング(unsampling)に本来の解像度が復元される。ここで、解像度の復元過程で、新しく生成されたピクセルは0に設定される。アンプーリング又はアンサンプリングの結果、75%以上のピクセル値が0であり得る。
図6は、一実施形態に係る演算モード選択の動作を説明するための図である。
図6を参照すると、畳み込み神経網処理装置は畳み込み演算モード選択モジュールを含み、畳み込み演算モード選択モジュールは、畳み込みレイヤごとに演算モードを選択するモジュールである。畳み込み神経網処理装置は、特定の畳み込みレイヤの演算モードを選択するために当該の畳み込みレイヤのカーネルの特性と入力の特性を考慮する。ここで、カーネルの特性は、カーネルに含まれたカーネル要素のうち0が占めている比率及びカーネルの大きさのうち少なくとも1つを含み、入力の特性は、入力に含まれた入力要素のうち0が占めている比率及び入力の大きさのうち少なくとも1つを含んでもよい。畳み込み神経網処理装置は、カーネルの特性及び入力の特性のうち少なくとも1つに基づいて、データロードの回数及び動作メモリの容量のうち少なくとも1つに関する制限条件を満足する演算モードを選択する。
一実施形態によれば、畳み込み神経網処理装置は、畳み込みレイヤの入力から入力に含まれた入力要素のうち、0が占めている比率Iを取得する。畳み込み神経網処理装置は、畳み込みレイヤのカーネルに含まれたカーネル要素のうち、0が占めている比率Kを取得する。例えば、Iは、当該の畳み込みレイヤの入力により変わるため、畳み込み神経網処理装置は、入力からIを動的に抽出し、Kは予め設計された畳み込み神経網によって決定された値であるため、データベースから取得し得る。畳み込み神経網処理装置は、取得されたI及びKのうち大きい値に対応する演算モードを選択する。畳み込み神経網処理装置は、I及びKの大小関係により、図6に示すように、畳み込みレイヤの演算モードを選択することができる。
一実施形態によれば、畳み込み神経網処理装置は、入力の大きさ及びカーネルの大きさの比率に基づいて演算モードを選択する。例えば、畳み込み神経網処理装置は、入力に含まれたフレームの大きさとカーネルに含まれた加重値マップの大きさの比率を取得し、取得された比率と予め定義された比率とを比較して演算モードを選択する。フレームの大きさと加重値マップの大きさは、畳み込み神経網が設計されることにより決定され得るため、畳み込み神経網処理装置は、データベースから当該の比率、当該の比率と予め定義された比率の比較結果、及び選択された演算モードのうち少なくとも1つを取得する。
一実施形態によれば、畳み込み神経網処理装置は、第1データロードの回数及び第2データロードの回数のうち小さい値に対応する演算モードを選択する。データロードの回数が相対的に小さい演算モードを採用するためである。例えば、第1データロードの回数は、カーネルの大きさから算出されたカーネルのロードの回数とカーネル要素のうち、0の個数と入力の大きさに基づいて算出された入力のロードの回数の合計によって算出される。ここで、第1データロードの回数は、入力要素のうち0の個数を考慮することなく算出された値であるため、畳み込み神経網が設計されることにより決定され、畳み込み神経網処理装置は、データベースから第1データロードの回数を取得し得る。畳み込み神経網処理装置は、入力から入力に含まれた入力要素のうち0の個数を動的に取得する。畳み込み神経網処理装置は、入力の大きさから算出された入力のロードの回数及び入力要素のうち0の個数とカーネルの大きさに基づいて算出されたカーネルのロードの回数の合計により第2データロードの回数を算出する。入力の0の個数は、予め格納された値ではないため、畳み込み神経網処理装置は、畳み込みレイヤごとに第2データロードの回数を算出し得る。畳み込み神経網処理装置は、データベースから取得された第1データロードの回数と動的に算出された第2データロードの回数とを比較し、当該の畳み込みレイヤに適切な演算モードを選択することができる。
図7A~図7Cは、一実施形態に係る第1演算モードを説明するための図である。
一実施形態によれば、畳み込み神経網処理装置は、第1演算モードによる畳み込み演算を行うために臨時バッファを割り当て、割り当てられた臨時バッファに入力要素を格納する。畳み込み神経網処理装置は、臨時バッファに格納された入力要素を用いてカーネル要素別に畳み込み演算を行うが、図7A~図7Cに示された例示を参照して臨時バッファ割当に基づいた第1演算モードの実施形態を説明する。
図7Aを参照すると、第1演算モードによる畳み込み神経網処理装置は、2×2×Cの大きさであるフィルタ701と、3×3×Cの大きさである入力702との間の畳み込み演算を行う。フィルタ701は2×2の大きさである加重値マップを含み、加重値マップの個数はCである。入力702は3×3の大きさであるフレームを含み、フレームの個数はCである。パッド入力703は、入力702にパッドが1であるパッディングが適用された入力として、その大きさは5×5×Cである。フィルタ701のストライドは、1である場合を仮定して実施形態を説明する。
畳み込み神経網処理装置は、フィルタ701に含まれたカーネル要素に対応する臨時バッファ704を割り当てる。フィルタ701の加重値マップの大きさは2×2であり、ストライドが1であるため、パッド入力703のうちフィルタ701の各カーネル要素(例えば、加重値)に対応する入力要素は4×4の大きさに限定される。畳み込み神経網処理装置は、フィルタ701の各カーネル要素に対応する入力要素を格納するための臨時バッファ704を割り当てる。例えば、畳み込み神経網処理装置は、カーネル要素w11に対応する入力要素705のための臨時バッファTの一部(最も前方に示された領域)を割り当て、カーネル要素w2cに対応する入力要素706のための臨時バッファTの一部(最も後方に示された領域)を割り当て、入力要素705及び706をロードし、割り当てられた臨時バッファに格納する。フィルタ701の加重値マップの大きさが2×2であるため、畳み込み神経網処理装置は臨時バッファTないしTを割り当てる。ここで、臨時バッファTはカーネル要素w11、w12、...、w1cに対応し、臨時バッファTはカーネル要素w21、w22、...、w2cに対応し、臨時バッファTはカーネル要素w31、w32、...、w3cに対応し、臨時バッファTはカーネル要素w41、w42、...、w4cに対応する。
加重値マップの大きさが2×2であり、パッド入力703の各フレームの大きさが5×5であり、ストライドが1であるため、畳み込み神経網処理装置は、各カーネル要素と演算が発生する入力要素の大きさを4×4として決定し、4×4×Cの大きさである臨時バッファTないしTを割り当てる。その結果、畳み込み神経網処理装置は、4×4×C×4の大きさである臨時バッファ704を割り当てることができる。
図7Bを参照すると、畳み込み神経網処理装置はカーネル要素をロードし、ロードされたカーネル要素と臨時バッファに基づいて畳み込み演算を行う。畳み込み神経網処理装置は、ロードされたカーネル要素と臨時バッファに格納された入力要素との間の演算結果に基づいて出力を生成する。畳み込み神経網処理装置は、カーネル要素w11、w12、...、w1cと臨時バッファTに格納された入力要素との間の2Dマトリックススカラーの積
Figure 0007021904000001
(2Dmatrix scalar multiplication)、カーネル要素w21、w22、...、w2cと臨時バッファTに格納された入力要素の間の2Dマトリックススカラーの積
Figure 0007021904000002
、カーネル要素w31、w32、...、w3cと臨時バッファTに格納された入力要素の間の2Dマトリックススカラーの積
Figure 0007021904000003
、カーネル要素w41、w42、...、w4cと臨時バッファTに格納された入力要素の間の2Dマトリックススカラーの積
Figure 0007021904000004
の演算を行い、演算結果の間の2Dマトリックスワイズの和
Figure 0007021904000005
(2Dmatrix wise addition)の演算により出力を生成する。例えば、畳み込み神経網処理装置は、フィルタ701に含まれたカーネル要素のうちカーネル要素w11をロードし、カーネル要素w11に対応する入力要素712をロードして臨時バッファTに格納し、臨時バッファTに格納された入力要素713とカーネル要素w11の間の演算を行う。この場合、畳み込み神経網処理装置は、カーネル要素を一回ずつだけロードし、臨時バッファはTないしTに分類されるため入力要素を4回重複してロードする。
図7Cを参照すると、畳み込み神経網処理装置は、大きさがW×H×Cである入力722にパッディングを適用したパッド入力723とK×K×C×Dの大きさであるカーネル721に基づいて臨時バッファ724を割り当てる。畳み込み神経網処理装置は、パッド入力723と臨時バッファ724に基づいて出力725を生成できるが、D個のフィルタごとに図7Bを参照して説明した演算が適用され得る。
ロードされたカーネル要素との演算が終了すれば、畳み込み神経網処理装置は、他のカーネル要素をロードする。他のカーネル要素が0と異なる場合、畳み込み神経網処理装置は畳み込み演算を行う。ここで、以前のカーネル要素に対応する入力要素と異なるカーネル要素に対応する入力要素とが互いに同一である場合、畳み込み神経網処理装置は、臨時バッファにすでに格納されている入力要素を用いて畳み込み演算を行う。
一実施形態によれば、畳み込み神経網処理装置は、ロードされたカーネル要素が0であるか否かを判断し、ロードされたカーネル要素が0である場合、0であるカーネル要素に関する臨時バッファの割当をスキップしたり、当該カーネル要素に関する演算をスキップする。ロードされたカーネル要素が0と異なる場合、畳み込み神経網処理装置は、上述した実施形態により臨時バッファを割り当てる。臨時バッファの割当と関連して第1演算モードの動作を説明したが、上述した実施形態は第2演算モードにも適用され得る。第2演算モードで臨時バッファが割り当てられた場合、畳み込み神経網処理装置は、割り当てられた臨時バッファにカーネル要素を格納する。また、第1演算モード及び第2演算モードは別途の臨時バッファの割当てなしに実行され得る。
図8A~図8Bは、一実施形態に係る第2演算モードを説明するための図である。
図8Aを参照すると、カーネル801の大きさが3×3であり、ストライドが1であり、入力802のパッドが1である場合、第1情報803はカーネル801に含まれたカーネル要素w、...、wのうち入力要素に対応するカーネル要素を特定する。例えば、第1情報803は、Left Topに位置する入力要素に対応するカーネル要素w、w、w、wを特定し、図8Aに示すように第1情報803は各入力要素別ごとに対応カーネル要素を特定する。第1情報803は、カーネルの大きさ3×3及びストライド1、入力802の大きさ及びパッド1に基づいて入力要素の位置Left Top、First Row、...、Right Bottomに対応するカーネル要素を特定する。畳み込み神経網処理装置は、入力802に含まれたいずれか1つの入力要素をロードし、第1情報に基づいてロードされた入力要素に対応するカーネル要素をロードする。
図8Bを参照すると、第2情報804は、出力805に含まれた出力要素のうち、ロードされた入力要素とカーネル要素との間の演算結果がマッピングされる出力要素を特定する。入力802の大きさがW×Hであり、1であるパッドでパッディングが適用されたパッド入力812上でカーネル801がスライド(ストライド=1)する場合、畳み込み神経網処理装置は、入力要素A806をロードし、第1情報803に基づいてカーネル要素807をロードする。畳み込み神経網処理装置は、ロードされた入力要素A806とロードされたカーネル要素807との間の演算結果がマッピングされる出力要素(H、W)、(H、W+1)、(H+1、W)及び(H+1、W+1)を特定する情報808に基づいて出力要素を更新する。図8Bに示す出力要素のインデックスでH及びWはそれぞれ入力要素A806の行と列を示すインデックスである。同じ方式で、畳み込み神経網処理装置は、入力要素B809とカーネル要素810をロードし、ロードされた入力要素B809とロードされたカーネル要素810との間の演算結果がマッピングされる出力要素を特定する情報811に基づいて出力要素を更新する。第2演算モードによる畳み込み神経網処理装置は、入力要素をロードと再使用する方式に基づいてデータロードの回数及び演算回数を減らすことができ、例えば、ロードされた入力要素が0である場合、第1情報によるデータロードと第2情報による演算をスキップする。第1情報及び第2情報に基づいた第2演算モードの実施形態は、第1演算モードにも適用され得る。
図9は、一実施形態に係る畳み込み神経網処理装置の構成の例示図である。
図9を参照すると、畳み込み神経網処理装置901は、プロセッサ902及びメモリ903を含む。プロセッサ902は、図1ないし図8Bを参照して前述した少なくとも1つの装置を含んだり、図1ないし図8Bを参照して前述した少なくとも1つの方法を行う。メモリ903は、畳み込みレイヤの入力の特性、カーネルの特性、データロードの回数のうち少なくとも1つを格納したり、畳み込み神経網処理方法が具現されたプログラムを格納する。メモリ903は、揮発性メモリ又は不揮発性メモリであり得る。
プロセッサ902はプログラムを実行し、畳み込み神経網処理装置901を制御する。プロセッサ902によって実行されるプログラムのコードはメモリ903に格納される。畳み込み神経網処理装置901は、入出力装置(図示せず)を用いて外部装置(例えば、パーソナルコンピュータ又はネットワーク)に接続され、データを交換する。
一実施形態によれば、畳み込み神経網処理装置901は、CNNに関する演算を高速で処理するCNN加速器、NPU(Neural Processing Unit)又はVPU(Vision Processing Unit)に採用されて当該の専用プロセッサを制御する。畳み込み神経網処理装置901は、設計意図によって様々なハードウェアを採用したり、様々なハードウェアに採用され、示された構成要素の実施形態に限定されることはない。畳み込み神経網処理時に上述した実施形態を適用する場合、畳み込み神経網の処理で求められるデータロードの回数、演算回数(例えば、MACの演算回数)を減らしてメモリを節減して処理速度を高めることができるため、上述した実施形態は制限されたリソースを使用する環境又は埋込み端末に適する。
以上述した実施形態は、ハードウェア構成要素、ソフトウェア構成要素、又はハードウェア構成要素及びソフトウェア構成要素の組合せで具現される。例えば、実施形態で説明した装置及び構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPA(field programmable array)、PLU(programmable logic unit)、マイクロプロセッサー、又は命令(instruction)を実行して応答する異なる装置のように、1つ以上の汎用コンピュータ又は特殊目的コンピュータを用いて具現される。処理装置は、オペレーティングシステム(OS)及びオペレーティングシステム上で実行される1つ以上のソフトウェアアプリケーションを実行する。また、処理装置は、ソフトウェアの実行に応答してデータをアクセス、格納、操作、処理、及び生成する。理解の便宜のために、処理装置は1つが使用されるものとして説明する場合もあるが、当該技術分野で通常の知識を有する者は、処理装置が複数の処理要素(processing element)及び/又は複数類型の処理要素を含むことが分かる。例えば、処理装置は、複数のプロセッサ又は1つのプロセッサ及び1つのコントローラを含む。また、並列プロセッサ(parallel processor)のような、他の処理構成も可能である。
ソフトウェアは、コンピュータプログラム、コード、命令、又はこれらのうちの1つ以上の組合せを含み、希望通りに動作するように処理装置を構成し、独立的又は結合的に処理装置に命令する。ソフトウェア及び/又はデータは、処理装置によって解釈され、処理装置に命令又はデータを提供するためのあらゆる類型の機械、構成要素、物理的装置、仮想装置、コンピュータ格納媒体又は装置、或いは送信される信号波を介して永久的又は一時的に具現化される。ソフトウェアは、ネットワークに接続されたコンピュータシステム上に分散され、分散された方法で格納されるか又は実行される。ソフトウェア及びデータは1つ以上のコンピュータ読み取り可能な記録媒体に格納される。
本実施形態による方法は、多様なコンピュータ手段を介して実施されるプログラム命令の形態で具現され、コンピュータ読み取り可能な記録媒体に記録される。記録媒体は、プログラム命令、データファイル、データ構造などを単独又は組合せて含む。記録媒体及びプログラム命令は、本発明の目的のために特別に設計して構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり、使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD-ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気-光媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置を含む。プログラム命令の例としては、コンパイラによって生成されるような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。ハードウェア装置は、本発明の動作を実行するために1つ以上のソフトウェアモジュールとして作動するように構成してもよく、その逆も同様である。
上述したように実施形態をたとえ限定された図面によって説明したが、当該技術分野で通常の知識を有する者であれば、前記に基づいて様々な技術的な修正及び変形を適用することができる。例えば、説明された技術が説明された方法と異なる順序で実行されたり、及び/又は説明されたシステム、構造、装置、回路などの構成要素が説明された方法と異なる形態で結合又は組合わせられたり、他の構成要素又は均等物によって置き換えたり置換されても適切な結果を達成することができる。
したがって、他の具現、他の実施形態、及び請求範囲と均等なものも後述する請求範囲の範囲に属する。

Claims (29)

  1. 畳み込みレイヤのカーネルの特性及び前記畳み込みレイヤの入力の特性のうち少なくとも1つに基づいて、前記カーネルを再使用する第1演算モード及び前記入力を再使用する第2演算モードのいずれか1つの演算モードを選択するステップと、
    前記選択された演算モードに応じて畳み込み演算を行うステップと、
    を含む畳み込み神経網処理方法。
  2. 畳み込み神経網は、前記畳み込みレイヤを含み、
    前記畳み込みレイヤのカーネルの特性及び前記畳み込みレイヤの入力の特性に基づいて、前記畳み込みレイヤごとに前記第1演算モード及び前記第2演算モードのいずれか1つを適応的に選択するステップをさらに含む、請求項1に記載の畳み込み神経網処理方法。
  3. 前記カーネルの特性は、前記カーネルに含まれたカーネル要素のうち0が占めている比率及び前記カーネルの大きさのうち少なくとも1つを含み、
    前記入力の特性は、前記入力に含まれた入力要素のうち0が占めている比率及び前記入力の大きさのうち少なくとも1つを含む、請求項1又は2に記載の畳み込み神経網処理方法。
  4. 前記いずれか1つの演算モードを選択するステップは、
    前記入力に含まれた入力要素のうち0が占めている比率を取得するステップと、
    前記取得された比率及び前記カーネルに含まれたカーネル要素のうち0が占めている比率のうち大きい値に対応する演算モードを選択するステップと、
    を含む、請求項1又は2に記載の畳み込み神経網処理方法。
  5. 前記いずれか1つの演算モードを選択するステップは、前記入力の大きさ及び前記カーネルの大きさの比率に基づいて演算モードを選択するステップを含む、請求項1又は2に記載の畳み込み神経網処理方法。
  6. 前記カーネルの特性及び前記入力の特性は畳み込み神経網内の前記畳み込みレイヤの深さに応じて決定され、
    前記いずれか1つの演算モードを選択するステップは、前記カーネルの特性及び前記入力の特性のうち少なくとも1つに基づいて、データロードの回数及び動作メモリの容量のうち少なくとも1つに関する制限条件を満足する演算モードを選択するステップを含む、請求項1又は2に記載の畳み込み神経網処理方法。
  7. 前記いずれか1つの演算モードを選択するステップは、前記第1演算モードの第1データロードの回数及び前記第2演算モードの第2データロードの回数のうち小さい値に対応する演算モードを選択するステップを含む、請求項1又は2に記載の畳み込み神経網処理方法。
  8. 前記演算モードを選択するステップは、前記第1データロードの回数を取得するステップを含み、
    前記第1データロードの回数は、前記カーネルの大きさから算出された前記カーネルのロードの回数と、前記カーネルに含まれたカーネル要素のうち0の個数と前記入力の大きさに基づいて算出された前記入力のロードの回数の合計によって算出される、請求項7に記載の畳み込み神経網処理方法。
  9. 前記演算モードを選択するステップは、
    前記入力に含まれた入力要素のうち0の個数を取得するステップと、
    前記入力の大きさから算出された前記入力のロードの回数と、前記入力要素のうち0の個数と前記カーネルの大きさに基づいて算出された前記カーネルのロードの回数の合計により前記第2データロードの回数を算出するステップと、
    を含む、請求項7に記載の畳み込み神経網処理方法。
  10. 前記畳み込み演算を行うステップは、前記第1演算モードが選択される場合、前記入力に含まれた入力要素のうち、前記カーネルに含まれたカーネル要素に対応する入力要素を特定する第1情報、及び前記畳み込み演算の出力に含まれた出力要素のうち前記カーネル要素と前記特定された入力要素との間の演算結果がマッピングされる出力要素を特定する第2情報に基づいて畳み込み演算を行うステップを含む、請求項1又は2に記載の畳み込み神経網処理方法。
  11. 前記畳み込み演算を行うステップは、
    前記カーネル要素のいずれか1つのカーネル要素をロードするステップと、
    前記第1情報に基づいて、前記ロードされたカーネル要素に対応する入力要素をロードするステップと、
    前記第2情報に基づいて、前記ロードされたカーネル要素及び前記ロードされた入力要素の間の演算結果がマッピングされる出力要素を更新するステップと、
    を含む、請求項10に記載の畳み込み神経網処理方法。
  12. 前記第1情報は、前記カーネル要素の位置、前記カーネルの大きさ、及びストライド、前記入力の大きさ、及びパッドに基づいて決定され、
    前記第2情報は、前記カーネル要素の位置及び前記特定された入力要素の位置に基づいて決定される、請求項10に記載の畳み込み神経網処理方法。
  13. 前記畳み込み演算を行うステップは、前記第1演算モードが選択される場合、前記カーネルに含まれたカーネル要素のいずれか1つのカーネル要素をロードするステップと、
    前記ロードされたカーネル要素が0である場合、前記ロードされたカーネル要素に対応する入力要素のロード又は前記ロードされたカーネル要素に関する演算をスキップするステップと、
    を含む、請求項1又は2に記載の畳み込み神経網処理方法。
  14. 前記畳み込み演算を行うステップは、前記第1演算モードが選択される場合、前記カーネルに含まれたカーネル要素に対応する臨時バッファを割り当てるステップと、
    前記カーネルに含まれたカーネル要素のいずれか1つのカーネル要素をロードするステップと、
    前記ロードされたカーネル要素及び前記ロードされたカーネル要素に対応する臨時バッファに基づいて畳み込み演算を行うステップと、
    を含む、請求項1又は2に記載の畳み込み神経網処理方法。
  15. 前記畳み込み演算を行うステップは、
    前記カーネル要素のうち前記ロードされたカーネル要素と異なる他のカーネル要素をロードするステップと、
    前記他のカーネル要素が0と異なる場合、前記他のカーネル要素及び前記他のカーネル要素に対応する臨時バッファに格納された入力要素の間の演算結果に基づいて畳み込み演算を行うステップと、
    をさらに含む、請求項14に記載の畳み込み神経網処理方法。
  16. 前記畳み込み演算を行うステップは、前記第1演算モードが選択される場合、前記カーネルに含まれたカーネル要素のいずれか1つのカーネル要素をロードするステップと、
    前記ロードされたカーネル要素が0である場合、臨時バッファの割当をスキップするステップと、
    前記ロードされたカーネル要素が0と異なる場合、前記ロードされたカーネル要素の位置、前記カーネルの大きさ及びストライド、前記入力の大きさ及びパッドに基づいて臨時バッファを割り当てるステップと、
    前記ロードされたカーネル要素に対応する入力要素をロードし、前記割り当てられた臨時バッファに格納するステップと、
    前記ロードされたカーネル要素及び前記臨時バッファに格納された入力要素の間の演算結果に基づいて畳み込み演算を行うステップと、
    を含む、請求項1又は2に記載の畳み込み神経網処理方法。
  17. 前記畳み込み演算を行うステップは、前記第2演算モードが選択される場合、前記カーネルに含まれたカーネル要素のうち、前記入力に含まれた入力要素に対応するカーネル要素を特定する第1情報、及び前記畳み込み演算の出力に含まれた出力要素のうち前記入力要素と前記特定されたカーネル要素との間の演算結果がマッピングされる出力要素を特定する第2情報に基づいて畳み込み演算を行うステップを含む、請求項1又は2に記載の畳み込み神経網処理方法。
  18. 前記畳み込み演算を行うステップは、
    前記入力要素のいずれか1つの入力要素をロードするステップと、
    前記第1情報に基づいて前記ロードされた入力要素に対応するカーネル要素をロードするステップと、
    前記第2情報に基づいて前記ロードされた入力要素及び前記ロードされたカーネル要素の間の演算結果がマッピングされる出力要素を更新するステップと、
    を含む、請求項17に記載の畳み込み神経網処理方法。
  19. 前記第1情報は、前記入力要素の位置、前記カーネルの大きさ、及びストライド、前記入力の大きさ、及びパッドに基づいて決定され、
    前記第2情報は、前記入力要素の位置及び前記特定されたカーネル要素の位置に基づいて決定される、請求項17に記載の畳み込み神経網処理方法。
  20. 前記畳み込み演算を行うステップは、前記第2演算モードが選択される場合、前記入力に含まれた入力要素のいずれか1つの入力要素をロードするステップと、
    前記ロードされた入力要素が0である場合、前記ロードされた入力要素に対応するカーネル要素のロード又は前記ロードされた入力要素に関する演算をスキップするステップと、
    を含む、請求項1又は2に記載の畳み込み神経網処理方法。
  21. 請求項1~請求項20のいずれか一項に記載の神経網処理方法を神経網処理装置のコンピュータに実行させるコンピュータプログラム。
  22. 畳み込みレイヤのカーネルの特性及び前記畳み込みレイヤの入力の特性のうち少なくとも1つに基づいて、前記カーネルを再使用する第1演算モード及び前記入力を再使用する第2演算モードのいずれか1つの演算モードを選択し、
    前記選択された演算モードに応じて畳み込み演算を行うプロセッサを含む、畳み込み神経網処理装置。
  23. 畳み込み神経網は、前記畳み込みレイヤを含み、
    前記プロセッサは、前記畳み込みレイヤのカーネルの特性及び前記畳み込みレイヤの入力の特性に基づいて、前記畳み込みレイヤごとに前記第1演算モード及び前記第2演算モードのいずれか1つを適応的に選択する、請求項22に記載の畳み込み神経網処理装置。
  24. 前記カーネルの特性は、前記カーネルに含まれたカーネル要素のうち0が占めている比率及び前記カーネルの大きさのうち少なくとも1つを含み、
    前記入力の特性は、前記入力に含まれた入力要素のうち0が占めている比率及び前記入力の大きさのうち少なくとも1つを含み、
    前記カーネルの特性及び前記入力の特性は、畳み込み神経網内の前記畳み込みレイヤの深さに応じて決定され、
    前記プロセッサは、前記カーネルの特性及び前記入力の特性のうち少なくとも1つに基づいて、データロードの回数及び動作メモリの容量のうち少なくとも1つに関する制限条件を満足する演算モードを選択する、請求項22又は23に記載の畳み込み神経網処理装置。
  25. 前記第1演算モードの第1データロードの回数を記録するメモリをさらに含み、
    前記第1データロードの回数は、前記カーネルの大きさから算出された前記カーネルのロードの回数と、前記カーネルに含まれたカーネル要素のうち0の個数と前記入力の大きさに基づいて算出された前記入力のロードの回数の合計によって算出され、
    前記プロセッサは、
    前記第1データロードの回数を取得し、
    前記入力に含まれた入力要素のうち0の個数を取得し、
    前記入力の大きさから算出された前記入力のロードの回数と、前記入力要素のうち0の個数と前記カーネルの大きさに基づいて算出された前記カーネルのロードの回数の合計により前記第2演算モードの第2データロードの回数を算出し、
    前記第1演算モードの第1データロードの回数及び前記第2データロードの回数のうち小さい値に対応する演算モードを選択する、請求項24に記載の畳み込み神経網処理装置。
  26. 前記プロセッサは、前記第1演算モードが選択される場合、前記入力に含まれた入力要素のうち、前記カーネルに含まれたカーネル要素に対応する入力要素を特定する第1情報及び前記畳み込み演算の出力に含まれた出力要素のうち、前記カーネル要素と前記特定された入力要素との間の演算結果がマッピングされる出力要素を特定する第2情報に基づいて畳み込み演算を行う、請求項22又は23に記載の畳み込み神経網処理装置。
  27. 前記プロセッサは、前記第1演算モードが選択される場合、前記カーネルに含まれたカーネル要素のいずれか1つのカーネル要素をロードし、
    前記ロードされたカーネル要素が0である場合、前記ロードされたカーネル要素に対応する入力要素のロード又は前記ロードされたカーネル要素に関する演算をスキップする、請求項22又は23に記載の畳み込み神経網処理装置。
  28. 前記プロセッサは、前記第2演算モードが選択される場合、前記カーネルに含まれたカーネル要素のうち、前記入力に含まれた入力要素に対応するカーネル要素を特定する第1情報及び前記畳み込み演算の出力に含まれた出力要素のうち、前記入力要素と前記特定されたカーネル要素との間の演算結果がマッピングされる出力要素を特定する第2情報に基づいて畳み込み演算を行う、請求項22又は23に記載の畳み込み神経網処理装置。
  29. 前記プロセッサは、前記第2演算モードが選択される場合、前記入力に含まれた入力要素のいずれか1つの入力要素をロードし、前記ロードされた入力要素が0である場合、前記ロードされた入力要素に対応するカーネル要素のロード又は前記ロードされた入力要素に関する演算をスキップする、請求項22又は23に記載の畳み込み神経網処理装置。
JP2017210622A 2016-11-07 2017-10-31 畳み込み神経網処理方法及び装置 Active JP7021904B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160147562A KR102631381B1 (ko) 2016-11-07 2016-11-07 컨볼루션 신경망 처리 방법 및 장치
KR10-2016-0147562 2016-11-07

Publications (2)

Publication Number Publication Date
JP2018077842A JP2018077842A (ja) 2018-05-17
JP7021904B2 true JP7021904B2 (ja) 2022-02-17

Family

ID=60182358

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017210622A Active JP7021904B2 (ja) 2016-11-07 2017-10-31 畳み込み神経網処理方法及び装置

Country Status (5)

Country Link
US (2) US10755126B2 (ja)
EP (1) EP3319015B1 (ja)
JP (1) JP7021904B2 (ja)
KR (1) KR102631381B1 (ja)
CN (1) CN108073981B (ja)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190167139A1 (en) 2017-12-05 2019-06-06 Gust H. Bardy Subcutaneous P-Wave Centric Insertable Cardiac Monitor For Long Term Electrocardiographic Monitoring
US10433751B2 (en) 2013-09-25 2019-10-08 Bardy Diagnostics, Inc. System and method for facilitating a cardiac rhythm disorder diagnosis based on subcutaneous cardiac monitoring data
US10736531B2 (en) 2013-09-25 2020-08-11 Bardy Diagnostics, Inc. Subcutaneous insertable cardiac monitor optimized for long term, low amplitude electrocardiographic data collection
US10463269B2 (en) 2013-09-25 2019-11-05 Bardy Diagnostics, Inc. System and method for machine-learning-based atrial fibrillation detection
US10799137B2 (en) 2013-09-25 2020-10-13 Bardy Diagnostics, Inc. System and method for facilitating a cardiac rhythm disorder diagnosis with the aid of a digital computer
US10806360B2 (en) 2013-09-25 2020-10-20 Bardy Diagnostics, Inc. Extended wear ambulatory electrocardiography and physiological sensor monitor
US10624551B2 (en) 2013-09-25 2020-04-21 Bardy Diagnostics, Inc. Insertable cardiac monitor for use in performing long term electrocardiographic monitoring
US10433748B2 (en) 2013-09-25 2019-10-08 Bardy Diagnostics, Inc. Extended wear electrocardiography and physiological sensor monitor
US10820801B2 (en) 2013-09-25 2020-11-03 Bardy Diagnostics, Inc. Electrocardiography monitor configured for self-optimizing ECG data compression
GB2539845B (en) 2015-02-19 2017-07-12 Magic Pony Tech Ltd Offline training of hierarchical algorithms
GB201604672D0 (en) 2016-03-18 2016-05-04 Magic Pony Technology Ltd Generative methods of super resolution
GB201603144D0 (en) 2016-02-23 2016-04-06 Magic Pony Technology Ltd Training end-to-end video processes
WO2017178808A1 (en) 2016-04-12 2017-10-19 Magic Pony Technology Limited Visual data processing using energy networks
US10387740B2 (en) * 2016-10-10 2019-08-20 Gyrfalcon Technology Inc. Object detection and recognition apparatus based on CNN based integrated circuits
US10366302B2 (en) * 2016-10-10 2019-07-30 Gyrfalcon Technology Inc. Hierarchical category classification scheme using multiple sets of fully-connected networks with a CNN based integrated circuit as feature extractor
JP2018093325A (ja) * 2016-12-01 2018-06-14 ソニーセミコンダクタソリューションズ株式会社 情報処理装置、情報処理方法、及びプログラム
US10261903B2 (en) 2017-04-17 2019-04-16 Intel Corporation Extend GPU/CPU coherency to multi-GPU cores
WO2018194603A1 (en) * 2017-04-20 2018-10-25 Hewlett-Packard Development Company, L.P. Document security
CN107124609A (zh) * 2017-04-27 2017-09-01 京东方科技集团股份有限公司 一种视频图像的处理系统、其处理方法及显示装置
WO2018224437A1 (en) * 2017-06-05 2018-12-13 Siemens Aktiengesellschaft Method and apparatus for analysing an image
US11308361B1 (en) 2017-07-07 2022-04-19 Twitter, Inc. Checkerboard artifact free sub-pixel convolution
CN110832845B (zh) * 2017-07-14 2022-07-05 株式会社半导体能源研究所 摄像装置及电子设备
US10691975B2 (en) * 2017-07-19 2020-06-23 XNOR.ai, Inc. Lookup-based convolutional neural network
US10083375B1 (en) * 2017-10-13 2018-09-25 StradVision, Inc. Method and device for performing activation and convolution operation at the same time and learning method and learning device for the same
US10049323B1 (en) * 2017-10-13 2018-08-14 StradVision, Inc. Method and device for performing activation and convolution operation at the same time and learning method and learning device for the same
CN107895174B (zh) * 2017-11-09 2020-01-07 京东方科技集团股份有限公司 图像分类和转换方法、装置以及图像处理系统
US11637331B2 (en) * 2017-11-20 2023-04-25 The Trustees Of Columbia University In The City Of New York Neural-network state-of-charge and state of health estimation
US10552664B2 (en) * 2017-11-24 2020-02-04 International Business Machines Corporation Image feature classification and localization using discriminative representations for robotic surgical control
EP3499415A1 (en) * 2017-12-14 2019-06-19 Axis AB Method and image processing entity for applying a convolutional neural network to an image
DE102018200534A1 (de) * 2018-01-15 2019-07-18 Robert Bosch Gmbh Verfahren zum Betreiben eines künstlichen neuronalen Netzes
US10140553B1 (en) * 2018-03-08 2018-11-27 Capital One Services, Llc Machine learning artificial intelligence system for identifying vehicles
WO2019190449A1 (en) * 2018-03-26 2019-10-03 Hewlett-Packard Development Company, L.P. Generation of kernels based on physical states
CN108875904A (zh) * 2018-04-04 2018-11-23 北京迈格威科技有限公司 图像处理方法、图像处理装置和计算机可读存储介质
US11875557B2 (en) * 2018-04-27 2024-01-16 Carnegie Mellon University Polynomial convolutional neural network with early fan-out
US11340936B2 (en) 2018-05-04 2022-05-24 Apple Inc. Compiling and scheduling transactions in neural network processor
JP2019207458A (ja) * 2018-05-28 2019-12-05 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス設定方法
WO2020014893A1 (zh) * 2018-07-18 2020-01-23 深圳鲲云信息科技有限公司 反卷积实现方法及相关产品
CN109325918B (zh) * 2018-07-26 2022-05-13 京东方科技集团股份有限公司 一种图像处理的方法、装置及计算机存储介质
US11010308B2 (en) 2018-08-10 2021-05-18 Lg Electronics Inc. Optimizing data partitioning and replacement strategy for convolutional neural networks
KR102043376B1 (ko) * 2018-08-16 2019-11-11 한국과학기술연구원 심층 신경망 알고리즘을 이용하는 실시간 스트레스 분석 방법
KR20200028168A (ko) 2018-09-06 2020-03-16 삼성전자주식회사 컨볼루셔널 뉴럴 네트워크를 이용하는 컴퓨팅 장치 및 그 동작 방법
US10931853B2 (en) * 2018-10-18 2021-02-23 Sony Corporation Enhanced color reproduction for upscaling
US11037030B1 (en) * 2018-10-29 2021-06-15 Hrl Laboratories, Llc System and method for direct learning from raw tomographic data
KR20200053886A (ko) * 2018-11-09 2020-05-19 삼성전자주식회사 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템
KR20200057814A (ko) * 2018-11-13 2020-05-27 삼성전자주식회사 뉴럴 네트워크를 이용한 데이터 처리 방법 및 이를 지원하는 전자 장치
KR102451519B1 (ko) * 2018-11-20 2022-10-07 삼성전자주식회사 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기
US11544522B2 (en) * 2018-12-06 2023-01-03 University Of Tennessee Research Foundation Methods, systems, and computer readable mediums for determining a system state of a power system using a convolutional neural network
US10810725B1 (en) 2018-12-07 2020-10-20 Facebook, Inc. Automated detection of tampered images
KR20200072308A (ko) 2018-12-12 2020-06-22 삼성전자주식회사 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 방법 및 장치
KR102562320B1 (ko) 2018-12-24 2023-08-01 삼성전자주식회사 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
KR20200081044A (ko) 2018-12-27 2020-07-07 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
KR20200082613A (ko) 2018-12-31 2020-07-08 에스케이하이닉스 주식회사 프로세싱 시스템
US11048935B2 (en) 2019-01-28 2021-06-29 Adobe Inc. Generating shift-invariant neural network outputs
CN109993825B (zh) * 2019-03-11 2023-06-20 北京工业大学 一种基于深度学习的三维重建方法
US11003909B2 (en) * 2019-03-20 2021-05-11 Raytheon Company Neural network trained by homographic augmentation
EP3948685A1 (en) * 2019-03-26 2022-02-09 Mipsology SAS Accelerating neuron computations in artificial neural networks by skipping bits
CN117234356A (zh) * 2019-05-08 2023-12-15 义隆电子股份有限公司 用于触控装置的控制系统及方法
JP7242903B2 (ja) * 2019-05-14 2023-03-20 ドルビー ラボラトリーズ ライセンシング コーポレイション 畳み込みニューラルネットワークに基づく発話源分離のための方法および装置
KR102266903B1 (ko) * 2019-05-16 2021-06-18 삼성전자주식회사 영상 처리 장치 및 그 동작방법
CN111988609A (zh) * 2019-05-22 2020-11-24 富士通株式会社 图像编码装置、概率模型生成装置和图像解码装置
US20190392296A1 (en) * 2019-06-28 2019-12-26 John Brady Hardware agnostic deep neural network compiler
US11696681B2 (en) 2019-07-03 2023-07-11 Bardy Diagnostics Inc. Configurable hardware platform for physiological monitoring of a living body
US11096579B2 (en) 2019-07-03 2021-08-24 Bardy Diagnostics, Inc. System and method for remote ECG data streaming in real-time
US11116451B2 (en) 2019-07-03 2021-09-14 Bardy Diagnostics, Inc. Subcutaneous P-wave centric insertable cardiac monitor with energy harvesting capabilities
US20210011732A1 (en) * 2019-07-09 2021-01-14 MemryX Inc. Matrix Data Reuse Techniques in Processing Systems
US11222092B2 (en) * 2019-07-16 2022-01-11 Facebook Technologies, Llc Optimization for deconvolution
WO2021022543A1 (en) * 2019-08-08 2021-02-11 Boe Technology Group Co., Ltd. Computer-implemented method, computer-implemented diagnosis method, apparatus for classifying image, and computer-program product
US20210049474A1 (en) * 2019-08-13 2021-02-18 Samsung Electronics Co., Ltd. Neural network method and apparatus
KR102147912B1 (ko) 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들
CN110490154B (zh) * 2019-08-23 2020-09-15 集美大学 一种多维泄漏信息检测方法、终端设备及存储介质
US11151416B2 (en) * 2019-09-11 2021-10-19 Expedera, Inc. Method and apparatus for efficiently processing convolution neural network operations
KR20210039197A (ko) 2019-10-01 2021-04-09 삼성전자주식회사 데이터를 처리하는 방법 및 장치
KR102624027B1 (ko) * 2019-10-17 2024-01-11 삼성전자주식회사 영상 처리 장치 및 방법
CN110704197B (zh) * 2019-10-17 2022-12-09 北京小米移动软件有限公司 处理内存访问开销的方法、装置及介质
US11507702B2 (en) * 2019-11-05 2022-11-22 Apple Inc. Secure mode switching in neural processor circuit
US11699081B2 (en) * 2019-12-20 2023-07-11 Meta Platforms, Inc. Systems and methods for reducing data movement during convolution operations in artificial neural networks
KR102559036B1 (ko) * 2019-12-24 2023-07-25 서울대학교산학협력단 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치
KR20210083624A (ko) 2019-12-27 2021-07-07 삼성전자주식회사 신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치
TWI733334B (zh) * 2020-02-15 2021-07-11 財團法人工業技術研究院 卷積神經網路運算裝置及其運算的方法
US11301705B2 (en) 2020-02-27 2022-04-12 Western Digital Technologies, Inc. Object detection using multiple neural network configurations
JPWO2021191719A1 (ja) * 2020-03-27 2021-09-30
KR20220007326A (ko) * 2020-07-10 2022-01-18 삼성전자주식회사 전자 장치 및 그의 제어 방법
CN114090470B (zh) * 2020-07-29 2023-02-17 深圳市中科元物芯科技有限公司 数据预加载装置及其预加载方法、存储介质和计算机设备
US11586442B2 (en) * 2020-08-06 2023-02-21 Nxp Usa, Inc. System and method for convolving image with sparse kernels
CN112200300B (zh) * 2020-09-15 2024-03-01 星宸科技股份有限公司 卷积神经网络运算方法及装置
KR20220071618A (ko) 2020-11-24 2022-05-31 삼성전자주식회사 컨벌루션 연산을 위한 데이터 공유 방법, 페처 및 컨벌루션 연산 장치
TWI762055B (zh) * 2020-11-30 2022-04-21 鴻海精密工業股份有限公司 卷積神經網路、運算優化方法、裝置、電子設備及介質
KR20220090104A (ko) 2020-12-22 2022-06-29 삼성전자주식회사 컨벌루션 연산을 위한 데이터 전송 방법, 페처 및 컨벌루션 연산 장치
US20220253692A1 (en) 2021-02-05 2022-08-11 Samsung Electronics Co., Ltd. Method and apparatus of operating a neural network
TWI797985B (zh) * 2021-02-10 2023-04-01 國立成功大學 卷積運算的執行方法
KR20230001877A (ko) * 2021-06-29 2023-01-05 삼성전자주식회사 신경망을 통해 이미지를 처리하는 방법 및 그 전자 장치
US11789646B2 (en) * 2021-09-24 2023-10-17 Intel Corporation Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (MAC) operations
US20230148225A1 (en) * 2021-11-05 2023-05-11 Intel Corporation Joint denoising and supersampling of graphics data
CN114611685A (zh) * 2022-03-08 2022-06-10 安谋科技(中国)有限公司 神经网络模型中的特征处理方法、介质、设备和程序产品

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5048100A (en) * 1988-12-15 1991-09-10 Michael Kuperstein Self organizing neural network method and system for general classification of patterns
US5647027A (en) * 1994-10-28 1997-07-08 Lucent Technologies Inc. Method of image enhancement using convolution kernels
US6760486B1 (en) * 2000-03-28 2004-07-06 General Electric Company Flash artifact suppression in two-dimensional ultrasound imaging
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US7016529B2 (en) 2002-03-15 2006-03-21 Microsoft Corporation System and method facilitating pattern recognition
FI118612B (fi) * 2002-11-06 2008-01-15 Nokia Corp Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite
US20060277041A1 (en) * 2005-06-06 2006-12-07 Stig Stuns Sparse convolution of multiple vectors in a digital signal processor
US7634137B2 (en) 2005-10-14 2009-12-15 Microsoft Corporation Unfolded convolution for fast feature extraction
US8156036B1 (en) * 2006-04-28 2012-04-10 Pipeline Financial Group, Inc. Methods and systems related to trading engines
JP5121506B2 (ja) * 2008-02-29 2013-01-16 キヤノン株式会社 画像処理装置、画像処理方法、プログラム及び記憶媒体
JP5376920B2 (ja) 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP5777367B2 (ja) 2011-03-29 2015-09-09 キヤノン株式会社 パターン識別装置、パターン識別方法及びプログラム
EP2748765B1 (en) * 2011-08-25 2022-12-14 Cornell University Retinal encoder for machine vision
CN102592258B (zh) * 2012-01-04 2014-07-09 复旦大学 一种适用于指纹图像增强的可配置Gabor滤波硬件加速单元
US9190053B2 (en) * 2013-03-25 2015-11-17 The Governing Council Of The Univeristy Of Toronto System and method for applying a convolutional neural network to speech recognition
CN104077233B (zh) * 2014-06-18 2017-04-05 百度在线网络技术(北京)有限公司 多通道卷积层处理方法和装置
US9411726B2 (en) 2014-09-30 2016-08-09 Samsung Electronics Co., Ltd. Low power computation architecture
KR102276339B1 (ko) 2014-12-09 2021-07-12 삼성전자주식회사 Cnn의 근사화를 위한 학습 장치 및 방법
US10223635B2 (en) * 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
US9786036B2 (en) * 2015-04-28 2017-10-10 Qualcomm Incorporated Reducing image resolution in deep convolutional networks
US11099918B2 (en) * 2015-05-11 2021-08-24 Xilinx, Inc. Accelerating algorithms and applications on FPGAs
US10489703B2 (en) * 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US20160358069A1 (en) * 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
US11423311B2 (en) * 2015-06-04 2022-08-23 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
US10460230B2 (en) * 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network
US10871536B2 (en) * 2015-11-29 2020-12-22 Arterys Inc. Automated cardiac volume segmentation
RU2694021C1 (ru) * 2015-12-14 2019-07-08 Моушен Метрикс Интернешэнл Корп. Способ и устройство идентификации частей фрагментированного материала в пределах изображения
US10089717B2 (en) * 2016-04-05 2018-10-02 Flipboard, Inc. Image scaling using a convolutional neural network
EP3523751A4 (en) * 2016-10-04 2020-05-06 Magic Leap, Inc. EFFICIENT DATA ARRANGEMENTS FOR CONVOLUTIONAL NEURAL NETWORKS
WO2019090325A1 (en) * 2017-11-06 2019-05-09 Neuralmagic, Inc. Methods and systems for improved transforms in convolutional neural networks
US11534136B2 (en) * 2018-02-26 2022-12-27 Siemens Medical Solutions Usa, Inc. Three-dimensional segmentation from two-dimensional intracardiac echocardiography imaging

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Yu-Hsin Chen 外2名,Eyeriss: A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks,ACM SIGARCH Computer Architecture News,Volume 44, Issue 3,ACM,2016年06月18日,pp.367-379

Also Published As

Publication number Publication date
EP3319015B1 (en) 2022-03-23
CN108073981A (zh) 2018-05-25
JP2018077842A (ja) 2018-05-17
US20200372276A1 (en) 2020-11-26
EP3319015A1 (en) 2018-05-09
KR20180050928A (ko) 2018-05-16
US11508146B2 (en) 2022-11-22
US20180129893A1 (en) 2018-05-10
CN108073981B (zh) 2023-09-05
KR102631381B1 (ko) 2024-01-31
US10755126B2 (en) 2020-08-25

Similar Documents

Publication Publication Date Title
JP7021904B2 (ja) 畳み込み神経網処理方法及び装置
KR102415508B1 (ko) 컨볼루션 신경망 처리 방법 및 장치
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
JP2022037022A (ja) ハードウェアにおけるカーネルストライドの実行
US20180253641A1 (en) Arithmetic processing apparatus and control method therefor
TWI798618B (zh) 記憶體分配方法、裝置、及電子設備
US11586903B2 (en) Method and system of controlling computing operations based on early-stop in deep neural network
KR20180073118A (ko) 컨볼루션 신경망 처리 방법 및 장치
CN114026569A (zh) 使用脉动阵列的扩张卷积
CN111382859A (zh) 用于处理神经网络中的卷积运算的方法和装置
JP2023109847A (ja) 機械学習のための画像変換
US10755169B2 (en) Hybrid non-uniform convolution transform engine for deep learning applications
US20220253683A1 (en) Implementing Fully-Connected Neural-Network Layers in Hardware
US20210201120A1 (en) Inference apparatus, convolution operation execution method, and program
EP3633559A1 (en) Information processing apparatus, information processing method, non-transitory computer-readable storage medium
KR20220020816A (ko) 심층 신경망들에서의 깊이-우선 컨볼루션
US11521007B2 (en) Accelerator resource utilization by neural networks
US20220067495A1 (en) Intelligent processor, data processing method and storage medium
JP2020204894A (ja) フィルタ処理装置及びその制御方法
JP6906622B2 (ja) 演算回路および演算方法
CN112106080A (zh) 电子设备及其控制方法
US20210287070A1 (en) Data processing apparatus, data processing method, and non-transitory computer-readable storage medium
US11842273B2 (en) Neural network processing
KR20230059718A (ko) 심층 신경망 연산을 수행하는 방법 및 전자 장치
KR20230059726A (ko) 심층 신경망 연산을 수행하는 방법 및 전자 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200622

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220204

R150 Certificate of patent or registration of utility model

Ref document number: 7021904

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150