(57)【要約】【課題】フィルタ処理を高速化する。【解決手段】特徴面に対してフィルタを用いた畳み込み演算を行う。特徴面のデータと、フィルタが有するフィルタ係数と、そのフィルタ係数の中で畳み込み演算に用いられるフィルタ係数を特定する、フィルタに対応付けられた有効係数情報と、を取得する。有効係数情報により特定されたフィルタ係数と、フィルタ係数に対応する特徴面のデータと、の畳み込み演算を行う。【選択図】図１
2020204894.tif 000002
【特許請求の範囲】
【請求項１】
特徴面に対してフィルタを用いた畳み込み演算を行うデータ処理装置であって、
前記特徴面のデータと、前記フィルタが有するフィルタ係数と、該フィルタ係数の中で前記畳み込み演算に用いられるフィルタ係数を特定する、前記フィルタに対応付けられた有効係数情報と、を取得する取得手段と、
前記有効係数情報により特定された前記フィルタ係数と、前記フィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を行う演算手段と、
を備えることを特徴とするフィルタ処理装置。
【請求項２】
前記演算手段は、前記畳み込み演算において、前記フィルタが有するフィルタ係数の中で前記有効係数情報により特定されていないフィルタ係数と、当該有効係数情報により特定されていないフィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を省略することを特徴とする、請求項１に記載のフィルタ処理装置。
【請求項３】
前記取得手段は、前記有効係数情報により特定されたフィルタ係数に対応する前記特徴面のデータを前記演算手段に転送し、前記有効係数情報により特定されていないフィルタ係数に対応する前記特徴面のデータの前記演算手段への転送を省略することを特徴とする、請求項１又は２に記載のフィルタ処理装置。
【請求項４】
前記取得手段は、前記有効係数情報により特定されたフィルタ係数を前記演算手段に転送し、前記有効係数情報により特定されていないフィルタ係数の前記演算手段への転送を省略することを特徴とする、請求項１から３のいずれか１項に記載のフィルタ処理装置。
【請求項５】
前記有効係数情報が、少なくとも２つのフィルタについて共通であることを特徴とする、請求項１から４のいずれか１項に記載のフィルタ処理装置。
【請求項６】
前記演算手段は、第１の有効係数情報により特定された第１のフィルタのフィルタ係数を用いた畳み込み演算を行い、続けて前記第１の有効係数情報により特定された第２のフィルタのフィルタ係数を用いた畳み込み演算を行うことを特徴とする、請求項５に記載のフィルタ処理装置。
【請求項７】
前記データ処理装置は、複数のグループに分類されている複数のフィルタを用い、
前記取得手段は、前記フィルタが所属するグループに対応付けられた、前記有効係数情報を取得する
ことを特徴とする、請求項１から６のいずれか１項に記載のフィルタ処理装置。
【請求項８】
前記データ処理装置は、複数の階層を含むニューラルネットワークに従う処理を行い、
前記データ処理装置は、第１の階層の複数の特徴面のそれぞれに対応するフィルタを用いた前記第１の階層の特徴面に対するフィルタ処理により、第２の階層の複数の特徴面のそれぞれを算出し、
前記第１の階層の複数の特徴面のそれぞれに対応するフィルタについて、前記有効係数情報は共通であることを特徴とする、請求項１から７のいずれか１項に記載のフィルタ処理装置。
【請求項９】
前記データ処理装置は、第３の階層の複数の特徴面のそれぞれに対応するフィルタを用いた前記第３の階層の特徴面に対するフィルタ処理により、第４の階層の複数の特徴面のそれぞれを算出し、
前記第３の階層の複数の特徴面のそれぞれに対応するフィルタについて、前記有効係数情報は共通であり、
前記第１の階層の複数の特徴面のそれぞれに対応するフィルタと、前記第３の階層の複数の特徴面のそれぞれに対応するフィルタとの間で、前記有効係数情報は異なっている
ことを特徴とする、請求項８に記載のフィルタ処理装置。
【請求項１０】
前記特徴面のデータを格納する特徴面保持手段をさらに備え、
前記取得手段は、前記特徴面保持手段に格納されている特徴面のデータの一部をバッファすることを特徴とする、請求項１から９のいずれか１項に記載のフィルタ処理装置。
【請求項１１】
前記フィルタ係数を格納する係数保持手段をさらに備え、
前記取得手段は、前記係数保持手段に格納されているフィルタ係数の一部をバッファすることを特徴とする、請求項１から１０のいずれか１項に記載のフィルタ処理装置。
【請求項１２】
前記有効係数情報が、前記フィルタの各位置について、フィルタ係数を畳み込み演算に用いるかどうかを特定することを特徴とする、請求項１から１１のいずれか１項に記載のフィルタ処理装置。
【請求項１３】
前記有効係数情報が、前記畳み込み演算に用いられる１つのフィルタ係数の前記フィルタにおける位置を示す情報と、前記畳み込み演算に用いられる別のフィルタ係数の前記１つのフィルタ係数に対する相対位置を示す情報と、を含むことを特徴とする、請求項１から１２のいずれか１項に記載のフィルタ処理装置。
【請求項１４】
特徴面に対してフィルタを用いた畳み込み演算を行うデータ処理装置が行う制御方法であって、
前記特徴面のデータと、前記フィルタが有するフィルタ係数と、該フィルタ係数の中で前記畳み込み演算に用いられるフィルタ係数を特定する、前記フィルタに対応付けられた有効係数情報と、を取得する取得工程と、
前記有効係数情報により特定された前記フィルタ係数と、前記フィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を行う演算工程と、
を含むことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフィルタ処理装置及びその制御方法に関し、特に、例えば対象データから特定のパターンを認識する処理のような、ニューラルネットワークを用いた処理に関する。
【背景技術】
【０００２】
ニューラルネットワークを用いた処理の応用分野が広がっている。例えば、深層学習の進歩に伴って画像認識の精度が上がっており、深層学習のためには一般に畳み込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ，  ＣＮＮ）が用いられている。
【０００３】
ＣＮＮのようなニューラルネットワークを用いた演算処理にはフィルタ処理が含まれ、フィルタ処理で行われる畳み込み演算は多数の積和演算を含んでいる。このようなニューラルネットワークを携帯端末又は車載機器などの組み込みシステムにおいて用いるために、フィルタ処理を高速に行うことが求められている。例えば特許文献１では、複数の特徴面データに対する共通のフィルタ係数を用いた畳み込み演算を並列に行うことにより、処理を高速化させることが記載されている。
【０００４】
一方で、ニューラルネットワークの応用技術も進歩している。例えば非特許文献１は、画像認識技術に関連して、拡張畳込み演算方式(Dilated Convolution)を用いることを提案している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１８−６７１５４号公報
【非特許文献】
【０００６】
【非特許文献１】Y. Wei, et al., “Revisiting Dilated Convolution: A Simple Approach for Weakly- and Semi- Supervised Semantic Segmentation,” IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2018.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ニューラルネットワークを用いた処理のさらなる高速化が求められている。
【０００８】
本発明は、フィルタ処理を高速化することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の目的を達成するために、例えば、本発明のデータ処理装置は以下の構成を備える。すなわち、
特徴面に対してフィルタを用いた畳み込み演算を行うデータ処理装置であって、
前記特徴面のデータと、前記フィルタが有するフィルタ係数と、該フィルタ係数の中で前記畳み込み演算に用いられるフィルタ係数を特定する、前記フィルタに対応付けられた有効係数情報と、を取得する取得手段と、
前記有効係数情報により特定された前記フィルタ係数と、前記フィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を行う演算手段と、
を備える。
【発明の効果】
【００１０】
フィルタ処理を高速化することができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態におけるフィルタ処理のフローチャート。
【図２】一実施形態で用いられるニューラルネットワークの構造例を示す図。
【図３】一実施形態に係るフィルタ処理装置の構成例を示すブロック図。
【図４】フィルタ処理部３０５の構成例を示すブロック図。
【図５】畳み込み演算部４０５の構成例を示すブロック図。
【図６】一実施形態で用いられるフィルタ係数及び有効係数情報を示す図。
【図７】一実施形態におけるフィルタ処理の進行を説明する図。
【図８】一実施形態で用いられる有効係数情報を示す図。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１３】
（フィルタ処理装置の構成例）
図３は、本発明の一実施形態に係るフィルタ処理装置のハードウェア構成例を示すブロック図である。
【００１４】
フィルタ処理部３０５は、後に詳細に説明するように、特徴面に対してフィルタを用いたフィルタ処理を行う。フィルタ処理部３０５は、このようなフィルタ処理を含む各処理を行うことにより、ニューラルネットワークに従う演算を行うことができる。図３に示すフィルタ処理装置３００は、このようなフィルタ処理部３０５を用いて、画像に対してニューラルネットワークに従う演算を行う。例えば、フィルタ処理部３０５は、ＲＡＭ３０８に保存されている、画像処理部３０９により処理された画像に対して、図１のフローチャートに従う処理を行い、処理結果をデータ保存部３０２又はＲＡＭ３０８に出力することができる。もっとも、このようなフィルタ処理部３０５は、画像処理以外の用途で用いられてもよく、すなわち図３に示されるフィルタ処理部３０５以外の構成は、本発明にとって必須ではない。なお、フィルタ処理部３０５は、静止画像又は動画像に対してフィルタ処理を行うことができる。フィルタ処理部３０５は、例えば、動画像が含む複数のフレームのそれぞれに対してフィルタ処理を行うことができる。
【００１５】
入力部３０１は、ユーザからの指示、又はデータを受け付ける装置である。入力部３０１は、例えば、キーボード、ポインティング装置、又はボタン等であってもよい。
【００１６】
データ保存部３０２は画像データのようなデータを保存することができる。データ保存部３０２は、例えば、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ、メモリーカード、ＣＦカード、スマートメディア、ＳＤカード、メモリスティック、ｘＤピクチャーカード、又はＵＳＢメモリなどであってもよい。データ保存部３０２は、プログラム又はその他のデータを保存してもよい。なお、後述するＲＡＭ３０８の一部がデータ保存部３０２として用いられてもよい。
【００１７】
通信部３０３は、機器間の通信を行うためのインタフェース（Ｉ／Ｆ）である。フィルタ処理装置３００は、通信部３０３を介して、他の装置とデータを交換することができる。なお、フィルタ処理装置３００は、通信部３０３を介して接続された記憶装置を、仮想的なデータ保存部として、すなわちデータ保存部３０２として用いてもよい。
【００１８】
表示部３０４は、ユーザなどに対して情報を表示する装置である。表示部３０４は、例えば、画像処理前又は画像処理後の画像を表示すること、又はＧＵＩなどのその他の画像を表示することができる。表示部３０４は、例えば、ＣＲＴ又は液晶ディスプレイなどであってもよい。表示部３０４は、ケーブルなどで接続された、フィルタ処理装置３００の外部にある装置であってもよい。なお、入力部３０１及び表示部３０４が同一装置であってもよく、例えば、入力部３０１及び表示部３０４はタッチスクリーン装置であってもよい。この場合、タッチスクリーン上での入力は、入力部３０１への入力に相当する。
【００１９】
ＣＰＵ３０６は、フィルタ処理装置３００全体の動作を制御する。また、ＣＰＵ３０６は、フィルタ処理部３０５によって生成され、データ保存部３０２又はＲＡＭ３０８に保存されている処理結果に基づいて、画像処理又は画像認識処理のような各種の処理を行うことができる。ＣＰＵ３０６は、これらの処理結果をＲＡＭ３０８に保存することができる。
【００２０】
ＲＯＭ３０７及びＲＡＭ３０８は、ＣＰＵ３０６による処理に必要なプログラム、データ、及び作業領域などを、ＣＰＵ３０６に提供する。ＣＰＵ３０６による処理に必要なプログラムはデータ保存部３０２又はＲＯＭ３０７に格納されていてもよく、データ保存部３０２又はＲＯＭ３０７からＲＡＭ３０８に読み込まれてもよい。また、データ処理装置３００は通信部３０３を介してプログラムを受信してもよい。この場合、プログラムは、いったんデータ保存部３０２に記録された後にＲＡＭ３０８に読み込まれてもよいし、通信部３０３からＲＡＭ３０８に直接読み込まれてもよい。いずれの場合であっても、ＣＰＵ３０６はＲＡＭ３０８に読み込まれたプログラムを実行することができる。
【００２１】
画像処理部３０９は、画像データに対する画像処理を行うことができる。例えば、画像処理部３０９は、ＣＰＵ３０６からの指示に従って、データ保存部３０２に書き込まれている画像データを読み出し、画素値のレンジ調整を行い、処理結果をＲＡＭ３０８に書き込むことができる。
【００２２】
図３に示すフィルタ処理装置３００は、上記の各部を内部に有している。上記の各部は、互いにデータを送受信できるように接続されている。しかしながら、例えば入力部３０１、データ保存部３０２、及び表示部３０４を含む各部は、公知の通信方式に従う通信路で互いに接続されていてもよい。すなわち、一実施形態に係るデータ処理装置は、物理的に分かれている複数の装置によって構成されていてもよい。
【００２３】
また、図３に示すフィルタ処理装置３００は１つのＣＰＵ３０６を有しているが、複数のＣＰＵを有していてもよい。さらに、フィルタ処理装置３００が有する各部（例えばフィルタ処理部３０５及び画像処理部３０９）のうちの少なくとも一部の機能が、ＣＰＵ３０６がプログラムに従って動作することにより実現されてもよい。
【００２４】
フィルタ処理装置３００は、図３に示されていない様々な構成要素を有していてもよいが、その説明は省略する。
【００２５】
（ニューラルネットワークの構造例）
上記のとおり、フィルタ処理部３０５は、特徴面に対してフィルタを用いたフィルタ処理を行うことができる。また、フィルタ処理部３０５は、複数の階層を含むニューラルネットワークに従う演算を行うことができ、ここで少なくとも１つの階層でこのようなフィルタ処理を行うことができる。フィルタ処理には、畳み込み演算が含まれ、畳み込み演算には積和演算が含まれる。以下では、フィルタ処理部３０５が用いるニューラルネットワークの一例を説明する。
【００２６】
ニューラルネットワークの一種であるＣＮＮは、複数の階層（レイヤ）が階層的に接続された構造を有する。各階層は、複数枚の特徴面（特徴画像）を含んでいてもよい。以下では、前階層の特徴面に対し、対応する処理を行うことで得られた特徴面のことを、次階層の特徴面（特徴画像）と呼ぶ。なお、以下では特徴面が２次元である場合について説明するが、特徴面は１次元であってもよいし、３次元以上の高次の特徴面であってもよい。
【００２７】
例えば、次階層の特徴面は、前階層の特徴面に対するフィルタ処理を用いて計算されてもよい。このフィルタ処理では、前階層に対応するフィルタ係数で構成されるフィルタを用いることができる。次階層の複数の特徴面のそれぞれは、対応するフィルタを用いたフィルタ処理により生成することができる。また、次階層の１枚の特徴面を計算するために、前階層の複数枚の特徴面が用いられてもよい。例えば、前階層の複数枚の特徴面のそれぞれに対して、対応するフィルタを用いたフィルタ処理を行い、得られた複数の処理結果に基づいて次階層の１枚の特徴面を得ることができる。
【００２８】
例えば、フィルタ処理後の特徴面（Ｏｉ，ｊ（ｎ））は、前階層の特徴面（Ｉｉ，ｊ（ｍ））と、フィルタ係数（Ｃ０，０（ｍ，ｎ）〜ＣＸ−１，Ｙ−１（ｍ，ｎ））と、を用いて、式（１）に従って算出できる。ここで、ｉ，ｊは特徴面の座標を示す。また、ｘ，ｙはフィルタの座標を示す。ｎは次階層の特徴面の番号である。また、ｍは前階層の特徴面の番号であり、前階層の特徴面はＭ枚である。フィルタ係数は、前階層の特徴面ごとに、及び次階層の特徴面ごとに、異なっており、１つの特徴面の組み合わせについてＸ×Ｙ個ある。
【数１】
2020204894.tif 000003
上記のように、次階層の１つの特徴面を計算するためのフィルタ処理で行われる積和演算回数はＭ×Ｘ×Ｙ回である。このように、フィルタは複数のフィルタ係数を有しており、フィルタ処理後の特徴面の各画素の画素値は、前階層の特徴面の対応する画素周辺の画素群の画素値と、フィルタが有するフィルタ係数と、の畳み込み演算により得られる。
【００２９】
このようなフィルタ処理により得られた特徴面Ｏｉ，ｊ（ｎ）に対して、さらに活性化処理又はプーリング処理などの処理を行うことにより、次階層の特徴面を算出することができる。
【００３０】
図２は、ニューラルネットワークの具体的な構造例を示す。図２に示すニューラルネットワークにおいては、階層数は４であり、各階層（レイヤ）には４枚の特徴面が含まれる。それぞれの階層の特徴面は、特徴面ごとに定められているフィルタを、特徴面の画素情報（特徴面データ）に適用することにより得られたフィルタ処理結果に基づいて得られる。ここで、フィルタのフィルタ係数は、公知の学習技術に従って予め得られている。また、フィルタを適用するフィルタ処理は積和演算であり、複数の乗算及び累積加算を含んでいる。図２において、矢印は積和演算を示す。
【００３１】
図６（Ａ）（Ｃ）（Ｅ）は、いくつかの特徴面を算出するために用いられるフィルタの例を示す。フィルタ６０１は、特徴面（２，１）を算出するために用いられるフィルタである。特徴面（２，１）の各画素の画素値は、フィルタ６０１に含まれる４つのフィルタを、それぞれ特徴面（１，１）、特徴面（１，２）、特徴面（１，３）、及び特徴面（１，４）の対応する画素に適用し、得られた値を積算することにより得られる。フィルタ６０３，６０５は、同様に、それぞれ特徴面（３，１）及び特徴面（４，１）を算出するために用いられるフィルタである。
【００３２】
すなわち、フィルタ処理部３０５は、複数枚の特徴面２０１とフィルタ６０１のフィルタ係数とを用いた積和演算により、特徴面（２，１）を算出する。同様に、フィルタ処理部３０５は、複数枚の特徴面２０１と不図示のフィルタ係数とを用いた積和演算を介して、レイヤ２にある複数枚の特徴面２０２を生成する。さらに、フィルタ処理部３０５は、複数枚の特徴面２０２とフィルタ係数とを用いた積和演算を介して、レイヤ３にある複数枚の特徴面２０３を生成する。そして、フィルタ処理部３０５は、複数枚の特徴面２０４とフィルタ係数とを用いた積和演算を介して、レイヤ４にある複数枚の特徴面２０４を生成する。
【００３３】
ここで、フィルタ６０３，６０５のように、いくつかのフィルタ係数が０であってもよい。非特許文献１に記載の拡張畳込み演算方式(Dilated Convolution)においては、フィルタ処理に用いるフィルタが有するいくつかのフィルタ係数は０である。また、学習時に、いくつかのフィルタ係数が０になるように学習が行われてもよい。
【００３４】
本実施形態においては、フィルタ処理において、特徴面と、フィルタ係数と、に加えて、このフィルタ係数の中で畳み込み演算に用いられるフィルタ係数を特定する情報が用いられる。以下では、畳み込み演算に用いられるフィルタ係数を特定する情報のことを有効係数情報と呼ぶ。また、畳み込み演算に用いられるフィルタ係数のことを有効係数と呼び、フィルタにおける有効係数の位置を有効位置と呼ぶ。有効係数情報は、フィルタの各位置について、フィルタ係数を畳み込み演算に用いるかどうかを特定することができる。有効係数情報は、それぞれのフィルタに対応付けられていてもよい。例えば、同じフィルタサイズ（例えば３×３）の複数のフィルタに、それぞれ異なる有効係数情報が対応付けられていてもよい。
【００３５】
例えば、対象画素におけるフィルタ処理後の画素値は、フィルタの基準点から所定の相対位置（有効位置）にある有効係数と、対象画素から同じ所定の相対位置にある画素の画素値と、の積和演算により得られる。有効位置は、対象画素におけるフィルタ処理後の画素値を算出するフィルタ演算において、積和演算の対象となる画素の、対象画素からの相対配置にも対応する。一実施形態において、有効係数は０ではないフィルタ係数を指し、有効係数情報とは、フィルタについて、フィルタ係数が０ではない位置を示す情報である。なお、有効係数情報と、フィルタ係数の情報とは、一体になっていてもよい。例えば、フィルタの各位置についてのフィルタ係数を示す情報が、フィルタが有するフィルタ係数と、有効係数情報と、の双方を表してもよい。すなわち、この情報は、フィルタのいくつかの位置についてフィルタ係数が０であることを示してもよく、この場合、０ではないフィルタ係数が畳み込み演算に用いられるフィルタ係数であることを特定することができる。
【００３６】
このような実施形態においては、対象画素におけるフィルタ処理後の画素値を求める積和演算において、無効係数を用いた積和演算を省略することができる。一実施形態において、無効係数とは、有効係数ではないフィルタ係数のことを指し、例えば、０であるフィルタ係数のことを指す。
【００３７】
図６（Ｂ）、（Ｄ）、及び（Ｆ）は、それぞれフィルタ６０１，６０３，６０５に対応する、有効係数情報６０２，６０４，６０６を示す。図６（Ｂ）の例において、有効係数情報６０２は、レイヤ１の特徴面（１，１）〜（１，４）のそれぞれに適用されるフィルタ（フィルタ６０１に含まれる４つの３×３フィルタ）について共通である。言い換えれば、有効係数情報６０２は、レイヤ２の特徴面（２，１）を算出するために用いられるフィルタについて共通である。このように、有効係数情報が、少なくとも２つのフィルタについて共通であってもよい。有効係数情報６０２によると、フィルタは有効係数を９個有しており、すなわち全てのフィルタ係数が有効である。
【００３８】
このように、一実施形態において、前階層の複数枚の特徴面（例えば特徴面（１，１）〜（１，４））のそれぞれに対して、対応するフィルタ（例えばフィルタ６０１に含まれる４つの３×３フィルタ）を用いたフィルタ処理が行われる。そして、このフィルタ処理に基づいて、次階層の特徴面（例えば特徴面（２，１））が算出される。このとき、前階層の複数枚の特徴面（例えば特徴面（１，１）〜（１，４））のそれぞれに適用されるフィルタについて、有効係数情報６０２は共通であってもよい。すなわち、フィルタ処理装置３００は、レイヤ１（第１の階層）の複数の特徴面のそれぞれに対応するフィルタを用いたレイヤ１（第１の階層）の特徴面に対するフィルタ処理により、レイヤ２（第２の階層）の複数の特徴面のそれぞれを算出することができる。ここで、レイヤ１の複数の特徴面のそれぞれに対応するフィルタについて、有効係数情報は共通であってもよい。一方で、前階層の複数枚の特徴面のそれぞれに適用されるフィルタについて、有効係数情報６０２が異なっていてもよい。
【００３９】
また、一実施形態において、前階層の特徴面（例えば特徴面（１，１））に対してフィルタ処理が行われる。そして、このフィルタ処理に基づいて、次階層の複数の特徴面（例えば特徴面（２，１）〜（２，４））が算出される。このフィルタ処理においては、算出される次階層の特徴面に対応するフィルタが用いられる。このとき、次階層の複数枚の特徴面（例えば特徴面（２，１）〜（２，４））のそれぞれを算出するために適用されるフィルタについて、有効係数情報６０２は共通であってもよい。一方で、次階層の複数枚の特徴面のそれぞれを算出するために適用されるフィルタについて、有効係数情報６０２が異なっていてもよい。
【００４０】
上記のように、前階層の特徴面から次階層の特徴面を算出するために、フィルタ係数（Ｃ０，０（ｍ，ｎ）〜ＣＸ−１，Ｙ−１（ｍ，ｎ））を持つフィルタを用いることができる。この場合、前階層の特徴面から次階層の特徴面を算出するために適用されるフィルタについて、有効係数情報６０２は（ｍ，ｎ）の組み合わせにかかわらず同一であってもよい。
【００４１】
有効係数情報６０４も、レイヤ２の特徴面（２，１）〜（２，４）のそれぞれに適用されるフィルタについて共通である。有効係数情報６０４によると、フィルタは有効係数を５個有しており、４隅にある４個のフィルタ係数は無効である。同様に、有効係数情報６０６によると、フィルタは有効係数を６個有しており、１行目の３個のフィルタ係数が無効である。このように、有効係数情報は階層ごとに異なっていてもよい。例えば、複数の階層のうちの少なくとも２つの階層における特徴面を算出するために用いられるフィルタについて、有効係数情報は異なっていてもよい。すなわち、フィルタ処理装置３００は、レイヤ３（第３の階層）の複数の特徴面のそれぞれに対応するフィルタを用いたレイヤ３（第３の階層）の特徴面に対するフィルタ処理により、レイヤ４（第４の階層）の複数の特徴面のそれぞれを算出することができる。ここで、レイヤ３の複数の特徴面のそれぞれに対応するフィルタについて、有効係数情報は共通であってもよい。一方で、レイヤ１の複数の特徴面のそれぞれに対応するフィルタと、レイヤ３の複数の特徴面のそれぞれに対応するフィルタとの間で、有効係数情報は異なっていてもよい。
【００４２】
以下、有効係数情報を用いることにより積和演算を省略できることについて説明する。フィルタの有効係数情報をＥｘ，ｙ（ｎ）とする。座標（ｘ，ｙ）のフィルタ係数が有効である場合、Ｅｘ，ｙ（ｎ）の値は１である。また、座標（ｘ，ｙ）のフィルタ係数が有効ではない場合、Ｅｘ，ｙ（ｎ）の値は０である。この例では、次階層の同じ特徴面を算出するために用いられるフィルタ（ｎの値が共通であるフィルタ）は、同じ有効係数情報Ｅｘ，ｙ（ｎ）を共有している。この場合、フィルタ処理後の特徴面（Ｏｉ，ｊ（ｎ））は、式（１）に有効係数情報を追加して得られた式（２）に従って得ることができる。上記のように定義した有効係数情報を用いると、式（２）は、式（１）と同じ値を与える。
【数２】
2020204894.tif 000004
【００４３】
ここで、Ｅｘ，ｙ（ｎ）の値が０である（ｘ，ｙ）の組み合わせについては、Ｉｉ＋ｘ，ｊ＋ｙ（ｍ）×Ｅｘ，ｙ（ｎ）×Ｃｘ，ｙ（ｍ，ｎ）の値は０である。したがって、Ｅｘ，ｙ（ｎ）の値が０である（ｘ，ｙ）の組み合わせについての積和演算を省略しても、得られる特徴面（Ｏｉ，ｊ（ｎ））は変わらない。このように、本実施形態においては、無効係数を用いた積和演算を省略することができる。
【００４４】
なお、Ｅｘ，ｙ（ｎ）の値が１の場合、フィルタ係数Ｃｘ，ｙ（ｍ，ｎ）の値は任意である。一方で、Ｅｘ，ｙ（ｎ）の値が０の場合、フィルタ係数Ｃｘ，ｙ（ｍ，ｎ）の値が０になるように、フィルタ係数を設定するか、又は、フィルタ係数の学習を行うことができる。
【００４５】
処理に用いられるニューラルネットワークの構造を示す情報は、フィルタ処理部３０５が有していてもよいし、データ保存部３０２又はＲＡＭ３０８などに格納されていてもよい。ニューラルネットワークの構造を示す情報（以下、ネットワーク情報と呼ぶ）は、例えば、各階層についての、積和演算の計算量、特徴面のサイズ、特徴面の枚数、及びフィルタの有効係数情報などを含むことができる。
【００４６】
なお、図６に示される例では、フィルタサイズ（フィルタの高さ及び幅）は３×３である。しかしながら、フィルタサイズに制限はなく、任意のフィルタサイズを用いることができる。有効係数情報は、任意のフィルタサイズのフィルタについて、有効位置を表すことができる。
【００４７】
このように、本実施形態においては、フィルタ処理において有効係数情報を用いることにより、フィルタ処理結果に影響しない積和演算を省略することができる。このため、フィルタ処理の処理効率を向上させることができる。
【００４８】
（フィルタ処理部の構成及び処理）
図４は、フィルタ処理部３０５の機能構成例を示す。フィルタ処理部３０５は、特徴面に対してフィルタを用いたフィルタ処理を行う、畳み込み演算部４０５を有している。例えば、畳み込み演算部４０５、上記の式（２）に従って、フィルタ係数と特徴面データとからフィルタ処理結果を求めることができる。
【００４９】
フィルタ処理部３０５は、有効情報保持部４０２、係数保持部４０３、及び特徴面保持部４０４をさらに有していてもよい。有効情報保持部４０２は、有効係数情報Ｅｘ，ｙ（ｎ）を取得及び保持し、畳み込み演算部４０５に供給することができる。係数保持部４０３は、フィルタ係数Ｃｘ，ｙ（ｍ，ｎ）を取得及び保持し、畳み込み演算部４０５に供給することができる。また、特徴面保持部４０４は、特徴面Ｉ（ｍ）を取得及び保持し、畳み込み演算部４０５に供給することができる。
【００５０】
フィルタ処理部３０５は、さらに、後処理部４０６を有していてもよい。後処理部４０６は、畳み込み演算部４０５により得られたフィルタ処理の結果に対して、活性化処理又はプーリング処理のようなさらなる処理を行うことができる。なお、後処理部４０６の代わりに、例えばＣＰＵ３０６などの別の処理部が、このようなさらなる処理を行ってもよい。
【００５１】
フィルタ処理部３０５は、さらに、制御部４０１を有していてもよい。制御部４０１は、上述の各部の動作を制御することができる。制御部４０１は、例えばＣＰＵ又はシーケンサーなどの制御回路を有していてもよい。
【００５２】
図５は、畳み込み演算部４０５の構成の一例を示す。畳み込み演算部４０５は、特徴面のデータと、フィルタが有するフィルタ係数と、畳み込み演算に用いられるフィルタ係数を特定する、フィルタに対応付けられた有効係数情報と、を取得する取得部を有している。図５において、この取得部は、特徴面キャッシュ５０４、係数キャッシュ５０６、及び有効情報キャッシュ５０７で構成されている。特徴面キャッシュ５０４は、特徴面のデータを取得する。特徴面キャッシュ５０４は、特徴面保持部４０４から取得した特徴面データを一時的に保持することにより、特徴面保持部４０４に格納されている特徴面データの一部をバッファすることができる。係数キャッシュ５０６は、有効係数情報により特定されたフィルタ係数を取得する。係数キャッシュ５０６は、係数保持部４０３から取得したフィルタ係数を一時的に保持することにより、係数保持部４０３に格納されているフィルタ係数の一部をバッファすることができる。有効情報キャッシュ５０７は、有効係数情報を取得する。有効情報キャッシュ５０７は、有効情報保持部４０２から取得した有効係数情報を一時的に保持することができる。
【００５３】
また、畳み込み演算部４０５は、有効係数情報により特定されたフィルタ係数と、フィルタ係数に対応する特徴面のデータと、の畳み込み演算を行う演算部を有している。図５において、この演算部は、乗算器５０１、加算器５０２、及び処理結果格納部５０３で構成されている。乗算器５０１は、特徴面キャッシュ５０４から供給された１画素の特徴面データと、係数キャッシュ５０６から供給された１つのフィルタ係数と、の積を計算し、加算器５０２に転送する。加算器５０２は、乗算器５０１から転送された積を累積することにより、特徴面データとフィルタ係数との積和演算結果（畳み込み演算結果）を生成する。加算器５０２は、乗算器５０１から転送された積と、結果格納部５０３に保持されている値と、を加算し、得られた値を結果格納部５０３にすることを繰り返すことで、積和演算結果を生成することができる。こうして、結果格納部５０３に格納された複数の積和演算の結果（フィルタ処理結果）は、畳み込み演算の結果として出力される。
【００５４】
畳み込み演算部４０５は、アドレス制御部５０５を有していてもよい。アドレス制御部５０５は、有効情報キャッシュ５０７から有効係数情報を取得することができる。そして、アドレス制御部５０５は、有効係数情報に従って、特徴面キャッシュ５０４からの特徴面データの乗算器５０１への転送を制御できる。また、アドレス制御部５０５は、係数キャッシュ５０６からのフィルタ係数の乗算器５０１への転送も制御できる。
【００５５】
上記の通り、フィルタが有するフィルタ係数の中で有効係数情報により特定されていないフィルタ係数（例えば無効係数）と、有効係数情報により特定されていないフィルタ係数に対応する特徴面のデータと、の畳み込み演算は、省略することができる。すなわち、フィルタ処理部３０５（例えば乗算器５０１）は、このような畳み込み演算を省略することができる。例えば、アドレス制御部５０５の制御に従って、特徴面キャッシュ５０４は、有効係数情報により特定されたフィルタ係数に対応する特徴面のデータを乗算器５０１に転送することができる。一方で、アドレス制御部５０５の制御に従って、特徴面キャッシュ５０４は、有効係数情報により特定されていないフィルタ係数に対応する特徴面のデータの乗算器５０１への転送を省略することができる。同様に、アドレス制御部５０５の制御に従って、係数キャッシュ５０６は、有効係数情報により特定されたフィルタ係数を乗算器５０１に転送する一方で、有効係数情報により特定されていないフィルタ係数の乗算器５０１への転送を省略することができる。
【００５６】
図１は、フィルタ処理部３０５が行う処理のフローチャートの一例である。図１に示すフローチャートによれば、図６に示されるように、１つの階層について共通の有効係数情報が用いられる場合について、フィルタ処理を効率的に行うことができる。ステップＳ１０１〜Ｓ１１６に示される制御処理は、制御部４０１（例えば制御部４０１が有するＣＰＵ又はシーケンサーなど）が行うことができる。
【００５７】
ステップＳ１０１で制御部４０１は、入力層の特徴面データ、フィルタ処理に用いるフィルタ係数、及び有効係数情報をＲＡＭ３０８から読み出し、それぞれを特徴面保持部４０４、係数保持部４０３、有効情報保持部４０２に格納する。図２の例において、入力層の特徴面データはニューラルネットワークへの入力画像であり、この入力画像から特徴面２０１が算出される。
【００５８】
ステップＳ１０２では、レイヤごとのループが開始する。ステップＳ１０２で制御部４０１は、最初に特徴面が算出される階層から、順番に階層を選択することができる。ステップＳ１０２で選択された階層のことを次階層と呼ぶ。また、上記のとおり、次階層の特徴面は、前階層の特徴面を用いて算出される。図２の例において、制御部４０１は最初にレイヤ２を選択することができ、この場合、前階層はレイヤ１である。図２の例において、レイヤ２は、最初に特徴面が算出される階層である。
【００５９】
ステップＳ１０３で制御部４０１は、次階層に対応する有効係数情報を有効情報保持部４０２から読み出し、有効情報キャッシュ５０７に格納する。制御部４０１は、ネットワーク情報を参照して有効係数情報を読み出すことができる。
【００６０】
ステップＳ１０４では、次階層の特徴面ごとのループが開始する。ステップＳ１０４で制御部４０１は、次階層の特徴面を最初から順番に選択することができる。
【００６１】
ステップＳ１０５で制御部４０１は、結果格納部５０３に保持されている畳み込み演算結果を初期化する。例えば制御部４０１は、畳み込み演算結果をゼロに設定することができる。
【００６２】
ステップＳ１０６では、前階層の特徴面ごとの画像のループが開始する。ステップＳ１０６で制御部４０１は、前階層の特徴面を最初から順番に選択することができる。
【００６３】
ステップＳ１０７で制御部４０１は、ステップＳ１０６で選択された特徴面のデータを、特徴面キャッシュ５０４に転送する。制御部４０１は、有効係数情報により特定されたフィルタ係数に対応する特徴面データを転送することができる。一方で、制御部４０１は、有効係数情報により特定されていないフィルタ係数に対応する特徴面データを転送してもよい。また、制御部４０１は、ステップＳ１０６で選択された特徴面に対応するフィルタのフィルタ係数を、係数キャッシュ５０６に転送する。制御部４０１は、有効係数情報により特定されたフィルタ係数を転送することができる。一方で、制御部４０１は、有効係数情報により特定されていないフィルタ係数を転送してもよい。
【００６４】
ステップＳ１０８で畳み込み演算部４０５は、制御部４０１からの制御信号に従って、畳み込み演算を行う。畳み込み演算部４０５は、特徴面キャッシュ５０４、係数キャッシュ５０６、及び有効情報キャッシュ５０７に格納されている特徴面データ、フィルタ係数、有効係数情報に基づいて、畳み込み演算を行うことができる。詳細な処理については後述する。
【００６５】
ステップＳ１０９で制御部４０１は、前階層の特徴面ごとのループの終了判定を行う。前階層の全ての特徴面がステップＳ１０６で選択されている場合、処理はステップＳ１１０に進む。この場合、ステップＳ１０４で選択された次階層の特徴面についてのフィルタ処理結果が、処理結果格納部５０３に格納されている。前階層の全ての特徴面がステップＳ１０６で選択されていない場合、処理はステップＳ１０７に戻り、制御部４０１は前階層の次の特徴面を選択する。
【００６６】
ステップＳ１１０で後処理部４０６は、制御部４０１からの制御信号に従って、ステップＳ１０６〜Ｓ１０９のループで得られたフィルタ処理結果に対して後処理を行う。後処理部４０６は、ネットワーク情報に従って選択された後処理を行うことができる。例えば、後処理部４０６は、フィルタ処理結果に対して活性化処理を行うことができる。一例として、後処理部４０６は、式（３）に従って、ＲｅＬＵ（Rectified Linear Unit）を用いた活性化処理の結果を得ることができる。
【数３】
2020204894.tif 000005
式（３）においてｆ（ｘ）は活性化関数であり、ｘは入力データである。もっとも、活性化関数の種類はＲｅＬＵには限定されず、他の非線形の関数、又は量子化関数が用いられてもよい。また、後処理部４０６は、活性化処理の結果に対してさらにプーリング処理を行ってもよい。プーリング処理によれば、次階層の特徴面のサイズを調整することができる。なお、活性化処理及びプーリング処理のうちの一方又は双方は省略されてもよい。
【００６７】
ステップＳ１１１で制御部４０１は、後処理部４０６による処理結果を特徴面保持部４０４に格納する。こうして特徴面保持部４０４に格納された処理結果は、次階層の特徴面データであり、さらなる階層の特徴面データの算出のために用いることができる。
【００６８】
ステップＳ１１２で制御部４０１は、次階層の特徴面ごとのループの終了判定を行う。次階層の全ての特徴面がステップＳ１０４で選択されている場合、処理はステップＳ１１３に進む。そうではない場合、処理はステップＳ１０４に戻り、制御部４０１は次階層の次の特徴面を選択する。
【００６９】
ステップＳ１１３では制御部４０１は、階層ごとのループの終了判定を行う。全ての階層がステップＳ１０２で選択されている場合、図１の処理は終了する。このとき、特徴面保持部４０４には、入力画像が入力されたニューラルネットワークからの出力が格納されている。全ての階層がステップＳ１０２で選択されていない場合、処理はステップＳ１０２に戻り、制御部４０１は次の階層を選択する。
【００７０】
次に、ステップＳ１０８で行われる畳み込み演算処理についてより詳細に説明する。ステップＳ１０８は、ステップＳ１１４〜Ｓ１１６を含んでいる。なお、１枚の特徴面には複数の画素が含まれており、ステップＳ１１４〜Ｓ１１６の処理は、ステップＳ１０４で選択された次階層の特徴面のそれぞれの画素について繰り返される。以下では、ステップＳ１１４〜Ｓ１１６で画素値が算出される、次階層の特徴面の画素のことを、処理対象画素と呼ぶ。
【００７１】
ステップＳ１１４でアドレス制御部５０５は、有効情報キャッシュ５０７に保持されている有効係数情報に基づいて、アドレス情報を生成する。アドレス情報は、処理対象画素の画素値を算出するための積和演算で用いられる、前階層の特徴面データの、特徴面キャッシュ５０４内のアドレス（格納位置）を示す。また、アドレス情報は、処理対象画素の画素値を算出するための積和演算で用いられるフィルタ係数の、係数キャッシュ５０６内のアドレスを示す。
【００７２】
ここで、アドレス制御部５０５は、有効フィルタ係数のアドレスと、有効フィルタ係数に対応する特徴面データのアドレスのみを示す、アドレス情報を生成することができる。言い換えれば、アドレス制御部５０５は、無効フィルタ係数のアドレスと、無効フィルタ係数に対応する特徴面データのアドレスを示す、アドレス情報の生成を省略することができる。
【００７３】
ステップＳ１１５で乗算器５０１は、アドレス制御部５０５により生成されたアドレス情報に従う特徴面データを特徴面キャッシュ５０４から読み出す。また、乗算器５０１は、アドレス制御部５０５により生成されたアドレス情報に従うフィルタ係数を係数キャッシュ５０６から読み出す。
【００７４】
ステップＳ１１６で乗算器５０１は、読み出されたフィルタ係数と特徴面データの積を計算し、得られた積を加算器５０２に転送する。加算器５０２は、上記のとおり、特徴面データとフィルタ係数との積の累積結果（積和演算結果）を計算し、結果格納部５０３に保持する。
【００７５】
図４，５に示される実施形態においては、特徴面データ、フィルタ係数、及び有効係数情報のそれぞれは、２つのメモリ（保持部及びキャッシュ）に格納される。例えば、フィルタ処理に用いる前階層の特徴面データは特徴面キャッシュ５０４に保持され、フィルタ処理の結果得られる次階層の特徴面データは特徴面保持部４０４に保持される。このような構成によれば、前階層の特徴面データの読み出し（ステップＳ１０８）と次階層の特徴面データの書き込み（ステップＳ１１１）とを並列に行えるため、処理効率が向上する。また、有効係数情報及びフィルタ係数はそれぞれ有効情報キャッシュ５０７及び係数キャッシュ５０６に保持される。このため、畳み込み演算処理（ステップＳ１０８）の間に、別の階層（又は別のニューラルネットワーク）の特徴面を算出するために用いるフィルタ係数及び有効係数情報を取得する（ステップＳ１０１）ことができるため、処理効率が向上する。
【００７６】
さらには、この実施形態においては、各フィルタについて共通の有効係数情報を転送（ステップＳ１０３）した後に、フィルタ係数を複数回転送（ステップＳ１０７）することができる。すなわち、第１の有効係数情報により特定された第１のフィルタのフィルタ係数を用いた畳み込み演算を行い、続けて第１の有効係数情報により特定された第２のフィルタのフィルタ係数を用いた畳み込み演算を行うことができる。この場合、有効係数情報を複数回転送することが省略できるため、全体のデータ転送時間を短縮することができる。
【００７７】
（本実施形態による処理例）
本実施形態によれば、フィルタ処理において有効係数情報を用いることにより、フィルタ処理の処理効率を向上させることができる。本実施形態による処理時間の短縮効果について、図６に示すフィルタ係数を用いる場合について、図７を参照して説明する。
【００７８】
図７（Ａ）は、特徴面（２，１）を得るためのフィルタ処理のタイムチャートである。ここでは、フィルタ処理装置３００のクロック周期を１ｎｓとする。レイヤ２の特徴面を算出するために用いられるフィルタ６０１に含まれる４つの３×３フィルタは、９個の有効係数を持ち、すなわち全てのフィルタ係数は有効である。有効なフィルタ係数の値は０ではないため、積和演算は省略できない。
【００７９】
図７（Ａ）に示されるように、０ｎｓでは、ステップＳ１０３の処理が行われ、レイヤ２の有効係数情報が転送される。１ｎｓ〜９ｎｓでは、前階層の特徴面データＩｉ＋ｘ，ｊ＋ｙ（１）及びフィルタ係数Ｃｘ，ｙ（１，１）が転送され、積和演算が行われ、積和演算の結果が格納される。１個の有効係数と１個の特徴量データとを用いた計算は１ｎｓを要し、有効係数は９個あるため、所要時間は９ｎｓである。積和演算結果Ｏｉ，ｊ（１）を得るためには、前階層の４つの特徴面の特徴面データに対するフィルタ処理を行う必要がある。したがって、積和演算結果Ｏｉ，ｊ（１）を得るためには、フィルタ係数の転送を４回行い、上記の積和演算処理を４回繰り返すため、３６ｎｓの処理時間が必要である。
【００８０】
図７（Ｂ）は、特徴面（３，１）を得るためのフィルタ処理のタイムチャートである。レイヤ３の特徴面を算出するために用いられるフィルタ６０１に含まれる４つの３×３フィルタは、５個の有効係数を持つ。無効なフィルタ係数の値は０であるため、積和演算を省略できる。
【００８１】
図７（Ｂ）に示されるように、０ｎｓではレイヤ３の有効係数情報が転送される。１ｎｓ〜５ｎｓでは、前階層の特徴面（２，１）の５個の特徴面データと、５個の有効係数とが転送され、積和演算が行われ、その所要時間は５ｎｓである。レイヤ２と同様に、積和演算結果Ｏｉ，ｊ（１）を得るためには、上記の処理が４回繰り返されるため、２０ｎｓの処理時間が必要である。無効フィルタ係数についての計算が省略されるため、特徴面（２，１）と比べて、処理時間が１６ｎｓ短縮される。
【００８２】
図７（Ｃ）は、特徴面（４，１）を得るためのフィルタ処理のタイムチャートである。レイヤ３の特徴面を算出するために用いられるフィルタ６０１に含まれる４つの３×３フィルタは、６個の有効係数を持つ。図７（Ｃ）に示されるように、０ｎｓではレイヤ４の有効係数情報が転送される。１ｎｓ〜６ｎｓでは、前階層の特徴面（３，１）の６個の特徴面データと、６個の有効係数とが転送され、積和演算が行われ、その所要時間は６ｎｓである。レイヤ２と同様に、積和演算結果Ｏｉ，ｊ（１）を得るためには、上記の処理が４回繰り返されるため、２４ｎｓの処理時間が必要である。無効フィルタ係数についての計算が省略されるため、特徴面（２，１）と比べて、処理時間が１２ｎｓ短縮される。
【００８３】
（変形例）
図６の例では、同じ階層の特徴面を算出するために行われるフィルタ処理について、有効係数情報は共通であった。しかしながら、上述のとおり、前階層の複数枚の特徴面のそれぞれに適用されるフィルタについて、有効係数情報が異なっていてもよい。また、次階層の複数枚の特徴面のそれぞれを算出するために適用されるフィルタについて、有効係数情報が異なっていてもよい。このような場合でも、有効係数情報を用いることにより、無効フィルタ係数についての積和演算を省略できるため、フィルタ処理の処理効率が向上する。
【００８４】
例えば、有効係数情報が次階層の特徴面ごとに異なっている場合、有効係数情報をＥｘ，ｙ（ｍ，ｎ）と表すことができる。この場合、式（４）に従ってフィルタ演算を行うことができる。このような構成によれば、有効係数情報Ｅｘ，ｙ（ｍ，ｎ）の設定の自由度が向上するため、認識精度が向上するかもしれない。
【数４】
2020204894.tif 000006
【００８５】
また、データ処理装置は複数のフィルタを用いてもよく、この複数のフィルタは複数のグループに分類されていてもよい。ここで、１つのグループに属するフィルタについて、有効係数情報が共通であってもよい。また、別のグループに属するフィルタについては、有効係数情報が異なっていてもよい。例えば、次階層の複数枚の特徴面を算出するために用いられるフィルタが、複数のグループに分類されていてもよい。また、次階層の複数枚の特徴面が複数のグループに分類されていてもよく、１つのグループに属する特徴面を算出するために用いられるフィルタ群が１つのグループに分類されていてもよい。このような場合、有効情報キャッシュ５０７は、使用するフィルタが所属するグループに対応付けられた有効係数情報を取得することができる。
【００８６】
図４，５の例では、係数保持部４０３から転送され、係数キャッシュ５０６に格納されているフィルタ係数のうち、有効係数情報（及びアドレス情報）に従うフィルタ係数のみが、乗算器５０１に転送された。しかしながら、有効係数情報に従うフィルタ係数のみが、係数キャッシュ５０６に転送されてもよい。例えば、制御部４０１は、有効係数情報に従って選択されたフィルタ係数を、係数保持部４０３を介して、又は係数保持部４０３を介さずに、係数キャッシュ５０６に転送してもよい。同様に、有効係数情報に従う特徴面データのみが、特徴面キャッシュ５０４に転送されてもよい。このような構成によれば、係数保持部４０３又は特徴面保持部４０４から、畳み込み演算部４０５への、データ転送量を削減することができる。
【００８７】
有効係数情報の構成は、図６に示されるものに限定されない。例えば、図８に示すように、有効係数情報が、開始位置とスキャン方向とを示す情報であってもよい。ここで、開始位置は、畳み込み演算に用いられる１つのフィルタ係数のフィルタにおける位置を示す。また、スキャン方向は、畳み込み演算に用いられる別のフィルタ係数の１つのフィルタ係数に対する相対位置を示す。この場合、開始位置からスキャン方向によって特定される位置を、フィルタ内の有効位置として扱うことができる。図８の例では、スキャンパターン８０１及びスキャンパターン８０２が有効係数情報に相当する。例えば、スキャンパターン８０１は、開始位置と、次の有効位置を示すデータ列（Ｒ，Ｒ，Ｄ，Ｌ，Ｌ）と、により表される。図８において、Ｕ，Ｄ，Ｌ，Ｒは、それぞれ、次の有効位置が上側、下側、左側、右側にあることを意味する。このような有効係数情報も、フィルタの各位置について、フィルタ係数を畳み込み演算に用いるかどうかを特定することができる。この場合、ステップＳ１１４においてアドレス制御部５０５は、スキャンパターンに従ってアドレス情報を順次出力してもよい。また、ステップＳ１１４でアドレス制御部５０５は、有効係数情報６０６に基づいてこのようなスキャンパターンを生成してもよい。
【００８８】
図２にはＣＮＮが示されているが、フィルタ処理装置３００が処理可能なニューラルネットワークはＣＮＮには限られない。例えば、ニューラルネットワークは、ＲＮＮ又はＭＬＰ（多層パーセプトロン）のような、階層構造を有する他の種類のネットワークであってもよい。ＭＬＰの場合、特徴面データの処理単位が１画素になり、フィルタサイズが１×１になるが、同様に有効係数情報に従って一部の演算処理を省略することができる。
【００８９】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【００９０】
３００：フィルタ処理装置、３０５：フィルタ処理部、４０２：有効情報保持部、４０３：係数保持部、４０４：特徴面保持部、４０５：畳み込み演算部、５０１：乗算器、５０２：加算器、５０３：処理結果格納部、５０４：特徴面キャッシュ、５０５：アドレス制御部、５０６：係数キャッシュ、５０７：有効情報キャッシュ
【図１】
2020204894.tif 000007
【図２】
2020204894.tif 000008
【図３】
2020204894.tif 000009
【図４】
2020204894.tif 000010
【図５】
2020204894.tif 000011
【図６】
2020204894.tif 000012
【図７】
2020204894.tif 000013
【図８】
2020204894.tif 000014