説明

パターン検出器の学習装置、学習方法及びプログラム

【課題】
高い検出性能のパターン検出器を現実的な学習時間で構築できるようにしたパターン検出器の学習装置、学習方法及びプログラムを提供する。
【解決手段】
複数の弱判別器から構成され、複数の弱判別器による判別により入力データから特定パターンを検出するパターン検出器の学習装置であって、特定パターンを含むか否かが既知であるデータから構成される複数の学習用データを取得し、当該取得した学習用データから特定パターンを検出させることにより複数の弱判別器を学習させ、当該学習が済んだ弱判別器の中から合成対象となる複数の弱判別器を選択するとともに、当該選択された複数の弱判別器を合成した場合の合成後の弱判別器の性能と複数の弱判別器の性能との比較に基づき複数の弱判別器を1つに合成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の判別器による判別により入力データから特定パターンを検出するパターン検出器の学習装置、学習方法及びプログラムに関する。
【背景技術】
【0002】
従来、入力されたデータから特定パターン(例えば、文字や人間の顔など)を検出するパターン検出手法が提案されている。また、処理の高速化や検出精度の向上を目的とした手法も数多く提案されている。
【0003】
このような技術に関連して、非特許文献1では、短時間で演算が可能な弱判別器を多数カスケード接続し、Adaboostに代表される集団学習(アンサンブル学習)法と組み合わせてパターン検出を行なう技術が提案されている。非特許文献1の弱判別器は、Haar基底に基づいた矩形フィルタと呼ばれる、矩形内領域の平均輝度値の差を求めるフィルタを内部に持つ。そして、この矩形フィルタによって求めた矩形領域内の平均輝度差を特徴量として、所定の閾値と比較することにより対象が検出すべきパターンであるか判定する。
【0004】
最終的なパターン検出器は、上述した弱判別器を多数組み合わせて構成される。非特許文献1では、複数の弱判別器出力の重み付き総和をその出力としている。その構成方法には、アンサンブル学習(集団学習)と呼ばれる学習アルゴリズムが用いられる。アンサンブル学習の代表的なアルゴリズムがAdaboostである。Adaboostは、学習用サンプルに重みを設定し、1つの弱判別器の学習が終わると、次の弱判別器の学習を行なう。この次の弱判別器の学習では、前の弱判別器では判別が難しかったサンプルの重みが大きくなるように、データの重みを逐次更新していく。また、各弱判別器には、それぞれその判別能力を示す信頼度が定義されている。この信頼度は、例えば、学習時における学習用サンプルに対する誤り率などに基づき決定される。
【非特許文献1】Viola & Jones (2001) "Rapid Object Detection using a Boosted Cascade of Simple Features", Computer Vision and Pattern Recognition.
【非特許文献2】C. Huang, H. Ai, Y. Li, S. Lao (2006) "Learning Sparse Features in Granular Space for Multi-View Face Detection", Proceedings of the IEEE International Conference of Automatic Face and Gesture Recognition, pp. 401-406.
【特許文献1】特開2005−44330号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上記のような、多数の弱判別器により構成されるパターン検出器を構築する場合、その学習に膨大な時間がかかってしまう。上述した通り、弱判別器が学習する際には、学習用サンプルに対してパターン検出を行ない、その検出性能を評価するプロセスが存在する。高性能な検出器を構築しようとすると、弱判別器の表現を複雑にする必要があり、評価する弱判別器候補の数が膨大になる。従って、上記プロセスを繰り返す回数も膨大となってしまう。
【0006】
このような問題に対して、特許文献1では、予め用意した弱判別器候補を評価しておき、その中で高い性能を示した候補の中から、いくつかを所定の方法で更新し、最も高い性能を示したものを弱判別器として採用する方法が提案される。
【0007】
また、非特許文献2では、弱判別器の初期候補として、Haar基底を与えている。これに3種類(展開、付加、消滅)の規定された発展演算子を定義し、これを弱判別器に作用させることで弱判別器を発展させている。すなわち、非特許文献2では、評価関数として、検出性能と弱判別器の複雑度を考慮した関数とを採用し、検出性能だけでなく、検出時間をも考慮した上で総合的に高い性能を示す弱判別器を探索する方法が提案される。
【0008】
本発明は、上記課題に鑑みてなされたものであり、高い検出性能のパターン検出器を現実的な学習時間で構築できるようにしたパターン検出器の学習装置、学習方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明の一態様は、複数の弱判別器から構成され、該複数の弱判別器による判別により入力データから特定パターンを検出するパターン検出器の学習装置であって、前記特定パターンを含むか否かが既知であるデータから構成される複数の学習用データを取得する取得手段と、前記取得手段により取得された学習用データから前記特定パターンを検出させることにより前記複数の弱判別器を学習させる学習手段と、前記学習手段による学習が済んだ弱判別器の中から合成対象となる複数の弱判別器を選択する選択手段と、前記選択手段により選択された複数の弱判別器を合成した場合の合成後の弱判別器の性能と該複数の弱判別器の性能との比較に基づき該複数の弱判別器を1つに合成する合成手段とを具備することを特徴とする。
【0010】
また、本発明の一態様は、複数の弱判別器から構成され、該複数の弱判別器による判別により入力データから特定パターンを検出するパターン検出器の学習方法であって、前記特定パターンを含むか否かが既知であるデータから構成される複数の学習用データを取得する取得工程と、前記取得された学習用データから前記特定パターンを検出させることにより前記複数の弱判別器を順番に学習させる学習工程と、前記学習が済んだ弱判別器の中から合成対象となる複数の弱判別器を選択する選択工程と、前記選択された複数の弱判別器を合成した場合の合成後の弱判別器の性能と該複数の弱判別器の性能との比較に基づき該複数の弱判別器を1つに合成する合成工程と含むことを特徴とする。
【0011】
また、本発明の一態様によるプログラムは、複数の弱判別器から構成され、該複数の弱判別器による判別により入力データから特定パターンを検出するパターン検出器の学習装置に内蔵されたコンピュータを、前記特定パターンを含むか否かが既知であるデータから構成される複数の学習用データを取得する取得手段、前記取得手段により取得された学習用データから前記特定パターンを検出させることにより前記複数の弱判別器を順番に学習させる学習手段、前記学習手段による学習が済んだ弱判別器の中から合成対象となる複数の弱判別器を選択する選択手段、前記選択手段により選択された複数の弱判別器を合成した場合の合成後の弱判別器の性能と該複数の弱判別器の性能との比較に基づき該複数の弱判別器を1つに合成する合成手段として機能させる。
【発明の効果】
【0012】
本発明によれば、弱判別器の取り得る表現を複雑にしても、弱判別器の学習を高速に行なえる。これにより、高い検出性能のパターン検出器を現実的な学習時間で構築できることになる。
【発明を実施するための最良の形態】
【0013】
以下、本発明に係わるパターン検出器の学習装置、学習方法及びプログラムの実施形態について添付図面を参照して詳細に説明する。
【0014】
(実施形態1)
図1は、本実施形態に係わるパターン検出器の学習装置100の構成の一例を示すブロック図である。
【0015】
パターン検出器は、1又は複数の弱判別器から構成される。弱判別器各々は、入力データから特定パターン(例えば、文字や人間の顔など)を検出する。特定パターンの検出は、例えば、入力データの所定領域から特徴量を抽出し、当該抽出した特徴量に基づき当該所定領域が検出すべき特定パターンであるか判定することにより行なわれる。
【0016】
ここで、学習装置100は、学習用データを用いて弱判別器を学習させ、その結果として1又は複数の弱判別器から構成されるパターン検出器を構築する。学習装置100は、学習用データ取得部1、学習部2、選択部3、合成部4、性能評価部5、統計情報保持部6を含んで構成される。また、学習装置100には、学習の状態をモニタリングするためのモニタリング部7、各構成要素の制御・データ接続を行なうためのバス8を含む。学習用データ取得部1、学習部2、選択部3、合成部4、性能評価部5、統計情報保持部6は、例えば、ASIC(Application Specific Integrated Circuit)等の専用回路群で構成される。また、これら構成要素は、例えば、プロセッサ(リコンフィギュラブルプロセッサ、DSP(Digital Signal Processor)、CPUなど)で構成されてもよい。更に、単一の専用回路や汎用回路(例えば、CPU)により実行されるプログラムとして実現されてもよい。
【0017】
学習用データ取得部1は、学習用データ(学習用サンプル、評価サンプル)を取得する。学習用データには、例えば、検出すべき特定パターンであるか否か等を示すラベルが予め付与されている。すなわち、学習用データは、特定パターンを含むか否かが既知であるデータから構成される。学習用データ取得部1は、例えば、不図示であるHDD(Hard Disk Drive)やDVD、CD−ROM等の光学メディアなどのメモリ上から学習用データを読み出し、所定のタイミングで学習用データを必要とする構成要素に供給する。
【0018】
学習部2は、弱判別器に学習を行なわせる。ここで言う、弱判別器は、非特許文献1に記載されているようなHaar基底をベースとするタイプの弱判別器でもよいし、より複雑な表現や内部状態値を持つものであってもよい。
【0019】
選択部3は、複数の弱判別器の中から合成の対象となる弱判別器を選択する。選択基準の詳細及びその処理の詳細については後述する。
【0020】
合成部4は、選択部3によって選択された複数の弱判別器を1つの弱判別器に合成する。合成の詳細及びその処理の詳細については後述する。
【0021】
性能評価部5は、弱判別器の性能評価を行なう。性能評価部5は、例えば、弱判別器と学習用サンプルとを学習部2から受け取り、弱判別器単体又は既に学習済みの弱判別器と接続した状態における弱判別器の性能評価を行なう。この性能評価では、例えば、合成部4によって合成された新規弱判別器単体の性能評価も行なわれる。また更に、複数の弱判別器から構成される検出器全体としての性能評価も行なわれる。
【0022】
ここで、性能評価の基準としては、評価データに対する検出率や誤検出率、検出時間などの他、打ち切り率が挙げられる。打ち切り率は、顔でないサンプルに対して途中で演算を打ち切った回数や、顔であるサンプルに対して途中で演算を打ち切って顔であると判定するまでの回数から求められる。この打ち切り率の評価は、例えば、後述する弱判別器の合成処理に際して参照される。
【0023】
学習済みの弱判別器単体の性能評価には、学習用データ取得部1により読み出された学習用サンプルを用いる。学習用サンプルを評価する場合、検出性能は、単純な検出率ではなく、学習用サンプルに対して予め与えられている重みを用いて重み付き検出率を求めるようにしてもよい。このようにすることで検出が難しい(重み付けが大きい)サンプルを重視した検出性能評価を行なうことができる。同様に、検出時間についても、学習用サンプルごとの重み係数を用いた重み付け検出時間を求めるようにしてもよい。また、性能評価専用の評価用サンプルを用意してもよい。評価用サンプルは、学習用サンプルと同様に、予め検出対象であるか否かのラベル付けが施されている。
【0024】
統計情報保持部6は、学習部2及び合成部4で生成された弱判別器の統計情報を取得しその結果を保持する。統計情報や取得処理については後述する。
【0025】
モニタリング部7は、学習の予想終了時刻などを示す進行状態や、その時点での検出性能などを示すステータス等を含む情報の表示を行なう。モニタリング部7は、例えば、CRT(Cathode Ray Tube)やTFT(Thin Film Transistor)液晶などのモニタで構成される。また、接続バス8は、上述した構成要素間の制御・データ接続を行なうためのバスである。
【0026】
以上が、学習装置100の構成の一例についての説明である。なお、上記説明した、学習装置100には、1又は複数のコンピュータが組み込まれている。コンピュータには、CPU等の主制御手段、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)等の記憶手段が具備される。また、コンピュータにはその他、キーボード、マウス、ディスプレイ又はタッチパネル等の入出力手段、ネットワークカード等の通信手段等も具備される。なお、これら各構成手段は、バス等により接続され、主制御手段が記憶手段に記憶されたプログラムを実行することで制御される。
【0027】
<全体フロー>
図2は、図1に示す学習装置100における全体処理の一例を示すフロー図である。図2を参照しながら、学習装置100が学習用データから特定パターンを検出する検出器を構築する際の処理の流れについて説明する。なお、以下では、学習用データが画像であり、検出する特定パターンが人物の顔である場合を例に挙げて説明する。
【0028】
学習装置100は、まず、学習用データの重みを初期化する(ステップS00)。重みの初期値は、例えば、全ての学習用データが均等に選択されるように、一様な値を割り当ててやればよい。また、検出が困難だと思われる学習用データを予め選別しておいて、初期化段階ではこれらが選択される確率が低くなるようにしておいてもよい。学習用データは、複数のデータから構成され、そのデータには、特定パターンを含むデータもあれば、含まないデータもある。より具体的には、人物の顔(正解データ)や、人物の顔以外のデータ(非正解データ)を含む複数のデータである。学習用データにはそれぞれ、予め顔であるか否か(正解・不正解)のラベル付けがなされている。なお、ラベルには、その属性を示す値、例えば、大きさや向きなどの情報が保持されていてもよい。
【0029】
続いて、学習装置100は、弱判別器学習処理を行なう(ステップS01)。ここで、弱判別器の候補選択から弱判別器の閾値決定までの一連の処理が行なわれ、1つの弱判別器が学習・生成されることになる。なお、弱判別器の学習には、公知の技術を用いればよいため、ここでは詳しい説明については省略する。例えば、非特許文献1や非特許文献2に記載されているような、Adaboostを用いた弱判別器学習方法に従って学習を行えばよい。
【0030】
弱判別器の学習、生成が済むと、学習装置100は、当該生成された弱判別器の性能評価を行なう(ステップS02)。具体的には、既に学習済みの弱判別器に当該生成された弱判別器を接続した場合における特性評価値を性能評価値として求める。この処理では、例えば、弱判別器に学習用データを検出させ、その検出結果に基づいて弱判別器の評価を行なう。この評価では、学習用データの正解・不正解ラベルに基づいて顔画像に対する正解率や非顔画像に対する誤検出率の評価を行なうことになる。評価に用いるサンプルは、学習用データを用いてもよいが、予め用意したラベル付けされた評価用データセットを用いてもよい。また、正解率・誤検出率の他に、検出時間(検出速度)の評価を行なってもよい。更に、顔でないサンプルに対して顔でないとして演算を打ち切る割合(打ち切り率)を評価の基準としてもよい。反対に、顔サンプルに対して顔であるとして以後の演算を打ち切る、打ち切り率を評価に加えてもよい。なお、複数の弱判別器を接続した性能だけでなく、ステップS01で新たに生成された弱判別器単体の性能を評価するようにしてもよい。この場合には、学習用サンプルではなく、評価用サンプルを用いるようにするとよい。
【0031】
弱判別器の性能評価が終わると、学習装置100は、ステップS01で生成された弱判別器の統計情報を取得する(ステップS03)。具体的には、ステップS02で取得した弱判別器の検出性能を示す特性評価値に係わる統計的な情報を取得する。統計的な情報としては、例えば、評価サンプルに対する重み付き誤り率や、平均的な検出時間とその分散度合いなどを取得する。また、弱判別器のフィルタ構造や閾値等のパラメータ群などの弱判別器自体に関する情報を取得してもよい。この他、弱判別器の学習に用いた学習用データの重み付けベクトルや、選択された弱判別器以外で性能が高かった上位数個の弱判別器候補の弱判別器構造情報などを取得してもよい。なお、弱判別器の構造情報についての具体的な説明については後述する。学習装置100では、これら取得した情報を統計情報保持部6に保持する。
【0032】
続いて、学習装置100は、ステップS01で生成された弱判別器の性能が所定条件を満たしているか判定を行なう(ステップS04)。所定条件を満たしていない場合には(ステップS04でNo)、ステップS01に戻り、新しい弱判別器の学習を繰り返す。なお、所定条件としては、例えば、生成された弱判別器の個数が所定数に達したか否か、学習用サンプル又は評価用サンプルに対する検出性能が所定の基準に達したか否か、などが挙げられる。
【0033】
ここで、ステップS04における所定条件を満たしている場合(ステップS04でYes)、学習装置100は、新しい弱判別器の学習を終了する。そして、合成対象となる弱判別器を複数選択し(ステップS05)、その選択した弱判別器を合成する(ステップS06)。この弱判別器の合成処理では、複数の弱判別器が、所定の条件の下、1又は所定個数以下の弱判別器にまとめられる。なお、具体的な合成処理の手順等については後述する。
【0034】
合成処理が済むと、学習装置100は、所定条件を満たすか否かの判定を行なう(ステップS07)。所定条件としては、例えば、弱判別器の個数や、新たに合成された弱判別器と既存の合成・接続された検出器とを接続した場合の全体としての検出器の性能が、所定値に達しているかどうか、などが挙げられる。所定条件を満たしていない場合には(ステップS07でNo)、ステップS05の弱判別器選択処理に戻り、弱判別器の選択、合成のプロセスを繰り返す。所定条件を満たしている場合(ステップS07でYes)、学習装置100は、この処理を終了する。以上が、本実施形態に係わる学習装置100における全体処理フローである。
【0035】
<弱判別器学習処理>
ここでは、図2に示すステップS01における弱判別器学習処理について説明する。なお、ここで説明する処理は、概ね公知の技術であるため、本実施形態に関連する部分以外についての説明は適宜省略する。図3は、学習部2の構成の一例を示すブロック図である。
【0036】
学習部2は、候補保持部21、候補選択部22、学習用データ保持部23、信頼度算出部24、打ち切り閾値算出部25、学習用データ重み更新部26を含んで構成される。
【0037】
候補保持部21は、弱判別器の候補を保持する。すなわち、弱判別器のフィルタ構造を保持している。非特許文献1に記載されているようなHaar基底によるフィルタ構造や、非特許文献2に記載されているような、より高次元で複雑なフィルタ構造を複数保持する場合もある。なお、それらの組み合わせでもよい。また、予め用意されたフィルタ構造を保持するのではなく、フィルタ候補の問い合わせを受けて、動的にフィルタ構造を生成してもよい。フィルタ構造の生成は、例えば、非特許文献2に記載される方法を採用してもよいし、ランダムに生成するようにしてもよい。
【0038】
候補選択部22は、候補保持部21に保持された弱判別器の候補の中から弱判別器の候補を選択する。学習用データ保持部23は、学習用データ重み更新部26によって重み付けされた学習用データを保持する。学習用データ保持部23は、この保持した学習用データを重みデータとともに候補選択部22に転送する。
【0039】
信頼度算出部24は、後述する性能評価部5及び統計情報保持部6からの出力を受け取り、弱判別器の信頼度、すなわち、複数の弱判別器を接続した場合における弱判別器の信頼度を算出する。
【0040】
打ち切り閾値算出部25は、弱判別器の打ち切り閾値、すなわち、弱判別器に処理を実行させずに途中で演算を打ち切るための閾値を算出する。また、学習用データ重み更新部26は、信頼度算出部24により算出された弱判別器の信頼度をもとに、学習用データの重み付けを更新する。
【0041】
図4は、図2に示すステップS01における弱判別器学習処理の一例を示すフロー図である。この処理は主に、学習部2で行なわれる。
【0042】
学習装置100は、学習部2において、まず、学習用データ取得部1から学習用データを取得(受け取る)する(ステップS10)。学習用データは、予め所定の重み付けがなされている。なお、弱判別器の最初の学習時には、その重み付けは一様分布にするとよい。すなわち、次の(数式1)で与えられる重み付けを与えてやる。
【0043】
【数1】

