JP2022022876A - 畳み込みニューラルネットワーク処理装置 - Google Patents

畳み込みニューラルネットワーク処理装置 Download PDF

Info

Publication number
JP2022022876A
JP2022022876A JP2020118737A JP2020118737A JP2022022876A JP 2022022876 A JP2022022876 A JP 2022022876A JP 2020118737 A JP2020118737 A JP 2020118737A JP 2020118737 A JP2020118737 A JP 2020118737A JP 2022022876 A JP2022022876 A JP 2022022876A
Authority
JP
Japan
Prior art keywords
processing
data
convolution
input
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020118737A
Other languages
English (en)
Other versions
JP2022022876A5 (ja
Inventor
ソクイ チン
Tsewei Chen
政美 加藤
Masami Kato
しおり 脇野
Shiori Wakino
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2020118737A priority Critical patent/JP2022022876A/ja
Priority to US17/353,959 priority patent/US11900577B2/en
Priority to EP21180760.7A priority patent/EP3940603A1/en
Publication of JP2022022876A publication Critical patent/JP2022022876A/ja
Publication of JP2022022876A5 publication Critical patent/JP2022022876A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • G06T3/606Rotation of whole images or parts thereof by memory addressing or mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/10Image enhancement or restoration using non-spatial domain filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • G06T5/92Dynamic range modification of images or parts thereof based on global image properties
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

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

Abstract

Figure 2022022876000001
【課題】従来の畳み込み処理又は点方向の畳み込み処理と、深さ方向の畳み込み処理と、の双方を行うハードウェアの処理効率を向上させる。
【解決手段】複数の階層のうち処理対象階層における複数のチャネルのデータの少なくとも一部を保持するデータ保持手段と、それぞれが、前記処理対象階層の1つのチャネルのデータと、処理対象階層に対応する係数と、を用いた積和演算を並列に行う、複数の演算手段と、を備える。処理対象階層における処理を特定する情報に基づいて、データ保持手段に格納された処理対象階層における1つのチャネルのデータを、複数の演算手段のうちの1つの演算手段に入力する第1の処理を行うか、複数の演算手段のそれぞれに並列に入力する第2の処理を行うか、を選択する。
【選択図】図1

Description

本発明は、畳み込みニューラルネットワーク処理装置に関し、特に、畳み込みニューラルネットワークに従う処理を行うためのハードウェアに関する。
近年、深層学習の進歩により、画像認識の精度が上がっている。畳み込みニューラルネットワーク(Convolutional Neural Networks、CNN)は、深層学習に用いられる手法として知られている。CNNは様々なアプリケーションに適用されているが、CNNを用いた処理においては多くの積和演算を行うことが要求される。このため、CNNを携帯端末又は車載機器等の組み込みシステムに実装する場合、特徴データ及び重み係数の転送量を削減する、又は積和演算を効率的に行うことにより、処理時間を短縮することが求められる。
非特許文献1は、計算量を削減するための技術として、深さ方向の畳み込み処理(Depthwise Convolution)を、点方向の畳み込み処理(Pointwise Convolution)と組み合わせて用いることを提案している。また、特許文献1、非特許文献2、及び非特許文献3は、深さ方向の畳み込み処理をハードウェアで実現する方法を提案している。
米国特許第10360470号明細書
Andrew G. Howard, et al., "MobileNets: Efficient convolutional neural networks for mobile vision applications.", CoRR, abs/1704.04861 (2017). Bing Liu, et al. "An FPGA-Based CNN Accelerator Integrating Depthwise Separable Convolution.", Electronics, 2019, vol. 8, p. 281. Yunxuan Yu, et al. "Light-OPU: An FPGA-based overlay processor for lightweight convolutional neural networks." Proceedings of the 2020 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays, p. 122 (2020).
従来の畳み込み処理と深さ方向の畳み込み処理の双方を短い時間で行うことができるハードウェアが依然として求められている。例えば、特許文献1及び非特許文献2に記載の手法では、重み係数の一部をゼロにして従来の畳み込み処理を行うことで深さ方向の畳み込み処理を実現しているため、計算量を削減可能な深さ方向の畳み込み処理のメリットが十分に活用されていなかった。
本発明は、従来の畳み込み処理又は点方向の畳み込み処理と、深さ方向の畳み込み処理と、の双方を行うハードウェアの処理効率を向上させることを目的とする。
本発明の目的を達成するために、本発明の一実施形態に係る処理装置は以下の構成を備える。すなわち、
複数の階層を有する畳み込みニューラルネットワークにおける演算を行う処理装置であって、
前記複数の階層のうち処理対象階層における複数のチャネルのデータの少なくとも一部を保持するデータ保持手段と、
それぞれが、前記処理対象階層の1つのチャネルのデータと、前記処理対象階層に対応する係数と、を用いた積和演算を並列に行う、複数の演算手段と、
前記処理対象階層における処理を特定する情報に基づいて、前記データ保持手段に格納された前記処理対象階層における1つのチャネルのデータを、前記複数の演算手段のうちの1つの演算手段に入力する第1の処理を行うか、前記複数の演算手段のそれぞれに並列に入力する第2の処理を行うか、を選択する選択手段と、
を備えることを特徴とする。
従来の畳み込み処理又は点方向の畳み込み処理と、深さ方向の畳み込み処理と、の双方を行うハードウェアの処理効率を向上できる。
一実施形態に係る畳み込み処理のフローチャート。 一実施形態に係る畳み込みニューラルネットワークの構造例を示す図。 一実施形態に係る画像処理装置の構成例を示すブロック図。 一実施形態に係る処理装置の構成例を示すブロック図。 一実施形態における畳み込み処理の手順について説明する図。 一実施形態に係る畳み込み処理のフローチャート。 一実施形態に係る処理装置の構成例を示すブロック図。 一実施形態における畳み込み処理の手順について説明する図。 畳み込みニューラルネットワークと畳み込み処理の関係を説明する図。 一実施形態に係る処理装置の構成例を示すブロック図。 一実施形態に係る処理装置の構成例を示すブロック図。 畳み込みニューラルネットワークのパイプライン処理を説明する図。 ブロック単位の畳み込み処理のための疑似コードの例を示す図。 一実施形態に係る処理装置の構成例を示すブロック図。 一実施形態で行われる畳み込み処理について説明する図。
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
[実施形態1]
本発明の一実施形態は、畳み込みニューラルネットワークにおける演算を行う処理装置に関する。まず、このような処理装置を利用して画像処理を行う画像処理装置について説明する。図3は、このような画像処理装置300の一構成例を示すブロック図である。
保存部302は、画像データを保存することができる。保存部302は、画像データの他に、プログラム又はその他のデータを保存してもよい。保存部302は、例えばハードディスク、フレキシブルディスク、CD-ROM、CD-RやDVD、メモリーカード、CFカード、スマートメディア、SDカード、メモリスティック、xDピクチャーカード、又はUSBメモリ等であってもよい。また、後述するRAM308の一部を保存部302として用いることもできる。さらに、保存部302は仮想的に構成されていてもよく、例えば、後述する通信部303を介して接続された外部機器が有する記憶装置を保存部302として用いてもよい。
表示部304は、画像処理前若しくは画像処理後の画像、又はGUI等の画像を表示する装置である。表示部304としては、例えばCRT又は液晶ディスプレイ等を用いることができる。表示部304は、ケーブル等を介して接続された、画像処理装置300の外部にあるディスプレイ装置であってもよい。
入力部301は、ユーザからの指示又はデータの入力を受け付ける装置である。入力部301は、例えば、キーボード、ポインティング装置、又はボタン等である。なお、表示部304と入力部301とが同一装置であってもよい。例えば、タッチスクリーン装置が表示部304及び入力部301として機能してもよく、この場合、タッチスクリーンに対する入力を、入力部301への入力として扱うことができる。
CPU306は、画像処理装置300全体の動作を制御する。ROM307及びRAM308は、画像処理装置300による処理に必要なプログラム、データ、及び作業領域等をCPU306に提供する。後述する処理に必要なプログラムが保存部302又はROM307に格納されている場合、プログラムはRAM308に読み込まれてから実行される。通信部303を経由して画像処理装置300がプログラムを受信する場合、プログラムは、保存部302に記録された後にRAM308に読み込まれるか、又は通信部303から直接RAM308に読み込まれ、そして実行される。図3には1つのCPU306のみが示されているが、画像処理装置300は複数のCPUを有していてもよい。
画像処理部309は、CPU306からのコマンドに従って、保存部302に書き込まれた画像データを読み出し、画像データに対して画素値のレンジを調整する処理を行い、その結果得られた画像データをRAM308に書き込むことができる。
CNN処理部305は、畳み込みニューラルネットワークにおける演算を行う処理装置に相当する。CNN処理部305は、畳み込みニューラルネットワークにおける演算を、RAM308などに格納された処理対象画像に対して行うことができる。具体的には、CNN処理部305は、後述する図1のフローチャートに従い、RAM308に保存された画像データに対して、積和演算を含む畳み込み処理(フィルタ処理、ステップS101~S116)を行うことができる。そしてCNN処理部305は、得られた結果を保存部302(又はRAM308)に出力する。
CPU306は、処理対象画像に対して畳み込みニューラルネットワークにおける演算を行うことにより得られた処理結果に基づいて、処理対象画像に対する画像処理を行うことができる。例えば、CPU306は、畳み込み処理の結果に基づき、画像データ(静止画像、又は複数のフレーム画像を有する動画像)に対する画像補正処理又は画像認識処理のような画像処理を行うことができる。CPU306は、得られた画像処理の結果を、RAM308に保存することができる。本実施形態によれば、CNN処理部305による処理を効率的に行うことができるため、処理対象画像が画像処理装置300に入力されてから、CPU306が処理対象画像に対する画像処理を完了するまでの時間を短縮できる。このため、本実施形態に係る画像処理装置は、画像に対するリアルタイム処理を行うために有利である。
通信部303は、機器間の通信を行うためのインターフェース(I/F)である。なお、図3において、入力部301、保存部302、及び表示部304は全て1つの画像処理装置300内に含まれている。しかしながら、分散して配置された各部が、所定の通信方式に従う通信路で接続され、画像処理システムを形成していてもよい。画像処理装置300は、上記以外の様々な構成要素を有していてもよいが、その説明は省略する。
(ネットワークの構成)
図2は、畳み込みニューラルネットワーク(以下、単にネットワークと呼ぶことがある)の構造の一例を示す。ネットワークは、複数の階層(レイヤ)を有しており、それぞれの階層には1以上のチャネルのデータ(例えば1以上の特徴画像)が存在する。そして、前階層のデータに対して所定の処理を行うことにより、後階層のデータが生成される。畳み込みニューラルネットワークにおいては、少なくとも1つの処理対象階層のデータに対して畳み込み処理を含む処理を行うことにより、処理対象階層の次の階層のデータが生成される。各階層のデータが画像に限られるわけではないが、以下では、畳み込みニューラルネットワークにおける演算が処理対象画像に対して行われる場合について説明する。この場合、ネットワークの中間にある処理対象階層におけるデータは、畳み込みニューラルネットワークにおける演算の過程で得られる特徴画像である。
本発明の一実施形態に従う処理装置は、このような構造を有するネットワークにおける演算を行うことができる。ネットワークの構造は、各階層の情報(積和演算の計算量、特徴画像のサイズ及び枚数、及び処理の種類等)により表すことができる。図2に示すネットワークの階層数は4であり、それぞれの階層をレイヤ1~4と呼ぶ。それぞれの階層には4つのチャネルが存在し、それぞれのチャネルには1枚の特徴画像が含まれている。さらに、1枚の特徴画像には複数の特徴データ(例えば特徴画像の各画素の画素データ)が含まれている。
ネットワークにおける演算においては、学習により得られた重み係数と、特徴画像の画素データと、を用いた畳み込み処理が行われる。畳み込み処理は積和演算であり、複数の乗算と累積加算を含んでいる。図2において矢印は積和演算を意味する。
処理対象階層の次の階層の特徴画像を計算するための畳み込み処理は、処理対象階層の特徴画像と、処理対象階層に対応する係数を用いて行われる。多くの畳み込み処理において、1枚の特徴画像を計算するためには、処理対象階層の複数枚の特徴画像の情報が用いられる。このような積和演算は、式(1)に従って行うことができる。
Figure 2022022876000002
上式において、変数nは次階層の特徴画像の番号であり、変数mは処理対象階層の特徴画像の番号である。処理対象階層には特徴画像がIC枚あり、m枚目の特徴画像はI(m)であり、Ii,j(m)はm枚目の特徴画像の座標(i,j)における特徴データ(画素値)である。重み係数(W0,0(m,n)~WX-1,Y-1(m,n))はX×Y個あり、算出しようとする特徴画像によって異なる。次階層の特徴データを計算するための積和演算回数はIC×X×Y回である。Oi,j(n)は特徴データ単位の積和演算結果であり、O(n)は複数のOi,j(n)が含まれている、処理対象階層の特徴画像全体に対する畳み込み処理の結果である。変数i,jは特徴データの座標を意味する。畳み込み処理の後に、ネットワーク構造に基づいて、積和演算結果Oi,j(n)を用いた活性化処理又はプーリング処理等を行うことにより、次階層の特徴画像が得られる。
点方向の畳み込み処理においては、式(1)の重み係数(W0,0(m,n)~WX-1,Y-1(m,n))の個数が1×1個になる。また、深さ方向の畳み込み処理においては、積和演算の計算式は式(2)により表される。
Figure 2022022876000003
深さ方向の畳み込み処理において、次階層の特徴画像を生成するために必要な、処理対象階層の特徴画像の枚数は1枚であるため、変数mを変数nで代替し、変数mを省略することができる。式(2)ではX×Y個の重み係数(W0,0(n)~WX-1,Y-1(n))が用いられ、これは式(1)で用いられるの重み係数の個数の1/IC倍である。また、次階層の特徴データを計算するための積和演算回数はX×Y回であり、式(1)の計算量の1/IC倍になる。
図2はまた、ネットワークの各階層に対応する畳み込み処理の種類と、畳み込み処理で用いるフィルタのサイズとを示している。レイヤ1における畳み込み処理は、3×3のサイズを有するフィルタを用いた畳み込み処理である。レイヤ1における畳み込み処理は深さ方向の畳み込み処理ではなく、レイヤ2の1枚の特徴画像を生成するために、レイヤ1のそれぞれの特徴画像が用いられる。具体的には、レイヤ1においては、式(1)に基づいて複数枚の特徴画像201と重み係数を用いて畳み込み処理を行うことにより、レイヤ2の複数枚の特徴画像202が生成される。図9は、ネットワークと畳み込み処理の例を示す。レイヤ1にある4枚の特徴画像901の同じ位置から特徴データが抽出され、抽出された特徴データを用いて積和演算が行われる。その結果が、レイヤ2の特徴画像902の同じ位置の特徴データとなる。
レイヤ2における畳み込み処理も、3×3のサイズを有するフィルタを用いた畳み込み処理である。一方で、レイヤ2における畳み込み処理は深さ方向の畳み込み処理であり、レイヤ3の1枚の特徴画像を生成するために、レイヤ2の1枚の特徴画像が用いられる。このように、レイヤ2における畳み込み処理の計算量は、レイヤ1より少ない。具体的には、レイヤ2では、式(2)に基づいて複数枚の特徴画像202と重み係数とを用いて畳み込み処理を行うことにより、レイヤ3にある複数枚の特徴画像203が生成される。
レイヤ3における畳み込み処理は、深さ方向の畳み込み処理ではないが、用いられるフィルタのサイズは1×1である。具体的には、レイヤ3では、式(1)に基づいて複数枚の特徴画像203と重み係数とを用いた畳み込み処理を行うことにより、レイヤ4にある複数枚の特徴画像204が生成される。このように、各フィルタ及び特徴画像は階層的に構成されており、階層毎に畳み込み処理の種類及びフィルタサイズが異なっていてもよい。また、ネットワークにおける演算処理は階層順に行うことができる。
(処理装置の構成)
以下で、本発明の一実施形態に係る処理装置の構成例について、図4を参照して説明する。図4の下側は、本発明の一実施形態に係る処理装置である、CNN処理部305の構成を示す。CNN処理部305は、制御部401、保持部402、特徴データ保持部403、係数保持部404、読み出し部405、畳み込み処理部406、後処理部407、及び結果保持部408を備える。
保持部402は、特徴画像(特徴データ)、重み係数、及びネットワーク構造情報を保持することができる。例えば、保持部402は、入力された全ての特徴画像(例えばレイヤ1の全ての特徴画像201)を、保存部302又はRAM308から読み出して保持することができる。また、保持部402は、畳み込み処理部406及び後処理部407により得られた特徴画像(例えばレイヤ2の全ての特徴画像202)を、結果保持部408から読み出して保持することができる。さらに、保持部402は、畳み込み処理に用いる全ての重み係数を、保存部302から読み出して保持することができる。ネットワーク構造情報は、ネットワークの構造を表す情報であり、保存部302から読み出すことができる。以下の説明において、ネットワーク構造情報は、各階層のチャネル数の情報と、各階層における処理を特定する情報を有している。各階層における処理を特定する情報は、畳み込み処理の種類、すなわち深さ方向の畳み込み処理を行うか否かを示すことができる。
特徴データ保持部403は、処理対象階層における複数のチャネルのデータの少なくとも一部を保持する。本実施形態において、特徴データ保持部403は処理対象階層の特徴画像I(m)を保持する。特徴データ保持部403には、後述する1ステップの処理で用いられる特徴画像が保持部402から転送される。係数保持部404は、処理対象階層における積和演算に用いる係数の少なくとも一部を保持することができる。本実施形態において、係数保持部404は畳み込み処理に用いるフィルタの重み係数Wx,y(m,n)を保持する。図2に示されるように、フィルタのサイズは階層ごとに設定可能である。係数保持部404には、後述する1ステップの処理で用いられる重み係数が保持部402から転送される。特徴データ保持部403及び係数保持部404の少なくとも一方はメモリであってもよく、このメモリは畳み込み処理部406又は演算コア416とともに同じチップ上に設けられていてもよい。
畳み込み処理部406は、式(1)又は式(2)に基づいて、重み係数と特徴データとを用いて畳み込み処理の結果を計算する。図4の上側には、畳み込み処理部406の詳細構成を示す。畳み込み処理部406は、複数の畳み込みサブユニット410を有している。それぞれの畳み込みサブユニット410は、それぞれが、処理対象階層の1つのチャネルのデータと、処理対象階層に対応する係数と、を用いた積和演算を並列に行う。それぞれの畳み込みサブユニット410は、演算コア416、特徴データ格納ユニット411、係数格納ユニット412、及び結果格納ユニット415を備え、特徴データと重み係数との積を累積する機能を有している。演算コア416は、積和演算のために用いられる乗算器413及び加算器414を有している。
例えば、1つの特徴画像に対する畳み込み処理を行う場合、特徴データ格納ユニット411及び係数格納ユニット412のそれぞれには、読み出し部405によってこの特徴画像の特徴データ及び畳み込み処理に用いる重み係数が順次供給される。すなわち、畳み込み処理の結果を表す画像のうちの1画素のデータを算出するために必要な、特徴データ及び重み係数が、特徴データ格納ユニット411及び係数格納ユニット412に供給される。乗算器413には、特徴データ格納ユニット411及び係数格納ユニット412から、特徴データ及び重み係数が1つずつ供給される。そして、乗算器413が計算した特徴データと重み係数との積が加算器414によって累積されることで、畳み込み処理の結果を表す画像のうち1画素のデータが算出される。結果格納ユニット415は、畳み込み処理の結果を表す画像の各画素について、乗算器413が計算した積の累積値を格納することができる。このような処理を、畳み込み処理の結果を表す画像の各画素について繰り返すことにより、畳み込み処理の結果を表す画像の各画素のデータが算出される。
後処理部407は、畳み込み処理部406が算出した畳み込み処理の結果に基づいて、次階層の特徴画像I(n)を生成する。例えば、後処理部407は、畳み込み処理の結果に対して活性化処理及びプーリング処理を行うことができる。なお、後処理部407の代わりに、CPU306等の他の処理部が活性化処理又はプーリング処理を行ってもよい。また、活性化処理とプーリング処理の一方又は双方が省略されてもよい。結果保持部408は、後処理部407による処理結果、すなわち次階層の特徴画像I(n)を保持する。
読み出し部405は、複数の畳み込みサブユニット410のうちの1つの畳み込みサブユニット410に入力する第1の処理を行うか、複数の畳み込みサブユニット410のそれぞれに並列に入力する第2の処理を行うか、を選択する。読み出し部405は、処理対象階層における処理を特定する情報に基づいてこのような選択を行う。処理対象階層における処理を特定する情報は、読み出し部405が保持部402から取得するネットワーク構造情報に示される。例えば、読み出し部405は、枠420に示されるように、ネットワーク構造に応じて、式(1)に従う畳み込み処理を行うか、式(2)に従う深さ方向の畳み込み処理を行うかを選択する。
また、読み出し部405は、特徴データ保持部403及び係数保持部404から複数の畳み込みサブユニット410へのデータ供給制御を行うことができる。式(1)に従う畳み込み処理を行う場合、読み出し部405は第2の処理を選択する。この場合、読み出し部405は、処理対象階層における1つのチャネルのデータ(例えば特徴画像I(m))を、複数の畳み込みサブユニット410のそれぞれに入力する制御を行う。また、式(2)に従う畳み込み処理を行う場合、読み出し部405は第1の処理を選択する。この場合、読み出し部405は、処理対象階層における1つのチャネルのデータ(例えば特徴画像I(m))を、複数の畳み込みサブユニット410のうちの1つに入力する制御を行う。読み出し部405は、畳み込みサブユニット410又は演算コア416へ入力されるデータの特徴データ保持部403内のアドレスを指定することができる。具体的には、読み出し部405は、特徴データ保持部403と係数保持部404との特定のデータにアクセスするためのメモリ内アドレスを生成して畳み込みサブユニット410に転送することで、特徴データ及び重み係数の読み出しを制御することができる。このようなアドレス発行部として機能する読み出し部405は、畳み込みサブユニット410又は演算コア416とともに同じチップ上に設けられていてもよい。
次に、CNN処理部305が行う処理の流れを、図1のフローチャートを参照して説明する。以下のステップS101~S116は、制御部401に含まれるCPU又はシーケンサー等が行うことができる。以下では、処理対象階層の複数の特徴画像のことをそれぞれ入力特徴画像と呼ぶ。また、処理対象階層の処理を行うことで生成される、処理対象階層の次の階層の複数の特徴画像のことをそれぞれ出力特徴画像と呼ぶ。
ステップS101で、制御部401は、ネットワークにおける演算の対象となる入力画像(例えばレイヤ1の複数枚の特徴画像)と、重み係数と、ネットワーク構造情報と、をRAM308から読み出し、保持部402に保持する。
ステップS102で、制御部401は、レイヤのループを開始する。最初のループにおいては、最初の階層(レイヤ1)が処理対象階層として選択される。後のループにおいては、次の階層(レイヤ2以降)が処理対象階層として選択される。
ステップS103で、制御部401は、保持部402に保持されているネットワーク構造情報に基づいて、深さ方向の畳み込み処理を行うかどうかを判断する。深さ方向の畳み込み処理を行わない場合、処理はステップS105に進む。深さ方向の畳み込み処理を行う場合、処理はステップS114に進む。
ステップS105で、制御部401は、畳み込み処理の結果を蓄積する、結果格納ユニット415のそれぞれの初期化を行う。制御部401は、結果格納ユニット415に保持されている処理結果をゼロに設定することにより、初期化を行うことができる。
ステップS106で、制御部401は入力特徴画像のループを開始する。最初のループにおいては、1枚目の入力特徴画像を処理対象として用いる処理が行われる。後のループにおいては、次の入力特徴画像(2枚目以降)を用いた処理が行われる。
ステップS107で、制御部401は、一部の入力特徴画像を保持部402から読み出し、特徴データ保持部403に転送する。また、制御部401は、一部の重み係数を保持部402から読み出し、係数保持部404に転送する。上述のように、制御部401は、1ステップの処理で用いられる特徴画像及び重み係数を、特徴データ保持部403及び係数保持部404に転送することができる。ここで、1ステップの処理とは、1回の入力特徴画像のループにおけるステップS108における畳み込み処理、又はステップS116における畳み込み処理のことを指す。深さ方向の畳み込み処理を行わない場合において、ステップS108では、1枚の共通の入力特徴画像と、各畳み込み処理に対応する複数セットの重み係数が用いられる。このため、制御部401は、ステップS106~S109のループで処理対象となっている1枚の入力特徴画像を特徴データ保持部403に転送することができる。また、制御部401は、処理対象となっている1枚の入力特徴画像に対して行う畳み込み処理の重み係数を、係数保持部404に転送することができる。転送時間を短縮するため、重み係数と特徴画像は並列に転送することができるが、転送帯域が十分にある場合等において、重み係数と入力画像を順番に転送してもよい。
ステップS108で、畳み込み処理部406は、制御部401からの制御信号に従って、特徴データ保持部403に保持されている入力特徴画像及び係数保持部404に保持されている重み係数を用いて、畳み込み処理を行う。本実施形態において、複数の畳み込みサブユニット410のそれぞれには、処理対象となっている共通の入力特徴画像が入力される。また、複数の畳み込みサブユニット410のそれぞれには、互いに異なる重み係数を入力することができる。1つの畳み込みサブユニット410には、複数の出力特徴画像のうち対応する出力特徴画像を生成するために行う畳み込み処理の重み係数が入力される。このように、それぞれの畳み込みサブユニット410は、共通の入力特徴画像に対して、異なる重み係数を用いた畳み込み処理を並列に行うことができる。
より具体的に説明すると、特徴データ格納ユニット411及び係数格納ユニット412は、読み出し部405の制御に従って、特徴データ保持部403及び係数保持部404に格納されている特定の特徴データ及び重み係数を格納する。演算コア416のそれぞれは、入力された1つのデータと1つの係数との積を算出し、算出された積を累計することにより、積和演算を行うことができる。したがって、特徴データ格納ユニット411及び係数格納ユニット412からのデータ供給は、複数の演算コア416のそれぞれにデータ及び係数が1つずつ入力されるように制御される。特徴データ格納ユニット411及び係数格納ユニット412に格納されている特徴データ及び重み係数を用いた積和演算を繰り返すことにより、畳み込み処理の結果を表す画像のうち1画素のデータを算出することができる。読み出し部405は、入力特徴画像に対する畳み込み処理の結果が得られるように、特徴データ保持部403及び係数保持部404からの特徴データ及び重み係数の読み出し順序を制御することができる。
ステップS109で、制御部401は、入力特徴画像のループの終了判定をする。全ての入力特徴画像の処理が終わっていない場合、処理はステップS107に戻り、次の入力特徴画像を用いた処理が行われる。このように、ステップS107において共通する1つのチャネルのデータを特徴データ保持部403から複数の畳み込みサブユニット410に並列に入力することが、処理対象階層における複数のチャネルのデータのそれぞれについて繰り返される。
ステップS109において、全ての入力特徴画像の処理が終わっている場合、処理はステップS110に進む。このとき、畳み込みサブユニット410のそれぞれは、順次入力された処理対象階層におけるそれぞれのチャネルのデータを用いて、処理対象階層の次の階層における1つのチャネルに対応する演算結果を出力している。すなわち、1つの畳み込みサブユニット410は、各ループにおいて複数の入力特徴画像のそれぞれに対する畳み込み処理を行い、その結果を結果格納ユニット415に蓄積している。こうして、結果格納ユニット415は、複数の入力特徴画像のそれぞれに対する畳み込み処理の結果が累積されたデータを格納することができる。結果格納ユニット415が格納しているデータは、複数の入力特徴画像に対する、チャネル(深さ)方向への次元を有するフィルタを用いた畳み込み処理(例えば点方向の畳み込み処理、又は3×3×3フィルタを用いた三次元畳み込み処理)の結果に相当する。
ステップS110で、後処理部407は、制御部401からの制御信号に従って、結果格納ユニット415に保持されている畳み込み処理の結果に基づいて活性化処理を行う。後処理部407は、例えば、式(3)に従って活性化処理の結果を計算することができる。
f(x)=
0(x<0)
x(x≧0) ……(3)
式(3)において、f(x)は活性化関数であり、xは入力データである。この例では活性化関数としてReLU(Rectified Linear Unit)を用いているが、活性化関数がReLUに限られるわけではない。例えば、活性化関数として他の非線形の関数、又は量子化関数を用いてもよい。また、後処理部407は、必要に応じて、ネットワーク構造情報に示される階層の情報に応じて、活性化処理の結果に基づいてプーリング処理を行うことで、出力特徴画像のサイズを調整してもよい。
後処理部407は、結果格納ユニット415に保持されている畳み込み処理の結果に対するこのような処理により、出力特徴画像を生成し、結果保持部408に格納することができる。後処理部407は、複数の結果格納ユニット415のそれぞれに保持されている畳み込み処理の結果に対してこのような処理を行うことができる。結果として、結果保持部408には、複数の結果格納ユニット415のそれぞれに保持されている畳み込み処理の結果にそれぞれ対応する、複数の出力特徴画像が格納される。
ステップS111で、制御部401は、結果保持部408に格納されている出力特徴画像を、保持部402に格納する。この出力特徴画像は、処理対象階層の次の階層の特徴画像である。
ステップS113で、制御部401は、レイヤのループの終了判定を行う。全ての階層の処理が終わった場合、畳み込み処理は終了する。そうでない場合、処理はステップS103に戻り、処理対象階層が変更され、次の階層の処理が開始される。この場合、ステップS111で保持部402に格納された出力特徴画像が、次の階層の処理における入力特徴画像として用いられる。
ステップS114で、制御部401は、ステップS105と同様に結果格納ユニット415のそれぞれの初期化を行う。
ステップS115では制御部401は、一部の入力特徴画像を保持部402から読み出し、特徴データ保持部403に転送する。また、制御部401は、一部の重み係数を保持部402から読み出し、係数保持部404に転送する。深さ方向の畳み込み処理を行う場合において、ステップS116では、複数枚の入力特徴画像と、各入力特徴画像に対応する複数セットの重み係数が用いられる。このため、制御部401は、ステップS116で処理対象となる複数枚の入力特徴画像を特徴データ保持部403に転送することができる。また、制御部401は、複数セットの重み係数を、係数保持部404に転送することができる。ステップS107と同様、重み係数と特徴画像は並列に転送されてもよいし、順番に転送されてもよい。
ステップS116で、畳み込み処理部406は、制御部401からの制御信号に従って、特徴データ保持部403に保持されている入力特徴画像及び係数保持部404に保持されている重み係数を用いて、畳み込み処理を行う。本実施形態においては、1つのチャネルのデータが対応する1つの畳み込みサブユニット410に入力されるように、特徴データ保持部403に格納された処理対象階層における複数のチャネルのデータが複数の畳み込みサブユニット410に並列に入力される。このように、複数の畳み込みサブユニット410のそれぞれには、対応する互いに異なる入力特徴画像が入力される。また、複数の畳み込みサブユニット410のそれぞれには、互いに異なる重み係数を入力することができる。このように、それぞれの畳み込みサブユニット410は、互いに異なる入力特徴画像に対して、互いに異なる重み係数を用いた畳み込み処理を並列に行うことができる。読み出し部405は、畳み込み処理に用いるデータが異なることを除き、ステップS108と同様に特徴データ保持部403及び係数保持部404からの特徴データ及び重み係数の読み出し順序を制御することができる。また、演算コア416も、ステップS108と同様に積和演算を行うことができる。こうして、複数の畳み込みサブユニット410のそれぞれは、処理対象階層における1つのチャネルのデータを用いて、処理対象階層の次の階層における1つのチャネルに対応する演算結果を出力することができる。
ステップS117及びS118は、ステップS110及びS111と同様に行うことができ、出力特徴画像の生成及び格納が行われる。
以上のように、深さ方向の畳み込み処理を行う場合には、ステップS106~S109のループを省略することができるため、処理効率を向上させることができる。
(畳み込み処理の例)
本実施形態の構成によれば、複数枚の特徴画像を並列に処理することができる。以下に、図1のフローチャートに従う処理について、図5に示す例に従ってさらに説明する。図5は、図2に示す2つの階層(レイヤ2及びレイヤ3)の処理を行う様子を示す。ここでは、4枚の特徴画像を並列に処理する例について説明する。図5において、実線のブロックは各ステップにおける処理対象を示し、実線の矢印は各ステップで行われる畳み込み処理を示す。
図5(A)はレイヤ2の処理を表す。ステップS103では深さ方向の畳み込み処理を行うと判断され、処理はステップS114に進む。ステップS116では、4枚の入力特徴画像のそれぞれが、複数の畳み込みサブユニット410のうち対応する1つに並列に入力される。複数の畳み込みサブユニット410のそれぞれは、対応する入力特徴画像に対して深さ方向の畳み込み処理を行い、こうして4枚の出力特徴画像が並列に生成される。レイヤ2の畳み込み処理は、1ステップで完了する。
図5(B)~(E)はレイヤ3の処理を表す。ステップS103では深さ方向の畳み込み処理を行わないと判断され、処理はステップS105に進む。その後、4枚の入力特徴画像が、1枚ずつ、共通の入力特徴画像として複数の畳み込みサブユニット410に並列に入力される。畳み込みサブユニット410のそれぞれは、順次入力される4枚の入力特徴画像に対して畳み込み処理を行って処理結果を蓄積することを繰り返し、こうして4枚の出力特徴画像が並列に生成される。すなわち、1つの畳み込みサブユニット410が、特徴画像(3,1)、特徴画像(3,2)、特徴画像(3,3)、及び特徴画像(3,4)に対する畳み込み処理を順次行い、処理結果を累積することを通して、特徴画像(4,1)が生成される。レイヤ3の畳み込み処理は4ステップで完了し、所要の処理時間及び計算量はレイヤ2の4倍となる。
以上では、処理並列度(畳み込みサブユニット410の数)と出力特徴画像の枚数が一致する場合について説明したが、処理並列度と出力特徴画像の枚数は異なっていてもよい。一例として、処理並列度より出力特徴画像の枚数の方が多い場合に、処理装置がPEnum個の畳み込みサブユニット410を有し、処理並列度(PEnum)より出力特徴画像の枚数の方が多い場合について説明する。まず、PEnum枚(例えば1枚目~PEnum枚目)の出力特徴画像を生成するようにステップS105~S111(又はステップS114~S118)の処理を行うことができる。その後、次のPEnum枚(例えばPEnum+1枚目~2×PEnum枚目)の出力特徴画像を生成するようにステップS105~S111(又はステップS114~S118)の処理を繰り返すことができる。このような繰り返し処理により、処理並列度より多い枚数の出力特徴画像を生成することができる。なお、特徴画像の枚数が処理並列度の倍数である場合について実施形態3以降で説明するが、特徴画像の枚数は処理並列度の倍数でなくてもよい。
以上のように、ステップS103で深さ方向の畳み込み処理を行うかどうかを判断することにより、通常の畳み込み処理と深さ方向の畳み込み処理との双方を効率的に処理することができる。特に、深さ方向の畳み込み処理を行う際に、複数の演算器を並列に使用可能なため、従来技術より短い時間で処理を終わらせることが可能となる。
[実施形態1の変形例]
CNN処理部305の構成は図4に示す構成に限られない。図10を参照して、CNN処理部305の別の構成例を説明する。この構成例においてCNN処理部305は、それぞれが複数の演算コア416のうちの1つに対応する、複数の特徴データ格納ユニット411を備える。上述のとおり、複数の演算コア416のそれぞれは、処理対象階層の1つのチャネルのデータと、処理対象階層に対応する係数と、を用いた積和演算を並列に行うことができる。この構成例に係るCNN処理部305は、演算コア416への入力を複数のソースから選択することができるマルチプレクサ(MUX)を備える。このようなMUXは、第1の処理と第2の処理とを切り替えることができる。MUXは、演算コア416とともに同じチップ上に設けられていてもよい。
図10には、PEnum個の畳み込みサブユニット410が示されている。図10に示すように、1つの畳み込みサブユニット1は、対応する特徴データ格納ユニット1、係数格納ユニット1、演算コア1、及び結果格納ユニット1を有している。ここで、演算コア1への入力データは、対応する特徴データ格納ユニット1から転送される。また、演算コア2~PEnumへの入力データは、特徴データ格納ユニット1、又は対応する特徴データ格納ユニット2~PEnumから入力され、入力元はMUX1001により切り替えられる。本変形例においてMUX1001は、ネットワークの構造に応じて、一部の演算コア416への特徴データの入力を選択することが可能である。
例えば、深さ方向の畳み込み処理を行わない第2の処理において、複数の特徴データ格納ユニット411のうちの1つの特徴データ格納ユニット411は、複数の演算コア416のそれぞれに、処理対象階層における共通の1つのチャネルのデータを供給する。すなわち、読み出し部405は、1個の特徴データを特徴データ格納ユニット1に転送し、PEnumセットの重み係数を係数格納ユニット1~PEnumに転送する。MUX1001を用いた入力選択の結果、PEnum個の演算コア416への入力が同じになり、共通の特徴データが特徴データ格納ユニット1から演算コア1~PEnumへと転送される。それぞれの演算コア416は、同じ特徴データと異なる重み係数とを用いて積和演算を行い、PEnum個の畳み込み処理の結果を算出する。
一方で、深さ方向の畳み込み処理を行う第1の処理において、複数の特徴データ格納ユニット411のそれぞれは、対応する演算コア416に、処理対象階層における1つのチャネルのデータを供給する。すなわち、読み出し部405は異なる特徴データを特徴データユニット1~PEnumに転送し、PEnumセットの重み係数を係数格納ユニット1~PEnumに転送する。MUX1001を用いた入力選択の結果、PEnum個の演算コア416への入力は異なるようになり、異なる特徴データが特徴データ格納ユニット1~PEnumから演算コア1~PEnumへと転送される。それぞれの演算コア416は、異なる特徴データと異なる重み係数とを用いて積和演算を行い、PEnum個の畳み込み処理の結果を算出する。
[実施形態2]
実施形態1では、深さ方向の畳み込み処理を行わない場合に、共通の入力特徴画像が複数の畳み込みサブユニット410に並列に入力された。実施形態2では、深さ方向の畳み込み処理を行わない場合に、1枚の出力特徴画像を並列処理により生成するように、互いに異なる入力特徴画像が複数の畳み込みサブユニット410に並列に入力される。以下では、実施形態1とは異なる構成について説明する。実施形態1と同様の構成には同じ参照符号が付されており、説明は省略される。
図7の下側は、実施形態2に係る処理装置である、CNN処理部305の構成を示す。本実施形態に係る処理装置は、複数の畳み込みサブユニット410のそれぞれによる演算結果を累積する総和計算ユニット701をさらに有している。総和計算ユニット701は、複数枚の入力特徴画像に対する畳み込み処理の結果の総和を計算することができる。総和計算ユニット701が、並列して生成された畳み込み処理の結果を累計する構成を有することにより、出力特徴画像の生成を並列に行うことができる。
読み出し部405は実施形態1と同様に、ネットワーク構造に応じて、式(1)に従う畳み込み処理を行うか、式(2)に従う深さ方向の畳み込み処理を行うかを選択するが、枠702に示されるように処理順序は実施形態1とは異なっている。
総和計算ユニット701は、複数の畳み込みサブユニット410のそれぞれによる演算結果を累積する。また、総和計算ユニット701は、処理対象階層における処理を特定する情報に応じて、第1の処理を行うか、第2の処理を行うか、を選択する。第1の処理では、複数の畳み込みサブユニット410のそれぞれによる演算結果が処理対象階層の次の階層におけるそれぞれのチャネルに対応する演算結果として出力される。式(2)に従う深さ方向の畳み込み処理を行う場合には第1の処理が選択され、総和計算ユニット701は、複数の畳み込みサブユニット410のそれぞれによる演算結果を処理対象階層の次の階層におけるそれぞれの特徴画像に対応するデータとして出力する。また、第2の処理においては、総和計算ユニット701により得られた演算結果が次の階層における1つのチャネルに対応する演算結果として出力される。式(1)に従う畳み込み処理を行う場合には第2の処理が選択され、総和計算ユニット701は複数の畳み込みサブユニット410のそれぞれによる演算結果を累積し、累積結果を次の階層における1つの特徴画像に対応するデータとして出力する。
本実施形態におけるCNN処理部305が行う処理の流れを、図6のフローチャートを参照して説明する。ステップS101~S103は実施形態1と同様に行われる。
ステップS105も実施形態1と同様に行われる。ステップS602で制御部401は出力特徴画像のループを開始する。最初のループにおいては、1枚目の出力特徴画像を処理対象として用いる処理が行われる。後のループにおいては、次の出力特徴画像(2枚目以降)を用いた処理が行われる。
ステップS107で、制御部401は、一部の入力特徴画像及び一部の重み係数を、保持部402から読み出して特徴データ保持部403及び係数保持部404に転送する。本実施形態で深さ方向の畳み込み処理を行わない場合、ステップS108では、複数枚の入力特徴画像と、各入力特徴画像に対応する複数セットの重み係数が用いられる。このため、制御部401は、ステップS108で処理対象となる複数枚の入力特徴画像を特徴データ保持部403に転送することができる。また、制御部401は、複数セットの重み係数を、係数保持部404に転送することができる。実施形態1とは異なり、転送される入力特徴画像の枚数はステップS103での選択結果により変化しない。
ステップS108で、畳み込み処理部406は、畳み込み処理に用いるデータが異なることを除き、実施形態1と同様に、特徴データ保持部403に保持されている入力特徴画像及び係数保持部404に保持されている重み係数を用いて、畳み込み処理を行う。本実施形態においては、1つのチャネルのデータが対応する1つの畳み込みサブユニット410に入力されるように、特徴データ保持部403に格納された処理対象階層における複数のチャネルのデータが複数の畳み込みサブユニット410に並列に入力される。このように、複数の畳み込みサブユニット410のそれぞれには、互いに異なる入力特徴画像が入力される。また、複数の畳み込みサブユニット410のそれぞれには、互いに異なる重み係数を入力することができる。このように、それぞれの畳み込みサブユニット410は、互いに異なる入力特徴画像に対して、互いに異なる重み係数を用いた畳み込み処理を並列に行うことができる。
本実施形態のステップS108では、さらに総和計算ユニット701が、複数の畳み込みサブユニット410のそれぞれから出力された、入力特徴画像と重み係数とを用いた畳み込み処理結果を、加算しながら累積する。このように、総和計算ユニット701は、複数の入力特徴画像のそれぞれに対する畳み込み処理の結果が累積されたデータを生成することができる。こうして生成されたデータは、複数の入力特徴画像に対する、チャネル(深さ)方向への次元を有するフィルタを用いた畳み込み処理(例えば点方向の畳み込み処理、又は3×3×3フィルタを用いた三次元畳み込み処理)の結果に相当する。ステップS103での選択結果により、総和計算ユニット701が畳み込み処理結果の総和を計算して出力するか否かが決定される。
ステップS605で、制御部401は、出力特徴画像のループの終了判定をする。全ての出力特徴画像に対応する畳み込み処理の結果が生成されていない場合、処理はステップS107に戻り、次の出力特徴画像を生成するための畳み込み処理が行われる。全ての出力特徴画像に対応する畳み込み処理の結果が生成されている場合、処理はステップS110に進む。
ステップS110で、後処理部407は、実施形態1と同様に、総和計算ユニット701が生成した畳み込み処理の結果に基づいて出力特徴画像を生成する。ステップS111及びS113は実施形態1と同様に行われる。
深さ方向の畳み込み処理を行う場合に行われるステップS114~S118の処理は、実施形態1と同様である。上記のように、ステップS116において総和計算ユニット701は、畳み込み処理の結果の総和を計算せず、複数の畳み込みサブユニット410のそれぞれによる演算結果を処理対象階層の次の階層におけるそれぞれの特徴画像に対応するデータとして出力する。
(畳み込み処理の例)
本実施形態の構成によっても、複数枚の特徴画像を並列に処理することができる。以下に、図6のフローチャートに従う処理について、図9に示す例に従ってさらに説明する。図8は、図5と同様に、図2に示す2つの階層(レイヤ2及びレイヤ3)の処理を行う様子を示す。
図8(A)はレイヤ2の処理を表す。ここでは、実施形態1と同様に深さ方向の畳み込み処理が行われる。
図8(B)~(E)はレイヤ3の処理を表す。ステップS103では深さ方向の畳み込み処理を行わないと判断され、処理はステップS105に進む。図8(B)では、4枚の入力特徴画像が、1枚ずつ、複数の畳み込みサブユニット410に並列に入力される。畳み込みサブユニット410のそれぞれが入力された入力特徴画像に対して畳み込み処理を行い、総和計算ユニット701が畳み込み処理結果の総和を計算することにより、並列処理により1枚の出力特徴画像が生成される。すなわち、畳み込みサブユニット410のそれぞれが、特徴画像(3,1)、特徴画像(3,2)、特徴画像(3,3)、又は特徴画像(3,4)に対する畳み込み処理を並列に行い、処理結果を累積することを通して、特徴画像(4,1)が生成される。同様の処理を異なる重み係数を用いて行うことにより、図8(C)~(E)に示すように、特徴画像(4,2)、特徴画像(4,3)、及び特徴画像(4,4)が順次生成される。レイヤ3の畳み込み処理は4ステップで完了し、所要の処理時間及び計算量はレイヤ2の4倍となる。なお、入力特徴画像が4枚以上ある場合、複数の畳み込みサブユニット410に対して、4枚以上の入力特徴画像を並列に入力することができる。
以上では、処理並列度(畳み込みサブユニット410の数)と入力特徴画像の枚数が一致する場合について説明したが、処理並列度と入力特徴画像の枚数は異なっていてもよい。一例として、処理並列度より入力特徴画像の枚数の方が多い場合に、処理装置がPEnum個の畳み込みサブユニット410を有し、処理並列度(PEnum)より出力特徴画像の枚数の方が多い場合について説明する。式(1)に従う畳み込み処理を行う場合には、まずPEnum枚(例えば1枚目~PEnum枚目)の入力特徴画像を用いた、それぞれの出力特徴画像に対応する畳み込み処理の結果を生成するように、ステップS602~S605の処理を行うことができる。その後、次のPEnum枚(例えばPEnum+1枚目~2×PEnum枚目)の入力特徴画像を用いた、それぞれの出力特徴画像に対応する畳み込み処理の結果を生成するように、ステップS602~S605の処理を繰り返すことができる。このとき、1枚目~PEnum枚目の入力特徴画像を用いた畳み込み処理の結果と、PEnum+1枚目~2×PEnum枚目の入力特徴画像を用いた畳み込み処理の結果と、を累積することができる。このようにして、1枚目~2×PEnum枚目の入力特徴画像を用いた畳み込み処理の結果を得ることができる。このような繰り返し処理により、全ての入力特徴画像を用いた畳み込み処理の結果に基づく、出力特徴画像を得ることができる。式(2)に従う畳み込み処理を行う場合は、実施形態1と同様に行うことができる。なお、特徴画像の枚数は処理並列度の倍数であってもよいし、処理並列度の倍数でなくてもよい。
以上のように、ステップS103で深さ方向の畳み込み処理を行うかどうかを判断することにより、通常の畳み込み処理と深さ方向の畳み込み処理との双方を効率的に処理することができる。特に、深さ方向の畳み込み処理を行う際に、複数の演算器を並列に使用可能なため、従来技術より短い時間で処理を終わらせることが可能となる。
[実施形態2の変形例]
CNN処理部305の構成は図6に示す構成に限られない。図11を参照して、CNN処理部305の別の構成例を説明する。この構成例においてCNN処理部305は、それぞれが複数の演算コア416のうちの1つに対応する、複数の結果格納ユニット415を備える。上述のとおり、複数の演算コア416のそれぞれは、処理対象階層の1つのチャネルのデータと、処理対象階層に対応する係数と、を用いた積和演算を並列に行うことができる。この構成例に係るCNN処理部305は、複数の演算コア416を用いて得られた複数の出力のうち1つを選択することができるマルチプレクサ(MUX)を備える。このようなMUXは、第1の処理と第2の処理とを切り替えることができる。MUXは、演算コア416とともに同じチップ上に設けられていてもよい。
図11には、PEnum個の畳み込みサブユニット410が示されている。PEnum個の畳み込みサブユニットは、それぞれ対応する特徴データ格納ユニット、係数格納ユニット、演算コア、及び結果格納ユニットを有している。読み出し部405は、互いに異なる特徴データを特徴データ格納ユニット1~PEnumに転送し、互いに異なる重み係数を係数格納ユニット1~PEnumに転送することができる。演算コア1~PEnumへの入力データは、対応する特徴データ格納ユニット1~PEnumから転送される。この場合、PEnum個の演算コア416のそれぞれは、入力された特徴データと対応する重み係数とを用いて畳み込み処理の結果を算出し、こうしてPEnum個の畳み込み処理の結果が得られる。総和計算ユニット701は、PEnum個の畳み込み処理の結果を足し合わせる。
本変形例においてMUX1101は、ネットワークの構造に応じて、結果格納ユニット1への入力を選択することが可能である。具体的には、演算コア1からの出力と、複数の演算コア416からの出力に基づく総和計算ユニット701からの出力と、から選択された出力が、結果格納ユニット1へと入力される。
例えば、深さ方向の畳み込み処理を行わない第2の処理において、複数の演算コア416のそれぞれは、総和計算ユニット701に演算結果を出力し、総和計算ユニット701は、積算の結果を複数の結果格納ユニット415のうちの1つに出力する。すなわち、MUX1101を用いた入力選択の結果、総和計算ユニット701によって足し合わせられたPEnum個の畳み込み処理の結果が、処理結果格納ユニット1に入力される。この場合、結果格納ユニット2~PEnumは使用されない。
一方で、深さ方向の畳み込み処理を行う第1の処理において、複数の演算コア416のそれぞれは、対応する結果格納ユニット415に演算結果を出力する。すなわち、MUX1101を用いた入力選択の結果、PEnum個の畳み込み処理の結果のそれぞれが、結果格納ユニット1~PEnumに入力される。
[実施形態3]
上述の実施形態において、図1又は図6に示される各ステップは順番に処理された。しかしながら、パイプライン処理を行うことができるハードウェアを用いることにより、パイプライン処理により各実施形態に係る処理を行ってもよい。以下では、実施形態1に係る処理をパイプライン処理を用いて行う場合について、図12を参照して説明する。以下では、PEnum枚の出力特徴画像を並列に生成することができるハードウェアを用いる場合について説明する。また、簡略化のために入力特徴画像の枚数OC=2PEnumである場合について説明するが、入力特徴画像の数は特に限定されない。
図12(A)は、深さ方向の畳み込み処理を行わない場合の例を示す。この例において、入力特徴画像はIC枚であり、出力特徴画像はOC枚である。0サイクルからTサイクルまでの時間では、1枚目の入力特徴画像と、畳み込み処理に用いられる重み係数と、が転送される。Tサイクルから2Tサイクルまでの時間では、2枚目の入力特徴画像と畳み込み処理に用いられる重み係数とが転送されるとともに、1枚目の入力特徴画像に対する重み係数の乗算が行われる。2Tサイクルから3Tサイクルまでの時間では、3枚目の入力特徴画像と畳み込み処理に用いられる重み係数とが転送され、2枚目の入力特徴画像に対する重み係数の乗算が行われ、1枚目の入力特徴画像に対する乗算結果の累積が行われる。3Tサイクルから(IC+2)×Tサイクルまでの時間で同じような処理が繰り返され、PEnum個の畳み込み処理の結果が得られる。(IC+2)×Tサイクルから(IC+3)×Tサイクルまでの時間では、IC枚の入力特徴画像に対する畳み込み処理により得られたPEnum個の結果をそれぞれ用いた活性化処理が行われる。こうして、PEnum個の出力特徴画像(1枚目~(OC/2)枚目)の出力特徴画像が生成される。同様の処理をもう一度行うことにより、さらに(OC/2)+1枚目~OC枚目の出力特徴画像を得ることができる。
図12(B)は、深さ方向の畳み込み処理を行う場合の例を示す。この例において、入力特徴画像の枚数はIC枚、出力特徴画像の枚数はOC枚であり、IC=OC=2PEnumである。0サイクルからTサイクルまでの時間では、1枚目~PEnum枚目の入力特徴画像と畳み込み処理に用いられる重み係数とが転送される。Tサイクルから2Tサイクルまでの時間では、PEnum+1枚目~IC枚目の入力特徴画像と畳み込み処理に用いられる重み係数とが転送され、1枚目~PEnum枚目の入力特徴画像に対する重み係数の乗算が行われる。2Tサイクルから3Tサイクルまでの時間では、PEnum+1枚目~IC枚目の入力特徴画像に対する重み係数の乗算が行われ、1枚目~PEnum枚目の入力特徴画像に対する乗算結果の累積が行われる。3Tサイクルから4Tサイクルまでの時間では、PEnum+1枚目~IC枚目の入力特徴画像に対する乗算結果の累積が行われる。また、1枚目~PEnum枚目の入力特徴画像に対する畳み込み処理により得られたPEnum個の結果をそれぞれ用いた活性化処理が行われ、PEnum個の出力特徴画像(1枚目~IC/2)枚目)の出力特徴画像が生成される。4Tサイクルから5Tサイクルまでの時間では、PEnum+1枚目~IC枚目の入力特徴画像に対する畳み込み処理により得られたPEnum個の結果をそれぞれ用いた活性化処理が行われる。こうして、PEnum個の出力特徴画像(IC/2+1枚目~IC枚目)の出力特徴画像が生成される。
図5の例と同じように、深さ方向の畳み込み処理を行う場合の処理時間は、深さ方向の畳み込み処理を行わない場合より短くなっている。
[実施形態4]
上述の実施形態においては、特徴画像単位で畳み込み処理が行われた。例えば、実施形態1のステップS107では、特徴画像が特徴データ保持部403に転送された。しかしながら、データ転送及び畳み込み処理を特徴画像ごとに行う必要はない。例えば、ブロック単位の転送により特徴画像が複数回に分けて転送されてもよいし、畳み込み処理がブロック単位で行われてもよい。
ブロック単位の処理を行う場合に、ステップS107における保持部402へのアクセス時間に相当するデータ転送時間をTで表し、ステップS108における畳み込み処理の時間をTで表す。深さ方向の畳み込み処理を行わない場合、T及びTは以下の式(4)及び(5)で表すことができる。
Figure 2022022876000004
また、深さ方向の畳み込み処理を行う場合、ICとOCは同じ値になり、T及びTは以下の式(6)及び(7)で表すことができる。
Figure 2022022876000005
式(4)~(7)において、各パラメータの意味は以下のとおりである。畳み込み処理で用いるフィルタの重み係数のサイズ、及び特徴画像の画素データのサイズは、ネットワーク構造情報に示される階層の情報等によって異なる可能性がある。このため、ブロックサイズ及びフィルタサイズ等を、個数ではなくビットを用いて表現している。
IC:入力特徴画像の枚数
OC:出力特徴画像の枚数
IN×IM:入力ブロックサイズ(ビット)
ON×OM:出力ブロックサイズ(ビット)
X×Y:フィルタサイズ(ビット)
BWFM:特徴画像の転送帯域(ビット/時間)
BW:重み係数の転送帯域(ビット/時間)
MACPE:畳み込み処理の演算器の積和演算処理の並列度
PEnum:畳み込み処理の演算器の個数
はフィルタサイズに比例する。パイプライン処理を行う場合、1サイクルの処理時間はTとTの最大値となる。
図13は、ブロック単位の処理のための疑似コードを示す。ループの構成は図1のフローチャートと同様だが、ブロック処理のためのループが追加されている。なお、処理並列度より出力特徴画像の枚数の方が多い場合には、まずブロック単位の処理により、PEnum枚(1枚目~PEnum枚目)の出力特徴画像を生成することができる。そして、さらなるブロック単位の処理により、PEnum枚(PEnum+1枚目以降)の出力特徴画像を生成することを繰り返すことができる。また、別の方法として、全ての出力特徴画像の1つ目のブロックの特徴データを生成した後で、全ての出力特徴画像の2つ目以降のブロックの特徴データを生成してもよい。
図14は、ブロック単位の処理を行うために利用可能なCNN処理部305の構成例を示す。特徴データ保持部1401は、入力特徴画像と出力特徴画像とを保持できる。このような構成において制御部401は、後処理部407による処理結果を特徴データ保持部403に保持し、これを次の階層の特徴画像として扱う。最初の階層の処理を行う際には、制御部401は一部の入力特徴画像を保持部402から読み出し、特徴データ保持部403に転送する。一方で、2番目以降の階層の処理を行う際には、特徴データ保持部403に保持されているデータが入力特徴画像として用いられる。本構成例に係るCNN処理部305は、特徴データ保持部1401以外は実施形態1に係るCNN処理部305と同様であるが、特徴データ及び畳み込み処理の結果等はブロック単位で転送される。
このような構成において深さ方向の畳み込み処理を行わないと判定された場合、複数個のブロックの入力特徴画像を用いて1個のブロックの出力特徴画像が生成される。一方で、深さ方向の畳み込み処理を行う場合、1個のブロックの入力特徴画像を用いて1個のブロックの出力特徴画像が生成される。
このようなブロック単位の処理を行う構成は、特徴データを部分的に処理することができ、柔軟性が高いため、様々なサイズの入力画像を処理することができる。このような場合においても、深さ方向の畳み込み処理を高い効率で行うことができる。
[その他の実施形態]
上述の実施形態では、階層毎に畳み込み処理の種類及びフィルタサイズが異なる例について説明した。一方で、1つの階層において用いられるフィルタ又は特徴データが複数のグループに分類され、グループ毎に畳み込み処理の種類及びフィルタサイズが異なっていてもよい。このような場合も、上述の実施形態に係る処理装置は、グループ毎に処理を切り替えることができる。すなわち、上述の実施形態において、処理対象階層における積和演算で用いられる特徴データ及びフィルタの重み係数が複数のグループに分類されていてもよい。この場合、処理対象階層の処理において、処理しようとするグループごとに第1の処理を行うか第2の処理を行うかを選択することができる。
上述の実施形態では、3×3のサイズを有するフィルタを用いて深さ方向の畳み込み処理を行う例について説明した。しかしながら、上述の実施形態に係る処理装置は、同じ構成のハードウェアを用いて、異なるサイズを有するフィルタを用いた畳み込み処理を行うことができる。このため、用いられるフィルタのサイズは3×3に限定されず、5×5又は7×7であってもよい。また、用いられるフィルタは、拡張畳み込み(Dilated Convolution)処理用のゼロ係数が含まれているフィルタであってもよい。すなわち、畳み込み処理部406は、拡張畳み込み処理に用いるフィルタの重み係数を用いて積和演算を行うことができる。畳み込みサブユニット410は、供給された特徴データ及び係数データを1つずつ積和演算する構成を有しており、任意のサイズのフィルタを用いた畳み込み処理が可能である。上述の実施形態は、任意のサイズのフィルタを用いた畳み込み処理と、深さ方向の畳み込み処理と、の組み合わせ等にも対応できる。
図15は、ネットワークと畳み込み処理との関係の例を示す。深さ方向の畳み込み処理を行うレイヤ1501の処理では、枠420の左側のモードが選択され、拡張畳み込み処理用のフィルタを用いて深さ方向の畳み込み処理が並列に行われる。レイヤ1501で用いられるフィルタは、3×3のフィルタが拡張されたものであり、5×5のサイズを有している。活性化処理を行うレイヤ1502では、ReLU等の処理が行われる。点方向の畳み込み処理を行うレイヤ1503の処理では、深さ方向の畳み込み処理が行われないため、枠420の右側のモードが選択され、1×1のフィルタを用いた畳み込み処理が行われる。
実施形態1では、1つの入力特徴画像を同時に処理する例について説明したが、複数の入力特徴画像が同時に処理されてもよい。例えば、一部の畳み込みサブユニット410が特徴画像(3,1)を用いた処理を行っている間に、他の畳み込みサブユニット410が特徴画像(3,2)を用いた処理を行ってもよい。また、実施形態2では、1つの出力特徴画像を並列処理により生成する例について説明したが、複数の出力特徴画像が同時に生成されてもよい。例えば、一部の畳み込みサブユニット410が特徴画像(4,1)を生成している間に、他の畳み込みサブユニット410が特徴画像(4,2)を生成してもよい。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
401:制御部、402:保持部、403:特徴データ保持部、404:係数保持部、405:読み出し部、406:畳み込み処理部、407:後処理部、408:結果保持部、410:畳み込みサブユニット、411:特徴データ格納ユニット、412:係数格納ユニット、413:乗算器、414:加算器、415:結果格納ユニット、416:演算コア

