(57)【要約】【課題】  ニューラルネットワークにおいて特徴データを格納するためのメモリ使用量を増大させることなく、認識性能を向上させる。【解決手段】  複数の階層を有するニューラルネットワークによるデータ処理を実行するデータ処理装置に、入力特徴データから中間特徴データを抽出する抽出手段と、前記中間特徴データからチャネル数を削減した出力特徴データを算出する算出手段と、前記算出手段が算出した出力特徴データを格納し、前記抽出手段に入力特徴データを与える記憶手段と、前記抽出手段が抽出する中間特徴データのチャネル数と前記算出手段が算出する出力特徴データのチャネル数とを制御する制御手段とを備える。【選択図】  図４
2020144659.tif 000002
【特許請求の範囲】
【請求項１】
複数の階層を有するニューラルネットワークによるデータ処理を実行するデータ処理装置であって、
入力特徴データから中間特徴データを抽出する抽出手段と、
前記中間特徴データからチャネル数を削減した出力特徴データを算出する算出手段と、
前記算出手段が算出した出力特徴データを格納し、前記抽出手段に入力特徴データを与える記憶手段と、
前記抽出手段が抽出する中間特徴データのチャネル数と前記算出手段が算出する出力特徴データのチャネル数とを制御する制御手段とを有することを特徴とするデータ処理装置。
【請求項２】
前記抽出手段は、前記入力特徴データから当該入力特徴データよりもチャネル数の多い中間特徴データを抽出することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記入力特徴データのチャネル数及び前記出力特徴データのチャネル数は、データのビット幅及び前記特徴データメモリの容量に基づいて予め決定され、前記中間特徴データのチャネル数は、前記入力特徴データのチャネル数及び前記出力特徴データのチャネル数に基づいて予め決定されることを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記制御手段は、中間特徴データのチャネル数及び出力特徴データのチャネル数を複数の階層について制御することを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記制御手段は、前記抽出手段に係数を与え、
前記抽出手段は、当該係数を用いて前記中間特徴データを抽出することを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
前記制御手段は、前記抽出手段に、前記入力特徴データのチャネル数より少ない数の係数を与え、
前記抽出手段は、前記入力特徴データの一部のチャネルを前記中間特徴データの算出に用いることを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記制御手段は、前記抽出手段に、前記入力特徴データのチャネル数より少ない数の係数を与え、
前記抽出手段は、前記中間特徴データを算出する際に、一つの係数を複数の回数、用いることを特徴とする請求項５に記載のデータ処理装置。
【請求項８】
前記抽出手段は、前記出力特徴データを、一定のサイズ及び一定のチャネル数ごとに分割したブロック単位で逐次的に算出することを特徴とする請求項１に記載のデータ処理装置。
【請求項９】
前記制御手段はデータのビット幅を指示し、
前記抽出手段は、前記ビット幅で量子化した中間特徴データを出力することを特徴とする請求項１に記載のデータ処理装置。
【請求項１０】
前記抽出手段は、活性化処理の出力として、前記制御手段が指示したビット幅で量子化された中間特徴データを出力することを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
前記算出手段は、前記中間特徴データのチャネル数を削減する処理と、前記出力特徴データの１チャネルあたりのデータの量を削減する処理とを行うことを特徴とする請求項１に記載のデータ処理装置。
【請求項１２】
前記記憶手段は、前記算出手段が行うチャネル数を削減する処理により得られた出力特徴データを保持し、
前記抽出手段は、ある階層の前記出力特徴データについて展開処理を行った結果を後の階層の前記入力特徴データとして受け取ることを特徴とする請求項１に記載のデータ処理装置。
【請求項１３】
前記算出手段は、算出する前記出力特徴データのチャネル数を前記中間特徴データが与えられる毎に切り替えることを特徴とする請求項１に記載のデータ処理装置。
【請求項１４】
前記算出手段は、１チャネルの前記出力特徴データの算出に用いる前記中間特徴データのチャネル数と異なる大きさのストライドに従って、当該出力特徴データの算出に用いる中間特徴データを切り替えることを特徴とする請求項１に記載のデータ処理装置。
【請求項１５】
複数の階層を有するニューラルネットワークによるデータ処理を実行するデータ処理方法であって、
入力特徴データから中間特徴データを抽出する抽出工程と、
前記中間特徴データからチャネル数を削減した出力特徴データを算出する算出工程と、
前記算出手段が算出した出力特徴データをメモリに格納し、前記抽出工程で用いる入力特徴データを与える記憶工程と、
前記抽出工程で抽出する中間特徴データのチャネル数と前記算出工程で算出する出力特徴データのチャネル数とを制御する制御工程とを有することを特徴とするデータ処理方法。
【請求項１６】
コンピュータを、請求項１乃至１４の何れか１項に記載のデータ処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークに対応する処理を実行するデータ処理装置及びその方法、プログラムに関するものである。
【背景技術】
【０００２】
畳込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ，  以下ＣＮＮと称する）を、回路規模を抑えつつ効率よく処理するためのハードウェア実装技術が求められる。ＣＮＮは深層学習に用いられる方法として知られており、主に画像認識等のタスクにおいて優れた性能を発揮する。ＣＮＮによる画像認識の精度（以下、認識性能と呼ぶ）を高めるためには、ＣＮＮの階層（以下、レイヤと称する）の数を増やす、または１レイヤあたりの特徴データの数（以下、チャネル数と称する）を増やすことが求められる。
【０００３】
ＣＮＮ演算処理ハードウェアの回路規模を抑えつつ認識性能を高める上での障害として、特徴データを格納するためのメモリ（以下、特徴データメモリと呼ぶ）の使用量の増大が挙げられる。ＣＮＮの場合、特徴データとは階層毎の畳込み演算結果のことを指す。あるレイヤＬの特徴データＸＬ０，ＸＬ１，ＸＬ２，…から次レイヤＬ＋１のｉ番目の特徴データＸＬ＋１ｉを求める計算式を式（１）に示す。
【０００４】
【数１】
2020144659.tif 000003
【０００５】
式（１）において、ＷＬｉ，ｊは畳込みフィルタ係数（以下、係数と呼ぶ）、ｂＬｉはバイアス項である。また、＊は畳込み演算、Φは活性化関数を表す。式（１）に示す処理をハードウェアで実現するためには、入力値ＸＬ０，ＸＬ１，ＸＬ２，…，ＸＬＮＣＨ−１及び演算結果ＸＬ＋１ｉを格納するためのメモリが必要となる。このとき、特徴データメモリの使用量はレイヤＬのチャネル数ＮＣＨ，Ｌに比例するため、認識性能を高めるためには特徴データメモリの使用量を増やすことが必要となる。
【０００６】
特徴データメモリの使用量を抑えつつチャネル数を増やす方法の一例として、プーリングにより特徴データのデータサイズを削減する方法が挙げられる。特許文献１では、特徴データ内の近傍画素について空間方向の最大値プーリングを行い特徴データ１チャネルあたりのメモリ使用量を削減している。また、非特許文献１では、異なるチャネルの複数の特徴データについて、同じ画素位置についてチャネル方向の最大値プーリングを行い特徴データのチャネル数を削減している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１８−６７１５４号公報
【非特許文献】
【０００８】
【非特許文献１】”Ｌｅａｒｎｉｎｇ  ｒｏｔａｔｉｏｎ  ｉｎｖａｒｉａｎｔ  ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｆｉｌｔｅｒｓ  ｆｏｒ  ｔｅｘｔｕｒｅ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ”，  Ｄ．  Ｍａｒｃｏｓ  ｅｔ  ａｌ．，  ＩＣＰＲ  （２０１６）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
プーリングにより特徴データのデータサイズを削減すると、認識精度が低下する場合がある。特許文献１に見られる空間方向のプーリングを用いる方法では、階層を跨ぐ毎に特徴データの解像度が低下する。これにより、認識対象のサイズや位置といった情報を正確に推定する精度が低下する。
【００１０】
また、プーリングにより特徴データのデータサイズを削減しても、特徴データメモリの使用量を削減できるとは限らない。非特許文献１に見られるチャネル方向のプーリングを用いる方法では、特徴データの解像度は変化しないため、前述の認識精度が低下するという問題は回避できる。一方で、チャネル方向のプーリングを行う場合でも、プーリングを行う前の特徴データを特徴データメモリに保持する場合、特徴データメモリの使用量が増加する。そこで、本発明は、特徴データの解像度を低下させることなくデータサイズを削減することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明の１態様によれば、複数の階層を有するニューラルネットワークによるデータ処理を実行するデータ処理装置に、入力特徴データから中間特徴データを抽出する抽出手段と、前記中間特徴データからチャネル数を削減した出力特徴データを算出する算出手段と、前記算出手段が算出した出力特徴データを格納し、前記抽出手段に入力特徴データを与える記憶手段と、前記抽出手段が抽出する中間特徴データのチャネル数と前記算出手段が算出する出力特徴データのチャネル数とを制御する制御手段とを備える。
【発明の効果】
【００１２】
本発明によれば、ニューラルネットワークにおいて特徴データを格納するためのメモリ使用量を増大させることなく、認識性能を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】第１及び実施形態２における特徴データ処理の概念図。
【図２】実施形態１における処理対象ネットワークの構造例を表す図。
【図３】第１及び実施形態２におけるデータ処理装置の一構成例を表す図。
【図４】実施形態１における特徴データ処理部の構成を表すブロック図。
【図５】実施形態１におけるチャネル削減処理手段による処理の一例を表す図。
【図６】実施形態１における特徴データ処理部による処理の順序を示す流れ図。
【図７】実施形態１における特徴データ処理とメモリ使用量の関係を表す図。
【図８】実施形態２における処理対象ネットワークの構造例を表す図。
【図９】実施形態２における特徴データ処理部の構成を表すブロック図。
【図１０】実施形態２における特徴データ処理部による処理の順序を示す流れ図。
【図１１】その他の実施例における特徴データ処理部の構成を表すブロック図。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら本発明の好適な実施形態について詳細に説明する。
【００１５】
図１に、レイヤｌの特徴データからレイヤｌ＋１の特徴データを算出する場合の特徴データ処理を示す。通常の特徴データ処理では、入力特徴データ１０１と係数１０２を用いて、式（１）に示す畳込み演算及び活性化処理といった特徴抽出処理を行い、ＮＣＨ，ｌ＋１チャネルの出力特徴データ１０３を得る。このとき、ＮＣＨ，ｌはレイヤｌの特徴データのチャネル数を表す。これに必要に応じて量子化等の処理を加えたものを１レイヤとし、複数レイヤのニューラルネットワークを構成する。
【００１６】
後述する「チャネル方向プーリング」を用いた特徴データ処理では、入力特徴データ１０４と係数１０５を用いて特徴抽出処理を行い、通常のα倍のチャネル数の第１の出力特徴データ１０６を得る。さらに第１の出力特徴データ１０６についてチャネル削減処理を行い、第２の出力特徴データ１０７を得る。例えば、畳込み演算により得られる特徴データは値が０の画素が多く含まれるため情報量が少ない。従って、畳込み演算により得られたα×ＮＣＨ，ｌ＋１チャネルの第１の出力特徴データ１０６にチャネル方向プーリングを適用することで、通常より情報量の多いＮＣＨ，ｌ＋１チャネルの第２の出力特徴データ１０７を得ることができる。これにより、出力レイヤのチャネル数を増やすことなくニューラルネットワークの認識性能を向上させることが可能となる。
【００１７】
本実施形態に基づく特徴データ処理装置では、第１の出力特徴データ１０６を特徴データメモリに保持することなく図１に示す特徴データ処理を実現する。説明の簡略化のため、以下では、特徴データメモリに保持されない第１の出力特徴データ１０６を「仮想特徴データ（または中間特徴データ）」、特徴データメモリに保持される第２の出力特徴データ１０７を「出力特徴データ」と呼び分ける。また、入力特徴データ、仮想特徴データ、出力特徴データの各チャネルをそれぞれ「入力チャネル」、「仮想チャネル」、「出力チャネル」と呼ぶ。以下に示す実施形態１及び２では、上記を実現するための装置及び方法について図面に基づいて詳細に説明する。
【００１８】
（実施形態１）
実施形態１では、最も簡単な例として、α＝２の場合についてチャネル方向プーリングを用いた特徴データ処理を行う。チャネル方向プーリングを用いた特徴データ処理を実現する装置及び方法の一例を示す。以下に示す装置及び方法により、特徴データメモリのメモリ使用量を増やすことなくニューラルネットワークの認識精度を向上させることを目的とする。
【００１９】
図２に処理対象とするニューラルネットワーク（以下、ネットワークと呼ぶ）の構造の例を示す。図２に示すネットワークはレイヤＣ１，Ｃ２，Ｃ３の３つの階層と、その間にレイヤＰ１，Ｐ２の２つの階層を持つ。レイヤＣ１，Ｃ２，Ｃ３のチャネル数ＮＣＨ，１，ＮＣＨ，２，ＮＣＨ，３はいずれも４である。尚、説明の簡略化のため、特徴データ１チャネルあたりの画素数、各画素値のビット幅は全て等しいものとする。
【００２０】
レイヤＣ１，Ｃ２とレイヤＰ１，Ｐ２では異なる処理を行う。レイヤＣ１，Ｃ２，Ｃ３は「畳込み層」と呼ばれ、特徴抽出処理として式（１）に示す畳込み演算及び活性化処理を行う。レイヤＰ１，Ｐ２は「プーリング層」と呼ばれ、チャネル削減処理として後述する「チャネル方向プーリング」を行う。以上より、特徴抽出処理とチャネル削減処理を交互に行いながら、前段のレイヤから後段のレイヤに向かって順次特徴データを算出する。
【００２１】
尚、式（１）に示す処理のような特徴抽出処理においては係数を用いるが、係数は事前に決定される。この過程を「学習」と呼ぶ。学習においては、画像データについて画像認識を行い、認識結果に応じて係数を更新する。チャネル方向プーリングを行う場合の学習の方法については後述する。
【００２２】
図３は、本発明に係る特徴データ処理装置を含む、データ処理装置の一構成例を示すブロック図である。以下では各構成要素について説明する。
【００２３】
データ保存部３０２は、画像データを保存する部分である。通常はハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲやＤＶＤ、メモリーカード、ＣＦカード、スマートメディア、ＳＤカード、メモリスティック、ｘＤピクチャーカード、ＵＳＢメモリ等で構成される。データ保存部３０２には画像データの他にプログラムやその他のデータを保存することも可能である。あるいは、後述するＲＡＭ３０８の一部をデータ保存部３０２として用いても良い。またあるいは、後述する通信部３０３を介して接続した先の機器の記憶装置を利用する、というように仮想的に構成するのであっても良い。
【００２４】
表示部３０４は、画像処理前及び画像処理後の画像、あるいはＧＵＩ等の画像を表示する装置である。一般的にはＣＲＴや液晶ディスプレイなどが用いられる。あるいは、ケーブル等で接続された装置外部のディスプレイ装置であっても構わない。
【００２５】
入力部３０１は、ユーザからの指示やデータを入力する装置であり、キーボードやポインティング装置やボタン等を含む。また、あるいは公知のタッチスクリーン装置のように、表示部３０４と入力部３０１が同一装置であっても良い。その場合には、タッチスクリーンによる入力を入力部３０１の入力として扱う。
【００２６】
通信部３０３は、機器間の通信を行うためのＩ／Ｆである。なお、図３では入力部３０１、データ保存部３０２、表示部３０４が全て１つの装置内に含まれるような図を示している。しかし、これらの部分が公知の通信方式による通信路で接続されており、全体としてこのような構成となっているのであっても構わない。
【００２７】
ＣＰＵ３０６は、本装置全体の動作を制御する。ＲＯＭ３０７とＲＡＭ３０８は、その処理に必要なプログラム、データ、作業領域等をＣＰＵ３０６に提供する。後述する処理に必要なプログラムがデータ保存部３０２やＲＯＭ３０７に格納されている場合には、一旦ＲＡＭ３０８に読み込まれてから実行される。またあるいは、通信部３０３を経由して装置がプログラムを受信する場合には、一旦データ保存部３０２に記録した後にＲＡＭ３０８に読み込まれる。また、直接通信部３０３からＲＡＭ３０８に直接読み込まれてから実行されても良い。なお、図２においては、ＣＰＵが１つ（ＣＰＵ３０６）だけである構成だが、これを複数設けるような構成にしても良い。
【００２８】
画像処理部３０９は、ＣＰＵ３０６からのコマンドを受け、データ保存部３０２に書き込まれた画像データを読み出して画素値のレンジ調整を行う。処理された結果をＲＡＭ３０８に書き込む。
【００２９】
特徴データ処理部３０５は、ＲＡＭ３０８に保存された画像処理の結果を受け、後述のフローチャートに従って特徴抽出処理及びチャネル削減処理を行い、その結果をＲＡＭ３０８に返す。特徴データ処理部３０５は、式（１）に相当する畳込み演算及び活性化処理を行うための特徴抽出処理部を含む。また、特徴データ処理部３０５は、特徴データを保持するための記憶装置、すなわち特徴データメモリを含む。さらに、特徴データ処理部３０５は、特徴データについて後述するチャネル方向プーリングを行うためのチャネル削減処理部を含む。
【００３０】
ＣＰＵ３０６は、特徴データ処理部３０５によって処理された結果に基づき、動画像（複数フレームの画像）での画像処理または画像認識を行う。ＣＰＵ３０６の処理結果はＲＡＭ３０８に保存される。
【００３１】
なお、本実施形態における装置のシステム構成には、上記以外にも様々な構成要素が存在するが、本発明の主眼ではないのでその説明は省略する。
【００３２】
図４に特徴データ処理部３０５の一構成例を示す。前述の通り、特徴データ処理部３０５は図１に示す特徴抽出処理及びチャネル削減処理を行う。畳込み層処理部４０１は、特徴抽出処理を行い、入力特徴データから仮想特徴データを算出する。また、プーリング層処理部４０２は、チャネル削減処理を行い、仮想特徴データから出力特徴データを算出する。また、特徴データ処理部３０５には、特徴データメモリ４０３と、畳込み層処理部４０１に必要な係数を与える制御部４０４が含まれる。
【００３３】
尚、特徴データ処理部３０５では、「特徴ブロック」と呼ばれる単位で特徴データ処理を行う。特徴ブロックは、特徴データを空間方向に一定のサイズで分割した際の単位である。特徴ブロック単位で処理する利点としては、処理単位毎のデータサイズが小さくなることが挙げられる。畳込み層処理部４０１及びプーリング層処理部４０２の入出力データサイズを小さくすることで、これら構成要素の回路規模をより小さくできる。
【００３４】
また、特徴データ処理部３０５では、入力特徴ブロックを特徴データメモリ４０３から読み出し、２チャネルの仮想特徴ブロックを算出する。さらに、２チャネルの仮想特徴ブロックから１チャネルの出力特徴ブロックを算出し、特徴データメモリ４０３に書き込む。以上の処理の繰り返しにより、全チャネルの出力特徴データを算出する。以下では、各構成要素の詳細と構成要素間の関わりについて説明する。
【００３５】
畳込み層処理部４０１は、特徴抽出処理として、式（１）に示す畳込み演算及び活性化処理を行う。入力特徴ブロックから、２チャネルの仮想特徴ブロックを算出する。仮想特徴ブロックの算出には、制御部４０４が与える係数を用いる。畳込み層の処理は、畳込み演算と活性化処理に分けられ、畳込み層処理部４０１は内部に対応する演算部として、畳込み演算部及び活性化処理部を有する。畳込み演算部は入力特徴ブロックの画素と係数の乗算を行い、その乗算結果の累積和をバッファに保持する。
【００３６】
プーリング層処理部４０２は、チャネル削減処理として、チャネル方向プーリングを行う。２チャネルの仮想特徴ブロックを受け取り、１チャネルの出力特徴ブロックを算出する。
【００３７】
図５に、一般的なプーリングすなわち空間方向プーリングとプーリング層処理部４０２が行うチャネル方向プーリングの処理を示す。空間方向プーリングでは、初めに特徴データ５０１から４画素の特徴データ５０２を取り出す。その後、４画素の特徴データ５０３から１画素の特徴データ５０３を求める。以上の処理を異なる位置について繰り返し、特徴データ５０４を得る。１画素の特徴データ５０３の求め方は、４画素の特徴データ５０３について最大値を取るあるいは平均値を取る等の方法がある。
【００３８】
チャネル方向プーリングは、特徴データの取り出し方が空間方向プーリングと異なる。すなわち、２チャネルの特徴データ５０５から同じ位置の画素を集めたものを、２画素の特徴データ５０６とし、２画素の特徴データ５０６から１画素の特徴データ５０７を空間プーリングと同様に最大値または平均値を取ることにより求める。全体としては、２チャネルの特徴データ５０５から１チャネルの特徴データ５０８を算出する処理となる。
【００３９】
チャネル方向の最大値プーリングを行う場合、空間方向の最大値プーリングを行う場合と同様の方法で学習を行うことができる。つまり、特徴データの画素位置毎に最大値を取るチャネルを記憶する。ニューラルネットワークの学習では、まず推論を行い、次に推論の結果の正誤に応じて係数を更新する。このとき、推論時に最大値プーリングにより残された仮想チャネルを記憶し、前記の仮想チャネルを求める際に用いられた係数を更新する。
【００４０】
特徴データメモリ４０３は、入力特徴データ及び出力特徴データを保持する。入力特徴ブロックを畳込み層処理部４０１に渡し、出力特徴ブロックをプーリング層処理部４０２から受け取る。受け取った出力特徴データを次の入力特徴データとすることで、後段レイヤの特徴データを逐次的に算出していくことが可能となる。
【００４１】
制御部４０４は、畳込み層処理部４０１に係数を与える。制御部４０４はネットワークパラメータを内部に保持し、ネットワークパラメータに基づいて係数を与える。
【００４２】
制御部４０４が与える係数の数は、ネットワークパラメータに基づいて切り替えられる。例えば、図２に示すネットワークではレイヤＣ１のチャネル数ＮＣＨは４で、レイヤＰ１のチャネル数ＮＣＨは８である。この場合、レイヤＣ１‐Ｐ１間のチャネル同士の接続数は３２であるため、制御部４０４は畳込み層処理部４０１に対して３２通りのチャネルの組合せそれぞれに対応する係数を与える。
【００４３】
図６に、図４に示す構成の特徴データ処理部３０５により図２に示すネットワークを処理する場合のフローチャートを示す。一連の処理では、最前段であるレイヤＣ１の特徴データ２０１から、図２に示すネットワーク全体に相当する処理の結果として、最後段であるレイヤＣ３の特徴データ２０５を算出する。
【００４４】
図２に示すネットワーク全体の処理は、出力レイヤ単位、出力チャネル単位、特徴ブロック単位、入力チャネル単位の４重ループによって実現される。
【００４５】
以下では、図４に示す構成の特徴データ処理部３０５において、図２に示したネットワークを処理する例を挙げる。例に基づき、図６のフローチャートの各ステップの詳細を説明する。
【００４６】
ステップＳ６０１では、出力レイヤ単位のループが開始される。各ループにおいて仮想特徴データと出力特徴データをそれぞれ１レイヤ分算出する為、ループの周回数は最後段を除く畳込み層の数となる。例えば図２に示すネットワークの場合、Ｃ１，Ｃ２が処理されるためループの周回数は２となる。ｌ回目のループにおいて処理される入力特徴データ、仮想特徴データ、出力特徴データはそれぞれレイヤＣｌ，Ｐｌ，Ｃ（ｌ＋１）の特徴データとなる。
【００４７】
ステップＳ６０２では、制御部４０４が処理対象となるレイヤのパラメータを取得し、畳込み層処理部４０１への係数の送信を開始する。図２に示すネットワークの場合、レイヤＣｌ、レイヤＰｌのチャネル数を取得し、畳込み層処理部４０１へ送信する係数の数を決定する。
【００４８】
ステップＳ６０３では、出力チャネル単位のループが開始される。出力特徴データすなわちレイヤＣ（ｌ＋１）の特徴データを１チャネルずつ算出するため、ループの周回数はレイヤＣ（ｌ＋１）のチャネル数ＮＣＨ，ｌ＋１となる。例えば図２に示すネットワークの場合、常に４となる。
【００４９】
ステップＳ６０４では、特徴ブロック単位のループが開始される。ループの周回数は入力特徴データに含まれるブロックの数に等しい。ｍ回目のループにおいては、例えばラスタースキャン順でｍ番目のブロックが処理される。
【００５０】
ステップＳ６０５では、入力チャネル単位のループが開始される。入力特徴データすなわちレイヤＣｌの特徴データを１チャネルずつ与えるため、ループの周回数はレイヤＣｌのチャネル数ＮＣＨ，ｌとなる。図２に示すネットワークの場合、ループ周回数は常に４となる。入力チャネル単位のループでは、後述する畳込み演算の結果について累積和を求める。累積和の結果は畳込み層処理部４０１が有するバッファに格納される。畳込み層処理部４０１が有するバッファの初期化はステップＳ６０５にて行う。
【００５１】
ステップＳ６０６では、特徴データメモリ４０３から入力特徴ブロックを１チャネル読み出す。読み出された入力特徴ブロックは畳込み層処理部４０１に与えられる。
【００５２】
ステップＳ６０７では、畳込み層処理部４０１が特徴抽出処理に用いる係数を制御部４０４より取得する。取得する係数は算出する特徴ブロックのレイヤとチャネルにより決まるため、（ｌ，ｉ，ｊ）に依存する。尚、畳込み層処理部４０１は仮想特徴データを２チャネルずつ算出するため、ステップＳ６０７で取得する係数の数も２となる。
【００５３】
ステップＳ６０８では、畳込み層処理部４０１が１チャネルの入力特徴ブロックとステップ６０７で取得した２つの係数を用いて、畳込み演算を行い、２チャネル分の畳込み演算結果を得る。２チャネル分の畳込み演算結果についてそれぞれ加算を行い、入力チャネル単位のループ内での累積和をバッファに保持する。
【００５４】
ステップＳ６０９では、入力チャネル単位のループが終了する。以上の繰り返しにより、全ての入力チャネルについての畳込み演算結果の累積和が得られる。
【００５５】
ステップＳ６１０では、畳込み層処理部４０２が活性化処理を行い、ステップＳ６０９にて得られた２チャネル分の畳込み演算結果の累積和から２チャネルの仮想特徴ブロックを算出する。
【００５６】
ステップＳ６１１では、プーリング層処理部４０２がチャネル方向プーリングを行い、２チャネル分の仮想特徴ブロックから１チャネル分の出力特徴ブロックを算出する。算出された出力特徴ブロックは、特徴データメモリ４０３に与えられる。
【００５７】
ステップＳ６１２では、出力特徴ブロックを特徴データメモリ４０３に書き戻す。
【００５８】
ステップＳ６１３では、出力チャネル単位のループが終了する。以上の繰り返しにより、特徴データメモリ４０３に全チャネルの出力特徴ブロックが格納される。
【００５９】
ステップＳ６１４では、ブロック単位のループが終了する。以上の繰り返しにより、特徴データメモリ４０３に出力特徴データの全てのブロックが格納される。
【００６０】
ステップＳ６１５では、出力レイヤ単位のループが終了する。以上の繰り返しにより、図２に示すネットワークの最後段すなわちレイヤＣ３の特徴データが特徴データメモリ４０３に格納される。
【００６１】
図４に示す構成の特徴データ処理部と、図６に示すフローチャートに従う手順により、特徴データメモリ４０３の容量を増やすことなくニューラルネットワークの認識性能を高めることが可能となる。前述の通り、レイヤ毎のチャネル数を大きく取ることでニューラルネットワークの認識性能を高めることができる。以下では、レイヤＣｌの特徴データからレイヤＰｌ及びレイヤＣ（ｌ＋１）の特徴データを算出する場合を例に取り、特徴データメモリ４０３の使用量を増やすことなくチャネル数を増やす仕組みについて説明する。一般化のため、図１に倣い出力チャネル数に対する仮想チャネル数の比をαとおく。
【００６２】
図７に、入力特徴データから出力特徴データを算出する場合の特徴データとメモリ使用量の関係を示す。図６に示すフローチャートに従うと、図４に示す構成の特徴データ処理部３０５は、始めに入力特徴ブロック７０４について特徴抽出処理を行い、αチャネルの仮想特徴ブロック７０５を算出する。次にαチャネルの仮想特徴ブロック７０５についてチャネル削減処理を行い、１チャネルの出力特徴ブロックを算出する。以上の繰り返しにより、入力特徴データ７０１から出力特徴データ７０３を算出する。
【００６３】
特徴データメモリ４０３を小さくするためには、入力特徴データ７０１及び出力特徴データ７０３のチャネル数ＮＣＨ，ｌ，ＮＣＨ，ｌ＋１を小さくする必要がある。図６に示すフローチャートに従う手順では、全チャネルの出力特徴データ７０３を算出するためには全チャネルの入力特徴データ７０１を特徴データメモリ４０３に予め格納しておく必要がある。従って、必要な特徴データメモリ４０３のメモリ容量は、畳込み層毎に入力特徴データと出力特徴データのデータサイズの和を求めたときの最大値となる。各レイヤの特徴データのデータサイズはチャネル数に比例する。図２に示すネットワークの場合、必要な特徴データメモリ４０３のメモリ容量は入出力合わせて特徴データ８チャネル分となる。
【００６４】
一方で、仮想特徴データ７０２のチャネル数を大きく取っても、必ずしも特徴データメモリ４０３の使用量が増大するとは限らない。図６に示すフローチャートに従う手順では、仮想特徴データのうちαチャネルの仮想特徴ブロック７０５のみを一時的に保持できればよい。従って、保持すべき仮想特徴データのデータサイズは、出力特徴データ７０３のチャネル数ＮＣＨ，ｌ＋１に依らず仮想特徴ブロックαチャネル分となる。これは入力特徴ブロック数を大きく取る、αを小さく取るなどの方法により、特徴データメモリ４０３の容量に対して十分小さくできる。
【００６５】
以上を踏まえて、αを１より大きく取り、仮想チャネル数α×ＮＣＨ，ｌ＋１を出力チャネル数より大きくすることで、特徴データメモリ４０３の容量を増やすことなく認識性能を高めることが可能となる。一例として、チャネル方向プーリングを用いない特徴データ処理の場合、特徴データ容量のメモリが特徴データ８チャネル分で、入力特徴データのチャネル数ＮＣＨが４のとき、特徴抽出で得られる次レイヤの特徴データは最大４チャネルまでとなる。一方で、本発明に係るデータ処理装置では、例えば図２のように４チャネル×８チャネルの特徴抽出処理を含むネットワークを処理可能である。
【００６６】
（実施形態２）
実施形態２では、実施形態１と同様に特徴データメモリの使用量を増やすことなくニューラルネットワークの認識精度を高めることを目的とする。加えて、与えられた係数メモリ容量と処理時間の制約を満たしつつ、できるだけ高い認識性能を達成することを目的とする。以下では、認識精度と係数メモリ使用量及び処理時間のトレードオフにおいてスケーラブルな特徴データ処理装置及び方法の例を示す。出力チャネル数に対する仮想チャネル数の比αは、実施形態１と同様に２とする。
【００６７】
図８に処理対象とするネットワークの構造の例を示す。図８に示すネットワークはレイヤＣ１，Ｃ２，Ｃ３の３つの畳込み層を持ち、それぞれが有する特徴データのチャネル数ＮＣＨはいずれも４である。またレイヤＣ２とレイヤＣ３の間にプーリング層Ｐ２を持つ。尚、実施形態１と同様に、特徴データ１チャネルあたりの画素数、ビット幅は全て等しいものとする。
【００６８】
実施形態１と同様に、各レイヤの特徴データ８０２‐８０４は特徴抽出処理またはチャネル削減処理により求められる。レイヤＣ１の特徴データ８０１からレイヤＣ２の特徴データ８０２を求める場合、実施形態１と同様に式（１）に相当する畳込み演算及び活性化を行う。これを「第１の特徴抽出処理」と呼ぶ。レイヤＣ２の特徴データ８０２からレイヤＰ２の特徴データ８０３を算出する場合は、第１の特徴抽出処理とは異なる特徴抽出処理を用いる。これを「第２の特徴抽出処理」と呼ぶ。一方で、レイヤＰ２の特徴データ８０３からレイヤＣ３の特徴データ８０４を算出する場合は、実施形態１と同様にチャネル方向プーリングを行う。
【００６９】
図２に示すネットワークとの相違点は２つある。１つ目は、プーリング層の有無である。図２に示すネットワークでは、畳込み層の次レイヤは常にプーリング層となる。一方で、図８に示すネットワークでは、畳込み層が連続して存在する。従って、実施形態２においては、後述する構成の特徴データ処理部３０５が入力特徴ブロックに対して特徴抽出処理のみを行う場合がある。２つ目は、特徴抽出処理が２種類存在する点である。後述する第２の特徴抽出処理は、係数メモリ使用量及び処理時間の増大を抑えることを目的とする。
【００７０】
図９に実施形態２における特徴データ処理部３０５の構成を示す。実施形態１の同名の各構成要素に対応するものとして、畳込み層処理部９０１、プーリング層処理部９０２、特徴データメモリ９０３、制御部９０４を含む。また、畳込み層処理部９０１は特徴抽出処理を行い、プーリング層処理部９０２はチャネル削減処理を行う。
【００７１】
図４に示す制御部４０４との相違点として、図９に示す制御部９０４は、他の各構成要素に制御信号を与える。制御信号に基づき、畳込み層処理部９０１及びプーリング層処理部９０２は処理の切替えを行う。以下では各構成要素の詳細について、実施形態１と異なる部分に絞って説明する。
【００７２】
畳込み層処理部９０１は、第１の特徴抽出処理と第２の特徴抽出処理の２通りの特徴抽出処理を行う。２つの特長抽出処理のいずれを行うかは、制御部９０４が与える制御信号により決定される。
【００７３】
図８に示すネットワークにおけるレイヤＰ２の特徴データ８０３を求める場合、第２の特徴抽出処理を用いることで係数メモリ使用量及び処理時間を抑えることができる。第１の特徴抽出処理では、実施形態１と同様に入力特徴データの全チャネルから仮想特徴データを算出する。一方で、第２の特徴抽出処理では、入力特徴データの一部のチャネルについて、畳込み演算を省略する。省略される入力チャネル、制御部９０４が与える制御信号により決定され、出力チャネル毎に変えることができる。実施形態２においては、図８に示すレイヤＣ２の特徴データを入力特徴データとするとき、４チャネルのうち出力チャネル毎に予め選ばれた３チャネルのみを用いてレイヤＰ２の特徴データを算出するものとする。以下では、仮想特徴データの算出に用いられるチャネル数を「特徴抽出チャネル数」と呼ぶ。また、特徴抽出チャネル数の入力チャネル数に対する比をβと表す。
【００７４】
プーリング層処理部９０２は、チャネル方向プーリングを行うか否かを切り替えることができる。チャネル方向プーリングを行うか否かは、制御部９０４が与える制御信号により決定される。
【００７５】
図８に示すネットワークにおけるレイヤＣ２の特徴データ８０２を求める場合、プーリング層処理部９０２においてはチャネル方向プーリングを行わない。チャネル方向プーリングを行う場合、プーリング層処理部９０２がαチャネルの仮想特徴データを受け取り、１チャネルの出力特徴データを算出する。一方で、チャネル方向プーリングを行わない場合、プーリング層処理部９０２がαチャネルの仮想特徴データを受け取り、そのままαチャネルの出力特徴データとして出力する。つまり、レイヤＣ１の特徴データ９０１から特徴抽出処理のみを行った結果を出力特徴データとみなし、レイヤＣ２の特徴データ９０２として特徴データメモリ９０３に保持することができる。
【００７６】
制御部９０４は、畳込み層処理部９０１及びプーリング層処理部９０２に制御信号を与える。制御信号は、係数と同様にネットワークパラメータに基づいて切り替えられる。例えば、レイヤＣ１の特徴データ８０１からレイヤＣ２の特徴データ８０２を算出する場合、畳込み層処理部９０１では第１の特徴抽出処理を行い、プーリング層処理部９０２ではチャネル方向プーリングを行わない。一方で、レイヤＣ２の特徴データ８０２からレイヤＰ２の特徴データ８０３及びレイヤＣ３の特徴データ８０４を算出する場合、畳込み層処理部９０１では第２の特徴抽出処理を行い、プーリング層処理部９０２ではチャネル方向プーリングを行う。尚、制御部９０４は、事前に決定された制御信号群をネットワークパラメータとして与えられ、それらを順次参照して制御信号を与えても良い。
【００７７】
図１０に、特徴データ処理部３０５により図８に示すネットワークを処理する場合のフローチャートを示す。図１０のフローチャートにおけるステップＳ１００１‐１０１５は、実施形態１におけるステップＳ６０１‐６１５に対応する。以下では、図９に示す特徴データ処理部３０５によって図８に示すネットワークを処理する場合を例に挙げ、実施形態１と異なる部分に絞って説明する。一般化のため、図１０に示すフローチャートでは出力チャネル数に対する仮想チャネル数の比をαと表す。
【００７８】
ステップＳ１００２では、入力特徴データから出力特徴データまでに対応する各レイヤのパラメータを取得する。ただし、パラメータを取得するレイヤ数が３レイヤの場合と２レイヤの場合がある。つまり、チャネル方向プーリングを行う場合はレイヤＣｌ，Ｐｌ，Ｃ（ｌ＋１）のパラメータを、チャネル方向プーリングを行わない場合はレイヤＣｌ，Ｃ（ｌ＋１）のパラメータを取得する。
【００７９】
ステップＳ１００５では、ステップＳ６０５と同様に入力チャネル単位のループが開始される。ただし、第２の特徴抽出処理を用いる場合、ループの周回数は特徴抽出チャネル数β×ＮＣＨ，ｌとなるため、入力チャネル数ＮＣＨ，ｌよりも小さくなりうる。
【００８０】
ステップＳ１０１１では、プーリング層処理部９０２が、制御部９０４が与える制御信号に基づき、チャネル方向プーリングにより１チャネルの出力特徴データを算出する。あるいは、チャネル方向プーリングを省略し、αチャネルの仮想特徴データをαチャネルの出力特徴データとしてデータ統合部９０５に渡す。
【００８１】
実施形態１と同様に、図８に示すネットワークにおいてαを１より大きく取り、レイヤＰ２のチャネル数α×ＮＣＨ，ｌ＋１を大きくすることで、特徴データメモリ９０３の容量を増やすことなく認識性能を高めることが可能となる。レイヤＣ２の特徴データ８０２からレイヤＣ３の特徴データ８０４を算出する場合、図７に示すチャネル数とメモリ使用量の関係が成り立つ。つまり、バッファ等に保持すべき仮想特徴ブロックのデータサイズは特徴データメモリ９０３の容量に比べて十分に小さく、特徴データメモリ９０３の使用量はαに依存しない。
【００８２】
実施形態２においては、畳込み層処理部９０１及びプーリング層処理部９０２における処理の切替えにより、認識性能と係数メモリ使用量及び処理時間のトレードオフにおいてスケーラブルな特徴データ処理部３０５を実現する。以下では、畳込み演算の回数の制御により係数メモリ使用量及び処理時間の増大を抑える仕組みについて、図８に示すネットワークを例として説明する。図９に示す特徴データ処理部３０５において、特徴抽出処理における畳込み演算の回数を削減することで、係数メモリ及び処理時間を削減することができる。係数メモリ使用量は、特徴抽出処理における係数の数に比例し、係数の数は畳込み演算の回数に比例する。一方で、処理時間は、大半を畳込み演算に掛かる処理時間が占めているため、畳込み演算の回数を削減することで短縮可能となる。
【００８３】
特徴抽出処理における畳込み演算の回数は、入力チャネル数ＮＣＨ，ｌ及び仮想チャネル数α×ＮＣＨ，ｌ＋１に比例する。図９に示す特徴データ処理部３０５では、畳込み層処理部９０１の処理の切替えにより、入力チャネル数ＮＣＨ，ｌの代わりに特徴抽出チャネル数β×ＮＣＨ，ｌを用いる。一方で、プーリング層処理部９０２の処理の切替えにより、仮想チャネル数α×ＮＣＨ，ｌ＋１を制御する。
【００８４】
畳込み層処理部９０１において第２の特徴抽出処理を用いることで、入力チャネル数ＮＣＨ，ｌの代わりに特徴抽出チャネル数β×ＮＣＨ，ｌを用いることができる。第２の特徴抽出処理では、ＮＣＨ，ｌチャネルの入力特徴データの内β×ＮＣＨ，ｌチャネルのみを用いて仮想特徴データを算出する。例えば、図８に示すネットワークの場合、第２の特徴抽出処理において４チャネルの内出力チャネル毎に予め選ばれた３チャネルの入力特徴データを用いる。つまり、β＝３／４とする。これにより、第１の特徴抽出処理を用いる場合と比べて、レイヤＰ２の特徴データ８０３を算出する際の畳込み演算の回数を０．７５倍に削減できる。
【００８５】
一方で、プーリング層処理部９０２においてチャネル方向プーリングの有無を切り替えることで、仮想チャネル数α×ＮＣＨ，ｌ＋１を制御することができる。α×ＮＣＨ，ｌ＋１チャネルの仮想特徴データを算出する特徴抽出処理を一部のレイヤのみで行い、他のレイヤでは仮想チャネル数をＮＣＨ，ｌ＋１に削減する。例えば、図９に示すネットワークでは、レイヤ３の特徴データ８０３を算出する場合のみ８チャネルの仮想特徴データを算出し、チャネル方向プーリングを行う。これにより、実施形態１のように常にチャネル方向プーリングを行う場合と比べて、レイヤＣ２の特徴データ８０２を算出する際の畳込み演算の回数を０．５倍に削減できる。
【００８６】
以上より、畳込み層処理部プーリング層処理部畳込み層処理部プーリング層処理部αが１より大きい場合の係数メモリ使用量及び処理時間の増大を抑えることができる。入力チャネル数ＮＣＨ，ｌ及び仮想チャネル数α×ＮＣＨ，ｌ＋１を適切に制御することで、係数メモリ容量及び処理時間の制約を満たしつつ、より高い認識性能を達成することが可能となる。畳込み層処理部９０１及びプーリング層処理部９０２の制御に必要な情報は、ネットワークパラメータとして制御部９０４に予め与える。
【００８７】
（その他の実施形態）
その他の実施形態について、図１１に示す構成の特徴データ処理装置に基づいて説明する。抽出手段１１０１及びチャネル削減手段１１０２は、実施形態１における畳込み層処理部４０１及びプーリング層処理部４０２に相当する。他の実施例においても、図６または図１０に示すフローチャートに従って処理が行われるものとする。
【００８８】
第１及び実施形態２において、図４及び図９に示す構成の特徴データ処理部３０５は出力特徴ブロックを１チャネルずつ算出する。一方で、図１１に示す構成の特徴データ処理装置は出力特徴ブロックを複数チャネルずつ並列に算出してもよい。例えばＮ０チャネルの出力特徴ブロックを並列に算出する場合、ステップＳ６０３から始まる出力チャネル単位のループの周回数はＮＣＨ，ｌ＋１／Ｎ０となる。また、ステップＳ６１０で算出される仮想特徴ブロックのチャネル数はα×Ｎ０となる。図１０に示すフローチャートの場合も同様である。
【００８９】
実施形態２において、畳込み層処理部９０２は入力特徴データの一部のチャネルのみを用いて仮想特徴データを算出することで係数メモリ使用量を削減する。一方で、係数メモリ使用量を削減する目的で、特徴抽出処理において１つの係数を複数の入力チャネルに使い回しても良い。例えば入力特徴データ２チャネル毎に用いる係数を切り替える場合、特徴抽出処理における畳込み演算の回数は変化しないが、必要な係数の数は１／２となる。
【００９０】
実施形態１及び２において、特徴データ処理部３０５は図４及び図９に示す構成の専用ハードウェアによって実現される。一方で、図１０に示すフローチャートの各ステップは、図３に示すデータ処理装置内のＣＰＵ３０６によりソフトウェア処理してもよい。その場合、特徴データメモリとして図３に示すデータ処理装置内のＲＡＭ３０８を用いてもよい。
【００９１】
実施形態１及び２において、図４及び図９に示す構成の特徴データ処理部３０５はチャネル方向プーリングを行う。一方で、さらに特徴データのデータサイズを削減する目的で、図５に示す空間方向プーリングを併せて行ってもよい。その場合、図６に示すフローチャートのステップＳ６０９の直後からステップＳ６１２の直前までのいずれかのタイミングで行う。図１０に示すフローチャートについても同様である。空間プーリングは、抽出手段１１０１、チャネル削減手段１１０２、あるいはその後段に接続される新たな構成要素が行う。
【００９２】
特徴データのビット幅を小さくしデータサイズを削減する目的で、抽出手段１１０１が活性化処理の直後に、特徴データのビット幅を制御手段１１０４が指定する値に変換する処理を行っても良い。これを「量子化処理」と呼ぶ。あるいは、抽出手段１１０１が活性化処理の代わりに量子化処理を行っても良い。その場合、図６に示すフローチャートのステップＳ６０９の直後からステップＳ６１２の直前までのいずれかのタイミングで行う。図１０に示すフローチャートについても同様である。量子化処理は、抽出手段１１０１、チャネル削減手段１１０２、あるいはその後段に接続される新たな構成要素が行う。
【００９３】
実施形態１及び２において、活性化処理、チャネル方向プーリングは、前記の順序で処理される。一方で、活性化処理、量子化処理、チャネル方向プーリング、空間方向プーリングは、図６に示すフローチャートのステップＳ６０９の直後からステップＳ６１２の直前までの任意のタイミングで、任意の順序で行ってよい。
【００９４】
実施形態１及び２において、図４及び図９に示す構成の特徴データ処理部３０５では、出力特徴データをそのまま次の入力特徴データとした。一方で、チャネル削減手段１１０２が行うチャネル削減処理を特徴データの圧縮とみなし、出力特徴データを展開したものを次の入力特徴データとしてもよい。その場合、特徴データメモリ１１０３または抽出手段１１０１が展開処理を行っても良い。チャネル方向最大プーリングに対応する展開処理の例として、出力特徴データからチャネル削減前の仮想特徴データを推定する処理が挙げられる。例えば、圧縮により得られた１チャネルの出力特徴データを、同じ画素値を持つ１チャネルと、より小さい画素値を持つ１チャネルの２チャネルの入力特徴データに展開する。つまり、出力特徴データに等しい最大値プーリング結果を与える２チャネルの仮想特徴データを推定し、入力特徴データとする。これにより、特徴データメモリ１１０３の使用量１チャネル分につき、２チャネルの入力特徴データが得られる。展開により得られた２チャネルの入力特徴データが圧縮前の２チャネルの仮想特徴データを正しく推定できている場合、圧縮及び展開を用いずに得られる１チャネルの入力特徴データより多くの情報量を持つ。以上より、圧縮及び展開を用いることで、特徴データメモリ１１０３の使用量を増やすことなくより優れた認識精度を得られる場合がある。
【００９５】
実施形態２において、制御部９０４は係数メモリ使用量及び処理時間の制約を満たしつつ、できるだけ認識性能を高めるよう制御信号を決定する。一方で、制御手段１１０４は、要求される認識性能を達成しつつ、できるだけ係数メモリ使用量及び処理時間を小さくするよう制御信号を決定しても良い。あるいは、前記の要求を満たすよう事前に決定され保存された制御信号を、制御部１１０４が参照して与えても良い。
【００９６】
実施形態１及び２において、プーリング層処理部４０２及び９０２は、それぞれ２チャネルの仮想特徴データから１チャネルの出力特徴データを算出する。一方で、チャネル方向プーリングの入出力のチャネル数比は、２：１以外の比を取っても良い。つまり、出力チャネル数に対する仮想チャネル数の比αは２以外の値を取っても良い。また、αはレイヤ毎に独立に決定してもよい。
【００９７】
実施形態２において、制御部９０４はレイヤ毎にネットワークパラメータに基づいてチャネル方向プーリングの有無を切り替える。一方で、制御部１１０４が１レイヤの処理内でチャネル削減手段１１０２の制御を切り替えることにより、αを制御してもよい。前述の通り、αは出力特徴データに対する仮想特徴データのチャネル数の比である。例えば、第１及び２の実施例におけるチャネル方向プーリングでは、８チャネルの仮想特徴データから４チャネルの出力特徴データを生成する為、α＝２となる。一方、先の４チャネルはチャネル方向プーリングあり、後の４チャネルはチャネル方向プーリングなしで処理した場合、８チャネルの仮想特徴データから６チャネルの出力特徴データが算出されるため、α＝４／３となる。この場合、制御信号９０４はステップＳ１００３の直後からステップＳ１０１１の直前までのいずれかのタイミングで、制御信号の切替えを行う。
【００９８】
実施形態１において、プーリング層処理部４０２は特徴抽出処理によって算出された２チャネルの仮想特徴データについて順次チャネル削減処理を行う。従って、チャネル削減手段が受け取る仮想チャネルの数は２となる。また、プーリング層のチャネルに通し番号のインデックスを与えるものとすると、チャネル削減手段は１回目のチャネル削減処理にチャネル１及びチャネル２を、２回目のチャネル削減処理にチャネル３及びチャネル４を用いる。この場合、インデックスの増え幅は２となる。このインデックスの増え幅を「ストライド」と呼ぶ。一方で、ストライドはチャネル削減処理が受け取る仮想チャネルの数と一致しなくてもよい。例えば、チャネル削減手段は１回目のチャネル削減処理にチャネル１及びチャネル２を、２回目にチャネル２及びチャネル３を、３回目にチャネル３及びチャネル４を用いても良い。この場合、ストライドは１となり、チャネル削減手段が受け取る仮想チャネル数２とは一致しない。この場合、ストライドの値は制御手段１１０４がチャネル削減手段１１０２に与えてもよい。
【００９９】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１００】
４０１  畳み込み層処理部
４０２  プーリング層処理部
４０３  特徴データメモリ
４０４  制御部
【図１】
2020144659.tif 000004
【図２】
2020144659.tif 000005
【図３】
2020144659.tif 000006
【図４】
2020144659.tif 000007
【図５】
2020144659.tif 000008
【図６】
2020144659.tif 000009
【図７】
2020144659.tif 000010
【図８】
2020144659.tif 000011
【図９】
2020144659.tif 000012
【図１０】
2020144659.tif 000013
【図１１】
2020144659.tif 000014