【0044】
ここで、学習用データの重みW(n)は、i=1番目の弱判別器に対する学習用データD(=D・・・D)の重み付けを表す。Nは全ての学習用データの数である。
【0045】
続いて、学習装置100は、候補選択部22において、弱判別器の候補を選択する(ステップS11)。ここで、弱判別器の具体的なフィルタ構造やフィルタ出力値に対する閾値が決定される。また、次の(数式2)によって計算されるi番目の弱判別器の重み付き誤り率も算出される。
【0046】
【数2】

【0047】
(数式2)の不正解サンプルとは、弱判別器が、判定を誤ったデータのことを意味する。(数式2)によれば、重み付き誤り率εは、学習用データのうち、弱判別器の判定が誤っていたものの学習用データの重みW(n)のみを足し合わせる。従って、学習用データのうち、重みの大きい学習用データの判定を間違えると、重み付き誤り率εの値が大きくなる。
【0048】
弱判別器の候補の選択が済むと、学習装置100は、信頼度算出部24において、ステップS11で選択された弱判別器の重み付き誤り率から弱判別器の信頼度を算出する(ステップS12)。弱判別器の信頼度は、(数式3)によって算出される。
【0049】
【数3】

【0050】
(数式3)によれば、重み付き誤り率が小さければ小さいほど、その弱判別器の信頼度が大きくなることがわかる。
【0051】
次に、学習装置100は、打ち切り閾値算出部25において、打ち切り閾値Cを算出する(ステップS13)。例えば、学習用データのうち、検出対象データ(この場合は、顔データ)に対する全フィルタ出力値と、弱判別器のフィルタ出力値の閾値とのうち、最も小さい値を打ち切り閾値Cとして算出する。このようにすることによって、少なくとも検出対象データ(顔データ)に対する演算が打ち切られることのないようにできる。また、重みの大きな学習用データが打ち切られないように打ち切り閾値を設定するようにしてもよい。すなわち、全ての検出対象データに対してフィルタ出力値の最小値を求めるのではなく、重み付けがある値より大きい学習用データに対してだけフィルタ出力値の最小値を求めるようにすればよい。
【0052】
次に、学習装置100は、学習用データ重み更新部26において、学習用データの重み付けを更新する(ステップS14)。ステップS12で求めた弱判別器の信頼度を用いて、(数式4)によって、次の弱判別器を求める際に必要な学習用データの重み付けを求めることができる。
【0053】
【数4】