Claims (18)

  1. 複数の階層を有する畳み込みニューラルネットワークにおける演算を行う処理装置であって、
    前記複数の階層のうち処理対象階層における複数のチャネルのデータの少なくとも一部を保持するデータ保持手段と、
    それぞれが、前記処理対象階層の1つのチャネルのデータと、前記処理対象階層に対応する係数と、を用いた積和演算を並列に行う、複数の演算手段と、
    前記処理対象階層における処理を特定する情報に基づいて、前記データ保持手段に格納された前記処理対象階層における1つのチャネルのデータを、前記複数の演算手段のうちの1つの演算手段に入力する第1の処理を行うか、前記複数の演算手段のそれぞれに並列に入力する第2の処理を行うか、を選択する選択手段と、
    を備えることを特徴とする処理装置。
  2. 前記第2の処理では、前記処理対象階層における前記複数のチャネルのそれぞれ1つについて、該1つのチャネルのデータを前記データ保持手段から前記複数の演算手段に並列に入力することを繰り返すことを特徴とする、請求項1に記載の処理装置。
  3. 前記第2の処理において、前記複数の演算手段のそれぞれは、順次入力された前記処理対象階層におけるそれぞれのチャネルのデータを用いて、前記処理対象階層の次の階層における1つのチャネルに対応する演算結果を出力することを特徴とする、請求項2に記載の処理装置。
  4. それぞれが前記複数の演算手段のうちの異なる1つに対応する、複数のデータ格納手段をさらに備え、
    前記第1の処理において、前記複数のデータ格納手段のそれぞれは、対応する前記演算手段に、前記処理対象階層における前記1つのチャネルのデータを供給し、
    前記第2の処理において、前記複数のデータ格納手段のうちの1つのデータ格納手段は、前記複数の演算手段のそれぞれに、前記処理対象階層における共通の前記1つのチャネルのデータを供給する
    ことを特徴とする、請求項1から3のいずれか1項に記載の処理装置。
  5. 複数の階層を有する畳み込みニューラルネットワークにおける演算を行う処理装置であって、
    前記複数の階層のうち処理対象階層における複数のチャネルのデータの少なくとも一部を保持するデータ保持手段と、
    それぞれが、前記処理対象階層の1つのチャネルのデータと、前記処理対象階層に対応する係数と、を用いた積和演算を並列に行う、複数の演算手段と、
    前記複数の演算手段のそれぞれによる演算結果を累積する累積手段と、
    前記処理対象階層における処理を特定する情報に基づいて、前記複数の演算手段のそれぞれによる演算結果を前記処理対象階層の次の階層におけるそれぞれのチャネルに対応する演算結果として出力する第1の処理を行うか、前記累積手段により得られた演算結果を前記次の階層における1つのチャネルに対応する演算結果として出力する第2の処理を行うか、を選択する選択手段と、
    を備えることを特徴とする処理装置。
  6. 前記第2の処理では、1つのチャネルのデータが対応する1つの前記演算手段に入力されるように、前記データ保持手段に格納された前記処理対象階層における複数のチャネルのデータが前記複数の演算手段に並列に入力される、請求項5に記載の処理装置。
  7. それぞれが前記複数の演算手段のうちの1つに対応する、複数の結果格納手段をさらに備え、
    前記第1の処理において、前記複数の演算手段のそれぞれは、対応する前記結果格納手段に前記演算結果を出力し、
    前記第2の処理において、前記複数の演算手段のそれぞれは、前記累積手段に前記演算結果を出力し、前記累積手段は、前記累積の結果を前記複数の結果格納手段のうちの1つに出力する
    ことを特徴とする、請求項5又は6に記載の処理装置。
  8. 前記第1の処理では、1つのチャネルのデータが対応する1つの前記演算手段に入力されるように、前記データ保持手段に格納された前記処理対象階層における複数のチャネルのデータが前記複数の演算手段に並列に入力される、請求項1から7のいずれか1項に記載の処理装置。
  9. 前記第1の処理において、前記複数の演算手段のそれぞれは、前記処理対象階層における1つのチャネルのデータを用いて、前記処理対象階層の次の階層における1つのチャネルに対応する演算結果を出力することを特徴とする、請求項1から8のいずれか1項に記載の処理装置。
  10. 前記処理対象階層における積和演算に用いる係数の少なくとも一部を保持する係数保持手段と、
    前記データ保持手段及び前記係数保持手段から前記複数の演算手段へのデータ供給を制御する供給制御手段と、をさらに備え、
    前記複数の演算手段のそれぞれは、入力された1つの前記データと1つの前記係数との積を算出し、算出された積を累計することにより、前記積和演算を行う
    ことを特徴とする、請求項1から9のいずれか1項に記載の処理装置。
  11. 前記処理対象階層における積和演算で用いられる前記データ及び前記係数が複数のグループに分類されており、
    前記選択手段は、積和演算に用いる前記データ及び前記係数の前記グループに基づいて、前記第1の処理を行うか、前記第2の処理を行うか、を選択することを特徴とする、請求項1から10のいずれか1項に記載の処理装置。
  12. 前記係数は畳み込み処理に用いるフィルタの重み係数であり、前記フィルタのサイズは前記階層ごとに設定可能であることを特徴とする、請求項1から11のいずれか1項に記載の処理装置。
  13. 前記係数は拡張畳み込み処理に用いるフィルタの重み係数であることを特徴とする、請求項1から11のいずれか1項に記載の処理装置。
  14. 前記データ保持手段はメモリであり、
    前記演算手段は乗算器と加算器とを備える演算コアを備え、
    前記メモリと前記演算コアとが設けられたチップを備えることを特徴とする、請求項1から11のいずれか1項に記載の処理装置。
  15. 前記選択手段は、
    前記演算コアへと入力されるデータの前記メモリ内のアドレスを指定する、前記チップに設けられたアドレス発行部を備える
    ことを特徴とする、請求項14に記載の処理装置。
  16. 前記選択手段は、
    前記演算コアへの入力を複数のソースから選択する、若しくは複数の前記演算コアからの出力のうち1つの出力を選択する、前記チップに設けられたマルチプレクサを備える
    ことを特徴とする、請求項14に記載の処理装置。
  17. 前記畳み込みニューラルネットワークに従う演算は処理対象画像に対して行われ、
    前記処理対象階層におけるデータは、前記畳み込みニューラルネットワークに従う演算の過程で得られる特徴画像である
    ことを特徴とする、請求項1から16のいずれか1項に記載の処理装置。
  18. 前記処理対象画像に対して前記畳み込みニューラルネットワークに従う演算を行うように、前記複数の演算手段を制御する制御手段と、
    前記処理対象画像に対して前記畳み込みニューラルネットワークに従う演算を行うことにより得られた処理結果に基づいて、前記処理対象画像に対する画像処理を行う画像処理手段と、
    をさらに備えることを特徴とする、請求項17に記載の処理装置。
