(57)【要約】【課題】分岐構造の識別器を学習する上で、処理時間を大きく増大させずに好適な分岐構造を構築することを目的とする。【解決手段】識別対象パターンを識別する分岐型パターン識別器を、機械学習処理により生成する情報処理装置であって、複数の変動カテゴリの組合せに対して、それぞれ個別の予備識別器を学習させる予備学習手段と、予備識別器で識別処理を実行し、識別処理結果に基づいて分岐構造を決定する分岐構造決定手段と、分岐構造に基づき、分岐型パターン識別器を学習させる本学習手段と、を有することによって課題を解決する。【選択図】図１１
2010165046.tif 000002
【特許請求の範囲】
【請求項１】
識別対象パターンの複数の変動カテゴリの組合せに対して、それぞれ個別の予備識別器を学習させる予備学習手段と、
前記予備識別器で識別処理を実行し、該識別処理の結果に基づいて分岐構造を決定する分岐構造決定手段と、
前記分岐構造に基づき、分岐型パターン識別器を学習させる本学習手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記分岐構造決定手段は、前記複数の変動カテゴリの組合せで分類された複数の前記識別対象パターンのサンプルを評価用データとして前記予備識別器に入力して、識別処理を実行し、該識別処理の結果に基づいて前記分岐構造を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記予備識別器は、識別処理を段階的に実行し、識別対象パターンでないと判断した段階で以後の段階の処理の打切りを実施する識別器であって、
前記分岐構造決定手段は、前記複数の変動カテゴリの組合せで分類された評価用データを、前記予備識別器の各々に入力したときの段階での打切り率に基づき、前記分岐構造を決定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記予備識別器は、識別対象パターンに関する信頼度を出力する識別器であって、
前記分岐構造決定手段は、前記複数の変動カテゴリの組合せで分類された評価用データを、前記予備識別器の各々に入力したときの信頼度に基づき、前記分岐構造を決定することを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記分岐構造決定手段は、前記変動カテゴリの各々で分類された評価用データを投入した際の信頼度の差が最も大きくなる変動カテゴリの優先度を高くし、前記優先度に応じて分岐の順序を決定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
識別対象パターンの複数の変動カテゴリの組合せに対して、それぞれ個別の予備識別器を学習させる予備学習ステップと、
前記予備識別器で識別処理を実行し、該識別処理の結果に基づいて分岐構造を決定する分岐構造決定ステップと、
前記分岐構造に基づき、分岐型パターン識別器を学習させる本学習ステップと、
を有することを特徴とする情報処理方法。
【請求項７】
前記分岐構造決定ステップでは、前記複数の変動カテゴリの組合せで分類された複数の前記識別対象パターンのサンプルを評価用データとして前記予備識別器に入力して、識別処理を実行し、該識別処理の結果に基づいて前記分岐構造を決定することを特徴とする請求項６に記載の情報処理方法。
【請求項８】
前記予備識別器は、識別処理を段階的に実行し、識別対象パターンでないと判断した段階で以後の段階の処理の打切りを実施する識別器であって、
前記分岐構造決定ステップでは、前記複数の変動カテゴリの組合せで分類された評価用データを、前記予備識別器の各々に入力したときの段階での打切り率に基づき、前記分岐構造を決定することを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記予備識別器は、識別対象パターンに関する信頼度を出力する識別器であって、
前記分岐構造決定ステップでは、前記複数の変動カテゴリの組合せで分類された評価用データを、前記予備識別器の各々に入力したときの信頼度に基づき、前記分岐構造を決定することを特徴とする請求項７に記載の情報処理方法。
【請求項１０】
前記分岐構造決定ステップでは、前記変動カテゴリの各々で分類された評価用データを投入した際の信頼度の差が最も大きくなる変動カテゴリの優先度を高くし、前記優先度に応じて分岐の順序を決定することを特徴とする請求項９に記載の情報処理方法。
【請求項１１】
コンピュータを、
識別対象パターンの複数の変動カテゴリの組合せに対して、それぞれ個別の予備識別器を学習させる予備学習手段と、
前記予備識別器で識別処理を実行し、該識別処理の結果に基づいて分岐構造を決定する分岐構造決定手段と、
前記分岐構造に基づき、分岐型パターン識別器を学習させる本学習手段と、
して機能させることを特徴とするプログラム。
【請求項１２】
請求項１１に記載のプログラムを記憶したコンピュータにより読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
近年、パターン認識の分野において、弱判別器をカスケード接続することにより識別器を構成し、画像中の人の顔などの物体検出処理を高速に実行する手法が注目を集めている。
例えば非特許文献１においてＶｉｏｌａとＪｏｎｅｓとが提案する方法では、まず矩形特徴を抽出する弱判別器を所定数カスケード接続し、ステージと呼ばれる強判別器を構成する。この弱判別器はブースティング学習アルゴリズム（特許文献１等参照）により生成される。そしてＶｉｏｌａとＪｏｎｅｓとが提案する方法では、更に、このステージを複数カスケード接続した構成のパターン識別器を提案している。ステージ、即ち強判別器単位で打切り判定（画像中の検出対象位置に対する処理の終了）を行いながら処理を進めることにより、早期に検出対象でないと判断された入力に対する以後の演算が行われなくなるので、全体として高速な処理が可能となる。以下にこのパターン識別法についての詳細を説明する。
【０００３】
非特許文献１のパターン識別器は、図１に示すように、ある特定の大きさの矩形領域８０１（以下「処理ウインドウ」という）を処理対象となる顔検出対象画像８００内で移動させ、各移動先の処理ウィンドウ８０１内に人物の顔が含まれるか否かを判定する。
図２は、各移動先位置における処理ウィンドウ８０１において、非特許文献１で行われている顔検出処理の流れを示す図である。ある処理ウィンドウ内における顔検出処理は、複数のステージによって実行される。各ステージには、異なる組合せの弱判別器が割り当てられており、これらがカスケード接続で処理されることによって、強判別器となっている。各弱判別器は所謂Ｈａａｒ−ｌｉｋｅ特徴を検出するもので、矩形フィルタの組合せで構成されている。図２に示すように、各ステージに割り当てられる弱判別器の数も異なっている。また、ステージ単位でもカスケード接続構成となっており、各ステージは接続された順番に従って判定処理を行う。即ち、例えば図２において、第１ステージの次に第２ステージが判定を実施し、その次に第３ステージが判定を実施する。
【０００４】
各ステージは、自身に割り当てられた順番に、自身に割り当てられたパターンの弱判別器を順に用いて、処理ウィンドウ内に人物の顔が含まれるか否かを判定する。あるステージにおいて、処理ウィンドウ内に人物の顔が含まれないと判定された場合、それ以降の順番のステージでは、この位置における処理ウィンドウについての判定は実施されない（カスケード処理は打ち切られる）。そして、最後の順番のステージによる判定で、処理ウィンドウ内に人物の顔が含まれると判定した場合に、この移動先における処理ウィンドウ内に人物の顔が含まれると判定する。
【０００５】
図３は、顔検出処理の一例を示すフローチャートである。次に、図３を用いて、顔検出処理のより具体的な流れについて説明する。
顔検出処理では、まず処理の対象となる処理ウィンドウ８０１が顔検出対象画像８００上に配置される（Ｓ１００１）。基本的には、この処理ウィンドウは、図１に示されるように顔検出対象画像８００の端から一定間隔で縦方向及び横方向へスキャンすることによって順に網羅的に移動して選択される。例えば、顔検出対象画像８００をラスタスキャンすることによって処理ウィンドウが選択される。
次に、選択された処理ウィンドウについて、処理ウィンドウに人物の顔が含まれるか否かの判定が実施される。この判定は、図２を用いて説明したように、複数のステージを用いて実施される。このため、まず判定を実施するステージが第一のものから順に選択される（Ｓ１００２）。
【０００６】
次に、選択されたステージによって判定処理が実施される（Ｓ１００３）。このステージの判定において、累積得点がステージごとに予め決められている閾値を超えなかった場合（Ｓ１００４−ＮＯ）、処理ウィンドウに人物の顔が含まれないと判定され（Ｓ１００８）、Ｓ１００７以降の処理が実行される。Ｓ１００７以降の処理については後述する。一方、累積得点がステージごとに予め決められている閾値を超えた場合（Ｓ１００４−ＹＥＳ）、その判定処理（Ｓ１００３の判定処理）が最終ステージによる処理であったか否かが判断される。最終ステージでなかった場合（Ｓ１００５−ＮＯ）、Ｓ１００２の処理に戻り、次のステージが選択され、新たに選択されたステージによって判定処理が実施される。一方、最終ステージであった場合（Ｓ１００５−ＹＥＳ）、現在の処理ウィンドウに人物の顔が含まれるという最終的な判定がなされる（Ｓ１００６）。この時点で、この処理ウィンドウに人物の顔が含まれると判断したことになる。
次に、判定の対象となっていた処理ウィンドウが、顔検出対象画像の中で最後の処理ウィンドウであったか否かを判断する。最後の処理ウィンドウではなかった場合（Ｓ１００７−ＮＯ）、Ｓ１００１の処理に戻り、次の処理ウィンドウが選択され、Ｓ１００２以降の処理が実行される。一方、最後の処理ウィンドウであった場合、この顔検出対象の入力画像に対する顔検出処理は終了する。
【０００７】
次に、各ステージにおける判定の処理内容について説明する。
各ステージには、１以上のパターンの弱判別器が割り当てられている。この割り当ては学習処理において、ＡｄａＢｏｏｓｔ等のブースティング学習アルゴリズムによって実施される。各ステージは、自身に割り当てられたパターンの弱判別器に基づいて、処理ウィンドウ内に顔が含まれるか否かの判定を行う。
各ステージでは、各ステージに割り当てられた各パターンの弱判別器に基づいて、処理ウィンドウ内の複数の矩形領域における特徴量がそれぞれ算出される。このとき用いられる特徴量は、各矩形領域内の画素値の合計値やその平均値等、即ち矩形領域内の画素値の総和値を用いて算出される値である。この矩形領域内総和値は、入力画像に対する累積画像情報（Ｓｕｍｍｅｄ  Ａｒｅａ  Ｔａｂｌｅ（ＳＡＴ）或いはＩｎｔｅｇｒａｌ  Ｉｍａｇｅと呼ばれる）を用いることにより高速に計算される。
【０００８】
図４は、ＳＡＴの一例を説明する図である。図４（ａ）は元の入力画像を示し、左上を原点（０，０）としている。入力画像（ａ）の座標位置（ｘ，ｙ）の画素値をＩ（ｘ，ｙ）としたとき、ＳＡＴの同位置（ｘ，ｙ）の成分Ｃ（ｘ，ｙ）を
【数１】
2010165046.tif 000003
として定義する。
【０００９】
即ち図４（ｂ）に示すように、入力画像（ａ）の原点位置（０，０）と位置（ｘ，ｙ）の画素を対角とする長方形内の画素の総和値がＳＡＴ（ｂ）の位置（ｘ，ｙ）の値Ｃ（ｘ，ｙ）となる。入力画像（ａ）の任意の矩形領域内の画素値Ｉ（ｘ，ｙ）の和は、このＳＡＴ（ｂ）上の４点を参照するのみで求めることができる。例えば、図５に示すように（ｘ0，ｙ0）と（ｘ1，ｙ1）とを対角とする矩形領域内の画素値の総和Ｃ（ｘ0，ｙ0：ｘ1，ｙ1）を求めるには、
【数２】
2010165046.tif 000004
とすればよい。
【００１０】
次に、算出された特徴量の相対値（例えば比や差分値。ここでは特徴量の差分値が算出されると想定する）としての差分値が算出され、この差分値に基づいて処理ウィンドウに人物の顔が含まれるか否かの判定が実施される。より具体的に説明すると、算出された差分値が、判定に用いられているパターンの弱判別器に設定された閾値よりも大きいか否か又は小さいか否かが判定される。そして、この判定の結果に応じて、処理ウィンドウにおける人物の顔の存否が判定される。
但し、この時点での判定は、各パターンの弱判別器それぞれに基づいた判定であり、ステージによる判定ではない。このように、各ステージでは、割り当てられた全てのパターンの弱判別器それぞれに基づいて個別に判定が実施され、それぞれの判定結果が得られる。
【００１１】
次に、ステージにおける累積得点を算出する。各パターンの弱判別器にはそれぞれ個別の信頼度重み（スコア）が割り当てられている。この信頼度重みとは、その弱判別器単独での「判断の確からしさ」即ち単独の信頼度を示す固定値である。処理ウィンドウに人物の顔が含まれると判定されると、そのとき使用されたパターンの弱判別器に対応するスコアが参照され、ステージの累積スコアに加算される。このようにして、加算された個別のスコアの総計が、ステージにおける累積スコアとして算出される。つまり、この累積スコアとは、そのステージ全体での判断の確からしさ（ステージ全体信頼度）を示す値となる。そして、ステージ全体信頼度が所定の閾値（ステージ全体信頼度閾値）を越えた場合に、このステージでは処理ウィンドウに人物の顔が含まれる可能性有りと判定し、処理を継続して次のステージに移る。一方、このステージにおけるステージ全体信頼度が閾値を越えない場合、処理ウィンドウに人物の顔が含まれないと判定し、以後のカスケード処理を打ち切る。
【００１２】
非特許文献１では、このような手順により、顔検出に代表される高速なパターン識別を実現している。なお、図２、３の検出器は、予め適正な学習を行っておけば、顔以外のパターン識別器として用いることももちろん可能である。
また特許文献２及び３も、非特許文献１の考え方に基づくパターン識別方法や装置に関する技術を開示している。このような弱判別器を一列にカスケード接続した構造を持つパターン識別器は、特に画像中から、良く似たパターン（検出対象パターン）とそれ以外のパターン（非検出対象パターン）とを分離する場合には、高速、かつ、十分な識別性能を発揮する。
【００１３】
しかしながら、検出対象パターンが例えば顔画像であるような場合、正面方向を向いたままであっても、左右に数十度ずつも傾ければ（面内回転という）、元の正立した正面顔に対して「良く似た」パターンとは言えなくなる。更に横顔に近いような軸方向の回転（奥行き回転又は横方向奥行き回転という）が加わると、異なった二次元画像パターンとなる。このような変動の大きいパターンを、一列のカスケード接続で識別するのにはそもそも無理がある。弱判別器のカスケード接続構造は、識別すべき検出対象パターンとは似ていない非検出対象パターンを少しずつ除外して行くためのものであるから、識別すべきパターン同士は互いに良く似ていることが前提となっているのである。
もちろん面内回転のみであれば、正立に近い正面顔を検出する識別器に、入力画像を順次回転させてから入力すれば、３６０度どの角度の顔であっても識別することは可能ではある。しかし、この方法では、回転回数に応じて処理時間が増大してしまうし、そもそも奥行き回転が加わる場合には対応できない。
【００１４】
そこで、非特許文献２においては、Ｃｏａｒｓｅ  ｔｏ  Ｆｉｎｅ戦略に基づく階層状のピラミッド構造の識別器を提案している。この識別器においては、まず第１階層では、検出したい全ての顔向き変動を含む学習画像パターンを入力してステージを学習する。第２階層では、顔向き変動を所定の範囲毎に分割し、それぞれ分割された変動のみを含む学習画像パターンにより、複数のステージを学習する。次の階層では更に狭い範囲の変動毎に分割して学習、というように、階層を進めるにつれて、徐々にロバスト性を下げた強判別器（ステージ）をピラミッドのように構成して行く。なお、この識別器は、横方向奥行き回転の顔向き変動のみを分割して対応している。±９０度の全奥行き回転範囲を、第２階層で３分割、第３階層で９分割しており、面内回転に関しては分割していない。
検出処理時は、入力されたサブウィンドウが第１階層のステージをパスしたならば、第２階層のステージを順に実行し、どれか一つでもパスしたら次のステージに進む。このように、粗い検出から始めて徐々に精度の高い検出を行っていくことにより、全ての変動の顔パターンを検出可能な識別器を構成している。
【００１５】
特許文献４でも同様の考え方に基づき、ロバスト性の大きい検出器から徐々に枝分かれして、ロバスト性の低い検出器にサブウィンドウ画像を入力して行く、ツリー構造を持った識別器を構成する方法を開示している。この識別器は、ツリーの枝ノードは、親ノードの受け持つ変動範囲を分割した一部変動を受け持つように学習させる。この方法の一実施形態が対応する顔の変動は、横方向奥行き回転だけでなく、顔が正面から上下を向いた方向となる縦方向奥行き回転も含む。全ての縦横奥行き回転変動を含む第１ノードの検出処理を行った後、まずは正面顔と左右それぞれの方向の奥行き回転顔の３つの変動に分岐する。そして次の階層で縦方向奥行き回転別に更に３つに分岐する。正面顔の縦方向回転中央の変動の分岐のみは、更に次の階層で３分岐する構成となっている。このような分岐構造を予め決めた上で、それぞれの変動に対応するサンプルデータを多数入力して、各分岐を学習させるようにしている。
特許文献４の方法は、非特許文献２とは異なり、上位層で打ち切られた変動に含まれる下位層の演算を行う必要がなくなるため、高速性が実現できるとしている。なお、特許文献４における弱判別器は、矩形差分ではなくピクセル差分を用いているが、弱判別器のカスケード接続により強判別器を構成するという考え方は同様である。
【００１６】
非特許文献３では、特許文献４と同様のツリー構造の識別器の別の学習方法を提案している。本文献に記載されている識別器が対応する変動は、面内回転と横方向奥行き変動である。全変動を含む第１階層のノードから、横方向奥行き回転を２段階で５分岐させ、然る後に第４階層において回転変動を３分岐させる構造を定めている。この構造に従って、学習を進めるのは、上述の文献と同様である。
最終分岐に到達する前に学習される各ノードの検出器の出力は、上述の文献と異なりスカラー値ではなく、そのノードの次の層の分岐数と一致した要素数のベクトル値である。即ち分岐前の各ノード検出器は、非顔画像の打切りだけでなく、次の層の分岐選択も行う機能を持つ。検出時において、各ノードの出力ベクトルの値が１に近い要素に対応する分岐のみが起動されることにより、不要な演算を行う必要がなくなり、高速性が確保されるとしている。
【００１７】
【特許文献１】特開平８−３２９０３１号公報
【特許文献２】特開２００４−１８５６１１号公報
【特許文献３】特開２００５−４４３３０号公報
【特許文献４】特開２００５−２８４４８７号公報
【非特許文献１】Ｐ．  Ｖｉｏｌａ，  Ｍ．  Ｊｏｎｅｓ，  "Ｒａｐｉｄ  Ｏｂｊｅｃｔ  Ｄｅｔｅｃｔｉｏｎ  ｕｓｉｎｇ  ａ  Ｂｏｏｓｔｅｄ  Ｃａｓｃａｄｅ  ｏｆ  Ｓｉｍｐｌｅ  Ｆｅａｔｕｒｅｓ"，  Ｐｒｏｃ．  ＩＥＥＥ  Ｃｏｎｆ．  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ，  Ｖｏｌ．  １，  ｐｐ．５１１−５１８，  Ｄｅｃｅｍｂｅｒ  ２００１．
【非特許文献２】Ｚ．  Ｚｈａｎｇ，  Ｌ．  Ｚｈｕ，  Ｓ．  Ｚ．  Ｌｉ，  Ｈ．  Ｚｈａｎｇ，  "Ｒｅａｌ−Ｔｉｍｅ  Ｍｕｌｔｉ−Ｖｉｅｗ  Ｆａｃｅ  Ｄｅｔｅｃｔｉｏｎ"，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｆｉｆｔｈ  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｕｔｏｍａｔｉｃ  Ｆａｃｅ  ａｎｄ  Ｇｅｓｔｕｒｅ  Ｒｅｃｏｇｎｉｔｉｏｎ  （ＦＧＲ'０２）
【非特許文献３】Ｃ．  Ｈｕａｎｇ，  Ｈ．  Ａｉ，  Ｙ．  Ｌｉ，  Ｓ．  Ｌａｏ，  "Ｖｅｃｔｏｒ  Ｂｏｏｓｔｉｎｇ  ｆｏｒ  Ｒｏｔａｔｉｏｎ  Ｉｎｖａｒｉａｎｔ  Ｍｕｌｔｉ−Ｖｉｅｗ  Ｆａｃｅ  Ｄｅｔｅｃｔｉｏｎ"，  Ｔｅｎｔｈ  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  （ＩＣＣＶ２００５），  Ｖｏｌｕｍｅ  １，  １７−２１  Ｏｃｔ．  ２００５，  ｐｐ．４４６−４５３
【発明の開示】
【発明が解決しようとする課題】
【００１８】
非特許文献２、３や特許文献４のような従来技術では、Ｃｏａｒｓｅ  ｔｏ  Ｆｉｎｅ或いはツリー構造による変動範囲の分割方法（即ち分岐構造）を、学習に先んじて決めている。例えば、非特許文献２においては、横方向奥行き回転変動のみを分割により対応しており、面内回転に関しては分割していない。特許文献３は、横方向と縦方向との両方の奥行き回転変動に対応しているが、上位層で横方向変動の分岐を行った後に、下位層で縦方向変動の分岐を行うように、構成を決めている。非特許文献３では、横方向奥行き回転変動の分岐を行った後に、面内回転変動の分岐を行っている。
【００１９】
これらの分岐構造は、機械学習処理を実施させる人間が、経験的（或いは直感的）に決めているものであるから、対象とする変動を含むパターンを識別する上で、最適な分岐構造となっているとは限らない。例えば上述の非特許文献３においては、奥行き回転変動分岐を、面内回転変動の分岐よりも後に行った方が、識別性能が良くなるかもしれないし、入力したパターンが属さない分岐の早期打切り率が上がって処理速度が向上する可能性もある。
【００２０】
もちろん、最も好適な分岐構造を選択するには、考えられるあらゆる分岐構造についてそれぞれ学習を行ってみて、結果的に最も良好な検出性能を発揮する構造を採用する、という方法もある。しかしながら、一般的に機械学習処理には非常に長い時間がかかるため、このような総当り的な処理を実行するのは現実的でない。
【００２１】
本発明はこのような問題点に鑑みなされたもので、分岐構造の識別器を学習する上で、処理時間を大きく増大させずに好適な分岐構造を構築することを目的とする。
【課題を解決するための手段】
【００２２】
そこで、本発明の情報処理装置は、識別対象パターンを識別する分岐型パターン識別器を、機械学習処理により生成する情報処理装置であって、複数の変動カテゴリの組合せに対して、それぞれ個別の予備識別器を学習させる予備学習手段と、前記予備識別器で識別処理を実行し、識別処理結果に基づいて分岐構造を決定する分岐構造決定手段と、前記分岐構造に基づき、前記分岐型パターン識別器を学習させる本学習手段と、を有することを特徴とする。
【００２３】
かかる構成とすることにより、分岐構造の識別器を学習する上で、処理時間を大きく増大させずに好適な分岐構造を構築することができる。
【００２４】
また、本発明は、情報処理方法、プログラム及び記憶媒体としてもよい。
【発明の効果】
【００２５】
本発明によれば、分岐構造の識別器を学習する上で、処理時間を大きく増大させずに好適な分岐構造を構築するができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施形態について図面に基づいて説明する。
【００２７】
＜実施形態１＞
（ブロック図解説）
図６は、情報処理装置の構成を示すブロック図である。
画像入力部２０１は、パターン識別処理対象となる入力画像データや、学習用サンプル画像データを装置内に取り込む機能を持つ。画像入力部２０１は、光学系、ＣＣＤ（Ｃｈａｒｇｅ−Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅｓ）センサー等の光電変換デバイス／ドライバー回路／ＡＤコンバーター／各種画像補正を司る信号処理回路／フレームバッファ等により構成するカメラ装置である。或いは、画像入力部２０１は、後述の通信インターフェース部（通信Ｉ／Ｆ）２０６とハードウェアを共用し、Ｉ／Ｆに接続されるネットワーク等の所定の通信経路を介して外部装置から画像データを受信するＩ／Ｆ装置であってもよい。
前処理部２０２は、検出処理を効果的に行うための各種前処理を実行する。より具体的に説明すると、前処理部２０２は、色変換処理／コントラスト補正処理／ＳＡＴ（Ｓａｍｍｅｄ  Ａｒｅａ  Ｔａｂｌｅ）データの生成等、各種画像データ変換をハードウェアで処理する。判別処理部２０３は、前処理部２０２の出力を参照して所定のオブジェクトを判別する機能を有する。判別処理部２０３は、学習によって生成したパラメータに基づいてブースティング判別処理を実行する。なお、前処理部２０２及び判別処理部２０３の機能（又は一部機能）は、後述するＣＰＵ２０８で実行されるソフトウェア・プログラムによる処理として実装するようにしてもよい。
【００２８】
ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２０４は、ＣＰＵバス２０５上の各処理部やＲＡＭ２１０／ＲＯＭ２０９間のデータ転送等を司る。
通信インターフェース部２０６は、処理部を介して外部装置から本装置に所定の動作を指令したり、学習のために必要なデータ群を外部の装置から後述の大容量記憶部２１１に転送したりする事ができる。
ユーザー・インターフェース部（ＵｓｅｒＩ／Ｆ）２０７は、例えば、操作者が装置の動作を指定する為の押しボタン・スイッチや、操作者に情報を提示するためのディスプレイ・パネルのような、入出力デバイスである。
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０８は、実施形態に係る処理を実行すると共に、バス２０５を介して接続される本装置全体の各部の動作を制御する。ＲＯＭ２０９は、ＣＰＵ２０８の動作を規定する命令を格納する。ＲＡＭ２１０は、ＣＰＵ２０８の動作に必要な作業メモリとして使用される。ＲＡＭ２１０は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）等の比較的容量の大きいメモリで構成する。大容量記憶部２１１は、ハードディスクやフラッシュメモリ等の大容量データ記憶装置である。例えば学習のために必要なサンプル画像等の大量データセットは、大容量記憶部２１１に格納する。
【００２９】
なお、本装置はＣＰＵバス２０５に全ての装置が接続される構成を取る。しかしながら、例えば画像入力部２０１、前処理部２０２、判別処理部２０３、ＤＭＡＣ２０４を別のバス（画像バス）に接続し、画像バスとＣＰＵバスとの間をブリッジで接続する構成とするようにしてもよい。このようにバスを分離する事で、ハードウェアによる処理部２０１〜２０３とＣＰＵ２０８とは並列に動作可能とすることもできる。
【００３０】
（変動カテゴリ）
本実施形態の情報処理装置では、図７に示す３つの変動カテゴリで分類される変動を組合せた変動を含む顔画像を検出対象パターンとする、分岐構造のパターン識別器（分岐型パターン識別器）を学習する例を用いて説明を行う。
変動カテゴリ（ｉ）は、面内回転変動である。正立状態（図中中央）から時計周り（＋とする）／反時計回りにそれぞれ４５度回転した顔までを対象の変動範囲とする。本実施形態では、この±４５°の範囲を３分割するものとし、−４５°〜−１５°の範囲をａ、正立を含む−１５°〜＋１５°の範囲をｂ、−４５°〜−１５°の範囲をｃとラベル付けしている。
【００３１】
変動カテゴリ（ｉｉ）は、左右方向の奥行き回転変動である。本実施形態では、正面顔から左右向きの横顔までを対象の変動範囲として、この範囲を３分割している。右向きの横顔からほぼ両目の写る直前までの顔（−９０°〜−３０°）をＡ、正面顔含む両目の写る顔（−３０°〜＋３０°）をＢ、左向きの横顔からほぼ両目の写る直前までの顔（＋９０°〜＋３０°）をＣとラベル付けしている。
変動カテゴリ（ｉｉｉ）は、サイズ変動である。本実施形態では、面内回転０°のときの両目と口の高さの差の画素数で顔サイズを規定する。最小顔サイズは１６、最大顔サイズは２２で、この範囲を２分割して小を１、大を２とラベル付けしている。なお、この範囲外の顔は、入力画像を拡大・縮小したチャネル処理によって検出される。
本実施形態では、これら３つのカテゴリによる変動が入り混じった顔画像を検出対象としている。もちろんこれに上下方向の奥行き回転変動を加えてもよいし、それぞれの変動の分割数を更に増やして、検出精度の向上を図ることも可能であるが、説明が分かりにくくなるので割愛する。
【００３２】
また、各変動カテゴリの隣接する分類にオーバーラップ領域を設けて、どちらの分類にも所属するパターンが存在するようにしてもよい。例えば、変動カテゴリ（ｉ）について、−４５°〜−１２．５°の範囲をａ、正立を含む−１７．５°〜＋１７．５°の範囲をｂ、−４５°〜−１２．５°の範囲をｃとすることもできる。この場合、オーバーラップ領域に属する例えば＋１５．０  °の回転データは、ｂだけでなくｃとしても分類する（必要ならデータをコピーする。）。
後述の予備識別器や本識別器の分岐の各枝は、上記変動カテゴリ各々の１分類を検出すべき担当範囲とする。これらの識別器を学習する際、このようなオーバーラップ領域を設けた分類のデータを用いることにより、隣接分類の境目の相当するパターンが取りこぼされにくくなり、よりロバスト性を高める効果が見込める。
【００３３】
（検出処理）
ここで、本実施形態の情報処理装置の識別器における検出処理について説明する。
本実施形態のパターン識別器には、予備学習処理（後述）により生成される予備識別器と、その後の本学習（後述）により生成される分岐構造を持った本識別器と、がある。何れの検出処理も判別処理部２０３を用いて実行される。
図８（ａ）は、分岐構造を持たない予備識別器１つの構成を示す図である。予備学習処理では、この構成の識別器を、全ての変動カテゴリの組合せ毎に一つずつ生成する。３０１等の図中の円で示されるノードは、一つの弱判別器を示す。本実施形態の識別器では、非特許文献１のようなステージ構成ではなく、弱判別器一つずつに打切り判定がなされるようにしているが、ステージ構成を取ってもどちらでもよい。所定数のカスケード接続された弱判別器を最後まで通過した入力は、最後に最終判定閾値による閾値処理（最終判定）３０２が行われて、受け入れられた場合は対象オブジェクトであると判断される。
【００３４】
図８（ｂ）は、本識別器の一例を示す図である。この本識別器はツリー状の分岐構造をもっていて、１段目の弱判別器３０３から処理を開始し、３段目３０４、３０５で２分岐している。５段目においては２分岐それぞれが更に３分岐する構成となっている。最終段３０６まで打ち切られなかった入力は、３０７において最終判定され、ここで受け入れられれば対象オブジェクトであると判断される。
このようなツリー構造識別器において、分岐処理の実行方法はいくつかのバリエーションが考えられる。
【００３５】
第一の方法は全起動であって、全ての分岐を実行する方法である。この場合、途中で打ち切られずに最終段３０６までたどり着いた分岐の出力は、全て最終判定部３０７に入力される。最終判定部３０７は、各分岐の出力座標や判別の信頼度に応じて、所定の統合処理を行った後に閾値処理して、受け入れるかどうか判定する。この方法のメリットは、検出と同時に変動カテゴリによる分類を正確に行えることである。デメリットとしては処理時間がかかることである。
第二の方法は全探索起動である。この場合、図中で例えば上の分岐から順に、打ち切られるまで検出処理を実行する。打ち切られた場合には、直前の分岐まで戻って直下のノード（兄弟ノード）を実行する。最終段にたどり着いた分岐があれば、そこで最終判定を行い受け入れられれば処理完了とする。受け入れられない場合は直前の分岐に戻って継続する。この方法のメリットは、実装が容易な割には速度が向上することである。デメリットとしては、分岐の実行順序に依存するため正確な分類は行えないことである。
第三の方法は分岐選択起動である。この場合、途中のノードの処理結果に基づき、どの分岐を起動するか選択する。メリットは高速性である。分類の正確度は選択方法に依存する。デメリットは処理が複雑になることで、例えば非特許文献３のような分岐選択可能なノードを生成するようにしたり、他の分岐選択方法を実装したりする必要がある。
これらの起動方法は何れを用いてもよく、実施形態の本質には関わらないので詳細な説明は割愛する。
【００３６】
図９は、判別処理部２０３に搭載される弱判別器の詳細を示す図である。４０１、４０２はそれぞれ１つの弱判別器とその周辺回路（合わせてノードという）とを示すブロック図である。図９は論理的な接続状態を示しており、不図示の更に多くのノードがカスケードに、或いは途中分岐して接続されている。ノードは、物理的には１つの処理回路で構成され、時分割にパラメータを切り替えて使用することにより、論理的に多数のノードを実現している。もちろん高速化を目的として、いくつか或いは全てのノードを物理的な回路として実装し、並列処理を行えるようにしてもよい。
パラメータメモリ４１１は、弱判別器を構成するためのパラメータ情報を格納するメモリである。本実施形態の弱判別器は、非特許文献１と同様の矩形特徴を用いるものである。従ってパラメータメモリ４１１のより具体的な内容は、矩形数・矩形座標・フィルタ係数・フィルタ閾値・信頼度重み（＝スコア）・識別閾値となっている。これらのパラメータは、実際には判別処理部２０３内のメモリ・ブロック領域に格納されており、アドレス・デコーダによって所望の弱判別器に対応するパラメータが読み出される。４１１は弱判別器１に対応するパラメータ・セット１を読み出したことを示し、４１２は弱判別器２に対応するパラメータ・セット２を読み出したことを示している。
【００３７】
ここで、「矩形数」とは検出ウィンドウ内における矩形の数を指定する情報であり、例えば、図２に示した第１及び第２ステージの弱判別器のようなフィルタの場合、矩形数が２となる。また図２の第ｎステージ第ｍ弱判別器の場合は、矩形数３となる。同図では、白矩形、黒矩形が一つずつの矩形である。弱判別器４２１は、それぞれの矩形内総和値（又はその平均値）に矩形毎に設定される「フィルタ係数」を乗じた値の合計を「フィルタ閾値」を用いて閾値処理する。閾値条件（即ち式（３））を満たすとき、弱判別器４２１は１を出力し、満たさない場合−１を出力する。
【数３】
2010165046.tif 000005
ここで、ｐは、矩形領域の数である。また、Ｓiは、矩形領域内の画数値の総和である。また、Ｃiは、矩形領域に対するフィルタ係数である。また、ＷTh_tは、ノートｔの弱判別器のフィルタ閾値（判別閾値）である。
【００３８】
矩形領域の形状・位置や数、またフィルタ係数Ｃi及びフィルタ閾値ＷTh_tは、学習時に決定するパラメータである。本実施形態の弱判別器では、Ｃiは必ず１又は−１のどちらかの値となっている。つまり、式（３）の左辺は複数の矩形領域内の画素総和値Ｓiの差分値を求める処理に相当する。この差分値が所定のフィルタ閾値（判別閾値）ＷTh_tより大であるとは、弱判別器に限れば入力データは識別対象パターンであると判断されたことに相当する。
【００３９】
矩形領域内総和値 は先に説明した通り、ＳＡＴデータを参照することで極めて高速に算出する事が可能である。４５０はＳＡＴメモリであって、前処理部２０２により検出処理の開始前に算出した１枚の入力画像データに対するＳＡＴデータを格納している。弱判別器４２１は、ＳＡＴメモリ４５０から検出ウィンドウ位置の値を参照してＳiを計算し、式（３）の判定を行っている。
【００４０】
「矩形座標」は矩形領域それぞれの位置を表す座標情報である。「フィルタ係数」は正又は負の係数である。「信頼度重み（スコア）」とは、対象とするノードの弱判別器単独での信頼度を表す値である。ブースティング判別は、第ｔノード以前に処理された各ノード個別のスコアの、符号付き総和値（累積スコアという）をもって判別を行う。即ち、ここで言う累積スコアは、第１ノードから第ｔノードまでをカスケード接続した識別器全体の判別の確からしさ、即ち全体の信頼度を示す値となる。「識別閾値」は、この累積スコア値をもってブースティング判別器の判定を行うための閾値である。
【００４１】
カスケード接続のｋ段目のノードの弱判別器（４２１相当）の判定結果をｈk（ｘ）（但しｘ：入力データ）、「信頼度」をαk、ｔ段目のノードの「識別閾値」をＴgh_tとした場合、ｔ段目の打切り判定部（４６１相当）における打切り判定は、式（４）のようになる。ここでｈk（ｘ）は、各弱判別器において、検出対象オブジェクトと判断した場合（＝式（３）のフィルタ閾値条件を満たすとき）１、非検出対象オブジェクトと判断した場合（＝フィルタ閾値条件を満たさないとき）−１である。
【数４】
2010165046.tif 000006
【００４２】
式（４）を満足するならば処理を継続し、次ノードへ累積スコア（全体信頼度）を出力する。最終ノードでこの判別条件を満たせば、検出対象パターンであると判断する。この最終判別処理は、分岐構造のない予備識別器の場合、図８の３０２の処理に対応する。なお、信頼度αkと識別閾値Ｔgh_tは、ｔ段目のノード学習時に決定するパラメータである。
【００４３】
信頼度αkは、ノードに対応するパラメータメモリ（４１１、４１２相当）から読み出され、乗算器（４３１相当）で弱判別器（４２１相当）の出力ｈk（ｘ）と乗じられる。そして加算器（４４１相当）で前段ノードから出力されてくる累積スコアと加算される。打切り判定部（４６１相当）では、弱判別器に対応するパラメータメモリ（４１１相当）から読み出した識別閾値Ｔgh_tを使用して、ここまでの累積スコア
【数５】
2010165046.tif 000007
に対する式（４）の判定を行う。
【００４４】
累積スコアが識別閾値Ｔgh_t以上であれば、処理継続となり次段のノードへ累積スコアが出力される。なお、分岐構造の場合には、分岐する全ての兄弟ノードに同じ累積スコア値が出力されるようになっている。
図８の３０２及び３０７は最終判定処理部であり、累積スコアに対して（分岐構造の場合は必要な統合処理等行った後に）、最終識別閾値で閾値処理する。特に非分岐構造の最終ノードである３０３では、図９の４６１に相当する打切り判定は不要となり、加算器３４１から出力される累積スコアが最終判定部３０２にそのまま入力され判定に用いられる。このとき打切り判定部４６１の判定閾値を十分に小さい負値としている。或いは、不図示のセレクタにより打切り判定部４６１を介さず累積スコアを出力するパスを設けてもよい。分岐構造の場合は同様にしてもよいが、最終段３０６で打切り処理した後に残ったものだけを用いて統合及び最終判定処理するようにしてもよい。何れにせよ、共通のノード処理回路を用いることが可能である。以上の処理により、ブースティング判定処理を実行している。
【００４５】
（基本学習処理）
次に図１０を用いて、情報処理装置の学習処理について説明する。
図１０は、複数の弱判別器から構成する１つのブースティング判別器を機械学習処理する場合の一例を示すフローチャートである。なお、以下に示す処理は、図６におけるＣＰＵ２０８が実行する。ここで１つのブースティング判別器とは、先に説明した予備識別器の中の１つのことであり、また分岐構造の本識別器においては分岐の１本に相当するものである。なお、上述したように、予備識別器は、識別処理を段階的に実行し、識別対象パターンでないと判断した段階で以降の段階の処理の打ち切りを実施する識別器である。
また、後程、図１１のステップＳ１０１の処理として説明するが、学習処理に先立ち、大容量記憶部２１１には学習に必要なデータ群がカテゴリに従って分類されて格納されている。そして、学習しようとするブースティング判別器の担当すべき分類範囲に属する検出対象データと、背景等の非検出対象データと、がそれぞれ多数、学習処理に用いられる。例えば、図７で説明したラベルａＢ１を担当する予備識別器或いは本識別器の分岐の１本の学習においては、同ラベルａＢ１に分類される大容量記憶部２１１に保持された顔画像データの、全て又はその１部が検出対象データとして用いられる。
【００４６】
以下、ＡｄａＢｏｏｓｔアルゴリズムに従って弱判別器を学習する。基本的な学習アルゴリズムは非特許文献１に記載の手法と同一である。
まずステップＳ６０１で、ＣＰＵ２０８は、大容量記憶部２１１に保持する学習データから、今回の学習に使用するデータを選択する。ここではＣＰＵ２０８は、検出対象パターンである顔データと非検出対象パターンである非顔データとを、所定の比率の数となるように取り出す。
予備識別器又は本識別器の分岐には、それぞれ担当すべき変動カテゴリの組合せによる分類があるので、分類に所属する顔データが検出対象パターンとして選ばれる。非検出対象パターンとしては非顔データが用いられるが、更に非検出対象パターンとして担当しない変動カテゴリ組合せで分類される顔パターンを追加して学習することも可能である。このようにすると、各予備識別器或いは分岐は、より選択性の高い検出処理を行うようになることが期待できる。
【００４７】
ステップＳ６０２では、ＣＰＵ２０８は、取り出した学習データセットに対する重み係数を初期化する。学習データの総数がｍ個の場合、全ての重み係数ｗt,i（ｔ：ノード番号、ｉ：学習データ番号）を以下の式（５）で初期化する。
【数６】
2010165046.tif 000008
【００４８】
つまり、第１ノード学習時には、全ての学習データに対して共通の重みを与えている。
続いて、ステップＳ６０３〜Ｓ６１０でＣＰＵ２０８は、１つの弱判別器を学習する。
ステップＳ６０３でＣＰＵ２０８は、式（６）に従って重み係数を正規化する処理を行う。
【数７】
2010165046.tif 000009
もちろん最初にこのステップＳ６０３に入ってきたときは、重み係数ｗ1,iはＳ６０２（式（５））で設定された値になっているので、既に式（６）を満たす状態となっている。従って、このステップＳ６０３は、第２ノード以降の学習時に重み係数ｗt,iが変更された場合に、その総和が１となるように正規化するための処理である。
【００４９】
まず、ステップＳ６０４でＣＰＵ２０８は、矩形フィルタ群の中から１つの矩形フィルタを選択する。矩形フィルタ群とは、予め定めた形状の基本矩形フィルタに対して、その大きさや検出ウィンドウ内の位置に応じた変形を有する複数の矩形フィルタ候補である。例えば、図２の第１弱判別器に例示した上下の隣接矩形領域の差分フィルタの場合であっても、その矩形領域の大きさや縦横比、検出ウィンドウ内の位置に応じて複数の変形が考えられる。矩形フィルタ群としては、予め定めたいくつかの基本矩形フィルタを基準にして、その変形も含めた全ての組合せを用意しておく。用意された矩形フィルタ夫々に通し番号を振って、これをフィルタ番号とする。本ステップでＣＰＵ２０８は、用意したこれら矩形フィルタ候補を一つずつ順に選択する処理を行う。
次に、ステップＳ６０５でＣＰＵ２０８は、選択した矩形フィルタ候補を用いて、全ての学習データに対するこの矩形フィルタの判別性能評価を行う。まず、ＣＰＵ２０８は、全ての学習データに各々に対して、この矩形フィルタ出力値を算出し、検出対象と非検出対象とを分離する閾値を決定する。このときＣＰＵ２０８は、フィルタ出力値の算出を、判別処理部２０３を利用してハードウェアで処理する。また、ＣＰＵ２０８は、閾値の決定を矩形フィルタ出力値のヒストグラムを利用して行う。図１２は、全学習データに対する検出対象データのヒストグラム１３０２と非検出対象データのヒストグラム１３０１とを示す図である。横軸はフィルタ出力置（矩形差分値）で縦軸はその値となった学習データの数を表す。ＣＰＵ２０８は、このヒストグラムを使用して検出対象と非検出対象とを最もよく分離する閾値ＦTh_t,j（誤り率最小となるもの。ｔ：学習中のノード番号、ｊ：フィルタ候補番号）を決定する。
【００５０】
更に、ステップＳ６０５では、ＣＰＵ２０８は、決定した閾値ＦTh_t,jを用いて全ての学習データに対する検出誤り率を算出する。式（７）は全ての学習データに対する重み付き誤り率である。
【数８】
2010165046.tif 000010
ここで、ｔは、学習中のノード番号である。ｊは、フィルタ候補番号である。ｉは、学習データ番号である。
【００５１】
ここで、ｈt,j（ｘi）は矩形フィルタ候補ｊによる学習データｉの判定出力であり、前記閾値ＦTh_t,jを使用して入力対象データｘiが検出対象であると判定した場合１を出力し、検出対象を含まないと判定した場合０を出力する。ｙiは正解ラベル（教示ラベル）であり入力学習データｉが検出対象であるか否かによって、それぞれ１又は０が割り当てられている。ステップＳ６０６による繰り返し処理で、ＣＰＵ２０８は、以上の処理（ステップＳ６０４、Ｓ６０５）を全ての矩形フィルタ候補に対して実施しそれぞれの重み付き誤り率Ｅt,jを求める。
【００５２】
全ての重みつき誤り率Ｅt,jの算出が終了すると（ステップＳ６０６）ＣＰＵ２０８はこの中で最も重み付き誤り率Ｅt,jの小さい矩形フィルタ候補ｊ（即ち最も判別性能が高い矩形フィルタ）を探して、これを弱判別器として選択する（ステップＳ６０７）。このときの重み付き誤り率をＦTh_t,jとする。また、このフィルタで用いられた閾値ＦTh_t,jをフィルタ閾値ＷTh_tとする。
そして、ＣＰＵ２０８は、式（８）により弱判別器に対する信頼度αtを算出する（ステップＳ６０８）。
【数９】
2010165046.tif 000011
ＣＰＵ２０８は、算出した信頼度αtやフィルタ閾値ＷTh_t、矩形フィルタの矩形領域の形状・位置・数・フィルタ係数を、ＲＡＭ２１０に学習中のノードｔのパラメータとして記録する。
【００５３】
次にステップＳ６０９において、ＣＰＵ２０８は、打切り閾値を決定する。ここでもＣＰＵ２０８は、矩形フィルタの判定閾値を決定した手法と同様に、検出対象データに対する累積スコアのヒストグラムと、非検出対象データに対する累積スコアのヒストグラムと、から閾値を決定する事ができる。図１３は、打切り閾値の決定法を説明するための累積ヒストグラムの例を模式的に説明するための図である。１４０１は非検出対象データに対する累積スコアのヒストグラム、１４０２は検出対象データに対する累積スコアのヒストグラムである。ＣＰＵ２０８は、検出対象データに対する打切り割合（検出対象データの打切り数／検出対象データ数）が所定以下の許容範囲になる様に打切り閾値を決定する。検出対象データの打切り数とは即ち、１４０２の累積スコアが、ここで定めた閾値以下になるデータの総数である。非検出対象データに関しては打ち切られる程良いので、ここでは考慮しなくてよい。ここで定めた閾値が、図９の打切り判定部４６１で用いられる打切り閾値パラメータＴgh_tとなる。
【００５４】
更にステップＳ６１０では、ＣＰＵ２０８は、各学習データに対する重み係数を下記演算式（９）で更新する。
【数１０】
2010165046.tif 000012
但し、式（９）で更新する重み係数Ｗt,iは正しく検出できた学習データｉの係数のみである。即ち、正しく検出された学習データ（検出対象データ、非検出対象データ共）の重みは、小さくなる様に更新される。従って、ステップＳ６１０では、検出を誤った学習データに対する重みを、相対的に大きくしていくことになる。
【００５５】
ここまでの処理（ステップＳ６０３〜ステップＳ６１０）で１つの弱判別器を生成した後、ステップＳ６１１ではＣＰＵ２０８は、所定の完成条件を満たすブースティング判別器が生成された否かを判定する。ここで所定の条件とは、弱判別器数が予め設定した上限数に到達したか、式（７）で計算した重み付き誤り率Ｅjが所定の値を下回り、学習を開始する際の所望の性能を達成できた場合に満たされる。条件を満たさない場合、ＣＰＵ２０８は、ステップＳ６０３に戻って、続く弱判別器の生成処理を継続する。
【００５６】
（学習全体フロー）
本実施形態の情報処理装置における学習処理の全体の流れは、図１１のようになる。図１１は、学習処理全体の流れを示すフローチャートである。
まずステップＳ１０１において、サンプルデータの入力と分類処理とを行う。これは学習に用いる検出対象オブジェクト画像データ（本実施形態では顔画像データ）と、後述の予備識別器の評価に用いる同データと、を装置に入力するステップであり、それぞれ対象とするカテゴリの変動を全て含んだ十分な数のデータが必要である。なお、学習用データと評価用データとは別々に分けて入力してもよいし、ここで多量の顔画像データ群を入力しておき、学習と評価時とにそれぞれサンプリングして用いるようにしてもよい。
また、検出対象オブジェクトでない物体や背景等の非検出対象オブジェクト画像データ（本実施形態では非顔データ）も、このステップで装置に入力され、後のステップにおける学習・評価に用いることが可能となる。
【００５７】
これらデータの入力は、図６の画像入力部２０１によって行われる。画像入力部２０１がカメラ装置で構成される場合には、撮影によって収集された顔画像に、ユーザがＵｓｅｒ  Ｉ／Ｆ２０７を介して必要な付随情報（目口の位置座標等）を入力することによりデータが蓄積される。或いは画像入力部２０１と共用の通信Ｉ／Ｆ２０６とを介して、外部装置より予め収集された顔画像を付随する情報と共にデータを入力することもできる。入力された学習データ及び評価データは、大容量記憶部２１１に保持される。
入力・保持された顔画像データは、付随する情報を用いて、識別器が対応しようとする全ての変動カテゴリで分類（ラベル付け）する。例えば、「反時計回りに３０°面内回転した左側１０°の奥行き回転方向を向いたサイズ１８の顔」は、図７に示したラベルで「ａＢ１」と分類される。
本実施形態において、顔データには、両目座標・口座標・奥行き回転角度の３つの情報が付随する。Ｕｓｅｒ  Ｉ／Ｆ部２０７でこれらの情報を入力する場合には、ディスプレイ上に表示された顔画像に対し、マウス等のポインティング・デバイスを用いて目口の座標を示す。また、キーボードにより（主観的な）奥行き回転角度を入力する。外部装置より学習用及び評価用データが送られてくる場合には、既に入力済みのこれら付随情報も合わせて送られてくる。
【００５８】
本実施形態において、カテゴリ（ｉ）の面内回転角度は、両目を結ぶ線分の角度により算出される。この線分が画像中で水平の場合が面内回転０°であり、これを基準として時計回り方向の回転を＋とする。また、カテゴリ（ｉｉｉ）のサイズ変動は、両目を結んだ線分と口位置までの高さとの差の画素数により計算する。横顔で片目しか見えていない場合には、別途頭の真上を示す頭頂方向を付随情報として入力しており、これによって面内回転とサイズとを計算することができる。なお、片目の目尻目頭、耳位置、鼻孔位置等、特徴点位置を示す付随情報を増やして、これらから頭頂方向を推定計算するようにしてもよい。
なお、ステップＳ１０１の入力・分類処理は、学習開始前の何時のタイミングで行ってもよい。続く学習や評価ステップで用いるデータが異なる場合には、それぞれの開始前までに完了して、大容量記憶部２１１に保持されていればよい。或いは、続く学習や評価ステップにおいて、通信Ｉ／Ｆ２０６を介して外部装置に蓄積された分類済みデータを逐次取りに行くように実装してもよい。
【００５９】
続いてステップＳ１０２において、予備識別器の予備学習を行う。予備識別器は、図８（ａ）に示した分岐無しのカスケード接続型識別器で、全ての変動カテゴリの組合せ対して、それぞれ１つずつ生成する。本実施形態の対応する面内回転（ｉ）３分割、奥行き回転（ｉｉ）３分割、サイズ変動（ｉｉｉ）２分割の場合、３×３×２＝１８本の予備識別器が生成される。
予備学習処理は先に説明した学習処理アルゴリズムに従って、ＣＰＵ２０８の動作として実行される。各々の予備識別器に対する検出対象データは、識別器が担当する変動カテゴリの組合せで分類される顔データである。例えば、図７のａＢ１のラベルで示される分類に対応する予備識別器は、同ラベルの付いた顔画像のみを検出対象データとして入力する。また、非検出対象の非顔データは、何れの予備識別器であっても共通である。なお、学習しようとする予備識別器の担当外の変動カテゴリに属する顔データを、非検出対象データに加えて学習させることも可能である。このようにすると検出対象に対する選択性が高まることが期待できる反面、ロバスト性が低下する可能性もあるため、実施する際には見極めが必要である。
【００６０】
ここで生成する予備識別器の長さ（弱判別器の接続段数）は、数百段以上になる本識別器に比べて、非常に短くてよい。予め十段〜数十段程度の所定段数を定めて学習を開始するか、若しくは後述の評価処理が可能となるような条件を満たすことを学習完了の判別条件とすることができる。
次のステップＳ１０３では、ＣＰＵ２０８は、生成した予備識別器を評価し、分岐させるカテゴリの順序を決定する。この処理では、予備識別器に対し、あるカテゴリ変動の組合せに属する評価用データを投入し、その検出処理結果（識別処理結果）に基づきカテゴリの優先順位を決定する。本実施形態では、検出処理結果に基づく優先順位の決定方法の一例として、評価用データの打切り率を用いる方法を開示している。
【００６１】
図１４は、本実施形態におけるステップＳ１０３の予備識別器評価処理を説明するための図である。以下、図１４に従って処理の詳細を説明する。
最初にステップＳ７０１において、ＣＰＵ２０８は、大容量記憶部２１１に記憶されているデータから、今回の評価で用いる検出対象データ（顔画像データ）を選択する。これらの顔画像データは、先に述べたようにカテゴリ変動の組合せで分類されており、ＣＰＵ２０８は、全ての組合せの分類について一定数となるように選択する。なお、本評価処理においては、非検出対象データ（非顔データ）は使用しない。
次にステップＳ７０２からＳ７１１までのループ処理において、ＣＰＵ２０８は、投入する評価データの分類ラベル毎の処理を行う。まずＳ７０２において、ＣＰＵ２０８は、例えば図７の分類での「ａＡ１」のような、データ分類ラベルを一つ選ぶ。
【００６２】
続くステップＳ７０３からＳ７１０までのループ処理では、ＣＰＵ２０８は、予備識別器の分類ラベル毎の処理を行う。ここで、「ａＡ１」のラベルの識別器は、「ａＡ１」のラベルのデータを検出対象とするように学習された識別器である。Ｓ７０３でＣＰＵ２０８は、識別器ラベルを一つ選ぶ。識別器ラベル１つにつき対応する１つの予備識別器が存在するので、これは予備識別器を一つ選ぶことと等価である。
次のステップＳ７０４で、ＣＰＵ２０８は、Ｓ７０１で選択された評価用データの中から、Ｓ７０２で選択したデータ分類ラベルの示す分類に属するデータを一つ選択する。そしてステップＳ７０５において、ＣＰＵ２０８は、選択したデータをＳ７０３で選択したラベルの予備識別器に投入し、検出処理を実行する。
【００６３】
予備識別器は、先に述べた通りそれぞれ所定段数まで生成されている。ＣＰＵ２０８は、Ｓ７０６において投入したデータが所定段数まで打ち切られずに残っていたか否かを判別し、打ち切られていた場合には、ステップＳ７０７においてその識別器における打切り数をカウントアップする。なお、ループの先頭（Ｓ７０３）で、打切り数は０に初期化されている。
ステップＳ７０８において、ＣＰＵ２０８は、Ｓ７０２で選択したデータ分類に属する評価用データが、一通り最後まで評価されたかどうかを判別する。最後まで処理されていなかった場合、ＣＰＵ２０８は、Ｓ７０４に戻って次のデータを選択する。
【００６４】
データ分類のデータが一通り処理し終わった場合、ステップＳ７０９において、ＣＰＵ２０８は、打切り率を計算し、計算した値をＲＡＭ２１０に保持する。
そしてステップＳ７１０において、ＣＰＵ２０８は、全予備識別器に対するループ処理が完了したかどうかを確認する。完了していなければＣＰＵ２０８は、Ｓ７０３に戻って次の予備識別器を選択する。
ＣＰＵ２０８は、次のステップＳ７１１では、同様に投入データ分類ラベルの最後まで処理し終わったかどうかを確認し、処理し終わっていなければＳ７０２に戻って次のデータ分類ラベルを選択する。以上の処理により、ＲＡＭ２１０上には図１５に示すように、投入したデータの分類ラベルと検出処理した識別器ラベルの組合せでの、それぞれの打切り率の一覧表が構築される。
【００６５】
ところで、あるカテゴリ変動の組合せに属する検出対象データ群を、全ての予備識別器に投入した場合、処理段数が進むにつれて各識別器における打切り率は、例えば図１６のように推移して行く。図１６は、分類ラベル「ａＡ１」のデータ群を投入した一例を示す図である。図１６は分類ラベル「ａＡ１」のデータ群を投入した一例であるので、変動を検出対象とするａＡ１予備識別きにおける打切り率が最も低くなっている。他の識別器はａＡ１より打切り率は高いが、異なったカテゴリ（即ちラベルの桁位置）によって、その差は異なった傾向となっているのが分かる。例えば、カテゴリ（ｉｉ）（ｉｉｉ）をＡ１に固定し、カテゴリ（ｉ）のみ異なった識別器の打切り率を見ると、ｃのときに非常に高い値となっており、ｂでもその中間値になっている。対してカテゴリ（ｉ）（ｉｉ）をａＡに固定してみると、カテゴリ（ｉｉｉ）のラベルが１のときと２のときとの打切り率の差はそれほど大きくない。
打切り率の変動が大きくなるカテゴリは、識別器にとっては分類間の変動が大きく区別しやすい（よって他の分類のとき早期に打切りしやすい）と考えられる。従って、本学習で構築する分岐構造の本識別器においては、打切り率の変動が大きくなるカテゴリ程早期に分岐させるようにすることにより、処理速度と検出精度の向上が見込める。本実施形態では、この考え方に基づき、分岐の優先順位を決定する。なお、図１６に示したように、ある程度の処理段数以上では、各識別器の打切り率の大小関係はそれほど変化しなくなるため、所定段における打切り率（即ち図１５の表）の分散を調べることで、ＣＰＵ２０８は、この優先順位を決定することができる。
【００６６】
ステップＳ７１２〜Ｓ７１９のループにおいて、ＣＰＵ２０８は、それぞれの投入データ分類ラベル（図１５の表の縦１列ずつ）に関し、各変動カテゴリそれぞれについての打切り率の分散の平均値を計算する。まずステップＳ７１２において、ＣＰＵ２０８は、分類ラベル（表の１列）を一つ選択する。次にステップＳ７１３でＣＰＵ２０８は、注目するカテゴリ（即ち３桁のラベルの桁）を選択する。以下には、例としてカテゴリ（ｉ）を注目カテゴリとする場合に関して説明する。
次のステップＳ７１４では、ＣＰＵ２０８は、注目しているカテゴリでない他のカテゴリのラベルの組合せを一つ選択する。カテゴリ（ｉ）に注目している場合には、他のカテゴリは（ｉｉ）と（ｉｉｉ）となので、このラベル組合せとは、例えば「Ａ１」というようになる。
【００６７】
そしてＳ７１５において、ＣＰＵ２０８は、この他カテゴリラベルを固定して、注目カテゴリのみを変化させたときの打切り率の分散を式（１０）により計算する。
【数１１】
2010165046.tif 000013
ここで、Ｋとは注目カテゴリであってｌはそのラベルの１つである。ｎkは注目カテゴリの分類数、Ｌ'Ｌ''は２つの他カテゴリを選択したラベルに固定したことを示し、ｘlL'L''はラベルの打切り率、
【数１２】
2010165046.tif 000014
はその平均を示す。説明中の例で
は、図１５におけるデータ分類ラベル「ａＡ１」の列で、予備識別器ラベル「ａＡ１」「ｂＡ１」「ｃＡ１」の３つの値の分散を計算する処理に相当する。
【００６８】
ＣＰＵ２０８は、全ての他カテゴリラベルの組合せＬ'Ｌ''に関して同様に分散を計算すべく、Ｓ７１６からＳ７１４へ戻る。ステップＳ７１６で、ＣＰＵ２０８は、最後の他カテゴリラベルまで計算したかを判別する。
注目カテゴリにおける分散値が一通り計算できた場合、次のステップＳ７１７でＣＰＵ２０８は、その平均値を計算する。このようにして、注目カテゴリにおける平均打切り率分散値が求められる。
ステップＳ７１８では、ＣＰＵ２０８は、選択中のデータ分類ラベルに関し、全てのカテゴリにおいてＳ７１３からのループ処理が行われたかどうかを判別する。
そして次のステップＳ７１９で、ＣＰＵ２０８は、全てのデータ分類ラベルに関する同様の処理が完了したかどうかを判別し、完了していなければＳ７１２に戻る。
ステップＳ７２０に到達すると、データ分類ラベル毎に、カテゴリ別の分散値が求まっている状態となっている。ステップＳ７２０では、ＣＰＵ２０８は、全データ分類ラベルに対するこれらの分散値を統合し、カテゴリ毎に一つずつ対応する統合値を計算する。なお、この統合処理は単純な加算でもよいし、データ分類数で除算した平均値でもよい。
ステップＳ７２１では、ＣＰＵ２０８は、このカテゴリ毎の統合値を比較し、カテゴリ優先度を決定する。ここではＣＰＵ２０８は、統合値の大きなカテゴリほど、優先度高と判断する。
【００６９】
以上の処理により、ＣＰＵ２０８は、優先度高のカテゴリから分類数に一致する分岐を順に行っていく分岐構造を決定する（分岐構造決定）。図１７は、図１５の打切り率一覧により決定された分岐構造の一例を示す図である。図中、各分岐後１段目のノード内に示すラベルが、その分岐が担当する検出対象データの変動の分類を表している。例えば、図１７の一番上の枝となるパスは、「ａＡ１」分類データを検出するための分岐である。なお、分岐前までの処理ノード数は本実施形態では経験的に定めた数としているが、ここでは数は固定せず、次に説明する本学習で累積スコアや重み付き誤り率の推移等で定めるようにしてもよい。
【００７０】
図１１の説明に戻り、ＣＰＵ２０８は、以上、ステップＳ１０３で定めた分岐構造に基づき、次のステップＳ１０４にて分岐構造をもった本識別器を学習する。この本学習処理は、基本的に先に述べた予備学習と同様であるが、各分岐位置において識別器のコピーと検出対象データの分割とが行われるところが異なる。
例えば図１７において、第I分岐位置１８０１の前までのノードは、本識別器が対象と
する変動を全て含んだデータを検出対象とするので、ＣＰＵ２０８は、選択した学習用データを全て用いて学習を行う。つまり全カテゴリ変動のデータが正解データとされる。
第I分岐位置１８０１後、まずはカテゴリ（ｉ）について３分岐される。ここではＣＰ
Ｕ２０８は、１８０１の前までのノードの処理状態（重み付き誤り率等）を３つコピーし、更に学習用の検出対象データをカテゴリ（ｉ）のみで分類して３分割して、それぞれの分岐の学習用の検出対象データとする。例えば、「ａ＊＊」のラベル（＊は任意）の顔画像は、ａのラベルの付いた一番上の分岐の学習にのみ使用される。ちなみにＣＰＵ２０８は、非検出対象データとして全分岐共通のデータを利用する。
【００７１】
同様に第ＩＩ分岐１８０２以降のノードは、ＣＰＵ２０８は、全ノードの処理結果を２つコピーすると共に、それぞれ前段が使用していた検出対象データの内「＊１＊」「＊２＊」のラベルを持つデータのみを検出対象データとして使用する。第III分岐１８０３も同様である。
第III分岐１８０３以降はこれ以上分岐せず、各分岐の１本ずつについて、ＣＰＵ２０８は、十分な検出性能を得ることのできる数百段のノードを学習して処理完了となる。
以上の処理により、分岐構造を持った本識別器の生成することができる。この本識別器は、各分岐で担当としない検出対象データの打切りが早期に行われるため処理が早く、かつ、担当とする検出対象データのロバスト性は低くなっているため、短いノード段数で精度よい検出が可能となっている。
【００７２】
なお、学習時間は一般的に投入する学習用データの数に応じて増大する。分岐１本１本が十分な性能を発揮するためには、それぞれに十分な数の検出対象データを投入する必要があるので、分岐前にこれら全てを含むデータで学習しようとすると、長大な学習時間が必要となる。従って、分岐前はこれらのサブセットで学習を行い、分岐するにつれてそれぞれの分岐のフルセットに近づくように、学習データを追加して行くようにしてもよい。この場合、学習処理で説明した各学習データに付けられる重みは、投入するたびに更新し、正規化し直す必要がある。
【００７３】
＜実施形態２＞
実施形態１では、打切り率の分散を用いてカテゴリ優先度を決める方法について説明したが、本実施形態では累積スコア（全体信頼度）の差を用いて決定する方法について説明する。
なお、本実施形態では実施形態１との違いについてのみ説明する。本識別器生成までの学習全体の処理の流れは、図１１に示した実施形態１と同様である。本実施形態では、ステップＳ１０３の予備識別器の評価処理が、図１８に示すように行われる。
図１８において、ステップＳ１６０１〜Ｓ１６０５までの処理は、それぞれ図１４のステップＳ７０１〜Ｓ７０５までの下２桁が一致するステップと同じ処理を行う。
本実施形態では、ステップＳ７０６及びＳ７０７の変わりに、ステップＳ１６０６の処理が行われる。この処理は、選択されたデータに関し、所定段数まで検出処理を行ったときの内部の累積スコア値（全体信頼度）をＲＡＭ２１０上の所定記憶領域に加算して保持する処理である。なお、この記憶領域はループの先頭Ｓ１６０３で初期化されている。但し、所定段数までたどり着かずに打ち切られてしまっていた場合、累積スコア値は最小値（例えば０）とする。
【００７４】
次のステップＳ１６０７はＳ７０８と同じ処理である。
ステップＳ１６０８に到達すると、ＣＰＵ２０８は、選択中の予備識別器に関し、選択中のデータ分類ラベルのデータそれぞれに関する累積スコア値（全体信頼度）の総和値が分かる。よって、ＣＰＵ２０８は、総和値をデータ数で除算することにより、その平均値を計算し、ＲＡＭ２１０上の所定領域に記憶する。
Ｓ１６０９とＳ１６１０とはそれぞれＳ７１０とＳ７１１と同じ処理であって、Ｓ１６１０の処理を抜けると、結果として図１５に示した打切り率一覧表に相当する、累積スコア値一覧表がＲＡＭ２１０上の所定領域に完成する。
【００７５】
ところで、検出対象データを投入したとき、累積スコアは処理段数が進むにつれて蓄積されて行くが、検出対象データのカテゴリ変動に合致する識別器ほど、その値は高くなる。例えば、図１９の（ａ）は、カテゴリ（ｉ）の変動がラベルａであるデータ群を、「ａ＊＊」「ｂ＊＊」「ｃ＊＊」の予備識別器群（「＊＊」は他カテゴリ全ての組合せ）に投入した際の、平均累積スコアの推移を示す図である。この図で分かる通り、データ群のカテゴリ変動に合致する「ａ＊＊」に属する予備識別器が、他の識別器に比べて高い累積スコアを出力している。
同様に、カテゴリ（ｉｉ）の変動がラベルＡであるデータ群を各予備識別器群に投入したときの平均累積スコアの推移を、同図（ｂ）に示す。この図で、「＊Ａ＊」に属する予備識別器が他の識別器よりも高い累積スコア値を出力しているのは、（ａ）と同様である。しかし、このときの他の識別器との累積スコアの差は、（ａ）のときよりも小さい値となっている。あるカテゴリにおいて、累積スコア差が大きいということは、そのカテゴリの分類間での相違が大きいことに他ならない。差が大きければ、誤った判別をする可能性が低くなるので、累積スコアの低い分岐を早めに打ち切ることもできる。従って、ＣＰＵ２０８は、カテゴリ毎の平均累積スコアの差を用いても、カテゴリの分岐優先度を決定することができる。
【００７６】
ステップＳ１６１１〜Ｓ１６２２のループ処理において、ＣＰＵ２０８は、このカテゴリ別の平均累積スコアの差を計算する。
まずステップＳ１６１１においては、ＣＰＵ２０８は、注目するカテゴリ（例えば（ｉ））を決める。そしてステップＳ１６１２において、ＣＰＵ２０８は、この注目カテゴリに関し今回処理するデータのラベル（例えば「ａ」）を選択する。同様にＳ１６１３においてＣＰＵ２０８は、予備識別器のラベル（例えば「ｂ」）を選択する。
そしてステップＳ１６１４において、ＣＰＵ２０８は、注目カテゴリでない他のカテゴリのデータラベル及び識別器ラベルを選択する。次にステップＳ１６１５で、ＣＰＵ２０８は、ステップＳ１６０８で保持していたＲＡＭ２１０上の表領域から、選択したデータ及び識別器ラベルの組に対応する累積スコア平均値を取得して加算する。なお、この加算値保持領域はＳ１６１３で初期化されている。
【００７７】
ＣＰＵ２０８は、ステップＳ１６１６において、全ての他カテゴリに関するデータと識別器の組合せの処理が完了したか確認し、完了していなければＳ１６１４に戻って次のラベル組合せに関して同様に処理を行う。このようにして、ステップＳ１６１７に到達すると、注目カテゴリにおけるある一つのデータラベルと識別器ラベルとの組合せ（例えばデータ「ａ＊＊」＆識別器「ｂ＊＊」）に関する、平均累積スコア合計が得られる。よって、ＣＰＵ２０８は、これを他カテゴリのラベル組合せ数で割った注目カテゴリ組合せ別平均累積スコア値を得る。
ステップＳ１６１８においては、ＣＰＵ２０８は、注目カテゴリの識別器ラベルに関し最後まで処理を行ったか確認し、完了していなければＳ１６１３から繰り返す。
【００７８】
ステップＳ１６１９では、既に注目カテゴリのあるデータラベルに関し、全ての識別器ラベルの組合せに対応する注目カテゴリ組合せ別平均累積スコア値が算出されている。よって、ＣＰＵ２０８は、これら夫々における累積スコア差を計算し、更にその平均値を計算する。例えば図１９の（ａ）において、所定段における「ａ＊＊」「ｂ＊＊」「ｃ＊＊」それぞれの累積スコア値をＳa，Ｓb，Ｓcとしたとき、ＣＰＵ２０８は、
【数１３】
2010165046.tif 000015
をデータラベル「ａ＊＊」に対応する累積スコア差値とする。
【００７９】
Ｓ１６２０までのループにより、同様に注目カテゴリの他のデータラベル（この例では「ｂ＊＊」「ｃ＊＊」に関する累積スコア差値が計算される。
ステップＳ１６２１では、ＣＰＵ２０８は、更にこれらの平均値を計算する。得られる値は、カテゴリ別累積スコア差平均値となる。
ステップＳ１６２２までのループを完了すると、カテゴリ（（ｉ），（ｉｉ），（ｉｉｉ））それぞれに対して一つずつ、累積スコア差平均値が計算された状態となる。ステップＳ１６２３では、ＣＰＵ２０８は、この値に基づき、カテゴリの分岐優先度を決定する。もちろんスコア差大のカテゴリ程、分岐優先度高とする。本処理によっても、図１７と同等の分岐構造が決定される。
以後の本識別器の学習処理は、実施形態１と同様である。
このように本実施形態によれば、所定段数の予備識別器に評価データを投入したときの、累積スコア値を用いて分岐優先順位を決定することが可能となる。また、実施形態１の打切り率による評価と実施形態の累積スコア差による評価とを併用することももちろん可能で、より精度のよい分岐構造の決定方法となる可能性がある。
【００８０】
＜その他の実施形態＞
実施形態１及び２では、分岐順序を上述の評価方法により決めた上で、分岐するまでの処理ノード段数を予め定めた所定数として本学習処理を行っていたが、この分岐前処理ノード段数は本学習処理を行いながら決定することも可能である。
例えば図１７の分岐構造において、ＣＰＵ２０８は、第I分岐位置１８０１の前の非分
岐状態での処理ノード段数を、非検出対象データの打切り率により定めてもよい。分岐前の処理は１本の識別器しか動作しないので特に高速であることから、第I分岐前までに６
０％以上の非顔を、打切り処理データを減らしてから分岐したいとする。このとき、ＣＰＵ２０８は、１段ずつ学習を行いながら非顔打切り率を計算し、６０％以上になったところで第I分岐とするように学習すればよい。
同様に、ＣＰＵ２０８は、累積スコアやその差に注目しつつ、処理段数を決定してもよい。
【００８１】
更には、上述の実施形態では、予備学習を１回のみしか実施していないが、これを分岐学習しながら実施するようにしてもよい。図１７で説明すると、この場合、ＣＰＵ２０８は、上述で優先度が最も高くなったカテゴリを第I分岐位置１８０１とし、次の第II分岐
１８０２をどのカテゴリにするかは、ここで再度予備学習を行って決定する。このとき第I分岐の３本の識別器に対し、それぞれ６つずつの他カテゴリ（ｉｉ）（ｉｉｉ）組合せ
の予備識別器が学習され、実施形態１や２と同様に次の分岐を決定できる。
また上述の実施形態は、画像データに対して処理する場合について説明したが、音声データ等の１次元データや多次元データから特定のパターンを抽出する場合等にも適用可能である。
【００８２】
また上述の実施形態では弱判別器として矩形フィルタを用いた方式に適用した場合について説明したが、もちろん他の様々な弱判別器に適用可能である。
また上述の実施形態ではブースティングアルゴリズムによる識別器に対して適用した場合について説明したが、分岐構造を持つ他の識別器に対して、分岐構造を決定する方法として適用してもよい。
また実施形態では判別処理部２０３をハードウェアにより実現する場合について説明したが、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等でソフトウェアにより実現する場合にも適用可能である。その場合であっても、好適な分岐構造を選択することにより、処理速度と検出精度との向上見込まれる。
また、上述した実施形態で説明した機能は、学習専用の装置や汎用コンピュータのソフトウェアとしても適用することができる。
【００８３】
また、本発明の目的は、以下のようにすることによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（又は記録媒体）を、システム或いは装置に供給する。そして、そのシステム或いは装置の中央演算処理手段（ＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになり、そのプログラムコードを記録した記憶媒体は本発明を構成することになる。
【００８４】
また、システム或いは装置の前記中央演算処理手段が読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、システム或いは装置上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部又は全部を行う。その処理によって上述した実施形態の機能が実現される場合も含まれる。
【００８５】
更に、記憶媒体から読み出されたプログラムコードが、前記システム或いは装置に挿入された機能拡張カードや、接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれる。
【００８６】
本発明を前記記憶媒体に適用する場合、その記憶媒体（コンピュータ読み取り可能な記憶媒体）には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【００８７】
以上、上述した各実施形態によれば、分岐構造の識別器を学習する上で、処理時間を大きく増大させずに好適な分岐構造を構築することができる。
【００８８】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
例えば、予備学習処理及び本学習処理では、複数の変動カテゴリの組合せで分類された複数の識別対象パターンのサンプルを正解又は不正解教示用データとして用い、複数の非識別対象パターンのサンプルを不正解教示用データとして用いるようにしてもよい。
また、予備学習処理では、予備識別器各々に対応する複数の変動カテゴリの組合せで分類された複数の識別対象パターンのサンプルのみを正解教示用データとして用いるようにしてもよい。
また、予備学習処理では、予備識別器各々に対応する複数の変動カテゴリの組合せで分類された複数の識別対象パターンのサンプルを不正解教示用データの一部として用いるようにしてもよい。
【図面の簡単な説明】
【００８９】
【図１】顔検出処理の一例を示す図である。
【図２】各移動先位置における処理ウィンドウ８０１において、非特許文献１で行われている顔検出処理の流れを示す図である。
【図３】顔検出処理の一例を示すフローチャートである。
【図４】ＳＡＴの一例を説明する図である。
【図５】ＳＡＴによる矩形領域の総和値の計算方法を説明するための図である。
【図６】情報処理装置の構成を示すブロック図である。
【図７】識別器が対応する検出対象データの変動カテゴリの一例を示す図である。
【図８】情報処理装置によって生成される識別器のノードの接続構造の一例を示す図である。
【図９】判別処理部２０３に搭載される弱判別器の詳細を示す図である。
【図１０】複数の弱判別器から構成する１つのブースティング判別器を機械学習する場合の処理の一例を示すフローチャートである。
【図１１】学習処理全体の流れを示すフローチャートである。
【図１２】全学習データに対する検出対象データのヒストグラム１３０２と非検出対象データのヒストグラム１３０１とを示す図である。
【図１３】打切り閾値の決定法を説明するための累積ヒストグラムの例を模式的に説明するための図である。
【図１４】実施形態１におけるステップＳ１０３の予備識別器評価処理を説明するための図である。
【図１５】データ分類ラベルと予備識別ラベルの組合せに対応する打切り率の一例を示す図である。
【図１６】特定の変動データを投入した際の各予備識別器の打切り率の推移を示す図である。
【図１７】図１５の打切り率一覧により決定された分岐構造の一例を示す図である。
【図１８】実施形態２におけるステップＳ１０３の予備識別器評価処理を説明するための図である。
【図１９】カテゴリのラベル別の識別器群における累積スコアの遷移の一例を示す図である。
【符号の説明】
【００９０】
２０１  画像入力部
２０２  前処理部
２０３  判別処理部
２０８  ＣＰＵ
【図１】
2010165046.tif 000016
【図２】
2010165046.tif 000017
【図３】
2010165046.tif 000018
【図４】
2010165046.tif 000019
【図５】
2010165046.tif 000020
【図６】
2010165046.tif 000021
【図７】
2010165046.tif 000022
【図８】
2010165046.tif 000023
【図９】
2010165046.tif 000024
【図１０】
2010165046.tif 000025
【図１１】
2010165046.tif 000026
【図１２】
2010165046.tif 000027
【図１３】
2010165046.tif 000028
【図１４】
2010165046.tif 000029
【図１５】
2010165046.tif 000030
【図１６】
2010165046.tif 000031
【図１７】
2010165046.tif 000032
【図１８】
2010165046.tif 000033
【図１９】
2010165046.tif 000034