【0054】
ここで、Ziは、以下の(数式5)で与えられる規格化因子である。
【0055】
【数5】

【0056】
和はそれぞれ、弱判別器による判定結果が正解、不正解である学習用データに対して別々にとる。(数式4)によれば、不正解であった学習用データの重みが、次の弱判別器の学習用データでは、大きくなることが分かる。また、現在の弱判別器の信頼度が大きいほど、重み付けはより小さくなることが分かる。
【0057】
ここで、図5を用いて、図4に示すステップS11における弱判別器候補選択処理について説明する。
【0058】
学習装置100は、候補選択部22において、まず、弱判別器の候補、より具体的には、フィルタ候補の選択を行なう(ステップS20)。フィルタ候補は、候補保持部21からランダムに取得すればよい。また、既に学習済みの弱判別器で選択されたフィルタを重複して選択しないように、該当するフィルタを予め候補から除いた中から選ぶようにしてもよい。候補保持部21には、予め構成可能な全ての組み合わせについてフィルタを用意しておいてもよいが、数が非常に膨大になるので、ある程度絞り込んだものを保持しておくとよい。絞り込む際の基準としては、例えば、非特許文献2に記載されているような、フィルタ構造の距離を利用することができる。すなわち、所定の距離より近いフィルタが同時に選ばれないようにすることによって、調査対象となる弱判別器のフィルタを大幅に減らすことができる。また、後段の処理でフィルタの合成処理を行なうため、ここで探索するフィルタ候補は比較的単純なものを対象としてもよい。比較的単純なフィルタ構造に限定することによって、探索するフィルタの数を大幅に減らすことが可能になる。フィルタ構造の単純さの定義は、公知の技術を使うことができる。単純に矩形の数によって定義してもよいし、特許文献2に記載されているような定義を用いてもよい。
【0059】
次に、学習装置100は、候補選択部22において、ステップS20で選択されたフィルタを用いて、全学習用データにおけるフィルタの出力値(以下、特徴量と呼ぶ)を算出する(ステップS21)。この特徴量の算出は、例えば、非特許文献1や特許文献1に記載されている方法を用いればよい。
【0060】
続いて、学習装置100は、候補選択部22において、ステップS21で算出した特徴量と学習用データの重み付けとからヒストグラムを求める(ステップS22)。ここでは説明を簡単にするため、特徴量が1次元である場合について説明する。ヒストグラムは、一方の軸が特徴量、すなわち学習用データに対するフィルタ出力値であり、もう一方の軸は、学習用データの重みを加算した値になる。これらを検出対象データ(顔データ)と非検出対象データ(非顔データ)とで別々にして累積重みを算出する。
【0061】
図6は、ヒストグラムの一例を表した模式図である。横軸がフィルタの出力値で縦軸が累積重みである。図中32の曲線が顔データの累積重みの分布を表し、同様に図中33は非顔データの累積重みの分布を表している。仮に図中34のように閾値Thを定めると、重み付き誤り率は図中35の斜線領域の面積に等しくなる。閾値Thをさまざまに動かして図中35の斜線領域の面積が最も小さくなる閾値Thを求める。同時に、閾値を決定した際の重み付き誤り率を記憶・保持しておく。以上のように、特徴量と学習用データの重みについてのヒストグラムに基づいてフィルタ出力値に対する閾値を算出することができる。
【0062】
閾値を決定した後、学習装置100は、候補選択部22において、所定条件を満たしているか判定する(ステップS24)。ここで、所定条件とは、探索したフィルタ候補の数が所定の数に達したか、予め設定した重み付き誤り率を達成したか、などが挙げられる。
【0063】
フィルタ候補の探索が終わった後、それらの中から最も優れた性能を示す弱判別器を選別する(ステップS25)。例えば、最も低い重み付き誤り率を達成した弱判別器を選べばよい。また、重み付き誤り率とともに、弱判別器のフィルタ構造の単純さを評価に取り入れた評価関数を定義し、その評価関数が最もよい値となる弱判別器を選択してもよい。
【0064】
<弱判別器選択処理>
ここでは、図2に示すステップS05における弱判別器選択処理について説明する。弱判別器選択処理では、所定の条件に基づいて合成の対象となる弱判別器を選択する処理が行なわれる。
【0065】
図7は、選択部3の構成の一例を示すブロック図である。選択部3は、統計情報バッファ41、類似度基準選択部42、性能基準選択部43、統合判定部44を含んで構成される。
【0066】
統計情報バッファ41は、統計情報保持部6から弱判別器の統計情報を取得し、それを一時的に保持しておくメモリ領域である。類似度基準選択部42は、弱判別器間の類似度を算出し、その結果に基づいて弱判別器を選択する。性能基準選択部43は、弱判別器の特性評価値、すなわち、性能に基づいて弱判別器を選択する。統合判定部44は、類似度基準選択部42及び性能基準選択部43の結果を統合して合成対象となる弱判別器を最終的に選択する。
【0067】
図8は、図2に示すステップS05における弱判別器選択処理の一例を示すフロー図である。この処理は主に、選択部3で行なわれる。
【0068】
学習装置100は、選択部3において、始めに、統計情報バッファ41から弱判別器の統計情報を取得する(ステップS30)。次に、類似度及び性能の算出対象となる弱判別器を選択する(ステップS31)。これは、学習済みの弱判別器を選べばよい。そして、学習装置100は、類似度基準選択部42において、ステップS31で選択した弱判別器と、他の学習済み弱判別器との全ての組み合わせについて類似度を算出する(ステップS32)。
【0069】
ここで、弱判別器間の類似度は、次のようにして求める。図9は、弱判別器フィルタ構造の模式図である。図9のフィルタは、12×12の2次元格子で表現されている。例えば、黒く塗りつぶされている格子は、フィルタ係数が−1、斜線部は+1、それ以外は0であるとする。この2次元格子で表現されるフィルタを1次元ベクトルとして表現することにより、弱判別器フィルタ間の類似度を2つのベクトル間の内積として定義することができる。また、同様に2つのベクトル間のユークリッド距離として定義することもできる。更に一般的な距離として、ミンコフスキー距離を定義として用いてもよい。また、非特許文献2に記載されているような、ハウスドルフ距離を定義として用いてもよい。
【0070】
続いて、学習装置100は、性能基準選択部43において、ステップS31で選択した弱判別器の特性評価値、すなわち、性能を取得する(ステップS33)。ここで取得する弱判別器の性能は、例えば、学習用データに対する重み付き誤り率や、打ち切り率、などが挙げられる。また、検出時間(処理時間)を用いてもよいし、処理時間を計測せずに弱判別器のフィルタ構造を用いてもよい。弱判別器のフィルタ構造が複雑になると、検出にかかる処理時間が増加するので、フィルタ構造の複雑化は処理時間の増加と同等の意味を持つ。フィルタ構造は、検出時間と異なり処理系に依存しないので、学習を行なう処理系と検出を行なう処理系とが異なる場合などに有効である。フィルタ構造に基づいて処理時間を見積もるには、フィルタ構造の単純さの概念を利用すればよい。上述したように、非特許文献2に記載されているような、フィルタ構造の複雑度を数値化する定義を用いて演算にかかる処理時間を見積もる。典型的には、矩形フィルタと画像の演算とを行なう際に、画像上の画素何点を参照する必要があるか調べ、その参照点の数をフィルタ構造の単純さの目安とすることができる。
【0071】
続いて、学習装置100は、全ての学習済み弱判別器について、他の弱判別器との類似度と性能の取得とを終えたか判定する(ステップS34)。未完了であれば(ステップS34でNo)、ステップS31の処理に戻る。全ての弱判別器について類似度と性能の取得とを終えている場合(ステップS34でYes)、学習装置100は、統合判定部44において、合成対象となる弱判別器を判定し、弱判別器の選択を行なう(ステップS35)。具体的には、学習済み弱判別器の中で、単体の弱判別器としての性能が低いものや、フィルタ構造が類似している弱判別器が連続している弱判別器群、又は近傍に存在しているような弱判別器群を選択する。単体の性能が低い弱判別器は、その前後の弱判別器と共に合成対象として選択してもよい。更に、前後の弱判別器だけでなく、性能に応じて更に多くの弱判別器を選択してもよい。この場合、性能と合成する弱判別器の対象範囲との関係は、予めテーブルに保持しておくとよい。例えば、最も低い性能を持つ弱判別器の単体性能に比例して合成範囲を決定する。すなわち、弱判別器の単体性能が低い場合には、合成する弱判別器の数を少なくする。これは、単体の性能が低い場合、少ない数の弱判別器と合成しても、十分な改善が期待されるからである。また、本実施形態の構成とは異なるが、合成する弱判別器の範囲を何種類か用意し、実際の合成処理をその種類の回数だけ行なうことによって、その中から最もよい結果が得られるようにしてもよい。弱判別器の単体性能を合成の基準にすることによって、単体性能が低い弱判別器が合成対象として選択され、その前後の弱判別器との合成が促進され、より高性能な弱判別器を作り出される可能性が高まる。
【0072】
弱判別器のフィルタ構造による選択は、上述したように、類似した構造をもつ弱判別器を選択することによって冗長な弱判別器を減らし、検出器全体の効率を向上させる効果が期待できる。また逆に、弱判別器のフィルタ構造が、互いに類似しない弱判別器を複数選択してもよい。このようにすることで、より有効なフィルタ構造を持つ1つの弱判別器に合成できる場合がある。
【0073】
<弱判別器合成処理>
ここでは、図2に示すステップS06における弱判別器合成処理について説明する。
【0074】
図10は、合成部4の構成の一例を示すブロック図である。合成部4は、合成対象統計情報バッファ51、合成条件生成部52、フィルタ初期化部53、フィルタ更新部54を含んで構成される。
【0075】
合成対象統計情報バッファ51は、選択部3により選択された弱判別器の統計情報を一時的に格納するためのメモリ領域である。合成条件生成部52は、合成後の弱判別器が満たすべき条件を生成する。フィルタ初期化部53は、合成後の弱判別器のフィルタを初期化する。フィルタ更新部54は、合成後の弱判別器の状態を更新して、合成条件生成部52で生成された弱判別器の満たすべき条件を満足する弱判別器を生成する。
【0076】
図11は、図2に示すステップS06における弱判別器合成処理の一例を示すフロー図である。この処理は主に、合成部4で行なわれる。
【0077】
学習装置100は、合成部4において、始めに、合成対象統計情報バッファ51から弱判別器の統計情報を取得する(ステップS40)。続いて、学習装置100は、合成条件生成部52において、弱判別器の統計情報に基づいて合成後の弱判別器が満たすべき条件を生成する(ステップS41)。ここで、合成後の弱判別器が満たすべき条件とは、第1の条件として、合成後の弱判別器の性能が、合成前の複数の弱判別器候補による累積性能、すなわち、これら複数の弱判別器の特性評価値を累積した累積特性評価値を上回ることである。なお、弱判別器の性能とは、学習用サンプル又は評価用サンプルに対する正解率や、検出時間などの処理時間、更には非検出対象データ(この場合、非顔データ)に対して演算を途中で打ち切る、打ち切り率を含む。また、前述のように、学習を行なう装置(学習器)と検出を行なう装置(検出器)とが同一でない場合を考慮して、処理時間の変わりに、弱判別器のフィルタの複雑度を性能の指標として用いてもよい。また、第2の条件として、合成候補となる弱判別器とその他の弱判別器との依存関係を合成後の弱判別器が同様に満たすことである。より具体的には、合成前の弱判別器の学習用データに対する重み付けである。上述したように、Adaboostの枠組みで学習を行なう場合、弱判別器は、前段(前)の弱判別器と依存した関係にある。前段の弱判別器が検出できなかった、若しくは誤検出した画像の重み付けが大きくなって、次の弱判別器の学習が行われる。よって各弱判別器は、それぞれ前段の弱判別器に依存することになる。弱判別器の合成を行なう場合には、この弱判別器同士の依存関係を維持するようにしなければ、検出器全体としての整合性が失われてしまう。そこで、弱判別器合成を実行する際の拘束条件として、弱判別器間の依存関係、すなわち、学習用データの重み付けを維持する、という条件を満たすようにする。更に具体的には、複数の選択された合成候補弱判別器のうち、最も後段(後)の順番に位置する弱判別器の学習結果による学習用データの重み付けと、合成後の弱判別器の学習用データの重み付けとが略一致、すなわち、両者の差が所定範囲内に収まることである。
【0078】
第2の条件は、具体的には、以下のように表現できる。学習用データに対する重み付けを1次元のベクトルとして表現し、合成前後の弱判別器による学習用データへの重み付けを比較した場合に、両者の差が所定範囲内に収まることである。これは、次の(数式6)のように表すことができる。
【0079】
【数6】