JP2020118737A 2020-07-09 2020-07-09 畳み込みニューラルネットワーク処理装置 Pending JP2022022876A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020118737A JP2022022876A (ja) 2020-07-09 2020-07-09 畳み込みニューラルネットワーク処理装置
US17/353,959 US11900577B2 (en) 2020-07-09 2021-06-22 Processing apparatus for performing processing using a convolutional neural network
EP21180760.7A EP3940603A1 (en) 2020-07-09 2021-06-22 Processing apparatus for performing pointwise convolutions and depthwise convolutions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020118737A JP2022022876A (ja) 2020-07-09 2020-07-09 畳み込みニューラルネットワーク処理装置

Publications (2)

Publication Number Publication Date
JP2022022876A true JP2022022876A (ja) 2022-02-07
JP2022022876A5 JP2022022876A5 (ja) 2023-07-12

Family

ID=76553571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020118737A Pending JP2022022876A (ja) 2020-07-09 2020-07-09 畳み込みニューラルネットワーク処理装置

Country Status (3)

Country Link
US (1) US11900577B2 (ja)
EP (1) EP3940603A1 (ja)
JP (1) JP2022022876A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7165018B2 (ja) * 2018-10-03 2022-11-02 キヤノン株式会社 情報処理装置、情報処理方法
CN115204355A (zh) * 2021-04-14 2022-10-18 蒂普爱可斯有限公司 能够重新使用数据的神经处理单元及其方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4891197B2 (ja) 2007-11-01 2012-03-07 キヤノン株式会社 画像処理装置および画像処理方法
JP6102645B2 (ja) * 2013-09-11 2017-03-29 富士通株式会社 積和演算回路及び積和演算システム
US10268881B2 (en) 2015-09-30 2019-04-23 Canon Kabushiki Kaisha Pattern classifying apparatus, information processing apparatus, pattern classifying method, and non-transitory computer readable storage medium
JP6700712B2 (ja) 2015-10-21 2020-05-27 キヤノン株式会社 畳み込み演算装置
GB201607713D0 (en) 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
US10360470B2 (en) 2016-10-10 2019-07-23 Gyrfalcon Technology Inc. Implementation of MobileNet in a CNN based digital integrated circuit
CN110050267B (zh) 2016-12-09 2023-05-26 北京地平线信息技术有限公司 用于数据管理的系统和方法
EP3564866A4 (en) * 2016-12-28 2020-03-25 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURE
JP2018156266A (ja) * 2017-03-16 2018-10-04 富士通株式会社 演算器および演算器の制御方法
JP7053995B2 (ja) * 2018-04-16 2022-04-13 富士通株式会社 最適化装置及び最適化装置の制御方法
JP7345262B2 (ja) 2019-03-11 2023-09-15 キヤノン株式会社 データ圧縮装置、データ処理装置、データ圧縮方法、プログラム、及び学習済みモデル
CN113811900A (zh) * 2019-05-10 2021-12-17 索尼集团公司 算术运算装置和算术运算系统
JP7402623B2 (ja) * 2019-06-17 2023-12-21 キヤノン株式会社 フィルタ処理装置及びその制御方法
JP7008221B2 (ja) * 2019-12-27 2022-01-25 パナソニックIpマネジメント株式会社 ニューラルネットワーク最適化方法、ニューラルネットワーク最適化装置およびプログラム
JP2021144428A (ja) * 2020-03-11 2021-09-24 キヤノン株式会社 データ処理装置、データ処理方法
US11954830B2 (en) * 2020-12-17 2024-04-09 Nvidia Corporation High dynamic range support for legacy applications
CN114677258A (zh) * 2020-12-24 2022-06-28 英特尔公司 用于视觉渲染和合成的空间稀疏卷积模块的方法和设备
GB2602997B (en) * 2021-01-25 2023-03-01 Imagination Tech Ltd Implementing dilated convolution in hardware
CN115204355A (zh) * 2021-04-14 2022-10-18 蒂普爱可斯有限公司 能够重新使用数据的神经处理单元及其方法

