(57)【要約】【課題】  高速かつ高精度なパターン識別のためのパラメータ学習方法を提供する。【解決手段】  それぞれが属するクラスと対応付けられた複数の学習データを入力し（ステップＳ１０１）、前記複数の学習データの各々において、特定のｋ個（ｋ≧１）の部分について部分ごとに要素の総和値を算出する（ステップＳ１０３）。前記複数の学習データの各々を、算出した前記ｋ個の総和値を要素とするベクトルとして、該ｋ個の総和値によって張られるｋ次元特徴空間に写像し（ステップＳ１０４）、写像された各学習データとその属するクラスとに基づいて、当該ｋ次元特徴空間において、入力データを前記複数のクラスに分類するためのパラメータを学習する（ステップＳ１０７〜１１０）。【選択図】  図１
2008009893.tif 000002
【特許請求の範囲】
【請求項１】
入力データを複数のクラスに分類するためのパラメータ学習方法であって、
それぞれが属するクラスと対応付けられた複数の学習データを入力する学習データ入力ステップと、
前記複数の学習データの各々において、特定のｋ個（ｋ≧１）の部分について部分ごとに要素の総和値を算出する算出ステップと、
前記複数の学習データの各々を、算出した前記ｋ個の総和値を要素とするベクトルとして、該ｋ個の総和値によって張られるｋ次元特徴空間に写像する写像ステップと、
前記ｋ次元特徴空間に写像された各学習データとその属するクラスとに基づいて、当該ｋ次元特徴空間において、入力データを前記複数のクラスに分類するためのパラメータを学習する学習ステップと
を有することを特徴とするパラメータ学習方法。
【請求項２】
前記パラメータは、前記ｋ次元特徴空間における線形識別関数及びクラス間境界を規定する値を含むことを特徴とする請求項１に記載のパラメータ学習方法。
【請求項３】
前記学習ステップにおいて、前記学習データの持つ重みに応じた学習を行うことを特徴とする請求項１に記載のパラメータ学習方法。
【請求項４】
前記重みを更新して前記学習ステップを繰り返し実行することで、複数のパラメータを得ることを特徴とする請求項３に記載のパラメータ学習方法。
【請求項５】
前記写像ステップにおいて、前記ｋ個の総和値を、前記学習データの統計量または前記ｋ個の部分のそれぞれの大きさの、少なくとも１つに基づいて正規化することを特徴とする請求項１に記載のパラメータ学習方法。
【請求項６】
前記学習ステップは、
前記ｋ次元特徴空間に写像された学習データを非線形変換により新たな特徴空間に写像する第２の写像ステップと、
前記新たな特徴空間に写像された複数の学習データに基づいて、当該新たな特徴空間における線形識別関数及びクラス間境界を規定するパラメータを求めるパラメータ獲得ステップと
を有することを特徴とする請求項１に記載のパラメータ学習方法。
【請求項７】
前記学習データをｘ、前記非線形変換をφ（ｘ）とすると、関数Ｋ（ｘ，ｘ’）を用いて、φ（ｘ）Ｔφ（ｘ’）＝Ｋ（ｘ，ｘ’）と表されることを特徴とする請求項６に記載のパラメータ学習方法。
【請求項８】
入力データを複数のクラスに分類するパターン識別方法であって、
請求項１乃至７に記載のパラメータ学習方法により学習したパラメータを入力するパラメータ入力ステップと、
識別対象データを入力する対象データ入力ステップと、
前記識別対象データにおいて、前記ｋ個の部分と同位置の部分ごとに要素の総和値を算出する第２の算出ステップと、
前記パラメータ入力ステップで入力されたパラメータと、前記第２の算出ステップで算出されたｋ個の総和値とを用いて、前記識別対象データが前記複数のクラスの何れに属するかを識別する識別ステップと
を有することを特徴とするパターン識別方法。
【請求項９】
複数の弱判別方法による判別により、入力データを複数のクラスに分類するパターン識別方法であって、
前記複数の弱判別方法の少なくとも１つが、
請求項１乃至７に記載のパラメータ学習方法により学習したパラメータを入力するパラメータ入力ステップと、
識別対象データを入力する対象データ入力ステップと、
前記識別対象データにおいて、前記ｋ個の部分と同位置の部分ごとに要素の総和値を算出する第２の算出ステップと、
前記パラメータ入力ステップで入力されたパラメータと、前記第２の算出ステップで算出されたｋ個の総和値とを用いて、前記識別対象データが前記複数のクラスの何れに属する可能性が高いかを出力する出力ステップと
を有することを特徴とするパターン識別方法。
【請求項１０】
前記複数の弱判別方法の組み合わせは、ブースティング手法を用いて構築することを特徴とする請求項９に記載のパターン識別方法。
【請求項１１】
前記ブースティング手法による複数の弱判別方法の組み合わせの構築において、前記ｋ個の部分を用いる複数の弱判別方法の内、最も識別性能の高い弱判別方法を選択していくことを特徴とする請求項１０に記載のパターン識別方法。
【請求項１２】
前記弱判別方法の１つにおける、前記複数のクラスの何れに属するかの可能性の高さに基づいて前記識別対象データを特定のクラスであると判定し、他の弱判別方法による判別を中断することを特徴とする請求項９に記載のパターン識別方法。
【請求項１３】
前記弱判別方法において、前記複数のクラスの何れに属するかの可能性に応じて、前記複数のクラスの何れに属するかの可能性の高さを示す累積値を更新するステップを有することを特徴とする請求項９に記載のパターン識別方法。
【請求項１４】
前記特定の部分が矩形領域であり、前記識別対象データの累積型データを生成する生成ステップを更に有し、
前記第２の算出ステップにおいて、前記累積型データを用いて前記総和値を算出することを特徴とする請求項８または９に記載のパターン識別方法。
【請求項１５】
入力データを複数のクラスに分類するためのパラメータ学習装置であって、
それぞれが属するクラスと対応付けられた複数の学習データを入力する学習データ入力手段と、
前記複数の学習データの各々において、特定のｋ個（ｋ≧１）の部分について部分ごとに要素の総和値を算出する算出手段と、
前記複数の学習データの各々を、算出した前記ｋ個の総和値を要素とするベクトルとして、該ｋ個の総和値によって張られるｋ次元特徴空間に写像する写像手段と、
前記ｋ次元特徴空間に写像された各学習データとその属するクラスとに基づいて、当該ｋ次元特徴空間において、入力データを前記複数のクラスに分類するためのパラメータを学習する学習手段と
を有することを特徴とするパラメータ学習装置。
【請求項１６】
入力データを複数のクラスに分類するパターン識別装置であって、
請求項１５に記載のパラメータ学習装置により学習したパラメータを入力するパラメータ入力手段と、
識別対象データを入力する対象データ入力手段と、
前記識別対象データにおいて、前記ｋ個の部分と同位置の部分ごとに要素の総和値を算出する第２の算出手段と、
前記パラメータ入力手段により入力されたパラメータと、前記第２の算出手段により算出されたｋ個の総和値とを用いて、前記識別対象データが前記複数のクラスの何れに属するかを識別する識別手段と
を有することを特徴とするパターン識別装置。
【請求項１７】
複数の弱判別器を備え、該複数の弱判別器による判別により、入力データを所定のクラスに分類するパターン識別装置であって、
前記弱判別器の少なくとも１つが、
請求項１５に記載のパラメータ学習装置により学習したパラメータを入力するパラメータ入力手段と、
識別対象データを入力する対象データ入力手段と、
前記識別対象データにおいて、前記ｋ個の部分と同位置の部分ごとに要素の総和値を算出する第２の算出手段と、
前記パラメータ入力手段により入力されたパラメータと、前記第２の算出手段により算出されたｋ個の総和値とを用いて、前記識別対象データが前記複数のクラスの何れに属する可能性が高いかを出力する出力手段とを有する
ことを特徴とするパターン識別装置。
【請求項１８】
入力データを複数のクラスに分類するためのパラメータ学習方法をコンピュータに実行させるコンピュータ読み取り可能なプログラムであって、
それぞれが属するクラスと対応付けられた複数の学習データを入力する学習データ入力ステップと、
前記複数の学習データの各々において、特定のｋ個（ｋ≧１）の部分について部分ごとに要素の総和値を算出する算出ステップと、
前記複数の学習データの各々を、算出した前記ｋ個の総和値を要素とするベクトルとして、該ｋ個の総和値によって張られるｋ次元特徴空間に写像する写像ステップと、
前記ｋ次元特徴空間に写像された各学習データとその属するクラスとに基づいて、当該ｋ次元特徴空間において、入力データを前記複数のクラスに分類するためのパラメータを学習する学習ステップとをコンピュータに実行させることを特徴とするコンピュータ読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像認識や音声認識等において、入力信号のパターンを識別するための識別用パラメータの学習、及びそれを用いたパターン識別に関するものである。
【背景技術】
【０００２】
従来から、光学的文字認識や自動音声認識等において、入力データを所定のクラスに分類するためのパターン識別方法として多くの手法が考案されている。現在に至っても、処理の高速化や、分類精度の向上等を目的とした様々な新しい手法が提案されている。
【０００３】
例えば非特許文献１のように、非常に短時間で演算が可能な弱判別方法を用い、ＡｄａＢｏｏｓｔによる学習法と、弱判別方法のカスケード識別手法の組み合わせにより、高速、且つ高精度なパターン識別方法が提案されている。
【０００４】
また、非特許文献２のように、上記パターン識別方法の更なる高速化・高精度化を目的として、Ｒｅａｌ  ＡｄａＢｏｏｓｔの手法（非特許文献３参照）というブースティング手法（非特許文献４参照）と、入れ子型カスケード識別手法を導入するという手法も提案されている。
【０００５】
また、非線形の識別関数を構成できるサポートベクターマシン（Ｓｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅ，  ＳＶＭ）と呼ばれるパターン認識手法が知られている（非特許文献５を参照）。
【０００６】
このように、処理装置が高性能となってきた背景もあり、高速、且つ高精度なパターン識別により、リアルタイムにパターン識別を行うことができる技術が望まれている。
【０００７】
【非特許文献１】Ｐ．Ｖｉｏｌａ，Ｍ．Ｊｏｎｅｓ，“Ｒａｐｉｄ  Ｏｂｊｅｃｔ  Ｄｅｔｅｃｔｉｏｎ  ｕｓｉｎｇ  ａ  Ｂｏｏｓｔｅｄ  Ｃａｓｃａｄｅ  ｏｆ  Ｓｉｍｐｌｅ  Ｆｅａｔｕｒｅｓ”，Ｐｒｏｃ．ＩＥＥＥ  Ｃｏｎｆ．ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ，Ｖｏｌ．１，ｐｐ．５１１−５１８，Ｄｅｃｅｍｂｅｒ  ２００１
【非特許文献２】勞  世▲紅▼，山下  隆義，岡本  卓也，川出  雅人，“高速全方向顔検出”，ＭＩＲＵ２００４，Ｖｏｌ．２，ｐｐ．２７１−２７６，Ｊｕｌｙ  ２００４
【非特許文献３】Ｒ．Ｅ．Ｓｃｈａｐｉｒｅ，Ｙ．Ｓｉｎｇｅｒ，“Ｉｍｐｒｏｖｅｄ  Ｂｏｏｓｔｉｎｇ  Ａｌｇｏｒｉｔｈｍｓ  Ｕｓｉｎｇ  Ｃｏｎｆｉｄｅｎｃｅ−ｒａｔｅｄ  Ｐｒｅｄｉｃｔｉｏｎｓ”，Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ，Ｖｏｌ．３７，ｐｐ．２９７−３３６，Ｄｅｃｅｍｂｅｒ  １９９９
【非特許文献４】Ｒ．Ｏ．Ｄｕｄａ，Ｐ．Ｅ．Ｈａｒｔ，Ｄ．Ｇ．Ｓｔｏｒｋ，“パターン識別  Ｐａｔｔｅｒｎ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ”，新技術コミュニケーションズ，ｐｐ．４７８−４８２，Ｊｕｌｙ  ２００１
【非特許文献５】津田  宏治，“Ｔｅｃｈｎｉｃａｌ  Ｓｕｒｖｅｙ「サポートベクターマシンとは何か」”，電子情報通信学会誌，Ｖｏｌ．８３，ｐｐ．  ４６０−４６６，Ｊｕｎｅ  ２０００
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上述した点に鑑みなされたものであり、高速かつ高精度なパターン識別のためのパラメータ学習方法、及び、それを用いたパターン識別方法を提供する。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明によれば、入力データを複数のクラスに分類するためのパラメータ学習方法に、それぞれが属するクラスと対応付けられた複数の学習データを入力する学習データ入力ステップと、前記複数の学習データの各々において、特定のｋ個（ｋ≧１）の部分について部分ごとに要素の総和値を算出する算出ステップと、前記複数の学習データの各々を、算出した前記ｋ個の総和値を要素とするベクトルとして、該ｋ個の総和値によって張られるｋ次元特徴空間に写像する写像ステップと、前記ｋ次元特徴空間に写像された各学習データとその属するクラスとに基づいて、当該ｋ次元特徴空間において、入力データを前記複数のクラスに分類するためのパラメータを学習する学習ステップとを備える。
【００１０】
また、本発明の他の態様によれば、入力データを複数のクラスに分類するためのパラメータ学習装置に、それぞれが属するクラスと対応付けられた複数の学習データを入力する学習データ入力手段と、前記複数の学習データの各々において、特定のｋ個（ｋ≧１）の部分について部分ごとに要素の総和値を算出する算出手段と、前記複数の学習データの各々を、算出した前記ｋ個の総和値を要素とするベクトルとして、該ｋ個の総和値によって張られるｋ次元特徴空間に写像する写像手段と、前記ｋ次元特徴空間に写像された各学習データとその属するクラスとに基づいて、当該ｋ次元特徴空間において、入力データを前記複数のクラスに分類するためのパラメータを学習する学習手段とを備える。
【００１１】
また、本発明の他の態様によれば、入力データを複数のクラスに分類するためのパラメータ学習方法をコンピュータに実行させるコンピュータ読み取り可能なプログラムが、それぞれが属するクラスと対応付けられた複数の学習データを入力する学習データ入力ステップと、前記複数の学習データの各々において、特定のｋ個（ｋ≧１）の部分について部分ごとに要素の総和値を算出する算出ステップと、前記複数の学習データの各々を、算出した前記ｋ個の総和値を要素とするベクトルとして、該ｋ個の総和値によって張られるｋ次元特徴空間に写像する写像ステップと、前記ｋ次元特徴空間に写像された各学習データとその属するクラスとに基づいて、当該ｋ次元特徴空間において、入力データを前記複数のクラスに分類するためのパラメータを学習する学習ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、高速かつ高精度なパターン識別、あるいはそのためのパラメータの学習を実行することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照しながら、本発明の実施形態を説明する。
【００１４】
（第１の実施の形態）
本発明の第１の実施形態として、入力データとして２次元画像データを用い、その画像データが、ある特定のカテゴリであるかどうかを識別するパターン識別方法に用いるパラメータ学習方法、及びそれを用いたパターン識別方法を示す。このパターン識別方法は、つまり入力された画像データを、特定のカテゴリであるというクラスと、特定のカテゴリではないというクラスの２クラスに分類する方法である。
【００１５】
特定のカテゴリとしては、例えば人間の顔であるとか、あるパーツの欠陥であるといったカテゴリが挙げられる。本実施形態では、人間の顔の中心付近が入力画像のほぼ中央に存在するパターン（以下、顔パターン）を、特定のカテゴリとした場合の例を示す。
【００１６】
図１に、第１の実施形態におけるパターン識別用パラメータ学習方法の処理の流れを示す。以下、このパターン識別用パラメータ学習方法について図１を用いて説明する。
【００１７】
まず、ステップＳ１０１において、データベース１０２に保持してある複数の学習パターンから、１つの学習パターンを入力する。データベース１０２には、顔パターンと、それ以外の任意のパターン（以下、非顔パターンと称する）を、そのラベル（顔パターンであるのか、非顔パターンであるのか）と共に予め複数保持しておく。本実施形態では、データベース１０２に保持しておくパターンは、グレースケール画像であり、各画素値が輝度値として表現されたものである。ここでは、全顔パターンは、顔の向きやサイズをある程度正規化しておき、顔・非顔を含めた全パターンを一定の画像サイズにして保持しておく。
【００１８】
次に、ステップＳ１０３において、ステップＳ１０１で入力された学習パターンについて、４つの所定部分の輝度値の総和を求める。この所定部分は任意に設定すれば良いが、分類したい２クラスにおいて、差が顕著に表れるような部分を設定するのが好適である。本実施形態では、顔パターンと非顔パターンとの２クラスに分類するため、顔パターンにとって特徴的である、左右の目の領域、眉間の領域、口の領域を、４つの所定部分として設定する。
【００１９】
具体的には、図２の破線で示すような、全顔パターンの左目が入るような領域２１、全顔パターンの右目が入るような領域２３、領域２１と領域２３の中間の眉間の位置に対応する領域２２、全顔パターンの口が入るような領域２４の４つの矩形領域を、上記所定部分として用いる。なお、本実施形態では、所定部分として４つの矩形領域を用いるが、この所定部分の個数や位置・大きさ・形状は任意であり、少なくとも１つの部分を設定しておき、その部分のデータの総和を求めるようにすればよい。
【００２０】
次のステップＳ１０４では、ステップＳ１０３において求めた各領域の総和を単純に並べたベクトルを生成する。並べ方は任意であるが、本実施形態では、図２の領域２１、領域２２、領域２３、領域２４の順に、それぞれの総和値を並べたベクトルを生成する。そして、ここで生成したベクトルをベクトル化データとして、学習パターンのラベルと共にデータベース１０５に保持しておく。これにより、各学習パターンは、上記４個の総和値によって張られる４次元特徴空間に写像されたことになる。
【００２１】
ステップＳ１０６では、データベース１０２に保持されている学習パターンの全てを選択したかどうかを判定する。全てを選択してなければ、ステップＳ１０１に戻り、データベース１０２から新たな学習パターンを選択していくようにする。全ての学習パターンが選択された場合、次のステップＳ１０７に進む。
【００２２】
ステップＳ１０７では、データベース１０５に保持されたベクトルデータを用いて、各クラスの平均ベクトルを求める。
【００２３】
次いで、ステップＳ１０８では、ステップＳ１０７で求めたクラス平均ベクトルと、データベース１０５に保持されたベクトルデータとを用いて、クラスごとの分散共分散行列を求める。
【００２４】
次のステップＳ１０９では、ステップＳ１０８で求めたクラスごとの分散共分散行列に各クラスの事前確率を乗じ、その行列の和を求め、求めた行列の逆行列を算出する。各クラスの事前確率については、事前確率が既知である場合はそれを用いればよい。既知でない場合は、学習パターン数に応じた値に設定するか、学習したい識別器に求める性能に応じて設定すればよい。ここで、逆行列が存在しない、即ち求めた行列の和が正則でない場合は、ステップＳ１０３において総和抽出を行う部分の設定が適切でない可能性が高い。そのため、例えば図２に示した各領域の位置や大きさを変える等、所定部分の設定をし直して、もう一度はじめから学習を開始する必要がある。
【００２５】
最後に、ステップＳ１１０において、まず、ステップＳ１０７で求めた各クラスの平均ベクトルと、ステップＳ１０９で求めた逆行列とを用いて、パターン識別用パラメータの１つであるクラス分離ベクトルを算出する。クラス分離ベクトルは、顔パターンの平均ベクトルから非顔パターンの平均ベクトルを引いたベクトルを求め、そのベクトルの左側からステップＳ１０９の逆行列算出において求めた逆行列をかけることで求められる。
【００２６】
次いで、もう１つのパターン識別用パラメータである識別閾値を、求めたクラス分離ベクトルと、データベース１０５に保持されたベクトルデータとを用いて求める。ここでは、まずデータベース１０５に保持された全ベクトルデータと、求められたクラス分離ベクトルとの内積を求める。この内積値は、顔パターンであるらしさを表す代表値とみなすことができ、例えばこの値が所定値以上であれば、顔パターンのクラスであると分類し、そうでなければ非顔パターンのクラスであると分類するようにする。この識別に用いる所定値が識別閾値となる。
【００２７】
識別閾値の決定は、識別閾値を細かく振っていき、失敗パターン総数（顔パターンであるのに、非顔パターンのクラスに分類された総数と、非顔パターンであるのに顔パターンに分類された総数の和）が最小になる値を検索して決定するようにすればよい。
【００２８】
本実施形態では、失敗パターン総数に基づいて識別閾値を決定するが、この方法に限るものではなく、求める識別器の性能に応じて適切に設定すればよい。また、クラス分離ベクトルの方向によっては、所定閾値以下の場合に顔パターンのクラスであると分類した方が、失敗パターン総数をより小さくできる場合がある。その場合は、クラス分離ベクトルの方向を逆にする（全要素の符号を反転する）か、パターン識別の際に、所定値以下のパターンが顔パターンのクラスであるというように取り決めておくようにすればよい。
【００２９】
以上の手法により、パターン識別用のパラメータとして、クラス分離ベクトルと、識別閾値を得ることができる。これらはいわゆる線形識別関数とクラス間境界とを与えることになる。本実施形態では、クラス分離ベクトルを得るための手法として、上記のような、いわゆる線形判別分析法を用いたが、本発明はこれに限るものではなく、直交化学習等により、パラメータを逐次更新しながらクラス分離ベクトルを得るような手法でも構わない。
【００３０】
続いて、上記手法で求めたパターン識別用のパラメータを用いたパターン識別方法によって、画像中の顔を検出する方法について、図３を用いて説明する。
【００３１】
まず、ステップＳ３０１で、顔検出を行う画像を入力する。この画像は、上記説明したパターン識別用パラメータ学習時と同様のグレースケール画像である。グレースケール画像以外の画像に対して顔検出を行いたい場合は、まず学習時と同様のグレースケール画像に変換してから入力するようにすれば良い。
【００３２】
次に、ステップＳ３０２において、矩形領域の総和を高速に求めるために、入力した画像のインテグラルイメージを生成する。インテグラルイメージとは、画像始点（例えば画像の左上の画素）から、注目画素までを対角線とする矩形領域内の画素値の総和を、注目画素の画素値として表現するものである。これを利用すると、任意の矩形領域内の画素値の総和を高速に求めることができる（インテグラルイメージの詳細については、非特許文献１を参照）。本実施形態では、ステップＳ３０４において、画素値の総和を抽出する所定部分として４つの矩形領域を利用するため、予めこのインテグラルイメージを生成しておくことで、総和抽出の処理が高速に実行できる。
【００３３】
次いで、ステップＳ３０３で、画像中の所定の点の中から１つの点を定め、それを中心とする領域を生成したインテグラルイメージから切り出す。上記所定の点は、画像の全画素としても良いが、例えば１画素おきというように、粗くサンプリングするようにしても良い。切り出すサイズは任意だが、本実施形態では、学習時に利用した学習パターンと同じサイズになるように切り出しを行う。
【００３４】
ステップＳ３０４において、切り出したインテグラルイメージを用いて、学習時にステップＳ１０３で総和を求めた部分と同一位置の、矩形領域内の画素値の総和を算出する。
【００３５】
次に、ステップＳ３０５において、ステップＳ３０４で抽出した総和を、学習時のステップＳ１０４と同じ順序で並べたベクトルを生成する。
【００３６】
そして、ステップＳ３０６において、ステップＳ３０５で生成したベクトルと、学習により予め生成しておき、識別用パラメータデータベース３０７に保持しておいたクラス分離ベクトルとの内積を演算する。ここで用いるクラス分離ベクトルは、予め所定値以上を顔パターンと分類するのが好適な方向になるようにしたものを用いる。
【００３７】
続いて、ステップＳ３０８では、ステップＳ３０６の内積演算で求めた内積値と、学習時に予め求めておき、データベース３０７に保持しておいた識別閾値との比較を行い、求めた内積値が識別閾値よりも高い場合に、ステップＳ３０３で定めた点に顔が存在すると判定する。
【００３８】
ステップＳ３０８で顔が存在すると判定された場合は、ステップＳ３０９において、ステップＳ３０３で定めた点に顔が存在するという結果を記録しておく。
【００３９】
そしてステップＳ３１０では、ステップＳ３０３で所定の点の全てを中心とする画像切り出しを行ったかどうかを判定して、行ったのであれば処理を終了する。そうでなければステップＳ３０３に戻り、新たな所定の点を１つ定め、画像切り出しを行うという処理を繰り返す。
【００４０】
以上説明した処理により、入力された画像内の顔を検出することができる。この処理では、学習時に利用した顔パターンと同じような向き、サイズの顔が検出できる。もし、異なるサイズの顔を検出したい場合は、入力画像を縮小または拡大した画像を生成して、同様の処理を行えばよい。あるいは、ステップＳ３０４において総和を求める所定部分を縮小または拡大し、ステップＳ３０５において、縮小または拡大した分の補正を行ったベクトルを生成するようにすればよい。
【００４１】
ここでの補正に関しては、縮小または拡大した分の面積比の逆数を、求めた各総和値に乗じてやるようにする。また、顔の向きに関しては、面内回転が学習パターンと異なる顔を検出したい場合は、入力画像を予め回転させたものを入力して同様の処理を行えばよい。また、軸方向の回転が学習パターンと大きく異なる顔の検出をしたい場合は、同一のパターン識別方法で行うのは困難である。そこで、軸方向の回転ごとのパターン識別用パラメータを予め学習により生成しておき、それぞれのパターン識別方法を独立に用いて検出するようにすればよい。
【００４２】
以上、第１の実施の形態は、入力データとして２次元画像データを用い、その画像データが、ある特定のカテゴリであるかどうかを識別するパターン識別方法に用いるパラメータ学習方法、及びそれを用いたパターン識別方法を説明した。つまり、入力された画像データを、特定のカテゴリであるというクラスと、特定のカテゴリではないというクラスの２クラスに分類するパターン識別方法の例について説明した。
【００４３】
（第２の実施の形態）
第２の実施形態では、第１の実施形態と同様に、入力データとして２次元画像データを用いた２クラス分類のパターン識別を行なう。その際、ブースティング手法（詳細については、非特許文献４を参照）を用いて構築する複数の弱判別器の組み合わせにより、さらに高精度なパターン識別に用いるパラメータ学習方法、及びそれを用いたパターン識別方法を示す。
【００４４】
図４に、第２の実施形態におけるパターン識別用パラメータ学習方法の処理の流れを示す。以下、このパターン識別用パラメータ学習方法について図４を用いて説明する。
【００４５】
まずステップＳ４０１において、所定の矩形パターンの中から１つの矩形パターンを選択する。ここで選択する矩形パターンは、第１の実施形態における、目や口の位置に対応する矩形領域と同様のものである。ただし、本実施形態では、予め固定の１つの矩形パターンを用いるのではなく、所定の複数の矩形パターンのそれぞれに対して処理を行い、最も識別能力の高いパターン識別結果が得られる矩形パターンを選択する。所定の複数の矩形パターンとしては、任意の位置・大きさの、矩形領域の組み合わせを用いればよい。
【００４６】
本実施形態における矩形パターンの設定方法についてさらに詳細に説明する。本実施形態では、学習パターンとして、２０×２０画素の顔パターン、及び非顔パターンを用いるので、その２０×２０画素のパターン内に設定可能な矩形領域を２つ設定し、それを１つの矩形パターンとして用いる。１つの矩形は、その幅・高さ・縦位置・横位置で決まるので、その４つのパラメータを決めることにより、１つの矩形領域が設定される。
【００４７】
そこで、まず矩形の幅ｗを１〜２０、高さｈを１〜２０の中からそれぞれ１つ決定する。次に、矩形の左上の座標位置ｘを０〜２０−ｗ、矩形の左上の座標位置ｙを０〜２０−ｈの中からそれぞれ１つ決定する。これで、１つの矩形領域が設定されることになる。本実施形態では、２つの矩形領域の組み合わせを１つの矩形パターンとして用いるので、もう１つの矩形領域も同様に決定する。ただし、２つ目の矩形領域は、１つ目に決定した矩形領域以外になるようにする。
【００４８】
選択すべき所定の矩形パターンとしては、これらの組み合わせ全てを用いるようにしてもよいが、その場合、非常に処理に時間がかかる。そこで、例えば幅、高さは何れも奇数にする、矩形の左上の座標位置は、何れも偶数にする、といった制約を付けて、選択すべき所定の矩形パターン数を減らすようにしてもよい。
【００４９】
本実施形態では、矩形領域２つから構成されるものを矩形パターンとしたが、本発明はこれに限るものではなく、その他の矩形領域数でも実施可能である。例えば、矩形領域３つから構成されるものを矩形パターンとする場合には、３つ目の矩形領域として、１つ目と２つ目に選ばれた以外の矩形領域を、上記と同様の方法で決定すればよい。矩形領域１つで構成されるものを矩形パターンとすることも可能であるが、その場合は、パターン識別用パラメータの求め方が異なるので、後述する。また、本実施形態では、矩形パターンは全て同じ２つの矩形領域から構成されるものとしているが、矩形領域が２つで構成されるものと、矩形領域３つで構成されるものとが混在するような場合にも適用可能である。
【００５０】
ステップＳ４０１で１つの矩形パターンを選択した後、ステップＳ４０２において、データベース４０３に保持された複数の学習パターンから、１つの学習パターンを入力する。データベース４０３に保持しておくパターンは、第１の実施の形態と同様であるが、それぞれのパターンに重みを設定しておく点が異なる。
【００５１】
この重みは、学習時の重要度を示しており、この重みが高いパターンほど、それを重要視した学習を行うようにする。初期段階では、通常全てのパターンに同じ重みを設定しておく。つまり、パターンの総数が例えばＮ個である場合、それぞれの重みを、１／Ｎと設定しておけばよい。初期状態の重みの設定に関しては、これに限るものではなく、例えば事前確率によって傾斜した重みを設定するようにしてもよい。また、求める識別器の性能に応じて適当に設定してもよい。例えば非顔パターンの重みを大きく設定しておくと、非顔パターンを誤って顔パターンのクラスに分類する確率を小さくすることができる（しかしこの場合、逆に、顔パターンを誤って非顔パターンのクラスに分類する確率は高くなる）。また、この重みの絶対値に関しては、特に限定はしないが、全学習パターンの重みの総和が１であると計算が簡便であるので、そのように設定しておくとよい。
【００５２】
次に、ステップＳ４０４において、ステップＳ４０２で入力した学習パターンから、ステップＳ４０１で選択した矩形パターンに基づき、そのそれぞれの矩形領域内の輝度値の総和を抽出する。
【００５３】
続いて、ステップＳ４０５において、ステップＳ４０４で求めたそれぞれの矩形領域の総和を用いてベクトルを生成し、そのベクトルをステップＳ４０１で選択した矩形パターンに対応するベクトルデータとして、データベース４０６に保持する。
【００５４】
ここで、識別能力向上のため、第１の実施形態とは異なり、求めた総和値の正規化を行い、それをベクトルの各要素値とするようにする。具体的には、ステップＳ４０２で入力した学習パターンの輝度値の平均と、輝度値の標準偏差を用いる。まず、それぞれの矩形領域の総和から、その矩形領域の面積に輝度値の平均を乗じたものを引き、それに標準偏差の逆数を乗じることによって正規化を行う。このようにして正規化したそれぞれの矩形領域の総和値を、任意の順（１つの矩形パターンで同一の順序）で並べたベクトルを生成して、データベース４０６に保持しておく。
【００５５】
ステップＳ４０７では、データベース４０３に保持されている学習パターンの全てを選択したかどうかを判定して、全てを選択していなければ、ステップＳ４０２の学習パターン入力に戻り、新たな学習パターンを、データベース４０３から選択していくようにする。全ての学習パターンが選択された場合、次のステップＳ４０８のクラス平均ベクトル算出に進む。
【００５６】
ステップＳ４０８では、データベース４０６に保持された、ステップＳ４０１の矩形パターン選択において選択した矩形パターンに対応するベクトルデータを用いて、各クラスの重み付平均ベクトルを求める。具体的には、各ベクトルデータに、先に述べた、対応する学習パターンの重みを乗じ、重みを乗じたベクトルの総和をクラスごとに求める。この時、同時に学習パターンの重みの総和もクラスごとに求めておく。そして、重みを乗じた全ベクトルの総和を算出後、クラスごとに総和を求めたベクトルを、そのクラスの重みの総和で割ることで、各クラスの重み付平均ベクトルが求められる。
【００５７】
次いで、ステップＳ４０９では、ステップＳ４０８で求めたクラスの重み付平均ベクトルと、データベース４０６に保持された、ステップＳ４０１で選択した矩形パターンに対応するベクトルデータとを用いて、クラスごとの重み付分散共分散行列を求める。ここでも、この重み付分散共分散行列を求める際に、学習パターンの重みを利用する。
【００５８】
具体的には、まず、１つのベクトルデータから、そのベクトルデータに対応するクラスの重み付平均ベクトルを引いたベクトルと、そのベクトルの転置ベクトルの積を求める。そして、積を求めたことにより得られる行列に、対応する学習パターンの重みを乗じ、その重みを乗じた行列の総和をクラスごとに求めることによって、クラスごとの重み付分散共分散行列が得られる。もし、ステップＳ４０１で選択した矩形パターンが、１つの矩形で構成されるものである場合は、ベクトルデータが１つの要素しかもたないので、このステップＳ４０９のクラス分散共分散行列算出は省略可能である。このステップＳ４０９を省略した場合は、次のステップＳ４１０の逆行列算出も省略する。
【００５９】
次のステップＳ４１０では、ステップＳ４０９で求めたクラスごとの重み付分散共分散行列の和を求め、求めた行列の逆行列を算出する。ここでは第１の実施形態とは異なり、ステップＳ４０９で重み付の分散共分散行列を求めており、なおかつ全学習パターンの重みの総和は１となるようにしてあるので、事前確率を乗じる必要はない。ここで、逆行列が存在しない、即ち求めた行列の和が正則でない場合は、ステップＳ４０１で選択した矩形パターンが適切でない可能性が高い。そのため、続くステップＳ４１１でのパラメータ算出は飛ばし、ステップＳ４１２の予測誤差記録（詳細は後述）において、その矩形パターンと共に、予測誤差１というデータを記録し、次に進むようにすればよい。
【００６０】
次に、ステップＳ４１１において、まず、ステップＳ４０８で求めた各クラスの重み付平均ベクトルと、ステップＳ４１０の逆行列算出において求めた逆行列とを用いて、パターン識別用パラメータの１つであるクラス分離ベクトルを算出する。クラス分離ベクトルは、顔パターンの重み付平均ベクトルから非顔パターンの重み付平均ベクトルを引いたベクトルを求め、そのベクトルの左側からステップＳ４１０で求めた逆行列をかけることによって求められる。
【００６１】
次いで、もう１つのパターン識別用パラメータである識別閾値を、求めたクラス分離ベクトルと、データベース４０６に保持された、ステップＳ４０１で選択した矩形パターンに対応するベクトルデータとを用いて求める。ここでは、まず第１の実施形態と同様に、データベース４０６に保持された、ステップＳ４０１で選択した矩形パターンに対応する全ベクトルデータと、求めたクラス分離ベクトルとの内積を求める。この内積値については、第１の実施形態と同様に、顔パターンであるらしさを表す代表値とみなすことができる。
【００６２】
この識別に用いる識別閾値の決定は、第１の実施形態とは異なり、学習パターンの重みに応じて決定するようにする。具体的には、まず識別閾値を細かく振っていき、識別に失敗したパターンの重みを、全学習パターンについて、誤差の累積値として累積していき、その誤差の累積値が最小になる識別閾値を検索して決定する。ここで、識別に失敗したパターンとは、顔パターンであるのに、非顔パターンのクラスであると分類された学習パターンと、非顔パターンであるのに顔パターンであると分類された学習パターンである。上述した誤差の累積値が小さいということは、現状重視すべき学習パターンにおける識別の失敗が少ないということを意味しており、ここにおいても、学習パターンの重みに基づいた学習を行っているといえる。
【００６３】
ステップＳ４０１で選択した矩形パターンが、１つの矩形で構成されるものであり、ステップＳ４０９のクラス分散共分散行列算出を省略した場合は、上記とはパラメータ算出方法が異なる。まず顔パターンの重み付平均ベクトル（要素数は１なのでスカラー）から非顔パターンの重み付平均ベクトル（スカラー）を引いた時の符号のみを求める。次いで、その符号をデータベース４０６に保持された、ステップＳ４０１で選択した矩形パターンに対応する全ベクトルデータ（スカラー）に乗じ、これを上記手法の内積値と同等のものとして扱い、識別閾値と、誤差の累積値を算出するようにすればよい。
【００６４】
続いて、ステップＳ４１２において、ステップＳ４１１で求めたパターン識別用のパラメータと共に、識別閾値を決定した際の誤差の累積値を予測誤差として記録しておく。
【００６５】
そして、ステップＳ４１３において、ステップＳ４０１で所定の矩形パターンの全てを選択したかどうかを判定する。全てを選択していなければ、学習パターンの選択履歴をクリアして、ステップＳ４０１に戻り、新たな矩形パターンを選択していくようにする。所定の全ての矩形パターンが選択された場合、ステップＳ４１４に進む。
【００６６】
ステップＳ４１４では、ステップＳ４１２において記録した、ステップＳ４０１で選択した全ての矩形パターンごとの予測誤差に基づき、予測誤差が最小である矩形パターンを１つ選択する。
【００６７】
そして、ステップＳ４１５において、ステップＳ４１４で選択された矩形パターンと、それに対応するパターン識別用パラメータ、予測誤差から算出する識別スコアαを、弱判別方法に用いるパラメータとして順番に記録していく。識別スコアαは、予測誤差をεとした時、α＝１／２×ｌｎ｛（１−ε）／ε｝として求められる。ここで、前式中のｌｎは自然対数を表わしている。
【００６８】
次に、ステップＳ４１６において、データベース４０３に保持されている学習パターンが持つ重みを更新する。ここでは、データベース４０６に保持された、直前にステップＳ４１５で記録された矩形パターンに対応する全ベクトルデータに対し、同じく直前にステップＳ４１５で記録したパターン識別用パラメータ（クラス分離ベクトル、及び識別閾値）を用いて実際に識別を行う。
【００６９】
そして、識別に成功したパターンに対しては、そのパターンの重みにｅｘｐ（−α）を乗じ、失敗したパターンに対しては、そのパターンの重みにｅｘｐ（α）を乗じる。ここで、識別に成功したパターンとは、顔パターンであって、正しく顔パターンのクラスであると分類された学習パターンと、非顔パターンであって、正しく非顔パターンであると分類された学習パターンである。また、失敗したパターンとは、顔パターンであるのに、非顔パターンのクラスであると分類された学習パターンと、非顔パターンであるのに、顔パターンであると分類された学習パターンである。前式中のαは、直前のステップＳ４１５において求めた識別スコアである。上記のような重み更新後、データベース４０３内の、全ての学習パターンが持つ重みの総和が１となるように正規化を行う。
【００７０】
最後に、ステップＳ４１７で、ステップＳ４１５で記録したパラメータの個数が、予め定めた個数に達しているかどうかを判定して、達していれば処理を終了する。達していなければ、矩形パターン選択履歴、学習パターンの選択履歴、データベース４０６のベクトル化データをクリアして、ステップＳ４０１に戻り、もう１度最初から矩形パターンを選択していくようにする。以上の手法により、パターン識別用のパラメータとして、所定個数の矩形パターンと、その矩形パターンに対応したそれぞれのパターン識別用パラメータを、各弱判別方法に用いるパラメータとして得ることができる。
【００７１】
本実施形態においても、第１の実施形態と同様に、重みつきのパターンを利用した線形判別分析法を用いてクラス分離ベクトルを求めているが、本発明はこれに限るものではなく、その他の手法を用いても構わない。
【００７２】
続いて、上記手法により求めた弱判別方法のパターン識別用のパラメータを用いた、複数の弱判別方法の組み合わせによるパターン識別方法を利用した、画像中の顔を検出する顔検出方法について、図５を用いて説明する。
【００７３】
まず、ステップＳ５０１で、顔検出を行う画像を入力する。この画像は、上記説明したパターン識別用パラメータ学習時と同様のグレースケール画像である。グレースケール画像以外の画像に対して顔検出を行いたい場合は、まず学習時と同様のグレースケール画像に変換してから入力するようにすれば良い。
【００７４】
次に、ステップＳ５０２において、第１の実施形態の顔検出方法で説明したインテグラルイメージを生成すると共に、２乗のインテグラルイメージも生成する。２乗のインテグラルイメージとは、画像始点（例えば画像の左上の画素）から、注目画素までを対角線とする矩形領域内の、各画素値の２乗の総和を、注目画素の画素値として表現するものである。これを利用すると、高速に任意の矩形領域内の、各画素値の２乗の総和を求めることができ、この２乗のインテグラルイメージと、通常のインテグラルイメージを用いることにより、高速に任意の矩形領域の標準偏差を求めることができる。
【００７５】
次いで、ステップＳ５０３で、画像中の所定の点の中から、点を１つ定め、それを中心とする矩形領域を、生成したインテグラルイメージから切り出す。上記所定の点は、画像の全画素としても良いが、例えば１画素おきというように、粗くサンプリングするようにしても良い。切り出すサイズは任意だが、本実施形態では、学習時に利用した学習パターンと同じサイズになるように切り出しを行う。ここで、１つの点を定めた段階で、その点に顔が存在するかの判定に用いるスコアを０に設定する。
【００７６】
次に、ステップＳ５０４において、ステップＳ５０１で入力した画像の、ステップＳ５０３で切り出した矩形領域に対応する領域内の平均画素値、及び標準偏差を算出する。平均は、ステップＳ５０２で生成したインテグラルイメージを用いて、矩形領域内の画素値の総和を求めて、それを矩形領域の面積で割ることによって求められる。標準偏差は、ステップＳ５０２で生成した２乗のインテグラルイメージを用いて矩形領域内の各画素値の２乗の総和を求め、それを矩形領域の面積で割ったものから、先に求めた平均の２乗を引くことで矩形領域内の画素の分散を求め、その分散の平方根を算出することで求められる。
【００７７】
次いで、ステップＳ５０５では、識別用パラメータ群が保持されたデータベース５０６から、所定の順番で矩形パターンを１つ選択する。データベース５０６には、上記説明したパターン識別用パラメータ学習時の、ステップＳ４１５の学習結果記録において記録した順の通りに、矩形パターンと、それに対応する識別用パラメータを予め保持しておき、ステップＳ５０５では、その順に従って矩形パターンを１つ選択する。
【００７８】
ステップＳ５０７では、ステップＳ５０３で切り出したインテグラルイメージを用いて、ステップＳ５０５で選択した矩形パターンに基づく矩形領域の総和を抽出する。
【００７９】
次に、ステップＳ５０８において、ステップＳ５０７で抽出した矩形領域の総和と、ステップＳ５０４で求めた平均と標準偏差とを用い、それぞれの矩形領域の総和から、その矩形領域の面積に平均を乗じたものを引く。その値に標準偏差の逆数を乗じることによって正規化を行い、ステップＳ５０５で選択した矩形パターンにおける、上記説明したパターン識別用パラメータ学習時のステップＳ４０５と同じ順序で並べたベクトルを生成する。
【００８０】
そして、ステップＳ５０９において、ステップＳ５０８で生成したベクトルと、学習により予め生成してデータベース５０６に保持された、ステップＳ５０５で選択した矩形パターンに対応するクラス分離ベクトルとの内積を演算する。ここで用いるクラス分離ベクトルは、予め所定値以上を顔パターンと分類するのが好適な方向になるようにしたものを用いる。ここで、ステップＳ５０５で選択された矩形パターンが１つの矩形で構成され、上記説明したパターン識別用パラメータ学習時にステップＳ４０９のクラス分散共分散行列算出を省略した場合を考える。その場合は、ステップＳ４１１のパラメータ算出において求めた符号を、ステップＳ５０８で生成したベクトル（スカラー）に乗じたものを、上記内積値とみなすようにすればよい。
【００８１】
続いてステップＳ５１０では、ステップＳ５０９で求めた内積値と、学習時に予め求めてデータベース５０６に保持しておいた、ステップＳ５０５で選択した矩形パターンに対応する識別閾値との比較を行う。求めた内積値が識別閾値よりも高い場合には、ステップＳ５０３で定めた点に顔が存在する可能性が高いと判定する。ここで、処理の高速化のために、ステップＳ５０９で求めた内積値に基づいて、ステップＳ５０３で定めた点に顔が存在しないと決定して処理を打ち切ってしまってもよい。
【００８２】
その場合、予めデータベース５０６に、ステップＳ５０５で選択した矩形パターンに対応する打ち切り閾値を保持しておく。そして、ステップＳ５０９で求めた内積値が、その打ち切り閾値以下であるならば、処理を打ち切り、ステップＳ５１４に進むようにする。この打ち切り閾値は、上記説明したパターン識別用パラメータ学習時のステップＳ４１１のパラメータ算出において、識別閾値とは別に求めておく。例えば学習パターンの内、顔パターンであるのに、非顔パターンのクラスであるとみなされて処理を打ち切られてしまう割合が、所定値以下になるといった条件に基づいて求めておくようにすればよい。
【００８３】
次のステップＳ５１１では、ステップＳ５１０において顔が存在する可能性が高いと判定された場合は、ステップＳ５０３で０に設定したスコアに、予めデータベース５０６に保持しておいた、ステップＳ５０５で選択した矩形パターンに対応する識別スコアを加算する。逆に、ステップＳ５１０で顔が存在する可能性が高いと判定されなかった場合は、識別スコアを減算する。ここで、更なる処理の高速化のために、現状のスコアに基づいて、ステップＳ５０３で定めた点に顔が存在しないと決定して処理を打ち切ってしまってもよい。
【００８４】
その場合、予めデータベース５０６に、ステップＳ５０５で選択した矩形パターンによるスコアリング終了後に対応するスコア打ち切り閾値を保持しておく。現状のスコアがそのスコア打ち切り閾値以下ならば、処理を打ち切り、ステップＳ５１４に進むようにする。このスコア打ち切り閾値は、上記説明したパターン識別用パラメータ学習時に、データベース４０３に保持してある学習パターンに、それぞれスコア（初期状態では０）を設定しておく。ステップＳ４１６での学習パターンの重み更新において、ステップＳ５１１と同様にスコアに識別スコアを加算もしくは減算していき、そのスコアを用いて、例えば上記打ち切り閾値と同様の条件に基づいて求めるようにすればよい。本実施形態では、現状のスコアに基づいて処理の打ち切りを行うが、非特許文献１で開示されているように、数個分のスコアの累積値に基づいて処理の打ち切りを行うようにしてもよい。
【００８５】
次に、ステップＳ５１２では、ステップＳ５０５において、データベース５０６に保持されている、全ての矩形パターンを選択したかどうかを判定する。全ての矩形パターンを選択したのであれば、ステップＳ５１３に進み、そうでなければステップＳ５０５に戻り、新たな矩形パターンを、所定の順で１つ選択していくという処理を繰り返す。
【００８６】
ステップＳ５１３では、ステップＳ５１１で加算もしくは減算していったスコアが所定値以上であれば、ステップＳ５０３で定めた点に顔が存在すると判定して、その結果を記録しておく。判定に用いる所定値としては通常０を用いるが、求める顔検出方法の性能に応じて適切に定めればよい。
【００８７】
そしてステップＳ５１４では、ステップＳ５０３において、所定の点の全てを中心とする画像切り出しを行ったかどうかを判定して、行ったのであれば処理を終了する。そうでなければステップＳ５０３に戻り、新たな所定の点を１つ定め、画像切り出しを行うという処理を繰り返す。
【００８８】
上記説明した処理により、入力された画像内の顔を検出することができる。この処理でも、第１の実施形態と同じように、学習時に利用した顔パターンと同じような向き、サイズの顔を検出することになるが、異なるサイズや方向の顔を検出したいような場合は、第１の実施形態で述べたような手法を用いればよい。
【００８９】
以上、第２の実施の形態は、上記第１の実施形態の変形として、第１の実施形態と同様に、入力データとして２次元画像データを用いた２クラス分類のパターン識別を行う。その際、ブースティング手法を用いて構築する複数の弱判別方法の組み合わせによる、さらに高精度なパターン識別に用いるパラメータ学習方法、及びそれを用いたパターン識別方法の例として説明した。
【００９０】
（第３の実施の形態）
第３の実施形態は、上記第２の実施形態の変形として、第２の実施形態と同様に、入力データとして２次元画像データを用いた２クラス分類のパターン識別を行う。その際に、ブースティング手法を用いて構築する複数の弱判別方法の組み合わせによる、さらに高精度なパターン識別に用いるパラメータ学習方法、及びそれを用いたパターン識別方法を示す。
【００９１】
第２の実施形態では、抽出した総和により張られる特徴空間において、線形識別を行うようにしていた。これに対し、本実施形態では、抽出した総和により張られる特徴空間内の点を、非線形変換により新たな特徴空間に写像し、その新たな特徴空間において線形識別を行う、いわゆる非線形識別を行う。そのような例として、サポートベクターマシン（以下、ＳＶＭ）を用いた例を説明する（ＳＶＭの詳細については、非特許文献５を参照）。
【００９２】
図６に、第３の実施形態におけるパターン識別用パラメータ学習方法の処理の流れを示す。以下、このパターン識別用パラメータ学習方法について図６を用いて説明する。
【００９３】
ステップＳ６０１〜６０７の処理と、第２の実施形態におけるステップＳ４０１〜Ｓ４０７までの処理とは、ステップＳ６０５とステップＳ４０５とでベクトル化が異なる以外は、同様の処理である。よってステップＳ６０５のベクトル化以外の処理の説明は省略する。なお、本実施形態では、第２の実施形態において説明した、累積スコアによる演算の打ち切りに用いるスコア打ち切り閾値も同時に学習する。そのため、データベース６０３に保持してある全学習パターンに累積スコアを持たせ、最初にそれを０に初期化しておくようにする。
【００９４】
ステップＳ６０５では、第２の実施形態のステップＳ４０５と同様に、ステップＳ６０４で求めたそれぞれの矩形領域の総和を用いてベクトルを生成する。それをステップＳ６０１で選択した矩形パターンに対応するベクトルデータとして、データベース６０６に保持する。ただし、第２の実施形態では、学習パターンの輝度値の平均と標準偏差のみを用いて、求めたそれぞれの矩形領域の総和を正規化してからベクトル化するようにしていたが、ここではさらに、それらを各矩形領域の面積で割ってからベクトル化するようにする。
【００９５】
次に、ステップＳ６０８では、データベース６０６に保持された、ステップＳ６０１で選択した矩形パターンに対応する、顔パターンと非顔パターンとのそれぞれから得られたベクトルデータ群を分離するように、ＳＶＭの学習を行う。
【００９６】
本実施形態では、ＳＶＭにおいて、ガウシアンカーネルｅｘｐ（−｜ｘ−ｘｋ｜２／σ２）を用いた非線形ＳＶＭを利用する。ガウシアンカーネルを用いた非線形ＳＶＭの学習では、ステップＳ６０１で選択した矩形パターンに対応するベクトルデータと同次元の、少なくとも１つのサポートベクターｘｋと、それに対応する係数ａｋ、及びバイアス値ｂが得られる。即ち、ステップＳ６０１で選択された矩形パターンを構成する矩形領域の個数分の次元数となる。
【００９７】
通常のＳＶＭでは、ｎ個のサポートベクターが得られた場合には、識別時にΣ［ａｋ・ｅｘｐ（−｜ｘ−ｘｋ｜２／σ２）］＋ｂ（Σは１からｎまでの総和を意味する）を算出し、その符号に応じて２値的な判定を行う。しかしながら、本実施形態では、Σ［ａｋ・ｅｘｐ（−｜ｘ−ｘｋ｜２／σ２）］の値に応じた連続的な確信度を出力する手法を用いるため、ここで得られるバイアス値ｂは無視しても構わない。
【００９８】
また、ＳＶＭの学習時に必要となる、ソフトマージンの程度を決める定数や、ガウシアンカーネルのσに関しては、ＳＶＭの学習を行うベクトルデータ群のレンジや、問題の複雑さに応じて適当に定めてやればよい。この学習では、第２の実施形態での学習のように、学習パターンが持つ重みを、学習に直接的に用いることが困難である。そこで、学習時に学習パターンの重みを反映させたい場合は、例えばその重みに比例する確率に応じて、ＳＶＭ学習用のデータとして利用するか否かを決めるというようにすればよい。
【００９９】
次のステップＳ６０９では、第２の実施形態の顔検出方法におけるステップＳ５１０の閾値判定において説明した打ち切り閾値と同様の、後述の顔検出方法において処理の高速化を行うために用いる打ち切り閾値の算出を行う。具体的には、データベース６０６に保持された、ステップＳ６０１で選択した矩形パターンに対応する全ベクトルデータｘを対象とする。
【０１００】
これに対して、ステップＳ６０８で得られた、ｎ個のサポートベクターｘｋと、それに対応する係数ａｋ、及び学習時に用いたパラメータσを用いて、Σ［ａｋ・ｅｘｐ（−｜ｘ−ｘｋ｜２／σ２）］を算出する。この値を中間出力値と呼ぶ。そして、全ベクトルデータから得られた中間出力値に基づいて、この中間出力値が所定値以下であるならば、そのパターンを非顔パターンのクラスであるとみなして処理を打ち切るための、打ち切り閾値を求める。
【０１０１】
この打ち切り閾値は、第２の実施形態におけるステップＳ５１０で説明した打ち切り閾値と同様に求められる。例えば、学習パターンの内、顔パターンであるのに非顔パターンのクラスであるとみなされて、処理を打ち切られてしまう割合が所定値以下であるといった条件に基づいて求めればよい。
【０１０２】
本実施形態では、上記条件の他に、学習パターンの内、非顔パターンであって、正しく非顔パターンであるとみなされ、処理が打ち切られる割合が第２の所定値以上であるという第２の条件も同時に用いる。そして、両方の条件を同時に満たし、第２の条件における打ち切られる割合が最も大きい値を探索して決定するようにしている。もし両方の条件を同時に満たす値が存在しない場合は、識別時に打ち切りを行わないようにすればよい。
【０１０３】
ステップＳ６１０では、ステップＳ６０８により得られたパラメータを用いて、予測誤差を算出しそれを記録しておく。具体的には、ステップＳ６０９と同様に、まずデータベース６０６に保持された、ステップＳ６０１で選択した矩形パターンに対応する全ベクトルデータｘを対象とする。これに対して、ステップＳ６０８において得られた、ｎ個のサポートベクターｘｋと、それに対応する係数ａｋ、及び学習時に用いたパラメータσを用いて、全中間出力値を算出する。
【０１０４】
そして次に、この全中間出力値と各学習パターンの重みを用い、クラスごとに、重み付ヒストグラムを作成する。このクラスごとの重み付ヒストグラムは、１つのビンに対応する中間出力値範囲内である当該クラスのパターンが持つそれぞれの重みを累積したものが、そのビンの値として表現されたものである。そして、作成したクラスごとの重み付ヒストグラムを用いて、予測誤差を算出し、それを記録しておく。予測誤差は、作成したクラスごとの重み付ヒストグラムの、ｋ番目のビン（ビンに対応する中間出力値範囲は、クラス間で同一でなければならない）の値をＳｋ，ｃ（ｃはクラスを表す）、全ビン数をｎとした時、２・Σ［（Ｓｋ，Ｆａｃｅ・Ｓｋ，ＮｏｎＦａｃｅ）１／２］として求められる。
【０１０５】
そして、ステップＳ６１１では、第２の実施形態において説明したステップＳ４１３と同様に、ステップＳ６０１で所定の矩形パターンの全てを選択したかどうかを判定する。全てを選択していなければ、学習パターンの選択履歴をクリアして、ステップＳ６０１の矩形パターン選択に戻り、新たな矩形パターンを選択していくようにする。所定の矩形パターンが全て選択された場合、ステップＳ６１２に進む。
【０１０６】
ステップＳ６１２では、ステップＳ６１０において記録した、ステップＳ６０１で選択した全ての矩形パターンごとの予測誤差から、予測誤差が最小である矩形パターンを１つ選択する。
【０１０７】
そして、ステップＳ６１３において、パターン識別用のパラメータを、弱判別方法に用いるパラメータとして順番に記録していく。まず、ステップＳ６１２で選択された矩形パターンと、その矩形パターン選択時に、ステップＳ６０８で得られたサポートベクターｘｋと、それに対応する係数ａｋ、及び学習時に用いたパラメータσを記録する。更に、ステップＳ６０９で得られた打ち切り閾値、ステップＳ６１０で生成した、クラスごとの重み付ヒストグラムから生成する識別スコアテーブルＴを記録する。
【０１０８】
識別スコアテーブルＴは、中間出力値が、クラスごとの重み付ヒストグラムのビンに対応する中間出力値範囲である時に、各クラスの重み付ヒストグラムの、そのビンの値に対して、出力値を出力するテーブルである。ビンの値、Ｓｉ，Ｆａｃｅ、及びＳｉ，ＮｏｎＦａｃｅを用いて、出力値α＝１／２・ｌｎ｛（Ｓｉ，Ｆａｃｅ＋ε）／（Ｓｉ，ＮｏｎＦａｃｅ＋ε）｝という値を出力する。
【０１０９】
次に、ステップＳ６１４において、データベース６０３に保持されている学習パターンが持つ重みを更新する。また同時に、第２の実施形態の顔検出方法において説明した、スコアによる演算打ち切りのための、スコア打ち切り閾値を算出する。そのため、各学習パターンが持つ累積スコアの更新を行い、それに基づいて、スコア打ち切り閾値の算出も行う。
【０１１０】
重みの更新では、データベース６０６に保持された、直前にステップＳ６１３の学習結果記録において記録された矩形パターンに対応する全ベクトルデータを用いる。これに対し、同じく直前にステップＳ６１３の学習結果記録において記録したパターン識別用パラメータ（サポートベクターｘｋと、それに対応する係数ａｋ、及び学習時に用いたパラメータσ、識別スコアテーブルＴ）を用いる。まず中間出力値であるΣ［ａｋ・ｅｘｐ（−｜ｘ−ｘｋ｜２／σ２）］を算出し、その値を基に、識別スコアテーブルＴを参照して出力値αを求める。
【０１１１】
そして、その学習パターンが顔パターンであれば、その重みにｅｘｐ（−α）を乗じ、非顔パターンであればｅｘｐ（α）を乗じる。累積スコアの更新では、上記求めた出力値αを、学習パターンの持つ累積スコアに加算していく。スコア打ち切り閾値の算出は、ステップＳ６０９と同様の条件に基づいて、条件を満たすスコア打ち切り閾値を検索し、条件を満たすスコア打ち切り閾値が存在するならば、その値をステップＳ６１３で記録したパターン識別用パラメータに追加して記録するようにする。ここでも第２の実施形態において説明したのと同様に、上記のような重み更新後、データベース６０３の学習パターン内の、全ての学習パターンが持つ重みの総和が１となるように正規化を行う。
【０１１２】
最後に、ステップＳ６１５では、第２の実施形態のステップＳ４１７と同様に、ステップＳ６１３で、弱判別方法のパラメータを記録した個数が、予め定めた所定個数に達しているかどうかを判定する。所定個数に達していれば処理を終了する。達していなければ、矩形パターン選択履歴、学習パターンの選択履歴、データベース６０６のベクトル化データをクリアして、ステップＳ４０１に戻り、もう１度最初から矩形パターンを選択していくようにする。
【０１１３】
以上の手法により、パターン識別用のパラメータとして、所定個数の矩形パターンと、その矩形パターンに対応したそれぞれのパターン識別用パラメータを、各弱判別方法のパラメータとして得ることができる。
【０１１４】
このように、本手法では、第１、第２の実施形態において説明したような線形識別の手法ではなく、非線形識別の手法にも拡張可能である。本実施形態では、ガウシアンカーネルを用いた非線形ＳＶＭによる手法を説明したが、これに限るものではなく、例えば多項式カーネルを利用したＳＶＭや、非線形判別分析といった、その他の非線形手法や、ｋ最近傍法による手法にも適用可能である。
【０１１５】
続いて、上記手法により求めた弱判別方法のパターン識別用のパラメータを用いた、複数の弱判別方法の組み合わせによるパターン識別方法を利用した、画像中の顔を検出する顔検出方法について、図７を用いて説明する。
【０１１６】
ステップＳ７０１〜７０７は、第２の実施形態の顔検出方法において説明した、ステップＳ５０１〜５０７と同様の処理であるので説明を省略する。
【０１１７】
ステップＳ７０８では、ステップＳ７０７で抽出した矩形領域の総和と、ステップＳ７０４で求めた平均と標準偏差を用い、それぞれの矩形領域の総和から、その矩形領域の面積に平均を乗じたものを引き、それに標準偏差の逆数を乗じることによって正規化を行う。その値をさらに矩形領域の面積で割ったものを、ステップＳ７０５で選択した矩形パターンにおける、上記説明したパターン識別用パラメータ学習時のステップＳ６０５と同じ順序で並べたベクトルを生成する。
【０１１８】
そして、ステップＳ７０９において、中間出力値Σ［ａｋ・ｅｘｐ（−｜ｘ−ｘｋ｜２／σ２）］を算出する。ここで、ステップＳ７０８で生成したベクトルと、学習により予め生成して保持しておいた、ステップＳ７０５で選択した矩形パターンに対応するサポートベクターｘｋと、それに対応する係数ａｋ、及び学習時に用いたパラメータσを用いる。
【０１１９】
続いて、ステップＳ７１０では、ステップＳ７０９で求めた中間出力値と、学習時に予め求めておき、データベース７０６に保持しておいた、ステップＳ７０５で選択した矩形パターンに対応する打ち切り閾値との比較を行う。求めた中間出力値が打ち切り閾値よりも低い場合に、ステップＳ７０３で定めた点に顔が存在しないと決定して処理を打ち切り、ステップＳ７１４に進むようにする。
【０１２０】
次のステップＳ７１１では、ステップＳ７０９で求めた中間出力値と、データベース７０６に保持しておいた、ステップＳ７０５で選択した矩形パターンに対応する識別スコアテーブルＴを用いて出力値αを求める。そして、その値αを、ステップＳ７０３で０に設定したスコアに加算する。また、この加算を行った後のスコアと、学習時に予め求めておいた、ステップＳ７０５で選択した矩形パターンによるスコアリング終了時に対応するスコア打ち切り閾値との比較を行う。その結果、加算を行った後のスコアが、スコア打ち切り閾値よりも低い場合に、ステップＳ７０３で定めた点に顔が存在しないと決定して処理を打ち切り、ステップＳ７１４に進むようにする。
【０１２１】
ステップＳ７１２から、ステップＳ７１４までの処理は、第２の実施形態の顔検出方法において説明した、ステップＳ５１２から、ステップＳ５１４までの処理と同様の処理であるので説明を省略する。
【０１２２】
上記説明した処理により、入力された画像内の顔を検出することができる。この処理でも、第１の実施形態における顔検出方法と同じように、学習時に利用した顔パターンと同じような向き、サイズの顔を検出することになる。異なるサイズや方向の顔を検出したいような場合は、第１の実施形態で述べたような手法を用いればよい。
【０１２３】
以上、第３の実施の形態は、上記第２の実施形態の変形として、第２の実施形態と同様に、入力データとして２次元画像データを用いた２クラス分類のパターン識別する例を説明した。その際、ブースティング手法を用いて構築する複数の非線形識別を行う弱判別方法の組み合わせによる、さらに高精度なパターン識別に用いるパラメータ学習方法、及びそれを用いたパターン識別方法を示した。
【０１２４】
（第４の実施の形態）
第４の実施形態では、上記第２の実施形態の変形として、入力データとして２次元画像データを用い、その画像データが、所定のカテゴリの何れに属するか、若しくは何れにも属さないか識別する。つまり入力された画像データを、複数の所定のカテゴリであるというクラス、もしくは何れのカテゴリでもないクラスに分類する、多クラス分類のパターン識別を行う。そこで、ブースティング手法を用いて構築する複数の弱判別方法の組み合わせによる、パターン識別に用いるパラメータ学習方法、及びそれを用いたパターン識別方法を示す。
【０１２５】
複数の所定のカテゴリとしては、第３の実施形態までと同様の人物の顔や、その他、車両・草花といった様々なものが考えられるが、本実施形態では、ある個人の顔を１つのカテゴリとみなし、所定の登録人数（例えば３人）分のカテゴリを用いた場合の例を示す。
【０１２６】
図８に、第４の実施形態におけるパターン識別用パラメータ学習方法の処理の流れを示す。以下、このパターン識別用パラメータ学習方法について図８を用いて説明する。
【０１２７】
まず、ステップＳ８０１において、所定の領域パターンの中から、１つの領域パターンを選択する。第３の実施形態まででは、パターン識別をコンピュータ上で高速に実行するために、いくつかの矩形領域から構成されている矩形パターンを用いた。この領域パターン、つまり総和を抽出する、いくつかの所定部分の組み合わせとしては、例えば所定同心円状上のデータの総和を求めるといった、その他の任意の部分から構成されているものであっても構わない。
【０１２８】
本実施形態では、図１０に示すように、３つの領域１００１〜１００３から構成される領域パターンを、予め複数用意しておき、ここでその中から１つを選択して用いるようにする。ここで、領域１００１は任意のサイズ・位置の矩形領域であり、領域１００２及び領域１００３は、任意のサイズ・位置の円形領域（２つの領域は同一の領域にはならない）である。
【０１２９】
次のステップＳ８０２では、複数の学習パターンが保持されたデータベース８０３から、学習パターンを入力する。データベース８０３には、登録者であるＡ、Ｂ、Ｃの３名の、それぞれ複数の顔パターンと、登録者でない人物の複数の顔パターンを、そのラベル（Ａ、Ｂ、Ｃの何れであるか、もしくは登録者でないという情報）、及びパターンの重みと共に予め保持しておく。パターンの重みは、第２の実施形態と同様に、初期状態の重みを設定しておく。
【０１３０】
この初期状態の重みの設定では、Ａ、Ｂ、Ｃそれぞれの学習パターンの重みを同一にしておくことが好ましい。本実施形態でも、データベース８０３に保持しておく顔パターンは、グレースケール画像であり、各画素値が輝度値として表現されたものである。また、全顔パターンは、顔の向きやサイズをある程度正規化しておき、一定の画像サイズにして保持しておく。
【０１３１】
続いて、ステップＳ８０４において、ステップＳ８０２で入力した学習パターンから、ステップＳ８０１で選択した領域パターンに基づき、その領域パターンを構成する各領域内の、輝度値の総和を抽出する。
【０１３２】
次に、ステップＳ８０５において、ステップＳ８０４で求めたそれぞれの領域の総和を単純に並べたベクトルを生成し、そのベクトルを、ステップＳ８０１で選択した領域パターンに対応するベクトルデータとして、データベース８０６に保持する。本実施形態では、第２，３の実施形態のような、学習パターンの平均値や標準偏差を用いた総和の正規化を行わないが、正規化を行ってからベクトル化するようにしても構わない。
【０１３３】
ステップＳ８０７では、データベース８０３に保持されている学習パターンの全てを選択したかどうかを判定して、全てを選択していなければ、ステップＳ８０２に戻り、新たな学習パターンを、データベース８０３から選択していくようにする。全ての学習パターンが選択された場合、ステップＳ８０８に進む。
【０１３４】
ステップＳ８０８では、データベース８０６に保持された、ステップＳ８０１で選択した領域パターンに対応するベクトルデータと、そのラベルとを用いて、ニューラルネットワーク（以下、ＮＮ）の学習を行う。ＮＮとしては、多クラス識別が可能であればどのようなタイプのネットワークでも構わないが、本実施形態では、図１１に示すような、３層フィードフォワード型であるＮＮを用いる。
【０１３５】
このＮＮは、入力層１１０１の入力ノード１１０２が３つ（領域パターンを構成する領域数によって決まる）、出力層１１０５の出力ノード１１０６も３つ（分類すべきカテゴリ数によって決まる）である。中間層１１０３の中間ノード１１０４の数は、予め所定の個数にしておいても良いが、問題に応じて実験的に適切な個数にするのが好ましい。
【０１３６】
図１１に示すように中間ノード１１０４は入力ノード１１０２に全結合しており、出力ノード１１０６も中間ノード１１０４に全結合している。ＮＮの学習では、入力層１１０１の３つのノード１１０２に、データベース８０６に保持された、ステップＳ８０１で選択した領域パターンに対応するベクトルデータの、それぞれの要素の値を入力する。そして、入力したベクトルデータのラベルに対応する出力ノード１１０６の出力が１、それ以外の出力ノード１１０６の出力は０となるように、誤差逆伝播法を用いて、いわゆる教師有り学習を繰り返し行う。
【０１３７】
ちなみに、Ａ、Ｂ、Ｃ何れのカテゴリにも属さないベクトルデータの場合は、３つの出力ノードの出力が、全て０になるような教師有り学習をすればよい（多層フィードフォワード型ＮＮと、誤差逆伝播法等の、ＮＮの教師有り学習方法に関しては、Ｓ．  Ｈａｙｋｉｎ，  “Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  Ａ  Ｃｏｍｐｒｅｈｅｎｓｉｖｅ  Ｆｏｕｎｄａｔｉｏｎ  ２ｎｄ  Ｅｄｉｔｉｏｎ”，Ｐｒｅｎｔｉｃｅ  Ｈａｌｌ，ｐｐ．１５６−２５５，Ｊｕｌｙ  １９９８を参照）。第２の実施形態等と同様に、学習パターンが持つ重みを学習結果に反映させるためには、学習の際にパターンを提示する確率を、学習パターンが持つ重みに比例した確率となるようにしてやればよい。
【０１３８】
次のステップＳ８０９では、ステップＳ８０８での学習により得られたＮＮのパラメータを用いて、実際にＮＮでの演算を行い、その結果から得られる予測誤差を算出しそれを記録しておく。具体的には、まずデータベース８０６に保持された、ステップＳ８０１で選択した領域パターンに対応する全ベクトルデータｘに対して、ステップＳ８０８で得られたＮＮのパラメータを用いて、実際にＮＮでの演算を行う。そして、ＮＮの全出力結果（３つの出力ノードの出力値）を算出する。
【０１３９】
次に、この全出力結果を用い、それぞれの判定閾値（出力値がこの値以上であれば、当該ノードに対応するクラスである確率が高いと判定する閾値）を細かく振りながら、実際の判定を行っていく。実際の判定では、まずそれぞれの出力ノードの出力値と判定閾値とを比較する。もし出力値が判定閾値を超えたノードが無い場合は、何れのクラスにも属さないと判定する。また、出力値が判定閾値を超えたノードが１つである場合は、そのノードに対応するクラスであると判定する。そして、出力値が判定閾値を超えたノードが多数である場合は、それらの内で最大の出力値であるノードに対応するクラスであると判定する。最大の出力値の比較においては、出力値の絶対値で比較してもよいし、判定閾値からの出力値の差で比較してもよい。
【０１４０】
この判定により、誤った判定をしてしまった（Ａのクラスに属するパターンであるのに、Ａ以外であると判定してしまった等）学習パターンの重みを、予測誤差として累積していく。そして、上記予測誤差を、様々な判定閾値の組み合わせにおいて算出し、得られた予測誤差が最小となる３つの判定閾値と、その時の予測誤差を記録しておく。
【０１４１】
そして、ステップＳ８１０では、第２の実施形態におけるステップＳ４１３と同様に、ステップＳ８０１で所定の領域パターンの全てを選択したかどうかを判定する。全てを選択していなければ、学習パターンの選択履歴をクリアして、ステップＳ８０１に戻り、新たな領域パターンを選択していくようにする。所定の全ての領域パターンが選択された場合、ステップＳ８１１に進む。
【０１４２】
ステップＳ８１１では、ステップＳ８０９で記録した、ステップＳ８０１で選択した全ての領域パターンごとの予測誤差から、予測誤差が最小である領域パターンを１つ選択する。
【０１４３】
そして、ステップＳ８１２において、ステップＳ８１１で選択された最小誤差領域パターンと、その領域パターン選択時にステップＳ８０８で得られたＮＮのパラメータを、弱判別方法のパラメータとして順番に記録していく。ここで、ＮＮのパラメータは、ＮＮの結合係数と、中間層のノード数である。更に、ステップＳ８０９で得られた各判定閾値と、予測誤差から算出する識別スコアαを、弱判別方法のパラメータとして順番に記録していく。識別スコアαは、第２の実施形態と同様に、予測誤差をεとした時、α＝１／２×ｌｎ｛（１−ε）／ε｝として求められる。
【０１４４】
ステップＳ８１３では、データベース８０３に保持されている学習パターンが持つ重みを更新する。重みの更新では、データベース８０６に保持された、直前のステップＳ８１２で記録された最小誤差領域パターンに対応する全ベクトルデータを対象とする。これに対し、同じく直前のステップＳ８１２の学習結果記録において記録したパターン識別用パラメータ（ＮＮの結合係数、中間層のノード数、各判定閾値）を用い、実際にＮＮによる判定を行う。そして、その学習パターンが正しい識別をされたなら、識別スコアαを用いて、その重みにｅｘｐ（−α）を乗じ、誤った識別をされたならｅｘｐ（α）を乗じる。
【０１４５】
最後に、ステップＳ８１４では、第２の実施形態のステップＳ４１７と同様に、ステップＳ８１２で弱判別方法のパラメータを記録した個数が、予め定めた所定個数に達しているかどうかを判定する。所定個数に達していれば処理を終了し、達していなければ、領域パターン選択履歴、学習パターンの選択履歴、データベース８０６内のベクトル化データをクリアして、ステップＳ８０１に戻り、もう１度最初から矩形パターンを選択していくようにする。以上の手法により、パターン識別用のパラメータとして、所定個数の領域パターンと、その領域パターンに対応したそれぞれのパターン識別用パラメータを、各弱判別方法のパラメータとして得ることができる。
【０１４６】
続いて、上記手法により求めた弱判別方法のパターン識別用のパラメータを用いた、複数の弱判別方法の組み合わせによるパターン識別方法を利用した個人識別方法について、図９を用いて説明する。この個人識別方法によれば、入力された顔画像に対し、それが登録されたＡ、Ｂ、Ｃの何れの人物であるのか、若しくは登録された人物ではないのかを検出する。
【０１４７】
まず、ステップＳ９０１において、識別処理対象となる顔画像として１つの顔パターンを入力する。この時、識別対象となるクラス（ここでは、Ａ、Ｂ、Ｃの３クラス）のそれぞれのスコアを０に初期化しておく。ここで入力する画像は、上記説明したパターン識別用パラメータ学習時と同様のグレースケール画像であり、予め学習時と同じ大きさに正規化されたものである。グレースケール画像以外の顔画像による個人識別を行いたい場合は、まず学習時と同様の画像サイズであるグレースケール画像に変換してから入力するようにすればよい。
【０１４８】
続いて、ステップＳ９０２では、識別用パラメータ群データベース９０３から、所定の順番で領域パターンを１つ選択する。データベース９０３には、上記説明したパターン識別用パラメータ学習時の、ステップＳ８１２で記録した順の通りに、領域パターンと、それに対応する識別用パラメータとを予め保持しておく。ステップＳ９０２では、その順に従って領域パターンを１つ選択する。
【０１４９】
ステップＳ９０４では、ステップＳ９０１の画像入力で入力された画像の、ステップＳ９０２の領域パターン選択において選択した領域パターンに基づく領域の輝度値の総和を抽出する。
【０１５０】
次に、ステップＳ９０５において、ステップＳ９０４で抽出した各領域の総和を、上記説明したパターン識別用パラメータ学習時のステップＳ８０５と同じ順序で並べたベクトルを生成する。
【０１５１】
そして、ステップＳ９０６において、出力層の全ノードの出力値を演算する。その際、ステップＳ９０５で生成したベクトルと、学習により予め生成して、データベース９０３に保持しておいた、ステップＳ９０２で選択した領域パターンに対応するＮＮの結合係数と、その中間層のノード数であるＮＮとを用いる。
【０１５２】
続いて、ステップＳ９０７では、まずステップＳ９０６で求めた全ノードの出力値と、学習時に予め求めておいた、ステップＳ９０２で選択した領域パターンに対応する、各出力ノードの判別閾値との比較を行う。上記説明したパターン識別用パラメータ学習時のステップＳ８０９の予測誤差記録で説明したのと同様の判定を行う。
【０１５３】
そして、判定されたクラスのスコアに、予めデータベース９０３に保持しておいた、ステップＳ９０２で選択した領域パターンに対応する識別スコアを加算し、判定されなかったクラスのスコアからは、識別スコアを減算していく。何れのクラスでもないと判定された場合は、全てのスコアから、識別スコアを減算するようにする。
【０１５４】
次に、ステップＳ９０８では、ステップＳ９０２において、データベース９０３に保持されている、全ての領域パターンを選択したかどうかを判定して、全ての領域パターンを選択したのであれば、ステップＳ９０９の結果出力に進む。そうでなければステップＳ９０２に戻り、新たな領域パターンを、所定の順で１つ選択していくという処理を繰り返す。
【０１５５】
ステップＳ９０９では、ステップＳ９０７で加算もしくは減算していった、それぞれのクラスのスコアを用い、ステップＳ９０１で入力された顔パターンがどのクラスに属するものであるのかを判定し、その結果を出力する。この判定では、まずそれぞれのスコアの内、最大の出力値であるクラスの出力値を１つ選択する。そして、そのスコアが所定値以上であれば、当該クラスに属すると判定し、そうでなければ、何れのクラスにも属さないと判定する。所定値は、通常０をその値として用いるが、求める顔画像による個人識別方法の性能に応じて適切に定めればよい。
【０１５６】
以上、第４の実施の形態は、上記第２の実施形態の変形として、入力データとして２次元画像データを用い、その画像データが、所定のカテゴリの何れに属するか、若しくは何れにも属さないかを識別する。つまり入力された画像データを、複数の所定のカテゴリであるというクラス、もしくは何れのカテゴリでもないクラスに分類する、多クラス分類のパターン識別を行う。このパターン識別において、ブースティング手法を用いて構築する複数のＮＮによる識別を行う弱判別方法の組み合わせによる、パターン識別に用いるパラメータ学習方法、及びそれを用いたパターン識別方法の例として説明した。
【０１５７】
以上説明した第４の実施形態のように、多クラス分類のパターン識別において、多クラスの識別方法を複数の弱判別方法の１つとして用いることにより、多クラス分類のパターン識別を実現してもよい。また、第２の実施形態や、第３の実施形態に示したような、２クラス識別のパターン識別方法を複数用いることにより、多クラスの識別を行っても構わない。
【０１５８】
また、上記第２から第４の実施形態においては、同一の弱判別方法を複数用いたパターン識別方法を説明したが、それぞれの弱判別方法が混載するような場合でも実現可能である。また、これとは異なる弱判別方法との組み合わせにおいても実現可能である。
【０１５９】
図１２は、上述した各実施形態に係るパラメータ学習装置およびパターン識別装置のハードウェア構成を示すブロック図である。
【０１６０】
同図において、ＣＰＵ１２０１は、フローチャートにつき説明した処理手順を含む各種プログラムを実行し、システムバス１２０８により接続された装置各部を制御する。ＲＡＭ１２０２は、データやプログラムを一時記憶する。ＲＯＭ１２０３は、固定的なデータやプログラムを記憶する。キーボード１２０４は、文字を入力したり、機能を選択するためのキーを備えている。更に画面上の位置を指示するためのポインティングデバイスとしてマウスが備えられている。
【０１６１】
ディスプレイ１２０５は、識別対象のパターンやその識別結果を表示したり、ユーザインターフェース（ＵＩ）を提供する。ハードディスクドライブ（ＨＤＤ）１２０６は、プログラムやデータを永続的に記憶する装置である。更にＤＶＤ、ＣＤ、ＦＤなどの記憶媒体を用いる記憶装置を設けてもよい。通信Ｉ／Ｆ１２０７は、ＬＡＮやインターネットなどを経由して装置外部と通信するためのインタフェースである。システムバス１２０８は、上述した装置各部を接続し、装置間でデータやアドレス、制御信号を送受信する媒体として利用される。
【０１６２】
フローチャートにつき説明した処理手順を含む各種プログラムは、ＲＯＭ１２０３に記憶されていてもよいし、ＨＤＤ１２０６からＲＡＭ１２０２へ、処理に先立ってあるいは処理の実行中に必要に応じてロードされるようにしてもよい。
【０１６３】
また、識別対象パターンは、ＨＤＤ１２０６などの記憶装置から読み出したり、通信Ｉ／Ｆ１２０７を介して外部の撮像装置から受信するなどして、得ることができる。
【０１６４】
なお、本発明は、複数の機器から構成されるシステムに適用しても、一つの機器からなる装置に適用してもよい。
【０１６５】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体が供給されたシステムあるいは装置のコンピュータが、そのプログラムコードを読み出し実行することでも達成される。
【０１６６】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステムなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１６７】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれる場合がある。そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行うことで前述した実施形態の機能が実現される場合も本発明に含まれる。
【図面の簡単な説明】
【０１６８】
【図１】第１の実施形態におけるパターン識別用パラメータ学習処理を示すフローチャートである。
【図２】総和抽出範囲の例を示す図である。
【図３】第１の実施形態における顔検出処理を示すフローチャートである。
【図４】第２の実施形態におけるパターン識別用パラメータ学習処理を示すフローチャートである。
【図５】第２の実施形態における顔検出処理を示すフローチャートである。
【図６】第３の実施形態におけるパターン識別用パラメータ学習処理を示すフローチャートである。
【図７】第３の実施形態における顔検出処理を示すフローチャートである。
【図８】第４の実施形態におけるパターン識別用パラメータ学習処理を示すフローチャートである。
【図９】第４の実施形態における顔検出処理を示すフローチャートである。
【図１０】領域パターンの例を示す図である。
【図１１】ニューラルネットワークの例を示す図である。
【図１２】パラメータ学習装置およびパターン識別装置のハードウェア構成を示すブロック図である。
【符号の説明】
【０１６９】
１０２  学習パターンのデータベース
１０５  ベクトル化データのデータベース
３０７  識別用パラメータのデータベース
４０３  学習パターンのデータベース
４０６  ベクトル化データのデータベース
５０６  識別用パラメータのデータベース
６０３  学習パターンのデータベース
６０６  ベクトル化データのデータベース
７０６  識別用パラメータのデータベース
８０３  学習パターンのデータベース
８０６  ベクトル化データのデータベース
９０３  識別用パラメータのデータベース
１２０１  ＣＰＵ
１２０２  ＲＡＭ
１２０３  ＲＯＭ
１２０４  キーボード
１２０５  ディスプレイ
１２０６  ＨＤＤ
１２０７  通信Ｉ／Ｆ
１２０８  バス
【図１】
2008009893.tif 000003
【図２】
2008009893.tif 000004
【図３】
2008009893.tif 000005
【図４】
2008009893.tif 000006
【図５】
2008009893.tif 000007
【図６】
2008009893.tif 000008
【図７】
2008009893.tif 000009
【図８】
2008009893.tif 000010
【図９】
2008009893.tif 000011
【図１０】
2008009893.tif 000012
【図１１】
2008009893.tif 000013
【図１２】
2008009893.tif 000014