【0080】
ここで、εは所定の正の値であるとする。左辺は、2つの重み付けベクトル間の距離を表す。この距離の定義には、所謂ユークリッド距離若しくは、より一般的なミンコフスキー距離を用いてもよい。また、距離ではなく、内積による重み付けベクトル間の類似度を一致の尺度に用いてもよい。
【0081】
なお、ここでは、弱判別器の学習にAdaboostの枠組みを用いた場合を説明しているが、その枠組みに入らない場合や、合成処理においてその枠組みを維持しない場合も考えられる。すなわち、合成処理において、弱判別器間の依存関係を維持しないようにする方法も考えられる。これは、第1の条件のみを満たし、第2の条件を満たさない場合である。この場合、弱判別器間の依存関係は維持されないが、検出器全体としての性能は向上するので、結果的には望ましい検出器を構成することができる。
【0082】
また、第2の条件を満たすように合成処理を行なう場合でも、必ずしも厳密に依存関係が維持されなくても、全体としての検出性能が向上すれば、本来の目的は達せられる。従って、第2の条件を緩めた構成をとってもよい。この場合、例えば、学習用データのうち、顔データのみの重み付けを略一致させる(非顔データは評価しない)などの簡略化が考えられる。また、予め学習前に重要とした評価データのみの重み付けを略一致させるようにしてもよい。
【0083】
さて、処理フローの説明に戻る。合成条件の生成後、学習装置100は、フィルタ初期化部53において、合成候補となる弱判別器の初期化を行なう(ステップS42)。初期化は主に、弱判別器のフィルタ構造と閾値について行われる。合成候補の弱判別器のフィルタ構造の初期値を決めて、ステップS41で得られた合成条件を満たす弱判別器を得る。フィルタの初期値は、完全にランダムでもよいが、例えば、合成候補となる弱判別器のフィルタ構造を重ね合わせたものを配置してもよい。
【0084】
図12は、フィルタ構造の重ね合わせの一例を模式的に示したものである。合成候補弱判別器のフィルタ構造61、62、63を単純に重ね合わせた場合に得られるのが64のフィルタ構造である。このように合成候補である弱判別器のフィルタ構造を反映した初期値を合成後の弱判別器に適用することによって、後述する弱判別器更新処理において、より好適な合成弱判別器を得られる場合がある。また、単純な重ね合わせではなく、合成候補の弱判別器の性能によって重み付けされた重ね合わせを行ってもよい。具体的には、図12に示す61、62、63の合成候補弱判別器のフィルタ構造において、62の性能が低かった場合に、62のフィルタ構造を初期値に反映させないようにする、などである。また、図12には現れないが、合成候補弱判別器のフィルタ構造が競合するような位置関係にある場合に、弱判別器の性能によって初期配置を決定してもよい。具体的には、同じ領域に矩形フィルタがある場合などである。この場合、該当する弱判別器の性能(例えば、特性評価値)に基づいてどちらのフィルタ構造を優先して初期値に反映させるか決定する。なお、学習に用いた学習用データに付与された重みに基づく弱判別器の学習結果(例えば、重みの大きな学習用データからの検出を誤っている等)を考慮して優先させるフィルタ構造を決定してもよい。閾値の初期化は、フィルタ構造の初期化が済んだ後、Adaboostの学習で説明したのと同様の手順で決定することができる。
【0085】
合成弱判別器のフィルタ構造の初期化に、主成分分析や独立成分分析を用いることもできる。例えば、合成候補である複数の弱判別器のフィルタ構造をベクトル表現して得られる、分散共分散行列の主成分(最大固有値に対応する固有ベクトル)を初期値とすることができる。同様にフィルタ構造に対して独立成分分析を行ない、その独立成分のいずれか、又はその所定数の重ね合わせを初期値とすることもできる。
【0086】
処理フローの説明に戻り、続いて、学習装置100は、初期化後の合成弱判別器の性能を評価する(ステップS43)。ここで、性能評価は、後段の弱判別器更新処理で使用される学習用サンプルを用いてもよいし、性能評価専用の評価用サンプルを用いてもよい。このステップS43における処理では、ステップS41で得られた合成条件を判定するのに必要となる性能情報の算出を行なう。例えば、検出率や処理時間などである。また、学習器と検出器とが異なる場合を考えて、フィルタ構造の複雑度を検出時間の代わりに評価するようにすることも考えられる。
【0087】
続いて、学習装置100は、ステップS43で得られた性能情報をもとに、合成条件を満足するか判定を行なう(ステップS44)。条件を満足する場合(ステップS44でYes)、合成処理を終了する。条件を満足しない場合(ステップS44でNo)、学習装置100は、フィルタ更新部54において、弱判別器状態更新処理を行なう。以下、弱判別器状態更新処理が行われた後、性能評価、条件判定が、所定条件を満たすまで繰り返し実行される。
【0088】
なお、条件によっては、弱判別器の合成が上手く行かず、繰り返し処理が終了しない可能性がある。そのような場合には、予め所定の繰り返し上限回数を設定しておいて、繰り返しがその回数に達したら合成処理を中断し、その時点で最も条件に近かった合成弱判別器候補を合成対象として選択すればよい。また、合成処理を中断して再び通常の弱判別器の学習処理に戻るようにしてもよい。例えば、通常の弱判別器が生成された後、新たにその弱判別器を候補に加えて合成対象の再選択を行った後、再び合成弱判別器の処理を行なうようにする。新たな合成対象が追加、又は以前の合成時のものと置き換えられることによって、弱判別器の合成処理が上手くいく場合がある。
【0089】
ここで、図13を用いて、図11に示すステップS45における弱判別器更新処理について説明する。なお、弱判別器状態更新処理は、矩形フィルタ構造の更新を合成条件を満たすようにするための処理であり、一般的な最適化と問題は同じである。従って目的を達するのであれば、公知の技術を用いてもよい。例えば、非特許文献2に記載されているような、グラニューと呼ばれる矩形フィルタの構成要素を導入し、ヒューリスティックな探索方法により、最適なフィルタ構造を見つけるようにしてもよい。同様に、合成条件を評価値する評価関数を導入することによって、合成フィルタ構造の最適構造探索に、一般的な最適化手法を適用してもよい。以下では、弱判別器状態更新処理に最適化手法の一つであるマルコフ連鎖モンテカルロ法を適用した場合について説明する。
【0090】
図13は、マルコフ連鎖モンテカルロ法を適用した場合における弱判別器状態更新処理の一例を示すフロー図である。
【0091】
学習装置100は、フィルタ更新部54において、矩形フィルタ構造の更新を行なう(ステップS50)。矩形フィルタの更新方法としては、いくつか挙げられるが、典型的には、ランダムな更新方法を用いることができる。以下、具体的に説明する。
【0092】
学習装置100は、フィルタ更新部54において、上記図9に示したような、弱判別器の矩形フィルタから更新対象となるフィルタの位置を選択する。この選択もランダムでよい。図9の場合、12×12の格子の中から更新すべき位置をランダムに選択する。
【0093】
更新位置を選択した後、学習装置100は、フィルタ更新部54において、その位置の矩形フィルタの値を更新する。フィルタの採り得る値が2値である場合は、単純にもう一方の値に設定すればよい。フィルタが3値以上の整数値をとりえる場合には、ランダムに更新する。例えば、フィルタがN値を取り得て、更新前のフィルタの値がnである場合、n以外の、N−1通りの値の中から更新後の値をランダムに選択する。フィルタの値が整数値ではなく、実数値である場合も同様に乱数を用いた更新方法を適用できる。この場合には、フィルタの上限値と下限値の間の一様乱数を発生させて、更新後のフィルタの値として採用すればよい。なお、フィルタの更新をより大きな粒度で行なってもよい。すなわち、ランダムに選択された更新位置の近傍にあるフィルタの値も同時に更新するようにしてもよい。この際、同時に更新するフィルタの範囲は任意であるが、弱判別器性能評価の結果を反映させるようにしてもよい。すなわち、性能がある程度高い場合は、同時に更新するフィルタの範囲を小さくし、性能が低い場合には、同時に更新するフィルタの範囲を大きくする。
【0094】
次に、学習装置100は、フィルタ更新部54において、弱判別器の状態をベクトル要素とする評価関数Eを計算する(ステップS51)。ここでは、直前の弱判別器状態(Eとする)と現在の弱判別器状態(Eとする)とについて計算を行なう。評価関数Eは、合成条件によって、適宜その定義を変えることが必要であるが、典型的には以下の(数式7)で与えられる。
【0095】
【数7】