Also Published As

Publication number Publication date
EP3940603A1 (en) 2022-01-19
US11900577B2 (en) 2024-02-13
US20220012856A1 (en) 2022-01-13

Similar Documents

Publication Publication Date Title
US10679127B2 (en) Performing average pooling in hardware
US10929746B2 (en) Low-power hardware acceleration method and system for convolution neural network computation
JP2021521515A (ja) 演算を加速するための方法および加速器装置
JP2021521516A (ja) 演算を加速するための加速器及びシステム
JPWO2019168084A1 (ja) 推論装置、畳み込み演算実行方法及びプログラム
JP7414930B2 (ja) 情報処理装置、情報処理方法
CN109670574B (zh) 用于同时执行激活和卷积运算的方法和装置及其学习方法和学习装置
US10579334B2 (en) Block floating point computations using shared exponents
JP2022022876A (ja) 畳み込みニューラルネットワーク処理装置
JP7402623B2 (ja) フィルタ処理装置及びその制御方法
JP2017068577A (ja) 演算装置、方法及びプログラム
Memik et al. Analysis and FPGA implementation of image restoration under resource constraints
JP2023518717A (ja) 機械学習アクセラレータの電力削減
JP2021144428A (ja) データ処理装置、データ処理方法
JP2023073824A (ja) 演算装置、情報処理方法、及びプログラム
KR20200143274A (ko) 데이터 처리장치 및 그 제어 방법
US20220309778A1 (en) Image processing apparatus, image processing method, and non-transitory computer-readable storage medium
JP2024004400A (ja) データ処理装置及びその方法
WO2023006170A1 (en) Devices and methods for providing computationally efficient neural networks
KR20230059718A (ko) 심층 신경망 연산을 수행하는 방법 및 전자 장치

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230704

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240405