(57)【特許請求の範囲】
【請求項１】
パターン認識の対象となる対象物体が含まれる学習パターンの集合をルートノードに設定し、該設定した学習パターンの集合に含まれる個々の学習パターンを各ノードに分配していくことにより木構造の辞書を作成する情報処理装置であって、
ノードに分配された学習パターンに対して実行するクエリを該ノードに対応して作成する作成手段と、
前記ノードに分配された学習パターンに対して該ノードに対応して作成されたクエリを実行し、該クエリの実行結果に基づいて個々の学習パターンを該ノードよりも下位のノードへ分配する分配手段と、
前記ノードにおける前記学習パターンの分配に際して、前記ノードよりも上位のノードにおけるクエリの実行時に前記学習パターンに含まれる前記対象物体が存在する領域が参照されたか否かを示す履歴を集計した履歴情報に基づいて、前記ノードに対するクエリが有効に実行されたか否かを判定する判定手段と
を具備し、
前記分配手段は、
前記クエリが有効に実行されたと判定された学習パターンを前記下位のノードに分配し、前記クエリが有効に実行されなかったと判定された学習パターンを削除する
ことを特徴とする情報処理装置。
【請求項２】
パターン認識の対象となる対象物体が含まれる学習パターンの集合をルートノードに設定し、該設定した学習パターンの集合に含まれる個々の学習パターンを各ノードに分配していくことにより木構造の辞書を作成する情報処理装置であって、
ノードに分配された学習パターンに対して実行するクエリを該ノードに対応して作成する作成手段と、
前記ノードに分配された学習パターンに対して該ノードに対応して作成されたクエリを実行し、該クエリの実行結果に基づいて個々の学習パターンを該ノードよりも下位の複数のノードへ分配する分配手段と、
前記ノードにおける前記学習パターンの分配に際して、前記ノードよりも上位のノードにおけるクエリの実行時に前記学習パターンに含まれる前記対象物体が存在する領域が参照されたか否かを示す履歴を集計した履歴情報に基づいて、前記ノードに対するクエリが有効に実行されたか否かを判定する判定手段と
を具備し、
前記分配手段は、
前記クエリが有効に実行されたと判定された学習パターンを前記複数の下位のノードのいずれかに分配するとともに、前記クエリが有効に実行されなかったと判定された学習パターンを前記複数の下位のノードの全てに分配する
ことを特徴とする情報処理装置。
【請求項３】
前記学習パターンは画像であり、
前記クエリは、前記画像内の複数の画素の画素値を比較するクエリである
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記判定手段は、前記ノードおよび該ノードよりも上位のノードにおいて前記学習パターンに含まれる前記対象物体が存在する領域が参照されたか否かを集計することで得られる該参照の割合が閾値以上の場合には、前記ノードに対するクエリが有効に実行されたと判定することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記パターン認識の対象となるパターンの集合をルートノードに設定し、前記木構造の辞書を辿りながら各ノードに対応して作成されたクエリを実行することによりパターンの認識を行なう認識手段
を更に具備することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
パターン認識の対象となる対象物体が含まれる学習パターンの集合をルートノードに設定し、該設定した学習パターンの集合に含まれる個々の学習パターンを各ノードに分配していくことにより木構造の辞書を作成する情報処理装置の処理方法であって、
作成手段が、ノードに分配された学習パターンに対して実行するクエリを該ノードに対応して作成する工程と、
分配手段が、前記ノードに分配された学習パターンに対して該ノードに対応して作成されたクエリを実行し、該クエリの実行結果に基づいて個々の学習パターンを該ノードよりも下位のノードへ分配する工程と、
判定手段が、前記ノードにおける前記学習パターンの分配に際して、前記ノードよりも上位のノードにおけるクエリの実行時に前記学習パターンに含まれる前記対象物体が存在する領域が参照されたか否かを示す履歴を集計した履歴情報に基づいて、前記ノードに対するクエリが有効に実行されたか否かを判定する工程と
を含み、
前記分配手段は、
前記クエリが有効に実行されたと判定された学習パターンを前記下位のノードに分配し、前記クエリが有効に実行されなかったと判定された学習パターンを削除する
ことを特徴とする情報処理装置の処理方法。
【請求項７】
パターン認識の対象となる対象物体が含まれる学習パターンの集合をルートノードに設定し、該設定した学習パターンの集合に含まれる個々の学習パターンを各ノードに分配していくことにより木構造の辞書を作成する情報処理装置の処理方法であって、
作成手段が、ノードに分配された学習パターンに対して実行するクエリを該ノードに対応して作成する工程と、
分配手段が、前記ノードに分配された学習パターンに対して該ノードに対応して作成されたクエリを実行し、該クエリの実行結果に基づいて個々の学習パターンを該ノードよりも下位の複数のノードへ分配する工程と、
判定手段が、前記ノードにおける前記学習パターンの分配に際して、前記ノードよりも上位のノードにおけるクエリの実行時に前記学習パターンに含まれる前記対象物体が存在する領域が参照されたか否かを示す履歴を集計した履歴情報に基づいて、前記ノードに対するクエリが有効に実行されたか否かを判定する工程と
を含み、
前記分配手段は、
前記クエリが有効に実行されたと判定された学習パターンを前記複数の下位のノードのいずれかに分配するとともに、前記クエリが有効に実行されなかったと判定された学習パターンを前記複数の下位のノードの全てに分配する
ことを特徴とする情報処理装置の処理方法。
【請求項８】
コンピュータを、請求項１乃至５の何れか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、学習パターンを用いて新規パターンを解析する機械学習が知られている。その中でも、分類木、決定木と呼ばれるパターン認識手法が知られている（非特許文献１参照）。この手法では、木構造（ツリー構造とも呼ばれる）を用いて高速にパターンを解析できるため、特に、計算機の能力の貧弱な時代にその能力を発揮してきた。
【０００３】
なお、パターン認識問題をパターン識別問題として捉えたとき、識別するべきパターンの種類を“クラス”と呼ぶ。以下の説明では、“クラス”という用語は、この意味で用いる。
【０００４】
非特許文献１に記載されるような、古典的な分類木や決定木は、認識性能があまり高くないことが欠点として挙げられる。この欠点を克服する技術としては、例えば、特許文献１に示されるような分類木の集合（アンサンブル）を用いた手法が提案されている。この技術では、分類木をＬ個（Ｌは２以上の定数であり、通常は１０〜１００の範囲）作成し、それら全べてを用いることによって、より高い認識性能を実現する。
【０００５】
この分類木の集合（アンサンブル）を用いた手法をコンピュータビジョンに応用した例としては、非特許文献２に記載された技術が知られている。この論文の中で筆者は、（３２ピクセル×３２ピクセルの）画像を対象として、その輝度値を元に分類木を作成している。より具体的には、分類木の各ノードにおいて、ランダムに所定サイズ（３２ピクセル×３２ピクセル）の画像上の２点を選び、その輝度値を比較する。これにより、枝の分岐を実現している。この処理は、非常に高速にでき、且つ認識精度も十分高いという報告が論文の中でされている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第６，００９，１９９号明細書
【非特許文献】
【０００７】
【非特許文献１】Leo Breiman, Jerome Friedman, Charles J. Stone, and R.A. Olshen, “Classification and Regression Trees", Chapman & Hall/CRC (1984)
【非特許文献２】Vincent Lepetit and Pascal Fua, “Keypoint Recognition Using Randomized Trees", IEEE Transactions on Pattern Analysis and Machine Intelligence (2006) pp.1465〜pp.1479
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、例えば、山積みされた部品の認識や人ごみの中での人物認識など、背景の変動が大きい場合、非特許文献２に記載された技術は、そのまま適用できない。未知の画像の中で背景となる部分の輝度値は、学習する画像と全く異なる値になるからである。具体的には、分類木の各ノードにおいて２点の輝度値を比較する際に、対象物体とは無関係な輝度値を用いてしまう可能性がある。この結果、（従来の）分類木を用いたパターン認識では信頼性の低い結果しか得られない。できるだけ対象物体の存在する部分の２点の輝度値を比較しようとしても、どうしても対象物体以外の部分を参照してしまうケースが発生してしまう。
【０００９】
そこで、本発明は、上記課題に鑑みてなされたものであり、従来よりも認識精度の高いパターン認識用の辞書を作成できるようにした技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明の一態様は、パターン認識の対象となる対象物体が含まれる学習パターンの集合をルートノードに設定し、該設定した学習パターンの集合に含まれる個々の学習パターンを各ノードに分配していくことにより木構造の辞書を作成する情報処理装置であって、
ノードに分配された学習パターンに対して実行するクエリを該ノードに対応して作成する作成手段と、
前記ノードに分配された学習パターンに対して該ノードに対応して作成されたクエリを実行し、該クエリの実行結果に基づいて個々の学習パターンを該ノードよりも下位のノードへ分配する分配手段と、
前記ノードにおける前記学習パターンの分配に際して、前記ノードよりも上位のノードにおけるクエリの実行時に前記学習パターンに含まれる前記対象物体が存在する領域が参照されたか否かを示す履歴を集計した履歴情報に基づいて、前記ノードに対するクエリが有効に実行されたか否かを判定する判定手段と
を具備し、
前記分配手段は、
前記クエリが有効に実行されたと判定された学習パターンを前記下位のノードに分配し、前記クエリが有効に実行されなかったと判定された学習パターンを削除する
ことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、従来よりも認識精度の高いパターン認識用の辞書を作成できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施の形態に係わる情報処理装置１０の構成の一例を示す図。
【図２】図１に示す情報処理装置１０の学習処理の一例を示すフローチャート。
【図３】学習パターンの一例を示す図。
【図４】木構造の辞書の一例を示す図。
【図５】図２（ｂ）に示すＳ２０３の処理の詳細を示すフローチャート。
【図６】図５に示すＳ３０２の処理の概要を示す図。
【図７】図５に示すＳ３０２の処理の変形例の概要を示す図。
【図８】図１に示す情報処理装置１０の認識処理の一例を示すフローチャート。
【図９】実施形態３に係わる学習処理の一例を示すフローチャート。
【図１０】実施形態４に係わる処理の概要を示す図。
【図１１】実施形態４に係わる情報処理装置１０の処理の流れの一例を示すフローチャート。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施の形態について添付図面を参照して詳細に説明する。
【００１４】
以下の実施形態においては、予め学習されたパターンに基づき新規パターンを解析するパターン認識方法について説明する。ここで、具体的な例を挙げると、パターンとして対象物を撮像した画像を用いて、対象物の名称、種類、３次元上の存在位置、姿勢等の情報を推定する形態が挙げられる。
【００１５】
なお、対象物とは任意の物体を表し、例えば、人、動物、臓器、自動車、カメラ、プリンター、半導体基板などであり、特にこれに限定されず、何でも良い。また更に、一般的な、適用例としては対象とする物理現象を測定した計測値をパターンとして用いても良い。
【００１６】
（実施形態１）
図１は、本発明の一実施の形態に係わる情報処理装置１０の構成の一例を示す図である。
【００１７】
情報処理装置１０は、記憶部１１と、中央処理装置（ＣＰＵ）１２と、メモリ１３と、入力部１４と、出力部１５とを具備して構成される。これら各構成は、バス１６を介して相互通信可能に接続されている。
【００１８】
記憶部１１は、各種プログラムや学習パターン、当該学習パターンを用いて作成された辞書等を保持する。また、記憶部１１には、新規パターンの認識結果が保持されても良い。
【００１９】
ＣＰＵ１２は、情報処理装置１０における各部の動作を制御する。メモリ１３は、ＣＰＵ１２により使用されるプログラム、及びサブルーチンやデータを一時的に格納する。また、後述する処理により導出される新規パターンの認識結果を保持しても良い。
【００２０】
入力部１４は、各種情報を入力する。例えば、新規パターンを取り込んだり、ユーザーからの指示入力を処理したりする。例えば、パターンとして２次元の画像を用いる場合、入力部１４は、例えば、対象物体を撮影するカメラとして実現される。その他、入力部１４は、キーボードやマウス等としての役割も果たし、例えば、プログラム実行のユーザからのトリガーを入力する。
【００２１】
出力部１５は、各種情報を出力する。例えば、パターン認識結果を他の装置へ出力する。出力部１５は、例えば、モニター等で実現される場合もある。その場合、ユーザーに向けて処理結果等を提示する。なお、出力先としては人間（ユーザー）ではなく、例えば、ロボットを制御する装置などのマシンの場合もあり得る。
【００２２】
ここで、ＣＰＵ１２上に実現される機能的な構成の一例について説明する。ＣＰＵ１２上には、機能的な構成として、学習部２１と、認識部２２とが実現される。なお、ＣＰＵ１２上に実現される機能構成は、例えば、ＣＰＵ１２が、メモリ１３等（又は記憶部１１）に格納された各種制御プログラムを実行することにより実現される。
【００２３】
学習部２１は、パターン認識の対象となる対象物体が含まれる学習パターンの集合を用いて学習する。これにより、学習パターンの集合に含まれる個々の学習パターンが各ノードに分配された木構造の辞書（又は木構造の判別器）が作成される。ここで、学習部２１には、クエリ作成部２３と、分配部２４と、判定部２５とが具備される。
【００２４】
クエリ作成部２３は、ノードに分配された学習パターンに対して実行するクエリを当該ノードに対応して作成する。
【００２５】
分配部２４は、クエリ作成部２３により作成されたクエリを各ノードで実行し、その実行結果に基づいて学習パターンの集合に含まれる個々の学習パターンを下位のノードへ分配する。
【００２６】
判定部２５は、分配部２４による学習パターンの分配に際して、当該分配対象となる学習パターン（ノードに分配された学習パターン）に含まれる対象物体に対してクエリが有効に実行されたか否かを判定する。この判定の結果、クエリが有効に実行されていないと判定された学習パターンは、下位のノードに分配されず、削除されることになる。
【００２７】
認識部２２は、パターン認識の対象となるパターンの集合をルートノードに設定し、学習部２１により作成された木構造の辞書等を辿りながら各ノードに対応して作成されたクエリを実行する。これにより、パターンの認識を行なう。
【００２８】
次に、図２（ａ）及び図２（ｂ）を用いて、図１に示す情報処理装置１０における学習処理について説明する。なお、機械学習によるパターン認識手法では、多くの学習パターンから学習を行なう学習処理（学習過程）と新規パターンを解析する認識処理（認識過程）との２つの処理が存在する。図２（ａ）は、学習処理における全体動作を示し、図２（ｂ）は、図２（ａ）のＳ１０３に示す処理の詳細を示す。なお、図２（ｂ）に示すルーチン（処理）は、再帰呼び出しされる。
【００２９】
すなわち、図２（ａ）及び図２（ｂ）に示す処理が情報処理装置１０により実行されることにより、学習パターンの集合が再帰的に分配されていく。その結果として、図４に示すような木構造の辞書（又は木構造を持った判別器）が出来上がる。木構造の辞書、又は木構造の判別器の作成は、論理的には、学習パターンの集合を再帰的に分配することと等価となる。
【００３０】
なお、特許文献１や非特許文献１及び２に記載されるような従来の分類木の場合、あるノードに残った学習パターンが過不足なく子ノード（下位のノード）へ分配（分割）される。集合演算の式で表現すると、親ノードにある学習パターンの集合をＰとし、子ノードにある学習パターンの集合をＣ１とＣ２とする。（２分岐を仮定）
この場合、従来の分類木では、Ｐ＝Ｃ１∪Ｃ２且つＣ１∩Ｃ２＝φとなる。
【００３１】
これに対して、本実施形態の手法（分類木作成方法）では、学習パターンを削除する場合、Ｐ⊃Ｃ１∪Ｃ２且つＣ１∩Ｃ２＝φとなる。また、学習パターンを子ノードへ冗長に分配する場合、Ｐ＝Ｃ１∪Ｃ２且つＣ１∩Ｃ２＝φとなる。なお、削除方法や（実施形態１）、冗長に分配する方法（実施形態２）については後述する。
【００３２】
［Ｓ１０１］
この処理が始まると、情報処理装置１０は、学習部２１において、まず、ルートノードに学習パターンの全てを格納する（Ｓ１０１）。ここで、図３（ａ）及び図３（ｂ）を用いて、学習パターンの一例について説明する。図３（ａ）は、前処理を行なう前の生の学習パターンを示しており、図３（ｂ）は、当該生の学習パターンから背景を削除した学習パターンを示している。
【００３３】
図３（ａ）に示す学習パターンには、３１に示すダルマのような形状の対象物が含まれており、また、３４に示す領域（背景領域）には、３２及び３３に示す対象物以外の物体が含まれている。図３（ｂ）に示す学習パターンでは、例えば、背景領域３４（対象物３１以外の部分）の輝度の値が−１などに設定されている。すなわち、輝度としてはありえない値に設定されている。なお、背景領域３４をランダムな値で置き換えるようにしても良い。
【００３４】
［Ｓ１０２］
このような学習パターンの格納が済むと、情報処理装置１０は、学習部２１において、ルートノードをカレントノードとして設定する（Ｓ１０２）。ルートノードとは、木構造（ツリー）の一番根元に存在するノードのことを指し、図４に示す４１のノードを指す。カレントノードとは、学習処理及び認識処理において現在処理しているノードを示す。
【００３５】
［Ｓ１０３］
情報処理装置１０は、学習部２１において、詳細については後述するが、カレントノードを展開するため、図２（ｂ）に示すサブルーチン（カレントノードの展開処理）を呼び出す（Ｓ１０３）。そして、当該サブルーチンの処理が終われば、学習処理は終了する。なお、図４に示す符号４１から４９の順番に従ってカレントノードは移動することとなる。
【００３６】
次に、図２（ｂ）を用いて、図２（ａ）のＳ１０３に示すサブルーチン（カレントノードの展開）の処理の詳細について説明する。
【００３７】
［Ｓ２０１］
この処理が始まると、情報処理装置１０は、学習部２１において、まず、カレントノードがターミナルノードであるか否かの判定を行なう。ターミナルノードとは、ｎｕｌｌノード及びｌｅａｆノードのいずれかのノードを指す。ｎｕｌｌノードは、学習パターンが全く含まれないノードであり、ｌｅａｆノードは、残っている学習パターンの集合が所定条件を満たすノードである。所定条件としては、例えば、「カレントノードに存在するクラス（識別するべきパターン）がＫ種類（例えば、Ｋ＝１０）以下である」等が挙げられる。この場合、Ｋ＝１であれば、「カレントノードが純粋に１つのクラスしか含まない」という条件となる。また、これ以外にも、例えば、「カレントノードに存在する学習パターンから情報量エントロピーを計算し、その値が所定閾値以下である」等を所定条件としても良い。なお、この条件で閾値を０にすれば、上述の「カレントノードが純粋に１つのクラスしか含まない」と同じ条件となる。ここで、例えば、パターン認識の目的がクラス判定であれば、ターミナルノードには、各クラスの存在確率が保持される。上述した通り、ｌｅａｆノードの条件が「カレントノードが純粋に１つのクラスしか含まれない」であれば、ターミナルノードには、その残ったクラスの番号が格納される。一方、パターン認識の目的がいわゆる回帰の場合、ターミナルノードには、ある推定値、又は推定ベクトルが格納される。
【００３８】
ここで、図４の場合、ノード４３、４５、４６及び４９がｌｅａｆノードであり、ノード４８がｎｕｌｌノードとなる。すなわち、Ｓ２０１の判定において、カレントノードが、ノード４３、４５、４６、４８及び４９のうちのいずれかであれば（Ｓ２０１でＹＥＳ）、このサブルーチンにおける処理は終了する。
【００３９】
Ｓ２０１の判定の結果、カレントノードがターミナルノードでなければ（Ｓ２０１でＮＯ）、カレントノードの展開処理が行なわれる（Ｓ２０２〜Ｓ２０７）。なお、Ｓ２０６の処理においては、図１（ｂ）に示すサブルーチンが再帰的に呼び出される。この処理の結果、学習パターンの集合が再帰的に分配されることとなる。
【００４０】
［Ｓ２０２］
ここで、情報処理装置１０は、カレントノードの展開に先立って、まず、クエリ作成部２３において、当該カレントノードで実行するクエリを作成する（Ｓ２０２）。クエリ作成処理は、例えば、カレントノードに残っている学習パターンの集合（カレントノードにおける学習パターンの集合）を用いて行なわれる。非特許文献１に記載されるように、Ｇｉｎｉ係数を用いてクエリの効率を測定し、最も効率の高いクエリを選択することによりクエリを作成しても良い。また、特許文献１や非特許文献２に記載されるように、ランダムに次元や画像内の参照点を選択し、その次元や参照点の値に基づく判定を行なうことによりクエリを作成するようにしても良い。比較的単純なクエリとしては、画像（又は特徴ベクトル）上の２点（２つの次元）を選び、その値の大小を比較することによって２つの枝（ノード）に分配するクエリが考えられる。以下、このタイプのクエリを想定して説明する。
【００４１】
［Ｓ２０３］
クエリの作成が済むと、情報処理装置１０は、分配部２４において、当該クエリに基づいてカレントパターン集合（カレントノードに残っている学習パターン）を枝（ノード）に分配する（Ｓ２０３）。この分配の数（Ｒ）は、ノードによって異なるようにしても良いが、一般に、全てのノードで同じ値を用いる。このＳ２０３の処理においては、例えば、分配数がＲ＝２の場合には、いわゆる２分木が作成され、図４に示す形態の分類木が得られる。なお、Ｓ２０３の処理における分配処理の詳細については後述する。
【００４２】
［Ｓ２０４〜Ｓ２０７］
Ｓ２０４〜Ｓ２０７の処理においては、分配された枝毎に処理が行なわれる。具体的には、ｉ番目の枝（ノード）をカレントノードに設定し（Ｓ２０５）、図１（ｂ）に示すサブルーチンを再帰呼び出しする（Ｓ２０６）。この処理は、変数ｉが分配数（Ｒ）に達するまで繰り返し行なわれる。
【００４３】
次に、図５を用いて、図２（ｂ）に示すＳ２０３のサブルーチンの処理の詳細について説明する。
【００４４】
［Ｓ３０１〜Ｓ３０６］
カレントノードに残っている学習パターンの集合がｎ個の学習パターンで構成されているとする。この場合、情報処理装置１０は、学習部２１において、Ｓ３０２〜Ｓ３０５の処理（学習パターンｉのループ）をｎ回実行する。このループ処理では、情報処理装置１０は、判定部２５において、個々の学習パターンｉが適正であるか否かの判定を行なう（Ｓ３０２）。判定の結果、学習パターンｉが適正であれば（Ｓ３０３でＹＥＳ）、情報処理装置１０は、分配部２４において、学習パターンｉをクエリに基づいて枝（ノード）に振り分ける（Ｓ３０４）。また、情報処理装置１０は、分配部２４において、学習パターンｉが不適正であれば（Ｓ３０３でＮＯ）、当該学習パターンｉを削除する（Ｓ３０５）。
【００４５】
次に、図６を用いて、図５のＳ３０２における学習パターンｉが適正であるか否かの判定処理の概要について説明する。ここで、カレントノードに学習パターンが２つ残っていたとする（図６（ａ）及び図６（ｂ））。
【００４６】
ここで、例えば、図６（ａ）に示す５１及び５２の２点がこのノードで比較する点（参照点）として選ばれたとする。そして、「いずれの参照点も対象物体上にあること」が適正条件であるとする。この場合、学習パターン６１は適正であるので、クエリに基づいて各枝（ノード）に分配される。これに対して、学習パターン６２の場合には、当該パターンは不適正となるため、削除される。
【００４７】
また、別の例として、図６（ｂ）に示すように、５３と５４の２点がこのノードで比較する点（参照点）として選ばれたとする。この場合、「いずれのクエリも対象物体上にあること」が適正条件であるとすれば、図６（ｂ）に示すいずれの学習パターン（６３及び６４）も不適正となる。これに対して、例えば、「いずれか一方の参照点が対象物体上にある」という条件が適正条件であれば、図６（ｂ）に示すいずれの学習パターン（６３及び６４）も適正となる。また、「いずれか一方の参照点が対象物体の上部のパーツ上にある」という条件が適正条件であれば、学習パターン６３は適正となるが、学習パターン６４は不適正となる。
【００４８】
次に、学習パターンの削除方法について説明する。ここでは、図４に示すノード４７に図６（ａ）に示す学習パターンが残っていたとする。ここで、「いずれの参照点も対象物体上にあること」が適正条件であれば、学習パターン６１は適正であるので、クエリに基づいてノード４９に分配され、それがｌｅａｆノードとなる。これに対して、学習パターン６２は不適正であるので、削除される。その結果として、ノード４９の兄弟ノードであるノード４８はｎｕｌｌノードとなる。
【００４９】
ここで、図７は、学習パターンの適正条件として若干複雑な例を示している。上述した説明では、最終（直前）のクエリの実行結果に基づいて学習パターンが適正であるか否かを判定していた。これに対して、図７に示す例では、これまでのクエリの履歴を用いて、その学習パターンが適正であるか否かを判定する。図７（ａ）は作成途中の木構造を示しており、図７（ｂ）はカレントノードの学習パターンを示している。図７（ｂ）に示す学習パターンは、四角いパーツに２つの大きな穴が開いている形をしている。
【００５０】
ここで、ルートノードからノード７１〜７４の順でクエリが実行されたとする。クエリ実行時に使用した参照点を図７（ｂ）にも示している。ここでは、「過去のクエリの参照点の中で対象物体上に存在する確率（割合）が所定の閾値以上（この場合、０．８以上）」という条件が適正条件であるとする。
【００５１】
この場合、図７（ｂ）に示すように、ノード７１においては、いずれの参照点も対象物体上に存在しているので確率が１００％となる。ノード７２〜７４においては、１００％、８３％、６２％となる。結果として、図７（ｂ）に示す学習パターンは、ノード７１〜７３までは適正となり、ノード７４のクエリ時点で初めて不適正となり削除される。
【００５２】
以上説明したように適正条件は、“そのクエリが有効であるか否か”という基準でユーザーがフレキシブルに設定しうるものとなる。これにより、有効であるクエリのみが木構造に存在するようになる。特に、ランダムにクエリの参照点を選ぶ場合には、ある学習パターンにとって有効でないクエリが実行されるときがある。この場合に、その学習パターンをノード（木構造）から削除することによって、木構造全体として有効なクエリしか残らないことになる。
【００５３】
また、上述した説明では、２点の値（輝度）の大小を比較するクエリについて説明したが、例えば、２つの点の値（輝度）の差が所定値以上であるか否かを判定するクエリであっても良い。また、一方の点の値（輝度）が（もう一方の点の値（輝度）＋所定値）以上であるか否かを判定するクエリであっても良い。また更に、２点ではなく、ｎ点を選択し、その輝度の総和が所定値以上であるか否かを判定するクエリであっても良い。より一般的には、ｎ点を選択し、そのｎ点の輝度の値（ベクトル）を入力とする所定関数の値がある値以上であるか否かを判定するクエリであっても良い。
【００５４】
次に、図８を用いて、図１に示す情報処理装置１０における認識処理について説明する。すなわち、図１の処理で作成した木構造の辞書（又は木構造の判別器）を用いて、新規の未学習パターンを検出する処理の流れについて説明する。
【００５５】
［Ｓ４０１、Ｓ４０２］
情報処理装置１０は、認識部２２において、まず、カレントノードをルートノードに設定する（Ｓ４０１）。次に、情報処理装置１０は、認識部２２において、カレントノードがターミナルノード（ｎｕｌｌノード又はｌｅａｆノード）であるか否かの判定を行なう。カレントノードがターミナルノードであれば（Ｓ４０２でＹＥＳ）、情報処理装置１０は、認識部２２において、そのターミナルノードの情報を認識結果としてセットし、この処理を終了する。
【００５６】
［Ｓ４０２〜Ｓ４０４］
一方、カレントノードがターミナルノードでなければ（Ｓ４０２でＮＯ）、情報処理装置１０は、認識部２２において、カレントノードに格納されているクエリに基づいて枝番号（ノード番号）を算出する（Ｓ４０３）。そして、算出された枝番号の子ノードをカレントノードに設定した後（Ｓ４０４）、再度、Ｓ４０２の判定処理に戻る。なお、この処理では、ルートノードからターミナルノード（ｎｕｌｌノード又はｌｅａｆノード）に到達するまで木構造を辿ることになる。
【００５７】
以上説明したように本実施形態によれば、各ノードにおいて実行されたクエリの有効性を判定し、クエリの実行結果が有効でない学習パターンを削除する。そのため、木構造の辞書においては、適切な学習パターンが残り不要な学習パターンが削除されるので、有効なクエリしか残らないことになる。
【００５８】
これにより、サイズを抑えつつ、パターン認識に有効な情報が保持される辞書が作成される。そのため、当該辞書を用いた認識処理においては、従来よりも高速且つ高精度に対象物体を認識できる。特に、山積みされた部品や人ごみ等での人物検出のように背景に対象物体と同じようなものが重なった場合に有効である。
【００５９】
（実施形態２）
次に、実施形態２について説明する。実施形態１においては、木構造の辞書を作成する過程（学習処理）において学習パターンが適正条件を満たさない場合には該当する学習パターンを削除していた。これに対して、実施形態２においては、学習パターンが適正条件を満たさない場合には、該当の学習パターンを全ての子ノードに冗長に分配する場合について説明する。なお、実施形態２に係わる情報処理装置１０の構成や、全体的な動作については、実施形態１と同様であるため、その説明については省略し、ここでは相違点について重点的に説明する。
【００６０】
実施形態１との相違点としては、図５に示すＳ３０５の処理にある。実施形態２においては、Ｓ３０２の判定処理において、学習パターンが適正でなかった場合（Ｓ３０３でＮＯ）、学習パターンｉを削除せずに当該学習パターンｉを全ての枝に分配する。
【００６１】
この処理について図４及び図６（ａ）を用いてより詳細に説明する。ここで、例えば、図４に示すノード４２において、図６（ａ）に示す学習パターン６１及び６２が残っていたとする。ここで、「いずれの参照点も対象物体上にあること」が適正条件であれば、学習パターン６１は適正であるので、クエリに基づいてノード４４に分配される。一方、学習パターン６２は不適正であるので、ノード４３及び４４の両方の枝（ノード）へ分配される。結果として、ノード４３は、学習パターン６２のみを含むｌｅａｆノードとなる。一方、ノード４４は依然として、２つの学習パターン６１及び６２を含むインターナルノード（ｌｅａｆノードでもｎｕｌｌノードでもないノード）となり、ノードの展開が続く。
【００６２】
以上説明したように実施形態２によれば、所定ノードにおける学習パターンが適正条件を満たさない場合、当該学習パターンを全ての子ノードに分配するため、直前に実施されたクエリの作用を無効にできる。これにより、パターン認識に有効な情報が保持される辞書を作成することができる。
【００６３】
なお、この実施形態２の構成に加えて、これまでのクエリの履歴（実施形態１を説明した図７参照）に基づいて学習パターンの削除を行なうように構成しても良い。すなわち、適正条件を満たさない学習パターンを全ての子ノードに冗長に分配しつつ、その履歴に基づいて学習パターンを削除するように構成しても良い。
【００６４】
（実施形態３）
次に、実施形態３について説明する。実施形態１においては、１つの木構造の辞書（又は木構造の判別器）を作成し、当該１つの木構造の辞書等を用いてパターンを解析する場合について説明した。これに対して、実施形態３においては、複数の木構造の辞書（又は木構造の判別器）を作成し、当該複数の木構造の辞書等を用いてパターンを解析する場合について説明する。なお、ここでは、複数の木構造の判別器を作成し使用する場合を例に挙げて説明する。
【００６５】
図９（ａ）は、実施形態３に係わる学習処理を示すフローチャートであり、図９（ｂ）は、実施形態３に係わる認識処理を示すフローチャートである。ここでは、木構造の判別器の個数をＬ個とする。Ｌは、通常、１０〜１００ぐらいの数になるが、２つ以上の任意の定数となる。Ｌを大きくすると、辞書サイズが大きくなるが認識率は向上する。一方、Ｌを小さくすると、辞書はコンパクトになるが認識率は低下する。
【００６６】
図９（ａ）に示す学習処理においては、ｉ番目の木構造（ツリー）作成処理が実施される（Ｓ５０２）。この処理は、ツリー番号ｉが１〜Ｌまで繰り返し行なわれる（Ｓ５０１〜Ｓ５０３）。なお、Ｓ５０２に示すｉ番目のツリー作成処理（ｉ番目の判別器作成処理）では、図２（ａ）で説明した処理（サブルーチン）が呼び出され実行される。このループ処理においては、Ｓ５０２に示すサブルーチンの呼び出しは全く独立に行われる。つまり、Ｓ５０１〜Ｓ５０３の処理は、マルチスレッドやマルチタスクで行なわれても何の問題もない。また、複数の計算機を用いて実行されても良い。図９（ａ）に示す複数（Ｌ個）の木構造の判別器を作成する処理は、並列計算向きであり、並列度を高くすると極めて高速に実行できる。
【００６７】
次に、図９（ｂ）を用いて、実施形態３に係わる認識処理について説明する。
【００６８】
認識処理においては、ｉ番目の判別器の実行処理が実施される（Ｓ６０２）。この処理は、ツリー番号ｉが１〜Ｌまで繰り返し行なわれる（Ｓ６０１〜Ｓ６０３）。なお、Ｓ６０２に示すｉ番目の判別器の実行処理では、図８で説明した処理（サブルーチン）が呼び出され実行される。
【００６９】
その後、最終的に得られたＬ個の判別器の結果を集計する（Ｓ６０４）。この処理では、Ｌ個の認識結果を集計し、最終的なパターン認識結果を得る。集計方法としては、種々考えられるが、例えば、パターン認識のタスクがクラス判定タスクであれば、図８に示す処理（判別器の処理結果）は、各クラスの存在確率ベクトルとなる。この場合、Ｓ６０４の集計処理としては、Ｌ個の存在確率ベクトルの相加平均や相乗平均などが考えられる。図９（ｂ）に示す認識処理も、図９（ａ）に示す学習処理と同様に並列処理に向いている。そのため、並列度を高くすれば、処理速度が高速になる。
【００７０】
以上説明したように実施形態３によれば、複数の木構造の辞書（又は木構造の判別器）を作成したり、また、それらを用いて認識処理を行なえる。そのため、学習処理や認識処理を並列して実施できるため、処理速度の高速化が図れる。
【００７１】
（実施形態４）
次に、実施形態４について説明する。実施形態４においては、学習パターンとして画像を用いる場合について説明する。ここでは、まず、図１０を用いて、実施形態４に係わる処理の概要について説明する。
【００７２】
実施形態４においては、図１０（ａ）に示すように、１枚の学習画像からＭ枚の部分画像が抽出される。これを部分画像の集合と呼ぶ。この部分画像の集合を構成する部分画像同士は、重なりがなくても良いが、重なりがあるように網羅的に元の画像（学習画像）から抽出されることが望ましい。
【００７３】
ここで、例えば、学習画像のサイズが１００×１００ピクセルであり、部分画像のサイズが５０×５０ピクセルであるとする。この場合、ピクセルとピクセルとの中間の位置（いわゆるサブピクセル）を考慮に入れなければ、１枚の学習画像から抽出される部分画像は、２６０１（＝５１×５１）枚となる。なお、重なりのない部分画像を抽出した場合、部分画像は全部で２×２＝４枚得られる。
【００７４】
図１０（ａ）に示す部分画像の集合は、できるだけ多くの部分画像からなることが望ましい。最終的な部分画像の集合としては、同じクラスの部分画像がそれぞれＭ枚ずつ、全部でＭ×Ｎ枚の部分画像が得られる。
【００７５】
そして、この部分画像の集合を用いて２分木を作成していく（図１０（ｂ））。この場合、全部でＬ個の分類木が存在するので、この分類木の作成はＬ回行なわれる。分類木の作成に際して、各分類木のノードでは、例えば、２つの参照点（ピクセル）を選ぶ。そして、そのピクセルの輝度を比較することにより、部分画像の集合を再帰的に分配していく。
【００７６】
ここで、図１１（ａ）は、実施形態４に係わる学習処理の流れの一例を示すフローチャートである。
【００７７】
この処理が始まると、情報処理装置１０は、学習部２１において、学習画像から複数の部分画像を抽出するとともに、学習パターンの集合を作成する（Ｓ７０１）。すなわち、図１０（ａ）に示す処理を行なう。
【００７８】
続いて、情報処理装置１０は、学習部２１において、ツリーアンサンブルを作成する（Ｓ７０２）。すなわち、図１０（ｂ）に示す処理を行なう。より具体的には、図９（ａ）に示す処理をサブルーチンとして呼び出す。
【００７９】
なお、図１０（ａ）及び図１０（ｂ）に示す概略図では、１枚の学習画像から抽出されるＭ枚の部分画像を全て同一視し、学習処理におけるクラスの数がＮであるものとして説明した。これに対して、Ｍ枚の部分画像を学習画像内の位置を用いて区別し、全部でＭ×Ｎ個（種類）のクラスがあるとすることもできる。
【００８０】
図１１（ｂ）は、実施形態４に係わる認識処理の流れの一例を示すフローチャートである。ここでは、認識処理の一例として、新規入力画像のサイズが１２８０×１０２４であり、部分画像のサイズが５０×５０であるものとする。この場合、サブピクセルを考慮しなければ、新規入力画像内に部分画像が１，２００，２２５（１２３１×９７５）個存在することになる（Ｘ＝−１２８０−５０＋１、Ｙ＝１０２４−５０＋１）。基本的に、Ｓ８０１〜Ｓ８０６に示すループ処理は、この回数分、繰り返し実施される。但し、必ずしも、１，２００，２２５回繰り返して処理を実施する必要はなく、途中の処理をスキップして実行することにより高速化を図るようにしても良い。
【００８１】
この処理が始まると、情報処理装置１０は、認識部２２において、Ｓ８０１〜Ｓ８０６に示すループ処理により部分画像を抽出する（Ｓ８０２）。この部分画像のループの中では、ツリー番号のループ（Ｓ８０３〜Ｓ８０５）が実行される。つまり、２重のループが実行される。なお、この２つのループは、互いに独立して実行されるため、ループの内側外側を入れ替えても良い。ループの一番深い所でＳ８０４に示すｉ番目の判別器の実行処理が実施される。この処理では、図８に示す処理がサブルーチンとして呼び出される。
【００８２】
Ｓ８０１〜Ｓ８０５のループ処理が終了すると、情報処理装置１０は、認識部２２において、（Ｘ＊Ｙ＊Ｌ）個の判別結果を集計する。これにより、最終的な認識結果が得られる（Ｓ８０７）。この結果、１２８０×１０２４のサイズの入力画像内に存在する１００×１００のサイズの学習画像が検出されることとなる。集計方法としては、それぞれのクラスの存在確率ベクトルの相加平均や相乗平均などが挙げられる。また、上述した学習画像内における部分画像の位置を保持したオフセットを用いて、学習画像の存在位置を投票によって求めることもできる。
【００８３】
以上が本発明の代表的な実施形態の例であるが、本発明は、上記及び図面に示す実施形態に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【００８４】
（その他の実施形態）
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005719145.tif 000002
【図２】
0005719145.tif 000003
【図３】
0005719145.tif 000004
【図４】
0005719145.tif 000005
【図５】
0005719145.tif 000006
【図６】
0005719145.tif 000007
【図７】
0005719145.tif 000008
【図８】
0005719145.tif 000009
【図９】
0005719145.tif 000010
【図１０】
0005719145.tif 000011
【図１１】
0005719145.tif 000012