【0096】
ここで、Cは性能評価部5の評価結果である検出時間の逆数であり、Pは性能評価部5の評価結果である検出性能である。具体的には、学習用サンプルや評価用サンプルに対する重み付き誤り率である。α、βはそれぞれ0以上の値をとる係数であり、所定の値を用いる。この際、α又はβのうち、いずれかが0であってもよいが、同時に0になることはない。C及びPは、弱判別器の性能を表している(これらは、正の値しかとりえない)。これらが、それぞれ正の係数α、βを乗じてEから減じられているので、検出時間の逆数Cが大きいほど(検出時間が短いほど)、また、検出性能Pが高いほど(大きいほど)、Eの値は小さくなる。すなわち、弱判別器の検出性能が高く、また検出時間が短いほど、Eの値を小さくすることができる。
【0097】
次に、学習装置100は、フィルタ更新部54において、このEの値が直前の状態と現在の状態とでどちらが小さくなるか判定する(ステップS52)。現在の弱判別器の状態が直前の状態よりもEの値を小さくしている場合(ステップS52でYes)、現在の弱判別器状態が選択される。反対に、現在の弱判別器の状態が直前よりもEの値を大きくしてしまう場合(ステップS52でNo)、直前の状態ではなく、現在の状態を一定の確率で選択するための遷移確率Tを計算する(ステップS53)。遷移確率Tは以下の(数式8)で与えられる。
【0098】
【数8】

