(57)【要約】【課題】小容量の記憶部を用いて判別演算を行うことができる判別演算装置、判別演算方法及びプログラムを提供することを課題とする。【解決手段】判別演算装置は、判別対象データに対して、階層毎に特徴を順次演算する特徴演算手段（１１）と、前記特徴演算手段により順次演算される特徴を用いて、前記判別対象データの判別演算を部分的に順次行い、部分的な判別演算結果を判別結果記憶部に格納する判別演算手段（１３）とを有し、前記判別演算手段は、前記特徴演算手段により順次演算される特徴と前記判別結果記憶部に格納されている前記部分的な判別演算結果を用いて、次の部分的な判別演算を行い、次の部分的な判別演算結果を前記判別結果記憶部に格納する。【選択図】図３
2019032698.tif 000002
【特許請求の範囲】
【請求項１】
判別対象データに対して、階層毎に特徴を順次演算する特徴演算手段と、
前記特徴演算手段により順次演算される特徴を用いて、前記判別対象データの判別演算を部分的に順次行い、部分的な判別演算結果を判別結果記憶部に格納する判別演算手段とを有し、
前記判別演算手段は、前記特徴演算手段により順次演算される特徴と前記判別結果記憶部に格納されている前記部分的な判別演算結果を用いて、次の部分的な判別演算を行い、次の部分的な判別演算結果を前記判別結果記憶部に格納することを特徴とする判別演算装置。
【請求項２】
前記特徴演算手段は、前記判別対象データを基に第１階層の特徴を演算し、前記第１階層の特徴を特徴記憶部に格納し、前記特徴記憶部に格納されている前記第１階層の特徴を基に第２階層の特徴を演算することを特徴とする請求項１に記載の判別演算装置。
【請求項３】
前記特徴演算手段は、畳み込みニューラルネットワークによる畳み込み演算を行うことを特徴とする請求項１又は２に記載の判別演算装置。
【請求項４】
前記判別演算手段は、現階層の前記特徴と重み係数の積和演算を行い、前記現階層の積和演算の結果と前階層までの積和演算の結果を加算することを特徴とする請求項１〜３のいずれか１項に記載の判別演算装置。
【請求項５】
前記判別演算手段は、前記次の部分的な判別演算結果の桁数を削減し、前記桁数を削減した次の部分的な判別演算結果を前記判別結果記憶部に格納することを特徴とする請求項１〜４のいずれか１項に記載の判別演算装置。
【請求項６】
前記判別演算手段は、前記現階層の前記特徴と重み係数の積和演算の結果の桁数を削減し、前記桁数を削減した積和演算の結果と前記前階層までの積和演算の結果とを加算し、前記加算の結果を前記判別結果記憶部に格納することを特徴とする請求項４に記載の判別演算装置。
【請求項７】
前記判別演算手段は、前記現階層の前記特徴と重み係数の積和演算の結果から所定の桁位置及び所定の桁数のデータを取り出し、前記取り出したデータと前記前階層までの積和演算の結果を加算し、前記加算の結果を前記判別結果記憶部に格納することを特徴とする請求項４又は６に記載の判別演算装置。
【請求項８】
前記所定の桁位置は、前記階層毎又は前記判別対象データのカテゴリ毎に異なることを特徴とする請求項７に記載の判別演算装置。
【請求項９】
前記特徴演算手段は、前記特徴の桁数を削減し、前記桁数を削減した特徴を前記特徴記憶部に格納することを特徴とする請求項２に記載の判別演算装置。
【請求項１０】
前記特徴演算手段は、前記特徴の桁数を削減し、前記桁数を削減した特徴を特徴記憶部に格納し、
前記特徴演算手段が削減する桁数と前記判別演算手段が削減する桁数は、相互に異なることを特徴とする請求項５又は６に記載の判別演算装置。
【請求項１１】
特徴演算手段により、判別対象データに対して、階層毎に特徴を順次演算するステップと、
判別演算手段により、前記順次演算される特徴を用いて、前記判別対象データの判別演算を部分的に順次行い、部分的な判別演算結果を判別結果記憶部に格納するステップと、
前記判別演算手段により、前記順次演算される特徴と前記判別結果記憶部に格納されている前記部分的な判別演算結果を用いて、次の部分的な判別演算を行い、次の部分的な判別演算結果を前記判別結果記憶部に格納するステップと
を有することを特徴とする判別演算方法。
【請求項１２】
コンピュータを、請求項１〜１０のいずれか１項に記載された判別演算装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、判別演算装置、判別演算方法及びプログラムに関する。
【背景技術】
【０００２】
特許文献１は、顔を含む画像から、顔を個人認識する処理を行う画像処理装置を開示している。検出手段は、画像に含まれている顔領域を検出するために、顔領域における各特徴として、顔の局所特徴のエッジと、エッジを統合した顔の局所特徴の端部と、端部を統合した顔の局所特徴と、局所特徴を統合した顔領域とを検出する。設定手段は、検出手段が検出したそれぞれの特徴のうち、顔を構成する部分の形状に関わる特徴である局所特徴のエッジを含む第１の局所領域を顔領域に対して設定する。また、設定手段は、顔を構成する部分間の位置関係に関わる特徴である局所特徴の端部を含む第２の局所領域を顔領域に対して設定する。特定手段は、顔領域について設定手段が設定した第１及び第２の局所領域内の特徴群に基づいて、顔領域の顔が、それぞれ異なる個人の何れの顔であるかの特定を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４２１７６６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、検出手段は、画像に含まれている顔の特徴を検出する為の階層型ニューラルネットワークを用いて、画像に含まれている顔領域における各特徴を検出する。特許文献１は、検出手段により検出された特徴を格納するために大容量のメモリを必要とする。特に、近年の大規模な階層型ニューラルネットワークに対応した画像処理装置を実現する場合、メモリのコストの増加が課題となる。
【０００５】
本発明の目的は、小容量の記憶部を用いて判別演算を行うことができる判別演算装置、判別演算方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明の判別演算装置は、判別対象データに対して、階層毎に特徴を順次演算する特徴演算手段と、前記特徴演算手段により順次演算される特徴を用いて、前記判別対象データの判別演算を部分的に順次行い、部分的な判別演算結果を判別結果記憶部に格納する判別演算手段とを有し、前記判別演算手段は、前記特徴演算手段により順次演算される特徴と前記判別結果記憶部に格納されている前記部分的な判別演算結果を用いて、次の部分的な判別演算を行い、次の部分的な判別演算結果を前記判別結果記憶部に格納する。
【発明の効果】
【０００７】
本発明によれば、小容量の記憶部を用いて判別演算を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態による画像処理システムの構成例を示す図である。
【図２】判別処理の例を示す図である。
【図３】第１の実施形態による判別演算装置の構成例を示す図である。
【図４】パターン認識処理のアルゴリズムの例を示す図である。
【図５】ＣＮＮ演算処理部の構成例を示す図である。
【図６】第１の実施形態による判別演算方法を示すフローチャートである。
【図７】判別演算部分処理部の構成例を示す図である。
【図８】他の判別演算方法を示すフローチャートである。
【図９】基本技術による判別演算装置の構成例を示す図である。
【図１０】基本技術による判別演算方法を示すフローチャートである。
【図１１】第２の実施形態による判別演算装置の構成例を示す図である。
【図１２】第２の実施形態による判別演算方法を示すフローチャートである。
【図１３】桁数の削減例を示す図である。
【図１４】第３の実施形態による判別演算装置の構成例を示す図である。
【図１５】第３の実施形態による判別演算方法を示すフローチャートである。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
図１は、本発明の第１の実施形態による画像処理システム２２０の構成例を示す図である。画像処理システム２２０は、画像入力部２００、判別演算装置２１１、画像バス２０３、ブリッジ２０４、前処理部２０５、ＤＭＡＣ２０６、ＣＰＵ２０７、ＲＯＭ２０８、ＲＡＭ２０９及びＣＰＵバス２１０を有する。判別演算装置２１１は、ＲＡＭ２０１及びパターン認識処理部２０２を有する。画像処理システム２２０は、画像データから特定の物体の領域を検出する機能を有する。
【００１０】
画像入力部２００は、光学系と、光電変換デバイスと、光電変換デバイスを制御するドライバ回路と、アナログデジタルコンバータと、画像補正を行う信号処理回路と、フレームバッファ等を有する。光電変換デバイスは、光電変換により画像信号を生成するＣＣＤ（Ｃｈａｒｇｅ−Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅｓ）又はＣＭＯＳ（Ｃｏｍｐｌｉｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）センサ等である。画像入力部２００は、デジタルの画像データを画像バス２０３に出力する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０１は、パターン認識処理部２０２の演算作業バッファである。パターン認識処理部２０２は、ＲＡＭ２０１を使用し、画像から特定のパターンを認識する。
【００１１】
ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２０６は、画像バス２０３上の各処理部とＣＰＵバス２１０間のデータ転送を行う。ブリッジ２０４は、画像バス２０３とＣＰＵバス２１０のブリッジ機能を有する。前処理部２０５は、パターン認識処理部２０２がパターン認識処理を効果的に行うための各種前処理を行う。具体的には、前処理部２０５は、色変換処理及びコントラスト補正処理等の画像データ変換処理をハードウェアで処理する。ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０８は、ＣＰＵ２０７の動作を規定するプログラムやパラメータデータを格納する。ＣＰＵ２０７は、ＲＯＭ２０８に格納されているプログラムを実行することにより、画像処理システム２２０の動作を制御する。ＲＡＭ２０９は、ＣＰＵ２０７の動作に必要なメモリである。ＣＰＵ２０７は、ブリッジ２０４を介して、画像バス２０３上のＲＡＭ２０１にアクセスすることも可能である。
【００１２】
画像入力部２００は、画像データを前処理部２０５に出力する。前処理部２０５は、画像データに対して前処理を行い、前処理後の画像データをパターン認識処理部２０２に出力する。パターン認識処理部２０２は、入力された前処理後の画像データに対して画素単位で所定の判別処理を行い、入力画像中の所定の物体の領域を判定し、判定結果を画像形式の判別マップとしてＲＡＭ２０１に格納する。
【００１３】
図２は、パターン認識処理部２０２の判別対象の画像に対する判定結果例を模式的に示す図である。画像３１中の人物の領域３２は、画素単位で判定（黒が人物領域）された結果を示している。パターン認識処理部２０２は、図２の判定結果をＲＡＭ２０１に格納する。ＤＭＡＣ２０６は、ＲＡＭ２０１に格納された判定結果をＲＡＭ２０９に転送する。ＣＰＵ２０７は、ＲＡＭ２０９に格納された判定結果を利用して、各種応用処理を実行する。例えば、ＣＰＵ２０７は、対象物の領域に応じた最適な画像処理を施す等の処理を実行する。
【００１４】
図３は、図１の判別演算装置２１１の構成例を示す図である。判別演算装置２１１は、ＣＮＮ演算処理部１１、階層データ保持部１２、判別演算部分処理部１３、判別結果保持部１４、及び制御部１５を有する。ＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ）は、畳み込みニューラルネットワークである。
【００１５】
ＣＮＮ演算処理部１１は、階層データ保持部１２に保持されている前階層のデータに対して複数種類の畳み込み演算を行い、その演算結果を階層データ保持部１２に格納する。判別演算部分処理部１３は、ＣＮＮ演算処理部１１の結果である中間階層の演算結果を利用して判別処理の演算を部分的に行い、判別処理の部分的な演算結果を判別結果保持部１４に書き込む。ここでの判別処理は、サポートベクトルマシン、ロジスティック回帰等の学習手法により生成された線形判別処理である。階層データ保持部１２及び判別結果保持部１４は、図１のＲＡＭ２０１に対応する。制御部１５は、ＣＮＮ演算処理部１１及び判別演算部分処理部１３の処理シーケンスを制御する処理部であり、小規模なＣＰＵやハードウェアシーケンサにより構成される。
【００１６】
図４は、図３のＣＮＮ演算処理部１１及び判別演算部分処理部１３の処理のアルゴリズムの例を示す図である。以下、ＣＮＮと特徴面データを用いた判別処理について説明する。ここでは、小型の３階層４０８〜４１０のＣＮＮを利用した場合ついて説明する。実際には、更に多数の特徴面データ及び多段の階層により構成することが多い。
【００１７】
入力層４０１は、画像データに対してＣＮＮ演算処理を行う場合、ラスタスキャンされた所定サイズの画像データに相当する。入力層４０１の画像データは、判別対象データである。特徴面データ４０３ａ〜４０３ｃは、第１階層４０８の特徴面データを示す。特徴面データとは、所定の特徴抽出演算（畳み込み演算及び非線形処理）の処理結果に相当する。特徴面データは、ラスタスキャンされた画像データに対する処理結果であるため、処理結果も面で表現される。パターン認識処理部２０２は、この特徴面データ４０３ａ〜４０３ｃのデータを中間階層のデータとして判別に利用する。特徴面データ４０３ａ〜４０３ｃは、入力層４０１に対応する畳み込み演算と非線形処理により算出される。ＣＮＮ演算処理部１１の処理部４０２１ａは、入力層４０１に対して、２次元の畳み込みカーネルを用いた畳み込み演算とその演算結果の非線形変換により、特徴面データ４０３ａを演算する。ＣＮＮ演算処理部１１の処理部４０２１ｂは、入力層４０１に対して、２次元の畳み込みカーネルを用いた畳み込み演算とその演算結果の非線形変換により、特徴面データ４０３ｂを演算する。ＣＮＮ演算処理部１１の処理部４０２１ｃは、入力層４０１に対して、２次元の畳み込みカーネルを用いた畳み込み演算とその演算結果の非線形変換により、特徴面データ４０３ｃを演算する。処理部４０２１ａ〜４０２１ｃは、それぞれ、異なる特徴面データ４０３ａ〜４０３ｃを演算する。
【００１８】
例えば、処理部４０２１ａ〜４０２１ｃは、それぞれ、カーネル（係数マトリクス）サイズがｃｏｌｕｍｎＳｉｚｅ×ｒｏｗＳｉｚｅの畳み込み演算を、式（１）に示すような積和演算により処理する。
【００１９】
【数１】
2019032698.tif 000003
【００２０】
ここで、ｉｎｐｕｔ（ｘ，ｙ）は、入力層４０１の２次元座標（ｘ，ｙ）での参照画素値である。ｏｕｔｐｕｔ（ｘ，ｙ）は、２次元座標（ｘ，ｙ）での演算結果である。ｗｅｉｇｈｔ（ｃｏｌｕｍｎ，ｒｏｗ）は、座標（ｘ＋ｃｏｌｕｍｎ，ｙ＋ｒｏｗ）での重み係数である。ｃｏｌｕｍｎＳｉｚｅ及びｒｏｗＳｉｚｅは、２次元畳み込みカーネルの水平及び垂直方向サイズである。
【００２１】
ＣＮＮ演算処理部１１は、入力層４０１に対して、複数の畳み込みカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換することで特徴面データ４０３ａ〜４０３ｃを算出する。なお、特徴面データ４０３ａを算出する場合は、前階層との結合数が１であるため、畳み込みカーネルは１つである。
【００２２】
図５は、図３のＣＮＮ演算処理部１１の主要な演算ユニットを示す図であり、図４の特徴面データ４０５ａを演算する場合を例としてその基本動作を説明する。特徴面データ４０５ａは、前階層４０８の３つの特徴面データ４０３ａ〜４０３ｃに対する畳み込み演算により算出される。ＣＮＮ演算処理部１１は、畳み込み演算処理部５０１、累積加算器５０２、及び非線形変換処理部５０３を有する。畳み込み演算処理部５０１は、特徴面データ４０３ａに対して、カーネルを用いた畳み込み演算４０４１ａを行い、その演算結果を累積加算器５０２に格納する。同様に、畳み込み演算処理部５０１は、特徴面データ４０３ｂ及び４０３ｃに対して、それぞれ、カーネルを用いた畳み込み演算４０４１ａ及び４０４１ｃを行い、その演算結果を累積加算器５０２に格納する。なお、畳み込み演算処理部５０１は、３種類のカーネルを順番に処理しても良いし、並列に処理してもよい。累積加算器５０２は、演算結果を累積加算し、累積加算結果を非線形変換処理部５０３に出力する。非線形変換処理部５０３は、累積加算結果に対して、ＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）関数やロジスティック関数を利用した非線形変換処理を行い、特徴面データ４０５ａを出力する。ＣＮＮ演算処理部１１は、以上の処理を特徴面データ４０３ａ〜４０３ｃ全体に対して１画素ずつ走査しながら処理することで、特徴面データ４０５ａを算出する。
【００２３】
同様に、ＣＮＮ演算処理部１１は、図４に示すように、前階層４０８内の複数の特徴面データ４０３ａ〜４０３ｃに対して、それぞれ３つの畳み込み演算４０４１ｂ、４０４２ｂ、４０４３ｂを行い、特徴面データ４０５ｂを算出する。更に、ＣＮＮ演算処理部１１は、第２階層４０９の特徴面データ４０５ａ及び４０５ｂに対して、２つの畳み込み演算４０６１及び４０６２を行い、第３階層４１０の特徴面データ４０７を算出する。以上のように、ＣＮＮ演算処理部１１は、特徴演算手段であり、階層毎に、特徴面データを順次演算する。なお、各畳み込み演算の係数は、バックプロパゲーション学習等の一般的な手法を用いて予め学習により決定されている。
【００２４】
判別演算部分処理部１３は、各特徴面データ４０３ａ〜４０３ｃ、４０５ａ〜４０５ｂ、４０７のそれぞれの画素位置に対応するデータを連結したベクトルを特徴ベクトルとしてそれぞれ線形判別演算処理し、判別マップ４１１を出力する。特徴ベクトルは、画素位置に対応する特徴面データを連結したデータであるため、図４に示すネットワークの場合、６種類の特徴面データ４０３ａ〜４０３ｃ、４０５ａ〜４０５ｂ、４０７に対応して、６次元の特徴ベクトルとなる。判別演算部分処理部１３は、式（２）に従って、画素位置毎に線形判別演算を行う。
【００２５】
【数２】
2019032698.tif 000004
【００２６】
ここで、ｆｅａｔｕｒｅｍａｐ（ｎ，ｆ，ｘ，ｙ）は、第ｎ階層のｆ番目の特徴面データの座標（ｘ，ｙ）の値である。ｒｅｓｕｌｔ（ｘ，ｙ）は、座標（ｘ，ｙ）での判別結果である。ｗｅｉｇｈｔ（ｎ，ｆ）は、第ｎ階層のｆ番目の特徴面データに対する係数である。ＬａｙｅｒＮｕｍｂｅｒは、階層数である。ＦｅａｔｕｒｅｍａｐＮｕｍｂｅｒは、第ｎ階層に含まれる特徴面データの数である。
【００２７】
ｗｅｉｇｈｔ（ｎ，ｆ）は、ロジスティック回帰やサポートベクターマシン等により予め学習された係数である。判別演算部分処理部１３は、式（２）の演算により特徴面データの画素位置毎に処理した結果を判別マップ４１１として出力する。判別演算部分処理部１３は、画素位置毎に判別処理を行うため、判定結果も画像形式の判別マップ４１１として生成する。判別マップ４１１は、画素位置に対応する値が対象物体領域の確からしさを示す。
【００２８】
図６は、図３の判別演算装置２１１による判別演算方法を示すフローチャートである。ステップＳ６０１において、制御部１５は、ＣＮＮ演算処理部１１及び判別演算部分処理部１３の動作を指定するパラメータを設定する。次に、ステップＳ６０２において、ＣＮＮ演算処理部１１は、一つの階層のＣＮＮ演算を行い、一つの階層の特徴面データを算出する。例えば、ＣＮＮ演算処理部１１は、図４の階層４０８の特徴面データの演算を行い、特徴面データ４０５ａ及び４０５ｂを算出する。次に、ステップＳ６０３において、ＣＮＮ演算処理部１１は、ステップＳ６０２で算出した特徴面データを中間階層データとして、階層データ保持部１２に格納する。ＣＮＮ演算処理部１１は、ステップＳ６０２でＣＮＮ演算を順次処理し、ステップＳ６０３で特徴面データを階層データ保持部１２に格納する。
【００２９】
次に、ステップＳ６０４において、判別演算部分処理部１３は、判別結果保持部１４に格納されている、前階層の特徴抽出処理結果に基づく判別処理の部分的な演算結果を読み出す。次に、ステップＳ６０５において、判別演算部分処理部１３は、ステップＳ６０４で読み出した演算結果と、ＣＮＮ演算処理部１１が出力する処理対象の階層で得られた特徴面データを参照して、式（３）により、判別処理を部分的に演算する。
【００３０】
【数３】
2019032698.tif 000005
【００３１】
ここで、ｆｅａｔｕｒｅｍａｐ（ｎ，ｆ，ｘ，ｙ）は、第ｎ階層のｆ番目の特徴面データの座標（ｘ，ｙ）の値である。ｗｅｉｇｈｔ（ｎ，ｆ）は、第ｎ階層のｆ番目の特徴面データに対する係数である。ｆｅａｔｕｒｅｍａｐ＿ｎｕｍｂｅｒは、第ｎ階層の特徴面データの数である。ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ−１，ｘ，ｙ）は、第ｎ−１階層までの特徴面データに対する部分的な判別演算結果である。ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ，ｘ，ｙ）は、第ｎ階層までの特徴面データに対する部分的な判別演算結果である。
【００３２】
判別演算部分処理部１３は、式（３）の第ｎ−１階層までの部分的な判別演算処理結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ−１，ｘ，ｙ）と、特徴面データｆｅａｔｕｒｅｍａｐ（ｎ，ｆ，ｘ，ｙ）と重み係数ｗｅｉｇｈｔ（ｎ，ｆ）の内積演算結果の和を演算する。これにより、判別演算部分処理部１３は、第ｎ階層の部分的な判別演算処理結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ，ｘ，ｙ）を得る。
【００３３】
線形判別全体の演算処理結果ｒｅｓｕｌｔ（ｘ，ｙ）は、式（２）で示すように、全ての特徴面データｆｅａｔｕｒｅｍａｐ（ｎ，ｆ，ｘ，ｙ）と対応する重み係数ｗｅｉｇｈｔ（ｎ，ｆ）の内積和によって算出される。本実施形態では、ステップＳ６０４において、判別演算部分処理部１３は、判別結果保持部１４に格納されている、前階層までの部分的な判別演算処理結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ−１，ｘ，ｙ）を読み出す。次に、ステップＳ６０５において、判別演算部分処理部１３は、式（３）の右辺第二項を演算し、ステップＳ６０４で読み出した演算結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ−１，ｘ，ｙ）と式（３）の右辺第二項を加算する。これにより、判別演算部分処理部１３は、現在の階層までの部分的な判別演算処理結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ，ｘ，ｙ）を得る。すなわち、判別演算部分処理部１３は、判別処理演算の一部の階層の演算を実行する。このため、ステップＳ６０３において、ＣＮＮ演算処理部１１は、次のＣＮＮ演算に必要な階層の特徴面データだけを、階層データ保持部１２に格納すればよい。
【００３４】
図７は、図３の判別演算部分処理部１３の構成例を示す図である。判別演算部分処理部１３は、乗算器７１、累積加算器７２、及び加算器７３を有する。乗算器７１は、第ｎ階層のｆ番目の特徴面データｆｅａｔｕｒｅｍａｐ（ｎ，ｆ，ｘ，ｙ）と重み係数ｗｅｉｇｈｔ（ｎ，ｆ）の乗算を行う。累積加算器７２は、各特徴面データに対して、乗算器７１の乗算結果を累積加算し、式（３）の右辺第二項のデータを出力する。
【００３５】
乗算器７１は、処理中の第ｎ階層の特徴面データを、ＣＮＮ演算処理部１１のＣＮＮ演算の画素単位処理終了毎に取り出して参照してもよいし、階層データ保持部１２にバッファリングした特徴面データを所定の単位でまとめて取り出して処理してもよい。例えば、図８は、図６に示すフローチャートの変形例であり、図６に対して、ステップＳ６０３の位置が異なる。図８では、ステップＳ６０３は、ステップＳ６０４〜Ｓ６０６に対して、並列に処理される。階層データ保持部１２と判別結果保持部１４が物理的に異なるメモリ等で構成されている場合、上記の並列処理による処理の高速化が期待できる。
【００３６】
図７の加算器７３は、判別結果保持部１４に記憶されている前階層までの部分的な判別演算処理結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ−１，ｘ，ｙ）と、累積加算器７２が出力する式（３）の右辺第二項のデータを加算する。そして、加算器７３は、式（３）の左辺の現階層までの部分的な判別演算処理結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ，ｘ，ｙ）を出力する。
【００３７】
以上のように、乗算器７１及び累積加算器７２は、現階層の特徴面データｆｅａｔｕｒｅｍａｐ（ｎ，ｆ，ｘ，ｙ）と重み係数ｗｅｉｇｈｔ（ｎ，ｆ）の積和演算を行う。加算器７３は、累積加算器７２が出力する現階層の積和演算の結果と、判別結果保持部１４に格納されている前階層までの積和演算の結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ−１，ｘ，ｙ）を加算して判別結果保持部１４に格納する。
【００３８】
次に、図６のステップＳ６０６において、判別演算部分処理部１３は、ステップＳ６０５で得られた現階層までの部分的な判別演算処理結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ，ｘ，ｙ）を判別結果保持部１４に書き込む。この判別演算処理結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ，ｘ，ｙ）は、次の階層の処理において、前階層までの部分的な判別演算処理結果ｐａｒｔ＿ｒｅｓｕｌｔ（ｎ−１，ｘ，ｙ）として使用される。次に、ステップＳ６０７において、制御部１５は、全階層の処理が終了したか否かを判定する。制御部１５は、全階層の処理が終了していないと判定した場合には、ステップＳ６０２に処理を戻し、次の階層についての処理を繰り返す。制御部１５は、全階層の処理が終了したと判定した場合には、処理を終了する。上記の処理により、判別演算装置２１１は、全階層の判別演算処理結果を判別マップ４１１として得る。
【００３９】
以上のように、ＣＮＮ演算処理部１１は、特徴演算手段であり、入力層４０１の判別対象データに対して、階層毎に特徴面データを順次演算する。具体的には、ＣＮＮ演算処理部１１は、入力層４０１の判別対象データを基に第１階層４０８の特徴面データ４０３ａ〜４０３ｃを演算し、第１階層の特徴面データ４０３ａ〜４０３ｃを階層データ保持部（特徴記憶部）１２に格納する。次に、ＣＮＮ演算処理部１１は、階層データ保持部１２に格納されている第１階層４０８の特徴面データ４０３ａ〜４０３ｃを基に第２階層４０９の特徴面データ４０５ａ及び４０５ｂを演算して階層データ保持部１２に格納する。次に、ＣＮＮ演算処理部１１は、階層データ保持部１２に格納されている第２階層４０９の特徴面データ４０５ａ及び４０５ｂを基に第３階層４１０の特徴面データ４０７を演算して階層データ保持部１２に格納する。
【００４０】
判別演算部分処理部１３は、ＣＮＮ演算処理部１１により順次演算される特徴面データを用いて、入力層４０１の判別対象データの判別演算を部分的に順次行い、部分的な判別演算結果を判別結果保持部（判別結果記憶部）１４に格納する。判別演算部分処理部１３は、ＣＮＮ演算処理部１１により順次演算される特徴面データと判別結果保持部１４に格納されている部分的な判別演算結果を用いて、次の部分的な判別演算を行い、次の部分的な判別演算結果を判別結果保持部１４に格納する。
【００４１】
次に、図３及び図６の本実施形態による判別演算装置２１１の特徴を、図９及び図１０の基本技術による判別演算装置８０と比較して説明する。図９は、基本技術による判別演算装置８０の構成例を示す図である。判別演算装置８０は、ＣＮＮ演算処理部８１、特徴面データ保持部８２、判別演算処理部８３、判別結果保持部８４、及び制御部８５を有する。ＣＮＮ演算処理部８１は、特徴面データ保持部８２に保持されている特徴面データに対して畳み込み演算を行い、その演算結果を特徴面データ保持部８２に記録する。ＣＮＮ演算処理部８１は、特徴面データ保持部８２に全ての階層の特徴面データを記録する。判別演算処理部８３は、特徴面データ保持部８２に記録された特徴面データを参照して判別演算処理を実行し、その結果を判別結果保持部８４に記録する。制御部８５は、ＣＮＮ演算処理部８１及び判別演算処理部８３の処理シーケンスを制御する処理部であり、小規模なＣＰＵやハードウェアシーケンサにより構成される。
【００４２】
図１０は、図９の判別演算装置８０の判別演算方法を示すフローチャートである。ステップＳ９０１において、制御部８５は、ＣＮＮ演算処理部８１及び判別演算処理部８３の動作を指定するパラメータを設定する。次に、ステップＳ９０２において、ＣＮＮ演算処理部８１は、一つの階層のＣＮＮ演算により、特徴面データを算出する。次に、ステップＳ９０３において、ＣＮＮ演算処理部８１は、ステップＳ９０２で算出された特徴面データを特徴面データ保持部８２に格納する。次に、ステップＳ９０４において、制御部８５は、全階層の処理が終了していないと判定した場合には、ステップＳ９０２に処理を戻し、次の階層についての処理を繰り返す。この場合、ステップＳ９０３では、ＣＮＮ演算処理部８１は、特徴面データ保持部８２の異なる領域に、各階層の特徴面データを格納する。制御部８５は、全階層の処理が終了したと判定した場合には、ステップＳ９０５に処理を進める。ステップＳ９０５において、判別演算処理部８３は、特徴面データ保持部８２に格納された各階層の特徴面データを参照して式（２）に従う判別演算を行い、判別結果を得る。次に、ステップＳ９０６において、判別演算処理部８３は、判別結果を判別結果保持部８４に書き込む。
【００４３】
基本技術による判別演算装置８０では、ＣＮＮ演算処理部８１は、特徴面データ保持部８２に全ての階層の特徴面データを格納する。例えば、図４に示すネットワークを処理する場合、特徴面データ保持部８２には、５×特徴面データサイズ（各階層の特徴面データのサイズが同じとする）の特徴面データを保持する必要がある。
【００４４】
これに対し、本実施形態による判別演算装置２１１では、階層データ保持部１２は、ＣＮＮ演算処理部１１の次のＣＮＮ演算を処理するために必要な２階層分の特徴面データを保持できればよい。図４のネットワークでは、階層データ保持部１２は、階層４０９の特徴面データを演算する場合が最大の特徴面データを保持する場合である。その場合、階層データ保持部１２は、４×特徴面データサイズの特徴面データを保持する。すなわち、本実施形態の場合、判別演算装置２１１は、特徴面データを保持する階層データ保持部１２の容量を小さくすることができる。
【００４５】
図４は、説明の簡単のための小さなＣＮＮの例であるが、実際には多数の階層からなるＣＮＮで構成するため、階層データ保持部１２の容量削減の効果は極めて大きい。例えば、１つの階層の特徴面が６４個（全ての階層で同じ特徴面データの数とする）、階層数が１０の場合を説明する。その場合、基本技術による判別演算装置８０は、６４×１０個の特徴面データを格納する特徴面データ格納保持部８２を必要とする。これに対し、本実施形態による判別演算装置２１１は、６４×２個の特徴面データを格納する階層データ保持部１２を必要とする。また、特許第５１８４８２４号公報に開示されているような少ない容量のメモリでＣＮＮを演算する手法に適用した場合、更にその効果が高くなる。
【００４６】
以上、本実施形態によれば、判別演算装置２１１は、階層データ保持部１２にＣＮＮの中間階層データ（特徴面データ）を格納することにより、階層データ保持部１２の容量を削減し、コストを低減することができる。
【００４７】
（第２の実施形態）
図１１は、本発明の第２の実施形態による判別演算装置２１１の構成例を示す図である。図１１の判別演算装置２１１は、図３の判別演算装置２１１に対して、データ削減処理部１２６を追加したものである。データ削減処理部１２６は、判別演算部分処理部１３と判別結果保持部１４との間に設けられる。なお、データ削減処理部１２６は、判別演算部分処理部１３内に設けてもよい。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００４８】
第１の実施形態では、判別演算部分処理部１３は、各階層の部分演算結果の累積加算結果を判別結果保持部１４に格納する。その場合、判別演算部分処理部１３は、累積加算に伴い、必要な演算桁数が増加する。したがって、判別演算部分処理部１３は、整数型の固定小数点演算で処理する場合、判別結果保持部１４のメモリデータ幅を増加させる必要がある。メモリデータ幅の増加は、判別結果保持部１４の容量の増加に直結し、判別演算装置２１１のコスト上昇を招くため、できるだけ狭いメモリデータ幅で処理することが望まれる。本実施形態では、データ削減処理部１２６及び判別演算部分処理部１３は、判別演算部分処理部１３の判別演算処理結果の桁数を削減し、桁数を削減した判別演算処理結果を判別結果保持部１４に格納する。
【００４９】
図１２は、図１１の判別演算装置２１１の判別演算方法を示すフローチャートである。図１２のフローチャートは、図６のフローチャートに対して、ステップＳ６０６及びＳ６０７の代わりに、ステップＳ１１０６〜Ｓ１１０８を設けたものである。
【００５０】
まず、判別演算装置２１１は、図６と同様に、ステップＳ６０１〜Ｓ６０５の処理を行う。次に、ステップＳ１１０６において、データ削減処理部１２６及び判別演算部分処理部１３は、ステップＳ６０５で演算された式（３）の判別処理の部分演算結果の桁数を削減する。具体的には、データ削減処理部１２６及び判別演算部分処理部１３は、式（３）の右辺第二項の積和演算結果から所定の桁位置及び所定の桁数のデータを取り出し、取り出したデータに対して、式（３）の右辺第一項の値を加算し、加算結果を得る。すなわち、データ削減処理部１２６及び判別演算部分処理部１３は、現階層の特徴面データと重み係数の積和演算の結果の桁数を削減し、桁数を削減した積和演算の結果と前階層までの積和演算の結果を加算し、加算の結果を判別結果保持部１４に格納する。
【００５１】
図１３は、データ削減処理部１２６の桁数削減処理の具体例を示す図である。バイナリデータビット列１３０１は、判別演算部分処理部１３が出力する部分演算結果のデータビット列であり、３２ビットデータＤｎ（ｎ：０〜３１）を有する。ビットデータＤｎは、バイナリデータビット列１３０１の要素であり、３２ビットのデータ列を示している。ステップＳ１１０６において、データ削減処理部１２６は、バイナリデータビット列１３０１において、予め定めるデータ取り出し桁位置１３０２から必要な有効桁数分のデータ１３０３を取り出す。例えば、データ１３０３は、１０ビットのデータである。データ取り出し桁位置１３０２は、ステップＳ１１０６で事前に与えられるパラメータである。データ取り出し桁位置１３０２は、ステップＳ６０２の特徴面データが有する小数点位置と、判別処理に必要な重み係数の小数点位置及び判別結果保持部１４の保持するデータの小数点位置に基づいて定まる値である。すなわち、データ取り出し桁位置１３０２は、式（３）の右辺第一項と式（３）の右辺第二項の桁位置を合わせるために必要なパラメータである。
【００５２】
データ取り出し桁位置１３０２は、階層毎又は判別対象データのカテゴリ毎に異なっていてもよい。ステップＳ６０２の結果や対応する判別処理の重み係数のデータ分布は、階層やカテゴリによって異なる場合がある。その場合、それぞれの小数点位置が異なる。ステップＳ１１０６では、データ削減処理部１２６は、それぞれの小数点位置を考慮して、判別結果保持部１４に保持するデータと桁を合わせた上で必要な桁数分のデータ１３０３を取り出す。各小数点位置は、事前にテストデータを用いて決定し、それに対応してデータ取り出し桁位置１３０２も事前に決定される。また、データ１３０３の桁数は、メモリコストと演算精度のトレードオフとなるが、これも、事前にテストデータを用いて決定する。
【００５３】
なお、本実施形態では、式（３）のように、階層内の全ての特徴面データと重み係数との内積演算結果と判別結果保持部１４に保持される前階層の部分演算結果の和を算出した後に、桁数を削減する場合について説明したが、これに限定されない。実装上の制約等により、階層内の所定の特徴面データ数単位毎に桁数を削減して判別結果保持部１４に累積保持する方法等でもよい。判別精度の観点からは、十分な桁数を有する累積加算器７２（図７）でなるべく多くの特徴面データに対する内積演算を処理した後に桁数を削減することが望ましいが、そのような構成に限定するものではない。
【００５４】
次に、図１２のステップＳ１１０７において、判別演算部分処理部１３は、ステップＳ１１０６で桁数が削減された現階層までの部分的な判別演算処理結果を判別結果保持部１４に書き込む。この判別演算処理結果は、次の階層の処理において、前階層までの部分的な判別演算処理結果として使用される。次に、ステップＳ１１０８において、制御部１５は、全階層の処理が終了したか否かを判定する。制御部１５は、全階層の処理が終了していないと判定した場合には、ステップＳ６０２に処理を戻し、次の階層についての処理を繰り返す。制御部１５は、全階層の処理が終了したと判定した場合には、処理を終了する。上記の処理により、判別演算装置２１１は、全階層の判別演算処理結果を判別マップ４１１として得る。
【００５５】
以上、本実施形態によれば、少ない容量の階層データ保持部１２を用いて、ＣＮＮの中間階層データを利用した判別処理を実現することができる。さらに、データ削減処理部１２６が部分的な判別演算処理結果の桁数を適切に削減することで、判別結果保持部１４の容量を削減することができる。これにより、ＲＡＭ２０１の一層の容量削減が期待される。
【００５６】
（第３の実施形態）
図１４は、本発明の第３の実施形態による判別演算装置２１１の構成例を示す図である。図１４の判別演算装置２１１は、図１１の判別演算装置２１１に対して、第１のデータ削減処理部１４７を追加したものである。図１４の第２のデータ削減処理部１２６は、図１１のデータ削減処理部１２６に対応する。第１のデータ削減処理部１４７は、ＣＮＮ演算処理部１１と階層データ保持部１２の間に設けられる。なお、第１のデータ削減処理部１４７は、ＣＮＮ演算処理部１１内に設けてもよい。以下、本実施形態が第２の実施形態と異なる点を説明する。判別演算装置２１１が組み込み機器の場合、一般的に全ての処理が固定小数点型の整数演算で処理される。ＣＮＮ演算処理部１１は、ＣＮＮ演算処理を整数型で演算処理し、特徴面データを生成する。第１のデータ削減処理部１４７及びＣＮＮ演算処理部１１は、その特徴面データの桁数を削減し、桁数が削減された特徴面データを階層データ保持部１２に書き込む。
【００５７】
図１５は、図１４の判別演算装置２１１の判別演算方法を示すフローチャートである。図１５のフローチャートは、図１２のフローチャートに対して、ステップＳ１５０９を追加したものである。ステップＳ１５０９は、ステップＳ６０２及びＳ６０３の間に設けられる。ステップＳ１１０６では、第２のデータ削減処理部１２６が、図１２と同様の処理を行う。
【００５８】
ステップＳ１５０９において、第１のデータ削減処理部１４７は、ステップＳ６０２で算出された特徴面データの桁数を削減する。次に、ステップＳ６０３において、ＣＮＮ演算処理部１１は、桁数が削減された特徴面データを階層データ保持部１２に格納する。ステップＳ１１０６では、第２のデータ削減処理部１２６は、第２の実施形態で示したように、１０ビットのデータに桁数を削減する。これに対し、ステップＳ１５０９では、第１のデータ削減処理部１４７は、８ビットのデータ幅のデータに桁数を削減する。第１のデータ削減処理部１４７が削減する桁数と第２のデータ削減処理部１２６が削減する桁数は、相互に異なる。一般的に、ＣＮＮ演算処理部１１の特徴抽出処理では、桁数を削減した場合の判別精度の低下は少ない。これに対し、判別演算部分処理部１３の判別処理演算では、演算桁数が判別精度に影響することが多い。
【００５９】
本実施形態では、判別結果保持部１４に格納するデータ量は、階層データ保持部１２に保持が必要なデータ量より少ない（図４の例では特徴面データの一面分に相当）ことに着目し、判別結果保持部１４に格納するデータの桁数を他の処理部に比べて多めに取る。これにより、判別精度の劣化を抑えて、少ない容量のＲＡＭ２０１で、ＣＮＮの中間階層データを利用した判別処理を実現することができる。
【００６０】
なお、第１〜第３の実施形態では、階層毎に判別処理の部分演算を実行する場合について説明したが、これに限定されない。階層ネットワーク内の特徴面データの数や大きさと階層データ保持部１２のメモリサイズに応じて部分演算の実行単位を決定してもよい。例えば、複数層単位で判別処理の部分演算を実行する等の構成も可能である。第２の実施形態で説明したように、判別結果保持部１４に格納するデータの桁数を削減する場合、できるだけ判別結果保持部１４への部分演算結果の記録回数を少なくすることで、桁落ちに伴う性能への影響を軽減することができる。
【００６１】
また、第１〜第３の実施形態では、２次元の画像データに対するＣＮＮ演算処理の例を説明したが、音声データ等の１次元データや時間方向の変化も含めた３次元データに対するＣＮＮ演算処理に適用することも可能である。
【００６２】
また、第１〜第３の実施形態では、特徴抽出処理としてＣＮＮ演算処理の場合について説明したが、これに限定されない。Ｒｅｓｔｒｉｃｔｅｄ  Ｂｏｌｔｚｍａｎｎ  ＭａｃｈｉｎｅｓやＲｅｃｕｒｓｉｖｅ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ等の他の様々な階層的な処理に適用可能である。
【００６３】
また、第１〜第３の実施形態では、制御部１５をＣＰＵで構成した場合の処理を説明したが、制御部１５は、全てハードウェアでシーケンスを制御する場合にも同様に適用可能である。
【００６４】
また、第１〜第３の実施形態では、畳み込み演算や内積演算をハードウェアで構成する場合について説明したが、これに限定されない。パターン認識処理部２０２は、汎用のＣＰＵでプログラムを実行することにより、全ての処理を行う場合にも適用可能である。その場合も、ＣＰＵが必要な作業メモリの容量を大幅に削減することが可能になる。また、汎用のコンピュータシステムやクラウドシステムで処理する場合にも有効である。
【００６５】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００６６】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６７】
１１  ＣＮＮ演算処理部、１２  階層データ保持部、１３  判別演算部分処理部、１４  判別結果保持部、１５  制御部
【図１】
2019032698.tif 000006
【図２】
2019032698.tif 000007
【図３】
2019032698.tif 000008
【図４】
2019032698.tif 000009
【図５】
2019032698.tif 000010
【図６】
2019032698.tif 000011
【図７】
2019032698.tif 000012
【図８】
2019032698.tif 000013
【図９】
2019032698.tif 000014
【図１０】
2019032698.tif 000015
【図１１】
2019032698.tif 000016
【図１２】
2019032698.tif 000017
【図１３】
2019032698.tif 000018
【図１４】
2019032698.tif 000019
【図１５】
2019032698.tif 000020