JP2023073824A - 演算装置、情報処理方法、及びプログラム - Google Patents
演算装置、情報処理方法、及びプログラム Download PDFInfo
- Publication number
- JP2023073824A JP2023073824A JP2021186520A JP2021186520A JP2023073824A JP 2023073824 A JP2023073824 A JP 2023073824A JP 2021186520 A JP2021186520 A JP 2021186520A JP 2021186520 A JP2021186520 A JP 2021186520A JP 2023073824 A JP2023073824 A JP 2023073824A
- Authority
- JP
- Japan
- Prior art keywords
- data
- processing
- reference range
- sum
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
Abstract
【課題】ゼロ値を有するデータ列に対する畳み込み演算処理の効率を向上させ、処理に要する消費電力又は処理時間を削減する。【解決手段】処理対象ブロック内のデータ配列を保持する。フィルタ処理に用いるフィルタの重み係数を保持する。処理対象ブロックに対応して設定された、処理対象ブロック内の参照範囲内のデータがゼロ値であるか否かを判定する。処理対象ブロック内の複数の位置のそれぞれにおけるデータと重み係数との畳み込み演算結果を生成する。判定結果に応じて、畳み込み演算結果を生成する際に、データと重み係数との積和演算の少なくとも一部を行うか否かを制御する。【選択図】図1
Description
本発明は演算装置、情報処理方法、及びプログラムに関し、特に畳み込みニューラルネットワークを用いた演算処理に関する。
畳み込みニューラルネットワーク(Convolutional Neural Networks, CNN)は深層学習に用いられている。畳み込みニューラルネットワークの各階層では、畳み込み演算と活性化処理とが行われることが多い。畳み込み演算結果が負の値の場合、活性化処理結果はゼロになるため、各階層で得られる特徴マップにはゼロ値が多く含まれている。特許文献1は、n×nサイズのフィルタとn×nサイズの部分領域との畳み込み演算を行う際に、部分領域におけるゼロ値の割合が大きい場合には処理をスキップすることで、消費電力を低減することを提案している。また、特許文献2は、畳み込み演算において、フィルタの重み係数又はデータ値がゼロである場合に積演算を省略することを開示している。特許文献3も、畳み込み演算において、特徴画像の画素データがゼロである場合に積演算を省略することを開示している。
特許文献1の方法では、部分領域をスライドしながらゼロ値の割合の判定を繰り返すため、判定に要する処理負荷が大きくなる可能性がある。また、特許文献2及び3の方法でも、特徴マップの画素ごとにゼロ値の判定を繰り返すため、判定に要する処理負荷が大きくなる可能性がある。
本発明は、ゼロ値を有するデータ配列に対する畳み込み演算処理の効率を向上させ、処理に要する消費電力又は処理時間を削減することを目的とする。
本発明の目的を達成するために、本発明の一実施形態に係る演算装置は以下の構成を備える。すなわち、所定サイズの処理対象ブロック内のデータ配列に対するフィルタ処理を行う演算装置であって、前記処理対象ブロック内のデータ配列を保持するデータ保持手段と、前記フィルタ処理に用いるフィルタの重み係数を保持する係数保持手段と、前記処理対象ブロックに対応して設定された、前記処理対象ブロック内の参照範囲内のデータがゼロ値であるか否かを判定する判定手段と、前記処理対象ブロック内の複数の位置のそれぞれにおけるデータと重み係数との畳み込み演算結果を生成する処理手段と、前記判定手段による判定結果に応じて、前記処理手段が、前記畳み込み演算結果を生成する際に、前記データと前記重み係数との積和演算の少なくとも一部を行うか否かを制御する制御手段と、を備えることを特徴とする。
本発明は、ゼロ値を有するデータ配列に対する畳み込み演算処理の効率を向上させ、処理に要する消費電力又は処理時間を削減することができる。
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
本発明の一実施形態に係る演算装置は、所定サイズの処理対象ブロック内のデータ配列に対するフィルタ処理を行うことができる。図3は、本発明の一実施形態に係る演算装置である、畳み込みニューラルネットワーク処理装置の一構成例を示すブロック図である。このような処理装置は、例えば、画像に対してニューラルネットワークを用いた処理を行うことができる。このような処理装置が行うことのできる処理の具体例としては、画像中の被写体の検出処理、画像中の被写体の識別処理、画像に対する領域分割処理等、画像に対する高解像度化処理等が挙げられる。このような処理は、例えば、画像をニューラルネットワークに入力することにより得られる特徴マップを用いて行うことができる。
入力部301は、ユーザからの指示、又はデータを受け付ける装置である。入力部301は、例えば、キーボード、ポインティング装置、又はボタン等であってもよい。
データ保存部302は画像データのようなデータを保存することができる。データ保存部302は、例えば、ハードディスク、フレキシブルディスク、CD-ROM、CD-R、DVD、メモリーカード、CFカード、スマートメディア、SDカード、メモリスティック、xDピクチャーカード、又はUSBメモリなどであってもよい。データ保存部302は、プログラム又はその他のデータを保存してもよい。なお、後述するRAM308の一部がデータ保存部302として用いられてもよい。
通信部303は、機器間の通信を行うためのインタフェース(I/F)である。処理装置300は、通信部303を介して、他の装置とデータを交換することができる。なお、処理装置300は、通信部303を介して接続された記憶装置を、仮想的なデータ保存部として、すなわちデータ保存部302として用いてもよい。
表示部304は、ユーザなどに対して情報を表示する装置である。表示部304は、例えば、画像処理前又は画像処理後の画像を表示すること、又はGUIなどのその他の画像を表示することができる。表示部304は、例えば、CRT又は液晶ディスプレイなどであってもよい。表示部304は、ケーブルなどで接続された、処理装置300の外部にある装置であってもよい。なお、入力部301及び表示部304が同一装置であってもよく、例えば、入力部301及び表示部304はタッチスクリーン装置であってもよい。この場合、タッチスクリーン上での入力は、入力部301への入力に相当する。
CNN処理部305は、後述する図1のフローチャートに従い、画像に対してニューラルネットワークを用いた処理(S101~S117)を行うことができる。CNN処理部305が行う処理には、畳み込み演算を用いたフィルタ処理が含まれている。CNN処理部305は、画像処理部309によってRAM308に保存された画像処理の結果に対して、ニューラルネットワークを用いた処理を行ってもよい。CNN処理部305は、処理結果をデータ保存部302(又はRAM308)に出力することができる。この処理結果は、CPU306による画像処理又は画像認識処理のような各種の処理のために用いることができる。もっとも、このようなCNN処理部305は、画像処理以外の用途で用いられてもよく、すなわち図3に示されるCNN処理部305以外の構成は、本発明にとって必須ではない。なお、CNN処理部305は、静止画像又は動画像に対してフィルタ処理を行うことができる。CNN処理部305は、例えば、動画像が含む複数のフレームのそれぞれに対してフィルタ処理を行うことができる。この場合、CPU306は、動画像に対する画像処理又は画像認識を行うことができる。
CPU306は、処理装置300全体の動作を制御する。また、CPU306は、CNN処理部305によって生成され、データ保存部302又はRAM308に保存されている処理結果に基づいて、画像処理又は画像認識処理のような各種の処理を行うことができる。CPU306は、これらの処理結果をRAM308に保存することができる。
ROM307及びRAM308は、CPU306による処理に必要なプログラム、データ、及び作業領域などを、CPU306に提供する。CPU306による処理に必要なプログラムはデータ保存部302又はROM307に格納されていてもよく、データ保存部302又はROM307からRAM308に読み込まれてもよい。また、データ処理装置300は通信部303を介してプログラムを受信してもよい。この場合、プログラムは、いったんデータ保存部302に記録された後にRAM308に読み込まれてもよいし、通信部303からRAM308に直接読み込まれてもよい。いずれの場合であっても、CPU306はRAM308に読み込まれたプログラムを実行することができる。
画像処理部309は、画像データに対する画像処理を行うことができる。例えば、画像処理部309は、CPU306からの指示に従って、データ保存部302に書き込まれている画像データを読み出し、画素値のレンジ調整を行い、処理結果をRAM308に書き込むことができる。
図3に示す処理装置300は、上記の各部を内部に有している。上記の各部は、互いにデータを送受信できるように接続されている。しかしながら、例えば入力部301、データ保存部302、及び表示部304を含む各部は、公知の通信方式に従う通信路で互いに接続されていてもよい。すなわち、一実施形態に係るデータ処理装置は、物理的に分かれている複数の装置によって構成されていてもよい。
また、図3に示す処理装置300は1つのCPU306を有しているが、複数のCPUを有していてもよい。さらに、処理装置300が有する各部(例えばCNN処理部305及び画像処理部309)のうちの少なくとも一部の機能が、CPU306がプログラムに従って動作することにより実現されてもよい。
処理装置300は、図3に示されていない様々な構成要素を有していてもよいが、その説明は省略する。
(ニューラルネットワークの構造例)
上記のとおり、CNN処理部305は、データ配列に対してフィルタを用いたフィルタ処理を行うことができる。また、CNN処理部305は、複数の階層を含むニューラルネットワークに従う処理を行うことができ、少なくとも1つの階層でこのようなフィルタ処理を行うことができる。フィルタ処理には、畳み込み演算が含まれ、畳み込み演算には複数回の積和演算が含まれる。なお、以下において、1回の積和演算は、1つのデータと1つのフィルタ係数との積演算及びこの積を累積する演算のセットのことを指す。また、1回の畳み込み演算は、特定のデータ配列(例えば特徴画像の局所領域)にフィルタを畳み込むことで1つの出力データを得る演算のことを指し、複数回の積和演算を含んでいる。以下では、特徴画像に対してフィルタ処理を行う場合について説明する。特徴画像は、各画素についての画素データをデータ配列として有している。
上記のとおり、CNN処理部305は、データ配列に対してフィルタを用いたフィルタ処理を行うことができる。また、CNN処理部305は、複数の階層を含むニューラルネットワークに従う処理を行うことができ、少なくとも1つの階層でこのようなフィルタ処理を行うことができる。フィルタ処理には、畳み込み演算が含まれ、畳み込み演算には複数回の積和演算が含まれる。なお、以下において、1回の積和演算は、1つのデータと1つのフィルタ係数との積演算及びこの積を累積する演算のセットのことを指す。また、1回の畳み込み演算は、特定のデータ配列(例えば特徴画像の局所領域)にフィルタを畳み込むことで1つの出力データを得る演算のことを指し、複数回の積和演算を含んでいる。以下では、特徴画像に対してフィルタ処理を行う場合について説明する。特徴画像は、各画素についての画素データをデータ配列として有している。
以下では、CNN処理部305が用いるニューラルネットワークの一例を説明する。ニューラルネットワークの一種であるCNNは、複数の階層(レイヤ)が階層的に接続された構造を有する。各階層は、複数枚の特徴画像を含んでいてもよい。以下では、前階層の特徴画像に対し、対応する処理を行うことで得られた特徴画像のことを、次階層の特徴画像と呼ぶ。なお、以下では特徴画像が2次元である場合について説明するが、特徴画像は1次元であってもよいし、3次元以上の高次の特徴画像であってもよい。
例えば、次階層の特徴画像は、前階層の特徴画像に対するフィルタ処理を用いて計算されてもよい。このフィルタ処理では、前階層に対応するフィルタ係数で構成されるフィルタを用いることができる。次階層の複数の特徴画像のそれぞれは、対応するフィルタを用いたフィルタ処理により生成することができる。また、次階層の1枚の特徴画像を計算するために、前階層の複数枚の特徴画像が用いられてもよい。例えば、前階層の複数枚の特徴画像のそれぞれに対して、対応するフィルタを用いたフィルタ処理を行い、得られた複数の処理結果に基づいて次階層の1枚の特徴画像を得ることができる。
例えば、フィルタ処理後の特徴画像(Oi,j(n))は、前階層の特徴画像(Ii,j(m))と、フィルタ係数(W0,0(m,n)~WX-1,Y-1(m,n))と、を用いて、式(1)に従って算出できる。ここで、i,jは特徴画像の座標を示す。また、x,yはフィルタの座標を示す。nは次階層の特徴画像の番号である。また、mは前階層の特徴画像の番号であり、前階層の特徴画像はIC枚である。フィルタ係数は、前階層の特徴画像ごとに、及び次階層の特徴画像ごとに、異なっており、1つの特徴画像の組み合わせについてX×Y個ある。
上記のように、次階層の1つの特徴画像の1つの画素データを計算するための畳み込み演算で行われる積和演算回数はM×X×Y回である。このように、フィルタは複数のフィルタ係数を有しており、フィルタ処理後の特徴画像の各画素の画素値は、前階層の特徴画像の対応する画素周辺の画素群の画素値と、フィルタが有するフィルタ係数と、の畳み込み演算により得られる。
このようなフィルタ処理により得られた特徴画像Oi,j(n)に対して、さらに活性化処理又はプーリング処理などの処理を行うことにより、次階層の特徴画像を算出することができる。活性化処理は、式(2)に従って行うことができる。式(2)において、f(・)はReLu(Rectified Linear Unit)の関数であり、変数xは入力データである。
式(2)に従う活性化処理を行う場合、畳み込み演算結果が負の値の場合には活性化処理結果はゼロとなる。この場合、前階層の特徴画像の対応する位置の画素データはゼロとなり、次階層での積和演算にもゼロ値が入力される。特徴画像の画素データがゼロの場合、このデータは畳み込み演算の結果に寄与しないため、このデータを用いた積和演算を省略しても結果は影響を受けない。
図2は、ニューラルネットワークの具体的な構造例を示す。図2に示すニューラルネットワークにおいては、階層数は4であり、各階層(レイヤ)には4枚の特徴画像が含まれる。それぞれの階層の特徴画像は、特徴画像ごとに定められているフィルタを、特徴画像の画素データに適用することにより得られたフィルタ処理結果に基づいて得られる。ここで、フィルタのフィルタ係数は、公知の学習技術に従って予め得られている。また、フィルタを適用するフィルタ処理は畳み込み演算を含んでおり、すなわち複数の乗算及び累積加算を含んでいる。図2において、矢印は畳み込み演算を示す。
レイヤ1では、式(1)及び式(2)に基づいて、複数枚の特徴画像201とフィルタ係数とを用いたフィルタ処理により、レイヤ2の複数枚の特徴画像202が生成される。レイヤ2では、同様に複数枚の特徴画像202とフィルタ係数とを用いたフィルタ処理により、レイヤ3の複数枚の特徴画像203が生成される。レイヤ3でも、同様に複数枚の特徴画像203とフィルタ係数とを用いたフィルタ処理により、レイヤ4の複数枚の特徴画像204が生成される。このように、フィルタ処理は階層順に行われている。図12に示されるように、レイヤ1にある4枚の特徴画像1201の同じ位置から複数の画素データが抽出され、フィルタ処理及び活性化処理が行われる。処理結果は、レイヤ2の特徴画像1202の一部の画素データになる。
図2にはさらに、各階層におけるフィルタ処理の種類とフィルタサイズとが示されている。レイヤ1、レイヤ2、及びレイヤ3では、それぞれサイズ3×3、サイズ5×5、及びサイズ7×7のフィルタを用いたフィルタ処理が行われる。このように、階層毎にフィルタ処理に用いるフィルタのサイズが異なっていてもよい。
畳み込みニューラルネットワークの構造を示すネットワーク構造情報は、RAM308に格納されていてもよい。このネットワーク構造情報は、例えば、階層の数、各階層の特徴画像の数、各階層で行われるフィルタ処理の種類、各階層で行われる活性化処理及びプーリング処理の種類、などを含んでいてもよい。
図4は、CNN処理部305の機能構成例を示す。本実施形態において、CNN処理部305は、所定サイズの処理対象ブロック内のデータ配列に対するフィルタ処理を行うことができる。CNN処理部305は、係数保持部403、特徴データ保持部405、データ選択部408、ゼロ判定部409、及び畳み込み処理部407を有する。また、後述するように、CNN処理部305は、制御部401、データ保持部402、読み出し部403、参照範囲設定部406、活性化処理部410、及び結果保持部411を有していてもよい。
データ保持部402は、データ保存部302の一部のデータを保持する。係数保持部403は、フィルタ処理に用いるフィルタの重み係数(フィルタ係数)を保持する。例えば、係数保持部405は、データ保持部402から取得したフィルタ係数Wx,y(m,n)を保持することができる。特徴データ保持部405は、処理対象ブロック内のデータ配列を保持する。例えば、特徴データ保持部405は、特徴画像I(m)の一部の画素データを保持することができる。このフィルタ係数は、畳み込みニューラルネットワークの重み係数の一部である。
参照範囲設定部406は、処理対象ブロックに対応する参照範囲を設定する。参照範囲は、処理対象ブロックの大きさ及びフィルタの大きさに応じて予め定められていてもよい。参照範囲設定部406は、1以上の参照範囲を設定することができ、少なくとも1つの参照範囲は、図5(B)(C)に示す参照範囲504,505のように、処理対象ブロックよりも小さい。参照範囲の詳細については後述する。
畳み込み処理部407は、処理対象ブロック内の複数の位置のそれぞれにおけるデータとフィルタの重み係数(フィルタ係数)との畳み込み演算結果を生成する。本実施形態において、畳み込み処理部407は、入力特徴画像内の処理対象ブロックに対してフィルタを畳み込む畳み込み演算を行うことができ、入力特徴画像に対するフィルタ処理結果を生成することができる。例えば、畳み込み処理部407は、式(1)に従って、フィルタ係数と画素データとを用いて畳み込み演算結果を得ることができる。本実施形態において、畳み込み演算部407は、制御部401からの制御信号に従って、特徴データ保持部405に保持されている画素データと、係数保持部403に保持されているフィルタ係数とを用いて、畳み込み演算結果を算出する。
畳み込み処理部407は、複数の畳み込み処理ユニット412を有している。それぞれの畳み込み処理ユニット412は、画素データとフィルタ係数との積を累積する積和演算を行うことができる。また、複数の畳み込み処理ユニット412は、処理対象ブロック内の複数の位置について、並列に積和演算を行うことができる。畳み込み処理ユニット412は、演算コア418、特徴データ格納ユニット413、係数格納ユニット414、及び結果格納ユニット417を有している。積和演算に用いられる乗算器415及び加算器416は演算コア418に含まれている。もっとも、一実施形態においては、1つの畳み込み処理ユニット412を用いて、処理対象ブロック内の複数の位置のそれぞれについて順次積和演算を行ってもよい。畳み込み処理部407による処理の詳細については後述する。
データ選択部408は、畳み込み処理部407による処理に用いられる画素データを畳み込み処理部407に転送する。また、データ選択部408は、ゼロ判定部409による判定結果に応じて処理対象ブロック内の複数の位置における積和演算の少なくとも一部を行うか否かを制御する。ゼロ判定部409は、処理対象ブロックに対応して参照範囲設定部406によって設定された、処理対象ブロック内の参照範囲内のデータがゼロ値であるか否かを判定する。データ選択部408及びゼロ判定部409の制御に従って、畳み込み処理部407は、処理対象ブロックに対するフィルタ処理結果を生成するための積和演算の一部を省略することができる。言い換えれば、畳み込み処理部407は、畳み込み演算を部分的に行うことで、処理対象ブロックに対するフィルタ処理結果を生成することができる。本実施形態においては、データ選択部408が、参照範囲内のデータがゼロ値であると判定した場合、畳み込み処理部407は、処理対象ブロック内の複数の位置のそれぞれにおける、データと重み係数との積和演算の少なくとも一部を省略することができる。データ選択部408及びゼロ判定部409による処理の詳細については後述する。
なお、本明細書におけるゼロ値は、以下の実施形態においてはゼロそのものであるが、畳み込み演算結果に対する影響が小さい、絶対値が所定値以下(例えば1以下)の数であってもよい。また、参照範囲内のデータがゼロ値であるとは、以下の実施形態においては参照範囲内のデータが全てゼロであることを意味する。一方で、参照範囲内のデータがゼロ値であるとは、特許文献1のように、ゼロの数が所定割合以上(例えば85%以上)であり畳み込み演算結果に対する影響が小さいことを意味していてもよい。
活性化処理部410は、フィルタ処理の結果に対してさらに活性化処理を行う。活性化処理部410は、例えば式(2)に従って活性化処理結果を計算することができる。もっとも、活性化処理の種類は特に限定されず、活性化処理部410は他の非線形の関数又は量子化関数を用いた活性化処理を行ってもよい。また、活性化処理部410は、ネットワーク構造情報に応じて、活性化処理の結果に基づいてプーリング処理を行うことにより、出力特徴画像のサイズを調整してもよい。場合により、活性化処理とプーリング処理との両方又は一方を省略してもよい。
結果保持部411は、活性化処理部410により得られた処理結果を保持する。読み出し部403は、特徴データ保持部405及び係数保持部403にアクセスするためのアドレスを、ゼロ判定部409及び畳み込み処理部407に転送する。ゼロ判定部409及び畳み込み処理部407は、このアドレスに従って、特徴データ保持部405から画素データを読み出すこと、又は係数保持部403からフィルタ係数を読み出すことができる。
なお、これらの処理が専用の処理部によって行われる必要はない。例えば、活性化処理及びプーリング処理がCPU306によって行われてもよい。また、参照範囲設定部406、ゼロ判定部408、及びデータ選択部408のうちの1以上の処理が、CPU306によって行われてもよい。
図1は、CNN処理部305が行う情報処理方法のフローチャートの一例である。S101~S117に示される制御処理は、制御部401(例えば制御部401が有するCPU又はシーケンサーなど)が行うことができる。以下、図1を参照して、本実施形態における畳み込みニューラルネットワークを用いた処理の各ステップについて説明する。
S101で制御部401は、入力特徴画像、フィルタ処理に用いるフィルタ係数、及びネットワーク構造情報をRAM308から読み出し、データ保持部402に保持する。図2の例において、入力特徴画像はRGB+D(深度)各プレーンの画像であってもよいし、画像に対してフィルタ処理を行うことにより得られた特徴画像であってもよい。
S102では、階層ごとのループが開始する。S102で制御部401は、最初の階層を選択することができる。以下の説明においては、S102で選択された階層のことを前階層、前階層の次の階層のことを次階層と呼ぶ。各階層についてS103~S116の処理を順番に行うことにより、畳み込みニューラルネットワークを用いた処理の結果を得ることができる。
S103では、ブロックごとのループが開始する。本実施形態では、次階層の各出力特徴画像は、複数の特徴画像ブロックに分割されている。また、1枚の出力特徴画像の特徴画像ブロックの画素データは、前階層の入力特徴画像の対応する特徴画像ブロックの画素データを用いて算出される。例えば、図5(A)の例では、出力特徴画像502の特徴画像ブロック512の画素データは、複数の入力特徴画像501のそれぞれの特徴画像ブロック503に対するフィルタ処理により得られる。この例では、出力特徴画像の特徴画像ブロックは重ならずに隣接するが、入力特徴画像の特徴画像ブロックは互いに重なるように整列する。それぞれの特徴画像ブロックは、処理対象ブロックに相当する。
S103では、出力特徴画像の1つの特徴画像ブロック(例えば特徴画像ブロック512)が選択される。また、出力特徴画像のこの特徴画像ブロックにおける画素データを算出するために用いられる、入力特徴画像の対応する特徴画像ブロック(例えば特徴画像ブロック503)も選択される。S104~S115では、複数の出力特徴画像に共通する1つの特徴画像ブロックが選択され、選択された特徴画像ブロックにおける、各出力特徴画像の画素データが算出される。この際には、選択された特徴画像ブロックにおける、各入力特徴画像の画素データが参照される。各特徴画像ブロックについてS104~S115の処理を順番に行うことにより、次階層の各出力特徴画像を得ることができる。
S104では、次階層の出力特徴画像ごとのループが開始する。S105~S114では、S103で選択された特徴画像ブロックにおける、1枚の出力特徴画像の画素データが算出される。このように、次階層の複数の出力特徴画像のそれぞれについて、画素データが順番に計算される。
S105で制御部401は、畳み込み処理部407の結果格納ユニット417に保持されている畳み込み演算結果を初期化する。例えば制御部401は、畳み込み演算結果をゼロに設定することができる。
S106では、前階層の入力特徴画像ごとのループが開始する。S107~S111では、1枚の入力特徴画像のうち、S103で選択された特徴画像ブロックに対して、フィルタ処理が行われる。S107~S111の処理を順番に行うことにより、各入力特徴画像に対するフィルタ処理が行われる。S107~S111のループは、S104で選択された出力特徴画像を得るために参照される入力特徴画像ごとに行うことができる。
S107で参照範囲設定部406は、画素データのゼロ値の参照範囲を設定する。参照範囲設定部406による参照範囲の設定方法については後述する。
S108で制御部401は、入力特徴画像の一部をデータ保持部402から読み出し、特徴データ保持部405に転送する。制御部401は、S106で選択された入力特徴画像のうち、S103で選択された特徴画像ブロックにおける画素データを、特徴データ保持部405に転送することができる。また、制御部401は、フィルタ係数の一部をデータ保持部402から読み出し、係数保持部403に転送する。制御部401は、S104で選択された出力特徴画像を得るために、S106で選択された入力特徴画像に対して行うフィルタ処理のためのフィルタ係数を、係数保持部403に転送することができる。このように、S108において、制御部401は、S109~111で行う畳み込み演算で参照される画素データ及びフィルタ係数を、データ保持部402から読み出すことができる。
S109でゼロ判定部409は、入力特徴画像の参照範囲内の全ての画素データがゼロかどうかを判定する。参照範囲内の全ての画素データがゼロの場合、処理はS110に進む。そうでない場合、処理はS111に進む。
S110で畳み込み処理部407は、S106で選択された入力特徴画像のうち、S103で選択された特徴画像ブロックに対する畳み込み演算結果を生成する。この畳み込み演算結果は、特徴画像ブロック内の複数の位置のそれぞれについての、画素データとフィルタ係数との積和演算結果によって構成される。S110において、畳み込み処理部407は、特徴画像ブロック内の位置について、第1の処理で畳み込み演算結果を取得する。具体的には、S110において畳み込み演算部407は、特徴画像ブロック内の複数の位置のそれぞれについての、画素データとフィルタ係数との積和演算の一部を省略することができる。S110の具体的な処理については後述する。
S111で畳み込み処理部407は、S106で選択された入力特徴画像のうち、S103で選択された特徴画像ブロックに対する畳み込み演算結果を生成する。S111において畳み込み処理部407は、S110とは異なる第2の処理で畳み込み演算結果を取得する。例えば、畳み込み処理部407は、特徴画像ブロック内の複数の位置のそれぞれについての、画素データとフィルタ係数との積和演算を、省略せずに行うことができる。
S112で制御部401は、入力特徴画像のループの終了判定をする。全ての入力特徴画像についての処理が終わった場合、処理はS113に進む。そうでない場合、処理はS107に戻り、次の入力特徴画像についての処理が開始される。
S112からS113に進む際には、結果格納ユニット417には、S106で選択された入力特徴画像に対するフィルタ処理結果が画素毎に累積されている。例えば、結果格納ユニット417には、S104で選択された出力特徴画像のうち、S103で選択された特徴画像ブロックの各画素についての、式(1)に従う画素データOi,j(n)が格納されていてもよい。
S113で活性化処理部410は、制御部401からの制御信号に従って、結果格納ユニット417に保持されているフィルタ処理結果に基づいて活性化処理を行う。
S114で制御部401は、活性化処理部410による処理結果をデータ保持部402に格納する。データ保持部402に格納された処理結果は、S104で選択された出力特徴画像のうち、S103で選択された特徴画像ブロックの画素データに相当する。このように格納された出力特徴画像の画素データは、次の階層の処理を行う際の入力特徴画像の画素データとして用いられる。
S115で制御部401は、出力特徴画像についてのループの終了判定をする。全ての出力特徴画像についての処理が終わった場合、処理はS116に進む。そうでない場合、処理はS105に戻り、次の出力特徴画像についての処理が開始される。
S116で制御部401は、特徴画像ブロックについてのループの終了判定をする。全て特徴画像ブロックについての処理が終わった場合、処理はS117に進む。そうでない場合、処理はS104に戻り、次の特徴画像ブロックについての処理が開始される。
S117で制御部401は、階層についてのループの終了判定をする。全ての階層についての処理が終わった場合、図1の処理は終了する。そうでない場合、S103に戻り、次の階層についての処理が開始される。
(本実施形態による処理例)
本実施形態によれば、フィルタ処理における計算量を削減することができるため、フィルタ処理の処理効率を向上させることができる。本実施形態による処理効率の向上について、図5~7を参照して説明する。本実施形態に係る処理装置は、複数枚の特徴画像に含まれる複数の画素データを並列に処理することが可能であるが、以下では、図2に示す4階層の畳み込みニューラルネットワークを用いた処理を行う場合について説明する。図2において、実線のブロックは処理対象を示し、実線の矢印は処理対象に関連する畳み込み演算を示す。
本実施形態によれば、フィルタ処理における計算量を削減することができるため、フィルタ処理の処理効率を向上させることができる。本実施形態による処理効率の向上について、図5~7を参照して説明する。本実施形態に係る処理装置は、複数枚の特徴画像に含まれる複数の画素データを並列に処理することが可能であるが、以下では、図2に示す4階層の畳み込みニューラルネットワークを用いた処理を行う場合について説明する。図2において、実線のブロックは処理対象を示し、実線の矢印は処理対象に関連する畳み込み演算を示す。
図5(A)は、レイヤ1の特徴画像(入力特徴画像)に対してフィルタ処理を行い、レイヤ2の特徴画像(出力特徴画像)を生成する処理の例を示す。このフィルタ処理では、3×3サイズのフィルタが用いられ、したがってカーネルサイズは3×3である。入力特徴画像501は複数個の特徴画像ブロック503に分かれており、順番に処理される。入力特徴画像501の特徴画像ブロック503には、5×5個の画素データが含まれている。また、特徴画像ブロック503を用いたフィルタ処理(及び活性化処理等のさらなる処理)により、出力特徴画像502の特徴画像ブロック512が得られる。特徴画像ブロック512には、3×3個の画素データが含まれている。また、図5(B)(C)には、ゼロ値の参照範囲の例として、点線に囲まれている5×4の領域である参照範囲504と、5×3の領域である参照範囲505とが示されている。
図6(A)~(C)に示す処理例において、ブロック601は入力特徴画像の特徴画像ブロックであり、5×5のサイズ及び25個の画素データを有している。それぞれの画素には、1~25の異なる番号が付されている。ブロック601に対し、3×3フィルタを用いた、縦ストライド1、横ストライド1のフィルタ処理を行うこの処理例においては、9個の3×3カーネル602~610(カーネル1~カーネル9)が用いられる。カーネル602~610はそれぞれ、隣接するカーネルとオーバーラップしており、一部の画素データを共有している。図6(A)(C)において、白色の画素は画素データがゼロ値であることを意味し、ハッチングされた画素は画素データがゼロ値ではないことを意味する。
本実施形態において、9個のカーネル602~610は、9個の畳み込み処理ユニット412で並列処理される。また、それぞれのカーネル602~610の中の画素データは順番に処理される。また、カーネル602~610に対しては同じフィルタが適用される。したがって、畳み込み処理ユニット412は、それぞれに入力されるデータ(例えばカーネル602~610の左上の画素データ)と共通の重み係数(例えばフィルタの左上の重み係数)との積和演算を並列に行うことができる。
図6(A)(C)に示す例のように、参照範囲504内の画素データが全てゼロ値である場合、カーネル602~604の下2ラインと、カーネル605~610の3ラインの画素データは全てゼロ値となる。言い換えれば、カーネル602~610について、非ゼロ値が含まれるのは上1ラインのみである。また、カーネル602~610について、下2ラインはゼロ値を有し、これらの画素データを用いた積和演算はフィルタ処理結果に影響しない。したがって、本実施形態において、9個の畳み込み処理ユニット412は、図6(B)の矢印611で示されるように、対応するカーネルの上1ラインの画素データのみを処理する。例えば、畳み込み処理ユニット412は、画素1~画素9のそれぞれに、対応するフィルタ係数を乗算して、得られた積を累積する代わりに、画素1~画素3のそれぞれにのみ、対応するフィルタ係数を乗算し、得られた積を累積する。このように、畳み込み処理ユニット412は、処理対象ブロック内の複数の位置の全てについて、共通の第1の処理で畳み込み演算結果を取得することができる。このような構成によれば、それぞれの畳み込み処理ユニット412は、3回の積和演算を行う一方で、6回の積和演算を省略することができる。
なお、この実施形態では、カーネル605~610について上1ラインの画素データを用いた処理も行われるが、演算結果はゼロになるため、この処理結果はフィルタ処理結果に影響しない。もっとも、カーネル605~610について上1ラインの画素データを用いた処理を省略してもよい。この場合、9個の畳み込み処理ユニット412のうち、カーネル605~610を処理する畳み込み処理ユニット412を、ブロック601に対する演算処理を行わないように制御することができる。
S110における処理は以上のように行うことができる。すなわち、S109において参照領域の画素データが全てゼロだと判定されているため、畳み込み演算は部分的に行われる。すなわち、並列に動作するそれぞれの畳み込み処理ユニット412は、各カーネルの3つの画素データと3つのフィルタ係数との積和演算を行い、各カーネルの残りの6つの画素データと6つのフィルタ係数の積和演算は行わない。上記のように、各カーネルの残り6つの画素データはゼロであるため、この画素データを用いた演算を行わなくてもフィルタ処理結果には影響しない。S110においては、フィルタ係数の数(この例では9個)より少ない回数(この例では3回)の積和演算により畳み込み演算結果が取得されている。また、畳み込み処理ユニット412は、複数のフィルタ係数のうちの一部のみを用いて、順次データとフィルタ係数との積和演算を行っている。また、畳み込み処理ユニット412は、複数の重み係数のそれぞれを用いて、順次データと重み係数との積和演算を行っている。
この際、積和演算に用いられる係数データは、フィルタ係数保持部403から畳み込み処理部407に供給される。また、積和演算に用いられる画素データは、ゼロ判定部409からデータ選択部408を介して畳み込み処理部407に供給される。ここで、データ選択部408は、ゼロ判定部409による判定結果に応じて、フィルタ係数保持部403から畳み込み処理部407への画素データの供給を制御することができる。すなわち、データ選択部408は、特定の画素データを用いた積和演算を行い、特定の画素データを用いた積和演算を省略するように、畳み込み処理部407を制御することができる。例えば、データ選択部408は、積和演算に用いる画素データのみを畳み込み処理部407に供給することにより、畳み込み処理部407による積和演算を制御してもよい。さらに、ゼロ判定部409による判定結果に従い、積和演算に用いるフィルタ係数のみがフィルタ係数保持部403から畳み込み処理部407へと転送されるように、フィルタ係数の転送が制御されてもよい。
また、図5(C)に示す参照範囲505のように、参照範囲のサイズが5×3であってもよい。参照範囲505内の画素データが全てゼロ値である場合、カーネル602~604の下1ラインと、カーネル605~607の下2ラインと、カーネル608~610の3ラインと、の画素データは全てゼロ値となる。したがって、本実施形態において、9個の畳み込み処理ユニット412は、対応するカーネルの上2ラインの画素データのみを処理することができる。なお、この実施形態では、カーネル605~607について中央ラインの画素データを用いた処理、及びカーネル608~610について上2ラインの画素データを用いた処理も行われる。しかしながら、これらの画素データを用いた演算結果はゼロになるため、この処理結果はフィルタ処理結果に影響しない。
このように、様々なサイズの参照範囲を設定することができる。一方で、上記の説明より、参照範囲が大きいほど計算量削減の効果が大きいことが理解できるだろう。
一方で、図7(A)に示す例のように、参照範囲504内の画素データが全てゼロ値であると判定されない場合、9個の畳み込み処理ユニット412は、図7(B)の矢印611で示されるように、対応するカーネルの上1ラインの画素データのみを処理する。すなわち、図7(C)に示されるカーネル702~710について全ての画素データを用いた演算処理が最後まで行われる。S111における処理はこのように行うことができる。すなわち、畳み込み処理ユニット412は、特徴画像ブロック内の複数の位置の全てについて、一部の積和演算を省略する第1の処理とは異なる、共通の第2の処理で畳み込み演算結果を取得することができる。また、S110における第1の処理と、S111における第2の処理とでは、互いに異なる回数の積和演算により畳み込み演算結果が取得されることになる。S111においては、フィルタ係数の数(この例では9個)に等しい回数(この例では9回)の積和演算により畳み込み演算結果が取得されている。
以上のように、本実施形態によれば、参照範囲内の全てのデータがゼロ値かどうかが判定され、判定結果に従って畳み込み演算結果を得るための積和演算の一部が省略される。このため、計算量を削減できるとともに畳み込み演算処理の効率が向上し、処理に要する消費電力及び処理時間を削減することができる。本実施形態においては、フィルタサイズよりも大きい参照範囲についてデータがゼロ値であるかどうかが判定される。言い換えれば、参照範囲についての判定結果に基づいて、複数回の畳み込み演算のそれぞれを制御することができる。このため、計算量の削減が容易となる。
特に本実施形態においては、入力特徴画像のブロックサイズと異なるサイズを有する参照範囲が用いられた。このため、ブロック内の全ての画素データがゼロでなくても、計算量を削減することができる。また、本実施形態の構成によれば、カーネル内のデータが全てゼロ値ではない場合であっても、矢印611に示されるように積和演算の一部を省略することにより、計算量を削減するとともに処理を高速化することができる。このような構成は、図4に示されるように、複数の畳み込み処理ユニットが並列して互いに異なるカーネルに対する処理を行う場合に特に有効である。すなわち、それぞれの畳み込みユニットにおいて、ゼロ値を有する画素データの乗算を省略する、又はゼロ値が多いカーネルに対する畳み込み演算を省略する判断を行う場合、それぞれの畳み込み処理ユニットの処理時間が変動する。このため、複数の畳み込み処理ユニットが同期して動作するためにはさらなる回路が必要になる可能性がある。一方で、本実施形態の構成によれば、図6(A)~(C)を参照して説明したように、複数の畳み込み処理ユニットを同期して動作させながらも、計算量を削減することが可能となる。
また、特許文献1の方法によれば、カーネルに少数の非ゼロ値が存在する場合にも畳み込み演算がスキップされるため、演算精度が下がる可能性がある。一方で、上述した実施形態のように、参照範囲内の全てのデータがゼロ値かどうかを判定し、判定結果に従って畳み込み演算結果を得るための積和演算の一部を省略する構成によれば、フィルタ処理の精度を保つことができる。
[変形例]
上述の実施形態では1つの参照範囲内の画素データがゼロ値であるかどうかが判定されたが、2つ以上の参照範囲が用いられてもよい。例えば、ゼロ判定部409は、複数の参照範囲のそれぞれについて、参照範囲内のデータがゼロ値であるか否かを判定してもよい。そして、ゼロ判定部409が、特定の参照範囲内のデータがゼロ値であると判定した場合、畳み込み処理部407は、特徴画像ブロック内の位置について、特定の参照範囲に対応する回数の積和演算により畳み込み演算結果を取得することができる。
上述の実施形態では1つの参照範囲内の画素データがゼロ値であるかどうかが判定されたが、2つ以上の参照範囲が用いられてもよい。例えば、ゼロ判定部409は、複数の参照範囲のそれぞれについて、参照範囲内のデータがゼロ値であるか否かを判定してもよい。そして、ゼロ判定部409が、特定の参照範囲内のデータがゼロ値であると判定した場合、畳み込み処理部407は、特徴画像ブロック内の位置について、特定の参照範囲に対応する回数の積和演算により畳み込み演算結果を取得することができる。
また、上述の実施形態では、参照範囲内の画素データがゼロ値である場合に、入力特徴画像の特徴画像ブロックに対する畳み込み演算結果を得る際に、畳み込み演算を部分的に行った。一方で、入力特徴画像の特徴画像ブロックに対する畳み込み演算結果を得る際に、畳み込み演算を省略してもよい。以下ではこのような場合について説明する。
この場合、図1のS109の処理の代わりに、図10に示すように、S1001~S1002の処理を行うことができる。以下では、図11(A)(B)に示すように2つの参照範囲が用いられる場合について説明する。上述の実施形態における参照範囲と同じように、第1の参照範囲1121は入力特徴画像の特徴画像ブロック1101よりも小さいサイズを有する。また、第2の参照範囲1122は入力特徴画像の特徴画像ブロック1101のサイズと同じである。第1の参照範囲1121は第2の参照範囲1122に含まれている。また、この例でも、図6(A)~(C)と同様に3×3サイズのフィルタを用いたフィルタ処理が行われるものとする。
S108の後に行われるS1001では、ゼロ判定部409は入力特徴画像の第1の参照範囲内の全ての画素データがゼロかどうかを判定する。第1の参照範囲内の全ての画素データがゼロの場合、処理はS1002に進む。そうでない場合、処理はS111に進み、畳み込み演算が行われる。
S1002では、ゼロ判定部409は入力特徴画像の第2の参照範囲内の全ての画素データがゼロかどうかを判定する。第2の参照範囲内の全ての画素データがゼロの場合、畳み込み演算結果はゼロになるため、処理はS112に進む。この場合、畳み込み演算は省略される。このように、特徴画像ブロックと同サイズの参照範囲について、参照範囲内のデータがゼロ値であると判定された場合、畳み込み処理部407は、積和演算を行わずにゼロ値を畳み込み演算結果として取得する。この場合、第2の参照範囲に対応する積和演算の回数は0回である。
入力特徴画像の第2の参照範囲内の全ての画素データがゼロであると判定されなかった場合、処理はS110に進む。この場合、第1の参照範囲内の全ての画素データはゼロであると判定されているが、第2の参照範囲内の全ての画素データがゼロであるとは判定されていない。S110では、上述の実施形態と同様に、畳み込み演算を部分的に行うことにより畳み込み演算結果が算出される。この場合には、図6(A)~(C)と同様に畳み込み演算結果を取得することができる。図6(A)の場合、第1の参照範囲に対応する積和演算の回数は3回である。
図1のフローチャートに従って処理を行う場合、特徴画像ブロック1101の全ての画素データがゼロ値であっても、畳み込み演算結果を得るために畳み込み演算が部分的に行われる。一方で、図10のフローチャートに従って処理を行う場合、特徴画像ブロック1101の全ての画素データがゼロ値であれば、処理はS1001からS1002に進む。また、S1002で第2の参照範囲内のデータが全てゼロだと判定されるため、畳み込み演算結果を得る際に畳み込み演算が省略される。一方で、図6(A)又は図7(A)に示す特徴画像ブロックを処理する場合には、S110又はS111で完全な又は部分的な畳み込み演算が行われる。このように、第2の参照範囲内の、すなわち入力特徴画像の特徴画像ブロック内の画素データがゼロ値であるかどうかを判断することにより、フィルタ処理において全ての畳み込み演算を省略し、計算量を削減することが可能になる。一方で、この構成によれば、部分的に畳み込み演算を行うことも可能であるため、計算量をさらに削減することが可能になる。
さらに、入力特徴画像の特徴画像ブロックより小さい複数の参照範囲が用いられてもよい。例えば、図13(A)~(D)には、図5(A)と同様に、5×5サイズの特徴画像ブロックに対して3×3サイズのフィルタを用いたフィルタ処理を行う例が示されている。ここで、図13(A)に示すように、特徴画像ブロック1301において5×5サイズの参照範囲1312内の画素データが全てゼロ値である場合、フィルタ処理において畳み込み演算を省略することができる。一方で、参照範囲1311内の画素データが全てゼロ値であるとは判定されない場合、図13(B)に示すように、より小さい参照範囲1312を用いることができる。すなわち、特徴画像ブロック1302において5×4サイズの参照範囲1312内の画素データが全てゼロ値である場合、各カーネルの上1ラインの画素データのみを用いて積和演算を行うことができる。同様に、参照範囲1312内の画素データが全てゼロ値であるとは判定されない場合、図13(B)に示すように、より小さい参照範囲1313を用いることができる。すなわち、特徴画像ブロック1303において5×3サイズの参照範囲1313内の画素データが全てゼロ値である場合、各カーネルの上2ラインの画素データのみを用いて積和演算を行うことができる。また、参照範囲1313内の画素データが全てゼロ値であるとは判定されない場合、各カーネルの全ての画素データを用いて積和演算が行われる。
以上のように、畳み込み演算結果を得るための積和演算の回数は、参照範囲内の画素データが全てゼロ値であるか否かに応じて変更することができる。また、畳み込み演算結果を得るための積和演算の回数は、画素データが全てゼロ値であると判定された参照範囲に応じて変更することができる。さらに、画素データが全てゼロ値であると判定された参照範囲に応じて、各画素データを用いた積和演算の順序が変更されてもよい。
畳み込み演算の処理時間は、図13(A)の場合には一番短くなり、図13(B)の場合はより長く、図13(C)の場合はさらに長く、図13(D)の場合は最も長くなる。制御部401は、特徴画像ブロックが上記のどれに当てはまるのかを判定し、判定結果に基づいて各畳み込み処理ユニット412による畳み込み演算の処理時間を判定することができる。この場合、畳み込み処理部407は、制御部401からの制御信号に基づいて、判定された処理時間に応じたタイミングで、必要な画素データ及びフィルタ係数を取得し、畳み込み演算の結果を得ることができる。複数の参照パターンを用いることで、様々な分布を有する特徴画像に対して、積和演算を省略できる確率を上げることができる。
上記の処理は、特徴画像ブロックのサイズ及びフィルタサイズが異なる場合にも適用可能である。図8(A)は、前階層がレイヤ2(フィルタサイズが5×5)の例を示す。この例では、出力特徴画像の特徴画像ブロックのサイズが3×3になるように、入力特徴画像の特徴画像ブロックのサイズが調整される。具体的には、フィルタサイズがM×Mで、出力特徴画像の特徴画像ブロックのサイズがY×Yの場合、入力特徴画像の特徴画像ブロックのサイズは(Y+M-1)×(Y+M-1)にすることができる。なお、出力特徴画像の特徴画像ブロックのサイズは、畳み込み処理ユニット412の数以下となるように設定することができる。この場合、出力特徴画像の特徴画像ブロックの各画素の画素データを、複数の畳み込み処理ユニット412により並列に算出することができる。
図8(A)に示すフィルタ処理では、5×5サイズのフィルタが用いられ、したがってカーネルサイズは5×5である。入力特徴画像501は複数個の特徴画像ブロック801に分かれており、順番に処理される。特徴画像ブロック801には、7×7個の画素データが含まれている。また、特徴画像ブロック801を用いたフィルタ処理(及び活性化処理等のさらなる処理)により、出力特徴画像502の特徴画像ブロック812が得られる。特徴画像ブロック812には、3×3個の画素データが含まれている。図8(B)には、7×6サイズの参照範囲802が点線に囲まれた領域として示されている。この例において、S109で参照範囲802内の画素データが全てゼロ値であると判定される場合には、フィルタ処理において、各カーネルの上1ラインの画素データを用いた積和演算が行われる。なお、参照範囲のサイズは、7×7、7×5、7×4、又は7×3に設定することもできる。
図9(A)は、前階層がレイヤ3(フィルタサイズが7×7)の例を示す。入力特徴画像501は複数個の特徴画像ブロック901に分かれており、順番に処理される。特徴画像ブロック901には、9×9個の画素データが含まれている。また、特徴画像ブロック801を用いたフィルタ処理(及び活性化処理等のさらなる処理)により、出力特徴画像502の特徴画像ブロック912が得られる。特徴画像ブロック912には、3×3個の画素データが含まれている。また、図9(B)には9×8サイズの参照範囲902が点線に囲まれた領域として示されている。この例において、S109で参照範囲902内の画素データが全てゼロ値であると判定される場合には、フィルタ処理において、各カーネルの上1ラインの画素データを用いた積和演算が行われる。なお、参照範囲のサイズは、9×9、9×7、9×6、9×5、9×4、又は9×3に設定することもできる。
以上の説明により、フィルタのサイズにかかわらず、参照範囲内のデータがゼロ値か否かを判定することで、フィルタ処理において一部の積和演算を省略することが可能になる。
本実施形態において、処理対象ブロックに対応する参照範囲は予め定められていてもよいが、参照範囲設定部406が参照範囲を決定してもよい。例えば参照範囲設定部406は、処理対象ブロックのサイズとフィルタサイズとに基づいて参照範囲を決定することができる。一例として、参照範囲設定部406は、入力特徴画像の特徴画像ブロックのうち上1行を除いた領域を、参照範囲として決定することができる。この参照範囲内のデータがゼロ値である場合、図6(A)~(C)と同様に、フィルタ処理において、各カーネルの上1行を用いた積和演算を行い、各カーネルの残りの行を用いた積和演算を省略することができる。また、参照範囲設定部406は、入力特徴画像の特徴画像ブロックのうち上N行(フィルタサイズM×Mの場合、N<M)を除いた領域を、参照範囲として決定することができる。この参照範囲内のデータがゼロ値である場合、フィルタ処理において、各カーネルの上N行を用いた積和演算を行い、各カーネルの残りの行を用いた積和演算を省略することができる。
本明細書では、参照範囲は特徴画像ブロックの下側に設定された矩形領域であるが、参照範囲の設定方法はこれに限られない。例えば、参照範囲は、入力特徴画像の特徴画像ブロックのうち左1列を除いた領域であってもよい。この参照範囲内のデータがゼロ値である場合、フィルタ処理において、各カーネルの左1列を用いた積和演算を行い、各カーネルの残りの列を用いた積和演算を省略することができる。
また、図5(B)(C)を参照して説明したように、参照範囲が大きいほど計算量を大きく削減することができるものの、参照範囲が小さいほど参照範囲内のデータがゼロ値になる可能性が高くなる。そこで、参照範囲設定部406は、入力されるデータ配列(特徴画像)に応じて参照範囲を選択してもよい。例えば、参照範囲設定部406は、特徴画像におけるゼロ値の出現頻度がより多い場合にはより大きな参照範囲を、より少ない場合にはより小さな参照範囲を設定することができる。このように、参照範囲設定部406は、入力されるデータ配列に応じて、処理時間が一番短くなるように、又は削減できる計算量が一番多くなるように、参照範囲を選択してもよい。
上記の実施形態において、ゼロ判定部409は、処理対象ブロックの参照範囲内のデータがゼロ値であるかどうかを判定した。一方で、前階層の特徴画像を算出する際に活性化処理後のデータがゼロ値であるかどうかを記録してもよい。この場合、ゼロ判定部409は、次階層の特徴画像を算出する際にこの記録に基づいて参照範囲内のデータがゼロ値であるかどうかを判定してもよい。また、ゼロ判定部409は、特徴データ保持部405又はデータ保持部402に処理対象ブロック内のデータ配列が格納されたことに応じて、参照範囲内のデータがゼロ値であるか否かを判定してもよい。例えば、ゼロ判定部409は、特徴データ保持部405又はデータ保持部402に特徴画像が格納された際に、参照範囲内のデータがゼロ値になるかどうかを判定することができる。この判定結果は、処理対象ブロックに対するフィルタ処理を行う際に参照することができる。例えば、ゼロ判定部409は、特徴画像におけるゼロ値の位置に基づいて、画素データがゼロ値である領域を計算してもよい。そして、ゼロ判定部409は、この領域と参照範囲とを比較することにより、参照範囲内のデータがゼロ値であるかどうかを判定してもよい。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
403:係数保持部、405:特徴データ保持部、406:参照範囲設定部、407:畳み込み処理部、408:データ選択部、409:ゼロ判定部
Claims (19)
- 所定サイズの処理対象ブロック内のデータ配列に対するフィルタ処理を行う演算装置であって、
前記処理対象ブロック内のデータ配列を保持するデータ保持手段と、
前記フィルタ処理に用いるフィルタの重み係数を保持する係数保持手段と、
前記処理対象ブロックに対応して設定された、前記処理対象ブロック内の参照範囲内のデータがゼロ値であるか否かを判定する判定手段と、
前記処理対象ブロック内の複数の位置のそれぞれにおけるデータと重み係数との畳み込み演算結果を生成する処理手段と、
前記判定手段による判定結果に応じて、前記処理手段が、前記畳み込み演算結果を生成する際に、前記データと前記重み係数との積和演算の少なくとも一部を行うか否かを制御する制御手段と、
を備えることを特徴とする演算装置。 - 前記判定手段が、前記参照範囲内のデータがゼロ値であると判定した場合、前記処理手段は、前記処理対象ブロック内の複数の位置のそれぞれにおける、前記データと前記重み係数との積和演算の少なくとも一部を省略する
ことを特徴とする、請求項1に記載の演算装置。 - 1以上の前記参照範囲が設定され、少なくとも1つの前記参照範囲は前記処理対象ブロックよりも小さいことを特徴とする、請求項1又は2に記載の演算装置。
- 前記判定手段が、前記参照範囲内のデータがゼロ値であると判定した場合、前記処理手段は、前記処理対象ブロック内の位置について、第1の処理で畳み込み演算結果を取得し、
前記判定手段が、前記参照範囲内のデータがゼロ値ではないと判定した場合、前記処理手段は、前記処理対象ブロック内の位置について、第2の処理で畳み込み演算結果を取得する
ことを特徴とする、請求項1から3のいずれか1項に記載の演算装置。 - 前記判定手段が、前記参照範囲内のデータがゼロ値であると判定した場合、前記処理手段は、前記処理対象ブロック内の複数の位置の全てについて、共通の第1の処理で畳み込み演算結果を取得し、
前記判定手段が、前記参照範囲内のデータがゼロ値ではないと判定した場合、前記処理手段は、前記処理対象ブロック内の複数の位置の全てについて、共通の第2の処理で畳み込み演算結果を取得する
ことを特徴とする、請求項1から4のいずれか1項に記載の演算装置。 - 前記第1の処理及び前記第2の処理は、互いに異なる回数の積和演算により前記畳み込み演算結果を取得する処理であることを特徴とする、請求項4又は5に記載の演算装置。
- 前記第1の処理は、前記重み係数の数より少ない回数の積和演算により前記畳み込み演算結果を取得する処理であり、
前記第2の処理は、前記重み係数の数に等しい回数の積和演算により前記畳み込み演算結果を取得する処理である
ことを特徴とする、請求項4から6のいずれか1項に記載の演算装置。 - 前記判定手段は、複数の参照範囲のそれぞれについて、前記参照範囲内のデータがゼロ値であるか否かを判定し、
前記判定手段が、特定の参照範囲内のデータがゼロ値であると判定した場合、前記処理手段は、前記処理対象ブロック内の位置について、前記特定の参照範囲に対応する回数の積和演算により前記畳み込み演算結果を取得する
ことを特徴とする、請求項1から7のいずれか1項に記載の演算装置。 - 前記判定手段は、前記処理対象ブロックと同サイズの参照範囲について、前記参照範囲内のデータがゼロ値であるか否かを判定し、
前記判定手段が、前記処理対象ブロックと同サイズの参照範囲内のデータがゼロ値であると判定した場合、前記処理手段は、積和演算を行わずにゼロ値を前記畳み込み演算結果として取得する
ことを特徴とする、請求項8に記載の演算装置。 - 前記制御手段は、前記判定手段による判定結果に応じて、前記データ保持手段から前記処理手段への前記データの供給を制御することを特徴とする、請求項1から9のいずれか1項に記載の演算装置。
- 前記処理手段は、複数の積和演算手段を有し、
前記複数の積和演算手段は、前記処理対象ブロック内の複数の位置について、並列に積和演算を行うように構成されていることを特徴とする、請求項1から10のいずれか1項に記載の演算装置。 - 前記複数の積和演算手段は、それぞれに入力されるデータと共通の重み係数との積和演算を並列に行うことを特徴とする、請求項11に記載の演算装置。
- 前記判定手段が、前記参照範囲内のデータがゼロ値ではないと判定した場合、前記複数の積和演算手段は、複数の重み係数のそれぞれを用いて、順次データと重み係数との積和演算を行い、
前記判定手段が、前記参照範囲内のデータがゼロ値であると判定した場合、前記複数の積和演算手段は、前記複数の重み係数のうちの一部のみを用いて、順次データと重み係数との積和演算を行うことを特徴とする、請求項12に記載の演算装置。 - 前記処理対象ブロックのサイズ及び前記フィルタのサイズに基づいて前記参照範囲を設定する設定手段をさらに備えることを特徴とする、請求項1から13のいずれか1項に記載の演算装置。
- 前記フィルタ処理の結果に対してさらに活性化処理を行う活性化処理手段をさらに備えることを特徴とする、請求項1から14のいずれか1項に記載の演算装置。
- 前記判定手段は、前記データ保持手段に前記処理対象ブロック内のデータ配列が格納されたことに応じて、前記参照範囲内のデータがゼロ値であるか否かを判定することを特徴とする、請求項1から15のいずれか1項に記載の演算装置。
- 前記演算装置は、畳み込みニューラルネットワークを用いた処理を行うように構成されており、
前記データ配列は、畳み込みニューラルネットワークを用いて処理される特徴画像であり、
前記重み係数は、畳み込みニューラルネットワークの重み係数の一部であることを特徴とする、請求項1から16のいずれか1項に記載の演算装置。 - 所定サイズの処理対象ブロック内のデータ配列に対するフィルタ処理を行う演算装置が行う情報処理方法であって、
前記処理対象ブロックに対応して設定された、前記処理対象ブロック内の参照範囲内のデータがゼロ値であるか否かを判定する工程と、
判定結果に応じて、畳み込み演算結果を生成する際に、前記データと重み係数との積和演算の少なくとも一部を行うか否かを制御する工程と、
前記制御に従って、前記処理対象ブロック内の複数の位置のそれぞれにおける前記データと前記重み係数との畳み込み演算結果を生成する工程と、
を含むことを特徴とする情報処理方法。 - 所定サイズの処理対象ブロック内のデータ配列に対するフィルタ処理を行うコンピュータに、
前記処理対象ブロックに対応して設定された、前記処理対象ブロック内の参照範囲内のデータがゼロ値であるか否かを判定する工程と、
判定結果に応じて、前記処理対象ブロック内の複数の位置のそれぞれにおける前記データと重み係数との畳み込み演算結果を生成する処理手段に対して、畳み込み演算結果を生成する際に前記データと前記重み係数との積和演算の少なくとも一部を行うか否かを制御する工程と、
を行わせるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021186520A JP2023073824A (ja) | 2021-11-16 | 2021-11-16 | 演算装置、情報処理方法、及びプログラム |
US18/055,603 US20230154174A1 (en) | 2021-11-16 | 2022-11-15 | Apparatus for performing filter processing using convolution operation, method of performing filter processing, and medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021186520A JP2023073824A (ja) | 2021-11-16 | 2021-11-16 | 演算装置、情報処理方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023073824A true JP2023073824A (ja) | 2023-05-26 |
Family
ID=86323885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021186520A Pending JP2023073824A (ja) | 2021-11-16 | 2021-11-16 | 演算装置、情報処理方法、及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230154174A1 (ja) |
JP (1) | JP2023073824A (ja) |
-
2021
- 2021-11-16 JP JP2021186520A patent/JP2023073824A/ja active Pending
-
2022
- 2022-11-15 US US18/055,603 patent/US20230154174A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230154174A1 (en) | 2023-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6900487B2 (ja) | ハードウェアにおける平均プーリングの実行 | |
JP7329533B2 (ja) | 演算を加速するための方法および加速器装置 | |
JP2022037022A (ja) | ハードウェアにおけるカーネルストライドの実行 | |
CN109844738A (zh) | 运算处理电路和识别系统 | |
JP7414930B2 (ja) | 情報処理装置、情報処理方法 | |
US10642622B2 (en) | Arithmetic processing device and control method of the arithmetic processing device | |
US20170206089A1 (en) | Information processing apparatus and computational method | |
JP2023109847A (ja) | 機械学習のための画像変換 | |
EP3093757A2 (en) | Multi-dimensional sliding window operation for a vector processor | |
JP7402623B2 (ja) | フィルタ処理装置及びその制御方法 | |
JP7352684B2 (ja) | フィルタ処理装置およびその制御方法 | |
US11900577B2 (en) | Processing apparatus for performing processing using a convolutional neural network | |
JP7020485B2 (ja) | 演算装置、演算方法及びプログラム | |
JP2023073824A (ja) | 演算装置、情報処理方法、及びプログラム | |
CN116611476A (zh) | 性能数据预测方法、性能数据预测装置、电子设备及介质 | |
US20210287070A1 (en) | Data processing apparatus, data processing method, and non-transitory computer-readable storage medium | |
US20220309778A1 (en) | Image processing apparatus, image processing method, and non-transitory computer-readable storage medium | |
JP7169768B2 (ja) | 画像処理装置、画像処理方法 | |
JP2023518717A (ja) | 機械学習アクセラレータの電力削減 | |
JP5045652B2 (ja) | 相関処理装置及びその相関処理装置で読みとり可能な媒体 | |
JP7321213B2 (ja) | 情報処理装置、情報処理方法 | |
JP2024004400A (ja) | データ処理装置及びその方法 | |
JP2024026993A (ja) | 情報処理装置、情報処理方法 | |
KR20130107973A (ko) | 영상처리장치 및 영상처리방법, 컴퓨터 판독가능 기록매체 |