【0099】
ここで、Eは直前の状態での評価関数の値、Eは現在の状態での評価関数の値を表す。また、tは弱判別器の状態遷移をコントロールするパラメータであり0より大きい任意の値をとる。
【0100】
続いて、学習装置100は、フィルタ更新部54において、範囲が[0,1]の一様乱数Xを取得し(ステップS54)、ステップS53で求めた遷移確率TとステップS54で取得した一様乱数Xの値とを比較する(ステップS55)。この結果、Tの値がXよりも大きければ(ステップS55でYes)、現在の弱判別器状態を選択する(ステップS56)。一方、Tの値がXよりも小さいか、同じであれば(ステップS55でNo)、直前の弱判別器状態を選択する(ステップS57)。最後に、直前と現在のどちらの弱判別器状態を選択するか結果を出力する(ステップS58)。
【0101】
以上のようにすることで、直前の弱判別器状態よりも評価関数Eの値が悪い弱判別器状態を一定の割合で受け入れることになる。割合をコントロールするパラメータtは、値が大きいと、評価関数Eが直前の状態よりも悪い場合であっても、現在の状態を受け入れる確率が高くなり、状態遷移が起き易くなる。反対に、tの値が小さいと、評価関数Eの値が直前の状態よりも悪い場合、状態遷移が起こりにくくなる。評価関数Eの値が大きい場合でも、ある程度状態変化を受け入れることによって、評価関数Eの値がローカルミニマムから脱出する機会を持つことができる。
【0102】
また、tの値を順次変化させながら、最適な弱判別器を探すようにしてもよい。典型的には、始めにtの値を大きくしておいて、徐々にtの値を小さくしていきながら、評価を繰り返すようにする。これは、所謂シミュレーテッドアニーリング(焼き鈍し法)といわれる手法であり、最適値探索問題に有効であることが知られている。
【0103】
なお、図13の説明では、弱判別器の更新方法として、モンテカルロ法を用いる場合について説明してきたが、この処理は特定の最適化手法に限定されず、フィルタ構造の探索問題にさまざまな最適化手法を適用できる。
【0104】
以上説明したように実施形態1によれば、比較的単純なフィルタ構造を持つ弱判別器を学習させた後、それらを合成させて複雑なフィルタ構造を持つ弱判別器を生成する。これにより、学習の初期から複雑なフィルタ構造を持つ弱判別器を探索する必要がなくなるため、学習時間を大幅に短縮することができる。なお、学習時間の短縮は、弱判別器合成のアルゴリズムの工夫により、大幅に行なうこともできる。
【0105】
また、実施形態1によれば、合成後の弱判別器が満たすべき条件(特に第1の条件)の元、弱判別器の合成処理を行なう。これにより、合成前よりも検出器全体としての性能(例えば、検出率や検出時間)を向上させられる。
【0106】
(実施形態2)
次に、実施形態2について説明する。実施形態2においては、通常の弱判別器の学習時に弱判別器の合成を取り入れて、有効な弱判別器を探索する場合について説明する。実施形態2では、上述した実施形態1と比べて、弱判別器学習処理と弱判別器合成処理との関係が異なる。具体的には、実施形態1では、所定の弱判別器数になった、又は検出器全体としての性能が目標に達した、など弱判別器の学習が一通り終了した時点で合成候補の弱判別器を選択し、合成処理を行っていた。これに対して、実施形態2では、弱判別器の学習の終了後、所定のタイミングで弱判別器を選択し合成処理を行なう。
【0107】
なお、重複を避けるため、以下の説明において、実施形態1と同じ部分についての説明は省略する。実施形態2に係わる学習装置100の構成は、実施形態1を説明した図1と同様である。
【0108】
<全体フロー>
図14は、実施形態2に係わる学習装置100における全体処理の一例を示すフロー図である。
【0109】
学習装置100は、まず、学習用データの重みを初期化する(ステップS60)。次に、学習装置100は、弱判別器の学習処理を実施する(ステップS61)。そして、弱判別器の性能を評価し(ステップS62)、弱判別器の構造や性能などの統計情報を取得・保持する(ステップS63)。
【0110】
続いて、学習装置100は、所定の条件に基づいて弱判別器の合成の実施有無を判定する(ステップS64)。所定条件を満足する場合(ステップS64でYes)、学習装置100は、弱判別器の学習を中断し、弱判別器合成処理に移る。所定条件を満たさない場合(ステップS64でNo)、学習装置100は、弱判別器の学習を続けるか判定を行なう(ステップS65)。学習の終了条件は、実施形態1同様に、所定の個数の弱判別器が生成されたか、複数の弱判別器から構成される検出器全体としての性能が目標とする性能に達したか、などである。終了条件を満足する場合(ステップS65でYes)、学習装置100は、この処理を終了する。終了条件を満たさない場合(ステップS65でNo)、学習装置100は、ステップS61に戻って、後段の弱判別器の学習を続ける。
【0111】
ここで、ステップS64における所定条件を満たさない場合としては、例えば、既に学習済みの弱判別器が所定の性能に達していない場合や、弱判別器の複雑度が一定の水準より下回っている場合などがある。この判定は、1つ乃至複数の弱判別器に対して行われる。
【0112】
なお、性能とは独立して、一定数の弱判別器が生成されるごとに、合成を行なうようにしてもよい。この場合、合成を行なう弱判別器の個数が一定になるので、弱判別器合成を行なうアルゴリズムをあまり複雑にしなくてもよいメリットがある。
【0113】
また、学習済み弱判別器の個数に応じて、合成を行なうタイミングを変えるようにしてもよい。すなわち、後段の弱判別器ほどまとめて合成を行なうようにする。一般に、弱判別器の合成を行なうと、矩形フィルタの構造が複雑になるので、処理時間が増える傾向がある。より多くの弱判別器を1つの弱判別器で表現しようとすると、更に複雑度は増大する傾向がある。そのため、カスケード接続型の検出器を構成した場合、前段の方に複雑な弱判別器が存在すると、全体としての検出時間が増大する可能性が高くなる。この問題を回避するためには、例えば、カスケード接続の前方の弱判別器は合成を行わずにシンプルな構造とし、後方にある弱判別器は前方にある弱判別器よりも頻繁に合成を行って、複雑であっても性能の高い弱判別器を設けるようにする。どの段階で弱判別器の合成を行なうかは、例えば、予めテーブルに保持しておき、それを参照するようにすればよい。更に好適には、弱判別器の学習時に、打ち切り率や検出時間などの検出器の性能を見積もることによって、合成を行って複雑な弱判別器が生成されても、全体の処理時間が少なくなるようなポイントを動的に探索するような処理を取り入れてもよい。このような探索問題には、公知の最適化アルゴリズムを適用できる。
【0114】
さて、処理フローの説明に戻り、ステップS64において、合成条件を満足した場合には(ステップS64でYes)、学習装置100は、合成対象となる弱判別器を選択し(ステップS66)、当該選択した弱判別器を合成する(ステップS67)。なお、実施形態2では、実施形態1と異なり、合成時に弱判別器間の依存関係を維持する必要がない。そのため、合成を行なう際の制約条件にそれを含める必要がないので、一般的に合成を行ない易くし、また学習時間の短縮に寄与することになる。
【0115】
弱判別器合成処理の後、学習装置100は、終了条件を満たすか判定を行なう(ステップS68)。これは、ステップS65と同様の判定であり、検出器全体が十分な性能を達したかなどの判定が行なわれる。条件を満足した場合(ステップS68でYes)、学習装置100は、学習処理を終了する。条件を満たさない場合(ステップS68でNo)、学習装置100は、ステップS61の処理に戻り、弱判別器の学習を続ける。
【0116】
以上説明したように実施形態2によれば、合成に際しその合成対象となる弱判別器よりも後段にある弱判別器の学習は未だ済んでいない。これにより、実施形態1のように、合成時に依存関係を維持する必要がなくなる。
【0117】
以上が本発明の代表的な実施形態の一例であるが、本発明は、上記及び図面に示す実施形態に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【0118】
なお、本発明は、例えば、システム、装置、方法、プログラム若しくは記録媒体等としての実施態様を採ることもできる。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【0119】
また、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置に内蔵されたコンピュータが該供給されたプログラムコードを読み出して実行することにより実施形態の機能が達成される場合をも含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したコンピュータプログラムである。
【0120】
したがって、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OS(Operating System)に供給するスクリプトデータ等の形態であってもよい。
【0121】
コンピュータプログラムを供給するためのコンピュータ読み取り可能な記録媒体としては以下が挙げられる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
【0122】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0123】
また、本発明のプログラムを暗号化してCD−ROM等の記録媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
【0124】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどとの協働で実施形態の機能が実現されてもよい。この場合、OSなどが、実際の処理の一部又は全部を行ない、その処理によって前述した実施形態の機能が実現される。
【0125】
更に、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU(Central Processing Unit)などが実際の処理の一部又は全部を行なう。
【図面の簡単な説明】
【0126】
【図1】本実施形態に係わるパターン検出器の学習装置100の構成の一例を示すブロック図である。
【図2】図1に示す学習装置100における全体処理の一例を示すフロー図である。
【図3】図1に示す学習部2の構成の一例を示すブロック図である。
【図4】図2に示すステップS01における弱判別器学習処理の一例を示すフロー図である。
【図5】図4に示すステップS11における弱判別器候補選択処理の一例を示すフロー図である。
【図6】弱判別器学習時における顔データと非顔データのヒストグラムの一例を表した模式図である。
【図7】図1に示す選択部3の構成の一例を示すブロック図である。
【図8】図2に示すステップS05における弱判別器選択処理の一例を示すフロー図である。
【図9】弱判別器フィルタ構造の一例を示す模式図である。
【図10】図1に示す合成部4の構成の一例を示すブロック図である。
【図11】図2に示すステップS06における弱判別器合成処理の一例を示すフロー図である。
【図12】フィルタ構造の重ね合わせの一例を示す模式図である。
【図13】図11に示すステップS45における弱判別器更新処理の一例を示すフロー図である。
【図14】実施形態2に係わる学習装置100における全体処理の一例を示すフロー図である。
【符号の説明】
【0127】
1 学習用データ取得部
2 学習部
3 選択部
4 合成部
5 性能評価部
6 統計情報保持部
7 モニタリング部
8 接続バス
21 候補保持部
22 候補選択部
23 学習用データ保持部
24 信頼度算出部
25 打ち切り閾値算出部
26 学習用データ重み更新部
41 統計情報バッファ
42 類似度基準選択部
43 性能基準選択部
44 統合判定部
51 合成対象統計情報バッファ
52 合成条件生成部
53 フィルタ初期化部
54 フィルタ更新部

