(57)【特許請求の範囲】
【請求項１】
第１のラベルの学習サンプル、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプルを学習した複数の弱判別器よりなる上位ノードと、
前記上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる第１の下位ノードと、
弱判別器を有しない第２の下位ノードと
を備え、
前記第１の下位ノードは、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理を行い、
前記第２の下位ノードは、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処理を行う
情報処理装置。
【請求項２】
前記上位ノードおよび第１の下位ノードの前記弱判別器は、前記学習サンプルの画像データの２画素の値の差と閾値との差に基づいて前記識別処理を行い、
前記第２の下位ノードは、前記第１のノードの前記識別処理に利用される前記２画素の位置を、前記座標上の関係に基づいて座標変換し、その結果得られた位置の前記入力された信号に応じた画像上の２画素の値の差と、前記第１のノードの前記識別処理に利用される前記閾値との差に基づいて前記識別処理を行う
請求項１に記載の情報処理装置。
【請求項３】
前記第２のラベルの学習サンプルは、前記第１のラベルの学習サンプルを所定の角度だけロール回転、または左右方向に反転した画像に相当し、
前記第２の下位ノードは、前記第１のノードの前記識別処理に利用される前記２画素の位置を、前記角度だけロール回転または左右方向に反転し、その結果得られた位置の前記入力された信号に応じた画像上の２画素の値の差と、前記第１のノードの前記識別処理に利用される前記閾値との差に基づいて前記識別処理を行う
請求項２に記載の情報処理装置。
【請求項４】
前記識別処理が施される信号を取得し、前記上位ノード、前記第１の下位ノード、または前記第２の下位ノードに出力する出力手段をさらに備え、
前記出力手段は、
前記第２の下位ノードが、前記第１のノードの前記識別処理に利用される前記２画素の位置を、前記角度だけロール回転し、その結果得られた位置の前記入力された信号に応じた画像上の２画素の値の差と、前記第１のノードの前記識別処理に利用される前記閾値との差に基づいて前記識別処理を行う場合、前記学習サンプルの大きさよりも大きい画像の画像信号を、前記第２の下位ノードに出力する
請求項３に記載の情報処理装置。
【請求項５】
前記上位ノードおよび前記第１の下位ノードを構成する弱判別器は、前記学習サンプルを、前記出力手段により出力された画像信号に応じた画像と中心を合わせて前記角度だけロール回転し、前記画像信号に応じた画像からはみ出る領域については学習を行わない
請求項４に記載の情報処理装置。
【請求項６】
前記上位ノード並びに前記第１および第２の下位ノードは、判別結果を、信頼度により重み付けして累積し、その累積和に基づいて、前記認識処理を打ち切る打ち切り手段
を備える請求項１に記載の情報処理装置。
【請求項７】
前記打ち切り手段は、前記判別結果が重み付け累積される毎に、または所定の数分の判別結果が重み付け累積される毎に、前記認識処理の打ち切りを判定する
請求項６に記載の情報処理装置。
【請求項８】
第１のラベルの学習サンプル、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプルを学習した複数の弱判別器よりなる上位ノードと、
前記上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる第１の下位ノードと、
弱判別器を有しない第２の下位ノードと
を備える情報処理装置が実行する情報処理方法であって、
前記第１の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理を行うステップと、
前記第２の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処理を行うステップと
を含む情報処理方法。
【請求項９】
第１のラベルの学習サンプル、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプルを学習した複数の弱判別器よりなる上位ノードと、
前記上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる第１の下位ノードと、
弱判別器を有しない第２の下位ノードと
を備える情報処理装置に、
前記第１の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理を行うステップと、
前記第２の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処処理を行うステップと
を実行させるためのプログラムが記録されている記録媒体。
【請求項１０】
第１のラベルの学習サンプル、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプルを学習した複数の弱判別器よりなる上位ノードと、
前記上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる第１の下位ノードと、
弱判別器を有しない第２の下位ノードと
を備える情報処理装置に、
前記第１の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理を行うステップと、
前記第２の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処処理を行うステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、少ない演算量で、高速に顔画像などの対象物を検出することができるようにした情報処理装置および方法、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
従来、複雑な画像シーンの中から動きを使わないで画像信号の濃淡パターンのみを使った顔検出装置が数多く提案されている。
【０００３】
図１は、従来の顔検出装置１（特許文献１参照）の構成例を示している。この顔検出装置１は、与えられる画像（入力画像）の中から顔の領域を示す顔の位置および大きさを出力する。
【０００４】
顔検出装置１の画像出力部２は、顔検出装置１に入力された入力画像としての濃淡画像（輝度画像）を、スケーリング部３に供給する。
【０００５】
スケーリング部３は、画像出力部２から供給された入力画像を、指定されたスケールに拡大または縮小し、その結果得られたスケーリング画像を、走査部４に出力する。
【０００６】
具体的には、先ず、図２に示す入力画像１０Ａがそのまま走査部４へ出力される。そして、入力画像１０Ａについて走査部４および判別器５の後述する処理が終了した後、入力画像１０Ａのサイズを縮小した入力画像１０Ｂが生成される。さらに、この入力画像１０Ｂにおける走査部４および判別器５の処理が終了した後、入力画像１０Ｂのサイズを更に縮小した入力画像１０Ｃが走査部４に出力されるように、より小さく縮小した縮小画像１０Ｄ、１０Ｅなどが順次生成され、縮小画像の画像サイズが、走査部４にて走査するウィンドウサイズより小さくなった時点で処理が終了する。この処理の終了をまって、画像出力部２は、次の入力画像をスケーリング部３に出力する。
【０００７】
走査部４は、スケーリング部３から供給されたスケーリングされた入力画像を、所定サイズのウインドウで、例えば左上から右下に向けて順次スキャンして、ウインドウ内の画像をウインドウ画像として出力する。
【０００８】
具体的には、図３に示されるように、与えられた例えば画像１０Ａに対して、後段の判別器５が受け付けるウィンドウサイズと同じ大きさのウインドウ１１を画像（画面）の全体に対して順次当てはめていき、各位置におけるウインドウ１１内の画像（以下、切り取り画像またはウインドウ画像と称する）が判別器５に出力される。
【０００９】
ウインドウ１１の走査は、図４に示されるように、１画素単位で行われる。すなわち、所定の位置におけるウインドウ１１内の切り取り画像が走査部４から出力された後、次の走査においては、ウインドウ１１が１画素分右方向に移動され、その位置におけるウインドウ１１内の切り取り画像が判別器５に供給される。
【００１０】
なお、ウィンドウサイズは一定であるが、上述したように、スケーリング部３により入力画像が順次縮小され、入力画像の画像サイズが様々なスケールに変換されるため、任意の大きさの対象物体を検出することが可能となる。
【００１１】
すなわち、入力画像上の顔の大きさが、どのような大きさであったとしても、画像サイズが順次縮小されることで、いつかはウィンドウサイズとほぼ同じ大きさの画像となる。その結果、そのウインドウ１１内の画像が、人の顔の画像であるか否かを検出することができる。
【００１２】
判別器５は、判別器５を構成する複数の弱判別器の集団学習を実行する集団学習機６の学習結果を参照して、走査部４にて順次スキャンされた各ウインドウ画像が、顔画像（対象物）であるか、または顔画像以外の画像（非対象物）であるかを判別する。
【００１３】
判別器５は、図５に示されるように、アンサンブル学習（Ensemble learning）により得られた複数の弱判別器２１i（ｉ＝１，２，３，・・・，Ｋ）と、これらの出力（判別結果）に、それぞれ対応する重みαi（ｉ＝１，２，３，・・・，Ｋ）を乗算し、重み付き多数決Ｆ(x)を求める加算器２２とを有する。
【００１４】
弱判別器２１1乃至２１Kは、それぞれウインドウ１１内の画素のうちの任意の位置の２つの画素に基づき、そのウインドウ１１内の画像が、人の顔の画像であるか否かを判別する。Ｋは、ウインドウ１１内の画像から抽出可能な２個の画素の組み合わせの数に対応する。
【００１５】
具体的には、判別のための特徴量として、２つの画素間の輝度値の差分（以下、ピクセル間差分特徴と称する）が使用され、対象物か非対象物であるかのラベリングが予め施された複数の濃淡画像からなる学習サンプルにより学習された特徴量(閾値)と、ウインドウ画像の特徴量とが比較され、ウインドウ画像が対象物であるか否かを推定するための推定値ｆ(x)が確定的または確率的に逐次出力される。
【００１６】
例えばAdaBoostのように、弱判別器が２値出力を行う場合は、ピクセル間差分特徴を閾値で二分することで、対象物体であるかどうかの判別が行われる。また、例えばReal-AdaBoostのように、ピクセル間差分特徴から対象物体かどうかを表す度合いの連続値を確率的に出力してもよい。
【００１７】
これら弱判別器２１iが必要とする判別のための２つの画素および特徴量（閾値）などは学習時に所定のアルゴリズムに従って集団学習機６により学習される。
【００１８】
これら複数の弱判別器は、集団学習機６により後述するアルゴリズムに従い、上述の学習サンプルを使用して集団学習により逐次的に生成されたものであり、例えばその生成順に上記推定値を算出する。
【００１９】
加算器２２は、弱判別器２１iの推定値に、各弱判別器２１iに対する信頼度となる重みを乗算し、これを加算した値（重み付き多数決の値）を出力する。
【００２０】
重み付き多数決の重み（信頼度）は、弱判別器を生成する学習工程にて集団学習機６により学習される。
【００２１】
判別器５においては、上述したように、入力されるウインドウ画像に対し、各弱判別器２１iが顔である否かの推定値ｆ(x)を逐次出力し、加算器２２が重み付き多数決Ｆ(x)を算出して出力するが、この重み付き多数決Ｆ(x)の値に応じ、図示せぬ判定手段が、ウインドウ画像が対象物か否かを最終的に判定する。
【００２２】
判定部５ではまた、重み付き多数決の際、全ての弱判別器の計算結果を待たず、計算途中であっても、その値によっては対象物体でないと判断して計算が打ち切られる。
【００２３】
具体的には、予め学習により生成された複数の弱判別器が推定値を出力する毎に、その推定値に対して学習により得られた各弱判別器に対する重みを乗算して加算した重み付き多数決の値が更新され、この重み付き多数決の値（評価値）が更新される毎に、打ち切り閾値を利用して推定値の算出を打ち切るか否かが制御される。この打ち切りの閾値（基準値）は学習工程で集団学習機６により学習される。
【００２４】
判定部５では、２つのピクセル間の輝度値の差という極めて簡単な特徴量（ピクセル間差分特徴）を使用して対象物か否かを判別する弱判別器をすることで、対象物の検出処理を高速化することができるとともに、この打ち切り処理によって、全ての弱判別器の計算結果を待たず、計算途中で次のウインドウ画像の判別処理に移ることができ、検出処理における演算量を大幅に削減することが可能となるので、さらに迅速な処理が可能となる。
【００２５】
判定器５ではさらに、弱判定器がノードを構成し、そのノードがツリー構造に配置されている。
【００２６】
図６は、正面を向いた顔とラベリングされた画像（ヨー角が、−１５度乃至＋１５度の範囲の画像）（以下、ラベルＷ１１の画像と称する）と、左方向を向いた顔とラベリングされた画像（ヨー角が、＋１５度乃至＋６５度の範囲の画像）（以下、ラベルＷ２１の画像と称する）、および右方向を向いた顔とラベリングされた画像（ヨー角が、−６５度乃至−１５度の範囲の画像）（以下、ラベルＷ３１の画像と称する）、正面から＋２０度ロール回転した顔とラベリングされた画像（以下、ラベルＷ１２の画像と称する）、左方向を向いて、＋２０度ロール回転した顔とラベリングされた画像（以下、ラベルＷ２２の画像と称する）、および右方向を向いて、＋２０度ロール回転した顔とラベリングされた画像（以下、ラベルＷ３２の画像と称する）、並びに正面から、−２０度ロール回転した画像とラベリングされた画像（以下、ラベルＷ１３の画像と称する）、左方向を向いて、−２０度ロール回転した顔とラベリングされた画像（以下、ラベル２３の画像と称する）、および右方向を向いて、−２０度ロール回転した顔とラベリングされた画像（以下、ラベルＷ３３の画像と称する）の全てを学習サンプルとして学習した場合に形成されたツリー構造の例を示している。
【００２７】
ヨー角は、図７Ａに示されるように、人の目と目を結んだ線と平行で、ほぼ人の頭の中心を通る軸２０１と垂直な軸であって、ほぼ頭の中心を垂直に通る軸２０２を中心とした角度であり、右方向が負、左方向が正となるように定義される。
【００２８】
ロール角は、軸２０１と軸２０２と直交する軸２０３を中心として回転する角度を表し、軸２０１が水平になる角度が０度とされる。
【００２９】
なお姿勢を表す角度としてピッチ角という角度もあるが、これは、軸２０１を中心とする上下の角度であり、例えば、上を向くと正、下を向くと負とされる。
【００３０】
図６に示したようにツリー構造にしないとすると、１つのラベルを識別するのに、例えば、図８に示されるような弱判別器群２３１が必要となる。弱判別器群２３１は、弱判別器２１−１1 乃至２１−１K のＫ個の弱判別器を有する。そして、このＫ個の弱判別器により、１つのラベルの学習サンプルの学習が行われることになる。
【００３１】
従って、例えば９個のラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３の学習サンプルを学習するには、図９に示されるように、ラベルＷ１１の学習サンプルを学習するための弱判別器群２３１−１の他、ラベルＷ１２、ラベルＷ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３の各ラベルの学習サンプルを学習するための弱判別器群２３１−２乃至２３１−９が必要となる。これらの弱判別器群２３１−２乃至２３１−９も、それぞれＫ個の弱判別器から構成される。
【００３２】
図６に示されるツリー構造においても、最も上流のノードから、その末端のノードまでの学習経路における弱判別器の数は、最大Ｋ個となるが、上述したように、判別（識別）工程で各弱判別器の処理の結果得られた値を重み付けして累積加算した値である重み付き多数決の値が、打ち切り閾値より小さくなった場合には、以後、判別（識別）処理は中止される。従って、弱判別器の数を少なくすることが可能となる。
【００３３】
このことが、図１０に模式的に示されている。即ち、この実施の形態においては、ノード２２１は、基本的に、弱判別器２１1乃至２１100により構成されるが、各弱判別器２１iは、図１１に示されるように、打ち切り閾値による打ち切り機能を有している。図中、Ｙは出力が後段に引き継がれることを表し、Ｎは処理がそこで打ち切られることを表している。
【００３４】
このように、判別器５は、ウインドウ画像が対象物か否かを判定するための評価値として重み付き多数決を算出し、その評価値に基づきウインドウ画像が対象物か否かを判定する判定手段として機能する。
【００３５】
集団学習機６は、弱判別器と、それらの出力（推定値）に乗算する重み等を集団学習により予め学習する。
【００３６】
集団学習としては、複数の弱判別器の結果を多数決にて求めることができるものであれば、具体的にはどんな手法でも適用可能である。例えば、データの重み付けを行って重み付き多数決行うアダブースト（AdaBoost）などのブースティングを用いた集団学習を適用することができる。
【００３７】
【特許文献１】特開２００５−２８４４８７号公報
【発明の開示】
【発明が解決しようとする課題】
【００３８】
しかしながら、従来の顔検出装置１においては、図６に示したように、各ビュー毎の学習サンプル（９種類の画像）を学習し、その学習結果として、ビュー毎に、２つのピクセル位置の組（Ｋ個）、弱判別器の閾値（Ｋ個）、重み付き多数決の重み（弱判別器の信頼度）（Ｋ個）、および打ち切り閾値（Ｋ個）を記憶する必要があり、辞書データが大きくなってしまう。
【００３９】
組み込み用途のLSIとして製品化するためには、ゲート規模を削減し、製造コストの抑える必要があるが、ハードウエアとして実装する場合には、この辞書データをROMとして持つことになり、演算回路より大きい回路（ゲート数）が必要となってしまう。
【００４０】
本発明は、このような状況に鑑みて提案されたものであり、集団学習により対象とする物体を検出する際に必要となる辞書データを小さくするようにするものである。
【課題を解決するための手段】
【００４１】
本発明の一側面の情報処理装置は、第１のラベルの学習サンプル、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプルを学習した複数の弱判別器よりなる上位ノードと、前記上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる第１の下位ノードと、弱判別器を有しない第２の下位ノードとを備え、前記第１の下位ノードは、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理を行い、前記第２の下位ノードは、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処処理を行う。
【００４２】
前記上位ノードおよび第１の下位ノードの前記弱判別器は、前記学習サンプルの画像データの２画素の値の差と閾値との差に基づいて前記識別処理を行い、前記第２の下位ノードは、前記第１のノードの前記識別処理に利用される前記２画素の位置を、前記座標上の関係に基づいて座標変換し、その結果得られた位置の前記入力された信号に応じた画像上の２画素の値の差と、前記第１のノードの前記識別処理に利用される前記閾値との差に基づいて前記識別処理を行うことができる。
【００４３】
前記第２のラベルの学習サンプルは、前記第１のラベルの学習サンプルを所定の角度だけロール回転、または左右方向に反転した画像に相当し、前記第２の下位ノードは、前記第１のノードの前記識別処理に利用される前記２画素の位置を、前記角度だけロール回転または左右方向に反転し、その結果得られた位置の前記入力された信号に応じた画像上の２画素の値の差と、前記第１のノードの前記識別処理に利用される前記閾値との差に基づいて識別処理を行うことができる。
【００４４】
識別処理が施される信号を取得し、前記上位ノード、前記第１の下位ノード、または前記第２の下位ノードに出力する出力手段をさらに設け、前記出力手段には、前記第２の下位ノードが、前記第１のノードの前記識別処理に利用される前記２画素の位置を、前記角度だけロール回転し、その結果得られた位置の前記入力された信号に応じた画像上の２画素の値の差と、前記第１のノードの前記識別処理に利用される前記閾値との差に基づいて前記識別処理を行う場合、前記学習サンプルの大きさよりも大きい画像の画像信号を、前記第２の下位ノードに出力させることができる。
【００４５】
前記上位ノードおよび前記第１の下位ノードを構成する弱判別器は、前記学習サンプルを、前記出力手段により出力された画像信号に応じた画像と中心を合わせて前記角度だけロール回転し、前記画像信号に応じた画像からはみ出る領域については学習を行わないようにすることができる。
【００４６】
前記上位ノード並びに前記第１および第２の下位ノードは、判別結果を、信頼度により重み付けして累積し、その累積和に基づいて、前記認識処理を打ち切る打ち切り手段を設けることができる。
【００４７】
前記打ち切り手段は、前記判別結果が重み付け累積される毎に、または所定の数分の判別結果が重み付け累積される毎に、前記認識処理の打ち切りを判定することができる。
【００４８】
本発明の一側面の情報処理方法は、第１のラベルの学習サンプル、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプルを学習した複数の弱判別器よりなる上位ノードと、前記上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる第１の下位ノードと、弱判別器を有しない第２の下位ノードとを備える情報処理装置が実行する情報処理方法であって、前記第１の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理を行うステップと、前記第２の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処理を行うステップとを含む。
【００４９】
本発明の一側面の記録媒体に記録されるプログラムおよびプログラムは、第１のラベルの学習サンプル、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプルを学習した複数の弱判別器よりなる上位ノードと、前記上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる第１の下位ノードと、弱判別器を有しない第２の下位ノードとを備える情報処理装置に、前記第１の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理を行うステップと、前記第２の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処処理を行うステップとを実行させるためのプログラムである。
【００５０】
本発明の一側面の情報処理装置、情報処理方法、またはプログラムにおいては、第１のラベルの学習サンプル、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプルを学習した複数の弱判別器よりなる上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる前記第１の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理が行われ、弱判別器を有しない第２の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処処理が行われる。
【発明の効果】
【００５１】
本発明によれば、顔画像の判別工程において必要な辞書データを小さくすることができる。
【発明を実施するための最良の形態】
【００５２】
以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００５３】
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
【００５４】
本発明の一側面の情報処理装置は、
第１のラベルの学習サンプル（例えば、図３６のラベルＷ１１の画像）、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプル（例えば、図３６のラベルＷ１１の画像を＋２０度ロール回転すれば得ることができるラベルＷ１２の画像）を学習した複数の弱判別器よりなる上位ノード（例えば、図３２の学習済みノード８１−１−１）と、
前記上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる第１の下位ノード（例えば、図３２の学習済みノード８１−１−１−１）と、
弱判別器を有しない第２の下位ノード（例えば、図３２の未学習ノード８１−１−１−２）と
を備え、
前記第１の下位ノードは、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理を行い、
前記第２の下位ノードは、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処処理を行う。
【００５５】
前記上位ノードおよび第１の下位ノードの前記弱判別器は、前記学習サンプルの画像データの２画素の値の差と閾値との差に基づいて前記識別処理を行い、
前記第２の下位ノードは、前記第１のノードの前記識別処理に利用される前記２画素の位置を、前記座標上の関係に基づいて座標変換し（例えば、図３７または図３８）、その結果得られた位置の前記入力された信号に応じた画像上の２画素の値の差と、前記第１のノードの前記識別処理に利用される前記閾値との差に基づいて前記識別処理を行うことができる。
【００５６】
前記第２のラベルの学習サンプルは、前記第１のラベルの学習サンプルを所定の角度だけロール回転、または左右方向に反転した画像に相当し、
前記第２の下位ノードは、前記第１のノードの前記識別処理に利用される前記２画素の位置を、前記角度だけロール回転または左右方向に反転し（例えば、図３７または図３８）、その結果得られた位置の前記入力された信号に応じた画像上の２画素の値の差と、前記第１のノードの前記識別処理に利用される前記閾値との差に基づいて識別処理を行うことができる。
【００５７】
識別処理が施される信号を取得し、前記上位ノード、前記第１の下位ノード、または前記第２の下位ノードに出力する出力手段（例えば、図１２の走査部５４）をさらに備え、
前記出力手段は、
前記第２の下位ノードが、前記第１のノードの前記識別処理に利用される前記２画素の位置を、前記角度だけロール回転し、その結果得られた位置の前記入力された信号に応じた画像上の２画素の値の差と、前記第１のノードの前記識別処理に利用される前記閾値との差に基づいて前記識別処理を行う場合、前記学習サンプルの大きさよりも大きい画像の画像信号（例えば、図３９Ｂ）を、前記第２の下位ノードに出力することができる。
【００５８】
前記上位ノードおよび前記第１の下位ノードを構成する弱判別器は、前記学習サンプルを、前記出力手段により出力された画像信号に応じた画像と中心を合わせて前記角度だけロール回転し、前記画像信号に応じた画像からはみ出る領域（図３９Ｂの四隅の画素）については学習を行わないようにすることができる。
【００５９】
前記上位ノード並びに前記第１および第２の下位ノードは、判別結果を、信頼度により重み付けして累積し、その累積和に基づいて、前記認識処理を打ち切る打ち切り手段（例えば、図３４のステップＳ１７５の処理を行う図２９の判定部４７２）を設けることができる。
【００６０】
前記打ち切り手段は、前記判別結果が重み付け累積される毎に、または所定の数分の判別結果が重み付け累積される毎に、前記認識処理の打ち切りを判定することができる。
【００６１】
本発明の情報処理方法は、
第１のラベルの学習サンプル（例えば、図３６のラベルＷ１１の画像）、および前記第１のラベルの学習サンプルと座標上所定の関係がある第２のラベルの学習サンプル（例えば、図３６のラベルＷ１１の画像を＋２０度ロール回転すれば得ることができるラベルＷ１２の画像）を学習した複数の弱判別器よりなる上位ノード（例えば、図３２の学習済みノード８１−１−１）と、
前記上位ノードの判別結果に基づいて、前記第１のラベルの前記学習サンプルを学習した複数の弱判別器よりなる第１の下位ノード（例えば、図３２の学習済みノード８１−１−１−１）と、
弱判別器を有しない第２の下位ノード（例えば、図３２の未学習ノード８１−１−１−２）と
を備える情報処理装置が実行する情報処理方法であって、
前記第１の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１のラベルの画像を認識する識別処理を行うステップ（例えば、図３３のステップＳ１２１）と、
前記第２の下位ノードが、入力された信号に対して、前記上位ノードの判別結果に基づいて、前記第１の下位ノードの弱判別器を前記座標上の関係に応じて利用し、前記第２のラベルの画像を識別する識別処理を行うステップ（例えば、図３３のステップＳ１６３）と
を含む。
【００６２】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００６３】
この実施の形態は、本発明を、アンサンブル学習（集団学習）を利用して画像から対象物を検出する情報処理装置を対象物検出装置に適用したものである。
【００６４】
集団学習によって得られる学習機械は、多数の弱仮説と、これらを組み合わせる結合機（combiner）とからなる。
【００６５】
入力によらず、固定した重みで弱仮説の出力を統合する結合機の一例としてブースティングがある。
【００６６】
ブースティングにおいては、前に生成した弱仮説の学習結果を使用して、間違いが発生した学習サンプル（例題）の重みを増すように、学習サンプルが従う分布が加工され、この分布に基づき新たな弱仮説の学習が行われる。これにより不正解が多く対象物として判別が難しい学習サンプルの重みが相対的に上昇し、結果的に重みが大きい、即ち判別が難しい学習サンプルを正解させるような弱判別器が逐次選択される。この場合、学習における弱仮説の生成は逐次的に行われ、後から生成された弱仮説はその前に生成された弱仮説に依存することになる。
【００６７】
対象物を検出する際には、上述のようにして学習により逐次生成された多数の弱仮説の判別結果が使用される。例えばAdaBoost（アダブースト）の場合は、この学習により生成された弱仮説（以下、弱判別器と称する）全ての判別結果（対象物であれば１、非対象物であれば−１）が結合機に供給され、結合機は、全判別結果に対して、対応する弱判別器毎に学習時に算出された信頼度を重み付け加算し、その重み付き多数決の結果を出力し、結合機の出力値を評価することで、入力された画像が対象物か否かを選択する。
【００６８】
弱判別器は、なんらかの特徴量を使用して、対象物かまたは非対象物であるかの判定を行うものである。なお、弱判別器の出力は対象物か否かを確定的に出力してもよく、対象物らしさを確率密度などで確率的に出力してもよい。
【００６９】
本実施の形態においては、２つのピクセル間の輝度値の差という極めて簡単な特徴量（ピクセル間差分特徴）を使用して対象物か否かを判別する弱判別器を使用した集団学習装置を利用するが、判別するビューのうちの所定のビューの学習サンプルのみを学習し、その学習結果を利用して、他のビューも判定することができるようになされている。
【００７０】
すなわち本発明は、特に、判別工程に関するが、理解のために、特許文献１と同様に、
（１）対象物検出装置
（２）集団学習機
（２−１−１）２値出力の弱判別器
（２−１−２）連続値出力の弱判別器
（２−２）打ち切り閾値
（３）弱判別器の組立構造
（４）学習方法
（４−１）判別器の生成
（４−２）弱判別器の生成
の項目を設け、基本的に特許文献１と同様の説明をした後、
（５）対象物検出方法の項目で、特に本発明に関する部分を説明する。
【００７１】
（１）対象物検出装置の構成
図１２は、本発明を適用した対象物検出装置５１の構成例を示している。対象物検出装置５１は、与えられる画像（入力画像）の中から対象物体を検出する。
【００７２】
画像出力部５２は、図１の画像出力部２と同様に、対象物検出装置５１に入力された入力画像としての濃淡画像（輝度画像）を出力する。
【００７３】
スケーリング部５３は、図１のスケーリング部３と同様に、入力画像の拡大または縮小、すなわちスケーリングを行う。
【００７４】
走査部５４は、図１の走査部４と同様に、スケーリングされた入力画像を、所定サイズのウインドウで、例えば左上から右下に向けて順次スキャンして、ウインドウ内の画像をウインドウ画像として出力する。
【００７５】
判別器５５は、後述するような、複数の弱判別器等を有するツリー構造のノードにより構成され、走査部５４にて順次スキャンされた各ウインドウ画像が対象物か非対象物かを判別する。
【００７６】
すなわち、スケーリング部５３は、入力画像を指定された全てのスケールに拡大または縮小したスケーリング画像を出力する。
【００７７】
走査部５４は、各スケーリング画像について、検出したい対象物の大きさとなるウインドウを順次スキャンしてウインドウ画像を切り出し、判別器５５は、各ウインドウ画像が顔か否かを判別する。
【００７８】
判別器５５は、判別器５５を構成する複数の弱判別器の集団学習を実行する集団学習機５６の学習結果を参照して、現在のウインドウ画像が、例えば顔画像などの対象物であるか、または非対象物（顔画像以外の画像）であるかを判別する。
【００７９】
また、対象物検出装置５１は、入力画像から複数の対象物が検出された場合は、複数の領域情報を出力する。更に、複数の領域情報のうち領域が重なりあっている領域が存在する場合は、後述する方法で最も対象物とされる評価が高い領域を選択する処理も行うことができる。
【００８０】
画像出力部５２から出力された画像（濃淡画像）は、先ずスケーリング部５３に入る。スケーリング部５３では、バイリニア補完を用いた画像の縮小が行われる。本実施の形態においては、スケーリング部５３で最初に複数の縮小画像を生成するのではなく、必要とされる画像を走査部５４に対して出力し、その画像の処理を終えた後で、次の更に小さな縮小画像を生成するという処理が繰り返される。
【００８１】
すなわち、図２に示した場合と同様に、スケーリング部５３は、先ず、入力画像１０Ａをそのまま走査部５４へ出力する。そして、スケーリング部５３は、入力画像１０Ａについて走査部５４および判別器５５の処理が終了するのを待った後、入力画像１０Ａのサイズを縮小した入力画像１０Ｂを生成する。さらに、スケーリング部５３は、この入力画像１０Ｂにおける走査部５４および判別器５５の処理が終了するのを待って、入力画像１０Ｂのサイズを更に縮小した入力画像１０Ｃを走査部５４に出力するというように、より小さく縮小した縮小画像１０Ｄ、１０Ｅなどを順次生成していき、縮小画像の画像サイズが、走査部５４にて走査するウィンドウサイズより小さくなった時点で処理を終了する。この処理の終了をまって、画像出力部５２は、次の入力画像をスケーリング部５３に出力する。
【００８２】
走査部５４では、図３に示した場合と同様に、与えられた例えば画像１０Ａに対して、後段の判別器５５が受け付けるウィンドウサイズと同じ大きさのウインドウ１１を画像（画面）の全体に対して順次当てはめていき、各位置におけるウインドウ１１内の画像（以下、切り取り画像またはウインドウ画像と称する）を判別器５５に出力する。
【００８３】
ウインドウ１１の走査は、図４に示した場合と同様に、１画素単位で行われる。すなわち、所定の位置におけるウインドウ１１内の切り取り画像が走査部５４から出力された後、次の走査においては、ウインドウ１１が１画素分右方向に移動され、その位置におけるウインドウ１１内の切り取り画像が判別器５５に供給される。
【００８４】
なお、ウィンドウサイズは一定であるが、上述したように、スケーリング部５３により入力画像が順次縮小され、入力画像の画像サイズが様々なスケールに変換されるため、任意の大きさの対象物体を検出することが可能となる。
【００８５】
すなわち、入力画像上の顔の大きさが、どのような大きさであったとしても、画像サイズが順次縮小されることで、いつかはウィンドウサイズとほぼ同じ大きさの画像となる。その結果、そのウインドウ１１内の画像が、人の顔の画像であるか否かを検出することができる。
【００８６】
判別器５５は、前段から与えられた切り取り画像が、例えば顔などの対象物体であるか否かを判定する。
【００８７】
判別器５５は、図１３に示されるように、アンサンブル学習（Ensemble learning）により得られた複数の弱判別器６１i（ｉ＝１，２，３，・・・，Ｋ）と、これらの出力（判別結果）に、それぞれ対応する重みαi（ｉ＝１，２，３，・・・，Ｋ）を乗算し、重み付き多数決Ｆ(x)を求める加算器６２とを有する。
【００８８】
弱判別器６１1乃至６１Kは、それぞれウインドウ１１内の画素のうちの任意の位置の２つの画素に基づき、そのウインドウ１１内の画像が、人の顔の画像であるか否かを判別する。Ｋは、ウインドウ１１内の画像から抽出可能な２個の画素の組み合わせの数に対応する。
【００８９】
判別器５５においては、入力されるウインドウ画像に対し、各弱判別器６１iが対象物である否かの推定値ｆ(x)を逐次出力し、加算器６２が重み付き多数決Ｆ(x)を算出して出力する。この重み付き多数決Ｆ(x)の値に応じ、図示せぬ判定手段が、ウインドウ画像が対象物か否かを最終的に判定する。
【００９０】
集団学習機５６は、後述する方法にて、弱判別器６１iと、それらの出力（推定値）に乗算する重みを集団学習により予め学習する。
【００９１】
集団学習としては、複数の判別器の結果を多数決にて求めることができるものであれば、具体的にはどんな手法でも適用可能である。例えば、データの重み付けを行って重み付き多数決行うアダブースト（AdaBoost）などのブースティングを用いた集団学習を適用することができる。
【００９２】
判別器５５を構成する各弱判別器６１iは、判別のための特徴量として、２つの画素間の輝度値の差分（ピクセル間差分特徴）を使用する。そして、各弱判別器６１iは、対象物か非対象物であるかのラベリングが予め施された複数の濃淡画像からなる学習サンプルにより学習された特徴量と比較し、ウインドウ画像が対象物であるか否かを推定するための推定値を確定的または確率的に出力する。
【００９３】
加算器６２は、弱判別器６１iの推定値に、各弱判別器６１iに対する信頼度となる重みを乗算し、これを加算した値（重み付き多数決の値）を出力する。AdaBoostでは、複数の弱判別器６１iは、順次推定値を算出し、これに伴い重み付き多数決の値が逐次更新されていく。
【００９４】
これら複数の弱判別器は、集団学習機５６により後述するアルゴリズムに従い、上述の学習サンプルを使用して集団学習により逐次的に生成されたものであり、例えばその生成順に上記推定値を算出する。また、重み付き多数決の重み（信頼度）は、弱判別器を生成する後述する学習工程にて学習される。
【００９５】
弱判別器６１iは、例えばAdaBoostのように、弱判別器が２値出力を行う場合は、ピクセル間差分特徴を閾値で二分することで、対象物体であるかどうかの判別を行う。閾値により判別を行う場合、複数の閾値を用いてもよい。また、弱判別器は、例えばReal-AdaBoostのように、ピクセル間差分特徴から対象物体かどうかを表す度合いの連続値を確率的に出力してもよい。これら弱判別器６１iが必要とする判別のための特徴量なども学習時に上記アルゴリズムに従って学習される。
【００９６】
更に、本実施の形態では、重み付き多数決の際、全ての弱判別器の計算結果を待たず、計算途中であっても、その値によっては対象物体でないと判断して計算を打ち切るため、打ち切りの閾値（基準値）が学習工程で学習される。この打ち切り処理によって、検出処理における演算量を大幅に削減することが可能となる。これにより、全ての弱判別器の計算結果を待たず、計算途中で次のウインドウ画像の判別処理に移ることができ、迅速な処理が可能となる。
【００９７】
このように、判別器５５は、ウインドウ画像が対象物か否かを判定するための評価値として重み付き多数決を算出し、その評価値に基づきウインドウ画像が対象物か否かを判定する判定手段として機能する。
【００９８】
更に判別器５５は、予め学習により生成された複数の弱判別器が推定値を出力する毎に、その推定値に対して学習により得られた各弱判別器に対する重みを乗算して加算した重み付き多数決の値を更新し、この重み付き多数決の値（評価値）を更新する毎に、上記打ち切り閾値を利用して推定値の算出を打ち切るか否かをも制御する。
【００９９】
この判別器５５は、集団学習機５６において、学習サンプルを使用し、所定のアルゴリズムに従って集団学習することにより生成される。ここでは先ず、集団学習機５６における集団学習方法について説明し、次に、その集団学習により得られた判別器５５を使用し、入力画像から対象物を判別する方法について説明する。
【０１００】
（２）集団学習機
ブースティングアルゴリズムを用いて集団学習する集団学習機５６は、上述したように複数の弱判別器を複数個組み合わせ、結果的に強い判別結果が得られるよう学習する。
【０１０１】
弱判別器は、１つ１つは、極めて簡単な構成とされ、１つでは顔か顔でないかの判別能力も低いものであるが、これを例えば数百乃至数千個組み合わせることで、高い判別能力を持たせることができる。
【０１０２】
この集団学習機５６は、例えば数千の学習サンプルといわれる予め正解付け（ラベリング）された対象物と非対象物、例えば顔画像と非顔画像とからならなるサンプル画像を使用し、多数の学習モデル（仮説の組み合わせ）から所定の学習アルゴリズムに従って１つの仮説を選択（学習）することで弱判別器を生成し、この弱判別器の組み合わせ方を決定していく。
【０１０３】
弱判別器は、それ自体では判別性能が低いものであるが、これらの選別、組み合わせ方により、結果的に判別能力が高い判別器を得ることができるため、集団学習機５６では、弱判別器の組み合わせ方、即ち弱判別器の選別およびそれらの出力値を重み付き多数決する際の重みなどの学習をする。
【０１０４】
次に、適切な弱判別器を学習アルゴリズムに従って多数組み合わせた判別器を得るための集団学習機５６の学習方法について説明するが、集団学習機５６の学習方法の説明に先立ち、集団学習にて学習する学習データの中の、弱判別器を構成するためのピクセル間差分特徴、並びに判別工程（検出工程）において、検出を途中で打ち切るための打ち切り閾値（基準値）について説明しておく。
【０１０５】
（２−１）弱判別器の構成（ピクセル間差分特徴）
本実施の形態における判別器５５は、複数の弱判別器で構成される。この弱判別器は、入力される画像に含まれる全画素の中から選択された２つの画素の輝度値の差分（ピクセル間差分特徴）により顔か否かを判別する極めて簡単な構成とされる。これにより、判別工程において、弱判別器の判別結果の算出が高速化される。
【０１０６】
弱判別器に入力される画像は、学習工程では、学習サンプルであり、判別（識別）工程では、スケーリング画像から切り出されたウインドウ画像である。
【０１０７】
図１４は、ピクセル間差分特徴を説明するための画像を示す模式図である。画像７０において、本実施の形態においては、任意の２つの画素の輝度値の差、例えば画素７１の輝度値Ｉ1と、画素７２の輝度値Ｉ2との差、即ち下記式（１）で得られる値ｄがピクセル間差分特徴と定義される。
【０１０８】
【数１】
0004556891.tif 000002
【０１０９】
どのピクセル間差分特徴ｄを顔検出に使用するかが弱判別器の能力となる。従って、サンプル画像またはウインドウ画像に含まれる任意の２画素の組み合わせ（フィルタまたは弱仮説ともいう）から、弱判別器に使用するピクセル位置の組を選択する必要がある。
【０１１０】
例えばAdaBoostでは、弱判別器に、＋１（対象物体である）か、または−１（非対象物体）であるかの確定的な出力を要求する。そこで、AdaBoostにおいては、ある任意のピクセル位置において、そのピクセル間差分特徴ｄを、１または複数の閾値を利用して２分割（＋１または−１）することをもって弱判別器とすることができる。
【０１１１】
また、このような２値出力ではなく、学習サンプルの確率分布を示す連続値（実数値）を確率的に出力するような例えばReal-AdaBoostまたはGentle Boostなどのブースティングアルゴリズムの場合、弱判別器は、入力された画像が対象物である確からしさ（確率）を出力する。弱判別器の出力は、このように確定的であっても確率的であってもよい。先ず、これら２値出力の弱判別器について説明する。
【０１１２】
（２−１−１）２値出力の弱判別器
確定的な出力をする弱判別器は、ピクセル間差分特徴ｄの値に応じて、対象物か否かの２クラス判別を行う。対象画像領域中のある２つのピクセルの輝度値をＩ1、Ｉ2とし、ピクセル間差分特徴ｄにより対象物か否かを判別するための閾値をTh1とすると、下記式（２）を満たすか否かで、いずれのクラスに属するかを決定することができる。
【０１１３】
【数２】
0004556891.tif 000003
【０１１４】
ここで、弱判別器を構成するには、２つのピクセル位置と、その閾値を決定する必要があるが、その決定方法については後述する。上記式（２）の閾値判定は最も単純な場合である。また、閾値判定には、次の下記式（３）または式（４）に示す２つの閾値を用いることもできる。
【０１１５】
【数３】
0004556891.tif 000004
【０１１６】
【数４】
0004556891.tif 000005
【０１１７】
図１５Ａ乃至図１５Ｃは、縦軸に頻度をとり、横軸にピクセル間差分特徴ｄをとって、それぞれ上記式（２）乃至式（４）に示す３つの判別方法を、データの頻度分布の特徴的なケースに合わせて示す模式図である。図１５Ａ乃至図１５Ｃにおいては、ｙiは弱判別器の出力を示し、破線が、ｙi＝−１（非対象物）であると判定された学習サンプルの分布を示し、実線が、ｙi＝１（対象物）であると判定された学習サンプルの分布を示す。多数の顔画像と非顔画像からなる学習サンプルに対し、同一のピクセル間差分特徴ｄに対する頻度を取ると、図１５Ａ乃至図１５Ｃに示されるヒストグラムが得られる。
【０１１８】
なお、実線と破線は、それぞれ、ｙi＝１、またはｙi＝−１と判定された頻度を独立に表している。従って、例えば、図１５Ａのピクセル間差分特徴ｄの合計した分布は、図１６に示されるようになる。
【０１１９】
図１５Ａに示されるように、ヒストグラムが、例えば、非対象物を示す破線の分布と、対象物を示す実線の分布が、同様な正規曲線のように分布し、そのピーク位置が左右にずれているような場合は、その境界部に閾値Th1を設定し、上記式（２）にて対象物か否かを判別することができる。
【０１２０】
例えばAdaBoostにおいては、弱判別器の出力（判別結果）をｆ(x)としたとき、出力ｆ(x)＝１（対象物）またはｆ(x)＝−１（非対象物）となる。図１５Ａは、ピクセル間差分特徴ｄが閾値Th1より大きい場合に対象物であると判定され、弱判別器の出力がｆ(x)＝１となる例を示している。
【０１２１】
また、２つのヒストグラムのピーク位置が同じような位置にあって、その分布の幅が異なるような場合、分布が狭い方のピクセル間差分特徴ｄの上限値近傍および下限値近傍を閾値として、上記式（３）または式（４）により、対象物か否かを判別することができる。
【０１２２】
図１５Ｂは、分布の幅が狭い方が対象物と判定され、弱判別器の出力がｆ(x)＝１となる例を、図１５Ｃは、分布の幅が広い方から分布の幅が狭い方を除いたものが対象物と判定され、弱判別器の出力がｆ(x)＝１となる例を、それぞれ示している。
【０１２３】
弱判別器は、あるピクセル間差分特徴ｄとその閾値とを決定することにより構成されるが、その判定によって誤り率ができるだけ小さくなるような、即ち判別率が高いピクセル間差分特徴ｄを選択する必要がある。
【０１２４】
例えば、閾値は、２つの画素位置を決め、正解付けされた学習サンプルに対して、図１５に示されるようなヒストグラムを求め、最も正解率が高くなる閾値、換言すれば、非正解率（誤り率）が最も小さくなるような閾値を検索することで決定される。
【０１２５】
また、２つの画素位置は、閾値と共に得られる誤り率が最も小さいものを選択するなどすればよい。但し、AdaBoostにおいては、判別の難易度を反映した重み（データ重み）が各学習サンプルに付けられており、適切なピクセル間差分特徴ｄ（どの位置の２つのピクセルの輝度値を特徴値とするか）が後述する重み付き誤り率を最小にするように学習される。
【０１２６】
（２−１−２）連続値出力の弱判別器
確率的な出力をする弱判別器としては、上述した如く、例えばReal-AdaBoostまたはGentle Boostなどのように弱判別器が連続値を出力するものがある。この場合、弱判別器は、ある決められた一定値（閾値）により判別問題を解き、２値出力（ｆ(x)＝１または−１）する上述の場合と異なり、入力された画像が対象物である度合いを、例えば確率密度関数として出力する。
【０１２７】
このような、対象物体である度合い（確率）を示す確率的な出力は、ピクセル間差分特徴ｄを入力としたときＰp(x)を学習サンプルの対象物の確率密度関数、Pｎ(x)を学習サンプルの非対象物の確率密度関数とすると、下記式（５）に示す関数ｆ(x)とすることができる。
【０１２８】
【数５】
0004556891.tif 000006
【０１２９】
図１７Ａは、縦軸に確率密度をとり、横軸にピクセル間差分特徴ｄをとって、データの頻度分布の特徴的なケースを示す図であり、図１７Ｂは、縦軸に関数ｆ(x)の値をとり、横軸にピクセル間差分特徴ｄをとって、図１７Ａに示すデータ分布における関数ｆ(x)を示すグラフである。図１７Ａにおいて、破線が非対象物体であることを示す確率密度、実線が対象物体であることを示す確率密度を、それぞれ示す。上記式（５）から関数ｆ(x)を求めると、図１７Ｂに示すグラフが得られる。弱判別器は、学習工程または判別工程において、入力される学習サンプルまたはウインドウ画像から得られた上記式（１）に示すピクセル間差分特徴ｄに対応する関数ｆ(x)を出力する。この関数ｆ(x)は、対象物らしさの度合いを示すものであって、例えば非対象物を−１、対象物を１としたとき、−１乃至１までの連続値を取るものとすることができる。例えばピクセル間差分特徴ｄとそれに対応するｆ(x)とからなるテーブルを記憶し、入力に応じてテーブルからｆ(x)を読出し出力する。従って、一定値である閾値Th1またはTh11，Th12，Th21，Th22より若干記憶量が大きくなるが判別性能が向上する。
【０１３０】
これら複数の推定方法（判別方法）は、アンサンブル学習中に組み合わせて使用することで、判別性能が向上することが期待できる。また、いずれか単一の判別方法のみを利用すれば、実行速度性能を引き出すことができる。
【０１３１】
ピクセル間差分特徴ｄを上述の判別方法のうち最も単純な式（２）に示す閾値判定によっても極めてよい判別結果が得られるが、どのような判別方法により弱判別器が有効に機能するかは、対象とする問題によって異なり、その閾値設定方法などを適宜選択すればよい。また、問題によっては、２つの画素の輝度値の差ではなく、３個以上の画素の輝度値の差を特徴量としてもよい。
【０１３２】
（２−２）打ち切り閾値
次に、打ち切り閾値について説明する。
【０１３３】
ブースティングを用いた集団学習機においては、通常は、上述したように判別器５５を構成する全弱判別器の出力の重み付き多数決によりウインドウ画像が対象物か否かを判別する。
【０１３４】
重み付き多数決は、弱判別器の判別結果（推定値）を逐次足し合わせていくことで算出される。例えば、弱判別器の個数をｔ（＝１，・・・，Ｋ）、各弱判別器に対応する多数決の重み（信頼度）をαt、各弱判別器の出力をｆt(x)としたとき、AdaBoostにおける重み付き多数決の値Ｆ(x)は、下記式（６）により求めることができる。
【０１３５】
【数６】
0004556891.tif 000007
【０１３６】
図１８は、横軸に弱判別器の数をとり、縦軸に上記式（６）に示す重み付き多数決の値Ｆ(x)をとって、入力される画像が対象物か否かに応じた重み付き多数決の値Ｆ(x)の変化を示すグラフである。
【０１３７】
図１８において、破線で示すデータＶ１乃至Ｖ４は、対象物としてラベリングされている画像（学習サンプル）を入力として、弱判別器により推定値ｆ(x)を逐次算出し、その重み付き多数決の値Ｆ(x)を逐次求めたものである。このデータＶ１乃至Ｖ４に示されるように、対象物を入力画像とすると、ある程度の個数の弱判別器の判別によりその重み付き多数決の値Ｆ(x)はプラス（正）になる。
【０１３８】
本実施の形態においては、通常のブースティングアルゴリズムとは異なる手法が導入される。すなわち、弱判別器の判別結果を逐次足し合わせていく過程において、全ての弱判別器の結果を得る前であっても、明らかに対象物ではないと判別できるウインドウ画像については、その判別が中止される。判別を中止するか否かを決定する打ち切り閾値（基準値）は、学習工程にて学習される。
【０１３９】
この打ち切り閾値により、全弱判別器の出力結果を用いなくとも、非対象物であることが確実に推定できる場合、弱判別器の推定値ｆ(x)の演算を途中で中止することができ、これにより、全ての弱判別器を使用した重み付き多数決を行うのに比して、格段に演算量を低減し、処理の迅速化が可能となる。
【０１４０】
この打ち切り閾値は、ラベリングされている学習サンプルのうち、検出対象物を示す学習サンプルの判別結果の重み付き多数決の値が取りえる最小値とすることができる。
【０１４１】
判別工程において、ウインドウ画像の弱判別器による判別結果が、逐次重み付きされて出力される。即ち、重み付き多数決の値が逐次更新されていくが、この更新されていく値と、上記打ち切り閾値とを更新の度、即ち１つの弱判別器が判別結果を出力する毎に比較し、更新された重み付き多数決の値が打ち切り閾値を下まわる場合には、当該ウインドウ画像は対象物ではないとし、計算を打ち切ることができ、これにより無駄な演算を省いて、判別処理を高速化することができる。
【０１４２】
すなわち、Ｍ番目の弱判別器の出力ｆM(x)の打ち切り閾値ＲMは、学習サンプルｘi（ｉ＝１乃至Ｎ）のうち、対象物である学習サンプル（ポジティブサンプル）ｘj（ｊ＝１乃至Ｊ）を使用したときの重み付き多数決の値Ｆ(x)の最小値とされ、下記式（７）のように定義される。
【０１４３】
【数７】
0004556891.tif 000008
【０１４４】
この式（７）に示されるように、対象物である学習サンプルｘ1乃至ｘJの重み付き多数決の値Ｆ(x)の最小値が０を上回る場合には打ち切り閾値ＲMには０が設定される。なお、０を上回らないようにするのは、０を閾値にして判別を行うAdaBoostの場合であり、ここは集団学習の手法により異なる場合がありうる。
【０１４５】
AdaBoostの場合においては、打ち切り閾値ＲMは、図１８の実線で示されるように、入力画像として対象物を入力した場合の全データＶ１乃至Ｖ４の重み付き多数決の値Ｆ(x)のうち、取りうる最小値に設定され、全てのデータＶ１乃至Ｖ４の重み付き多数決の値Ｆ(x)の最小値が０を超えた場合は、打ち切り閾値ＲMが０に設定される。
【０１４６】
本実施の形態においては、例えば、弱判別器が生成される毎の打ち切り閾値ＲM（Ｒ1乃至ＲK）を学習しておくことで、後述する判別工程において、例えばデータＶ５のように、複数の弱判別器により推定値が逐次出力され、重み付き多数決の値が逐次更新されていくが、この値が上記打ち切り閾値ＲMを下まわった時点で、後段の弱判別器による判別の処理が終了される。すなわち、この打ち切り閾値ＲMを学習しておくことにより、弱判別器の推定値を計算する毎に次の弱判別器の計算を行うか否かを決定でき、明らかに対象物ではないと判断される場合には、全ての弱判別器の判別結果を待たずに非対象物であることが判定でき、演算を途中で打ち切りことで検出処理を高速化することができる。
【０１４７】
（３）弱判別器の組立構造
次に本実施の形態における弱判別器の組立構造について説明する。本実施の形態においては、複数個の学習サンプルが学習に用いられる。各学習サンプルは、２４×２４画素で構成される。そして、各学習サンプルは、人の顔の画像とされ、照明条件や人種など、様々なバリエーションを含んだものとされる。
【０１４８】
また、本実施の形態においては、人の顔（頭）の姿勢に基づいてラベリングが行われる。
【０１４９】
本実施の形態においては、図１９に示されるように、正面を向いた顔とラベリングされた画像（ヨー角が、−１５度乃至＋１５度の範囲の画像）（以下、ラベルＷ１１の画像と称する）、左方向を向いた顔とラベリングされた画像（ヨー角が、＋１５度乃至＋６５度の範囲の画像）（以下、ラベルＷ２１の画像と称する）、および右方向を向いた顔とラベリングされた画像（ヨー角が、−６５度乃至−１５度の範囲の画像）（以下、ラベルＷ３１の画像と称する）、正面を向いた顔が＋２０度ロール回転した顔とラベリングされた画像（以下、ラベルＷ１２の画像と称する）、左方向を向いた顔が＋２０度ロール回転した顔とラベリングされた画像（以下、ラベルＷ２２の画像と称する）、および右方向を向いた顔が＋２０度ロール回転した顔とラベリングされた画像（以下、ラベルＷ３２の画像と称する）、並びに正面を向いた顔が−２０度ロール回転した顔とラベリングされた画像（以下、ラベルＷ１３の画像と称する）、左方向を向いた顔が−２０度ロール回転した顔とラベリングされた画像（以下、ラベルＷ２３の画像と称する）、および右方向を向いた顔が−２０度ロール回転した顔とラベリングされた画像（以下、ラベル３３の画像と称する）の９個のグループ（ラベル）に分類される（ラベリングされる）学習サンプルが用いられる。
【０１５０】
即ち、この例の場合人の顔は、ヨー角およびロール角（図７）によって決定され、所定の角度のヨー角とロール角を有する人の顔の画像が学習される。
【０１５１】
そして、本実施の形態においては、基本的に一定の数（例えば、１００個）の弱判定器によりノードが構成され、各ノードがツリー構造に配置される。学習が、従ってその識別が、各ラベルの画像を識別できるように行われる。そして上位の階層の弱判別器では、下位の階層の弱判別器で行われる学習で対象とされるすべてのラベルを含むように学習が行われる。
【０１５２】
例えば、ラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３の９個のラベルに分類された画像を学習する場合、図２０に示されるようなツリー構造が形成される。
【０１５３】
最上位のノード８１−１は、１００個の弱判別器９１−１1 乃至９１−１100により構成される。このノード８１−１は、ラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３の９個のラベル（すべてのラベル）に分類された学習サンプルを学習する。
【０１５４】
ノード８１−１の下位のノードとして、２個のノード８１−１−１および８１−１−２が形成されている。
【０１５５】
ノード８１−１−１は、１００個の弱判別器９１−１−１1乃至９１−１−１100 により構成され、ノード８１−１−２は、その符号の図示は省略するが、１００個の弱判別器９１−１−２1 乃至９１−１−２100により構成される。
【０１５６】
ノード８１−１−１およびノード８１−１−２は、より上位のノード８１−１の子ノードとなり、相対的にノード８１−１は、ノード８１−１−１および８１−１−２の親ノードとなる。ノード８１−１−１とノード８１−１−２は、親ノードであるノード８１−１に関して兄弟ノードとなる。親ノードと子ノードは相対的なものであり、親ノードでも、さらに上の階層のノードがあれば、それとの関係では子ノードとなる。
【０１５７】
ノード８１−１−１は、親ノード８１−１が学習するラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３の９個のラベルに分類された学習サンプルのうちの、正面の画像に関するラベルＷ１１乃至Ｗ１３の画像を学習する。
【０１５８】
ノード８１−１−２は、親ノード８１−１が学習するラベルのうちの、左向きの画像に関するラベルＷ２１乃至Ｗ２３の画像を学習する。
【０１５９】
ノード８１−１−１の下位のノード（子ノード）としては、ノード８１−１−１−１が設けられている。ノード８１−１−１−１は、１００個の弱判別器９１−１−１−１1 乃至９１−１−１−１100 により構成され、ラベルＷ１１の学習サンプルを学習する。
【０１６０】
ノード８１−１−１−１の下位のノード（子ノード）としては、ノード８１−１−１−１−１が設けられている。ノード８１−１−１−１−１は、それより下位のノードが存在しない末端のノードであり、弱判別器９１−１−１−１−１1 乃至９１−１−１−１−１L11 のＬ11個の弱判別器を有して構成され、ラベルＷ１１の学習サンプルを学習する。
【０１６１】
ノード８１−１−２の下位のノード（子ノード）としては、ノード８１−１−２−１が設けられている。ノード８１−１−２−１は、その符号の図示は省略するが、１００個の弱判別器９１−１−２−１1 乃至９１−１−２−１100により構成され、ラベルＷ２１の学習サンプルを学習する。
【０１６２】
ノード８１−１−２−１の下位のノード（子ノード）としては、ノード８１−１−２−１−１が設けられている。ノード８１−１−２−１−１は、それより下位のノードが存在しない末端のノードであり、その符号の図示は省略するが弱判別器９１−１−２−１−１1 乃至９１−１−２−１−１L21 のＬ21個の弱判別器を有して構成され、ラベルＷ２１の学習サンプルを学習する。
【０１６３】
末端のノード８１−１−１−１−１および８１−１−２−１−１の弱判別器の数Ｌ11およびＬ21は、各ノードが対応するラベルの学習サンプルを学習した場合において、その重み付き誤り率ｅtが０（充分小さい値）となる数とされる。
【０１６４】
このようにすることで、弱判別器の数を少なくすることが可能となる。
【０１６５】
即ち、このようにツリー構造にしないとすると、多くの弱判定器が必要になるのは、図８乃至図１１を参照して上述したとおりである。
【０１６６】
なお図２０に示すツリー構造は、同じ学習サンプルを学習するにも係らず図６に示すツリー構造とは異なり、ラベルＷ３１乃至ラベルＷ３３の画像を学習するノード（ノード３１−１−３に相当するノード）、並びにラベルＷ１２、ラベルＷ１３、ラベルＷ２２、ラベルＷ２３、ラベルＷ３１、ラベルＷ３２、およびラベルＷ３３のそれぞれを学習するノード（ノード３１−１−１−２，３１−１−１−２−１，３１−１−１−３，３１−１−１−３−１，３１―１−２−２，３１−１−２−２−１，３１−１−２−３，３１−１−２−３−１，３１−１−３−１，３１−１−３−１−１，３１−１−３−２，３１−１−３−２−１，３１−１−３−３，３１−１−３−３−１に相当するノード）が存在しないが、その理由は後述する。
【０１６７】
各ノードには、図２１に示されるように、データ構造の定義がなされる。
【０１６８】
ノードIDは、各ノードを識別する番号である。例えばノード８１−１−１のデータ構造においては、ノードIDは、ノード８１−１−１のノードIDが記述される。
【０１６９】
親ノードIDは、自分自身から見た親ノードのノードIDを表す。ノード８１−１−１の親ノードは、ノード８１−１であり、ノード８１−１のノードIDが記述される。なお親ノードが存在しない場合には（例えば、最上位のノード８１−１の場合には）、親ノードIDは、−１とされる。
【０１７０】
子ノードIDには、子ノードのIDが記述される。ただし、例えばノード８１−１−１−１−１は、末端のノードであり、子ノードを有していないため、−１とされる。
【０１７１】
ラベルは、このノードが処理するサンプルのラベルを表し、ノード８１−１−１−１−１のラベルはラベルＷ１１とされている。
【０１７２】
弱判別器の数は、自分自身が有する弱判別器の数を表し、ノード８１−１−１−１−１の場合、Ｌ11とされている。
【０１７３】
（４）学習方法
次に、集団学習機５６の学習方法について説明する。
【０１７４】
与えられたデータが、顔か否か、そして顔であるとして、いずれの方向を向いている顔であるのかのパターン認識問題の前提として、予め人手によりラベリング（正解付け）された学習サンプルとなる画像（訓練データ）が用意される。
【０１７５】
学習サンプルは、検出したい対象物体の領域を切り出した画像群（ポジティブサンプル）と、全く関係のない、例えば風景画などを切り出したランダムな画像群（ネガティブサンプル）とからなる。
【０１７６】
これらの学習サンプルを基に学習アルゴリズムを適用し、判別時に用いる学習データを生成する。判別時に用いる学習データとは、本実施の形態においては、上述した学習データを含む以下の４つの学習データである。すなわち、
（Ａ）２つのピクセル位置の組（Ｋ個）
（Ｂ）弱判別器の閾値（Ｋ個）
（Ｃ）重み付き多数決の重み（弱判別器の信頼度）（Ｋ個）
（Ｄ）打ち切り閾値（Ｋ個）
【０１７７】
こららの情報は、各ノードにデータ構造として、弱判別器毎に記述されている（図２１）。
【０１７８】
（４−１）判別器の生成
以下に、上述したような、ラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３に分類された学習サンプルから、上記（Ａ）乃至（Ｄ）に示す４種類の学習データを学習するアルゴリズムを説明する。
【０１７９】
この学習処理を実施するため、集団学習機５６は、図２２に示されるような機能的構成を有している。
【０１８０】
すなわち、集団学習機５６は、初期化部３０１、ノード学習部３０２、判定部３０３、選択部３０４、および復帰部３０５により構成されている。これらの各部は、必要なデータを相互に授受することが可能とされる。
【０１８１】
初期化部３０１は、各種の初期値を設定する。
【０１８２】
ノード学習部３０２は、各ノードにおける弱判別器の学習処理を行う。
【０１８３】
判定部３０３は、子ノードの数（size(numChild)と後述するブランチカウント（branch_count[i]）との比較や、ノードIDが正であるか否かの判定などを行う。
【０１８４】
選択部３０４は、次に処理するノードを選択する。
【０１８５】
復帰部３０５は、処理対象とするノードを親ノードに戻すなどの処理を行う。
【０１８６】
図２３は、集団学習機５６の学習方法を示すフローチャートである。なお、ここでは、学習アルゴリズムとして、弱判別の際の閾値として一定の値を使用するアルゴリズム（AdaBoost）に従った学習について説明するが、閾値として正解の確からしさ（確率）を示す連続値を使用する例えばReal-AdaBoostなど、弱判別器を複数結合するために集団学習するものであれば、学習アルゴリズムはAdaBoostに限らない。
【０１８７】
上述したように、最初に、予め対象物または非対象物であることがラベリングされたＮ個の学習サンプルが用意される。
【０１８８】
この学習サンプルは、例えば、Ｎ個の画像とされ、１個の画像は、２４×２４画像で構成される。各学習サンプルは、人の顔の画像とされ、ラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３のいずれかにラベリングされる。
【０１８９】
ステップＳ１１において、初期化部３０１は、初期値を設定する。
【０１９０】
具体的には、処理対象のノードのIDを表す変数ｉに、最も上位のノード（根元のノード）のID（図２０の例の場合、ノード８１−１のID）が設定される。また、全てのデータのデータ重みＤt に１／Ｎが設定される。Ｎは、サンプルの数を表す。さらに、全てのノードにおける多数決重みＦ(x)に０が初期設定され、各ノードから、それより下位のノード（子ノード）に訪ねた回数を表す変数branch_count[i]に０が初期設定される。
【０１９１】
ステップＳ１２において、ノード学習部３０２は、いま処理対象とされている変数ｉに設定されているIDを有するノードの学習処理を行う。
【０１９２】
その詳細は、図２５のフローチャートを参照して説明するが、これにより、いま処理対象とされているノードにおける弱判別器の学習が行われる。そのノードにおける処理結果は、子ノードに引き継ぐために保存される。
【０１９３】
いまの場合、変数ｉには、図２０のノード８１−１のIDが設定されているため、ノード８１−１の学習処理が行われる。
【０１９４】
次に、ステップＳ１３において、判定部３０３は、処理対象のノードの変数branch_count[i]の値と、処理対象のノードのデータ構造（図２１）の子ノードの数が設定された変数size(numChild)とを比較する。branch_count[i]の値が子ノードの数より小さい場合には、まだ全ての子ノードに対しての学習処理を完了していないことになるので、処理はステップＳ１４に進む。
【０１９５】
いまの場合、ノード８１−１のbranch_count[i]の値は０（ステップＳ１１の処理）であり、ノード８１−１は、２個の子ノード（８１−１−１および８１−１−２）を有しているので、ステップＳ１３においてはYESと判定され、処理はステップＳ１４に進む。
【０１９６】
ステップＳ１４において、選択部３０４は、次に処理するノードを選択する。
【０１９７】
具体的には、いま処理対象とされているノード８１−１の変数branch_count[i]の値が１だけインクリメントされ（いまの場合、１とされ）、さらに、処理対象とするノードを表す変数ｉに、変数branch_count[i]で表される子ノードのノードIDが設定される。
【０１９８】
図２０の例の場合、例えば、現在の処理対象のノード８１−１の子ノードであるノード８１−１−１のIDが変数ｉに設定される。
【０１９９】
その後、処理はステップＳ１２に戻り、変数ｉに設定されているノードに対するノードの学習処理が行われる。
【０２００】
いまの場合、ノード８１−１−１の学習処理が行われる。
【０２０１】
次にステップＳ１３で、処理対象のノードに対応する変数branch_count[i]の値が処理対象のノードの子ノードの数より小さいか否かが、判定部３０３により判定される。いまの場合、処理対象とされているノードはノード８１−１−１であり、その子ノードは、ノード８１−１−１−１の１個である。
【０２０２】
いま処理対象のノード８１−１−１の変数branch_count[i]も、ステップＳ１１の初期設定で０に設定されているため、変数branch_count[i]は、子ノードの数（＝１）より小さいと判定され、処理はステップＳ１４に進む。そして、ステップＳ１４で、処理対象のノード８１−１−１の変数branch_count[i]が１だけインクリメントされ（１とされ）、変数ｉに、ノード８１−１−１の子ノードであって、ノード８１−１−１のbranch_count[i]で表される子ノード８１−１−１−１のIDが変数ｉに設定される。
【０２０３】
その後、処理はステップＳ１２に戻り、変数ｉに設定されているIDのノードであるノード８１−１−１−１に対する学習処理が行われる。
【０２０４】
次にステップＳ１３で、処理対象のノードとなったノード８１−１−１−１の変数branch_count[i]の値が子ノードの数より小さいか否かが、判定部３０３により判定される。ノード８１−１−１−１の子ノードは、ノード８１−１−１−１−１の１個である。
【０２０５】
ノード８１−１−１−１の変数branch_count[i]も、ステップＳ１１の初期設定で０に設定されているため、変数branch_count[i]は、子ノードの数（＝１）より小さいと判定され、処理はステップＳ１４に進む。そして、ステップＳ１４で、ノード８１−１−１−１の変数branch_count[i]が１だけインクリメントされ（１とされ）、変数ｉに、ノード８１−１−１−１の子ノードであって、ノード８１−１−１−１のbranch_count[i]で表される子ノード８１−１−１−１−１のIDが変数ｉに設定される。
【０２０６】
その後、処理はステップＳ１２に戻り、変数ｉに設定されているIDのノードであるノード８１−１−１−１−１に対する学習処理が行われる。
【０２０７】
次にステップＳ１３で、処理対象となったノード８１−１−１−１−１の変数branch_count[i]の値が子ノードの数より小さいか否かが、判定部３０３により判定される。ノード８１−１−１−１−１は、末端のノードであるので、子ノードを有していない。
【０２０８】
ノード８１−１−１−１−１の変数branch_count[i]は、ステップＳ１１の初期設定で０に設定されているが、子ノードは０なので（変数branch_count[i]（＝０）は、子ノードの数（＝０）と等しいので）、子ノードの数より小さくないと判定され、ステップＳ１５に進む。
【０２０９】
ステップＳ１５において、復帰部３０５は、処理対象を親ノードに戻す処理を行う。
【０２１０】
具体的には、変数ｉに、現在処理対象とされているノードであるノード８１−１−１−１−１の親ノードであるノード８１−１−１−１のIDが設定される。
【０２１１】
そして、ステップＳ１６において、復帰部３０５は、ステップＳ１５で設定した変数ｉが、０より大きいか否かを判定する。
【０２１２】
最上位の親ノード（根元のノード）８１−１以外は、そのIDに正の値が設定されているので、ステップＳ１６では、いまの場合、YESの判定が行われる。そこで、復帰部３０５は、処理をステップＳ１３に戻す。
【０２１３】
ステップＳ１３で、判定部３０３は、変数ｉに設定されているIDのノード（いまの場合、ノード８１−１−１−１）の変数branch_count[i]が、その子ノードの数より小さいか否かを判定する。ノード８１−１−１−１の変数branch_count[i]には、いまの場合、１が設定されており、その子ノードの数は１なので（変数branch_count[i]（＝１）は、子ノードの数（＝１）と等しいので）、子ノードの数より小さくないと判定され、ステップＳ１５に進む。
【０２１４】
ステップＳ１５において、いまの場合、変数ｉに、現在処理対象とされているノードであるノード８１−１−１−１の親ノードであるノード８１−１−１のIDが設定される。
【０２１５】
そして、ステップＳ１６において、ノード８１−１−１のIDが設定されている変数iは、０より大きいので、YESの判定がなされ、処理は、ステップＳ１３に戻る。
【０２１６】
ステップＳ１３で、判定部３０３は、変数ｉに設定されているIDのノード８１−１−１の変数branch_count[i]が、その子ノードの数より小さいか否かを判定する。ノード８１−１−１の変数branch_count[i]には、いまの場合、１が設定されており、その子ノードの数は１なので（変数branch_count[i]（＝１）は、子ノードの数（＝１）と等しいので）、子ノードの数より小さくないと判定され、ステップＳ１５に進む。
【０２１７】
ステップＳ１５で、いまの場合、変数ｉに、現在処理対象とされているノードであるノード８１−１−１の親ノードであるノード８１−１が設定される。
【０２１８】
そして、ステップＳ１６において、ノード８１−１のIDが設定されている変数iは、０より大きいので、YESの判定がなされ、処理は、ステップＳ１３に戻る。
【０２１９】
ステップＳ１３で、判定部３０３は、変数ｉに設定されているIDのノード８１−１の変数branch_count[i]が、その子ノードの数より小さいか否かを判定する。ノード８１−１の変数branch_count[i]には、いまの場合、１が設定されており、その子ノードの数は２なので、子ノードの数より小さいと判定され、ステップＳ１４に進む。
【０２２０】
ステップＳ１４で、処理対象のノード８１−１の変数branch_count[i]が１だけインクリメントされ（２とされ）、変数ｉに、ノード８１−１の子ノードであって、ノード８１−１のbranch_count[i]で表される子ノードのノードIDが設定される。図２０の例の場合、ノード８１−１のもう１つの子ノードであるノード８１−１−２のIDが変数ｉに設定される。
【０２２１】
以下、同様にして、ノード８１−１−２、およびそれより下位のノードの学習が行われる。
【０２２２】
そして、図２０の例においては、最上位のノード８１−１（根元のノード）に遡り、ステップＳ１５において、その親ノードIDとして−１が変数iに設定されると、ステップＳ１６において、変数ｉ（＝−１）が０より大きくないと判定され、処理は終了される。
【０２２３】
以上のようにして、ツリー構造に配置された各ノードの弱判別器の学習が行われる。
【０２２４】
次に、図２３のステップＳ１２におけるノードの学習処理の詳細について説明する。
【０２２５】
この処理を行うために、図２２のノード学習部３０２は、図２４に示されるように構成されている。
【０２２６】
即ち、ノード学習部３０２は、サンプル選択部３３１、引継ぎ部３３２、弱判別器選択部３３３、多数決重み算出部３３４、データ重み更新部３３５、重み付き多数決演算部３３６、閾値演算部３３７、判定部３３８、および保存部３３９により構成されている。
【０２２７】
サンプル選択部３３１は、ノード学習に必要なポジティブサンプルとネガティブサンプルを選択する。
【０２２８】
引継ぎ部３３２は、前段のノードで保存された値を後段のノードの処理の初期値として引き継ぐ処理を行う。
【０２２９】
弱判別器選択部３３３は、データ重みＤt に基づいて弱判別器の選択処理を行う。
【０２３０】
多数決重み算出部３３４は、多数決重みαtを算出する。
【０２３１】
データ重み更新部３３５は、データ重みＤtを更新する処理を行う。
【０２３２】
重み付き多数決演算部３３６は、各弱判別器の出力を多数決重みαtで重み付けし、累積加算することで重み付き多数決を演算する。具体的には、上述した式（６）の演算を行う。
【０２３３】
閾値演算部３３７は、式（７）で示した打ち切り閾値（基準値ＲM）を算出する。
【０２３４】
判定部３３８は、重み付き多数決の値が閾値演算部３３７により演算された打ち切り閾値ＲM より小さくなったか否か、あるいは、そのノードにおける全ての弱判別器の学習処理を終了したか否かなどの判定を行う。
【０２３５】
保存部３３９は、そのノードにおける最後の弱判別器の判別結果（ノードの出力）として、重み付き多数決Ｆ(x)とデータ重みＤtを保存する。
【０２３６】
次に、図２５のフローチャートを参照して、ノードの学習処理について説明する。
【０２３７】
最初にステップＳ４１において、サンプル選択部３３１は、そのノードにおいて学習対象とされるラベルが付されたポジティブサンプルを選択する。
【０２３８】
例えば、図２０のノード８１−１の学習処理の場合は、ラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３の全てのラベルのポジティブサンプルが選択される。これに対して、ノード８１−１−１−１−１の学習処理においては、ラベルＷ１１のポジティブサンプルだけが選択される。ネガティブサンプルはいずれの場合も、その全てが使用される。
【０２３９】
ステップＳ４２において、引継ぎ部３３２は、親ノードの出力を引き継ぐ処理を実行する。
【０２４０】
最上位の親ノードであるノード８１−１の場合には、その親ノードは存在しないため、重み付き多数決Ｆ(x)の値は０に初期設定され、データ重みＤtの値は、１／Ｎに設定される（Ｎの値は学習サンプルの数を表す）。
【０２４１】
親ノードが存在するノードの場合は、その親ノードの後述するステップＳ４９の処理で、保存部３３９に保存された重み付き多数決Ｆ(x)とデータ重みＤtが読み出され、初期値として設定される。
【０２４２】
また、この親ノードの出力を引き継ぐ処理では、データ重みＤtは、総和が１になるように正規化される。
【０２４３】
次に、ステップＳ４３において、弱判別器選択部３３３は、弱判別器の選択処理を実行する。
【０２４４】
その処理の詳細は、図２７のフローチャートを参照して説明するが、この処理により、Ｋ個（ピクセル間差分特徴量ｄの数）の弱判別器のうちの、重み付き誤り率ｅtの値が最小の弱判別器が選択される（生成される）。
【０２４５】
ステップＳ４４において、多数決重み算出部３３４は、多数決重みαtを算出する。
【０２４６】
この多数決重み（信頼度）αtは、式（８）に基づいて算出される。
【０２４７】
【数８】
0004556891.tif 000009
【０２４８】
上記式（８）から明らかなように、重み付き誤り率ｅt が小さいほど、その弱判別器の信頼度αt が大きくなる。
【０２４９】
ステップＳ４５において、データ重み更新部３３５は、学習サンプルのデータ重みＤt,i を更新する。
【０２５０】
即ち、式（８）にて得られた信頼度αtを使用して、下記式（９）により学習サンプルのデータ重みＤt,iが更新される。データ重みＤt,iは、通常全部足し合わせると１によるように正規化する必要がある。そこでデータ重みＤt,iは、式（１０）に示されるように正規化される。
【０２５１】
【数９】
0004556891.tif 000010
【０２５２】
ステップＳ４６において、重み付き多数決演算部３３６は、重み付き多数決Ｆ(x)を更新する処理を実行する。
【０２５３】
この処理は式（６）に基づいて行われる。多数決重みαtは、ステップＳ４４で算出された値であり、ｆt(x)の値は、ステップＳ４３で算出された値である。
【０２５４】
次に、ステップＳ４７において、閾値演算部３３７は、打ち切り閾値ＲMを算出する。この演算は式（７）に基づいて行われる。この打ち切り閾値ＲMは、後述する図３４のステップＳ１７５または図３５のステップＳ１９５の処理に用いられる。
【０２５５】
ステップＳ４８において、判定部３３８は、いま処理対象としているノードが子ノードを有している場合は、全ての弱判別器の学習が完了したか否かを判定し、子ノードを有していない場合には、ステップＳ４３の処理で演算された重み付き誤り率ｅtの値が、充分小さくなったか否かを判定する。
【０２５６】
子ノードを有する場合、上述したように、この実施の形態においては、弱判別器の数は１００個とされている。従って、１００個の弱判別器の学習がまだ完了していない場合には、処理はステップＳ４３に戻り、それ以降の処理が繰り返し実行される。末端のノードの場合には、重み付き誤り率ｅtが充分小さくなるまで実行される。
【０２５７】
具体的には、重み付き誤り率ｅtの値が０以下となった場合には、充分小さくなったと判定され、まだ、充分小さくならない場合には、処理はステップＳ４３に戻り、それ以降の処理が繰り返し実行される。即ち、ステップＳ４３乃至Ｓ４８の処理は、そのノードにおける各弱判別器の数の回数分実行される。
【０２５８】
ステップＳ４８において、全ての弱判別器の学習が完了したと判定された場合、処理はステップＳ４９に進み、保存部３３９は、最後の弱判別器の判別結果としての重み付き多数決Ｆ(x)の値と、データ重みＤtの値を、出力として保存する。この保存した出力が、下位の子ノードにおいて、ステップＳ４２において初期値として引き継がれる。
【０２５９】
以上のようにして、図２５の処理が、ノード毎に、図２３のステップＳ１２で行われる。
【０２６０】
（４−２）弱判別器の生成
次に、上述した図２５のフローチャートのステップＳ４３における弱判別器の選択処理（生成方法）について説明する。
【０２６１】
弱判別器の生成は、弱判別器が２値出力の場合と、上記式（５）に示す関数ｆ(x)として連続値を出力する場合とで異なる。また、２値出力の場合においても、上記式（２）に示されるように１つの閾値Th1で判別する場合と、式（３）または式（４）に示されるように、２つの閾値Th11，Th12、又は閾値Th21，Th22で判別する場合とで処理が若干異なる。ここでは、１つの閾値Th1で２値出力する弱判別器の学習方法（生成方法）を説明する。
【０２６２】
このため、弱判別器選択部３３３は、図２６に示されるように、決定部４２１、頻度分布算出部４２２、閾値設定部４２３、弱仮説演算部４２４、重み付き誤り率演算部４２５、判定部４２６、および選定部４２７により構成される。
【０２６３】
決定部４２１は、入力された学習サンプルから、２個の画素をランダムに決定する。
【０２６４】
頻度分布算出部４２２は、決定部４２１により決定された画素に関するピクセル間差分特徴ｄを収集し、その頻度分布を算出する。
【０２６５】
閾値設定部４２３は、弱判別器の閾値を設定する。
【０２６６】
弱仮説演算部４２４は、弱判別器による弱仮説の演算を行い、その判別結果ｆ(x)を出力する。
【０２６７】
重み付き誤り率演算部４２５は、式（１１）に示される重み付き誤り率ｅtを演算する。
【０２６８】
【数１０】
0004556891.tif 000011
【０２６９】
上記式（１１）に示されるように、重み付き誤り率ｅtは、学習サンプルのうち、弱判別器の判別結果が誤っているもの（ｆt（ｘi）≠ｙi ）である学習サンプル（ｙi＝１とラベリングされた学習サンプルであって、ｆ（ｘi）＝−１と判定された学習サンプル、およびｙi ＝−１とラベリングされた学習サンプルであって、ｆ（ｘi）＝１と判定された学習サンプル）のデータ重みのみを加算したものとなる。上述したように、データ重みＤt,i が大きい（判別が難しい）学習サンプルの判別を間違えると重み付き誤り率ｅtが大きくなる。
【０２７０】
判定部４２６は、弱判別器の閾値Thと最大のピクセル間差分特徴ｄとの大小関係を判定する。
【０２７１】
選定部４２７は、最小の重み付き誤り率ｅtに対応する閾値Thに対応する弱判別器を選定する。
【０２７２】
図２７は、１つの閾値Th1で２値出力するステップＳ４３の弱判別器の学習方法（生成方法）のフローチャートである。
【０２７３】
ステップＳ７１において、決定部４２１は、１つの学習サンプル（２４×２４画素）中の２つの画素の位置Ｓ1，Ｓ2をランダムに決定する。
【０２７４】
２４×２４画素の学習サンプルを使用する場合、２つの画素の選択方法は、576×575通りあるが、そのうちの１つが選択される。ここで、２つの画素の位置をＳ1，Ｓ2とし、その輝度値をそれぞれＩ1，Ｉ2とする。
【０２７５】
ステップＳ７２において、頻度分布算出部４２２は、すべての学習サンプルに対してピクセル間差分特徴を求め、その頻度分布を算出する。すなわち、全ての（Ｎ個の）学習サンプルに対して、ステップＳ７１にて選択した２つの位置Ｓ1，Ｓ2の画素の輝度値Ｉ1，Ｉ2の差（Ｉ1−Ｉ2）であるピクセル間差分特徴ｄが求められ、図１５Ａに示されているようなヒストグラム（頻度分布）が算出される。
【０２７６】
ステップＳ７３において、閾値設定部４２３は、最小のピクセル間差分特徴ｄより小さい閾値Thを設定する。
【０２７７】
例えば、図２８に示されるように、ピクセル間差分特徴ｄの値が、ｄ1乃至ｄ9に分布する場合、最小のピクセル間差分特徴ｄの値はｄ1となる。従って、このピクセル間差分特徴ｄ1より小さい閾値Th31がここで閾値Thとして設定される。
【０２７８】
次に、ステップＳ７４において、弱仮説演算部４２４は、弱仮説として式（１２）を演算する。なお、sign(Ａ)は、値Ａが正のとき＋１、負のとき−１を出力する関数である。
【０２７９】
ｆ(x)＝sign（ｄ−Th） ・・・（１２）
【０２８０】
今の場合、Th＝Th31であるため、ピクセル間差分特徴ｄの値がｄ1乃至ｄ9のいずれであっても、ｄ−Thの値は正となる。従って、式（１２）で表される弱仮説の判別結果ｆ(x)は、＋１となる。
【０２８１】
ステップＳ７５において、重み付き誤り率演算部４２５は、重み付き誤り率ｅt1，ｅt2を演算する。重み付き誤り率ｅt1とｅt2とは、式（１３）の関係にある。
【０２８２】
ｅt2＝１−ｅt1 ・・・・・（１３）
【０２８３】
重み付き誤り率ｅt1は、式（１１）により求められる値である。重み付き誤り率ｅt1は、位置Ｓ1，Ｓ2の画素値をそれぞれＩ1，Ｉ2とした場合の重み付き誤り率である。これに対して、重み付き誤り率ｅt2は、位置Ｓ1の画素値をＩ2とし、位置Ｓ2の画素値をＩ1とした場合の重み付き誤り率である。
【０２８４】
すなわち、第１の位置を位置Ｓ1とし、第２の位置を位置Ｓ2とする組み合わせは、第１の位置を位置Ｓ2とし、第２の位置を位置Ｓ1とする組み合わせとは異なる組み合わせとなる。しかしながら、両者の重み付き誤り率ｅtの値は、上記した式（１３）の関係にある。そこで、ステップＳ７５の処理において、２つの組み合わせの重み付き誤り率ｅtを同時にまとめて演算するのである。これにより、仮にそのようにしなければ、ステップＳ７１乃至ステップＳ８１の処理を、ステップＳ８１において学習サンプルの画素の中から２個の画素を抽出する全組み合わせの数分（Ｋ回）繰り返したと判定されるまで繰り返すことが必要になるのであるが、ステップＳ７５で、２つの重み付き誤り率ｅt1，ｅt2を演算しておくことで、その繰り返し回数を全組み合わせ回数Ｋの１／２とすることができる。
【０２８５】
そこで、ステップＳ７６において、重み付き誤り率演算部４２５は、ステップＳ７５の処理で演算した重み付き誤り率ｅt1とｅt2のうち、小さい方を選択する。
【０２８６】
ステップＳ７７において、判定部４２６は、閾値が最大のピクセル間差分特徴より大きいか否かを判定する。すなわち、いま設定されている閾値Thが、最大のピクセル間差分特徴ｄ（例えば、図２８に示されている例の場合、ｄ9）より大きいか否かを判定する。いまの場合、閾値Thは、図２８における閾値Th31であるので、最大のピクセル間差分特徴ｄ9より小さいと判定され、処理はステップＳ７８に進む。
【０２８７】
ステップＳ７８において、閾値設定部４２３は、現在の閾値に最も近い次の大きさのピクセル間差分特徴と、さらにその次の大きさのピクセル間差分特徴の中間の大きさの閾値Thを設定する。いまの場合、図２８の例において、現在の閾値Th31に最も近い次の大きさのピクセル間差分特徴ｄ1と、さらに次の大きさのピクセル間差分特徴ｄ2の中間の値の閾値Th32が設定される。
【０２８８】
その後、処理はステップＳ７４に戻り、弱仮説演算部４２４は、上記した式（１２）に従って、弱仮説の判定出力ｆ(x)を演算する。この場合、図２８に示されるように、ピクセル間差分特徴ｄの値がｄ2乃至ｄ9のとき、ｆ(x)の値は＋１となり、ｄ1のときは−１となる。
【０２８９】
ステップＳ７５において、式（１１）に従って、重み付き誤り率ｅt1が演算され、式（１３）に従って重み付き誤り率ｅt2が演算される。そして、ステップＳ７６において、重み付き誤り率ｅt1とｅt2のうち、小さい方が選択される。
【０２９０】
ステップＳ７７において、再び閾値が最大のピクセル間差分特徴より大きいか否かが判定される。いまの場合、閾値Th32は、最大のピクセル間差分特徴ｄ9より小さいので、処理はステップＳ７８に進み、閾値Thは、ピクセル間差分特徴ｄ2とｄ3の間の閾値Th33に設定される。
【０２９１】
以上のようにして、閾値Thが順次大きい値に更新される。ステップＳ７４においては、閾値Thが、例えば、ピクセル間差分特徴ｄ3とｄ4の間のTh34である場合には、ピクセル間差分特徴ｄの値がｄ4以上である場合には＋１、ｄ3以下である場合には−１となる。以下同様に、ピクセル間差分特徴ｄの値が閾値Thi以上である場合には、弱仮説の判別結果ｆ(x)の値が＋１となり、閾値Thｉ以下である場合には−１となる。
【０２９２】
以上の処理が、ステップＳ７７において、閾値Thが最大のピクセル間差分特徴より大きいと判定されるまで繰り返し実行される。図２８の例においては、閾値が最大のピクセル間差分特徴ｄ9より大きい値Th40となるまで繰り返される。すなわち、ステップＳ７４乃至ステップＳ７８の処理を繰り返し実行することで、１つの画素の組み合わせを選択した場合における、各閾値Thを設定したときの重み付き誤り率ｅtが求められることになる。そこで、ステップＳ７９において、選択部４２７は、それまでに求めた重み付き誤り率ｅtの中から、最小の重み付き誤り率を求める。
【０２９３】
そして、ステップＳ８０において、選定部４２７は、最小の重み付き誤り率に対応する閾値を現在の弱仮説の閾値とする。すなわち、ステップＳ７９で選定された最小の重み付き誤り率ｅtが得られる閾値Thiが、その弱判別器（１組の画素の組み合わせにより生成される弱判別器）の閾値とされる。
【０２９４】
ステップＳ８１において、判定部４２６は、処理を全組み合わせ分繰り返したか否かを判定する。全組み合わせ分の処理がまだ実行されていない場合には、処理はステップＳ７１に戻り、それ以降の処理が繰り返し実行される。すなわち、２４×２４個の画素の中から、再び２つの画素の位置Ｓ1，Ｓ2（但し、前回とは異なる位置）がランダムに決定され、その位置Ｓ1，Ｓ2の画素Ｉ1，Ｉ2に関して同様の処理が実行される。
【０２９５】
以上の処理は、ステップＳ８１において、学習サンプルから２個の画素を抽出可能な全組み合わせの数分（Ｋ回）繰り返されたと判定されるまで繰り返し実行される。ただし、上述したように、この実施の形態においては、ステップＳ７５において、位置Ｓ1，Ｓ2が逆の場合における処理を実質的に実行しているため、ステップＳ８１における処理は、全組み合わせの数Ｋの１／２でよいことになる。
【０２９６】
ステップＳ８１において、全ての組み合わせの処理が完了したと判定された場合、ステップＳ８２において、選定部４２７は、生成した弱判別器の中で最も重み付き誤り率の小さいものを選択する。すなわち、これにより、Ｋ個の弱判別器のうちの１つの弱判別器（例えば、図１３の弱判別器６１）が学習され、生成されたことになる。
【０２９７】
その後、処理は図２５のステップＳ４３に戻り、ステップＳ４４以降の処理が実行される。そして、ステップＳ４８において、子ノードを有する場合、全ての弱判別器の学習が完了したと判定されるか、子ノードを有していない場合、重み付き誤り率が充分小さくなったと判定されるまで、図２５の処理が繰り返し実行されることになる。すなわち、図２５の２回目の処理で、図１３の弱判別器６１２の生成学習が行われ、３回目の処理で弱判別器６１３の生成学習が行われる。そして、そのノードにおける弱判別器の数の分だけ、弱判別器６１iの学習生成が行われることになる。
【０２９８】
（５）対象物検出方法
次に、図１２に示す対象物検出装置５１の対象物検出方法について説明する。
【０２９９】
この処理を行うため、判別器５５は、図２９に示されるように、初期化部４７１、判定部４７２、選択部４７３、復帰部４７４、引継ぎ部４７５、弱仮説計算部４７６、評価値計算部４７７、設定部４７８、および出力部４７９により構成される。
【０３００】
初期化部４７１は、最も上位のノードの弱判別器の初期値を設定する処理を行う。
【０３０１】
判定部４７２は、次のスケーリング画像の有無、対象物領域の重複の有無、顔画像であるか否かの判定、子ノードがあるか否かの判定、変数branch_count[i]と子ノードの数の大小判定、変数ｉが正であるか否かの判定などを行う。
【０３０２】
選択部４７３は、重複する２つの領域を抽出したり、領域を選択したりする処理を行う。      
【０３０３】
復帰部４７４は、処理ノードを親ノードに戻す処理を行う。
【０３０４】
引継ぎ部４７５は、親ノードの出力を引き継ぐ処理を行う。
【０３０５】
弱仮説計算部４７６は、式（１２）に基づいて、弱仮説を計算する。評価値計算部４７７は、式（６）に基づいて、評価値ｓを計算する。
【０３０６】
設定部４７８は、評価値ｓに最大値を設定する。出力部４７９は、評価値ｓを出力する。
【０３０７】
なお、これらの初期化部４７１乃至出力部４７９は、必要なデータを相互に授受することが可能である。
【０３０８】
検出時（判別工程）においては、上述のようにして学習工程で生成された弱判別器群を利用した判別器５５を使用し、所定のアルゴリズムに従って画像中から対象物体（人の顔）を検出する。この処理が図３０のフローチャートに示されている。
【０３０９】
ステップＳ１０１において、スケーリング部５３は、画像出力部５２より入力された濃淡画像を所定の割合で縮小スケーリングする処理を実行する。
【０３１０】
画像出力部５２には、入力画像として濃淡画像が直接入力されてもよく、また画像出力部５２にてカラーの入力画像を濃淡画像に変換してもよい。
【０３１１】
スケーリング部５３は、当初、画像出力部５２から与えられた画像をスケール変換せずにそのまま出力し、次のタイミング以降で縮小スケーリングしたスケーリング画像を出力するが、便宜上、スケーリング部５３から出力する画像は全てスケーリング画像という。スケーリング画像が生成されるタイミングは、前に出力されたスケーリング画像の全領域の顔検出が終了した時点であり、スケーリング画像がウインドウ画像より小さくなった時点で、次のフレームの入力画像の処理が開始される。
【０３１２】
ステップＳ１０２において、走査部５４は、探索ウインドウを走査し、画像を切り出す処理を実行する。すなわち、走査部５４は、スケーリングされた画像上で探索ウインドウを所定の位置に配置し、そのウインドウ内の画像をウインドウ画像として切り出し、判別器５５に出力する。
【０３１３】
ステップＳ１０３において、判別器５５は、識別処理を実行する。この識別処理の詳細は、図３１のフローチャートを参照して後述するが、これにより、探索ウインドウ内の画像が人の顔の画像であるか否か、人の顔の画像である場合には、いずれの方向を向いた顔の画像であるのか（ラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、またはラベルＷ３１乃至Ｗ３３のうちのいずれに分類される画像であるのか）が判定される。
【０３１４】
次に、ステップＳ１０４において、判別器５５の判定部４７２は、次の探索ウインドウがあるか否かを判定する。次の探索ウインドウがある場合には、処理はステップＳ１０２に戻り、走査部５４は、現在のスケーリングの画像の探索ウインドウを１画素分右方向に移動し、その画像を切り出して判別器５５に出力する。そして、判別器５５は、ステップＳ１０３の処理を実行することで、そのウインドウ画像がどのラベルの人の顔の画像であるのかを判定する。
【０３１５】
以上のようにして、探索ウインドウが、図４に示されるように、右下方向に順次１画素分ずつずらされ、各探索ウインドウの画像がどのラベルの人の顔の画像であるのかが判定され、探索ウインドウの位置がスケーリング画像の右下の位置まで移動したとき、ステップＳ１０４において、次の探索ウインドウが存在しないと判定され、処理はステップＳ１０５に進む。
【０３１６】
ステップＳ１０５において、スケーリング部５３は、次のスケーリング画像があるか否かを判定する。次のスケーリング画像がある場合には、ステップＳ１０１において、スケーリング部５３は、さらに、縮小率を上げた（より縮小された）スケーリング画像を生成し、走査部５４に出力する。そして、そのスケーリング画像について、上述した場合と同様の処理が実行される。
【０３１７】
以上の処理が、ステップＳ１０５において、次のスケーリング画像が存在しないと判定されるまで繰り返し実行される。すなわち、スケーリング画像がウインドウ画像より小さくなるまで上述した処理が繰り返し実行される。
【０３１８】
上述したように、探索ウインドウは、１画素分ずつ右下方向に順次移動される。従って、例えば、１つの探索ウインドウの画像が人の顔であると判定された場合、その探索ウインドウを１画素分右方向または下方向にずらしたウインドウの画像も、多くの場合、人の顔の画像と判定される。このようなことから、同一の顔の画像が、複数のウインドウ画像で、人の顔の画像であるとして検出されることになる。そこで、全てのスケーリング画像の処理が終了した場合、探索ウインドウの重なりを削除する処理が実行される。
【０３１９】
このため、ステップＳ１０６において、判定部４７２は、２つ以上の対象物領域が重複するか否かを判定する。２つ以上の対象物領域が重複する場合には、ステップＳ１０７において、選択部４７３は、互いに重複する２つの領域を抽出する処理を実行する。例えば、１つの探索ウインドウの画像が対象物領域で得られたと判定された場合、１画素分右方向にずれた探索ウィンウィンドウも人の顔の画像であると判定されるため、この２つのウインドウの領域が抽出される。ステップＳ１０８において、選択部４７３は、ステップＳ１０７で抽出された２つの領域のうち、評価値ｓ（図３４のステップＳ１７４または図３５のステップＳ１９４で後述する）が大きい方の領域を選択する。
【０３２０】
その後、処理はステップＳ１０６に戻り、それ以降の処理が繰り返し実行される。
【０３２１】
以上のようにして、評価値ｓが小さい領域は信頼度が低いとみなして無視し、最も評価値ｓが高い領域が選択される。以上の処理は、ステップＳ１０６において、２つ以上の対象物領域が重複しないと判定されるまで繰り返され、重複しないと判定された場合、そのフレームにおける処理は終了される。そして、必要に応じてさらに次のフレームの処理が実行される。
【０３２２】
次に、図３１のフローチャートを参照して、図３０のステップＳ１０３における識別処理について説明する。
【０３２３】
ステップＳ１３１において、判別器５５の初期化部４７１は、初期値を設定する処理を実行する。具体的には、処理ノードのIDを表す変数ｉに最も上位のノード（根元のノード）のIDを設定する。
【０３２４】
なお図２０を参照して説明した学習処理によれば、図２０に示すノードが学習され、各ノードを構成する弱判別器の２つのピクセル位置等（図２１）の学習結果が得られている。すなわち判定部５５には、図３２中、実線で示されるノード（以下、適宜、学習済みノードと称する）が形成されるが、本発明における判定部５５には、その他、図３２中、破線で示されるノード（以下、未学習ノードと称する）が形成される。このノードは、実際に学習されていないので、２つのピクセル位置等の学習結果は対応付けられていない。なお未学習ノードには、ノードID、親ノードID、子ノードID、ラベル、弱判別器の数等が対応付けられている（図２１）。
【０３２５】
最上位の学習済みノード８１−１は、１００個の弱判別器９１−１1 乃至９１−１100により構成される。この学習済みノード８１−１は、ラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３の画像を識別する。
【０３２６】
学習済みノード８１−１の下位ノードとして、学習済みノード８１−１−１および８１−１−２の他、１個の未学習ノード８１−１−３が形成されている。
【０３２７】
学習済みノード８１−１−１は、その符号の図示は省略するが、１００個の弱判別器９１−１−１1乃至９１−１−１100 により構成され、ノード８１−１−２は、その符号の図示は省略するが、１００個の弱判別器９１−１−２1乃至９１−１−２100により構成される。未学習ノード８１−１−３は、弱判別器を有していない。
【０３２８】
学習済みノード８１−１−１は、弱判別器９１−１−１を利用して、ラベルＷ１１乃至Ｗ１３の画像を識別する。
【０３２９】
学習済みノード８１−１−２は、弱判別器９１−１−２を利用して、ラベルＷ２１乃至Ｗ２３の画像を識別する。
【０３３０】
未学習ノード８１−１−３は、学習済みノード８１−１−２の弱判別器９１−１−２を後述するように利用してラベルＷ３１乃至Ｗ３３の画像を識別する。
【０３３１】
学習済みノード８１−１−１の下位のノード（子ノード）として、学習済みノード８１−１−１−１の他、未学習ノード８１−１−１−２およびノード８１−１−１−３が形成されている。
【０３３２】
学習済みノード８１−１−１−１は、その符号の図示は省略するが１００個の弱判別器９１−１−１−１1 乃至９１−１−１−１100 により構成され、ラベルＷ１１の画像を識別する。
【０３３３】
未学習ノード８１−１−１−２および未学習ノード８１−１−１−３のそれぞれは、弱判別器を有していないが、学習済みノード８１−１−１−１の弱判別器９１−１−１−１を後述するように利用して、ラベルＷ１２またはラベルＷ１３の画像を識別する。
【０３３４】
学習済みノード８１−１−１−１の下位のノード（子ノード）としては、学習済みノード８１−１−１−１−１が設けられている。学習済みノード８１−１−１−１−１は、それより下位のノードが存在しない末端のノードであり、その符号の図示は省略するが弱判別器９１−１−１−１−１1 乃至９１−１−１−１−１L11 のＬ11個の弱判別器を有して構成され、ラベルＷ１１の画像を識別する。
【０３３５】
未学習ノード８１−１−１−２の下位のノード（子ノード）としては、未学習ノード８１−１−１−２−１が設けられている。未学習ノード８１−１−１−２−１は、それより下位のノードが存在しない末端のノードであり、弱判別器を有していないが、後述するように学習済みノード８１−１−１−１−１の弱判別器９１−１−１−１−１を利用して、ラベルＷ１２の画像を識別する。
【０３３６】
未学習ノード８１−１−１−３の下位のノード（子ノード）としては、未学習ノード８１−１−１−３−１が設けられている。未学習ノード８１−１−１−３−１は、それより下位のノードが存在しない末端のノードであり、弱判別器を有していないが、後述するように学習済みノード８１−１−１−１−１の弱判別器９１−１−１−１−１を利用して、ラベルＷ１３の画像を識別する。
【０３３７】
学習済みノード８１−１−２の子ノードとして、学習済みノード８１−１−２−１の他、未学習ノード８１−１−２−２および未学習ノード８１−１−２−３が形成されている。
【０３３８】
学習済みノード８１−１−２−１は、その符号の図示は省略するが１００個の弱判別器９１−１−２−１1 乃至９１−１−２−１100 により構成され、ラベルＷ２１の画像を識別する。
【０３３９】
未学習ノード８１−１−２−２および未学習ノード８１−１−２−３のそれぞれは、弱判別器を有していないが、学習済みノード８１−１−２−１の弱判別器９１−１−２−１を後述するように利用して、ラベルＷ２２またはラベルＷ２３の画像を識別する。
【０３４０】
学習済みノード８１−１−２−１の子ノードとしては、学習済みノード８１−１−２−−１−１が設けられている。学習済みノード８１−１−２−１−１は、それより下位のノードが存在しない末端のノードであり、その符号の図示は省略するが弱判別器９１−１−２−１−１1 乃至９１−１−２−１−１L21 のＬ21個の弱判別器を有して構成され、ラベルＷ２１の画像を識別する。
【０３４１】
未学習ノード８１−１−２−２の子ノードとしては、未学習ノード８１−１−２−２−１が設けられている。未学習ノード８１−１−２−２−１は、それより下位のノードが存在しない末端のノードであり、弱判別器を有していないが、後述するように学習済みノード８１−１−２−１−１の弱判別器９１−１−２−１−１を利用して、ラベルＷ２２の画像を識別する。
【０３４２】
未学習ノード８１−１−２−３の子ノードとしては、未学習ノード８１−１−２−３−１が設けられている。未学習ノード８１−１−２−３−１は、それより下位のノードが存在しない末端のノードであり、弱判別器を有していないが、後述するように学習済みノード８１−１−２−１−１の弱判別器９１−１−２−１−１を利用して、ラベルＷ２３の画像を識別する。
【０３４３】
未学習ノード８１−１−３の子ノードとして、未学習ノード８１−１−３−１、未学習ノード８１−１−３−２、および未学習ノード８１−１−３−３が形成されている。
【０３４４】
未学習ノード８１−１−３−１、未学習ノード８１−１−３−２、および未学習ノード８１−１−３−３のそれぞれは、弱判別器を有していないが、学習済みノード８１−１−２−１の弱判別器９１−１−２−１を後述するように利用して、ラベルＷ３１、ラベルＷ３２、またはラベルＷ３３の画像を識別する。
【０３４５】
未学習ノード８１−１−３−１の子ノードとしては、未学習ノード８１−１−３−１−１が設けられている。未学習ノード８１−１−３−１−１は、それより下位のノードが存在しない末端のノードであり、弱判別器を有していないが、後述するように学習済みノード８１−１−２−１−１の弱判別器９１−１−２−１−１を利用して、ラベルＷ３１の画像を識別する。
【０３４６】
未学習ノード８１−１−３−２の子ノードとしては、未学習ノード８１−１−３−２−１が設けられている。未学習ノード８１−１−３−２−１は、それより下位のノードが存在しない末端のノードであり、弱判別器を有していないが、後述するように学習済みノード８１−１−２−１−１の弱判別器９１−１−２−１−１を利用して、ラベルＷ３２の画像を識別する。
【０３４７】
未学習ノード８１−１−３−３の子ノードとしては、未学習ノード８１−１−３−３−１が設けられている。未学習ノード８１−１−３−３−１は、それより下位のノードが存在しない末端のノードであり、弱判別器を有していないが、後述するように学習済みノード８１−１−２−１−１の弱判別器９１−１−２−１−１を利用して、ラベルＷ３３の画像を識別する。
【０３４８】
図３１に戻りステップＳ１３１において、図３２の例の場合、いま、最上位の学習済みノード８１−１が設定される。さらに、各ノード毎に設定される変数であって、そのノードが訪ねた子ノードの数を表す変数branch_count[i]の値が、全てのノードの分について、０に初期設定される。また、式（６）に基づいて演算された重み付き多数決である評価値ｓが、全てのノードの分について０に初期設定される。
【０３４９】
次に、ステップＳ１３２において、評価値計算部４７７などにより、評価値計算処理が実行される。その詳細は、図３３、および図３４または図３５のフローチャートを参照して後述するが、これにより、処理対象とされている学習済みノードまたは未学習ノードの評価値ｓが演算される。
【０３５０】
ステップＳ１３３において、判定部４７２は、いま識別対象としているウインドウ画像が顔か否かを判定する。この判定は、ステップＳ１３２で計算された評価値ｓに基づいて行われる。
【０３５１】
評価値ｓの値が正であれば（より具体的には、後述する図３４のステップＳ１７８または図３５のステップＳ１９８で設定される基準値（−HUGE_VAL）より大きければ）顔であると判定され、０以下であれば（基準値より小さければ）顔ではないと判定される。
【０３５２】
識別対象とされるウインドウ画像が顔の画像ではないと判定された場合、ステップＳ１３８において、復帰部４７４は、処理対象としてのノードを親ノードに戻す処理を実行する。
【０３５３】
具体的には、変数ｉに親ノードのIDが設定される。いま、処理対象とされているノードは、最上位のノードである学習済みノード８１−１であるから、その親ノードは存在しない。そこで、変数ｉには、上述したように−１が設定される。
【０３５４】
ステップＳ１３９において、判定部４７２は、ステップＳ１３８で設定された変数ｉの値が０より大きいか否かを判定し、０より大きくないと判定した場合、ステップＳ１４０に進む。
【０３５５】
いまの場合、変数ｉの値は−１であり、０より大きくないので、ステップＳ１４０に進む。
【０３５６】
ステップＳ１４０おいて、判定部４７２は、いま処理しているウインドウ画像は顔でないと判定する。
【０３５７】
すなわちいまの場合には、一番上位の学習済みノード８１−１の処理だけで、ウインドウ画像は人の顔の画像ではないと判定されたことになる。
【０３５８】
ステップＳ１３３で、ウインドウ画像は、人の顔の画像であると判定された場合（評価値ｓの値が正であると判定された場合）、ステップＳ１３４に進み、判定部４７２は、いま処理対象としているノードに子ノードがあるか否かを判定し、子ノードがあると判定した場合、ステップＳ１３５に進む。
【０３５９】
いま、処理対象としている学習済みノード８１−１は、学習済みノード８１−１−１、学習済みノード８１−１−２、および未学習ノード８１−１−３の３個の子ノードを有しているので、ステップＳ１３５に進む。
【０３６０】
ステップＳ１３５において、判定部４７２は、処理の対象となっているノード８１の変数branch_count[i]が、そのノード８１の子のノードの数（size(numChild)）より小さいか否かを判定し、小さいと判定した場合、ステップＳ１３６に進む。
【０３６１】
いま、学習済みノード８１−１の変数branch_count[i]の値は０であり（いまの場合、ステップＳ１３１において０に初期設定されている）、子ノードの数は３であるから、変数の値は子ノードの数より小さいと判定され、ステップＳ１３６に進む。
【０３６２】
ステップＳ１３６において、選択部４７３は、次に処理するノードを選択する。
【０３６３】
具体的には、処理対象のノードの変数branch_count[i]の値が１だけインクリメントされ、設定された変数branch_count[i]の値に対応する子ノードのIDが変数ｉに設定される。
【０３６４】
いまの場合、学習済みノード８１−１の変数branch_count[i]に１が設定される。そして、設定された変数branch_count[i]の値に対応する子ノードのIDが変数ｉに、例えば、学習済みノード８１−１の子ノードである学習済みノード８１−１−１のIDが設定される。
【０３６５】
そして、処理は、ステップＳ１３２に戻り、変数ｉに設定されているIDのノード（いまの場合、学習済みノード８１−１−１）の評価値計算処理が実行される。すなわち、学習済みノード８１−１−１により評価値ｓが計算される（ウインドウ画像がどのラベルの人の顔の画像であるのかが判定される）。
【０３６６】
ステップＳ１３３で、判定部４７２は、ウインドウ画像が顔か否か（評価値ｓが正であるか否か）を判定し、ウインドウ画像が顔の画像である場合には、ステップＳ１３４に進み、現在の処理対象のノードである学習済みノード８１−１−１に子ノードがあるか否かを判定する。
【０３６７】
学習済みノード８１−１−１は、学習済みノード８１−１−１−１、未学習ノード８１−１−１−２、および未学習ノード８１−１−１−３の合計３個の子ノードを有しているので、ステップＳ１３５に進む。
【０３６８】
ステップＳ１３５において、判定部４７２は、学習済みノード８１−１−１の変数branch_count[i]の値を、その子ノードの数（いまの場合３）と比較する。
【０３６９】
いま、変数branch_count[i]には、ステップＳ１３１の処理より０に初期設定されており、学習済みノード８１−１−１の子ノードの数は３であるので、branch_count[i]の値は、子ノードの数より小さいので、ステップＳ１３６に進む。
【０３７０】
ステップＳ１３６において、選択部４７３は、学習済みノード８１−１−１の変数branch_count[i]の値を１だけインクリメントして、１を設定した後、学習済みノード８１−１−１の子ノードであって、そのインクリメントした変数branch_count[i]の子ノードである学習済みノード８１−１−１−１を変数ｉに設定する。
【０３７１】
そして、ステップＳ１３２において、変数ｉに設定されているIDのノードであるノード８１−１−１−１の評価値ｓが評価値計算部４７７により計算される。
【０３７２】
ステップＳ１３３で、判定部４７２は、学習済みノード８１−１−１−１の評価値ｓがウインドウ画像が顔であることを表しているか否かを判定し、顔である場合には、ステップＳ１３４に進み、現在の処理対象の学習済みノード８１−１−１−１に、子ノードがあるか否かを判定する。
【０３７３】
学習済みノード８１−１−１−１は、１個の子ノードの学習済みノード８１−１−１−１−１を有するので、ステップＳ１３５に進む。
【０３７４】
ステップＳ１３５において、学習済みノード８１−１−１−１の変数branch_count[i]の値が、その子ノードの数より小さいか否かが判定される。
【０３７５】
いま、変数branch_count[i]には、ステップＳ１３１の処理より０に初期設定されており、学習済みノード８１−１−１−１の子ノードの数は１であるので、branch_count[i]の値は、子ノードの数より小さいので、ステップＳ１３６に進む。
【０３７６】
ステップＳ１３６において、選択部４７３は、学習済みノード８１−１−１−１の変数branch_count[i]の値を１だけインクリメントして、１を設定した後、学習済みノード８１−１−１−１の子ノードであって、そのインクリメントした変数branch_count[i]に対応する子ノードの学習済みノード８１−１−１−１−１のIDが変数ｉに設定される。
【０３７７】
そしてステップＳ１３２において、評価値計算部４７７は、学習済みノード８１−１−１−１−１による評価値を計算する。
【０３７８】
ステップＳ１３３で、判定部４７２は、学習済みノード８１−１−１−１−１の評価値ｓが正であるか（顔画像であるか）否かを判定し、正である場合には、ステップＳ１３４に進み、現在の処理対象の学習済みノード８１−１−１−１−１に、子ノードがあるか否かを判定する。
【０３７９】
学習済みノード８１−１−１−１−１は、末端のノードであり、子ノードを有していない。そこでこの場合には、ステップＳ１３７において、判定部４７２は、ウインドウ画像は、学習済みノード８１−１−１−１−１が対応付けられているラベルＷ１１の顔と判定する。
【０３８０】
これに対して、ステップＳ１３３で、評価値ｓが負である場合（顔ではないと判定された場合）、ステップＳ１３８において、復帰部４７４は、変数ｉに親ノードのIDを設定する。
【０３８１】
いまの場合、学習済みノード８１−１−１−１−１の親ノードである学習済みノード８１−１−１−１のIDが変数ｉに設定される。
【０３８２】
ステップＳ１３９で、変数ｉは正であると判定され、ステップＳ１３５で、判定部４７２は、ノード８１−１−１−１の変数branch_count[i]が、その子ノードの数より小さいか否かを判定する。
【０３８３】
いまの場合、変数branch_count[i]の値は１であり、子ノードの数は１で、両者は等しいので、小さくないと判定され、ステップＳ１３８で、変数ｉに親ノードのIDが設定される。
【０３８４】
いまの場合、学習済みノード８１−１−１−１の親ノードである学習済みノード８１−１−１のIDが変数ｉに設定される。
【０３８５】
ステップＳ１３９で、変数ｉは正であると判定され、ステップＳ１３５で、判定部４７２は、学習済みノード８１−１−１の変数branch_count[i]が、その子ノードの数より小さいか否かを判定する。
【０３８６】
いまの場合、変数branch_count[i]の値は１であり、学習済みノード８１−１−１の子ノードの数は３であるので、小さくないと判定され、ステップＳ１３６で、選択部４７３は、変数branch_count[i]の値を１だけインクリメントして、２とする。さらに、その、変数branch_count[i]に対応する子ノードのIDが変数ｉに設定される。
【０３８７】
具体的には、未学習ノード８−１−１−２のIDが変数ｉに設定される。ステップＳ１３２において、評価値計算部４７７により、この未学習ノード８１−１−１−２の評価値ｓが演算される。
【０３８８】
そして、ステップＳ１３３で、判定部４７２は、未学習ノード８１−１−１−２の評価値ｓがウインドウ画像が顔であることを表しているか否かを判定し、顔である場合には、ステップＳ１３４に進み、現在の処理対象の未学習ノード８１−１−１−２に、子ノードがあるか否かを判定する。
【０３８９】
未学習ノード８１−１−１−２は、１個の子ノードの未学習ノード８１−１−１−２−１を有するので、ステップＳ１３５に進む。
【０３９０】
ステップＳ１３５において、未学習ノード８１−１−１−２の変数branch_count[i]の値が、その子ノードの数より小さいか否かが判定される。
【０３９１】
いま、変数branch_count[i]には、ステップＳ１３１の処理より０に初期設定されており、未学習ノード８１−１−１−２の子ノードの数は１であるので、branch_count[i]の値は、子ノードの数より小さいので、ステップＳ１３６に進む。
【０３９２】
ステップＳ１３６において、選択部４７３は、未学習ノード８１−１−１−２の変数branch_count[i]の値を１だけインクリメントして、１を設定した後、未学習ノード８１−１−１−２の子ノードであって、そのインクリメントした変数branch_count[i]に対応する子ノードの未学習ノード８１−１−１−２−１のIDが変数ｉに設定される。
【０３９３】
そしてステップＳ１３２において、評価値計算部４７７は、未学習ノード８１−１−１−２−１による評価値を計算する。
【０３９４】
ステップＳ１３３で、判定部４７２は、未学習ノード８１−１−１−２−１の評価値ｓが正であるか（顔画像であるか）否かを判定し、正である場合には、ステップＳ１３４に進み、現在の処理対象の未学習ノード８１−１−１−２−１に、子ノードがあるか否かを判定する。
【０３９５】
未学習ノード８１−１−１−２−１は、末端のノードであり、子ノードを有していない。そこでこの場合には、ステップＳ１３７において、判定部４７２は、ウインドウ画像は、未学習ノード８１−１−１−２−１が対応付けられているラベルＷ１２の顔と判定する。
【０３９６】
これに対して、ステップＳ１３３で、評価値ｓが負である場合（顔ではないと判定された場合）、ステップＳ１３８において、復帰部４７４は、変数ｉに親ノードのIDを設定する。
【０３９７】
具体的には、いまの場合、未学習ノード８１−１−１−２−１の親ノードである未学習ノード８１−１−１−２のIDが変数ｉに設定される。
【０３９８】
ステップＳ１３９で、変数ｉは正であると判定され、ステップＳ１３５で、判定部４７２は、未学習ノード８１−１−１−２の変数branch_count[i]が、その子ノードの数より小さいか否かを判定する。
【０３９９】
いまの場合、変数branch_count[i]の値は１であり、子ノードの数は１で、両者は等しいので、小さくないと判定され、ステップＳ１３８で、変数ｉに、未学習ノード８１−１−１−２の親ノードである学習済みノード８１−１−１のIDが変数ｉに設定される。
【０４００】
ステップＳ１３９で、変数ｉは正であると判定され、ステップＳ１３５で、判定部４７２は、学習済みノード８１−１−１の変数branch_count[i]が、その子ノードの数より小さいか否かを判定する。
【０４０１】
いまの場合、変数branch_count[i]の値は２であり、学習済みノード８１−１−１の子ノードの数は３であるので、小さくないと判定され、ステップＳ１３６で、選択部４７３は、変数branch_count[i]の値を１だけインクリメントして、３とする。さらに、その、変数branch_count[i]に対応する子ノードの未学習ノード８−１−１−３のIDが変数ｉに設定される。ステップＳ１３２において、評価値計算部４７７により、この未学習ノード８１−１−１−３の評価値ｓが演算される。
【０４０２】
次に、図３３のフローチャートを参照して、図３１のステップＳ１３２における評価値計算処理について説明する。
【０４０３】
ステップＳ１６１において、評価値が計算されるノードが学習済みノードであるか否かを判定し、学習済みノードであると判定した場合、ステップＳ１６２に進む。
【０４０４】
ステップＳ１６２において、後述する学習済みノードに対する評価値計算処理が行われる。
【０４０５】
一方、ステップＳ１６１で、学習済みノードではないと判定された場合、ステップＳ１６３において、後述する未学習ノードに対する評価値計算処理が行われる。
【０４０６】
ステップＳ１６２またはステップＳ１６３で、学習済みノードまたは未学習ノートに対する評価値計算処理が行われると、図３１のステップＳ１３３に進み、その処理の結果得られた評価値ｓに基づいてウインドウ画像が顔であるか否かが判定される。
【０４０７】
次に、図３４のフローチャートを参照して、図３３のステップＳ１６２における学習済みノードの評価値計算処理について説明する。
【０４０８】
ステップＳ１７１において、引継ぎ部４７５は、親ノードの出力を引き継ぐ処理を実行する。具体的には、親ノードで演算された重み付き多数決で表される評価値ｓが、今回のノードの評価値ｓ(i)に初期設定される。親ノードが存在しない場合、即ち最上位のノード８１−１である場合には、評価値ｓ(i)には０が初期設定される。
【０４０９】
ステップＳ１７２において、弱仮説計算部４７６は、処理した弱判別器の数（順序）を表す変数ｔに１を初期設定する。
【０４１０】
そして、ステップＳ１７３において、弱仮説計算部４７６は、変数ｔで表される弱判別器による弱仮説ｆ(x)を計算する。この計算は、上述した式（１２）に基づいて行われる。この弱判別器は、上述したように１つの画素の組I1，I2で規定されるピクセル間差分特徴ｄに対応するものであり、画素の組み、および閾値Thは、上述した学習処理により予め設定されている（図２１）。
【０４１１】
ステップＳ１７４において、評価値計算部４７７は、式（１４）に基づいて、現在の弱判別器の弱仮説（推定値）に信頼度（多数決重み）αtを乗算し、これまでの評価値ｓを加算して、評価値ｓを更新する。
【０４１２】
即ち、式（１２）に基づいて演算された弱判別器の判別結果としての推定値ｆ(x)を、式（８）で表される多数決重みαtで重み付けして、重み付け多数決の値Ｆ(x)を演算し、評価値ｓとする処理が行われる。
【０４１３】
ｓ（ｉ）＝ｓ（ｉ）＋α・ｆ(x) ・・・（１４）
【０４１４】
ここで、上述した式（２）乃至（４）により、２値の推定値を出力する弱判別器と、式（５）に示す関数ｆ(x)を推定値として出力する弱判別器とでは、その推定値の評価値ｓへの反映の仕方が異なる。
【０４１５】
先ず、上記式（２）を弱判別器に利用し、２値の値を推定値として出力する場合、評価値ｓは下記式（１５）のようになる。
【０４１６】
【数１１】
0004556891.tif 000012
【０４１７】
すなわち、弱判別器の判別結果ｆt(x)の値は、ピクセル間差分特徴ｄの値が閾値Thtより大きい場合には＋１、そうでない、その他の場合には−１となる。その結果、推定値ｆt(x)と重みαt を乗算した値は、ピクセル間差分特徴ｄの値が閾値より大きい場合には、αtとなり、その他の場合には、−αt となる。そこで、これらの値が式（６）に従って、それまでの評価値ｓに加算され、式（６）に従った重み付き多数決の値Ｆ(x)である評価値ｓが更新される。
【０４１８】
また、上記式（３）を弱判別器に利用し、２値の値を推定値として出力する場合、評価値ｓは下記式（１６）のようになる。
【０４１９】
【数１２】
0004556891.tif 000013
【０４２０】
また、上記式（４）を弱判別器に利用し、２値の値を推定値として出力する場合、評価値ｓは下記式（１７）のようになる。
【０４２１】
【数１３】
0004556891.tif 000014
【０４２２】
さらに、上記式（５）を弱判別器に利用し、関数ｆを推定値として出力する場合、評価値ｓは下記式（１８）のようになる。
【０４２３】
【数１４】
0004556891.tif 000015
【０４２４】
次に、ステップＳ１７５において、判定部４７２は、評価値ｓ(i)と打ち切り閾値ＲM (t)との大きさを比較する。即ち、ステップＳ１７４で更新された評価値ｓ(i)が、学習時に学習されている、その弱判別器（ｔ番目の弱判別器）の打ち切り閾値ＲM(t)（図２１）より大きいか否かが判定される。評価値ｓ(i)が、打ち切り閾値ＲM(t)より大きい場合には、ステップＳ１７６において、判定部４７２は、変数ｔを１だけインクリメントする。
【０４２５】
そして、ステップＳ１７７において、判定部４７２は、ステップＳ１７６でインクリメントした変数ｔが、予め設定されている定数Ｔより大きいか否かを判定する。この定数Ｔは、そのノードに含まれる弱判別器の数を表し、この実施の形態の場合、末端のノードでない場合には、Ｔの値は１００であり、末端のノードである場合には、Ｔの値は各ノード毎に設定されている。変数ｔが定数Ｔと等しいか、それより小さい場合には、まだ全ての弱判別器の判定処理を行っていないことになるので、処理はステップＳ１７３に戻る。
【０４２６】
そして、ステップＳ１７３において、弱仮説計算部４７６は、次の弱判別器（インクリメントされた変数ｔに対応する弱判別器）についての弱仮説の計算を実行する。以下、同様の処理が順次繰り返される。
【０４２７】
そして、ステップＳ１７７で、変数ｔが定数Ｔより大きいと判定された場合、ステップＳ１７９において、出力部４７９は、ステップＳ１７４の処理で更新された評価値ｓ(i)を、そのノードの評価値（判別結果）として出力する。
【０４２８】
これに対して、ステップＳ１７５で、評価値ｓ(i)の値が打ち切り閾値ＲM(t)と等しいか、それより小さいと判定された場合、ステップＳ１７８において、設定部４７８は、評価値ｓ(i)の値に負の大きな値（−HUGE_VAL）を設定する。そして、ステップＳ１７９で、出力部４７９は、ステップＳ１７８で、負の大きな値が設定された評価値ｓ(i)を、そのノードの判別結果として出力する。
【０４２９】
即ち、この場合には、評価値ｓ(i)が、打ち切り閾値ＲM(t)より小さくなったので、ウインドウ画像は、ラベルＷ１１乃至Ｗ１３、ラベルＷ２１乃至Ｗ２３、およびラベルＷ３１乃至Ｗ３３のいずれのラベルの人の顔の画像ではないと判定されたことになるので、以後の識別処理は実行されない。従って、より迅速な識別処理が可能となる。
【０４３０】
その後、処理は、図３３を介して図３１のステップＳ１３３に戻り、上述したように評価値ｓの値に基づいて、そのノードにおいてウインドウ画像が顔であると判定されたか否かが判定される。評価値ｓの値が、ステップＳ１７８において、基準値に設定されている場合には、上述したように、ウインドウ画像は人の顔の画像ではないと判定され、評価値ｓの値が基準値より大きな値である場合には、人の顔の画像であると判定されることになる。
【０４３１】
次に、図３５のフローチャートを参照して、図３３のステップＳ１６３における未学習ノードの評価値計算処理について説明する。
【０４３２】
すなわちステップＳ１９１において、引継ぎ部４７５は、図３４のステップＳ１７１の場合と同様に、親ノードで演算された重み付き多数決で表される評価値ｓを、今回のノードの評価値ｓ(i)に初期設定する。なお未学習ノードには、図３２に示すように、親ノードが存在するので、評価値ｓ(i)に０が初期設定されることはない。
【０４３３】
ステップＳ１９２において、弱仮説計算部４７６は、利用する学習済みノードの弱判別器の数（順序）を表す変数ｔに１を初期設定する。
【０４３４】
そして、ステップＳ１９３において、弱仮説計算部４７６は、変数ｔで表される弱判別器を利用して弱仮説ｆ(x)を計算する。
【０４３５】
この計算は、上述した式（１２）に基づいて行われる。しかしながら、未学習ノードには、ピクセル間差分特徴ｄを算出する画素の組および閾値Thが対応付けられていない。そこで、未学習ノードが対応付けられている画像と、所定の座標上の関係を有する画像が対応付けられている学習済みノードの弱判別器を利用して、ピクセル間差分特徴ｄを算出する画素の組を決定する。
【０４３６】
図３６に示すように、ラベルＷ１１の画像を＋２０度ロール回転すれば、ラベルＷ１２に分類される画像となるので、ラベルＷ１２の画像を学習した場合に得られる２つのピクセル位置は、図３７に示すように、ラベルＷ１１の画像を学習することにより得られた２つのピクセルの位置を、＋２０度ロール回転した位置とすることができる。
【０４３７】
この関係は、式（１９）に示すことができる。式中、ｘk，ｙk（k=1,2）は、参照する学習済みノードでの評価値計算処理で利用される２つの画素の座標であり、ｓwは、ウインドウ画像の横幅であり、ｓhは、ウインドウ画像の縦幅であり、ｘ'k，ｙ'kは、未学習ノードでの評価値計算処理で利用される画素の座標である。
【０４３８】
【数１５】
0004556891.tif 000016
【０４３９】
すなわち未学習ノード８１−１−１−２または未学習ノード８１−１−１−２−１に対する評価値計算処理が行われる場合、ウインドウ画像上の、ラベルＷ１１を学習した学習済みノード８１−１−１−１または学習済みノード８１−１−１−１−１の変数ｔで表される弱判別器による弱仮説ｆ(x)を計算するのに用いられる２つの画素の位置を＋２０度ロール回転した位置が、式（１９）から算出され、その位置の画素のピクセル差分特徴ｄが算出される。
【０４４０】
また、図３６に示すように、ラベルＷ１１の画像を−２０度ロール回転すれば、ラベルＷ１３に分類される画像となるので、ラベルＷ１３の画像を学習した場合に得られる２つのピクセル位置は、ラベルＷ１１の画像を学習することにより得られた２つのピクセルの位置を、−２０度ロール回転した位置とすることができる。
【０４４１】
すなわち未学習ノード８１−１−１−３または未学習ノード８１−１−１−３−１の評価値計算処理が行われる場合、ウインドウ画像上の、学習済みノード８１−１−１−１または学習済みノード８１−１−１−１−１の変数ｔで表される弱判別器による弱仮説ｆ(x)を計算するのに用いられる２つの画素の位置を−２０度ロール回転した位置が、式（１９）から算出され、その位置のピクセル差分特徴ｄが算出される。
【０４４２】
また、図３６に示すように、ラベルＷ２１の画像を＋２０度ロール回転すれば、ラベルＷ２２に分類される画像となるので、ラベルＷ２２の画像を学習した場合に得られる２つのピクセル位置は、ラベルＷ２１の画像を学習することにより得られた２つのピクセルの位置を、＋２０度ロール回転した位置とすることができる。
【０４４３】
すなわち未学習ノード８１−１−２−２または未学習ノード８１−１−２−２−１の評価値計算処理が行われる場合、ウインドウ画像上の、ラベルＷ２１を学習した学習済みノード８１−１−２−１または学習済みノード８１−１−２−１−１の変数ｔで表される弱判別器による弱仮説ｆ(x)を計算するのに用いられる２つの画素の位置を＋２０度ロール回転した位置が、式（１９）から算出され、その位置の画素のピクセル差分特徴ｄが算出される。
【０４４４】
また、図３６に示すように、ラベルＷ２１の画像を−２０度ロール回転すれば、ラベルＷ２３に分類される画像となるので、ラベルＷ２３の画像を学習した場合に得られる２つのピクセル位置は、ラベルＷ２１の画像を学習することにより得られた２つのピクセルの位置を、−２０度ロール回転した位置とすることができる。
【０４４５】
すなわち未学習ノード８１−１−２−３または未学習ノード８１−１−２−３−１の評価値計算処理が行われる場合、ウインドウ画像上の、ラベルＷ２１を学習した学習済みノード８１−１−２−１または学習済みノード８１−１−２−１−１の変数ｔで表される弱判別器による弱仮説ｆ(x)を計算するのに用いられる２つの画素の位置を−２０度ロール回転した位置が、式（１９）から算出され、その位置の画素のピクセル差分特徴ｄが算出される。
【０４４６】
また、図３６に示すように、ラベルＷ２１の画像を横方向の中心を通る縦軸を中心に反転（左右方向に反転）すれば、ラベルＷ３１に分類される画像となるので、ラベルＷ３１の画像を学習した場合に得られる２つのピクセル位置は、図３８に示すように、ラベルＷ２１の画像を学習することにより得られた２つのピクセルの位置を、左右方向に反転した位置とすることができる。
【０４４７】
この関係は、式（２０）に示すことができる。
【０４４８】
【数１６】
0004556891.tif 000017
【０４４９】
すなわち未学習ノード８１−１−３−１または未学習ノード８１−１−３−１−１の評価値計算処理が行われる場合、ウインドウ画像上の、ラベルＷ２１を学習した学習済みノード８１−１−２−１または学習済みノード８１−１−２−１−１の変数ｔで表される弱判別器による弱仮説ｆ(x)を計算するのに用いられる２つの画素の位置を左右方向に反転した位置が、式（２０）から算出され、その位置の画素のピクセル差分特徴ｄが算出される。
【０４５０】
また、図３６に示すように、ラベル２１の画像を−２０度ロール回転し、その結果得られたラベルＷ２３の画像を左右方向に反転すれば、ラベルＷ３２に分類される画像となるので、ラベルＷ３２の画像を学習した場合に得られる２つのピクセル位置は、ラベルＷ２１の画像を学習することにより得られた２つのピクセルの位置を、−２０度ロール回転し、そして左右方向に反転した位置とすることができる。
【０４５１】
すなわち未学習ノード８１−１−３−２または未学習ノード８１−１−３−２−１の評価値計算処理が行われる場合、ウインドウ画像上の、ラベルＷ２１を学習した学習済みノード８１−１−２−１または学習済みノード８１−１−２−１−１の変数ｔで表される弱判別器による弱仮説ｆ(x)を計算するのに用いられる２つの画素の位置を−２０度ロール回転し左右方向に反転した位置が、式（１９）および式（２０）から算出され、その位置の画素のピクセル差分特徴ｄが算出される。
【０４５２】
また、図３６に示すように、ラベル２１の画像を＋２０度ロール回転し、その結果得られたラベルＷ２２の画像を左右方向に反転すれば、ラベルＷ３３に分類される画像となるので、ラベルＷ３３の画像を学習した場合に得られる２つのピクセル位置は、ラベルＷ２１の画像を学習することにより得られた２つのピクセルの位置を、＋２０度ロール回転し、そして左右方向に反転した位置とすることができる。
【０４５３】
すなわち未学習ノード８１−１−３−３または未学習ノード８１−１−３−３−１の評価値計算処理が行われる場合、ウインドウ画像上の、ラベルＷ２１を学習した学習済みノード８１−１−２−１または学習済みノード８１−１−２−１−１の変数ｔで表される弱判別器による弱仮説ｆ(x)を計算するのに用いられる２つの画素の位置を＋２０度ロール回転し左右方向に反転した位置が、式（１９）および式（２０）から算出され、その位置の画素のピクセル差分特徴ｄが算出される。
【０４５４】
また同様の原理により、ラベルＷ３１乃至Ｗ３３の画像を識別する未学習ノード８１−１−３の評価値計算処理が行われる場合、ウインドウ画像上の、ラベルＷ２１乃至Ｗ２３を学習した学習済みノード８１−１−２の変数ｔで表される弱判別器による弱仮説ｆ(x)を計算するのに用いられる２つの画素の位置を左右方向に反転した位置が、式（２０）から算出され、その位置の画素のピクセル差分特徴ｄが算出される。
【０４５５】
式（１２）を演算するのに必要な閾値Ｔhについては、未学習ノード８１−１−１−２若しくは未学習ノード８１−１−１−２−１、または未学習ノード８１−１−１−３若しくは未学習ノード８１−１−１−３−１に対する評価値計算処理が行われる場合、学習済みノード８１−１−１−１または学習済みノード８１−１−１−１−１の変数ｔで表される弱判別器の閾値が利用される。
【０４５６】
また未学習ノード８１−１−２−２若しくは未学習ノード８１−１−２−２−１、未学習ノード８１−１−２−３若しくは未学習ノード８１−１−２−３−１、未学習ノード８１−１−３−１若しくは未学習ノード８１−１−３−１−１、未学習ノード８１−１−３−２若しくは未学習ノード８１−１−３−２−１、または未学習ノード８１−１−３−３若しくは未学習ノード８１−１−３−３−１に対する評価値計算処理が行われる場合、学習済みノード８１−１−２−１または学習済みノード８１−１−２−１−１の変数ｔで表される弱判別器の閾値が利用される。
【０４５７】
未学習ノード８１−１−３に対する評価値計算処理が行われる場合、学習済みノード８１−１−２の変数ｔで表される弱判別器の閾値が利用される。
【０４５８】
なお学習済みノードでピクセル差分特徴ｄを算出する際に利用される２つの画素の位置を回転させて、未学習ノードでピクセル差分特徴ｄを算出する際に利用する２つの画素を特定する場合、図３９Ａに示すように、ウインドウ画像からはみ出してしまう場合が考えられる。
【０４５９】
そこで、本実施例の場合、走査部５４は、ウインドウ１１を、図３９Ｂに示すように、パターン検出を行う画像の大きさよりやや大きくし、その中心の領域に対してパターン検出を行う。
【０４６０】
具体的には、例えば２０×２０の学習サンプルを学習しておいて、学習後の座標に対してそれぞれ２画素を加えることで、２４×２４の座標系に変換し、そして検出実行時には、２４×２４のウインドウを用いて検出が行われる。
【０４６１】
回転角θが、＋／−２０度とすると、実際には２０×２０の四隅の４つの画素が回転後２４×２４のウインドウからはみ出すが、これは、学習時に、学習サンプルを、ウインドウ画像と中心を合わせてロール回転させ、ここで処理される画像からはみ出るこの四隅の画素を使用しないようにすることで対応することができる。
【０４６２】
図３５に戻りステップＳ１９４において、評価値計算部４７７は、図３４のステップＳ１７４における場合と同様に、式（１４）に基づいて、現在の弱判別器の弱仮説（推定値）に信頼度（多数決重み）αtを乗算し、これまでの評価値ｓを加算して、評価値ｓを更新する。
【０４６３】
しかしながら未学習ノードには、信頼度（多数決重み）αtが対応付けられていない。
【０４６４】
そこでこの場合も、未学習ノード８１−１−１−２若しくは未学習ノード８１−１−１−２−１、または未学習ノード８１−１−１−３若しくは未学習ノード８１−１−１−３−１に対する評価値計算処理が行われる場合、学習済みノード８１−１−１−１または学習済みノード８１−１−１−１−１の変数ｔで表される弱判別器の信頼度が利用される。
【０４６５】
また未学習ノード８１−１−２−２若しくは未学習ノード８１−１−２−２−１、未学習ノード８１−１−２−３若しくは未学習ノード８１−１−２−３−１、未学習ノード８１−１−３−１若しくは未学習ノード８１−１−３−１−１、未学習ノード８１−１−３−２若しくは未学習ノード８１−１−３−２−１、または未学習ノード８１−１−３−３若しくは未学習ノード８１−１−３−３−１に対する評価値計算処理が行われる場合、学習済みノード８１−１−２−１または学習済みノード８１−１−２−１−１の変数ｔで表される弱判別器の信頼度が利用される。
【０４６６】
未学習ノード８１−１−３に対する評価値計算処理が行われる場合、学習済みノード８１−１−２の変数ｔで表される弱判別器の信頼度が利用される。
【０４６７】
次に、ステップＳ１９５において、判定部４７２は、図３４のステップＳ１７５の場合と同様に、評価値ｓ(i)と打ち切り閾値ＲM(t)との大きさを比較する。
【０４６８】
しかしながら未学習ノードには、閾値ＲMが対応付けられていない。
【０４６９】
そこでこの場合も、未学習ノード８１−１−１−２若しくは未学習ノード８１−１−１−２−１、または未学習ノード８１−１−１−３若しくは未学習ノード８１−１−１−３−１に対する評価値計算処理が行われる場合、学習済みノード８１−１−１−１または学習済みノード８１−１−１−１−１の変数ｔで表される弱判別器の閾値ＲMが利用される。
【０４７０】
また未学習ノード８１−１−２−２若しくは未学習ノード８１−１−２−２−１、未学習ノード８１−１−２−３若しくは未学習ノード８１−１−２−３−１、未学習ノード８１−１−３−１若しくは未学習ノード８１−１−３−１−１、未学習ノード８１−１−３−２若しくは未学習ノード８１−１−３−２−１、または未学習ノード８１−１−３−３若しくは未学習ノード８１−１−３−３−１に対する評価値計算処理が行われる場合、学習済みノード８１−１−２−１または学習済みノード８１−１−２−１−１の変数ｔで表される弱判別器の閾値ＲMが利用される。
【０４７１】
未学習ノード８１−１−３に対する評価値計算処理が行われる場合、学習済みノード８１−１−２の変数ｔで表される弱判別器の閾値ＲMが利用される。
【０４７２】
ステップＳ１９５で、評価値ｓ(i)が、打ち切り閾値ＲM(t)より大きい場合には、ステップＳ１９６において、判定部４７２は、変数ｔを１だけインクリメントする。そして、ステップＳ１９７において、判定部４７２は、ステップＳ１９６でインクリメントした変数ｔが、予め設定されている定数Ｔより大きいか否かを判定する。
【０４７３】
この定数Ｔは、この未学習ノードが参照する学習済みノードに含まれる弱判別器の数を表す。変数ｔが定数Ｔと等しいか、それより小さい場合には、まだ全ての弱判別器の判定処理を行っていないことになるので、処理はステップＳ１９３に戻る。そして、ステップＳ１９３において、弱仮説計算部４７６は、次の弱判別器（インクリメントされた変数ｔに対応する弱判別器）についての弱仮説の計算を実行する。以下、同様の処理が順次繰り返される。
【０４７４】
そして、ステップＳ１９７において、変数ｔが定数Ｔより大きいと判定された場合、ステップＳ１９９において、出力部４７９は、ステップＳ１９４の処理で更新された評価値ｓ(i)を、そのノードの評価値（判別結果）として出力する。
【０４７５】
これに対して、ステップＳ１９５において、評価値ｓ(i)の値が打ち切り閾値ＲM(t)と等しいか、それより小さいと判定された場合、ステップＳ１９８において、設定部４７８は、評価値ｓ(i)の値に負の大きな値（−HUGE_VAL）を設定する。そして、ステップＳ１９９において、出力部４７９は、ステップＳ１９８で、負の大きな値が設定された評価値ｓ(i)を、そのノードの判別結果として出力する。
【０４７６】
即ち、この場合には、評価値ｓ(i)が、打ち切り閾値ＲM(t)より小さくなったので、ウインドウ画像は、未学習ノードで判定されるラベルＷ１２，Ｗ１３，Ｗ２２，Ｗ２３，Ｗ３１，Ｗ３２，Ｗ３３のいずれのラベルの人の顔の画像ではないと判定されたことになるので、以後の識別処理は実行されない。従って、より迅速な識別処理が可能となる。
【０４７７】
その後、処理は、図３３を介して、図３１のステップＳ１３３に進み、上述したように評価値ｓの値に基づいて、その未学習ノードにおいてウインドウ画像が顔であると判定されたか否かが判定される。評価値ｓの値が、ステップＳ１９８において、基準値に設定されている場合には、上述したように、ウインドウ画像は人の顔の画像ではないと判定され、評価値ｓの値が基準値より大きな値である場合には、人の顔の画像であると判定されることになる。
【０４７８】
このように、本実施の形態における対象物検出方法によれば、ピクセル間差分特徴により弱判別する弱判別器を集団学習により学習した判別器を使用して対象物を検出するため、ウインドウ画像において、対応する２つの画素の輝度値を読出し、その差を算出するのみで、上記ステップＳ１７３またはステップＳ１９３における対象物の特徴量の算出工程が終了する。このため極めて高速に顔検出処理することができるため、リアルタイムな顔検出が可能である。
【０４７９】
また、その特徴量から判別した判別結果（推定値）と判別に使用した弱判別器に対する信頼度とを乗算した値を加算して評価値ｓを逐次更新する毎に打ち切り閾値ＲMと比較し、弱判別器の推定値の演算を続けるか否かが判定される。そして、打ち切り閾値ＲM を評価値ｓが下まわった場合に弱判別器の演算を打ち切り、次のウインドウ画像の処理に移ることにより、無駄な演算を飛躍的に低減して更に高速に顔検出が可能となる。
【０４８０】
すなわち、入力画像およびそれを縮小スケーリングしたスケーリング画像の全ての領域を走査してウインドウ画像を切り出した場合、それらのウインドウ画像のうち対象物である確率は小さく、ほとんどが非対象物である。この非対象物であるウインドウ画像の判別を途中で打ち切ることで、判別工程を極めて高効率化することができる。なお、逆に検出すべき対象物が多数含まれるような場合、上述した打ち切り閾値と同様の手法にて、対象物であることが明らかとなったウインドウ画像の演算を途中で打ち切るような閾値も設けてもよい。更に、入力画像をスケーリング部にてスケーリングすることで、任意の大きさの探索ウインドウを設定し、任意の大きさの対象物を検出することができる。
【０４８１】
さらに、以上のように、所定のラベルの画像を座標変換して得ることができる画像については、学習を行わず（図２０）、学習されたラベルの画像の学習結果を利用するようにしたので、例えば、従来においては、例えば図６に示すように、各ノードにおいて、ノードを構成する弱判別器を生成してそれを保持しておく必要があったが、図３２に示すように、一部のノードの弱判別器の生成およびその保持を省略することができる。すなわちその分の２つのピクセル位置の組、弱判別器の閾値、重み付き多数決の重み（弱判別器の信頼度）、および打ち切り閾値を記憶する必要がないので、判別器５５の辞書データを小さくすることができる。
【０４８２】
例えば図６の例の場合、端末のノードの弱判別器の数を3000個とすると、合計28300（=100+300＋900+27000）の弱判別器が必要となる。
【０４８３】
すなわち学習結果が、下記に示すデータ量を有する場合、約228KBのメモリ容量が必要となる。
重み付け係数：16bit
pixel差閾値：9bit
打ち切り閾値：21bit
座標x1：5bit
座標y1：5bit
座標x2：5bit
座標y2：5bit
―――――――――――――
合計：66bit
【０４８４】
これに対して、本発明を適用すれば、図３２に示すように、弱判別器の数は、6400（=100+100＋200+6000）個となり、その分のメモリ容量は、37.3KBまで削減することができる。
【０４８５】
なお以上においては、推定値の算出の打ち切りは、重み付き多数決の値が更新される毎に判定されたが、その頻度を、Ｎ回に１回というように少なくするようにすれば、保持すべき打ち切り閾値を削減することができ、辞書データをさらに小さくすることができる。
【０４８６】
重み付き多数決の値は、図１８に示すように、通常、緩やかに推移するので、推定値の算出の打ち切りの判定の頻度を少なくしても、結果的には、その先にある閾値によりはじかれるので、若干の速度低下（打ち切りまでの推定値の算出の増加）を招くが、打ち切りの判定を適切に行うことができる。
【０４８７】
例えば１０回に１回の頻度で、推定値の算出の打ち切りの判定を行うようにすれば、弱判別器のデータ量を、66bitから47.1bitまで削減することができ、36.8KBまで削減することができる。
【０４８８】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。そして本発明は、静止画像はもとより、動画像を受信し、表示するロボット等の各種の画像処理装置を含む情報処理装置に適用することができる。
【０４８９】
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、対象物検出装置は、図４０に示されるようなコンピュータにより構成される。
【０４９０】
図４０において、CPU（Central Processing Unit）６２１は、ROM（Read Only Memory）６２２に記憶されているプログラム、または記憶部６２８からRAM（Random Access Memory）６２３にロードされたプログラムに従って各種の処理を実行する。RAM６２３にはまた、CPU３６２１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０４９１】
CPU６２１、ROM６２２、およびRAM６２３は、バス６２４を介して相互に接続されている。このバス３２４にはまた、入出力インタフェース６２５も接続されている。
【０４９２】
入出力インタフェース６２５には、キーボード、マウスなどよりなる入力部６２６、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部６２７、ハードディスクなどより構成される記憶部６２８、モデムなどより構成される通信部６２９が接続されている。通信部６２９は、インターネットを含むネットワークを介しての通信処理を行う。
【０４９３】
入出力インタフェース６２５にはまた、必要に応じてドライブ６３０が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア３３１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部６２８にインストールされる。
【０４９４】
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０４９５】
この記録媒体は、図４０に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フロッピディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（MD（Mini-Disk）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア６３１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM６２２や、記憶部６２８に含まれるハードディスクなどで構成される。
【０４９６】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０４９７】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０４９８】
【図１】従来の対象物検出装置の処理機能を示す機能ブロック図である。
【図２】スケール変換を説明する図である。
【図３】探索ウインドウの走査を説明する図である。
【図４】探索ウインドウの移動を説明する図である。
【図５】判別器の構成を示す図である。
【図６】従来のノードのツリー構造を説明する図である。
【図７】顔の姿勢角を説明する図である。
【図８】通常のアダブーストによる識別器の構成を説明する図である。
【図９】通常のアダブーストによるラベルの識別を説明する図である。
【図１０】リジェクト判定付き弱判別器で構成されるノードの構成を示す図である。
【図１１】リジェクト判定付き弱判別器の構成を示す図である。
【図１２】本発明を適用した対象物検出装置の処理機能を示す機能ブロック図である。
【図１３】判別器の構成を示す図である。
【図１４】ピクセル間差分特徴を説明する図である
【図１５】ピクセル間差分特徴と閾値の関係を説明する図である。
【図１６】頻度分布を説明する図である。
【図１７】確率密度に基づくピクセル間差分特徴を説明する図である。
【図１８】重み付き多数決の値Ｆ(x)の変化を示す図である。
【図１９】学習サンプルの分類の例を示す図である。
【図２０】学習工程のノードのツリー構造を説明する図である。
【図２１】ノードのデータ構造を説明する図である。
【図２２】集団学習器の機能的構成例を示すブロック図である。
【図２３】学習処理を説明するフローチャートである。
【図２４】ノード学習部の機能的構成例を示すブロック図である。
【図２５】図２３のステップＳ１２におけるノードの学習処理を説明するフローチャートである。
【図２６】弱判別器選択部の機能的構成例を示すブロック図である。
【図２７】図２５のステップＳ４３における弱判別器の選択処理を説明するフローチャートである。
【図２８】閾値の移動を説明する図である。
【図２９】判別器の機能的構成例を示すブロック図である。
【図３０】対象物検出処理を説明するフローチャートである。
【図３１】図３０のステップＳ１０３の識別処理を説明するフローチャートである。
【図３２】判別工程のノードのツリー構造を説明する図である。
【図３３】図３１のステップＳ１３２における評価値計算処理を説明するフローチャートである。
【図３４】図３３のステップＳ１６２における学習済みノードの評価値計算処理を説明するフローチャートである。
【図３５】図３３のステップＳ１６３における未学習ノードの評価値計算処理を説明するフローチャートである。
【図３６】学習済みノードに対応付けられているラベルの画像と、未学習ノードに対応付けられているラベルの画像の座標関係を説明する図である。
【図３７】学習結果として得られた２つの画素の組の位置と、未学習ノードにおいて特徴量を算出する際に利用する画素の位置との関係を示す図である。
【図３８】学習結果として得られた２つの画素の組の位置と、未学習ノードにおいて特徴量を算出する際に利用する画素の位置との関係を示す他の図である。
【図３９】他のウインドウ画像の例を示す図である。
【図４０】コンピュータの構成例を示すブロック図である。
【符号の説明】
【０４９９】
５１  対象物検出装置，  ５２  画像出力部，  ５３ スケーリング部，  ５４  走査部，  ５５  判別器，  ５６  集団学習機，  ６１1  乃至６１K  弱判別器，  ６２  加算器，  ８１  ノード，  ３０１  初期化部，  ３０２  ノード学習部，  ３０３  判定部，  ３０４  選択部，  ３０５  復帰部，  ３３１  サンプル選択部，  ３３２  引継ぎ部，  ３３３  弱判別器選択部，  ３３４  多数決重み算出部，  ３３５  データ重み更新部，  ３３６  重み付き多数決演算部，  ３３７  閾値演算部，  ３３８  判定部，  ３３９  保存部
【図１】
0004556891.tif 000018
【図２】
0004556891.tif 000019
【図３】
0004556891.tif 000020
【図４】
0004556891.tif 000021
【図５】
0004556891.tif 000022
【図６】
0004556891.tif 000023
【図７】
0004556891.tif 000024
【図８】
0004556891.tif 000025
【図９】
0004556891.tif 000026
【図１０】
0004556891.tif 000027
【図１１】
0004556891.tif 000028
【図１２】
0004556891.tif 000029
【図１３】
0004556891.tif 000030
【図１４】
0004556891.tif 000031
【図１５】
0004556891.tif 000032
【図１６】
0004556891.tif 000033
【図１７】
0004556891.tif 000034
【図１８】
0004556891.tif 000035
【図１９】
0004556891.tif 000036
【図２０】
0004556891.tif 000037
【図２１】
0004556891.tif 000038
【図２２】
0004556891.tif 000039
【図２３】
0004556891.tif 000040
【図２４】
0004556891.tif 000041
【図２５】
0004556891.tif 000042
【図２６】
0004556891.tif 000043
【図２７】
0004556891.tif 000044
【図２８】
0004556891.tif 000045
【図２９】
0004556891.tif 000046
【図３０】
0004556891.tif 000047
【図３１】
0004556891.tif 000048
【図３２】
0004556891.tif 000049
【図３３】
0004556891.tif 000050
【図３４】
0004556891.tif 000051
【図３５】
0004556891.tif 000052
【図３６】
0004556891.tif 000053
【図３７】
0004556891.tif 000054
【図３８】
0004556891.tif 000055
【図３９】
0004556891.tif 000056
【図４０】
0004556891.tif 000057