IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

<>
  • 特許-フィルタ処理装置及びその制御方法 図1
  • 特許-フィルタ処理装置及びその制御方法 図2
  • 特許-フィルタ処理装置及びその制御方法 図3
  • 特許-フィルタ処理装置及びその制御方法 図4
  • 特許-フィルタ処理装置及びその制御方法 図5
  • 特許-フィルタ処理装置及びその制御方法 図6
  • 特許-フィルタ処理装置及びその制御方法 図7
  • 特許-フィルタ処理装置及びその制御方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-13
(45)【発行日】2023-12-21
(54)【発明の名称】フィルタ処理装置及びその制御方法
(51)【国際特許分類】
   G06F 17/10 20060101AFI20231214BHJP
   G06N 3/10 20060101ALI20231214BHJP
【FI】
G06F17/10 A
G06N3/10
【請求項の数】 13
(21)【出願番号】P 2019112129
(22)【出願日】2019-06-17
(65)【公開番号】P2020204894
(43)【公開日】2020-12-24
【審査請求日】2022-06-16
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】チン ソクイ
(72)【発明者】
【氏名】加藤 政美
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2018-32190(JP,A)
【文献】中原啓貴ほか,電波望遠鏡用デジタル分光器向け畳込みニューラルネットワークを用いた識別機に関して,電子情報通信学会技術研究報告[online],日本,一般社団法人電子情報通信学会,2019年05月02日,Vol.119 No.18,103~108ページ
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06N 3/10
(57)【特許請求の範囲】
【請求項1】
特徴面に対してフィルタを用いた畳み込み演算を行うフィルタ処理装置であって、
前記特徴面のデータと、前記フィルタが有するフィルタ係数と、該フィルタ係数の中で前記畳み込み演算に用いられるフィルタ係数を特定する、前記フィルタに対応付けられた有効係数情報と、を取得する取得手段と、
前記有効係数情報により特定されたフィルタ係数と、該特定されたフィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を行う演算手段と、
を備え
前記有効係数情報が、少なくとも2つのフィルタについて共通であり、
前記取得手段は、当該共通の有効係数情報を前記演算手段に1回転送後に、前記少なくとも2つのフィルタのそれぞれのフィルタ係数を前記演算手段に順次転送することを特徴とする、フィルタ処理装置。
【請求項2】
前記演算手段は、前記畳み込み演算において、前記フィルタが有するフィルタ係数の中で前記有効係数情報により特定されていないフィルタ係数と、当該有効係数情報により特定されていないフィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を省略することを特徴とする、請求項1に記載のフィルタ処理装置。
【請求項3】
前記取得手段は、前記有効係数情報により特定されたフィルタ係数に対応する前記特徴面のデータを前記演算手段に転送し、前記有効係数情報により特定されていないフィルタ係数に対応する前記特徴面のデータの前記演算手段への転送を省略することを特徴とする、請求項1又は2に記載のフィルタ処理装置。
【請求項4】
前記取得手段は、前記有効係数情報により特定されたフィルタ係数を前記演算手段に転送し、前記有効係数情報により特定されていないフィルタ係数の前記演算手段への転送を省略することを特徴とする、請求項1から3のいずれか1項に記載のフィルタ処理装置。
【請求項5】
第1の有効係数情報が、第1および第2のフィルタについて共通である場合に、前記演算手段は、前記第1の有効係数情報により特定された前記第1のフィルタのフィルタ係数を用いた畳み込み演算を行い、続けて前記第1の有効係数情報により特定された前記第2のフィルタのフィルタ係数を用いた畳み込み演算を行うことを特徴とする、請求項1から4のいずれか1項に記載のフィルタ処理装置。
【請求項6】
特徴面に対してフィルタを用いた畳み込み演算を行うフィルタ処理装置であって、
前記特徴面のデータと、前記フィルタが有するフィルタ係数と、該フィルタ係数の中で前記畳み込み演算に用いられるフィルタ係数を特定する、前記フィルタに対応付けられた有効係数情報と、を取得する取得手段と、
前記有効係数情報により特定されたフィルタ係数と、該特定されたフィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を行う演算手段と、
を備え、
前記フィルタ処理装置は、複数のグループに分類されている複数のフィルタを用い、
前記取得手段は、前記フィルタが所属するグループに対応付けられた、前記有効係数情報を取得する
ことを特徴とする、フィルタ処理装置。
【請求項7】
特徴面に対してフィルタを用いた畳み込み演算を行うフィルタ処理装置であって、
前記特徴面のデータと、前記フィルタが有するフィルタ係数と、該フィルタ係数の中で前記畳み込み演算に用いられるフィルタ係数を特定する、前記フィルタに対応付けられた有効係数情報と、を取得する取得手段と、
前記有効係数情報により特定されたフィルタ係数と、該特定されたフィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を行う演算手段と、
を備え、
前記フィルタ処理装置は、複数の階層を含むニューラルネットワークに従う処理を行い、
前記フィルタ処理装置は、第1の階層の複数の特徴面のそれぞれに対応するフィルタを用いた前記第1の階層の特徴面に対するフィルタ処理により、第2の階層の複数の特徴面のそれぞれを算出し、
前記第1の階層の複数の特徴面のそれぞれに対応するフィルタについて、前記有効係数情報は共通である
ことを特徴とする、フィルタ処理装置。
【請求項8】
前記フィルタ処理装置は、第3の階層の複数の特徴面のそれぞれに対応するフィルタを用いた前記第3の階層の特徴面に対するフィルタ処理により、第4の階層の複数の特徴面のそれぞれを算出し、
前記第3の階層の複数の特徴面のそれぞれに対応するフィルタについて、前記有効係数情報は共通であり、
前記第1の階層の複数の特徴面のそれぞれに対応するフィルタと、前記第3の階層の複数の特徴面のそれぞれに対応するフィルタとの間で、前記有効係数情報は異なっている
ことを特徴とする、請求項に記載のフィルタ処理装置。
【請求項9】
前記特徴面のデータを格納する特徴面保持手段をさらに備え、
前記取得手段は、前記特徴面保持手段に格納されている特徴面のデータの一部をバッファすることを特徴とする、請求項1からのいずれか1項に記載のフィルタ処理装置。
【請求項10】
前記フィルタ係数を格納する係数保持手段をさらに備え、
前記取得手段は、前記係数保持手段に格納されているフィルタ係数の一部をバッファすることを特徴とする、請求項1からのいずれか1項に記載のフィルタ処理装置。
【請求項11】
前記有効係数情報が、前記フィルタの各位置について、それぞれの位置のフィルタ係数を畳み込み演算に用いるかどうかを特定することを特徴とする、請求項1から10のいずれか1項に記載のフィルタ処理装置。
【請求項12】
特徴面に対してフィルタを用いた畳み込み演算を行うフィルタ処理装置であって、
前記特徴面のデータと、前記フィルタが有するフィルタ係数と、該フィルタ係数の中で前記畳み込み演算に用いられるフィルタ係数を特定する、前記フィルタに対応付けられた有効係数情報と、を取得する取得手段と、
前記有効係数情報により特定されたフィルタ係数と、該特定されたフィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を行う演算手段と、
を備え、
前記有効係数情報が、前記畳み込み演算に用いられる1つのフィルタ係数の前記フィルタにおける位置を示す情報と、前記畳み込み演算に用いられる別のフィルタ係数の前記1つのフィルタ係数に対する相対位置を示す情報と、を含む
ことを特徴とする、フィルタ処理装置。
【請求項13】
特徴面に対してフィルタを用いた畳み込み演算を行うフィルタ処理装置が行う制御方法であって、
前記特徴面のデータと、前記フィルタが有するフィルタ係数と、該フィルタ係数の中で前記畳み込み演算に用いられるフィルタ係数を特定する、前記フィルタに対応付けられた有効係数情報と、を取得する取得工程と、
前記有効係数情報により特定されたフィルタ係数と、該特定されたフィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を行う演算工程と、
を含み、
前記有効係数情報が、少なくとも2つのフィルタについて共通であり、
当該共通の有効係数情報を前記畳み込み演算を行う演算手段に1回転送後に、前記少なくとも2つのフィルタのそれぞれのフィルタ係数を前記畳み込み演算を行う演算手段に順次転送することを特徴とする、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はフィルタ処理装置及びその制御方法に関し、特に、例えば対象データから特定のパターンを認識する処理のような、ニューラルネットワークを用いた処理に関する。
【背景技術】
【0002】
ニューラルネットワークを用いた処理の応用分野が広がっている。例えば、深層学習の進歩に伴って画像認識の精度が上がっており、深層学習のためには一般に畳み込みニューラルネットワーク(Convolutional Neural Networks, CNN)が用いられている。
【0003】
CNNのようなニューラルネットワークを用いた演算処理にはフィルタ処理が含まれ、フィルタ処理で行われる畳み込み演算は多数の積和演算を含んでいる。このようなニューラルネットワークを携帯端末又は車載機器などの組み込みシステムにおいて用いるために、フィルタ処理を高速に行うことが求められている。例えば特許文献1では、複数の特徴面データに対する共通のフィルタ係数を用いた畳み込み演算を並列に行うことにより、処理を高速化させることが記載されている。
【0004】
一方で、ニューラルネットワークの応用技術も進歩している。例えば非特許文献1は、画像認識技術に関連して、拡張畳込み演算方式(Dilated Convolution)を用いることを提案している。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2018-67154号公報
【非特許文献】
【0006】
【文献】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.
【発明の概要】
【発明が解決しようとする課題】
【0007】
ニューラルネットワークを用いた処理のさらなる高速化が求められている。
【0008】
本発明は、フィルタ処理を高速化することを目的とする。
【課題を解決するための手段】
【0009】
本発明の目的を達成するために、例えば、本発明のフィルタ処理装置は以下の構成を備える。すなわち、
特徴面に対してフィルタを用いた畳み込み演算を行うフィルタ処理装置であって、
前記特徴面のデータと、前記フィルタが有するフィルタ係数と、該フィルタ係数の中で前記畳み込み演算に用いられるフィルタ係数を特定する、前記フィルタに対応付けられた有効係数情報と、を取得する取得手段と、
前記有効係数情報により特定されたフィルタ係数と、該特定されたフィルタ係数に対応する前記特徴面のデータと、の畳み込み演算を行う演算手段と、
を備え
前記有効係数情報が、少なくとも2つのフィルタについて共通であり、
前記取得手段は、当該共通の有効係数情報を前記演算手段に1回転送後に、前記少なくとも2つのフィルタのそれぞれのフィルタ係数を前記演算手段に順次転送する。
【発明の効果】
【0010】
フィルタ処理を高速化することができる。
【図面の簡単な説明】
【0011】
図1】一実施形態におけるフィルタ処理のフローチャート。
図2】一実施形態で用いられるニューラルネットワークの構造例を示す図。
図3】一実施形態に係るフィルタ処理装置の構成例を示すブロック図。
図4】フィルタ処理部305の構成例を示すブロック図。
図5】畳み込み演算部405の構成例を示すブロック図。
図6】一実施形態で用いられるフィルタ係数及び有効係数情報を示す図。
図7】一実施形態におけるフィルタ処理の進行を説明する図。
図8】一実施形態で用いられる有効係数情報を示す図。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0013】
(フィルタ処理装置の構成例)
図3は、本発明の一実施形態に係るフィルタ処理装置のハードウェア構成例を示すブロック図である。
【0014】
フィルタ処理部305は、後に詳細に説明するように、特徴面に対してフィルタを用いたフィルタ処理を行う。フィルタ処理部305は、このようなフィルタ処理を含む各処理を行うことにより、ニューラルネットワークに従う演算を行うことができる。図3に示すフィルタ処理装置300は、このようなフィルタ処理部305を用いて、画像に対してニューラルネットワークに従う演算を行う。例えば、フィルタ処理部305は、RAM308に保存されている、画像処理部309により処理された画像に対して、図1のフローチャートに従う処理を行い、処理結果をデータ保存部302又はRAM308に出力することができる。もっとも、このようなフィルタ処理部305は、画像処理以外の用途で用いられてもよく、すなわち図3に示されるフィルタ処理部305以外の構成は、本発明にとって必須ではない。なお、フィルタ処理部305は、静止画像又は動画像に対してフィルタ処理を行うことができる。フィルタ処理部305は、例えば、動画像が含む複数のフレームのそれぞれに対してフィルタ処理を行うことができる。
【0015】
入力部301は、ユーザからの指示、又はデータを受け付ける装置である。入力部301は、例えば、キーボード、ポインティング装置、又はボタン等であってもよい。
【0016】
データ保存部302は画像データのようなデータを保存することができる。データ保存部302は、例えば、ハードディスク、フレキシブルディスク、CD-ROM、CD-R、DVD、メモリーカード、CFカード、スマートメディア、SDカード、メモリスティック、xDピクチャーカード、又はUSBメモリなどであってもよい。データ保存部302は、プログラム又はその他のデータを保存してもよい。なお、後述するRAM308の一部がデータ保存部302として用いられてもよい。
【0017】
通信部303は、機器間の通信を行うためのインタフェース(I/F)である。フィルタ処理装置300は、通信部303を介して、他の装置とデータを交換することができる。なお、フィルタ処理装置300は、通信部303を介して接続された記憶装置を、仮想的なデータ保存部として、すなわちデータ保存部302として用いてもよい。
【0018】
表示部304は、ユーザなどに対して情報を表示する装置である。表示部304は、例えば、画像処理前又は画像処理後の画像を表示すること、又はGUIなどのその他の画像を表示することができる。表示部304は、例えば、CRT又は液晶ディスプレイなどであってもよい。表示部304は、ケーブルなどで接続された、フィルタ処理装置300の外部にある装置であってもよい。なお、入力部301及び表示部304が同一装置であってもよく、例えば、入力部301及び表示部304はタッチスクリーン装置であってもよい。この場合、タッチスクリーン上での入力は、入力部301への入力に相当する。
【0019】
CPU306は、フィルタ処理装置300全体の動作を制御する。また、CPU306は、フィルタ処理部305によって生成され、データ保存部302又はRAM308に保存されている処理結果に基づいて、画像処理又は画像認識処理のような各種の処理を行うことができる。CPU306は、これらの処理結果をRAM308に保存することができる。
【0020】
ROM307及びRAM308は、CPU306による処理に必要なプログラム、データ、及び作業領域などを、CPU306に提供する。CPU306による処理に必要なプログラムはデータ保存部302又はROM307に格納されていてもよく、データ保存部302又はROM307からRAM308に読み込まれてもよい。また、フィルタ処理装置300は通信部303を介してプログラムを受信してもよい。この場合、プログラムは、いったんデータ保存部302に記録された後にRAM308に読み込まれてもよいし、通信部303からRAM308に直接読み込まれてもよい。いずれの場合であっても、CPU306はRAM308に読み込まれたプログラムを実行することができる。
【0021】
画像処理部309は、画像データに対する画像処理を行うことができる。例えば、画像処理部309は、CPU306からの指示に従って、データ保存部302に書き込まれている画像データを読み出し、画素値のレンジ調整を行い、処理結果をRAM308に書き込むことができる。
【0022】
図3に示すフィルタ処理装置300は、上記の各部を内部に有している。上記の各部は、互いにデータを送受信できるように接続されている。しかしながら、例えば入力部301、データ保存部302、及び表示部304を含む各部は、公知の通信方式に従う通信路で互いに接続されていてもよい。すなわち、一実施形態に係るデータ処理装置は、物理的に分かれている複数の装置によって構成されていてもよい。
【0023】
また、図3に示すフィルタ処理装置300は1つのCPU306を有しているが、複数のCPUを有していてもよい。さらに、フィルタ処理装置300が有する各部(例えばフィルタ処理部305及び画像処理部309)のうちの少なくとも一部の機能が、CPU306がプログラムに従って動作することにより実現されてもよい。
【0024】
フィルタ処理装置300は、図3に示されていない様々な構成要素を有していてもよいが、その説明は省略する。
【0025】
(ニューラルネットワークの構造例)
上記のとおり、フィルタ処理部305は、特徴面に対してフィルタを用いたフィルタ処理を行うことができる。また、フィルタ処理部305は、複数の階層を含むニューラルネットワークに従う演算を行うことができ、ここで少なくとも1つの階層でこのようなフィルタ処理を行うことができる。フィルタ処理には、畳み込み演算が含まれ、畳み込み演算には積和演算が含まれる。以下では、フィルタ処理部305が用いるニューラルネットワークの一例を説明する。
【0026】
ニューラルネットワークの一種であるCNNは、複数の階層(レイヤ)が階層的に接続された構造を有する。各階層は、複数枚の特徴面(特徴画像)を含んでいてもよい。以下では、前階層の特徴面に対し、対応する処理を行うことで得られた特徴面のことを、次階層の特徴面(特徴画像)と呼ぶ。なお、以下では特徴面が2次元である場合について説明するが、特徴面は1次元であってもよいし、3次元以上の高次の特徴面であってもよい。
【0027】
例えば、次階層の特徴面は、前階層の特徴面に対するフィルタ処理を用いて計算されてもよい。このフィルタ処理では、前階層に対応するフィルタ係数で構成されるフィルタを用いることができる。次階層の複数の特徴面のそれぞれは、対応するフィルタを用いたフィルタ処理により生成することができる。また、次階層の1枚の特徴面を計算するために、前階層の複数枚の特徴面が用いられてもよい。例えば、前階層の複数枚の特徴面のそれぞれに対して、対応するフィルタを用いたフィルタ処理を行い、得られた複数の処理結果に基づいて次階層の1枚の特徴面を得ることができる。
【0028】
例えば、フィルタ処理後の特徴面(Oi,j(n))は、前階層の特徴面(Ii,j(m))と、フィルタ係数(C0,0(m,n)~CX-1,Y-1(m,n))と、を用いて、式(1)に従って算出できる。ここで、i,jは特徴面の座標を示す。また、x,yはフィルタの座標を示す。nは次階層の特徴面の番号である。また、mは前階層の特徴面の番号であり、前階層の特徴面はM枚である。フィルタ係数は、前階層の特徴面ごとに、及び次階層の特徴面ごとに、異なっており、1つの特徴面の組み合わせについてX×Y個ある。
【数1】
上記のように、次階層の1つの特徴面を計算するためのフィルタ処理で行われる積和演算回数はM×X×Y回である。このように、フィルタは複数のフィルタ係数を有しており、フィルタ処理後の特徴面の各画素の画素値は、前階層の特徴面の対応する画素周辺の画素群の画素値と、フィルタが有するフィルタ係数と、の畳み込み演算により得られる。
【0029】
このようなフィルタ処理により得られた特徴面Oi,j(n)に対して、さらに活性化処理又はプーリング処理などの処理を行うことにより、次階層の特徴面を算出することができる。
【0030】
図2は、ニューラルネットワークの具体的な構造例を示す。図2に示すニューラルネットワークにおいては、階層数は4であり、各階層(レイヤ)には4枚の特徴面が含まれる。それぞれの階層の特徴面は、特徴面ごとに定められているフィルタを、特徴面の画素情報(特徴面データ)に適用することにより得られたフィルタ処理結果に基づいて得られる。ここで、フィルタのフィルタ係数は、公知の学習技術に従って予め得られている。また、フィルタを適用するフィルタ処理は積和演算であり、複数の乗算及び累積加算を含んでいる。図2において、矢印は積和演算を示す。
【0031】
図6(A)(C)(E)は、いくつかの特徴面を算出するために用いられるフィルタの例を示す。フィルタ601は、特徴面(2,1)を算出するために用いられるフィルタである。特徴面(2,1)の各画素の画素値は、フィルタ601に含まれる4つのフィルタを、それぞれ特徴面(1,1)、特徴面(1,2)、特徴面(1,3)、及び特徴面(1,4)の対応する画素に適用し、得られた値を積算することにより得られる。フィルタ603,605は、同様に、それぞれ特徴面(3,1)及び特徴面(4,1)を算出するために用いられるフィルタである。
【0032】
すなわち、フィルタ処理部305は、複数枚の特徴面201とフィルタ601のフィルタ係数とを用いた積和演算により、特徴面(2,1)を算出する。同様に、フィルタ処理部305は、複数枚の特徴面201と不図示のフィルタ係数とを用いた積和演算を介して、レイヤ2にある複数枚の特徴面202を生成する。さらに、フィルタ処理部305は、複数枚の特徴面202とフィルタ係数とを用いた積和演算を介して、レイヤ3にある複数枚の特徴面203を生成する。そして、フィルタ処理部305は、複数枚の特徴面203とフィルタ係数とを用いた積和演算を介して、レイヤ4にある複数枚の特徴面204を生成する。
【0033】
ここで、フィルタ603,605のように、いくつかのフィルタ係数が0であってもよい。非特許文献1に記載の拡張畳込み演算方式(Dilated Convolution)においては、フィルタ処理に用いるフィルタが有するいくつかのフィルタ係数は0である。また、学習時に、いくつかのフィルタ係数が0になるように学習が行われてもよい。
【0034】
本実施形態においては、フィルタ処理において、特徴面と、フィルタ係数と、に加えて、このフィルタ係数の中で畳み込み演算に用いられるフィルタ係数を特定する情報が用いられる。以下では、畳み込み演算に用いられるフィルタ係数を特定する情報のことを有効係数情報と呼ぶ。また、畳み込み演算に用いられるフィルタ係数のことを有効係数と呼び、フィルタにおける有効係数の位置を有効位置と呼ぶ。有効係数情報は、フィルタの各位置について、フィルタ係数を畳み込み演算に用いるかどうかを特定することができる。有効係数情報は、それぞれのフィルタに対応付けられていてもよい。例えば、同じフィルタサイズ(例えば3×3)の複数のフィルタに、それぞれ異なる有効係数情報が対応付けられていてもよい。
【0035】
例えば、対象画素におけるフィルタ処理後の画素値は、フィルタの基準点から所定の相対位置(有効位置)にある有効係数と、対象画素から同じ所定の相対位置にある画素の画素値と、の積和演算により得られる。有効位置は、対象画素におけるフィルタ処理後の画素値を算出するフィルタ演算において、積和演算の対象となる画素の、対象画素からの相対配置にも対応する。一実施形態において、有効係数は0ではないフィルタ係数を指し、有効係数情報とは、フィルタについて、フィルタ係数が0ではない位置を示す情報である。なお、有効係数情報と、フィルタ係数の情報とは、一体になっていてもよい。例えば、フィルタの各位置についてのフィルタ係数を示す情報が、フィルタが有するフィルタ係数と、有効係数情報と、の双方を表してもよい。すなわち、この情報は、フィルタのいくつかの位置についてフィルタ係数が0であることを示してもよく、この場合、0ではないフィルタ係数が畳み込み演算に用いられるフィルタ係数であることを特定することができる。
【0036】
このような実施形態においては、対象画素におけるフィルタ処理後の画素値を求める積和演算において、無効係数を用いた積和演算を省略することができる。一実施形態において、無効係数とは、有効係数ではないフィルタ係数のことを指し、例えば、0であるフィルタ係数のことを指す。
【0037】
図6(B)、(D)、及び(F)は、それぞれフィルタ601,603,605に対応する、有効係数情報602,604,606を示す。図6(B)の例において、有効係数情報602は、レイヤ1の特徴面(1,1)~(1,4)のそれぞれに適用されるフィルタ(フィルタ601に含まれる4つの3×3フィルタ)について共通である。言い換えれば、有効係数情報602は、レイヤ2の特徴面(2,1)を算出するために用いられるフィルタについて共通である。このように、有効係数情報が、少なくとも2つのフィルタについて共通であってもよい。有効係数情報602によると、フィルタは有効係数を9個有しており、すなわち全てのフィルタ係数が有効である。
【0038】
このように、一実施形態において、前階層の複数枚の特徴面(例えば特徴面(1,1)~(1,4))のそれぞれに対して、対応するフィルタ(例えばフィルタ601に含まれる4つの3×3フィルタ)を用いたフィルタ処理が行われる。そして、このフィルタ処理に基づいて、次階層の特徴面(例えば特徴面(2,1))が算出される。このとき、前階層の複数枚の特徴面(例えば特徴面(1,1)~(1,4))のそれぞれに適用されるフィルタについて、有効係数情報602は共通であってもよい。すなわち、フィルタ処理装置300は、レイヤ1(第1の階層)の複数の特徴面のそれぞれに対応するフィルタを用いたレイヤ1(第1の階層)の特徴面に対するフィルタ処理により、レイヤ2(第2の階層)の複数の特徴面のそれぞれを算出することができる。ここで、レイヤ1の複数の特徴面のそれぞれに対応するフィルタについて、有効係数情報は共通であってもよい。一方で、前階層の複数枚の特徴面のそれぞれに適用されるフィルタについて、有効係数情報602が異なっていてもよい。
【0039】
また、一実施形態において、前階層の特徴面(例えば特徴面(1,1))に対してフィルタ処理が行われる。そして、このフィルタ処理に基づいて、次階層の複数の特徴面(例えば特徴面(2,1)~(2,4))が算出される。このフィルタ処理においては、算出される次階層の特徴面に対応するフィルタが用いられる。このとき、次階層の複数枚の特徴面(例えば特徴面(2,1)~(2,4))のそれぞれを算出するために適用されるフィルタについて、有効係数情報602は共通であってもよい。一方で、次階層の複数枚の特徴面のそれぞれを算出するために適用されるフィルタについて、有効係数情報602が異なっていてもよい。
【0040】
上記のように、前階層の特徴面から次階層の特徴面を算出するために、フィルタ係数(C0,0(m,n)~CX-1,Y-1(m,n))を持つフィルタを用いることができる。この場合、前階層の特徴面から次階層の特徴面を算出するために適用されるフィルタについて、有効係数情報602は(m,n)の組み合わせにかかわらず同一であってもよい。
【0041】
有効係数情報604も、レイヤ2の特徴面(2,1)~(2,4)のそれぞれに適用されるフィルタについて共通である。有効係数情報604によると、フィルタは有効係数を5個有しており、4隅にある4個のフィルタ係数は無効である。同様に、有効係数情報606によると、フィルタは有効係数を6個有しており、1行目の3個のフィルタ係数が無効である。このように、有効係数情報は階層ごとに異なっていてもよい。例えば、複数の階層のうちの少なくとも2つの階層における特徴面を算出するために用いられるフィルタについて、有効係数情報は異なっていてもよい。すなわち、フィルタ処理装置300は、レイヤ3(第3の階層)の複数の特徴面のそれぞれに対応するフィルタを用いたレイヤ3(第3の階層)の特徴面に対するフィルタ処理により、レイヤ4(第4の階層)の複数の特徴面のそれぞれを算出することができる。ここで、レイヤ3の複数の特徴面のそれぞれに対応するフィルタについて、有効係数情報は共通であってもよい。一方で、レイヤ1の複数の特徴面のそれぞれに対応するフィルタと、レイヤ3の複数の特徴面のそれぞれに対応するフィルタとの間で、有効係数情報は異なっていてもよい。
【0042】
以下、有効係数情報を用いることにより積和演算を省略できることについて説明する。フィルタの有効係数情報をEx,y(n)とする。座標(x,y)のフィルタ係数が有効である場合、Ex,y(n)の値は1である。また、座標(x,y)のフィルタ係数が有効ではない場合、Ex,y(n)の値は0である。この例では、次階層の同じ特徴面を算出するために用いられるフィルタ(nの値が共通であるフィルタ)は、同じ有効係数情報Ex,y(n)を共有している。この場合、フィルタ処理後の特徴面(Oi,j(n))は、式(1)に有効係数情報を追加して得られた式(2)に従って得ることができる。上記のように定義した有効係数情報を用いると、式(2)は、式(1)と同じ値を与える。
【数2】
【0043】
ここで、Ex,y(n)の値が0である(x,y)の組み合わせについては、Ii+x,j+y(m)×Ex,y(n)×Cx,y(m,n)の値は0である。したがって、Ex,y(n)の値が0である(x,y)の組み合わせについての積和演算を省略しても、得られる特徴面(Oi,j(n))は変わらない。このように、本実施形態においては、無効係数を用いた積和演算を省略することができる。
【0044】
なお、Ex,y(n)の値が1の場合、フィルタ係数Cx,y(m,n)の値は任意である。一方で、Ex,y(n)の値が0の場合、フィルタ係数Cx,y(m,n)の値が0になるように、フィルタ係数を設定するか、又は、フィルタ係数の学習を行うことができる。
【0045】
処理に用いられるニューラルネットワークの構造を示す情報は、フィルタ処理部305が有していてもよいし、データ保存部302又はRAM308などに格納されていてもよい。ニューラルネットワークの構造を示す情報(以下、ネットワーク情報と呼ぶ)は、例えば、各階層についての、積和演算の計算量、特徴面のサイズ、特徴面の枚数、及びフィルタの有効係数情報などを含むことができる。
【0046】
なお、図6に示される例では、フィルタサイズ(フィルタの高さ及び幅)は3×3である。しかしながら、フィルタサイズに制限はなく、任意のフィルタサイズを用いることができる。有効係数情報は、任意のフィルタサイズのフィルタについて、有効位置を表すことができる。
【0047】
このように、本実施形態においては、フィルタ処理において有効係数情報を用いることにより、フィルタ処理結果に影響しない積和演算を省略することができる。このため、フィルタ処理の処理効率を向上させることができる。
【0048】
(フィルタ処理部の構成及び処理)
図4は、フィルタ処理部305の機能構成例を示す。フィルタ処理部305は、特徴面に対してフィルタを用いたフィルタ処理を行う、畳み込み演算部405を有している。例えば、畳み込み演算部405、上記の式(2)に従って、フィルタ係数と特徴面データとからフィルタ処理結果を求めることができる。
【0049】
フィルタ処理部305は、有効情報保持部402、係数保持部403、及び特徴面保持部404をさらに有していてもよい。有効情報保持部402は、有効係数情報Ex,y(n)を取得及び保持し、畳み込み演算部405に供給することができる。係数保持部403は、フィルタ係数Cx,y(m,n)を取得及び保持し、畳み込み演算部405に供給することができる。また、特徴面保持部404は、特徴面I(m)を取得及び保持し、畳み込み演算部405に供給することができる。
【0050】
フィルタ処理部305は、さらに、後処理部406を有していてもよい。後処理部406は、畳み込み演算部405により得られたフィルタ処理の結果に対して、活性化処理又はプーリング処理のようなさらなる処理を行うことができる。なお、後処理部406の代わりに、例えばCPU306などの別の処理部が、このようなさらなる処理を行ってもよい。
【0051】
フィルタ処理部305は、さらに、制御部401を有していてもよい。制御部401は、上述の各部の動作を制御することができる。制御部401は、例えばCPU又はシーケンサーなどの制御回路を有していてもよい。
【0052】
図5は、畳み込み演算部405の構成の一例を示す。畳み込み演算部405は、特徴面のデータと、フィルタが有するフィルタ係数と、畳み込み演算に用いられるフィルタ係数を特定する、フィルタに対応付けられた有効係数情報と、を取得する取得部を有している。図5において、この取得部は、特徴面キャッシュ504、係数キャッシュ506、及び有効情報キャッシュ507で構成されている。特徴面キャッシュ504は、特徴面のデータを取得する。特徴面キャッシュ504は、特徴面保持部404から取得した特徴面データを一時的に保持することにより、特徴面保持部404に格納されている特徴面データの一部をバッファすることができる。係数キャッシュ506は、有効係数情報により特定されたフィルタ係数を取得する。係数キャッシュ506は、係数保持部403から取得したフィルタ係数を一時的に保持することにより、係数保持部403に格納されているフィルタ係数の一部をバッファすることができる。有効情報キャッシュ507は、有効係数情報を取得する。有効情報キャッシュ507は、有効情報保持部402から取得した有効係数情報を一時的に保持することができる。
【0053】
また、畳み込み演算部405は、有効係数情報により特定されたフィルタ係数と、フィルタ係数に対応する特徴面のデータと、の畳み込み演算を行う演算部を有している。図5において、この演算部は、乗算器501、加算器502、及び処理結果格納部503で構成されている。乗算器501は、特徴面キャッシュ504から供給された1画素の特徴面データと、係数キャッシュ506から供給された1つのフィルタ係数と、の積を計算し、加算器502に転送する。加算器502は、乗算器501から転送された積を累積することにより、特徴面データとフィルタ係数との積和演算結果(畳み込み演算結果)を生成する。加算器502は、乗算器501から転送された積と、処理結果格納部503に保持されている値と、を加算し、得られた値を処理結果格納部503にすることを繰り返すことで、積和演算結果を生成することができる。こうして、処理結果格納部503に格納された複数の積和演算の結果(フィルタ処理結果)は、畳み込み演算の結果として出力される。
【0054】
畳み込み演算部405は、アドレス制御部505を有していてもよい。アドレス制御部505は、有効情報キャッシュ507から有効係数情報を取得することができる。そして、アドレス制御部505は、有効係数情報に従って、特徴面キャッシュ504からの特徴面データの乗算器501への転送を制御できる。また、アドレス制御部505は、係数キャッシュ506からのフィルタ係数の乗算器501への転送も制御できる。
【0055】
上記の通り、フィルタが有するフィルタ係数の中で有効係数情報により特定されていないフィルタ係数(例えば無効係数)と、有効係数情報により特定されていないフィルタ係数に対応する特徴面のデータと、の畳み込み演算は、省略することができる。すなわち、フィルタ処理部305(例えば乗算器501)は、このような畳み込み演算を省略することができる。例えば、アドレス制御部505の制御に従って、特徴面キャッシュ504は、有効係数情報により特定されたフィルタ係数に対応する特徴面のデータを乗算器501に転送することができる。一方で、アドレス制御部505の制御に従って、特徴面キャッシュ504は、有効係数情報により特定されていないフィルタ係数に対応する特徴面のデータの乗算器501への転送を省略することができる。同様に、アドレス制御部505の制御に従って、係数キャッシュ506は、有効係数情報により特定されたフィルタ係数を乗算器501に転送する一方で、有効係数情報により特定されていないフィルタ係数の乗算器501への転送を省略することができる。
【0056】
図1は、フィルタ処理部305が行う処理のフローチャートの一例である。図1に示すフローチャートによれば、図6に示されるように、1つの階層について共通の有効係数情報が用いられる場合について、フィルタ処理を効率的に行うことができる。ステップS101~S116に示される制御処理は、制御部401(例えば制御部401が有するCPU又はシーケンサーなど)が行うことができる。
【0057】
ステップS101で制御部401は、入力層の特徴面データ、フィルタ処理に用いるフィルタ係数、及び有効係数情報をRAM308から読み出し、それぞれを特徴面保持部404、係数保持部403、有効情報保持部402に格納する。図2の例において、入力層の特徴面データはニューラルネットワークへの入力画像であり、この入力画像から特徴面201が算出される。
【0058】
ステップS102では、レイヤごとのループが開始する。ステップS102で制御部401は、最初に特徴面が算出される階層から、順番に階層を選択することができる。ステップS102で選択された階層のことを次階層と呼ぶ。また、上記のとおり、次階層の特徴面は、前階層の特徴面を用いて算出される。図2の例において、制御部401は最初にレイヤ2を選択することができ、この場合、前階層はレイヤ1である。図2の例において、レイヤ2は、最初に特徴面が算出される階層である。
【0059】
ステップS103で制御部401は、次階層に対応する有効係数情報を有効情報保持部402から読み出し、有効情報キャッシュ507に格納する。制御部401は、ネットワーク情報を参照して有効係数情報を読み出すことができる。
【0060】
ステップS104では、次階層の特徴面ごとのループが開始する。ステップS104で制御部401は、次階層の特徴面を最初から順番に選択することができる。
【0061】
ステップS105で制御部401は、処理結果格納部503に保持されている畳み込み演算結果を初期化する。例えば制御部401は、畳み込み演算結果をゼロに設定することができる。
【0062】
ステップS106では、前階層の特徴面ごとの画像のループが開始する。ステップS106で制御部401は、前階層の特徴面を最初から順番に選択することができる。
【0063】
ステップS107で制御部401は、ステップS106で選択された特徴面のデータを、特徴面キャッシュ504に転送する。制御部401は、有効係数情報により特定されたフィルタ係数に対応する特徴面データを転送することができる。一方で、制御部401は、有効係数情報により特定されていないフィルタ係数に対応する特徴面データを転送してもよい。また、制御部401は、ステップS106で選択された特徴面に対応するフィルタのフィルタ係数を、係数キャッシュ506に転送する。制御部401は、有効係数情報により特定されたフィルタ係数を転送することができる。一方で、制御部401は、有効係数情報により特定されていないフィルタ係数を転送してもよい。
【0064】
ステップS108で畳み込み演算部405は、制御部401からの制御信号に従って、畳み込み演算を行う。畳み込み演算部405は、特徴面キャッシュ504、係数キャッシュ506、及び有効情報キャッシュ507に格納されている特徴面データ、フィルタ係数、有効係数情報に基づいて、畳み込み演算を行うことができる。詳細な処理については後述する。
【0065】
ステップS109で制御部401は、前階層の特徴面ごとのループの終了判定を行う。前階層の全ての特徴面がステップS106で選択されている場合、処理はステップS110に進む。この場合、ステップS104で選択された次階層の特徴面についてのフィルタ処理結果が、処理結果格納部503に格納されている。前階層の全ての特徴面がステップS106で選択されていない場合、処理はステップS107に戻り、制御部401は前階層の次の特徴面を選択する。
【0066】
ステップS110で後処理部406は、制御部401からの制御信号に従って、ステップS106~S109のループで得られたフィルタ処理結果に対して後処理を行う。後処理部406は、ネットワーク情報に従って選択された後処理を行うことができる。例えば、後処理部406は、フィルタ処理結果に対して活性化処理を行うことができる。一例として、後処理部406は、式(3)に従って、ReLU(Rectified Linear Unit)を用いた活性化処理の結果を得ることができる。
【数3】
式(3)においてf(x)は活性化関数であり、xは入力データである。もっとも、活性化関数の種類はReLUには限定されず、他の非線形の関数、又は量子化関数が用いられてもよい。また、後処理部406は、活性化処理の結果に対してさらにプーリング処理を行ってもよい。プーリング処理によれば、次階層の特徴面のサイズを調整することができる。なお、活性化処理及びプーリング処理のうちの一方又は双方は省略されてもよい。
【0067】
ステップS111で制御部401は、後処理部406による処理結果を特徴面保持部404に格納する。こうして特徴面保持部404に格納された処理結果は、次階層の特徴面データであり、さらなる階層の特徴面データの算出のために用いることができる。
【0068】
ステップS112で制御部401は、次階層の特徴面ごとのループの終了判定を行う。次階層の全ての特徴面がステップS104で選択されている場合、処理はステップS113に進む。そうではない場合、処理はステップS104に戻り、制御部401は次階層の次の特徴面を選択する。
【0069】
ステップS113では制御部401は、階層ごとのループの終了判定を行う。全ての階層がステップS102で選択されている場合、図1の処理は終了する。このとき、特徴面保持部404には、入力画像が入力されたニューラルネットワークからの出力が格納されている。全ての階層がステップS102で選択されていない場合、処理はステップS102に戻り、制御部401は次の階層を選択する。
【0070】
次に、ステップS108で行われる畳み込み演算処理についてより詳細に説明する。ステップS108は、ステップS114~S116を含んでいる。なお、1枚の特徴面には複数の画素が含まれており、ステップS114~S116の処理は、ステップS104で選択された次階層の特徴面のそれぞれの画素について繰り返される。以下では、ステップS114~S116で画素値が算出される、次階層の特徴面の画素のことを、処理対象画素と呼ぶ。
【0071】
ステップS114でアドレス制御部505は、有効情報キャッシュ507に保持されている有効係数情報に基づいて、アドレス情報を生成する。アドレス情報は、処理対象画素の画素値を算出するための積和演算で用いられる、前階層の特徴面データの、特徴面キャッシュ504内のアドレス(格納位置)を示す。また、アドレス情報は、処理対象画素の画素値を算出するための積和演算で用いられるフィルタ係数の、係数キャッシュ506内のアドレスを示す。
【0072】
ここで、アドレス制御部505は、有効フィルタ係数のアドレスと、有効フィルタ係数に対応する特徴面データのアドレスのみを示す、アドレス情報を生成することができる。言い換えれば、アドレス制御部505は、無効フィルタ係数のアドレスと、無効フィルタ係数に対応する特徴面データのアドレスを示す、アドレス情報の生成を省略することができる。
【0073】
ステップS115で乗算器501は、アドレス制御部505により生成されたアドレス情報に従う特徴面データを特徴面キャッシュ504から読み出す。また、乗算器501は、アドレス制御部505により生成されたアドレス情報に従うフィルタ係数を係数キャッシュ506から読み出す。
【0074】
ステップS116で乗算器501は、読み出されたフィルタ係数と特徴面データの積を計算し、得られた積を加算器502に転送する。加算器502は、上記のとおり、特徴面データとフィルタ係数との積の累積結果(積和演算結果)を計算し、処理結果格納部503に保持する。
【0075】
図4,5に示される実施形態においては、特徴面データ、フィルタ係数、及び有効係数情報のそれぞれは、2つのメモリ(保持部及びキャッシュ)に格納される。例えば、フィルタ処理に用いる前階層の特徴面データは特徴面キャッシュ504に保持され、フィルタ処理の結果得られる次階層の特徴面データは特徴面保持部404に保持される。このような構成によれば、前階層の特徴面データの読み出し(ステップS108)と次階層の特徴面データの書き込み(ステップS111)とを並列に行えるため、処理効率が向上する。また、有効係数情報及びフィルタ係数はそれぞれ有効情報キャッシュ507及び係数キャッシュ506に保持される。このため、畳み込み演算処理(ステップS108)の間に、別の階層(又は別のニューラルネットワーク)の特徴面を算出するために用いるフィルタ係数及び有効係数情報を取得する(ステップS101)ことができるため、処理効率が向上する。
【0076】
さらには、この実施形態においては、各フィルタについて共通の有効係数情報を転送(ステップS103)した後に、フィルタ係数を複数回転送(ステップS107)することができる。すなわち、第1の有効係数情報により特定された第1のフィルタのフィルタ係数を用いた畳み込み演算を行い、続けて第1の有効係数情報により特定された第2のフィルタのフィルタ係数を用いた畳み込み演算を行うことができる。この場合、有効係数情報を複数回転送することが省略できるため、全体のデータ転送時間を短縮することができる。
【0077】
(本実施形態による処理例)
本実施形態によれば、フィルタ処理において有効係数情報を用いることにより、フィルタ処理の処理効率を向上させることができる。本実施形態による処理時間の短縮効果について、図6に示すフィルタ係数を用いる場合について、図7を参照して説明する。
【0078】
図7(A)は、特徴面(2,1)を得るためのフィルタ処理のタイムチャートである。ここでは、フィルタ処理装置300のクロック周期を1nsとする。レイヤ2の特徴面を算出するために用いられるフィルタ601に含まれる4つの3×3フィルタは、9個の有効係数を持ち、すなわち全てのフィルタ係数は有効である。有効なフィルタ係数の値は0ではないため、積和演算は省略できない。
【0079】
図7(A)に示されるように、0nsでは、ステップS103の処理が行われ、レイヤ2の有効係数情報が転送される。1ns~9nsでは、前階層の特徴面データIi+x,j+y(1)及びフィルタ係数Cx,y(1,1)が転送され、積和演算が行われ、積和演算の結果が格納される。1個の有効係数と1個の特徴データとを用いた計算は1nsを要し、有効係数は9個あるため、所要時間は9nsである。積和演算結果Oi,j(1)を得るためには、前階層の4つの特徴面の特徴面データに対するフィルタ処理を行う必要がある。したがって、積和演算結果Oi,j(1)を得るためには、フィルタ係数の転送を4回行い、上記の積和演算処理を4回繰り返すため、36nsの処理時間が必要である。
【0080】
図7(B)は、特徴面(3,1)を得るためのフィルタ処理のタイムチャートである。レイヤ3の特徴面を算出するために用いられるフィルタ60に含まれる4つの3×3フィルタは、5個の有効係数を持つ。無効なフィルタ係数の値は0であるため、積和演算を省略できる。
【0081】
図7(B)に示されるように、0nsではレイヤ3の有効係数情報が転送される。1ns~5nsでは、前階層の特徴面(2,1)の5個の特徴面データと、5個の有効係数とが転送され、積和演算が行われ、その所要時間は5nsである。レイヤ2と同様に、積和演算結果Oi,j(1)を得るためには、上記の処理が4回繰り返されるため、20nsの処理時間が必要である。無効フィルタ係数についての計算が省略されるため、特徴面(2,1)と比べて、処理時間が16ns短縮される。
【0082】
図7(C)は、特徴面(4,1)を得るためのフィルタ処理のタイムチャートである。レイヤの特徴面を算出するために用いられるフィルタ60に含まれる4つの3×3フィルタは、6個の有効係数を持つ。図7(C)に示されるように、0nsではレイヤ4の有効係数情報が転送される。1ns~6nsでは、前階層の特徴面(3,1)の6個の特徴面データと、6個の有効係数とが転送され、積和演算が行われ、その所要時間は6nsである。レイヤ2と同様に、積和演算結果Oi,j(1)を得るためには、上記の処理が4回繰り返されるため、24nsの処理時間が必要である。無効フィルタ係数についての計算が省略されるため、特徴面(2,1)と比べて、処理時間が12ns短縮される。
【0083】
(変形例)
図6の例では、同じ階層の特徴面を算出するために行われるフィルタ処理について、有効係数情報は共通であった。しかしながら、上述のとおり、前階層の複数枚の特徴面のそれぞれに適用されるフィルタについて、有効係数情報が異なっていてもよい。また、次階層の複数枚の特徴面のそれぞれを算出するために適用されるフィルタについて、有効係数情報が異なっていてもよい。このような場合でも、有効係数情報を用いることにより、無効フィルタ係数についての積和演算を省略できるため、フィルタ処理の処理効率が向上する。
【0084】
例えば、有効係数情報が次階層の特徴面ごとに異なっている場合、有効係数情報をEx,y(m,n)と表すことができる。この場合、式(4)に従ってフィルタ演算を行うことができる。このような構成によれば、有効係数情報Ex,y(m,n)の設定の自由度が向上するため、認識精度が向上するかもしれない。
【数4】
【0085】
また、データ処理装置は複数のフィルタを用いてもよく、この複数のフィルタは複数のグループに分類されていてもよい。ここで、1つのグループに属するフィルタについて、有効係数情報が共通であってもよい。また、別のグループに属するフィルタについては、有効係数情報が異なっていてもよい。例えば、次階層の複数枚の特徴面を算出するために用いられるフィルタが、複数のグループに分類されていてもよい。また、次階層の複数枚の特徴面が複数のグループに分類されていてもよく、1つのグループに属する特徴面を算出するために用いられるフィルタ群が1つのグループに分類されていてもよい。このような場合、有効情報キャッシュ507は、使用するフィルタが所属するグループに対応付けられた有効係数情報を取得することができる。
【0086】
図4,5の例では、係数保持部403から転送され、係数キャッシュ506に格納されているフィルタ係数のうち、有効係数情報(及びアドレス情報)に従うフィルタ係数のみが、乗算器501に転送された。しかしながら、有効係数情報に従うフィルタ係数のみが、係数キャッシュ506に転送されてもよい。例えば、制御部401は、有効係数情報に従って選択されたフィルタ係数を、係数保持部403を介して、又は係数保持部403を介さずに、係数キャッシュ506に転送してもよい。同様に、有効係数情報に従う特徴面データのみが、特徴面キャッシュ504に転送されてもよい。このような構成によれば、係数保持部403又は特徴面保持部404から、畳み込み演算部405への、データ転送量を削減することができる。
【0087】
有効係数情報の構成は、図6に示されるものに限定されない。例えば、図8に示すように、有効係数情報が、開始位置とスキャン方向とを示す情報であってもよい。ここで、開始位置は、畳み込み演算に用いられる1つのフィルタ係数のフィルタにおける位置を示す。また、スキャン方向は、畳み込み演算に用いられる別のフィルタ係数の1つのフィルタ係数に対する相対位置を示す。この場合、開始位置からスキャン方向によって特定される位置を、フィルタ内の有効位置として扱うことができる。図8の例では、スキャンパターン801及びスキャンパターン802が有効係数情報に相当する。例えば、スキャンパターン801は、開始位置と、次の有効位置を示すデータ列(R,R,D,L,L)と、により表される。図8において、U,D,L,Rは、それぞれ、次の有効位置が上側、下側、左側、右側にあることを意味する。このような有効係数情報も、フィルタの各位置について、フィルタ係数を畳み込み演算に用いるかどうかを特定することができる。この場合、ステップS114においてアドレス制御部505は、スキャンパターンに従ってアドレス情報を順次出力してもよい。また、ステップS114でアドレス制御部505は、有効係数情報606に基づいてこのようなスキャンパターンを生成してもよい。
【0088】
図2にはCNNが示されているが、フィルタ処理装置300が処理可能なニューラルネットワークはCNNには限られない。例えば、ニューラルネットワークは、RNN又はMLP(多層パーセプトロン)のような、階層構造を有する他の種類のネットワークであってもよい。MLPの場合、特徴面データの処理単位が1画素になり、フィルタサイズが1×1になるが、同様に有効係数情報に従って一部の演算処理を省略することができる。
【0089】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0090】
300:フィルタ処理装置、305:フィルタ処理部、402:有効情報保持部、403:係数保持部、404:特徴面保持部、405:畳み込み演算部、501:乗算器、502:加算器、503:処理結果格納部、504:特徴面キャッシュ、505:アドレス制御部、506:係数キャッシュ、507:有効情報キャッシュ
図1
図2
図3
図4
図5
図6
図7
図8