【特許請求の範囲】
【請求項1】
複数の弱判別器から構成され、該複数の弱判別器による判別により入力データから特定パターンを検出するパターン検出器の学習装置であって、
前記特定パターンを含むか否かが既知であるデータから構成される複数の学習用データを取得する取得手段と、
前記取得手段により取得された学習用データから前記特定パターンを検出させることにより前記複数の弱判別器を学習させる学習手段と、
前記学習手段による学習が済んだ弱判別器の中から合成対象となる複数の弱判別器を選択する選択手段と、
前記選択手段により選択された複数の弱判別器を合成した場合の合成後の弱判別器の性能と該複数の弱判別器の性能との比較に基づき該複数の弱判別器を1つに合成する合成手段と
を具備することを特徴とするパターン検出器の学習装置。
【請求項2】
前記選択手段は、
弱判別器間の類似度を含む情報に基づいて合成対象となる弱判別器を選択する
ことを特徴とする請求項1記載のパターン検出器の学習装置。
【請求項3】
前記弱判別器間の類似度は、
前記弱判別器各々のフィルタ構造のミンコフスキー距離、ハウスドルフ距離、又はユークリッド距離の少なくともいずれかに基づく
ことを特徴とする請求項2記載のパターン検出器の学習装置。
【請求項4】
前記弱判別器間の類似度は、
前記弱判別器各々のフィルタ構造をベクトル表現したときの、ベクトル間の内積、ベクトル間のユークリッド距離、又はベクトル間のミンコフスキー距離の少なくともいずれかに基づく
ことを特徴とする請求項2記載のパターン検出器の学習装置。
【請求項5】
弱判別器の検出性能を示す特性評価値に係わる統計情報を保持する統計情報保持手段
を更に具備し、
前記選択手段は、
前記統計情報保持手段により保持された弱判別器の特性評価値を含む情報に基づいて合成対象となる弱判別器を選択する
ことを特徴とする請求項1又は2記載のパターン検出器の学習装置。
【請求項6】
前記学習手段は、
前記学習用データに対して重み付けする重み付け手段
を具備し、
前記重み付け手段により付与された重みに基づいて複数の学習用データの中から選択した学習用データを用いて前記複数の弱判別器を順番に学習させ、前記重み付け手段により各弱判別器が学習を終える度にその学習結果に基づき前記学習用データに付与する重みを更新する
ことを特徴とする請求項1乃至5のいずれか1項に記載のパターン検出器の学習装置。
【請求項7】
前記合成手段は、
前記選択手段により選択された合成対象となる複数の弱判別器と該選択された弱判別器の学習の順番により生じる弱判別器間の依存関係を維持しつつ、前記弱判別器の合成を行なう
ことを特徴とする請求項6記載のパターン検出器の学習装置。
【請求項8】
前記合成手段は、
前記弱判別器間の依存関係を維持するために、前記選択手段により選択された複数の弱判別器のうち、最後に学習した弱判別器の学習結果に基づき更新された学習用データに付与された重みと、合成後の弱判別器の学習結果に基づき更新される学習用データの重みとの差が所定範囲内に収まる場合に前記合成を行なう
ことを特徴とする請求項7記載のパターン検出器の学習装置。
【請求項9】
前記合成手段は、
前記弱判別器間の依存関係を維持するために、前記選択手段により選択された複数の弱判別器のうち、最後に学習した弱判別器の学習結果に基づき更新された学習用データに付与された重みと、合成後の弱判別器の学習結果に基づき更新される学習用データの重みとをベクトルとして表現し、該表現された重み付けベクトル間の類似度が所定の値より大きくなる場合に前記合成を行なう
ことを特徴とする請求項7記載のパターン検出器の学習装置。
【請求項10】
前記重み付けベクトル間の類似度は、
ベクトルの内積、又はユークリッド距離の少なくともいずれかに基づく
ことを特徴とする請求項9記載のパターン検出器の学習装置。
【請求項11】
前記合成手段は、
合成後の弱判別器の特性評価値が前記選択手段により選択された合成対象となる複数の弱判別器の特性評価値を累積した累積特性評価値を上回る場合に前記合成を行なう
ことを特徴とする請求項1乃至10のいずれか1項に記載のパターン検出器の学習装置。
【請求項12】
前記合成手段は、
合成後の弱判別器をフィルタ構造を初期化する初期化手段
を具備し、
前記初期化手段は、
前記選択手段により選択された合成対象となる複数の弱判別器のフィルタ構造を重ね合わせることにより前記合成後の弱判別器のフィルタ構造を初期化する
ことを特徴とする請求項1乃至11のいずれか1項に記載のパターン検出器の学習装置。
【請求項13】
前記初期化手段は、
前記選択手段により選択された弱判別器の特性評価値と、学習に用いた学習用データの重みに基づく学習結果とを考慮して前記複数の弱判別器のフィルタ構造を重ね合わせる
ことを特徴とする請求項12記載のパターン検出器の学習装置。
【請求項14】
前記初期化手段は、
前記選択手段により選択された合成対象となる複数の弱判別器のフィルタ構造をベクトル表現し、主成分分析、独立成分分析の少なくともいずれかの処理を行なうことにより前記合成後の弱判別器のフィルタ構造を初期化する
ことを特徴とする、請求項12記載のパターン検出器の学習装置。
【請求項15】
前記合成手段は、
前記合成後の弱判別器のフィルタ構造を更新する更新手段
を具備することを特徴とする請求項1乃至14のいずれか1項に記載のパターン検出器の学習装置。
【請求項16】
前記更新手段は、
マルコフ連鎖モンテカルロ法を用いて前記更新を行なう
ことを特徴とする請求項15記載のパターン検出器の学習装置。
【請求項17】
前記更新手段は、
前記弱判別器の状態を該弱判別器のフィルタ構造として、該弱判別器の状態をベクトル要素とする評価関数を用いてマルコフ連鎖モンテカルロ法により該弱判別器の状態を更新する
ことを特徴とする請求項16記載のパターン検出器の学習装置。
【請求項18】
前記弱判別器の特性評価値は、
前記学習手段により弱判別器に学習用データを用いて学習させたときの、特定パターンの検出率、特定パターンの検出速度、又は打ち切り率の少なくとも1つに基づく
ことを特徴とする請求項1乃至17のいずれか1項に記載のパターン検出器の学習装置。
【請求項19】
前記弱判別器の特性評価値は、
少なくとも前記弱判別器のフィルタ構造の複雑度に基づく
ことを特徴とする請求項1乃至18のいずれか1項に記載のパターン検出器の学習装置。
【請求項20】
複数の弱判別器から構成され、該複数の弱判別器による判別により入力データから特定パターンを検出するパターン検出器の学習方法であって、
前記特定パターンを含むか否かが既知であるデータから構成される複数の学習用データを取得する取得工程と、
前記取得された学習用データから前記特定パターンを検出させることにより前記複数の弱判別器を順番に学習させる学習工程と、
前記学習が済んだ弱判別器の中から合成対象となる複数の弱判別器を選択する選択工程と、
前記選択された複数の弱判別器を合成した場合の合成後の弱判別器の性能と該複数の弱判別器の性能との比較に基づき該複数の弱判別器を1つに合成する合成工程と
含むことを特徴とするパターン検出器の学習方法。
【請求項21】
複数の弱判別器から構成され、該複数の弱判別器による判別により入力データから特定パターンを検出するパターン検出器の学習装置に内蔵されたコンピュータを、
前記特定パターンを含むか否かが既知であるデータから構成される複数の学習用データを取得する取得手段、
前記取得手段により取得された学習用データから前記特定パターンを検出させることにより前記複数の弱判別器を順番に学習させる学習手段、
前記学習手段による学習が済んだ弱判別器の中から合成対象となる複数の弱判別器を選択する選択手段、
前記選択手段により選択された複数の弱判別器を合成した場合の合成後の弱判別器の性能と該複数の弱判別器の性能との比較に基づき該複数の弱判別器を1つに合成する合成手段
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2010−9518(P2010−9518A)
【公開日】平成22年1月14日(2010.1.14)
【国際特許分類】
【出願番号】特願2008−171230(P2008−171230)
【出願日】平成20年6月30日(2008.6.30)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】