(57)【要約】【課題】  領域ごとのフィルタ演算をより少ない数のフィルタカーネルで実現するための技術を提供すること。【解決手段】  演算対象画像においてフィルタ演算を行う複数の領域を第１のグループ分けパターンでグループ分けする。そして、該第１のグループ分けパターンで得られたグループごとに、該グループに対応する第１のフィルタを用いて該グループに属する各領域に対するフィルタ演算を行う。該フィルタ演算で得られる中間画像においてフィルタ演算を行う複数の領域を第２のグループ分けパターンでグループ分けする。そして、該第２のグループ分けパターンで得られたグループごとに、該グループに対応する第２のフィルタを用いて該グループに属する各領域に対するフィルタ演算を行う。【選択図】  図１
2019197324.tif 000002
【特許請求の範囲】
【請求項１】
演算対象画像においてフィルタ演算を行う複数の領域を第１のグループ分けパターンでグループ分けし、該第１のグループ分けパターンで得られたグループごとに、該グループに対応する第１のフィルタを用いて該グループに属する各領域に対するフィルタ演算を行う第１のフィルタ手段と、
前記第１のフィルタ手段によるフィルタ演算で得られる中間画像においてフィルタ演算を行う複数の領域を第２のグループ分けパターンでグループ分けし、該第２のグループ分けパターンで得られたグループごとに、該グループに対応する第２のフィルタを用いて該グループに属する各領域に対するフィルタ演算を行う第２のフィルタ手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記第１のフィルタ手段は、前記演算対象画像においてフィルタ演算を行う複数の領域を第１方向に並ぶ領域列ごとにグループ分けし、該領域列における各領域に対して該領域列に対応する第１のフィルタを用いたフィルタ演算を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第１のフィルタは、前記第１方向に並ぶ領域列における各領域に対応するフィルタから求めたフィルタであることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記第１のフィルタは、前記第１のフィルタ手段および前記第２のフィルタ手段を有するニューラルネットワークにおける学習によって得られるフィルタであることを特徴とする請求項２に記載の画像処理装置。
【請求項５】
前記第２のフィルタ手段は、前記中間画像においてフィルタ演算を行う複数の領域を第２方向に並ぶ領域列ごとにグループ分けし、該領域列における各領域に対して該領域列に対応する第２のフィルタを用いたフィルタ演算を行うことを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
前記第２のフィルタは、前記第２方向に並ぶ領域列における各領域に対応するフィルタから求めたフィルタであることを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記第２のフィルタは、前記第１のフィルタ手段および前記第２のフィルタ手段を有するニューラルネットワークにおける学習によって得られるフィルタであることを特徴とする請求項５に記載の画像処理装置。
【請求項８】
前記ニューラルネットワークはConvolutional Neural Networkであり、前記学習は誤差逆伝播法に従った学習であることを特徴とする請求項４又は７に記載の画像処理装置。
【請求項９】
前記画像処理装置は更に、
前記第２のフィルタ手段によるフィルタ処理で得られる画像を前記演算対象画像に対するフィルタ処理済画像として出力する出力手段を備えることを特徴とする請求項１乃至８の何れか１項に記載の画像処理装置。
【請求項１０】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の第１のフィルタ手段が、演算対象画像においてフィルタ演算を行う複数の領域を第１のグループ分けパターンでグループ分けし、該第１のグループ分けパターンで得られたグループごとに、該グループに対応する第１のフィルタを用いて該グループに属する各領域に対するフィルタ演算を行う第１のフィルタ工程と、
前記画像処理装置の第２のフィルタ手段が、前記第１のフィルタ工程によるフィルタ演算で得られる中間画像においてフィルタ演算を行う複数の領域を第２のグループ分けパターンでグループ分けし、該第２のグループ分けパターンで得られたグループごとに、該グループに対応する第２のフィルタを用いて該グループに属する各領域に対するフィルタ演算を行う第２のフィルタ工程と
を備えることを特徴とする画像処理方法。
【請求項１１】
コンピュータを、請求項１乃至９の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィルタ演算技術に関するものである。
【背景技術】
【０００２】
従来から、特に画像処理分野では、画素データの配列が２次元になっていることから、２次元の畳み込みフィルタ演算のような、２次元のデータ演算が頻繁に行われる。図４は、畳み込みフィルタ演算の例を示す図である。図４において、４０１は、演算対象画像を示す。４０２は、フィルタカーネル（フィルタ重み）を示し、図４では、カーネルサイズが３×３のフィルタ演算を行う場合を示している。このような場合、以下の式（１）に示す積和演算処理により、演算対象画像４０１に対するフィルタカーネル４０２を用いた畳み込みフィルタ演算の結果（画像）４０３が得られる。
【０００３】
【数１】
2019197324.tif 000003
【０００４】
ここで、Ｄ［ｕ、ｖ］は演算対象画像４０１中の画素位置（ｕ、ｖ）（水平座標ｖ、垂直座標ｕ）における画素値を示し、Ｒ［ｕ、ｖ］は畳み込みフィルタ演算結果としての画像４０３中の画素位置（ｕ、ｖ）（水平座標ｖ、垂直座標ｕ）における画素値を示す。Ｗ［ｓ、ｔ］はフィルタカーネル４０２中の位置（ｓ、ｔ）（水平座標ｓ、垂直座標ｔ）における係数値（フィルタ係数値）を示し、演算対象画像４０１中の水平座標が（ｖ＋ｔ）、垂直座標が（ｕ＋ｓ）における画素の画素値に適用するフィルタ係数である。また、columnSize及びrowSizeはそれぞれフィルタカーネル４０２の水平方向サイズ及び垂直方向サイズを示し、図４の場合は、columnSize＝rowSize＝３となる。
【０００５】
フィルタカーネル４０２を演算対象画像４０１中の各画素位置（各スキャン位置）に対して適用する（各画素位置に対して式（１）に従った演算を行う）ことで、演算対象画像４０１に対する畳み込みフィルタ演算の結果（画像４０３）を得ることができる。ここで、元画像（図４では演算対象画像４０１）の垂直方向サイズ及び水平方向サイズをそれぞれＡ，Ｂとする。このとき、出力画像（図４では画像４０３）の垂直方向サイズ及び水平方向サイズはそれぞれ（A-rowSize+1）、（B-columnSize+1）となる。
【０００６】
このような通常の畳み込みフィルタ演算の派生演算として、非特許文献１には、局所的なスキャン位置でのみ共通のフィルタカーネル（フィルタ重み）を使用する演算が提案されている（以下では、この演算を「局所共有重みフィルタ演算」と称する）。通常の畳み込みフィルタ演算であれば、全てのスキャン位置において同一のフィルタカーネルが使用される。それに対して、局所共有重みフィルタ演算では、画像中の局所的に固まったスキャン位置では同一のフィルタカーネルを使用するが、別の局所的なスキャン位置では別のフィルタカーネルを使用する。
【０００７】
この局所共有重みフィルタ演算の例を図５に示す。図５では、演算対象画像５０１の水平方向のサイズは１２画素、垂直方向のサイズは１０画素（以降１２×１０と表記する）であるとしている。５０２は演算対象画像５０１に対する局所共有重みフィルタ演算の結果として得られる画像を示している。５０４、５０７、５１０（演算対象画像５０１中のハッチングされた領域）は４画素×４画素のサイズの局所領域（以下では、該局所領域を「重み共有局所領域」と称する）を示しており、それぞれ演算対象画像５０１内の異なる位置における局所領域である。５０３、５０６、５０９はそれぞれ重み共有局所領域５０４，５０７，５１０に対して適用する（畳み込み演算を行う）フィルタカーネルである。図５では、フィルタカーネルのサイズは３×３とする。従って、演算対象画像５０１に対する局所共有重みフィルタ演算の結果として得られる画像５０２のサイズは１０×８となる。５０５、５０８、５１１はそれぞれ、重み共有局所領域５０４、５０７、５１０に対してフィルタカーネル５０３、５０６、５０９との畳み込み演算を行うことで算出される演算結果領域を示す。重み共有局所領域５０４中において、フィルタカーネル５０３のスキャン位置は、水平方向２スキャン位置、垂直方向２スキャン位置あるので、畳み込み演算の結果得られる演算結果領域５０５のサイズは２×２となる。
【０００８】
このように局所共有重みフィルタ演算では、水平方向２スキャン位置、垂直方向２スキャン位置の重み共有局所領域ごとにフィルタカーネルを変更して演算を行う。この場合、画像５０２の２×２の領域ごとに、フィルタカーネルを変更して算出して得られた結果となる。従って、１０×８のサイズの画像５０２を算出するためには、１０／２×８／２＝５×４＝２０個の重み共有局所領域の設定が必要となり、重み共有局所領域の数と同数のフィルタカーネルが必要となる。５０４、５０７、５１０は、２０個の重み共有局所領域のうちの任意の３個である。同様に５０３、５０６、５０９は２０個のフィルタカーネルのうちの任意の３個である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−２７２６５７号公報
【特許文献２】特開２００５−２４４９２７号公報
【非特許文献】
【００１０】
【非特許文献１】Y. Sun, Y. Chen, X. Wang, and X. Tang. Deep learning face representation by joint identification-verification. In Proc. NIPS, 2014.
【発明の概要】
【発明が解決しようとする課題】
【００１１】
非特許文献１では、顔画像に対して局所共有重みフィルタ演算を適用することで、顔の器官（目鼻口等）ごとに適切なフィルタカーネルを用いた畳み込み演算を実行し、顔認証の精度向上を実現している。しかしながら、局所共有重みフィルタ演算は、通常の畳み込みフィルタ演算に比べて、必要となるフィルタカーネルの量が多い。例えば、図５に示した例では、通常の畳み込みフィルタ演算では１個だったフィルタカーネルが２０個必要となる。従って、フィルタカーネルを格納しておくメモリの量も２０倍必要となる。
【００１２】
フィルタカーネルを保持するために必要なメモリ量の削減に関しては、低ランク近似と呼ばれる手法が知られている（特許文献１、特許文献２）。低ランク近似は、２次元のフィルタカーネルを複数の１次元フィルタの対（水平方向の１次元フィルタと垂直方向の１次元フィルタの対）に近似分解する手法である。例えば３×３のフィルタカーネルを１×３と３×１のフィルタに分解した場合、これらの１次元フィルタを保持するために必要なメモリ量は、３×３のフィルタカーネルを保持するために必要なメモリ量に対して２／３になる。
【００１３】
この低ランク近似を局所共有重みフィルタ演算で使用するそれぞれのフィルタカーネルに対して適用することは可能である。しかしながら低ランク近似は、フィルタカーネルのサイズ方向の増大に対して有効な手法であるが、フィルタカーネルの数が増える方向に対しては有効な手法とは言えない。例えば、フィルタカーネルのサイズが５×５になった場合、低ランク近似では、１×５と５×１のフィルタに分解するのでメモリ量は２／５になる。従って、フィルタカーネルのサイズが３×３の時よりも削減率は大きくなり、有効な手法といえる。しかしながら、３×３のフィルタカーネル２０個をそれぞれ低ランク近似しても削減率は２／３から変化しない。従って、局所共有重みフィルタ演算のようにフィルタカーネルの数が増えるような場合に低ランク近似を適用しても、その効果は限定的であった。本発明では、このような状況に鑑み、領域ごとのフィルタ演算をより少ない数のフィルタカーネルで実現するための技術を提供する。
【課題を解決するための手段】
【００１４】
本発明の一様態は、演算対象画像においてフィルタ演算を行う複数の領域を第１のグループ分けパターンでグループ分けし、該第１のグループ分けパターンで得られたグループごとに、該グループに対応する第１のフィルタを用いて該グループに属する各領域に対するフィルタ演算を行う第１のフィルタ手段と、前記第１のフィルタ手段によるフィルタ演算で得られる中間画像においてフィルタ演算を行う複数の領域を第２のグループ分けパターンでグループ分けし、該第２のグループ分けパターンで得られたグループごとに、該グループに対応する第２のフィルタを用いて該グループに属する各領域に対するフィルタ演算を行う第２のフィルタ手段とを備えることを特徴とする。
【発明の効果】
【００１５】
本発明の構成によれば、領域ごとのフィルタ演算をより少ない数のフィルタカーネルで実現することができる。
【図面の簡単な説明】
【００１６】
【図１】画像処理装置が行うフィルタ演算処理のフローチャート。
【図２】重み共有局所領域のグループ分けを説明する図。
【図３】グループ内共有フィルタカーネルを用いたフィルタ演算の手順を説明する図。
【図４】畳み込みフィルタ演算の例を示す図。
【図５】局所共有重みフィルタ演算の例を示す図。
【図６】重み共有局所領域、局所共有フィルタカーネル、演算結果領域の構成例を示す図。
【図７】重み共有局所領域、グループ内共有フィルタカーネル、演算結果領域の構成例を示す図。
【図８】CNNの演算例を示す図。
【図９】グループ内共有フィルタカーネルの算出手順のフローチャート。
【図１０】グループ内共有フィルタカーネルを用いたフィルタ演算の手順のフローチャート。
【図１１】重み共有局所領域、グループ内共有フィルタカーネル、演算結果領域の構成例を示す図。
【図１２】画像処理装置のハードウェア構成例を示すブロック図。
【発明を実施するための形態】
【００１７】
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施形態の１つである。
【００１８】
［第１の実施形態］
本実施形態は、局所共有重みフィルタ演算に必要となるフィルタカーネルの数を減らし、ひいてはフィルタカーネルを格納するために必要となるメモリ量を削減するものである。また本実施形態は、従来よりも少ない数のフィルタカーネルで局所共有重みフィルタ演算と同等の効果を得るフィルタ演算を実現するものである。
【００１９】
そのために本実施形態に係るフィルタ演算処理では、複数の重み共有局所領域を幾つかのグループに分割する（グループ化する）。その上で、あるグループに属する全ての重み共有局所領域に対しては共通のフィルタカーネルを用いてフィルタ演算を行うことで、演算に必要となるフィルタカーネルの数を削減する。これにより、従来では重み共有局所領域と同数必要であったフィルタカーネルの数を、グループ数分に削減することが可能となる。
【００２０】
ここで、従来の局所共有重みフィルタ演算で用いるフィルタカーネルと、本実施形態においてグループ内で用いるフィルタカーネルと、を区別するために、以下では、前者を「局所共有フィルタカーネル」、後者を「グループ内共有フィルタカーネル」と称する。
【００２１】
上述のように、局所共有フィルタカーネルに代えてグループ内共有フィルタカーネルを用いることで、フィルタカーネルの数（ひいてはメモリ量）を削減することが可能となる。本実施形態ではさらに、局所共有フィルタカーネルの演算をグループ内共有フィルタカーネルの演算で近似することで、局所共有フィルタカーネルを用いた局所共有重みフィルタ演算と同等の効果を得ることが可能となる。以下では、本実施形態に係るフィルタ演算を「グループ内共有フィルタ演算」と称する。
【００２２】
先ず、本実施形態に係るフィルタ演算（グループ内共有フィルタ演算）を実施する画像処理装置のハードウェア構成例について、図１２のブロック図を用いて説明する。なお、画像処理装置のハードウェア構成例は図１２に示した構成に限らず、以下に画像処理装置が行うものとして後述する各処理を実施可能な構成であれば、如何なる構成であっても良い。
【００２３】
ＣＰＵ１２０１は、ＲＡＭ１２０２やＲＯＭ１２０３に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりＣＰＵ１２０１は、画像処理装置全体の動作制御を行うと共に、画像処理装置が行うものとして後述する各処理を実行若しくは制御する。
【００２４】
ＲＡＭ１２０２は、ＲＯＭ１２０３や外部記憶装置１２０６からロードされたコンピュータプログラムやデータ、Ｉ／Ｆ（インターフェース）１２０７を介して外部から受信したデータ、を格納するためのエリアを有する。またＲＡＭ１２０２は、ＣＰＵ１２０１が各種の処理を実行する際に用いるワークエリアを有する。このようにＲＡＭ１２０２は、各種のエリアを適宜提供することができる。ＲＯＭ１２０３には、本装置の設定データや起動プログラムなど、書換不要の情報が格納されている。
【００２５】
操作部１２０４は、キーボードやマウスなどのユーザインターフェースにより構成されており、ユーザが操作することで各種の指示をＣＰＵ１２０１に対して入力することができる。表示部１２０５は、液晶画面やタッチパネル画面等により構成されており、ＣＰＵ１２０１による処理結果を画像や文字などでもって表示することができる。
【００２６】
外部記憶装置１２０６は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置１２０６には、ＯＳ（オペレーティングシステム）や、画像処理装置が行うものとして後述する各処理をＣＰＵ１２０１に実行若しくは制御させるためのコンピュータプログラムやデータが保存されている。外部記憶装置１２０６に保存されているデータには、以下の説明において既知の情報として説明するものも含まれている。外部記憶装置１２０６に保存されているコンピュータプログラムやデータは、ＣＰＵ１２０１による制御に従って適宜ＲＡＭ１２０２にロードされ、ＣＰＵ１２０１による処理対象となる。
【００２７】
Ｉ／Ｆ１２０７は、外部の装置との間のデータ通信を行うためのインターフェースとして機能するものである。例えば、画像処理装置が処理対象とする画像をＩ／Ｆ１２０７を介して撮像装置やサーバ装置などの装置から受信するようにしても良い。ＣＰＵ１２０１、ＲＡＭ１２０２、ＲＯＭ１２０３、操作部１２０４、表示部１２０５、外部記憶装置１２０６、Ｉ／Ｆ１２０７は何れもバス１２０８に接続されている。
【００２８】
このような本実施形態に係る画像処理装置には、ＰＣ（パーソナルコンピュータ）やスマートフォン、タブレット型端末装置を適用することができる。また、このような本実施形態に係る画像処理装置は、ディジタルカメラなどの撮像装置に組み込むハードウェアとして実装しても良い。
【００２９】
次に、画像処理装置が演算対象画像に対して行うグループ内共有フィルタ演算について説明する。先ず、複数の重み共有局所領域をグループ化する手順に関して説明を行い、続いてグループ内共有フィルタカーネルを用いたフィルタ演算の手順に関して説明を行う。そしてその後に、局所共有フィルタカーネルをグループ内共有フィルタカーネルで近似する手順に関して説明を行う。
【００３０】
なお本実施形態では、図５に示した局所共有重みフィルタ演算に適用した例を示す。つまり、水平方向１２画素、垂直方向１０画素の演算対象画像５０１に対して２０個（水平方向５個×垂直方向４個）の重み共有局所領域を設定し、２０個のフィルタカーネルを用いて行う局所共有重みフィルタ演算に適用した例を示す。
【００３１】
先ず、複数の重み共有局所領域をグループ化する手順に関して説明を行う。以下では、重み共有局所領域をＬｉ，ｊ（ｉ＝０，１，２，３，ｊ＝０，１，２，３，４）と表記する。ここで、ｉ、ｊはそれぞれ、重み共有局所領域の垂直方向の位置を表すインデックス、水平方向の位置を表すインデックスである。例えば、図５の重み共有局所領域５０４はＬ０，０、重み共有局所領域５０７はＬ０，１、重み共有局所領域５１０はＬ３，４となる。
【００３２】
さらに、重み共有局所領域Ｌｉ，ｊに適用するフィルタカーネルとして予め設定されているフィルタカーネルをＫｉ，ｊ（ｉ＝０，１，２，３，  ｊ＝０，１，２，３，４）と表記する。従って例えば、図５のフィルタカーネル５０３はＫ０，０、フィルタカーネル５０６はＫ０，１、フィルタカーネル５０９はＫ３，４となる。
【００３３】
また、重み共有局所領域Ｌｉ，ｊに対してフィルタカーネルＫｉ，ｊを用いてフィルタ演算を行うことで得られる演算結果領域をＦｉ，ｊ（ｉ＝０，１，２，３，  ｊ＝０，１，２，３，４）と表記する。従って例えば、図５の演算結果領域５０５はＦ０，０、演算結果領域５０８はＦ０，１、演算結果領域５１１はＦ３，４となる。
【００３４】
図５の場合、２０個の重み共有局所領域のグループ化（グループ分け）を行う。グループの分け方はあらかじめ決められており、そのグループの分け方は複数パターン用意してあるものとする。例えば本実施形態では、以下の２パターンのグループ分けを行う。
【００３５】
図２（Ａ）に、演算対象画像における重み共有局所領域を「第１のグループ分けパターン」でグループ分けした結果を示す。「第１のグループ分けパターン」とは、重み共有局所領域Ｌｉ，ｊ（ｉ＝０，１，２，３，ｊ＝０，１，２，３，４）のうちｉが同じ値の重み共有局所領域Ｌｉ，ｊを同じグループとするグループ分けである。この場合、重み共有局所領域Ｌ０，０、Ｌ０，１、Ｌ０，２、Ｌ０，３、Ｌ０，４が同じグループ（ｉが０のグループ）にグループ分けされる。同様に、重み共有局所領域Ｌ１，ｊ（ｊ＝０，１，２，３，４）が同じグループ（ｉが１のグループ）にグループ分けされ、重み共有局所領域Ｌ２，ｊ（ｊ＝０，１，２，３，４）が同じグループ（ｉが２のグループ）にグループ分けされる。また同様に、重み共有局所領域Ｌ３，ｊ（ｊ＝０，１，２，３，４）が同じグループ（ｉが３のグループ）にグループ分けされる。
【００３６】
このように、「第１のグループ分けパターン」では、演算対象画像５０１における重み共有局所領域は４つのグループにグループ分けされる。以下では、「ｉ＝０のグループ」をＰ１＿Ｇ０、「ｉ＝１のグループ」をＰ１＿Ｇ１、「ｉ＝２のグループ」をＰ１＿Ｇ２、「ｉ＝３のグループ」をＰ１＿Ｇ３、と表記する。
【００３７】
重み共有局所領域は互いに重複する領域を有するので、グループもまた互いに重複する領域を有する。図２（Ａ）では図が煩雑になるのを避けるために、Ｐ１＿Ｇ０のみを太線で枠表示している。重み共有局所領域のサイズは４画素×４画素であるので、「第１のグループ分けパターン」でグループ分けされた各グループのサイズは何れも１２画素×４画素となる。
【００３８】
続いて図２（Ｂ）に、演算対象画像における重み共有局所領域を「第２のグループ分けパターン」でグループ分けした結果を示す。「第２のグループ分けパターン」とは、重み共有局所領域Ｌｉ，ｊ（ｉ＝０，１，２，３，ｊ＝０，１，２，３，４）のうちｊが同じ値の重み共有局所領域Ｌｉ，ｊを同じグループとするグループ分けである。この場合、重み共有局所領域Ｌ０，０、Ｌ１，０、Ｌ２，０、Ｌ３，０が同じグループ（ｊが０のグループ）にグループ分けされる。同様に、重み共有局所領域Ｌｉ，１（ｉ＝０，１，２，３）が同じグループ（ｊが１のグループ）にグループ分けされ、重み共有局所領域Ｌｉ，２（ｉ＝０，１，２，３）が同じグループ（ｊが２のグループ）にグループ分けされる。また同様に、重み共有局所領域Ｌｉ，３（ｉ＝０，１，２，３）が同じグループ（ｊが３のグループ）にグループ分けされ、重み共有局所領域Ｌｉ，４（ｉ＝０，１，２，３）が同じグループ（ｊが４のグループ）にグループ分けされる。
【００３９】
このように、「第２のグループ分けパターン」では、演算対象画像５０１における重み共有局所領域は５つのグループにグループ分けされる。以下では、「ｊ＝０のグループ」をＰ２＿Ｇ０、「ｊ＝１のグループ」をＰ２＿Ｇ１、「ｊ＝２のグループ」をＰ２＿Ｇ２、「ｊ＝３のグループ」をＰ２＿Ｇ３、「ｊ＝４のグループ」をＰ２＿Ｇ４、と表記する。
【００４０】
重み共有局所領域は互いに重複する領域を有するので、グループもまた互いに重複する領域を有する。図２（Ｂ）では図が煩雑になるのを避けるために、Ｐ２＿Ｇ０のみを太線で枠表示している。重み共有局所領域のサイズは４画素×４画素であるので、「第２のグループ分けパターン」でグループ分けされた各グループのサイズは何れも４画素×１０画素となる。
【００４１】
前述したように、本実施形態では、グループ内の全ての重み共有局所領域に対しては、共通のグループ内共有フィルタカーネルを用いてフィルタ処理する。従って、グループの数とグループ内共有フィルタカーネルの数は同じになる。本実施形態の場合、第１のグループ分けパターンで４つのグループ内共有フィルタカーネル、第２のグループ分けパターンで５つのグループ内共有フィルタカーネル、の合計９つのグループ内共有フィルタカーネルが必要となる。
【００４２】
次に、グループ内共有フィルタカーネルを用いたフィルタ演算の手順に関して説明を行う。画像処理装置が演算対象画像に対してグループ内共有フィルタカーネルを用いて行うフィルタ演算処理について、同処理のフローチャートを示す図１を用いて説明する。
【００４３】
ステップＳ１０１では、ＣＰＵ１２０１は、グループ内共有フィルタ演算を行う対象となる演算対象画像をＲＡＭ１２０２に取得する。演算対象画像は、人の顔などのオブジェクトを含む撮像画像であっても良いし、該撮像画像から該オブジェクトの領域を切り出した切り出し画像（部分画像）であっても良い。ＣＰＵ１２０１は、演算対象画像を外部記憶装置１２０６から取得しても良いし、上記の通り、Ｉ／Ｆ１２０７を介して外部から取得しても良い。
【００４４】
そしてＣＰＵ１２０１は、演算対象画像上に重み共有局所領域を設定する。そしてＣＰＵ１２０１は、該設定した重み共有局所領域を「第１のグループ分けパターン」でグループ分け（第１のグループ化）し、水平方向に並ぶ重み共有局所領域列ごとのグループＰ１＿Ｇｉ（ｉ＝０，１，２，３）を生成する。
【００４５】
ステップＳ１０２では、ＣＰＵ１２０１は、グループＰ１＿Ｇｉ（ｉ＝０〜３）を形成している各重み共有局所領域に適用するものとして予め設定されているそれぞれのフィルタカーネルを用いて、該Ｐ１＿Ｇｉを形成している各重み共有局所領域で共有するフィルタカーネルをグループ内共有フィルタカーネルとして求める。そしてＣＰＵ１２０１は、グループＰ１＿Ｇｉに対し、該グループについて求めたグループ内共有フィルタカーネルを用いたフィルタ演算を行う。
【００４６】
ステップＳ１０３では、ＣＰＵ１２０１は、ステップＳ１０２によるフィルタ演算により得られる画像を中間画像として取得する。そしてＣＰＵ１２０１は、該中間画像上に重み共有局所領域を設定する。そしてＣＰＵ１２０１は、該設定した重み共有局所領域を「第２のグループ分けパターン」でグループ分け（第２のグループ化）することで、垂直方向に並ぶ重み共有局所領域列ごとのグループＰ２＿Ｇｊ（ｊ＝０，１，２，３，４）を生成する。
【００４７】
ステップＳ１０４では、ＣＰＵ１２０１は、グループＰ２＿Ｇｊ（ｊ＝０，１，２，３，４）を形成している各重み共有局所領域に適用するものとして予め設定されているそれぞれのフィルタカーネルを用いて、該Ｐ２＿Ｇｊを形成している各重み共有局所領域で共有するフィルタカーネルをグループ内共有フィルタカーネルとして求める。そしてＣＰＵ１２０１は、グループＰ２＿Ｇｊに対し、該グループについて求めたグループ内共有フィルタカーネルを用いたフィルタ演算を行う。そしてＣＰＵ１２０１は、中間画像における全てのグループＰ２＿Ｇｊ（ｊ＝０，１，２，３，４）についてフィルタ演算処理を行うことで得られる画像を、フィルタ処理済画像として出力する。フィルタ処理済画像の出力先は、特定の出力先に限らず、ＣＰＵ１２０１は、フィルタ処理済画像をＲＡＭ１２０２や外部記憶装置１２０６に格納しても良いし、Ｉ／Ｆ１２０７を介して外部に出力しても良いし、表示部１２０５に表示しても良い。
【００４８】
以上説明した図１のフローチャートに従った処理により、演算対象画像に対する本実施形態に係るフィルタ演算（グループ内共有フィルタ演算）が実現される。ここで、図１のフローチャートに沿って説明した上記の各処理の詳細について以下に述べる。
【００４９】
ここで、グループＰ１＿Ｇｉ（ｉ＝０，１，２，３）に対して用いるグループ内共有フィルタカーネルをＰ１＿Ｋｉ（ｉ＝０，１，２，３）と称する。同様に、グループＰ２＿Ｇｊ（ｊ＝０，１，２，３，４）に対して用いるグループ内共有フィルタカーネルをＰ２＿Ｋｊ（ｊ＝０，１，２，３，４）と称する。
【００５０】
また、「第１のグループ分けパターン」でグループ分けされたそれぞれのグループＰ１＿Ｇｉに対して行われるフィルタ演算を「第１のグループ内共有フィルタ演算」と称する。また、「第２のグループ分けパターン」でグループ分けされたそれぞれのグループＰ２＿Ｇｊに対して行われるフィルタ演算を「第２のグループ内共有フィルタ演算」と称する。つまり、グループ内共有フィルタ演算では、第１のグループ内共有フィルタ演算と第２のグループ内共有フィルタ演算とを行う。
【００５１】
図３は、グループ内共有フィルタカーネルを用いたフィルタ演算の手順を説明するための図である。図３（Ａ）は演算対象画像を「第１のグループ分けパターン」でグループ分けした状態を示している（図２（Ａ）と同じもの）。
【００５２】
図３（Ｂ）は、「第１のグループ分けパターン」でグループ分けされたそれぞれのグループに適用するグループ内共有フィルタカーネルを示す。前述のように「第１のグループ分けパターン」では、重み共有局所領域は４つのグループにグループ分けされ、それぞれのグループにグループ内共有フィルタカーネルが割り当てられる。然るに、グループ内共有フィルタカーネルは４つある（Ｐ１＿Ｋｉ（ｉ＝０，１，２，３））。図３（Ｂ）では、４つあるグループ内共有フィルタカーネルのうちの一つを図示している。「第１のグループ分けパターン」でグループ分けされたそれぞれのグループに対するグループ内共有フィルタカーネルのサイズは全て水平方向１画素×垂直方向３画素（１×３）とする。
【００５３】
図３（Ｃ）は、第１のグループ内共有フィルタ演算の結果を図示している。つまり、「第１のグループ分けパターン」（図３（Ａ））でグループ分けされた４つのグループ（Ｐ１＿Ｇｉ（ｉ＝０〜３））に対して第１のグループ内共有フィルタカーネル（Ｐ１＿Ｋｉ（ｉ＝０〜３））を用いてフィルタ演算した結果を図示している。「第１のグループ分けパターン」でグループ分けされたそれぞれのグループのサイズは１２×４であるので、１×３のグループ内共有フィルタカーネルを用いてフィルタ処理すると、フィルタ処理の結果としての画像のサイズは１２×２になる。図３（Ｃ）の太枠領域は、図３（Ａ）の太枠領域（Ｐ１＿Ｇ０）に対して１×３のグループ内共有フィルタカーネル（Ｐ１＿Ｋ０）を用いてフィルタ処理した結果を示している。
【００５４】
図３（Ｄ）は、第１のグループ内共有フィルタ演算の結果である画像（図３（Ｃ））における重み共有局所領域を「第２のグループ分けパターン」でグループ分けした状態を示している。図３（Ｄ）は、図２（Ｂ）に相当するものであるが、第１のグループ内共有フィルタ演算により対象となる画像の縦方向のサイズが小さくなっている。これは、もともと図２（Ｂ）のグループ分けの状態が、１×３のフィルタカーネルを用いてフィルタ処理したために、縦方向に縮んだためである。
【００５５】
図３（Ｅ）は、「第２のグループ分けパターン」でグループ分けされたそれぞれのグループに適用するグループ内共有フィルタカーネルである。前述のように「第２のグループ分けパターン」では、重み共有局所領域は５つのグループにグループ分けされ、それぞれのグループにグループ内共有フィルタカーネルが割り当てられる。然るに、グループ内共有フィルタカーネルは５つある（Ｐ２＿Ｋｊ（ｊ＝０，１，２，３，４））。図３（Ｅ）では、５つあるグループ内共有フィルタカーネルのうちの一つを図示している。「第２のグループ分けパターン」でグループ分けされたそれぞれのグループに対するグループ内共有フィルタカーネルのサイズは全て水平方向３画素×垂直方向１画素（３×１）とする。
【００５６】
図３（Ｆ）は、第２のグループ内共有フィルタ演算の結果を図示している。つまり、「第２のグループ分けパターン」（図３（Ｄ））でグループ分けされた５つのグループ（Ｐ２＿Ｇｊ（ｊ＝０〜４））に対して第２のグループ内共有フィルタカーネル（Ｐ２＿Ｋｊ（ｊ＝０〜４））を用いてフィルタ演算した結果を図示している。「第２のグループ分けパターン」でグループ分けされたそれぞれのグループのサイズは４×８であるので、３×１のグループ内共有フィルタカーネルを用いてフィルタ処理すると、フィルタ処理の結果のサイズは２×８になる。図３（Ｆ）の太枠領域は、図３（Ｄ）の太枠領域（Ｐ２＿Ｇ０）に対して３×１のグループ内共有フィルタカーネル（Ｐ２＿Ｋ０）を用いてフィルタ処理した結果を示している。
【００５７】
以上のようにして、本実施形態に係るフィルタ演算（グループ内共有フィルタ演算）では、第１のグループ内共有フィルタ演算を行った結果に対して第２のグループ内共有フィルタ演算を行う。
【００５８】
最後に、局所共有フィルタカーネルをグループ内共有フィルタカーネルで近似する手順に関して説明を行う。前述のように、本実施形態に係るフィルタ処理では、局所共有フィルタカーネルを用いた局所共有重みフィルタ演算と同等の効果を得ることを目指している。従って、ある重み共有局所領域に注目したとする。この場合、局所共有重みフィルタ演算処理で適用されるフィルタカーネル（局所共有フィルタカーネル）と、グループ内共有フィルタ演算で適用されるフィルタカーネル（グループ内共有フィルタカーネル）との差が小さいほど望ましいと言える。よって、あらかじめ与えられた局所共有フィルタカーネルを、グループ内共有フィルタカーネルで近似する際にも、この基準で近似を行う。
【００５９】
ここで、重み共有局所領域Ｌｉ，ｊの左上隅の位置を原点（０，０）としたときのＬｉ，ｊ内の位置（ｕ、ｖ）（ｕ＝０，１，２，３，ｖ＝０，１，２，３）における要素（画素）の値（画素値）をＬｉ，ｊ［ｕ、ｖ］と表記する。
【００６０】
また、局所共有フィルタカーネルＫｉ，ｊの左上隅の位置を原点（０，０）としたときのＫｉ，ｊ内の位置（ｓ、ｔ）（ｓ＝０，１，２，ｔ＝０，１，２）における係数値（フィルタ係数値）をＫｉ，ｊ［ｓ、ｔ］と表記する。
【００６１】
また、局所共有重みフィルタ演算の結果である演算結果領域Ｆｉ，ｊの左上隅の位置を原点（０，０）としたときのＦｉ，ｊ内の位置（ｕ、ｖ）（ｕ＝０，１，ｖ＝０，１）における要素（画素）の値（画素値）をＦｉ，ｊ［ｕ、ｖ］と表記する。
【００６２】
図６（Ａ）に重み共有局所領域Ｌ０，０の構成例、図６（Ｂ）に局所共有フィルタカーネルＫ０，０の構成例、図６（Ｃ）に演算結果領域Ｆ０，０の構成例を示す。このとき、Ｆｉ，ｊ［ｕ、ｖ］は、以下の式（２）を計算することで、Ｌｉ，ｊとＫｉ，ｊとの畳み込み演算の結果として求めることができる。
【００６３】
【数２】
2019197324.tif 000004
【００６４】
また、グループ内共有フィルタカーネルＰ１＿Ｋｉ（ｉ＝０，１，２，３）の最上段の位置を原点（０）としたときのＰ１＿Ｋｉ内の位置ｓにおける係数値（フィルタ係数値）をＰ１＿Ｋｉ［ｓ］（ｉ＝０，１，２，３  ｓ＝０，１，２）と表記する。
【００６５】
また、グループ内共有フィルタカーネルＰ２＿Ｋｊ（ｊ＝０，１，２，３，４）の最上段の位置を原点（０）としたときのＰ２＿Ｋｊ内の位置ｔにおける係数値（フィルタ係数値）をＰ２＿Ｋｊ［ｔ］（ｊ＝０，１，２，３，４  ｔ＝０，１，２）と表記する。
【００６６】
図７（Ｂ）にグループ内共有フィルタカーネルＰ１＿Ｋ０の構成例、図７（Ｃ）にグループ内共有フィルタカーネルＰ２＿Ｋ０の構成例を示す。また、図７（Ａ）に重み共有局所領域Ｌ０，０の構成例（図６（Ａ）と同じもの）を示す。また、図７（Ｄ）に、重み共有局所領域Ｌ０，０に対して第１のグループ内共有フィルタ演算及び第２のグループ内共有フィルタ演算を行った結果である演算結果領域Ｇ０，０の構成例を示す。このとき、Ｇｉ，ｊ［ｕ、ｖ］は、以下の式（３）を計算することで求めることができる。
【００６７】
【数３】
2019197324.tif 000005
【００６８】
この場合、局所共有重みフィルタ演算では、重み共有局所領域Ｌｉ，ｊに適用されるフィルタカーネルはＫｉ，ｊ［ｓ、ｔ］である。グループ内共有フィルタ演算を行った場合、つまり、第１のグループ内共有フィルタ演算及び第２のグループ内共有フィルタ演算を行った場合に、重み共有局所領域Ｌｉ，ｊに適用されるフィルタカーネルは、Ｐ１＿Ｋｉ［ｓ］×Ｐ２＿Ｋｊ［ｔ］となる。
【００６９】
前述のように、局所共有重みフィルタ演算で適用されるフィルタカーネル（局所共有フィルタカーネル）と、グループ内共有フィルタ演算で適用されるフィルタカーネル（グループ内共有フィルタカーネル）と、の差が小さいほうがよい。従って、両フィルタカーネルの全要素の差を、全ての重み共有局所領域にわたって加算した量をコストと考え、そのコストをなるべく小さくするように、グループ内共有フィルタカーネルを決定すればよい。このときコストＣｏｓｔは次の式（４）で表現される。
【００７０】
【数４】
2019197324.tif 000006
【００７１】
従って本実施形態では、上記のコストＣｏｓｔの値を下げるように最適化を行うことで良好な近似を実現すればよい。具体的には、上記コストＣｏｓｔを最小にするようなＰ１＿Ｋｉ［ｓ］とＰ２＿Ｋｊ［ｔ］とを探索する。
【００７２】
コストＣｏｓｔを最小化する手法としては、公知の手法を使用すればよい。例えば、勾配法（最急降下法）による反復演算により、コストＣｏｓｔを最小とするＰ１＿Ｋｉ［ｓ］とＰ２＿Ｋｊ［ｔ］とを算出すればよい。勾配法では必ずしも最小値に到達しない可能性があるので、Ｐ１＿Ｋｉ［ｓ］とＰ２＿Ｋｊ［ｔ］に与える適当な初期値を何度か変更して勾配法を試してみて、最小のコストを実現した場合のＰ１＿Ｋｉ［ｓ］とＰ２＿Ｋｊ［ｔ］を近似の結果としてもよい。また、勾配法の反復計算で用いる更新重みも複数の値で試してみてもよい。以上のようにして、局所共有フィルタカーネルをグループ内共有フィルタカーネルで近似する。またさらには、コストＣｏｓｔを以下の式（５）に従って求めても良い。
【００７３】
【数５】
2019197324.tif 000007
【００７４】
ここでＥｉ，ｊ（ｉ＝０，１，２，３  ｊ＝０，１，２，３，４）は、局所共有フィルタカーネルごとに予め定められた近似精度優先度係数である。このときコストＣｏｓｔは、各局所共有フィルタカーネルを近似する際の誤差と、近似精度優先度係数と、の重み付き和で表現される。各近似精度優先度係数Ｅｉ，ｊは、局所共有フィルタカーネルをグループ内共有フィルタカーネルで近似するときに、どの局所共有フィルタカーネルの近似精度を優先するかということを表す。特定の局所共有フィルタカーネルを精度よく近似したい場合には、その局所共有フィルタカーネルに対応する近似精度優先度係数を、他の近似精度優先度係数より大きくすれば良い。そのようにすると、その特定の局所共有フィルタカーネルの近似精度がコストに大きく影響するため、他の局所共有フィルタカーネルよりも精度よく近似される。このようにして、局所共有フィルタカーネルの近似精度に優先度を儲けることも可能である。例えば、非特許文献１で開示されているように局所共有重みフィルタ演算を顔認証に用いる場合には、目や口等の個人の特徴が表出されているような重み共有局所領域に対応する局所共有フィルタカーネルが顔認証精度には重要であると考えられる。従って、このような場合には、目や口領域に対応する局所共有フィルタカーネルの近似精度優先度係数を大きくして、グループ内共有フィルタカーネルでの近似を精度よく行えばよい。
【００７５】
ここで、グループ内共有フィルタカーネルのサイズに関して説明しておく。グループ内共有フィルタカーネルのサイズは、もとの局所共有重みフィルタ演算における、重み共有局所領域のサイズと、そこから算出される演算結果領域のサイズと、の関係が、グループ内共有フィルタ演算でも維持されるように選ばれる。
【００７６】
例えば図６に示されるように、もとの局所共有重みフィルタ演算では、４×４の重み共有局所領域に対して３×３のフィルタカーネルを用いて畳み込み演算を行うことで２×２の演算結果領域が算出される。
【００７７】
図７に示す如く、グループ内共有フィルタ演算でも４×４の重み共有局所領域（（Ａ））に対して１×３のフィルタカーネル（（Ｂ））と３×１のフィルタカーネル（（Ｃ））とを用いて畳み込み演算を行うことで２×２の演算結果領域（（Ｄ））が算出される。
【００７８】
このように、同じ重み共有局所領域に対して、もとの局所共有重みフィルタ演算により算出される演算結果領域のサイズとグループ内共有フィルタ演算により算出される演算結果領域のサイズとが同一になるようにグループ内共有フィルタカーネルのサイズを選択すればよい。例えば、図７では１×３のグループ内共有フィルタカーネルと３×１のグループ内共有フィルタカーネルを用いた例を示したが、順序を変えて３×１のグループ内共有フィルタカーネルと１×３のグループ内共有フィルタカーネルを用いてもよい。さらには、３×３のグループ内共有フィルタカーネルと１×１のグループ内共有フィルタカーネルを用いてもよい。
【００７９】
なお、このようなグループごとのグループ内共有フィルタカーネルは、予め作成して外部記憶装置１２０６に保存しておいて使用時にＲＡＭ１２０２に読み出して使用しても構わない。また、図１のフローチャートに従った処理の開始後、使用前に求めても構わない。
【００８０】
以上詳細に説明したように、グループ内共有フィルタ演算では、複数の重み共有局所領域をグループ化し、グループに属する全ての重み共有局所領域に対しては共通のフィルタカーネルを用いてフィルタ演算を行う。このような構成によれば、局所共有重みフィルタ演算で必要となるフィルタカーネルの数を削減することができる。その際に、グループ化のパターンを複数（例えば２パターン）用意し、それらのパターンを適用したフィルタ演算を連続して行うことで、重み共有局所領域ごとに異なるフィルタカーネルを適用して演算した場合と同様の効果を得ることができるようにしている。
【００８１】
従って本実施形態によれば、それぞれのパターンに対応するグループ数を加算した数のフィルタカーネルがあれば、局所共有重みフィルタ演算と同様の効果が得られるフィルタ演算を実現できる。例えば、本実施形態で示されたように、図５に例示された局所共有重みフィルタ演算に適用する場合、４つのグループからなるパターンと、５つのグループからなるパターンと、を用意すればよい。この場合、４＋５＝９個のフィルタカーネルで済む。つまり、当初は局所共有フィルタカーネルが２０個必要であったのに比べて、９個のフィルタカーネルで済む。
【００８２】
さらに、それぞれのフィルタカーネルは、１×３と３×１のサイズであるので、局所共有フィルタカーネルのサイズ３×３に比べて小さくなっている。つまりフィルタカーネルの数が少なくて済むだけでなく、フィルタカーネルのサイズ自体も小さいもので済む。従って、局所共有重みフィルタ演算では３×３×２０＝１８０のフィルタ要素を格納するメモリが必要であったのに比べて、本実施形態では３×１×４＋１×３×５＝２７のフィルタ要素を格納するメモリがあればよくなる。
【００８３】
上記のようにフィルタカーネルのサイズを小さくできるということは、フィルタ演算に要する積和演算回数の低減も実現できる。従来の局所共有重みフィルタ演算では、１画素分の演算結果を得るのに９回（３×３のフィルタカーネルサイズ分）の積和演算を行う必要がある。それに対して、グループ内共有フィルタ演算では、同じ１画素分の演算結果を得るのに６回（１×３と３×１のフィルタカーネルサイズ分）の積和演算で済む。従って、演算に要する処理時間の短縮や電力の削減が実現できる。
【００８４】
［第２の実施形態］
本実施形態を含む以下の各実施形態では、第１の実施形態との差分について説明し、以下で特に触れない限りは第１の実施形態と同様であるものとする。第１の実施形態では、あらかじめ用意されている局所共有フィルタカーネルを用いた局所共有重みフィルタ演算に適用して、フィルタカーネルの数を減らすと同時に局所共有重みフィルタ演算と同等の効果を得るフィルタ演算を実現する例を示した。つまり、第１の実施形態は、局所共有フィルタカーネルがあらかじめ用意されていることを前提とし、用意された局所共有フィルタカーネルからグループ内共有フィルタカーネルを近似演算により算出するものであった。
【００８５】
これに対し、本実施形態では、局所共有フィルタカーネルを経ずに直接グループ内共有フィルタカーネルを算出する。本実施形態では、階層的畳み込みニューラルネットワーク（Convolutional Neural Network：CNN）として知られている特徴抽出処理の一部に局所共有重みフィルタ演算を用いるような場合に適用する例について説明する。近年、CNNと呼ばれる畳み込みフィルタを用いた階層的な特徴抽出処理を用いて顔認証等の画像認識処理することが盛んに行われている。
【００８６】
ここで、図８を用いてCNNの演算例について説明する。図８は、入力層（入力画像）１１０１に対して、CNNにより特徴抽出を行い、特徴量１１０７を得るような処理を示している。入力層１１０１から特徴量１１０７を得るまでにCNNを用いた演算を何度も（図８では３度）繰り返している。
【００８７】
まず、前半のCNN処理について説明する。図８において、入力層１１０１は、画像データに対してＣＮＮ演算を行う場合のラスタスキャンされた所定サイズの画像データを示す。特徴面１１０３ａ〜１１０３ｃは、第１段目の階層１１０８の特徴面を示す。特徴面とは、所定の特徴抽出フィルタ（コンボリューションフィルタ演算及び非線形処理）の検出結果を示すデータ面である。ラスタスキャンされた画像データに対する検出結果であるため、検出結果も面で表される。特徴面１１０３ａ〜１１０３ｃは、入力層１１０１に対するコンボリューションフィルタ演算及び非線形処理により生成される。例えば、特徴面１１０３ａは、フィルタカーネル１１０２１ａを用いたコンボリューションフィルタ演算及び演算結果の非線形変換により得られる。なお、図８中のフィルタカーネル１１０２１ｂ及び１１０２１ｃは、それぞれ特徴面１１０３ｂ及び１１０３ｃを生成する際に使用されるフィルタカーネルである。
【００８８】
次に、第２段目の階層１１０９の特徴面１１０５ａを生成する演算について説明する。特徴面１１０５ａは前段の階層１１０８の３つの特徴面１１０３ａ〜１１０３ｃと結合している。従って、特徴面１１０５ａのデータを算出する場合、特徴面１１０３ａに対してはフィルタカーネル１１０４１ａで示すカーネルを用いたコンボリューションフィルタ演算を行い、この結果を保持する。同様に、特徴面１１０３ｂ及び１１０３ｃに対しては、それぞれフィルタカーネル１１０４２ａ及び１１０４３ａのコンボリューションフィルタ演算を行い、これらの結果を保持する。これらの３種類のフィルタ演算の終了後、結果を加算し、非線形変換処理を行う。以上の処理を画像全体に対して処理することにより、特徴面１１０５ａを生成する。
【００８９】
同様に、特徴面１１０５ｂの生成の際には、前段の階層１１０８の特徴面１１０３ａ〜１１０３ｃに対するフィルタカーネル１１０４１ｂ、１１０４２ｂ及び１１０４３ｂによる３つのコンボリューションフィルタのフィルタ演算を行う。
【００９０】
また、第３段目の階層１１１０の特徴量１１０７の生成の際には、前段の階層１１０９の特徴面１１０５ａ〜１１０５ｂに対するフィルタカーネル１１０６１及び１１０６２による２つのコンボリューションフィルタのフィルタ演算を行う。これらの２種類のフィルタ演算の終了後、結果を加算し、非線形変換処理を行う。以上の処理を画像全体に対して処理することにより、特徴量１１０７を生成する。
【００９１】
CNNで用いるフィルタカーネルは、誤差逆伝播法（Back Propagation：BP）と呼ばれる手法により算出することが可能である（一般的には「学習する」と表現される）。
【００９２】
以上述べたようにCNNは、畳み込みフィルタを階層的に行う処理（ある階層の処理結果を、その上位の階層の処理の入力とする処理）である。非特許文献１では、そのようなCNNを用いた特徴抽出処理の特定の階層を、通常の畳み込みフィルタでなく、局所共有重みフィルタ演算にして、顔認証の精度向上を実現している。非特許文献１で開示されたCNNの特定階層を局所共有重みフィルタ演算に置き換えたネットワークも、そのフィルタカーネルは、BPによる学習により決定されている。
【００９３】
非特許文献１で開示されたように、CNNの一部に局所共有重みフィルタ演算を行いたいような場合には、以下の手順により、局所共有フィルタカーネルの算出を経ずに直接グループ内共有フィルタカーネルを算出することができる。
【００９４】
本実施形態に係るグループ内共有フィルタカーネルの算出手順について、図９のフローチャートに従って説明する。ステップＳ９０１では、ＣＰＵ１２０１は、局所共有重みフィルタ演算の仕様を基に、重み共有局所領域のグループ化方法及びグループ内共有フィルタカーネルのサイズを決定する。
【００９５】
局所共有重みフィルタ演算の仕様とは、重み共有局所領域のサイズや、局所共有フィルタカーネルのサイズのことを指し、これらの情報からどのように重み共有局所領域のグループ化を行うのかや、グループ内共有フィルタカーネルのサイズを決定する。重み共有局所領域のグループ化方法の決定や、グループ内共有フィルタカーネルのサイズの決定は第１の実施形態で説明したとおりである。例えば、図５のような局所共有重みフィルタ演算を行いたい場合には、図３に示したグループ化、並びにグループ内共有フィルタカーネルのサイズを用いればよい。
【００９６】
続いてステップＳ９０２では、ＣＰＵ１２０１は、CNNの一部にグループ内共有フィルタ演算を適用したネットワークの構築を行う。例えば図８の第２段目の階層１１０９で局所共有重みフィルタ演算を行いたいような場合には、該階層を第１の実施形態で説明したフィルタ演算（その内容はステップＳ９０１で決定したもの）としたネットワークを構築する。
【００９７】
続いてステップＳ９０３では、ＣＰＵ１２０１は、ステップＳ９０２で構築したネットワークに対してBPを適用してフィルタカーネルの学習を行う。この学習によりグループ内共有フィルタカーネルも決定（学習）される。
【００９８】
以上のように、当初よりグループ内共有フィルタ演算を組み込んだネットワークを構築し、そのネットワークに対してBPを適用して、フィルタカーネル（グループ内共有フィルタカーネルを含む）の学習を行う。これにより、局所共有フィルタカーネルの算出を経ずに直接グループ内共有フィルタカーネルを算出することができる。
【００９９】
また、学習の際には各フィルタカーネルに初期値を与えることが必要となるが、その初期値として、例えば、第１の実施形態で示した手法で得られたグループ内共有フィルタカーネルの値を用いてもよい。この場合には、一般的に行われている乱数を初期値に用いる場合よりも、学習が効率よく進むことが期待できる。また、CNNを用いて実現しているアプリケーションにとっても、より適したグループ内共有フィルタカーネルを得ることができると期待される。
【０１００】
［第３の実施形態］
第１，２の実施形態では、グループ化のパターンを複数（例えば２パターン）用意し、それらのパターンを適用したグループ内共有フィルタ演算を行う例を示した。その際のグループ内共有フィルタ演算は、第１のグループ内共有フィルタ演算を行った結果に対して第２のグループ内共有フィルタ演算を行うというものであった。
【０１０１】
これに対し、本実施形態では、第１の実施形態や第２の実施形態で求めたグループ内共有フィルタカーネルを使用して、第１の実施形態や第２の実施形態とは異なる演算手順によりグループ内共有フィルタ演算を実現する例を説明する。
【０１０２】
グループ内共有フィルタカーネルを用いたフィルタ演算の手順について、図１０のフローチャートに従って説明する。まずステップＳ１００１において、ＣＰＵ１２０１は、第１の実施形態や第２の実施形態で求めたグループ内共有フィルタカーネルを使用して、局所共有フィルタカーネルを近似的に復元することを行う。この復元では、上記の式（３）からわかるように、Ｐ１＿Ｋｉ［ｓ］×Ｐ２＿Ｋｊ［ｔ］の演算を行えばよい。第１の実施形態で示したように、Ｐ１＿Ｋｉ［ｓ］とＰ２＿Ｋｊ［ｔ］とは、式（５）をなるべく小さくするようにして算出される。従って、復元されたＰ１＿Ｋｉ［ｓ］×Ｐ２＿Ｋｊ［ｔ］は、元の局所共有フィルタカーネルを近似するものになっている。
【０１０３】
続いてステップＳ１００２では、ＣＰＵ１２０１は、ステップＳ１００１にて復元された局所共有フィルタカーネルを用いて演算対象画像に対して局所共有重みフィルタ演算を行う。以上が、グループ内共有フィルタカーネルを用いたフィルタ演算の手順である。
【０１０４】
上記の本実施形態に係る演算手順を使用する場合には、グループ内共有フィルタカーネルとして、元の局所共有フィルタカーネルと同じサイズのものを用いることもできる。その場合について以下に説明する。
【０１０５】
局所共有フィルタカーネルは、第１，２の実施形態と同じく図５に示すものとする（サイズは３×３）と、第１のグループ内共有フィルタカーネルも第２のグループ内共有フィルタカーネルもサイズは３×３となる。このとき、第１のグループ内共有フィルタカーネルＰ１＿Ｋｉの左上隅の位置を原点（０，０）としたときのＰ１＿Ｋｉ内の位置（ｓ、ｔ）における係数値（フィルタ係数値）をＰ１＿Ｋｉ［ｓ、ｔ］（ｉ＝０〜３  ｓ＝０〜２  ｔ＝０〜２）と表記する。また、第２のグループ内共有フィルタカーネルＰ２＿Ｋｊの左上隅の位置を原点（０，０）としたときのＰ２＿Ｋｊ内の位置（ｓ、ｔ）における係数値（フィルタ係数値）をＰ２＿Ｋｊ［ｓ、ｔ］（ｊ＝０〜４  ｓ＝０〜２  ｔ＝０〜２）と表記する。
【０１０６】
図１１（Ｂ）に第１のグループ内共有フィルタカーネルＰ１＿Ｋ０の構成例、図１１（Ｃ）に第２のグループ内共有フィルタカーネルＰ２＿Ｋ０の構成例を示す。また、図１１（Ａ）に重み共有局所領域Ｌ０，０の構成例（図６（Ａ）と同じもの）を示す。また、図１１（Ｄ）は、上記二つのグループ内共有フィルタカーネル（Ｐ１＿Ｋ０とＰ２＿Ｋ０）から、局所共有フィルタカーネルを近似的に復元して得られるフィルタカーネルを重み共有局所領域Ｌ０，０に適用して得られる演算結果領域を示す。このときコストＣｏｓｔは次の式（６）で表現される。
【０１０７】
【数６】
2019197324.tif 000008
【０１０８】
第１の実施形態の場合と同じく、コストＣｏｓｔの値を下げるように最適化を行うことで良好な近似を実現させることができる。式（６）を用いた局所共有フィルタカーネルの近似は、式（４）を用いた局所共有フィルタカーネルの近似に比べて、最適化で調整されるパラメータ（フィルタカーネルの要素）数が増えるので、近似精度がより向上することが期待される。この場合も、図１０に示すフローチャートに従って演算することで、グループ内共有フィルタカーネルを用いたフィルタ演算が実現できる。
【０１０９】
本実施形態の場合、ステップＳ１００２の局所共有重みフィルタ演算自体は従来のものと同じであるが、そこで使用されるフィルタカーネルは、ステップＳ１００１で近似的に復元されたものを使用する。従って、フィルタカーネルを記憶しておくためのメモリは、グループ内共有フィルタカーネルを記憶する分だけでよい。つまり、従来に比べて少ないメモリ量で済む。
【０１１０】
［第４の実施形態］
第１〜３の実施形態に係る説明の中で使用した数値（画像サイズやフィルタサイズ等）や位置の基準などは、具体的な説明を行うために例示的に示したものであって、これらの限定に限らない。
【０１１１】
また、第１〜３の実施形態に係る説明において、水平方向及び垂直方向は、画像の一辺に沿った方向（第１方向）及び該方向と直交する方向（第２方向）の一例である。然るに、例えば、第１〜３の実施形態に係る説明の中で水平方向と垂直方向とを逆にしても構わないし、他の方向を指していても良い。
【０１１２】
また、第１〜３の実施形態では、重み共有局所領域は、画像（演算対象画像、中間画像）において水平方向及び垂直方向に並ぶ領域列として該画像上に設定された領域であった。しかし、画像（演算対象画像、中間画像）上における重み共有局所領域の配列は、第１〜３の実施形態で説明した配列に限らない。例えば、着目領域を覆うように重み共有局所領域を互いに重複するように任意の位置に配置（設定）するようにしても良い。
【０１１３】
また、以上説明した各実施形態の一部若しくは全部を適宜組み合わせて使用しても構わない。また、以上説明した各実施形態の一部若しくは全部を選択的に使用しても構わない。
【０１１４】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１１５】
１２０１：ＣＰＵ  １２０２：ＲＡＭ  １２０３：ＲＯＭ  １２０４：操作部  １２０５：表示部  １２０６：外部記憶装置  １２０７：Ｉ／Ｆ  １２０８：バス
【図１】
2019197324.tif 000009
【図２】
2019197324.tif 000010
【図３】
2019197324.tif 000011
【図４】
2019197324.tif 000012
【図５】
2019197324.tif 000013
【図６】
2019197324.tif 000014
【図７】
2019197324.tif 000015
【図８】
2019197324.tif 000016
【図９】
2019197324.tif 000017
【図１０】
2019197324.tif 000018
【図１１】
2019197324.tif 000019
【図１２】
2019197324.tif 000020