(57)【要約】【課題】2つのクラスに属する入力データを高速かつ高精度にパターン識別し、そのための学習方法を提供する。【解決手段】複数の判別方法の組み合わせを順次実行することにより、入力データを所定のクラスに分類するパターン識別において、前記判別方法の少なくとも１つにおいて、前記入力データをN（N≧2）次元特徴空間上の対応点にマッピングするマッピングステップと、前記対応点に基づいて、次の判別方法を実行するべきかどうかを判定する判定ステップと、前記判定ステップにおいて次の判別方法を実行するべきであると判定された場合に、前記対応点に基づいて、次に実行するべき判別方法を選択する選択ステップと、を有する。【選択図】  図１３
2009086749.tif 000002
【特許請求の範囲】
【請求項１】
複数の判別処理の組み合わせを順次実行することにより入力データを第１または第２のクラスに分類するパターン識別方法であって、前記複数の判別処理の少なくとも１つが、
ｎを２以上の整数とした場合に、前記入力データをｎ次元特徴空間に対応点としてマッピングするマッピング工程と、
前記マッピング工程でマッピングされた対応点のｎ次元特徴空間における位置に基づいて、前記入力データが前記第１のクラスに属するか、次の判別処理を実行するかを判定する判定工程と、
前記判定工程において次の判別処理を実行すると判定された場合に、前記対応点の位置に基づいて、次に実行するべき判別処理を選択する選択工程とを備えることを特徴とするパターン識別方法。
【請求項２】
前記マッピング工程では、前記入力データのｎ個の部分データの各々の特徴量を座標値とする対応点を算出することを特徴とする請求項１に記載のパターン識別方法。
【請求項３】
前記判定工程では、前記対応点の座標値に対して線形識別関数を適用して、前記第１のクラスに属するか、次の判別方法を実行するかを判定することを特徴とする請求項２に記載のパターン識別方法。
【請求項４】
前記入力データは画像データであり、
前記ｎ個の部分データはそれぞれ前記画像データから予め定義された位置及びサイズで抽出された矩形画像であり、
前記特徴量は矩形画像における輝度の合計値或いは平均値であることを特徴とする請求項２または３に記載のパターン識別方法。
【請求項５】
前記入力データとして用いるために、入力画像から注目画素に関して画像データを切り出す切り出し工程を更に備え、
注目画素ごとに前記第１及び第２のクラスのいずれに属するかが判定されることを特徴とする請求項１乃至４のいずれか１項に記載のパターン識別方法。
【請求項６】
入力データを第１または第２のクラスに分類するパターン識別のためのパラメータを学習するパラメータ学習方法であって、
前記第１または第２のクラスにラベル付けされた複数の学習データを入力する入力工程と、
ｎを１以上の整数として、前記学習データをｎ次元特徴空間に対応点としてマッピングするマッピング工程と、
前記ｎ次元特徴空間から、同一ラベルの対応点が占める特徴空間を分割するパターン識別のためのパラメータを学習する学習工程とを備えることを特徴とするパラメータ学習方法。
【請求項７】
前記マッピング工程では、前記入力データから取得されるｎ個の部分データの特徴量を座標とする対応点を算出することを特徴とする請求項６に記載のパラメータ学習方法。
【請求項８】
前記学習工程では、前記対応点に対して線形識別関数を適用して、前記ｎ次元特徴空間から同一ラベルの対応点が占める特徴空間を分割するためのパラメータを学習することを特徴とする請求項６または７に記載のパラメータ学習方法。
【請求項９】
同一ラベルの前記対応点を複数のクラスタに分けるクラスタリング工程と、
前記ｎ次元特徴空間の同一ラベルの対応点が占める特徴空間から、前記複数のクラスタの各々に対応する特徴空間を分離するためのパラメータを学習する分離学習工程とを更に備えることを特徴とする請求項６または７に記載のパラメータ学習方法。
【請求項１０】
前記分離学習工程では、前記対応点に対して線形識別関数を適用して、前記複数のクラスタの各々に対応した特徴空間を分離するためのパラメータを学習することを特徴とする請求項９に記載のパラメータ学習方法。
【請求項１１】
入力データを第１または第２のクラスに分類するパターン識別のためのパラメータ学習において、
前記第１または第２のクラスにラベル付けされた複数の学習データを入力する入力工程と、
Ｎrを１以上の整数とした場合に、前記第１のクラスにラベル付けされた複数の学習データを、Ｎr次元特徴空間に対応点として仮マッピングする第１マッピング工程と、
前記第１マッピング工程によってマッピングされた対応点の前記Ｎr次元特徴空間における分布に基づき、Ｎr次元特徴空間を分割する仮パラメータを学習する第１学習工程と、
前記仮パラメータに基づいて、識別に用いるべきｎ次元特徴空間を決定する決定工程と、
前記第２のクラスにラベル付けされた学習データを前記ｎ次元特徴空間に対応点としてマッピングする第２マッピング工程と、
前記第２マッピング工程によってマッピングされた対応点の分布に基づき、前記ｎ次元特徴空間を分割するためのパラメータを学習する第２学習工程とを備えることを特徴とするパラメータ学習方法。
【請求項１２】
前記第１マッピング工程では、前記入力データのＮr個の部分データの特徴量を座標とする対応点を算出することを特徴とする請求項１１に記載のパラメータ学習方法。
【請求項１３】
前記マッピング工程では、前記入力データのｎ個の部分データの特徴量を座標とする対応点を算出することを特徴とする請求項１１または１２に記載のパラメータ学習方法。
【請求項１４】
前記第１学習工程では、前記対応点に対して線形識別関数を適用して、Ｎr次元特徴空間を分割するパターン識別のための仮パラメータを学習し、
前記決定工程では、仮パラメータの要素の値の大きさに基づいて前記ｎを定めることを特徴とする請求項１１乃至１３のいずれか１項に記載のパラメータ学習方法。
【請求項１５】
複数の判別処理の組み合わせを順次実行することにより入力データを第１または第２のクラスに分類するパターン識別装置であって、前記複数の判別処理の少なくとも１つが、
ｎを２以上の整数とした場合に、前記入力データをｎ次元特徴空間に対応点としてマッピングするマッピング手段と、
前記マッピング手段でマッピングされた対応点のｎ次元特徴空間における分布に基づいて、前記入力データが前記第１のクラスに属するか、次の判別処理を実行するかを判定する判定手段と、
前記判定手段において次の判別処理を実行すると判定された場合に、前記対応点の前記分布に基づいて、次に実行するべき判別処理を選択する選択手段とを備えることを特徴とするパターン識別装置。
【請求項１６】
入力データを第１または第２のクラスに分類するパターン識別のためのパラメータを学習するパラメータ学習装置であって、
前記第１または第２のクラスにラベル付けされた複数の学習データを入力する入力手段と、
ｎを１以上の整数として、前記学習データをｎ次元特徴空間の対応点としてマッピングするマッピング手段と、
前記ｎ次元特徴空間から、同一ラベルの対応点が占める特徴空間を分割するパターン識別のためのパラメータを学習する学習手段とを備えることを特徴とするパラメータ学習装置。
【請求項１７】
入力データを第１または第２のクラスに分類するパターン識別のためのパラメータ学習装置であって、
前記第１または第２のクラスにラベル付けされた複数の学習データを入力する入力手段と、
Ｎrを１以上の整数とした場合に、前記第１のクラスにラベル付けされた複数の学習データを、Ｎr次元特徴空間に対応点として仮マッピングする第１マッピング手段と、
前記第１マッピング手段によってマッピングされた対応点の前記Ｎr次元特徴空間における分布に基づき、Ｎr次元特徴空間を分割する仮パラメータを学習する第１学習手段と、
前記仮パラメータに基づいて、識別に用いるべきｎ次元特徴空間を決定する決定手段と、
前記第２のクラスにラベル付けされた学習データを前記ｎ次元特徴空間に対応点としてマッピングする第２マッピング手段と、
前記第２マッピング手段によってマッピングされた対応点の分布に基づき、前記ｎ次元特徴空間を分割するためのパラメータを学習する第２学習手段とを備えることを特徴とするパラメータ学習方法。
【請求項１８】
請求項１乃至５のいずれか１項に記載のパターン識別方法をコンピュータに実行させることを特徴とするプログラム。
【請求項１９】
請求項６乃至１４のいずれか１項に記載のパラメータ学習方法をコンピュータに実行させることを特徴とするプログラム。
【請求項２０】
請求項１８または請求項１９に記載のプログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像認識等の、入力信号のパターンを識別するためのパラメータ学習方法、及び、それを用いたパターン識別方法に関する。
【背景技術】
【０００２】
従来から、文字認識・顔検出・歩容認証等の、入力データを所定のクラスに分類するためのパターン識別方法として多くの手法が考案されており、現在に至っても、処理の高速化や、分類精度の向上等を目的とした様々な新しい手法が提案されている。例えば、非特許文献１には、短時間で演算が可能な弱判別方法を用い、AdaBoostによる学習法と、弱判別器をカスケード接続する手法の組み合わせにより、高速、かつ高精度なパターン識別方法を実現することが提案されている。
【０００３】
また、３つ以上のクラスの分類を行うために弱判別器をツリー上に接続している方法も提案されている。例えば、非特許文献２では、向きや傾きが予めラベル付けされた顔画像を学習し、テスト画像の中の顔を検出しその向きと傾きを求めている。
【非特許文献１】Viola ＆ Jones (2001) “Rapid Object Detection using a Boosted Cascade of Simple Features”, Computer Vision andPattern Recognition.
【非特許文献２】Huang, Ai, Li ＆ Lao (2005) “Vector Boosting for Rotation Invariant Multi-View Face Detection”, InternationalConference on Computer Vision.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
以上のように、入力画像に対して、高速かつ高精度にパターン識別を行うことができる技術が望まれている。例えば、撮像装置で人間の顔画像をきれいに撮影したり、顔画像を補正するなどのために、入力画像における顔の有無、特定のパターン（テクスチャ）の有無を高速且つ高精度に識別することが要求されている。本発明の目的は、このような点に鑑みてなされたものであり、２つのクラスのいずれかに属する入力データを高速かつ高精度に識別とするパターン識別処理を実現することを目的とする。
【課題を解決するための手段】
【０００５】
上記の目的を達成するための本発明の一態様によるパターン認識方法は、
複数の判別処理の組み合わせを順次実行することにより入力データを第１または第２のクラスに分類するパターン識別方法であって、前記複数の判別処理の少なくとも１つが、
ｎを２以上の整数とした場合に、前記入力データをｎ次元特徴空間に対応点としてマッピングするマッピング工程と、
前記マッピング工程でマッピングされた対応点のｎ次元特徴空間における位置に基づいて、前記入力データが前記第１のクラスに属するか、次の判別処理を実行するかを判定する判定工程と、
前記判定工程において次の判別処理を実行すると判定された場合に、前記対応点の位置に基づいて、次に実行するべき判別処理を選択する選択工程とを備える。
【０００６】
また、上記の目的を達成するための本発明の他の態様によるパラメータ学習方法は、
入力データを第１または第２のクラスに分類するパターン識別のためのパラメータを学習するパラメータ学習方法であって、
前記第１または第２のクラスにラベル付けされた複数の学習データを入力する入力工程と、
ｎを１以上の整数として、前記学習データをｎ次元特徴空間に対応点としてマッピングするマッピング工程と、
前記ｎ次元特徴空間から、同一ラベルの対応点が占める特徴空間を分割するパターン識別のためのパラメータを学習する学習工程とを備える。
【０００７】
更に、上記の目的を達成するための本発明の他の態様によるパラメータ学習方法は、
入力データを第１または第２のクラスに分類するパターン識別のためのパラメータ学習において、
前記第１または第２のクラスにラベル付けされた複数の学習データを入力する入力工程と、
Ｎrを１以上の整数とした場合に、前記第１のクラスにラベル付けされた複数の学習データを、Ｎr次元特徴空間に対応点として仮マッピングする第１マッピング工程と、
前記第１マッピング工程によってマッピングされた対応点の前記Ｎr次元特徴空間における分布に基づき、Ｎr次元特徴空間を分割する仮パラメータを学習する第１学習工程と、
前記仮パラメータに基づいて、識別に用いるべきｎ次元特徴空間を決定する決定工程と、
前記第２のクラスにラベル付けされた学習データを前記ｎ次元特徴空間に対応点としてマッピングする第２マッピング工程と、
前記第２マッピング工程によってマッピングされた対応点の分布に基づき、前記ｎ次元特徴空間を分割するためのパラメータを学習する第２学習工程とを備える。
【発明の効果】
【０００８】
本発明によれば、２つのクラスのいずれかに属する入力データを高速かつ高精度に識別とするパターン識別処理が実現される。
【発明を実施するための最良の形態】
【０００９】
以下、添付の図面を参照して本発明の好適な実施形態について説明する。
【００１０】
〔第１実施形態〕
第１実施形態では、入力された画像に顔があるかどうかを判定する情報処理装置の例を示す。本実施形態の説明を簡単にするために、入力された画像は、顔があればパスポート写真のようにほぼ中央にほぼ決められた大きさで配置されているものと仮定する。なお、画像を走査したり画像を拡大・縮小するなどしたりすれば、任意の位置にある任意の大きさの顔を検出できるようになるのは、言うまでもない。
【００１１】
図１は、第１実施形態に係わる情報処理装置のハードウェア構成例を説明するブロック図である。図において、１００はＣＰＵ（中央演算装置）であり、本実施形態で説明する情報処理方法をプログラムに従って実行する。１０１はプログラムメモリであり、ＣＰＵ１００により実行されるプログラムが記憶されている。１０２はＲＡＭで、ＣＰＵ１００によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリを提供している。１０３はハードディスクであり、画像ファイルやパターン識別用のパラメータなどを保存するための記憶媒体である。１０４はディスプレイであり、本実施形態の処理結果をユーザに提示する装置である。１１０は制御バス／データバスであり、上述の各部とＣＰＵ１００とを接続する。
【００１２】
以上の構成を備えた情報処理装置によって実行される顔を検出する際の処理の流れを、図２のフローチャートを参照して説明する。まずステップＳ２０１で、ＣＰＵ１００は、ハードディスク１０３より画像データをＲＡＭ１０２に読み込む。画像データはＲＡＭ１０２上では２次元配列として保持される。次のステップＳ２０２では、ＣＰＵ１００は、後述する学習方法により作成したパターン識別用パラメータをハードディスク１０３からＲＡＭ１０２に読み込む。ステップＳ２０３において、ＣＰＵ１００は、ステップＳ２０２で読み込んだパターン識別用パラメータを使用して、ステップＳ２０１で読み込んだ画像データが表す画像内に顔があるかどうかを判定する。次のステップＳ２０４において、ＣＰＵ１００は、ステップＳ２０３による顔の検出結果をディスプレイ１０４に表示する。
【００１３】
図２に示される処理をデータフロー図として書き表すと図３ようになる。画像２０５はハードディスク１０３に保存されている画像データに対応する。画像の読み込み処理２０１により、ハードディスク１０３内の画像２０５がＲＡＭ１０２上に入力画像Ｉとして記憶される（ステップＳ２０１）。ハードディスク１０３には、パターン識別用パラメータ２０９が保存されている。パターン識別用パラメータの読み込み処理２１０において、ハードディスク１０３内のパターン識別用パラメータ２０９が読み出され、ＲＡＭ１０２上にパターン識別用パラメータ２１１として記憶される(ステップＳ２０２)。検出処理２０３では、先の入力画像Ｉとパターン識別用パラメータ２１１を使用して、入力画像Ｉの中に顔があるかどうかを判定し、その判定結果を検出結果２０７としてＲＡＭ１０２に書き込む（ステップＳ２０３）。検出結果表示処理２０４では、検出結果２０７の内容がディスプレイ１０４に表示される（ステップＳ２０４）。
【００１４】
ここで、パターン識別用パラメータ２１１の内容について図４や図５を用いて説明する。なお、パターン識別用パラメータ２１１を作成する方法については、後ほど記述する。図４に示されるとおり、パターン識別用パラメータ２１１を表すデータは、Ｔ１とＴ２で表された２種類のノードをツリー状に接続した構造を有している。タイプＴ１のノードの後にはノードが１つだけ接続されている。また、タイプＴ２のノードの後にはノードが複数接続されている。Ｎ３で記されたノードもまたタイプＴ２のノードである。以上のように、本実施形態によるパターン識別処理は、複数のノード、すなわち複数の判別処理の組み合わせを順次実行することにより入力データを第１のクラス（例えば顔の無い画像）または第２のクラス（例えば顔のある画像）のいずれかに分類するものである。なお、本実施形態はタイプＴ１の種類によらず適用できるので、タイプＴ１のノードに関する説明を割愛する。タイプＴ１のノードには、例えば、非特許文献１に書かれているような、第１のクラスと判別すれば打ち切り、第２のクラスと判別すれば次のノードへ進める弱判別器（weak classifier）を使用しても良い。
【００１５】
図５は、タイプＴ２のノードのデータ構造を表す。このデータは、図１にＲＡＭ１０２として表したメモリ上に複数格納される。個々のノードのデータはそれぞれ値が異なるのが普通である。まず先頭にノードのタイプが格納されている。このノードはタイプＴ２なので、Ｔ２を表す符号がノードのタイプとして格納される。その次に矩形情報が格納されている。矩形情報の初めに矩形の個数ｎ（ｎは２以上の整数とする）が格納されており、その後にその個数ｎだけの矩形の座標（左上点，右下点）が格納されている。これにより、ｎ個の矩形の位置及びサイズが定義されている。これら複数の矩形をまとめて矩形群と呼ぶことにする。次に、後述する打ち切りのためのパラメータが格納されている。打ち切り用パラメータの先頭には閾値θが格納されている。その後に、先のｎ個の矩形に対応した、打ち切りのための係数が並ぶ。その後に、分岐先の個数ｍと、ｍ−１の数だけの分岐用のパラメータが並ぶ。分岐用パラメータのそれぞれには、打ち切り用パラメータ同様に閾値や矩形に対応した係数が格納されているが、更に分岐先ノードへのポインタも格納されている。このポインタの指し示す先には、別のノードのパラメータが格納されている。最後にもう１つの、ｍ番目の分岐先ノードへのポインタ（最後の分岐先ノードへのポインタ）が格納されている。
【００１６】
上記パラメータの作成方法（学習方法）を説明する前に、このパラメータを使用して顔を検出する方法を説明する。図６Ａ，Ｂは図２のステップＳ２０３（画像内の顔の検出処理）の詳細を表すフローチャート図である。まず、ステップＤ０１で、ＣＰＵ１００は、ポインタ変数ｐが最初のノードを指すようにｐを初期化する。次のステップＤ０２でｐが指し示すノードの種類を確認する。ｐが指し示すノードがタイプＴ１の場合には、ステップＤ０３に進む。また、ｐが指し示すノードがタイプＴ２の場合には、ステップＤ１１へ進む。ステップＤ０３ではタイプＴ１のための処理を行うが、この処理は周知であるので、その詳細については説明を省略する。ステップＤ０３での処理を終えると、ステップＤ０４で、ＣＰＵ１００は、全ノードの処理を終えたかどうかを確認する。全てのノードの処理を終えた場合には、ステップＤ０６へ進み、ＣＰＵ１００は、検出結果２０７に「真」の値を書き込む。これは顔が検出されたことを表す。全ノードの処理を完了していない場合には、ＣＰＵ１００は、ステップＤ０５でポインタ変数ｐを、次のノードを指すように変更する。
【００１７】
一方、ｐが指し示すノードがタイプＴ２であった場合、ステップＤ１１において、ＣＰＵ１００は変数ｃを０で初期化する。そして、ステップＤ１２からＤ１５までのループを矩形の数ｎ回だけ繰り返す。ループ内において矩形を表すループ変数をｉとする。ステップＤ１３において、ＣＰＵ１００は、図５のノード情報から矩形ｉの対角線の座標(xiL, yiT)，(xiR, yiB)を取得する。そして、その矩形ｉに対応する矩形画像を入力画像Ｉから抽出し、その矩形画像における輝度値の総和（合計値）を求める。このｉ番目の矩形画像における輝度値の総和をｂiとする。ｂiは、非特許文献１に書かれているように累積情報（integralimage）を使って高速に求めることができる。そしてステップＤ１４において、ＣＰＵ１００は、変数ｃにｂiと矩形ｉに対応する係数ａiとの積を加算する。まとめると、このステップＤ１２〜Ｄ１５のループで求めているのは、次の内積値である。
【００１８】
【数１】
2009086749.tif 000003
【００１９】
ステップＤ１６において、ＣＰＵ１００は、この内積値ｃが図５の打ち切り用パラメータの閾値θを超えているかどうか判定する。そして、θを超えていれば処理をステップＤ１７へ進め、ＣＰＵ１００は、検出結果２０７に「偽」の値を書き込む。これは顔が検出されなかったこと、すなわち入力画像Ｉが第２のクラスに識別されたことを表す。ここで、図４で示されたツリーの処理は打ち切られる。また、ステップＤ１６において内積値ｃが閾値θを超えていないと判断されると、次に使用すべきノードを選択するべく処理はステップＤ１８へ進む。
【００２０】
以上の処理は、換言すれば、パラメータに登録されている矩形の数をｎとした場合に、
・入力データ（入力画像Ｉ）から得られるｎ個の部分データ（矩形）の各々の特徴量（輝度値の和）をｎ次元特徴空間の座標（ｂ1,ｂ2,…ｂn）を有する対応点としてマッピングし、
・マッピングされた対応点のｎ次元特徴空間における座標位置に基づいて、入力画像Ｉが顔画像でない第１のクラスに属するか、次のノードによる判別処理を実行するかを、対応点の座標値に対して例えば識別関数（内積値の算出）を適用して判定するものである。
【００２１】
そして、上記ステップＤ１６において次の判別処理（ノード）を実行すると判定された場合には、以下に説明するように、対応点の位置に基づいて次に実行するべき判別処理（ノード）が選択される。
【００２２】
まず、ステップＤ１８において、ＣＰＵ１００は、全ノードの処理を終えたかどうか確認する。全ノードの処理が完了していれば、処理はステップＤ１９へ進み、ＣＰＵ１００は検出結果２０７に「真」の値を書き込む。これにより顔が検出されたこと、すなわち入力画像Ｉが第１のクラスに識別されたことになる。
【００２３】
一方、ステップＤ１８で全ノードの処理が完了していないと判断された場合には、ステップＤ２０からのループを実行する。ステップＤ２０からＤ２７までのループは最大でｍ−１回繰り返される。ここでｍは、図５の分岐先の数ｍである。ステップＤ２０〜Ｄ２７のループ内で分岐先を表す変数をｋとする。まずループ内のステップＤ２１で、ＣＰＵ１００は、変数ｃを０で初期化する。そしてステップＤ２２からＤ２５までのループで次の内積値が求まる。
【００２４】
【数２】
2009086749.tif 000004
【００２５】
ここでｂiは上記の〔数１〕のために求めた値を再利用することができる。ステップＤ２６で内積値ｃが閾値θkを超えているかどうか確認する。もし超えていなければ、ステップＤ２０からＤ２７までのループの実行を続ける。もし超えていれば、処理はステップＤ２８へ進む。ステップＤ２８では、ＣＰＵ１００はポインタ変数ｐに分岐先ｋへのポインタ値を代入する。そして、分岐先ｋのノードについて再びステップＤ０２からの処理を始める。ステップＤ２６で閾値を超えず、ステップＤ２７までのループを完了した場合には、処理はステップＤ３０へ進む。ステップＤ３０において、ＣＰＵ１００は、ポインタ変数ｐに図５の最後の分岐先ノードへのポインタ値を代入する。そして、再びステップＤ０２からの処理を始める。以上の処理により、図４におけるツリーの各ノードを遷移していくことになる。
【００２６】
次に、図４や図５のパターン識別用パラメータを作成するための学習手順を説明する。まず、前提として学習用の顔画像ｆjの集合Ｆ＝{ｆj | j =１..Nf}と、顔の写っていない学習画像ｇjの集合Ｇ＝{ｇj|j =１..Ng}が用意されているものとする。また、図５の矩形情報で表されるような矩形群φsの集合Φ＝{φs| s =１..Nφ}も予め用意されているものとする。更に、図４のツリー構造は予め決められており、パラメータを確保するためのメモリ領域がＲＡＭ１０２上に確保されているものとする。このとき、図５の各ポインタ値も確定しており、格納しておくことができる。そこで、図４においてＴ１と記されているノードからＮ３と記されているノードの直前（つまり、ここではＴ２と書かれているノード）までの学習が済んでいるものとする。なお、タイプＴ１のノードのための学習には非特許文献１に書かれているような手法を利用すればよい。
【００２７】
前述した検出の処理を適用すると、Ｎ３までのノードで学習画像のいくつかは顔がないものとして棄却（打ち切り）されたり、タイプＴ２のノードによって他の分岐先に振り分けられたりする。そこで、Ｎ３のノードでは、Ｎ３までのノードで棄却されたり他の分岐先に振り分けたりしない顔画像ｆj+の集合Ｆ+= {ｆj+ | j =１..Nf+}と非顔画像ｇj+の集合Ｇ+={ｇj+ | j =１..Ng+}を学習に利用する。
【００２８】
学習の手順を表すフローチャートを図７に示す。ステップＣ００からＣ３０のループでΦに属する矩形群φs（s =１..Nφ）の各々に対して処理が繰り返される。ステップＣ０１からＣ０７までのループはＦ+に属する顔画像ｆj+に関する処理である。ステップＣ０３からＣ０５までのループは矩形群φsの各矩形ｉに対して繰り返される。そしてステップＣ０４で、ＣＰＵ１００は、３次元配列の要素ｂjsifに、顔画像ｆj+上の矩形ｉ内にあるピクセルの輝度値の総和を代入する。なお、ここでは矩形の特徴量の一例として輝度値の総和を例示したが、他の特徴量を用いても良い。ステップＣ１０からＣ１６までのループはＧj+に属する非顔画像ｇj+に関する処理である。ステップＣ０１からＣ０７までのループと同様に、ＣＰＵ１００は、非顔画像ｇj+上の矩形ｉ内にあるピクセルの輝度値の総和を３次元配列の要素ｂjsigに代入する。以上の処理で、各顔画像ｆi+と各非顔画像ｇj+に対してそれぞれｎ次元空間内の対応点（ｂjs1f,…, ｂjsnf）と（ｂjs1g,…, ｂjsng）の分布が得られる。すなわち、第１のクラスにラベル付けされた学習データとしての非顔画像ｇj+と第２のクラスにラベル付けされた学習データとしての顔画像ｆi+に関して、ｎ次元特徴空間上の対応点がマッピングされる（ｎ＝Nφ）。
【００２９】
ステップＣ１７で、ＣＰＵ１００は、これら２つのクラスの分布（対応点のマッピング結果）に対して線形識別関数としてのＬＤＡを適用し、ｎ次元空間において２つのクラスを分ける超平面を得る。なお、ＬＤＡは、linear discriminant analysisのことである。この超平面の法線ベクトルを（ａ1s,…,ａns）とする。ステップＣ１８で、ＣＰＵ１００は、閾値θsを決定する。閾値θsの決定は、閾値を細かく振っていき、Σａiｂiと閾値の比較によって学習画像を分類した場合に、失敗総数が最小になる値を検索して決定するようにすればよい。なお、失敗総数とは、「顔画像であるのに、非顔画像であると分類された総数」と、「非顔画像であるのに顔画像であると分類された総数」の和である。あるいは、顔画像であるのに、非顔画像であると分類された割合が予め決められた割合に近い閾値の中で非顔画像であるのに顔画像であると分類された総数が最小となるように閾値θsを定めても良い。
【００３０】
ステップＣ１９で、ＣＰＵ１００は、各矩形群φsについて求めた上記θsの中で失敗総数が最も小さいｓを選びｓ’とする。あるいは、非顔画像であるのに顔画像であると分類された総数が最も小さいｓを選んでも良い。このｓ’に対応した（ａ1s’,…,ａns’）とθs’を、それぞれ図５における打ち切り用パラメータ（ａ1,…,ａn）とθとする。こうして、ｎ次元特徴空間の、同一ラベルの対応点が占める特徴空間を分割するパターン識別のためのパラメータが学習される。ここでは、次の式が満たされる側の空間がＦ+、満たされない側がＧ+に対応するものとしている。
【００３１】
【数３】
2009086749.tif 000005
【００３２】
なお、biは対応点のi番目の座標値。もし上記の関係が得られなければ法線ベクトルの符号を反転すればよい。
【００３３】
ステップＣ２０で、ＣＰＵ１００は、今までの処理で得られた顔画像の対応点（ｂjs1f,…,ｂjsnf）の分布をクラスタリングによってｍ個のクラスタに分ける。すなわち、同一ラベルの対応点が複数のクラスタに分けられる。なお、ｍはＮ３のノードに対して予め決められた値である。クラスタ１つが分岐先の１つに対応する。クラスタリングの方法としてはｋ平均法（k-means）などを使うことができる。クラスタリングの結果、全ての顔画像ｆi+がＣ1,…,Ｃmのいずれかのクラスタに対応付けられとする。そこで各分岐先ｋについてステップＣ２１からＣ２４までのループを繰り返す。ループ毎にｋは１つずつ増分されるものとする。ループ内のステップＣ２２で、ＣkとＣk+1∪…∪Ｃmの２つのクラスに属する顔画像に対応した対応点をＬＤＡによって超平面によって分ける。そしてこれによって得られた超平面の法線ベクトルを（ａk1,…,ａkn）として図５の対応する領域に格納する。次にステップＣ２３で、例えば失敗総数が最小となるような閾値θkを決定する。ここで、次の式が満たされる側の空間がＣk、満たされない側をＣk+1∪…∪Ｃmに対応するものとしている。こうして、ステップＣ２１〜Ｃ２４では、同一クラスにラベル付けされた学習データの対応点を更に複数のクラスタへ分離するパターン識別のためのパラメータが学習（分離学習）され、図５の分岐先用のパラメータとして用いられる。
【００３４】
【数４】
2009086749.tif 000006
【００３５】
もしそうでなければ法線ベクトルの符号を反転すればよい。
【００３６】
以上、第１実施形態によれば、比較的計算負荷の軽い処理により入力画像中の顔を検出することができる。ここでは、具体的な例を挙げるために顔を取り上げたが、頭部や自動車など他の物体の検出にも利用することは可能である。非特許文献１のように弱判別器をカスケード接続したような検出器では、早い段階でより多くの非顔を打ち切ることが重要であることが分かっている。本実施形態では、この点を鑑みて、分岐構造を採用するに当たっても打ち切りを目的とした矩形群を選択し、これを分岐のためにも流用する形式を採用している。これにより、高速且つ高精度なパターン認識が実現される。
【００３７】
〔第２実施形態〕
第２実施形態では、入力された画像から特定のテクスチャを持った物体を検出する情報処理装置の例を示す。第２実施形態では、第１実施形態とは異なり、検出対象となる物体は入力画像上の所定の場所に配置されていなくても良い。また第１実施形態では矩形群の集合を予め決めておく必要があったが、第２実施形態では要素の候補となる矩形だけ用意しておき、１つの矩形群に含まれる矩形の数を決めておけば、各ノードが識別処理に用いる矩形群は自動的に生成される。なお、第２実施形態では簡単のために２分木を説明するが、第１実施形態を見れば多分木への応用は容易に想像できるはずである。
【００３８】
第２実施形態に係わる情報処理装置のハードウェア構成は第１実施形態と同じ（図１）である。よって、各部の説明は第１実施形態を参照されたい。
【００３９】
テクスチャを検出する際の処理の流れを表すフローチャートを図８に示す。まずステップＳ２１１で、ＣＰＵ１００は、ハードディスク１０３より画像をＲＡＭ１０２に読み込む。画像はＲＡＭ１０２上では２次元配列として保持される。ステップＳ２１２において、ＣＰＵ１００は、後述する学習方法により作成したパターン識別用パラメータをハードディスク１０３からＲＡＭ１０２に読み込む。ステップＳ２１３において、ＣＰＵ１００は、先に読み込んだパターン識別用パラメータを使用して、ステップＳ２１１で読み込んだ画像内で所定のテクスチャが存在する領域を検索する。ステップＳ２１４において、ＣＰＵ１００は、その検索の結果をディスプレイ１０４に表示する。
【００４０】
図８の処理をデータフロー図として書き表すと図９のようになる。２２５は図１のハードディスク１０３に保存されている画像である。画像の読み込み処理２２１にてハードディスク内の画像２２５がＲＡＭ１０２上に入力画像Ｉとして記憶される（ステップＳ２１１）。２２９は、ハードディスク１０３に保存されているパターン識別用パラメータである。パターン識別用パラメータの読み込み処理２３０にてハードディスク内のパターン識別用パラメータ２２９がＲＡＭ１０２上にパターン識別用パラメータ２３１として記憶される（ステップＳ２１２）。検索処理２２３では、先の入力画像Ｉとパターン識別用パラメータ２３１を使用して、入力画像Ｉの中の所定のテクスチャを探し、所定のテクスチャが存在する位置を２２７の検索結果としてＲＡＭ１０２に書き込む（ステップＳ２１３）。本実施形態では、所定のテクスチャを含まない場合を第１のクラス、所定のテクスチャを含む場合を第２のクラスとする。検索結果２２７は白黒２値の２次元配列である。検索結果表示処理２２４では検索結果２２７の内容をディスプレイ１０４に表示する（ステップＳ２１４）。
【００４１】
図１０にディスプレイ１０４に表示される情報の例を示す。これはあくまでも第２実施形態の動作を説明するための概念図であり、厳密にこのような結果になる訳ではないことを予め断っておく。左側の領域１００１に入力画像Ｉの内容が表示されている。また、右側の領域１００２に検索結果２２７の内容が表示されている。領域１００２の検索結果では、入力画像上の格子模様が存在している領域が黒塗りで表示されている。
【００４２】
図１１は、図８のステップＳ２１３（画像内のパターンを検索する処理）の内容を表すフローチャート図である。ステップＬ０１からＬ０７までのループで、入力画像Ｉ上の各点(x, y)についてステップＬ０２〜Ｌ０６で示される処理が繰り返される。ステップＬ０２において、ＣＰＵ１００は、検出のために入力画像Ｉ上の注目画素としての点(x,y)付近の領域を画像Ｒとして切り出す。その大きさは後に説明する学習画像の大きさと同じである。ステップＬ０３は検出処理である。この検出処理は第１実施形態の図６Ａ，Ｂで示した処理と同様であるが、入力画像Ｉではなく切り出し画像Ｒに対して検出処理が行われる。次に、ステップＬ０４において、ＣＰＵ１００は、ステップＬ０３で検出結果が「真」となったか「偽」となったか（第２のクラスに分類されたか、第１のクラスに分類されたか）を判定する。「真」だった場合にはステップＬ０５へ進み、ＣＰＵ１００は、検索結果２２７の(x,y)成分（注目画素）に「黒」を書き込む。一方、ステップＬ０４で「偽」と判定された場合には、処理はステップＬ０６へ進み、ＣＰＵ１００は検索結果２２７の(x,y)成分（注目画素）に「白」を書き込む。このようにして、検索結果２２７として「白」あるいは「黒」が書き込まれた画像が得られる。
【００４３】
次に第２実施形態の学習手順を説明する。第２実施形態のパターン識別用パラメータ２３１の内容は第１実施形態の図４と図５で示したものと同じ構造を持つ。学習に使用する画像の例を図１２に示す。学習に使用する画像の寸法は全て統一されている。これらは検出したいパターンを表す。逆に検出しないパターンには図１０の領域１００１の入力画像の背景から切り出したようなものを使用する。
【００４４】
検出したいパターンを含む学習画像をｐj、その集合をＰ= {ｐj | j =１,…,Np}とする。また検出したいパターンを含まない学習画像をｑj、その集合をＱ={ｑj | j =１,…,Nq}とする。また、図５の矩形座標(xiL, yiT)、(xiR,yiB)で表される矩形をｒi、その集合をＲ= {ｒi | i =１,…,Nr}とする。更に、図４のツリー構造は予め決められており、パラメータを確保するためのメモリがＲＡＭ１０２上に確保されているものとする。このとき、図５の各ポインタ値も確定しており、格納しておくことができる。また、図４においてＴ１と記されているノードからＮ３と記されているノードの直前までの学習が済んでいるものとする。
【００４５】
前述した検出の処理を適用すると、Ｎ３までのノードで学習画像のいくつかは検出したいパターンがないものとして棄却（打ち切り）されたり、タイプＴ２のノードによって他の分岐先に振り分けられたりすることになる。そこで、Ｎ３のノードでは、それまでに棄却されたり他の分岐先に振り分けたりしないパターン画像ｐi+の集合Ｐ+= {ｐj+| j =１..Np+}と非パターン画像ｑj+の集合Ｑ+={ｑj+ | j =１..Nq+}を学習に利用する。
【００４６】
図１３に第２実施形態による学習時のフローチャートを示す。第２実施形態の学習は、
・仮の矩形群を用いて学習データを仮マッピングしてパラメータを学習し、使用すべき矩形群を抽出する第１マッピング処理及び第１学習処理と、
・抽出された矩形群を用いて学習データをマッピングしてパラメータを学習する第２マッピング処理及び第２学習処理を含む。
【００４７】
ステップＴ０１からＴ０８までの処理で、第１マッピング処理及び第１学習処理により、分岐先を決めるのに有効と推定される矩形群が選定される。そして、ステップＴ１０からＴ１８までの処理で、第２マッピング処理及び第２学習処理により、打ち切りのためのパラメータが決定される。最後のステップＴ２１からＴ２４において各分岐先のためのパラメータが決定される。以下、個々のステップの説明を行う。
【００４８】
まず、ステップＴ０１からＴ０７までのループを、集合Ｐ+内の各パターン画像ｐi+について繰り返す。その中のステップＴ０３からＴ０５までのループは、集合Ｒ内の各矩形ｒiについて繰り返される。ループ内のステップＴ０４において、２次元配列の要素ｂjipに、パターン画像ｐi+上の矩形ｒi内の輝度値の平均値を格納する。第１実施形態と異なり、輝度値をピクセル数で正規化した値（平均輝度）を使っていることに注意されたい。これにより、画素単位での差異を吸収できる。なお、上記処理におけるマッピングは、実際に使用する矩形群を選択するための仮のマッピングである。すなわち、ステップＴ０１〜Ｔ０７の処理は、
・Ｐ+に属する画像データ（第１のクラスにラベル付けされた学習データ）からＮr個の矩形画像を抽出して（Ｎrは１以上の整数とする）特徴量（平均輝度）を求め、
・Ｎr次元特徴空間に対応点を仮マッピングする処理（第１マッピング）である。
【００４９】
次にステップＴ２０において、ＣＰＵ１００は、先のループで求めたＮr次元ベクトル（ｂj1p,…, ｂjNrp）の分布を複数のクラスタにクラスタリングする。すなわち、仮マッピングされた対応点のＮr次元特徴空間における分布に基づき、Ｎr次元特徴空間を分割するパターン識別のための仮パラメータが学習される（第１学習）。本例では、２分木を生成するので２つ（ｍ＝２）のクラスタにクラスタリングする。クラスタリングの方法としてk-meansを使うことができる。また、ベクトル同士の距離を求めるためにユークリッド距離を使用するのが自然であるが、例えば他のミンコフスキー計量(Minkowskimetric)を使用しても良い。すると、集合Ｐ+内の全てのパターン画像がクラスタ（Ｃ1あるいはＣ2）に割り当てられるので、ＳＶＭ（supportvector machine）などで２つのクラスタを分離する超平面が得られる。その超平面のＮr次元法線ベクトルを（ａ1p,…,ａNrp）とする。ここで、自然数ｄと実数ｕ（ｕ≧０）をノードＮ３のために予め決められた定数であるとする。
【００５０】
ステップＴ０８において、ＣＰＵ１００は、先の法線ベクトルの要素を絶対値の大きい方から選び、選ばれた要素の和がｕ以下でかつ−ｕ以上あるいはその個数がｄになればそこで止める。そして、選ばれた要素{ａip}に対応する矩形{ｒi}を選ぶ。こうしてｎ個の矩形が選択されたとすれば、これらを矩形群φ= {ｒiφ | i=１,…,n}とする。以上のように、ステップＴ２０，Ｔ０８では、仮マッピングに基づいて得られた仮パラメータにより、当該ノードが識別処理に用いるべきｎ次元特徴空間が決定される。
【００５１】
次に、ステップＴ１０からＴ１６のループを、集合Ｑ+内の各非パターン画像ｑj+について繰り返す。その中のステップＴ１２からＴ１４までのループで、先の選択された矩形群φ内の各矩形ｒiφについて繰り返す。ステップＴ１３で、２次元配列の要素ｂjiqに、非パターン画像ｑj+上の矩形ｒiφ内の輝度値の総和を代入する。すなわち、ステップＴ１０〜Ｔ１６の処理は、Ｑ+に属する画像データ（第２のクラスにラベル付けされた学習データ）を、ｎ次元特徴空間の対応点にマッピングする処理（第２マッピング）である。
【００５２】
そして、ステップＴ１７でＳＶＭにより（ｂj1p,…, ｂjnp）の分布と（ｂj1q,…, ｂjnq）の分布を分ける超平面を計算する。こうして得られた超平面の法線ベクトルを（ａ1,…,ａn）として図５の対応する領域（打ち切り用パラメータ）に格納する。すなわち、マッピングされた対応点のｎ次元特徴空間における分布に基づき、ｎ次元特徴空間を分割するパターン識別のためのパラメータが学習され、打ち切り用パラメータとして格納される（第２学習）。また、ステップＴ１８で第１実施形態と同じように、打ち切り用パラメータの閾値θを決定する。以上のように、ステップＴ１０〜Ｔ１８によれば、第２のクラスにラベル付けされた学習データとしての非パターン画像ｑj+がｎ次元特徴空間上の対応点としてマッピングされる。そして、マッピングされた対応点の分布に基づき、ｎ次元特徴空間を分割するパターン識別のためのパラメータが学習される。
【００５３】
ステップＴ２１からＴ２４までの処理は第１実施形態、図７でのステップＣ２１からＣ２４と同様である。ただし、ＬＤＡの代わりにＳＶＭを使った例となっている。また、クラスタリングによるクラスタ数は２（ｍ＝２）である。
【００５４】
以上、本実施形態により、比較的計算負荷の軽い処理により入力画像中の所定のパターンを検索することができる。人間にとって同じように見えるパターンも傾きが異なれば画素同士の比較では違いが大きい。本実施形態によれば、矩形群を予め決めておかない教師なし学習と分岐型の検出器を使ってこの違いを吸収することが可能となる。
【００５５】
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００５６】
尚、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したコンピュータプログラムである。
【００５７】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００５８】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【００５９】
コンピュータプログラムを供給するためのコンピュータ読み取り可能な記憶媒体としては以下が挙げられる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などである。
【００６０】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００６１】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
【００６２】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどとの協働で実施形態の機能が実現されてもよい。この場合、ＯＳなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【００６３】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行なう。
【図面の簡単な説明】
【００６４】
【図１】第１実施形態に係わる情報処理装置のハードウェア構成例を説明するブロック図である。
【図２】第１実施形態による、顔の検出処理の流れを表すフローチャートである。
【図３】図２に示される顔の検出処理をデータフロー図として書き表した図である。
【図４】第１実施形態のパターン識別用パラメータの構造を表した図である。
【図５】タイプＴ２のノードのデータ構造を表す図である。
【図６Ａ】図２のステップＳ２０３の詳細を表すフローチャートである。
【図６Ｂ】図２のステップＳ２０３の詳細を表すフローチャートである。
【図７】第１実施形態における学習の手順を示すフローチャートである。
【図８】第２実施形態による、テクスチャの検出処理の流れを表すフローチャートである。
【図９】図８に示されるテクスチャの検出処理をデータフロー図として書き表した図である。
【図１０】第２実施形態によるテクスチャ検出処理の結果の、ディスプレイへの表示例を示す図である。
【図１１】図８のステップＳ２１３の内容を表すフローチャート図である。
【図１２】第２実施形態において学習に使用される画像の例を示す図である。
【図１３】第２実施形態における学習の手順を示すフローチャートである。
【図１】
2009086749.tif 000007
【図２】
2009086749.tif 000008
【図３】
2009086749.tif 000009
【図４】
2009086749.tif 000010
【図５】
2009086749.tif 000011
【図６Ａ】
2009086749.tif 000012
【図６Ｂ】
2009086749.tif 000013
【図７】
2009086749.tif 000014
【図８】
2009086749.tif 000015
【図９】
2009086749.tif 000016
【図１０】
2009086749.tif 000017
【図１１】
2009086749.tif 000018
【図１２】
2009086749.tif 000019
【図１３】
2009086749.tif 000020