学習装置及び学習方法
【課題】入力データを、高速、かつ、高精度にパターン識別する識別器を構成することを目的とする。
【解決手段】分岐ノードは、パラメータに基づいて、次に起動するべきノードを決定するノードであり、識別ノードは、パラメータに基づいて、入力データが第2のクラスに属するかどうかを識別するノードであり、第1のクラスに属する学習データの特徴ベクトルに対して多変量解析を行い、方向ベクトルを求める多変量解析手段と、多変量解析手段で求められた方向ベクトルに対して垂直であって、学習データの特徴空間を分割する分割面を決定する分割面決定手段と、分割面決定手段で決定された分割面に基づいて、分岐ノードのパラメータを決定するパラメータ決定手段と、を有することによって課題を解決する。
【解決手段】分岐ノードは、パラメータに基づいて、次に起動するべきノードを決定するノードであり、識別ノードは、パラメータに基づいて、入力データが第2のクラスに属するかどうかを識別するノードであり、第1のクラスに属する学習データの特徴ベクトルに対して多変量解析を行い、方向ベクトルを求める多変量解析手段と、多変量解析手段で求められた方向ベクトルに対して垂直であって、学習データの特徴空間を分割する分割面を決定する分割面決定手段と、分割面決定手段で決定された分割面に基づいて、分岐ノードのパラメータを決定するパラメータ決定手段と、を有することによって課題を解決する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習装置及び学習方法に関する。
【背景技術】
【0002】
従来、線形識別を用いたパターン識別が盛んに行われている。非特許文献1には線形識別のいくつかの例が解説されている。
簡単に説明すると、線形識別では、入力データを特徴ベクトルとして多次元空間内のベクトルで表し、これら特徴ベクトルが張る特徴空間を、超平面によって分割する。そして、入力データに対応する特徴ベクトルが、その超平面のどちら側に位置するかによって、入力データを識別する。更に、複数の超平面を用意すれば、これら超平面に囲まれた領域にある特徴ベクトルを1つのクラスとして識別することができる。非特許文献2には、このような例が開示されている。
前記識別器は比較的処理が高速である反面、線形識別を論理積によって統合した構造を採用している。そのため、識別したい特徴ベクトルの集合を、特徴空間内の超平面の片側或いは凸多面体としてしか表現することができない。つまり、凹凸のある集合を表現することができない。
【0003】
この問題を克服するためにいくつかの方法が提案されている。最も一般的な方法は、個々の線形識別の結果を論理積以外の演算で統合する方法である。非特許文献1にも解説されている区分的識別関数を利用する方法はその一つである。これは集合の表面を複数の多角形で覆うという考え方である。また、決定木を使う方法もある。典型的な決定木は教師あり学習である。決定木を構築する際には、分岐先ノードの不純度という概念を利用するのが通例となっている。これは分岐先ノードにたどり着く入力データの種類のばらつきのことである。通常、決定木を構築する際には、この不純度が低下するように分岐条件を決定する。非特許文献3では教師なしで決定木を構築する方法が提案されている。しかし、非特許文献3でもやはり不純度の概念を導入し、これが低下するように分岐条件を定めている。
【0004】
凹凸のある集合を表すための別の方法として、特徴空間の次元を増やすということも行われている。例えば、非特許文献2では、複数の弱判別器の結果を加算して強判別器という概念を導入している。しかしながら、特徴空間の次元を増やしても、その次元の増えた特徴空間の中で非凹多面体しか表せないという本質的な問題は解決されない。
教師なしで決定木を構築する方法は、クラスタリングと似通ったところがある。クラスタリングでは、クラスの分からないデータを複数の集合に分割する。非特許文献4は、階層的に入力データを分割していくクラスタリングの1つの手法を提案している。その際、できあがったクラスタを次々と2つずつに分割していく。できあがる2つのクラスタが、それぞれなるべくガウス分布に近くなるように作られる。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】石井、上田、前田、村瀬 (1998) "わかりやすいパターン認識"、オーム社.
【非特許文献2】Viola & Jones (2001) "Rapid Object Detection using a Boosted Cascade of Simple Features", Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Vol.1, p.551.
【非特許文献3】Basak & Krishnapuram (2005) "Interpretable Hierarchical Clustering by Constructing an Unsupervised Decision Tree", IEEE Transactions on Knowledge and Data Engineering, Vol.17 (1), p.121.
【非特許文献4】Miasnikov, Rome & Haralick (2004) "A Hierarchical Projection Pursuit Clustering Algorithm", Pattern Recognition, Proceedings of the International Conference on, Vol. 1, p.268.
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したように従来技術では、入力データを高速、かつ、高精度にパターン識別する識別器を構成することができない問題があった。
【0007】
本発明はこのような問題点に鑑みなされたもので、入力データを、高速、かつ、高精度にパターン識別する識別器を構成することを目的とする。
【課題を解決するための手段】
【0008】
そこで、本発明は、識別ノードと分岐ノードとを複数、連結した木構造を有し、入力データを特徴空間のSと〜Sとの2クラスに識別する識別器の、各ノードのパラメータを決定する学習装置であって、前記分岐ノードは、前記パラメータに基づいて、次に起動するべきノードを決定するノードであり、前記識別ノードは、前記パラメータに基づいて、入力データが〜Sに属するかどうかを識別するノードであり、前記Sと〜Sとの何れかに属する学習データに基づいて、前記Sに属する学習データの特徴ベクトルに対して多変量解析を行い、方向ベクトルを求める多変量解析手段と、前記多変量解析手段で求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する分割面を決定する分割面決定手段と、前記分割面決定手段で決定された前記分割面に基づいて、前記分岐ノードのパラメータを決定するパラメータ決定手段と、を有することを特徴とする。
かかる構成とすることにより、例えばパターン識別のための決定木を構築する際に分岐ノードのパラメータを適切に決定することができるため、入力データを、高速、かつ、高精度にパターン識別する識別器を構成することができる。
また、本発明は、学習方法としてもよい。
【発明の効果】
【0009】
本発明によれば、入力データを、高速、かつ、高精度にパターン識別する識別器を構成することができる。
【図面の簡単な説明】
【0010】
【図1】実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。
【図2】顔を検出する際の処理の流れを表すフローチャートである。
【図3】図2のデータフローチャートである。
【図4】パターン識別用パラメータ211を表すデータの構造を示す図である。
【図5】タイプT1のノードのデータ構造を表す図である。
【図6】タイプT2のノードのデータ構造を表す図である。
【図7】図2のステップS203の詳細を表すフローチャートである。
【図8】入力画像が分岐される様子を描いたイメージを表す図である。
【図9】ノードN3のための学習の大まかな処理の一例を示すフローチャートである。
【図10】図9のステップF01の詳細を表すフローチャートである。
【図11】図9のステップF03の詳細を表すフローチャート(その1)である。
【図12】図9のステップF03の詳細を表すフローチャート(その2)である。
【図13】図12のステップF0311の詳細を表すフローチャート(その1)である。
【図14】目的関数を最小化する射影ベクトルq'を求める処理の一例を示すフローチャートである。
【図15】図12のステップF0311の詳細を表すフローチャート(その2)である。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について図面に基づいて説明する。
【0012】
<実施形態1>
入力された画像に顔があるかどうかを判定する情報処理装置の例を示す。実施形態を簡単にするために、入力された画像はグレースケール画像であり、顔があればパスポート写真のようにほぼ中央にほぼ決められた大きさで配置されているものと仮定する。なお、画像を走査したり、画像を拡大・縮小するなどしたりすれば、任意の位置にある任意の大きさの顔を検出できるようになる。また、輝度値も正規化されているものとする。正規化の方法には、平均輝度との差分を取ったり、輝度の標準偏差で割ったりする方法がある。
図1は、実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。図1において、CPU(中央演算装置)100は、実施形態で説明するパターン識別用パラメータ学習方法をプログラムに従って実行する。プログラムメモリ101は、CPU100により実行されるプログラムが記憶されている。RAM102は、CPU100によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリを提供している。ハードディスク103は、画像ファイルやパターン識別用のパラメータなどを保存するための記憶媒体である。ディスプレイ104は、本実施形態の処理結果をユーザに提示する装置である。バス110は、これら各部とCPU100とを接続している制御バス・データ バスである。
【0013】
図2は、顔を検出する際の処理の流れを表すフローチャートである。
まずステップS201において、CPU100は、ハードディスク103より画像をRAM102に読み込む。画像は、RAM102上では2次元配列として保持される。次のステップS202において、CPU100は、後述する学習方法により作成したパターン識別用パラメータをハードディスク103よりRAM102に読み込む。ステップS203において、CPU100は、ステップS202で読み込んだパターン識別用パラメータを使用して、ステップS201で読み込んだ画像内に顔があるかどうかを判定する。その結果を次のステップS204において、CPU100は、ディスプレイ104に表示する。
【0014】
図2をデータフローチャートとして書き表すと図3ようになる。図3は、図2のデータフローチャートである。205は、ハードディスク103に保存されている画像である。201の画像の読み込み処理において、ハードディスク内の画像205がRAM102上に入力画像Iとして記憶される。209は、ハードディスク103に保存されているパターン識別用パラメータである。210のパターン識別用パラメータの読み込み処理において、ハードディスク103内のパターン識別用パラメータ209がRAM102上にパターン識別用パラメータ211として記憶される。203の検出処理では、CPU100が、先の入力画像Iとパターン識別用パラメータ211とを使用して、入力画像Iの中に顔があるかどうかを判定し、顔があるかどうかを207の検出結果としてRAM102に書き込む。204の検出結果表示処理では、CPU100が、検出結果207の内容をディスプレイ104に表示する。
【0015】
ここで、211のパターン識別用パラメータの内容について図4や図5、図6を用いて簡単に説明する。パターン識別用パラメータ211を作成する方法については、後ほど記述する。図4は、パターン識別用パラメータ211を表すデータの構造を示す図である。図4において、正方形は木構造の各ノードを表している。また、矢印は各ノードの処理が実行される順番を表している。パターン識別用パラメータ211は、タイプT1とタイプT2とで表された2種類のノードをツリー状に接続した構造をしている。タイプT1のノードは、識別ノードであって、その後にはノードが1つだけ接続されている。また、タイプT2のノードは、分岐ノードであって、ノードの後にはノードが複数接続されている。N3と記されたノードもまたタイプT2のノードである。本実施形態は、タイプT1の種類によらず様々な種類の検出器(識別器)に適用できるが、ここでは非特許文献2に書かれているような弱判別器(weak classifier)をタイプT1のノードに使用した例を示す。これ以外にもlinear discriminant analysis(LDA)やsupport vector machine(SVM)等を使った検出器を利用することができる。また、これらを連結した検出器であってもよい。
【0016】
以後の説明において、パラメータ・分岐先A・分岐先B・集合F+・集合G+という表現を用いているが、これらは着目するノードによって内容が異なるものである。これらを用いて求めた値もノードによって異なる。本実施形態では煩雑さを避けるためにノードを示す添え字を省略している。
【0017】
非特許文献2に書かれている弱判別器は、図4のタイプT1のノードに相当する。図5は、タイプT1のノードのデータ構造を表す図である。このデータは、RAM102のメモリ上に複数格納される。個々のデータはそれぞれ値が異なるのが普通である。まず先頭にノードのタイプが格納されている。このノードはタイプT1なので、T1を表すコードがノードのタイプとして格納される。その次に矩形情報が格納されている。矩形情報の初めに矩形の個数nが格納されており、その後にその個数nだけの矩形の座標(左上点・右下点)が格納されている。これら複数の矩形をまとめて矩形群と呼ぶことにする。次に、打ち切りのためのパラメータが格納されている。ここで「打ち切り」とは、後に図7を用いて説明するが、簡単に言うと早めの段階で入力画像に顔がないと判断することである。打ち切り用パラメータの先頭には閾値θが格納されている。その後に、先の矩形の数nだけの打ち切りのための計算に利用する符号が並ぶ。ここで言う符号とは、+1や−1のことである。最後に次のノードへのポインタが格納されている。
【0018】
図6は、タイプT2のノードのデータ構造を表す図である。このデータも、RAM102のメモリ上に複数格納される。個々のデータはそれぞれ値が異なるのが普通である。まず先頭にノードのタイプが格納されている。このノードはタイプT2なので、T2を表すコードがノードのタイプとして格納される。その次に矩形情報が格納されている。矩形情報の初めに矩形の個数nが格納されており、その後にその個数nだけの矩形の座標(左上点・右下点)が格納されている。次に分岐先Aのためのパラメータが配置されている。分岐先Aのためのパラメータには、打ち切り用パラメータ同様に閾値や矩形の係数が格納されているが、更に分岐先ノードAへのポインタも格納されている。このポインタの指し示す先には、また別のノードのパラメータが格納されている。最後にもう1つの分岐先ノードBへのポインタが格納されている。
【0019】
上記パラメータの作成方法を説明する前に、このパラメータを使用して顔を検出する方法を説明する。検出処理の全体的な流れは、CPU100が、図4の各ノードを根ノード(図で最も上位に描かれているノード)から順にたどることによって行われる。処理するノードがタイプT1のノードである場合、CPU100は、図5に図示されたノードに固有のパラメータを用いて、入力画像Iに顔が含まれているかどうかを判定する。顔がない可能性が高いと判定した場合には、CPU100は、そこで処理を中断する。そうでない場合には、CPU100は、次のノードの処理へと移る。処理するノードがタイプT2のノードである場合には、CPU100は、図6に図示されたノードに固有のパラメータを用いて、次にどのノードに処理を移すかの判断を行う。このように順にノードをたどっていくことによって、CPU100は、タイプT1のノードでは打ち切りか継続かの判断を行い、タイプT2のノードでは分岐先ノードの選択を行う。ここで、タイプT1のノード、つまり識別ノードは、入力データを特徴空間のS(第1のクラス)と〜S(第2のクラス)との2クラスに識別する識別器において、パラメータに基づいて、入力データが〜Sに属するかどうかを識別するノードである。また、タイプT2のノード、つまり分岐ノードは、パラメータに基づいて、次に起動するべきノードを決定するノードである。
【0020】
図7は、図2のステップS203の詳細を表すフローチャートである。初めのステップD10において、CPU100は、ポインタ変数pを最初のノードを指すように初期化する。次のステップD02において、CPU100は、pが指し示すノードの種類を確認する。pが指し示すノードがタイプT1の場合、CPU100は、ステップD11に進む。逆にタイプT2の場合、CPU100は、ステップD21へ進む。
ステップD11において、CPU100は、変数cを0で初期化する。そして、CPU100は、ステップD12からD15までのループを矩形の数n回だけ繰り返す。ループ内において、CPU100は、矩形を表すループ変数をiとする。ステップD13において、CPU100は、図5のノード情報から矩形iの対角線の座標(xiL, yiT)−(xiR,yiB)を取得し、その入力画像Iにおける矩形内の輝度値の総和を求める。CPU100は、これをbiとする。biは、非特許文献2に書かれているように累積情報(integral image)を使って高速に求めることができる。そしてステップD14において、CPU100は、変数cにbiと矩形iの符号aiの積を加算する。まとめると、このループでCPU100が求めているのは、次の和である。
【0021】
【数1】
【0022】
ステップD16において、CPU100は、この和cが図5の閾値θを超えているかどうか判定する。そして、CPU100は、θを超えていればステップD17へ進み、検出結果207に「偽」の値を書き込む。これは顔が検出されなかったことを表す。ここで、図4で示されたツリーの処理は打ち切られる。ステップD16において、CPU100は、和cが閾値θを超えていないと判断すると、次のステップD18へ進む。ここではCPU100は、全ノードの処理を終えたかどうか確認する。全ノードの処理が完了している場合、CPU100は、ステップD19で検出結果207に「真」の値を書き込む。これにより顔が検出されたことになる。逆に、ステップD18で全ノードの処理が完了していない場合、CPU100は、ステップD05でポインタ変数pに次のノードへのポインタを格納する。そして、CPU100は、ステップD02へと制御を戻す。
ステップD02においてポインタ変数pが指すノードのタイプがT2であることになれば、CPU100は、ステップD21からの処理を実行する。まずステップD21において、CPU100は、変数cを0で初期化する。そしてステップD22からD25までのループでCPU100は、次の内積値を求める。なお、aAiは図6の矩形の係数である。
【0023】
【数2】
【0024】
ステップD26において、CPU100は、内積値cが図6の閾値θAを超えているかどうか確認する。超えている場合、CPU100は、次のステップD28へと進む。ステップD28において、CPU100は、ポインタ変数pに図6の分岐先ノードAへのポインタ値を代入する。そして、CPU100は、再びステップD02からの処理を始める。ステップD26で閾値を超えていなかった場合、CPU100は、ステップD30へ進む。ここで、CPU100は、ポインタ変数pに図6の分岐先ノードBへのポインタ値を代入する。そして、CPU100は、再びステップD02からの処理を始める。この様子をイメージ図にしたのが図8である。図8は、入力画像が分岐される様子を描いたイメージを表す図である。図8には、丸や三角で描かれているのが、これらは、入力画像Iの特徴ベクトルbiである。入力画像Iが顔である場合は丸(E00やE01)、顔でない場合には三角(E10やE11)として描かれている。E02は、c=θAとなる超平面である。E03がベクトルaA=(aA1,aA2,・・・,aAn)で、超平面E02の法線ベクトルである。上記の分岐条件により、黒丸E01として表示されている顔画像と黒塗りの三角E11として表示されている非顔画像とが分岐先Aへと振り分けられることになる。また、白丸E00として表示されている顔画像と白抜きの三角E10として表示されている非顔画像とが分岐先Bへ振り分けられることになる。以上の処理で、図4のツリーのノードを遷移していくことになる。図4に示されているとおり、タイプT2のノードを連続させることもできる。そうすることによって、より複雑な分岐が可能となる。或いは、複数の閾値を用意することによって、3つ以上の分岐先の中から1つを選ぶこともできる。
【0025】
図5に示されるタイプT1のノードのパラメータを求めるための学習手順は、非特許文献2に示されるとおりである。ここで、図5の各矩形となる候補は学習前に予め提示されていると考えると分かりやすい。これら矩形の集合をR = {ri|i = 1・・・Nr}とする。当然のことながら、集合Rは規則的に生成されても、乱数によって生成されてもよい。
図6に示されるタイプT2のノードのパラメータを求めるための本実施形態における学習手順を示す。まず、前提として学習用の顔画像fjの集合F = {fj | j = 1・・・Nf}があり、顔の写っていない学習画像gjの集合G = {gj | gj = 1・・・Ng}が用意されているものとする。更に、図4のツリー構造は予め決められており、パラメータを確保するためのメモリがRAM102上に確保されているものとする。例えば、あくまでも例であるが、図4のように分岐数が3本になるまで2回に1回分岐が起こるように分岐ノードを配置することができる。このとき、図5や図6の各ポインタ値も確定しており、格納しておくことができる。そこで、図4においてT1と記されているノードからN3と記されているノードの直前(つまり、ここではT2と書かれているノード)までの学習が済んでいるものとする。前述した検出の処理を適用すると、N3までのノードで学習画像のいくつかは顔がないものとして棄却(打ち切り)されたり、タイプT2のノードによって他の分岐先に振り分けられたりする。そこで、CPU100は、N3のノードでは、それまでに棄却されたり他の分岐先に振り分けられたりしない顔画像fj+の集合F+ = {fj+ | j = 1・・・Nf+}と非顔画像gj+の集合G+ = {gj+ | j = 1・・・Ng+}とを学習に利用する。
【0026】
ノードN3のための学習の大まかな流れを図9に示す。まず、ステップF01において、CPU100は、学習画像F+を特徴ベクトルの集合として表す。次にステップF03において、CPU100は、特徴ベクトルの集合を用いて、学習データの特徴空間を分割する特徴空間内の超平面を決定し(分割面決定)、ノードN3のパラメータとして書き込む(パラメータ決定)。
次に、これら各ステップの詳細を説明する。
図10は、図9のステップF01の詳細を表すフローチャートである。ステップF0101からF0107までのループは、学習画像F+に属する各顔画像fj+に関する処理である。ステップF0103からステップF0105までのループは、矩形候補集合Rに属する各矩形riに対して繰り返す。そしてステップF0104でCPU100は、2次元配列の要素bjifに、顔画像fj+上の矩形ri内にあるピクセルの輝度値の総和を代入する。以上の処理により、学習画像の集合F+の各画像に対してNr次元の特徴ベクトルが対応付けられたことになる。特徴空間の各次元は、それぞれある矩形の中の輝度値総和に対応する。学習画像の集合F+に対応する特徴ベクトルの集合をBF+ = { bjf | bjf = (bj1f, bj2f,・・・, bjNrf)}とする。
【0027】
図9のステップF03でCPU100は、ステップF01で求められたベクトルに対して垂直であって、学習データの特徴空間を分割する分割超平面を決定する(分割面決定)。分割超平面は、分割面の一例である。ステップF03の流れを図11のフローチャートに示す。図11は、図9のステップF03の詳細を表すフローチャート(その1)である。
まず、ステップF0301において、CPU100は、顔特徴ベクトルの集合BF+の第1主成分方向ベクトルを求める。ここでいう第1主成分方向とは、集合BF+の散らばりが最大となる方向である。CPU100は、singular−value decomposition (SVD)やprincipal component analysis (PCA;主成分分析)等の多変量解析の手法を用いて主成分方向ベクトルを求めることができる。或いはCPU100は、independent component analysis(ICA;独立成分分析)等の多変量解析の手法を用いて主成分方向ベクトルを求めることもできる。ここで得られた主成分方向ベクトルをd = (d1, d2,・・・, dNr)とする。次にステップF0302において、CPU100は、この主成分方向ベクトルdの次元を削減する。より具体的に説明すると、CPU100は、nを予め決められた値として、dの成分の中で絶対値が大きい上位n個の成分を取り出し、aA = (aA1, aA2,・・・, aAn)とする。nは値を大きく取るとその分計算に時間を要することになるので、大きくしすぎないことが必要である。dの各次元はそれぞれR内の矩形1つに対応する。このことに着目して、CPU100は、aAの各要素に対応する矩形を並べることができる。これをrA = (rA1, rA2,・・・, rAn)とする。aAの各成分はCPU100によって図6の分岐先A用パラメータの該当する領域に書き込まれ、nとrAとの各矩形の座標がCPU100によって図6の矩形情報として書き込まれる。なお、次元削減の方法は、上記方法に限らない。例えば、CPU100は、ベクトルdの中の絶対値と対応する矩形面積との積が大きい上位n個の成分を取り出すこともできる。また、CPU100は、次元削減を行わないことも可能である。
主成分方向ベクトルは、方向ベクトルの一例である。
【0028】
残る閾値θAは、図11のステップF0303で求められる。閾値θAを求める方法の一例を式で表すと、前述のBF+の重心cを用いて、次のように表される。
【0029】
【数3】
【0030】
ここで、bjAfは、bjfからrA= (rA1, rA2,・・・, rAn)に対応する成分を取り出したベクトルである。wj=1でもよいが、非特許文献2に書かれているようなAdaboostの重みでもよい。
【0031】
以上の方法によりタイプT1とタイプT2とのノードのパラメータを学習することにより、図4に示したツリー構造のパラメータを用意することができる。そして、このパラメータを使用することにより、比較的計算負荷の軽い処理により入力画像中の顔を検出することができる。本実施形態では、主成分方向を求めるためにPCA等を利用したが、当然のことながらkernel PCA等の非線形な手法を用いることもできる。また、これまでの説明から、識別器は、顔の識別に限るものでなく、人物や図形や文字等他の画像も扱えることは明らかである。
【0032】
<実施形態2>
実施形態1では、主成分分析等を行ってから次元削減を行ったが、実施形態2では次元削減を行ってから、independent component analysis(ICA;独立成分分析)等を行う例を示す。
本実施形態では、図11の代わりに図12を利用する。図12は、図9のステップF03の詳細を表すフローチャート(その2)である。
ステップF0311において、CPU100は、分割超平面の法線ベクトルを求める。そして、ステップF0313において、CPU100は、図11のステップF0303と同じ手順(同じ処理)で閾値θAを求める。
【0033】
図13は、図12のステップF0311の詳細を表すフローチャート(その1)である。
ステップG01において、CPU100は、矩形の集合Rのなかからいくつかの矩形の組み合わせを選び、その組み合わせの集合をRCとする。それぞれの組み合わせでの矩形の数mは、例えば2のように一定であってもよいが、不揃いであってもよい。不揃いの場合には、CPU100は、根ノードから数えたノード数に応じて、mが単調に増加するように選んでもよい。CPU100は、矩形の組み合わせ集合RCの各組み合わせrC=(rC1,rC2,・・・,rCm)(C1〜Cmは矩形の番号を表すインデックス)について、ステップG02からG06までのループを繰り返す。
【0034】
次にステップG03において、CPU100は、集合BF+の各特徴ベクトルbjfについて、rC=(rC1,rC2,・・・,rCm)の各要素(矩形)に対応する成分を取り出した特徴ベクトル
【数4】
を生成する。もし、rC=(r5,r236,r5468
)の場合、
【数5】
は、(bj,5f,bj,236f,bj,5468f)となる。つまり、学習画像f
j+上の矩形r5とr236とr5468内の輝度値総和を並べたベクトルとなる。
【0035】
ステップG04において、CPU100は、これらm次元のベクトルの集合
【数6】
に対してICAを適用し、最大でm本のm次元ベクトルqk(k=1,・・・,mq;mq≦m)を得る。ICAを適用する際の目的関数には例えば次のような関数J(q)を選ぶことができる。ここで、vは平均0、分散1の正規分布に従う確率変数である。
【0036】
【数7】
【0037】
次にステップG05において、CPU100は、評価値として集合
【数8】
の尖度(kurtosis)の符号を反転したものを計算する。より具体的に説明すると、CPU100は、次の値を求める(射影評価)。
【0038】
【数9】
【0039】
或いはCPU100は、評価値としてcontrast functionや目的関数を使用してもよい。ループを抜けると、CPU100は、ステップG07で評価値が最も大きかったベクトルqkとそのときの矩形組み合わせrとを、それぞれaAとrAとして選択する(最適化)。なお、ベクトルqkは、射影ベクトルと学習データの特徴ベクトルとの内積値の集合に関する統計量の一例である。つまり、CPU100は、ベクトルqkを最大化又は最小化する射影ベクトルqを求め、方向ベクトルとする。
【0040】
以上の方法でタイプT1とタイプT2とのノードのパラメータを学習することにより、図4に示したツリー構造のパラメータを用意することができる。そして、このパラメータを使用することにより、比較的計算負荷の軽い処理により入力画像中の顔を検出することができる。特に本実施形態では、全ての組み合わせrCに共通する評価関数によって評価値を求めて比較することによって、分割超平面の法線ベクトルを求めるだけでなく、次元削減において使用する成分の選択も行っている。なお、本実施形態では、超平面の法線ベクトルを求めるためにICAを使用したが、PCAやSVD等他の手法を使用することもできる。
【0041】
<実施形態3>
実施形態2では、尖度が正規分布からより乖離した射影ベクトルqを、ICAを使って求める方法を示した。この方法は、尖度が小さい射影ベクトルだけでなく、尖度が大きい射影ベクトルも求めてしまうことになる。本実施形態では、射影追跡法を利用して、直接尖度が小さい射影ベクトルのみを求める方法を示す。本実施形態でも、尖度は正規分布からの乖離度を表す指標の例として用いる。実施形態2とほぼ同じ構成であるが、図13の代わりに本実施形態では図15を使用する。
【0042】
まず射影ベクトルq'を極座標系で表現する。
【数10】
【0043】
また、
【数11】
を次式に従って平行移動させる。
【数12】
【0044】
そして、目的関数は以下の通りとする。
【数13】
【0045】
この目的関数を最小化する射影ベクトルq'を求める方法のフローチャートを図14に示す。図14は、目的関数を最小化する射影ベクトルq'を求める処理の一例を示すフローチャートである。
ステップK01において、CPU100は、θi(i=1,・・・,m)を所定の値で初期化する。例えば、CPU100は、θi=0(i=1,・・・,m)とすることができる。或いは、CPU100は、前記値を乱数で生成することもできる。また、CPU100は、収束条件のためのカウンタ変数sを0に初期化する。
【0046】
CPU100は、ステップK02から繰り返し処理に入る。まずステップK02において、CPU100は、θ+を生成する。より具体的に説明すると、CPU100は、まず乱数により自然数u(1≦u≦m−1)とΔを生成する。Δは、例えば平均0の正規分布をなすものとする。そしてθ+はθの第u成分にΔを足したものとする。つまり、次式の通りとする。θi(i=1,...,m)はθの第i成分である。
θi+=θi(i≠u)
θu+=θu+Δ
【0047】
次に、ステップK03において、CPU100は、目的関数の増減を調べる。より具体的に説明すると、CPU100は、(式1)にθを代入して射影ベクトルq'を求め、J(q')を計算する。次にCPU100は、θの代わりにθ+を使って射影ベクトルq+'を求め、J(q+')を計算する。CPU100は、J(q')≦J(q+')であれば、ステップK06へ進み、逆であればステップK04へ進む。
ステップK04において、CPU100は、カウンタ変数sを0に初期化する。そして、ステップK05において、CPU100は、θにθ+を代入して、再びステップK02よりループを繰り返す。ステップK06において、CPU100は、カウンタ変数sを1つ増分させる。そして、ステップK07において、CPU100は、予め定められた定数Sとsとを比較し、まだs<Sであれば、ステップK02よりループを繰り返す。逆にs≦SであればCPU100は、最小化処理を中止する。これにより、目的関数の値がS回改善されなければループを抜けることになる。このときのθから求めた射影ベクトルq'を、目的関数を最小化する値として扱う。
【0048】
ステップK03において、CPU100は、逐次J(q')を評価しているので、実施形態2の図13のステップG05ように評価値(J(q')の値)を再度計算する必要がない。そのため、図13の代わりに本実施形態では図15に従う。ステップL04の詳細は図14に示したとおりである。
【0049】
以上、尖度を最小化する射影ベクトルを求める方法を示した。本実施形態ではこの射影ベクトルを用いてタイプT2ノードの分割超平面を決定する。
なお、上述した最適化手法以外にも、ニュートン法等他の最適化手法によって射影ベクトルを求めるようにしてもよい。
また、これまでの実施形態では矩形特徴を用いた例を示したが、本発明はこれに限定されるものではない。特徴量としては、入力画像のピクセル値、入力画像にガボール フィルタをかけた特徴量、また局所特徴と呼ばれ入力画像の個々のピクセルにベクトルを割り当てるもの等がある。このようにパターン認識の分野においては、数多くの特徴量が定義されている。また、これまで顔の識別を例に取り上げたが、本発明は、画像のみならず、音声情報やアンケート結果等、他の情報にも適用することができる。
【0050】
以上、上述した各実施形態によれば、パターン識別のための決定木を構築する際に、分岐ノードのパラメータを適切に決定することができるため、入力データを、高速、かつ、高精度にパターン識別する識別器を構成することができる。
【0051】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0052】
100 CPU、101 プログラムメモリ、102 RAM、103 ハードディスク、104 ディスプレイ
【技術分野】
【0001】
本発明は、学習装置及び学習方法に関する。
【背景技術】
【0002】
従来、線形識別を用いたパターン識別が盛んに行われている。非特許文献1には線形識別のいくつかの例が解説されている。
簡単に説明すると、線形識別では、入力データを特徴ベクトルとして多次元空間内のベクトルで表し、これら特徴ベクトルが張る特徴空間を、超平面によって分割する。そして、入力データに対応する特徴ベクトルが、その超平面のどちら側に位置するかによって、入力データを識別する。更に、複数の超平面を用意すれば、これら超平面に囲まれた領域にある特徴ベクトルを1つのクラスとして識別することができる。非特許文献2には、このような例が開示されている。
前記識別器は比較的処理が高速である反面、線形識別を論理積によって統合した構造を採用している。そのため、識別したい特徴ベクトルの集合を、特徴空間内の超平面の片側或いは凸多面体としてしか表現することができない。つまり、凹凸のある集合を表現することができない。
【0003】
この問題を克服するためにいくつかの方法が提案されている。最も一般的な方法は、個々の線形識別の結果を論理積以外の演算で統合する方法である。非特許文献1にも解説されている区分的識別関数を利用する方法はその一つである。これは集合の表面を複数の多角形で覆うという考え方である。また、決定木を使う方法もある。典型的な決定木は教師あり学習である。決定木を構築する際には、分岐先ノードの不純度という概念を利用するのが通例となっている。これは分岐先ノードにたどり着く入力データの種類のばらつきのことである。通常、決定木を構築する際には、この不純度が低下するように分岐条件を決定する。非特許文献3では教師なしで決定木を構築する方法が提案されている。しかし、非特許文献3でもやはり不純度の概念を導入し、これが低下するように分岐条件を定めている。
【0004】
凹凸のある集合を表すための別の方法として、特徴空間の次元を増やすということも行われている。例えば、非特許文献2では、複数の弱判別器の結果を加算して強判別器という概念を導入している。しかしながら、特徴空間の次元を増やしても、その次元の増えた特徴空間の中で非凹多面体しか表せないという本質的な問題は解決されない。
教師なしで決定木を構築する方法は、クラスタリングと似通ったところがある。クラスタリングでは、クラスの分からないデータを複数の集合に分割する。非特許文献4は、階層的に入力データを分割していくクラスタリングの1つの手法を提案している。その際、できあがったクラスタを次々と2つずつに分割していく。できあがる2つのクラスタが、それぞれなるべくガウス分布に近くなるように作られる。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】石井、上田、前田、村瀬 (1998) "わかりやすいパターン認識"、オーム社.
【非特許文献2】Viola & Jones (2001) "Rapid Object Detection using a Boosted Cascade of Simple Features", Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Vol.1, p.551.
【非特許文献3】Basak & Krishnapuram (2005) "Interpretable Hierarchical Clustering by Constructing an Unsupervised Decision Tree", IEEE Transactions on Knowledge and Data Engineering, Vol.17 (1), p.121.
【非特許文献4】Miasnikov, Rome & Haralick (2004) "A Hierarchical Projection Pursuit Clustering Algorithm", Pattern Recognition, Proceedings of the International Conference on, Vol. 1, p.268.
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したように従来技術では、入力データを高速、かつ、高精度にパターン識別する識別器を構成することができない問題があった。
【0007】
本発明はこのような問題点に鑑みなされたもので、入力データを、高速、かつ、高精度にパターン識別する識別器を構成することを目的とする。
【課題を解決するための手段】
【0008】
そこで、本発明は、識別ノードと分岐ノードとを複数、連結した木構造を有し、入力データを特徴空間のSと〜Sとの2クラスに識別する識別器の、各ノードのパラメータを決定する学習装置であって、前記分岐ノードは、前記パラメータに基づいて、次に起動するべきノードを決定するノードであり、前記識別ノードは、前記パラメータに基づいて、入力データが〜Sに属するかどうかを識別するノードであり、前記Sと〜Sとの何れかに属する学習データに基づいて、前記Sに属する学習データの特徴ベクトルに対して多変量解析を行い、方向ベクトルを求める多変量解析手段と、前記多変量解析手段で求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する分割面を決定する分割面決定手段と、前記分割面決定手段で決定された前記分割面に基づいて、前記分岐ノードのパラメータを決定するパラメータ決定手段と、を有することを特徴とする。
かかる構成とすることにより、例えばパターン識別のための決定木を構築する際に分岐ノードのパラメータを適切に決定することができるため、入力データを、高速、かつ、高精度にパターン識別する識別器を構成することができる。
また、本発明は、学習方法としてもよい。
【発明の効果】
【0009】
本発明によれば、入力データを、高速、かつ、高精度にパターン識別する識別器を構成することができる。
【図面の簡単な説明】
【0010】
【図1】実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。
【図2】顔を検出する際の処理の流れを表すフローチャートである。
【図3】図2のデータフローチャートである。
【図4】パターン識別用パラメータ211を表すデータの構造を示す図である。
【図5】タイプT1のノードのデータ構造を表す図である。
【図6】タイプT2のノードのデータ構造を表す図である。
【図7】図2のステップS203の詳細を表すフローチャートである。
【図8】入力画像が分岐される様子を描いたイメージを表す図である。
【図9】ノードN3のための学習の大まかな処理の一例を示すフローチャートである。
【図10】図9のステップF01の詳細を表すフローチャートである。
【図11】図9のステップF03の詳細を表すフローチャート(その1)である。
【図12】図9のステップF03の詳細を表すフローチャート(その2)である。
【図13】図12のステップF0311の詳細を表すフローチャート(その1)である。
【図14】目的関数を最小化する射影ベクトルq'を求める処理の一例を示すフローチャートである。
【図15】図12のステップF0311の詳細を表すフローチャート(その2)である。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について図面に基づいて説明する。
【0012】
<実施形態1>
入力された画像に顔があるかどうかを判定する情報処理装置の例を示す。実施形態を簡単にするために、入力された画像はグレースケール画像であり、顔があればパスポート写真のようにほぼ中央にほぼ決められた大きさで配置されているものと仮定する。なお、画像を走査したり、画像を拡大・縮小するなどしたりすれば、任意の位置にある任意の大きさの顔を検出できるようになる。また、輝度値も正規化されているものとする。正規化の方法には、平均輝度との差分を取ったり、輝度の標準偏差で割ったりする方法がある。
図1は、実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。図1において、CPU(中央演算装置)100は、実施形態で説明するパターン識別用パラメータ学習方法をプログラムに従って実行する。プログラムメモリ101は、CPU100により実行されるプログラムが記憶されている。RAM102は、CPU100によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリを提供している。ハードディスク103は、画像ファイルやパターン識別用のパラメータなどを保存するための記憶媒体である。ディスプレイ104は、本実施形態の処理結果をユーザに提示する装置である。バス110は、これら各部とCPU100とを接続している制御バス・データ バスである。
【0013】
図2は、顔を検出する際の処理の流れを表すフローチャートである。
まずステップS201において、CPU100は、ハードディスク103より画像をRAM102に読み込む。画像は、RAM102上では2次元配列として保持される。次のステップS202において、CPU100は、後述する学習方法により作成したパターン識別用パラメータをハードディスク103よりRAM102に読み込む。ステップS203において、CPU100は、ステップS202で読み込んだパターン識別用パラメータを使用して、ステップS201で読み込んだ画像内に顔があるかどうかを判定する。その結果を次のステップS204において、CPU100は、ディスプレイ104に表示する。
【0014】
図2をデータフローチャートとして書き表すと図3ようになる。図3は、図2のデータフローチャートである。205は、ハードディスク103に保存されている画像である。201の画像の読み込み処理において、ハードディスク内の画像205がRAM102上に入力画像Iとして記憶される。209は、ハードディスク103に保存されているパターン識別用パラメータである。210のパターン識別用パラメータの読み込み処理において、ハードディスク103内のパターン識別用パラメータ209がRAM102上にパターン識別用パラメータ211として記憶される。203の検出処理では、CPU100が、先の入力画像Iとパターン識別用パラメータ211とを使用して、入力画像Iの中に顔があるかどうかを判定し、顔があるかどうかを207の検出結果としてRAM102に書き込む。204の検出結果表示処理では、CPU100が、検出結果207の内容をディスプレイ104に表示する。
【0015】
ここで、211のパターン識別用パラメータの内容について図4や図5、図6を用いて簡単に説明する。パターン識別用パラメータ211を作成する方法については、後ほど記述する。図4は、パターン識別用パラメータ211を表すデータの構造を示す図である。図4において、正方形は木構造の各ノードを表している。また、矢印は各ノードの処理が実行される順番を表している。パターン識別用パラメータ211は、タイプT1とタイプT2とで表された2種類のノードをツリー状に接続した構造をしている。タイプT1のノードは、識別ノードであって、その後にはノードが1つだけ接続されている。また、タイプT2のノードは、分岐ノードであって、ノードの後にはノードが複数接続されている。N3と記されたノードもまたタイプT2のノードである。本実施形態は、タイプT1の種類によらず様々な種類の検出器(識別器)に適用できるが、ここでは非特許文献2に書かれているような弱判別器(weak classifier)をタイプT1のノードに使用した例を示す。これ以外にもlinear discriminant analysis(LDA)やsupport vector machine(SVM)等を使った検出器を利用することができる。また、これらを連結した検出器であってもよい。
【0016】
以後の説明において、パラメータ・分岐先A・分岐先B・集合F+・集合G+という表現を用いているが、これらは着目するノードによって内容が異なるものである。これらを用いて求めた値もノードによって異なる。本実施形態では煩雑さを避けるためにノードを示す添え字を省略している。
【0017】
非特許文献2に書かれている弱判別器は、図4のタイプT1のノードに相当する。図5は、タイプT1のノードのデータ構造を表す図である。このデータは、RAM102のメモリ上に複数格納される。個々のデータはそれぞれ値が異なるのが普通である。まず先頭にノードのタイプが格納されている。このノードはタイプT1なので、T1を表すコードがノードのタイプとして格納される。その次に矩形情報が格納されている。矩形情報の初めに矩形の個数nが格納されており、その後にその個数nだけの矩形の座標(左上点・右下点)が格納されている。これら複数の矩形をまとめて矩形群と呼ぶことにする。次に、打ち切りのためのパラメータが格納されている。ここで「打ち切り」とは、後に図7を用いて説明するが、簡単に言うと早めの段階で入力画像に顔がないと判断することである。打ち切り用パラメータの先頭には閾値θが格納されている。その後に、先の矩形の数nだけの打ち切りのための計算に利用する符号が並ぶ。ここで言う符号とは、+1や−1のことである。最後に次のノードへのポインタが格納されている。
【0018】
図6は、タイプT2のノードのデータ構造を表す図である。このデータも、RAM102のメモリ上に複数格納される。個々のデータはそれぞれ値が異なるのが普通である。まず先頭にノードのタイプが格納されている。このノードはタイプT2なので、T2を表すコードがノードのタイプとして格納される。その次に矩形情報が格納されている。矩形情報の初めに矩形の個数nが格納されており、その後にその個数nだけの矩形の座標(左上点・右下点)が格納されている。次に分岐先Aのためのパラメータが配置されている。分岐先Aのためのパラメータには、打ち切り用パラメータ同様に閾値や矩形の係数が格納されているが、更に分岐先ノードAへのポインタも格納されている。このポインタの指し示す先には、また別のノードのパラメータが格納されている。最後にもう1つの分岐先ノードBへのポインタが格納されている。
【0019】
上記パラメータの作成方法を説明する前に、このパラメータを使用して顔を検出する方法を説明する。検出処理の全体的な流れは、CPU100が、図4の各ノードを根ノード(図で最も上位に描かれているノード)から順にたどることによって行われる。処理するノードがタイプT1のノードである場合、CPU100は、図5に図示されたノードに固有のパラメータを用いて、入力画像Iに顔が含まれているかどうかを判定する。顔がない可能性が高いと判定した場合には、CPU100は、そこで処理を中断する。そうでない場合には、CPU100は、次のノードの処理へと移る。処理するノードがタイプT2のノードである場合には、CPU100は、図6に図示されたノードに固有のパラメータを用いて、次にどのノードに処理を移すかの判断を行う。このように順にノードをたどっていくことによって、CPU100は、タイプT1のノードでは打ち切りか継続かの判断を行い、タイプT2のノードでは分岐先ノードの選択を行う。ここで、タイプT1のノード、つまり識別ノードは、入力データを特徴空間のS(第1のクラス)と〜S(第2のクラス)との2クラスに識別する識別器において、パラメータに基づいて、入力データが〜Sに属するかどうかを識別するノードである。また、タイプT2のノード、つまり分岐ノードは、パラメータに基づいて、次に起動するべきノードを決定するノードである。
【0020】
図7は、図2のステップS203の詳細を表すフローチャートである。初めのステップD10において、CPU100は、ポインタ変数pを最初のノードを指すように初期化する。次のステップD02において、CPU100は、pが指し示すノードの種類を確認する。pが指し示すノードがタイプT1の場合、CPU100は、ステップD11に進む。逆にタイプT2の場合、CPU100は、ステップD21へ進む。
ステップD11において、CPU100は、変数cを0で初期化する。そして、CPU100は、ステップD12からD15までのループを矩形の数n回だけ繰り返す。ループ内において、CPU100は、矩形を表すループ変数をiとする。ステップD13において、CPU100は、図5のノード情報から矩形iの対角線の座標(xiL, yiT)−(xiR,yiB)を取得し、その入力画像Iにおける矩形内の輝度値の総和を求める。CPU100は、これをbiとする。biは、非特許文献2に書かれているように累積情報(integral image)を使って高速に求めることができる。そしてステップD14において、CPU100は、変数cにbiと矩形iの符号aiの積を加算する。まとめると、このループでCPU100が求めているのは、次の和である。
【0021】
【数1】
【0022】
ステップD16において、CPU100は、この和cが図5の閾値θを超えているかどうか判定する。そして、CPU100は、θを超えていればステップD17へ進み、検出結果207に「偽」の値を書き込む。これは顔が検出されなかったことを表す。ここで、図4で示されたツリーの処理は打ち切られる。ステップD16において、CPU100は、和cが閾値θを超えていないと判断すると、次のステップD18へ進む。ここではCPU100は、全ノードの処理を終えたかどうか確認する。全ノードの処理が完了している場合、CPU100は、ステップD19で検出結果207に「真」の値を書き込む。これにより顔が検出されたことになる。逆に、ステップD18で全ノードの処理が完了していない場合、CPU100は、ステップD05でポインタ変数pに次のノードへのポインタを格納する。そして、CPU100は、ステップD02へと制御を戻す。
ステップD02においてポインタ変数pが指すノードのタイプがT2であることになれば、CPU100は、ステップD21からの処理を実行する。まずステップD21において、CPU100は、変数cを0で初期化する。そしてステップD22からD25までのループでCPU100は、次の内積値を求める。なお、aAiは図6の矩形の係数である。
【0023】
【数2】
【0024】
ステップD26において、CPU100は、内積値cが図6の閾値θAを超えているかどうか確認する。超えている場合、CPU100は、次のステップD28へと進む。ステップD28において、CPU100は、ポインタ変数pに図6の分岐先ノードAへのポインタ値を代入する。そして、CPU100は、再びステップD02からの処理を始める。ステップD26で閾値を超えていなかった場合、CPU100は、ステップD30へ進む。ここで、CPU100は、ポインタ変数pに図6の分岐先ノードBへのポインタ値を代入する。そして、CPU100は、再びステップD02からの処理を始める。この様子をイメージ図にしたのが図8である。図8は、入力画像が分岐される様子を描いたイメージを表す図である。図8には、丸や三角で描かれているのが、これらは、入力画像Iの特徴ベクトルbiである。入力画像Iが顔である場合は丸(E00やE01)、顔でない場合には三角(E10やE11)として描かれている。E02は、c=θAとなる超平面である。E03がベクトルaA=(aA1,aA2,・・・,aAn)で、超平面E02の法線ベクトルである。上記の分岐条件により、黒丸E01として表示されている顔画像と黒塗りの三角E11として表示されている非顔画像とが分岐先Aへと振り分けられることになる。また、白丸E00として表示されている顔画像と白抜きの三角E10として表示されている非顔画像とが分岐先Bへ振り分けられることになる。以上の処理で、図4のツリーのノードを遷移していくことになる。図4に示されているとおり、タイプT2のノードを連続させることもできる。そうすることによって、より複雑な分岐が可能となる。或いは、複数の閾値を用意することによって、3つ以上の分岐先の中から1つを選ぶこともできる。
【0025】
図5に示されるタイプT1のノードのパラメータを求めるための学習手順は、非特許文献2に示されるとおりである。ここで、図5の各矩形となる候補は学習前に予め提示されていると考えると分かりやすい。これら矩形の集合をR = {ri|i = 1・・・Nr}とする。当然のことながら、集合Rは規則的に生成されても、乱数によって生成されてもよい。
図6に示されるタイプT2のノードのパラメータを求めるための本実施形態における学習手順を示す。まず、前提として学習用の顔画像fjの集合F = {fj | j = 1・・・Nf}があり、顔の写っていない学習画像gjの集合G = {gj | gj = 1・・・Ng}が用意されているものとする。更に、図4のツリー構造は予め決められており、パラメータを確保するためのメモリがRAM102上に確保されているものとする。例えば、あくまでも例であるが、図4のように分岐数が3本になるまで2回に1回分岐が起こるように分岐ノードを配置することができる。このとき、図5や図6の各ポインタ値も確定しており、格納しておくことができる。そこで、図4においてT1と記されているノードからN3と記されているノードの直前(つまり、ここではT2と書かれているノード)までの学習が済んでいるものとする。前述した検出の処理を適用すると、N3までのノードで学習画像のいくつかは顔がないものとして棄却(打ち切り)されたり、タイプT2のノードによって他の分岐先に振り分けられたりする。そこで、CPU100は、N3のノードでは、それまでに棄却されたり他の分岐先に振り分けられたりしない顔画像fj+の集合F+ = {fj+ | j = 1・・・Nf+}と非顔画像gj+の集合G+ = {gj+ | j = 1・・・Ng+}とを学習に利用する。
【0026】
ノードN3のための学習の大まかな流れを図9に示す。まず、ステップF01において、CPU100は、学習画像F+を特徴ベクトルの集合として表す。次にステップF03において、CPU100は、特徴ベクトルの集合を用いて、学習データの特徴空間を分割する特徴空間内の超平面を決定し(分割面決定)、ノードN3のパラメータとして書き込む(パラメータ決定)。
次に、これら各ステップの詳細を説明する。
図10は、図9のステップF01の詳細を表すフローチャートである。ステップF0101からF0107までのループは、学習画像F+に属する各顔画像fj+に関する処理である。ステップF0103からステップF0105までのループは、矩形候補集合Rに属する各矩形riに対して繰り返す。そしてステップF0104でCPU100は、2次元配列の要素bjifに、顔画像fj+上の矩形ri内にあるピクセルの輝度値の総和を代入する。以上の処理により、学習画像の集合F+の各画像に対してNr次元の特徴ベクトルが対応付けられたことになる。特徴空間の各次元は、それぞれある矩形の中の輝度値総和に対応する。学習画像の集合F+に対応する特徴ベクトルの集合をBF+ = { bjf | bjf = (bj1f, bj2f,・・・, bjNrf)}とする。
【0027】
図9のステップF03でCPU100は、ステップF01で求められたベクトルに対して垂直であって、学習データの特徴空間を分割する分割超平面を決定する(分割面決定)。分割超平面は、分割面の一例である。ステップF03の流れを図11のフローチャートに示す。図11は、図9のステップF03の詳細を表すフローチャート(その1)である。
まず、ステップF0301において、CPU100は、顔特徴ベクトルの集合BF+の第1主成分方向ベクトルを求める。ここでいう第1主成分方向とは、集合BF+の散らばりが最大となる方向である。CPU100は、singular−value decomposition (SVD)やprincipal component analysis (PCA;主成分分析)等の多変量解析の手法を用いて主成分方向ベクトルを求めることができる。或いはCPU100は、independent component analysis(ICA;独立成分分析)等の多変量解析の手法を用いて主成分方向ベクトルを求めることもできる。ここで得られた主成分方向ベクトルをd = (d1, d2,・・・, dNr)とする。次にステップF0302において、CPU100は、この主成分方向ベクトルdの次元を削減する。より具体的に説明すると、CPU100は、nを予め決められた値として、dの成分の中で絶対値が大きい上位n個の成分を取り出し、aA = (aA1, aA2,・・・, aAn)とする。nは値を大きく取るとその分計算に時間を要することになるので、大きくしすぎないことが必要である。dの各次元はそれぞれR内の矩形1つに対応する。このことに着目して、CPU100は、aAの各要素に対応する矩形を並べることができる。これをrA = (rA1, rA2,・・・, rAn)とする。aAの各成分はCPU100によって図6の分岐先A用パラメータの該当する領域に書き込まれ、nとrAとの各矩形の座標がCPU100によって図6の矩形情報として書き込まれる。なお、次元削減の方法は、上記方法に限らない。例えば、CPU100は、ベクトルdの中の絶対値と対応する矩形面積との積が大きい上位n個の成分を取り出すこともできる。また、CPU100は、次元削減を行わないことも可能である。
主成分方向ベクトルは、方向ベクトルの一例である。
【0028】
残る閾値θAは、図11のステップF0303で求められる。閾値θAを求める方法の一例を式で表すと、前述のBF+の重心cを用いて、次のように表される。
【0029】
【数3】
【0030】
ここで、bjAfは、bjfからrA= (rA1, rA2,・・・, rAn)に対応する成分を取り出したベクトルである。wj=1でもよいが、非特許文献2に書かれているようなAdaboostの重みでもよい。
【0031】
以上の方法によりタイプT1とタイプT2とのノードのパラメータを学習することにより、図4に示したツリー構造のパラメータを用意することができる。そして、このパラメータを使用することにより、比較的計算負荷の軽い処理により入力画像中の顔を検出することができる。本実施形態では、主成分方向を求めるためにPCA等を利用したが、当然のことながらkernel PCA等の非線形な手法を用いることもできる。また、これまでの説明から、識別器は、顔の識別に限るものでなく、人物や図形や文字等他の画像も扱えることは明らかである。
【0032】
<実施形態2>
実施形態1では、主成分分析等を行ってから次元削減を行ったが、実施形態2では次元削減を行ってから、independent component analysis(ICA;独立成分分析)等を行う例を示す。
本実施形態では、図11の代わりに図12を利用する。図12は、図9のステップF03の詳細を表すフローチャート(その2)である。
ステップF0311において、CPU100は、分割超平面の法線ベクトルを求める。そして、ステップF0313において、CPU100は、図11のステップF0303と同じ手順(同じ処理)で閾値θAを求める。
【0033】
図13は、図12のステップF0311の詳細を表すフローチャート(その1)である。
ステップG01において、CPU100は、矩形の集合Rのなかからいくつかの矩形の組み合わせを選び、その組み合わせの集合をRCとする。それぞれの組み合わせでの矩形の数mは、例えば2のように一定であってもよいが、不揃いであってもよい。不揃いの場合には、CPU100は、根ノードから数えたノード数に応じて、mが単調に増加するように選んでもよい。CPU100は、矩形の組み合わせ集合RCの各組み合わせrC=(rC1,rC2,・・・,rCm)(C1〜Cmは矩形の番号を表すインデックス)について、ステップG02からG06までのループを繰り返す。
【0034】
次にステップG03において、CPU100は、集合BF+の各特徴ベクトルbjfについて、rC=(rC1,rC2,・・・,rCm)の各要素(矩形)に対応する成分を取り出した特徴ベクトル
【数4】
を生成する。もし、rC=(r5,r236,r5468
)の場合、
【数5】
は、(bj,5f,bj,236f,bj,5468f)となる。つまり、学習画像f
j+上の矩形r5とr236とr5468内の輝度値総和を並べたベクトルとなる。
【0035】
ステップG04において、CPU100は、これらm次元のベクトルの集合
【数6】
に対してICAを適用し、最大でm本のm次元ベクトルqk(k=1,・・・,mq;mq≦m)を得る。ICAを適用する際の目的関数には例えば次のような関数J(q)を選ぶことができる。ここで、vは平均0、分散1の正規分布に従う確率変数である。
【0036】
【数7】
【0037】
次にステップG05において、CPU100は、評価値として集合
【数8】
の尖度(kurtosis)の符号を反転したものを計算する。より具体的に説明すると、CPU100は、次の値を求める(射影評価)。
【0038】
【数9】
【0039】
或いはCPU100は、評価値としてcontrast functionや目的関数を使用してもよい。ループを抜けると、CPU100は、ステップG07で評価値が最も大きかったベクトルqkとそのときの矩形組み合わせrとを、それぞれaAとrAとして選択する(最適化)。なお、ベクトルqkは、射影ベクトルと学習データの特徴ベクトルとの内積値の集合に関する統計量の一例である。つまり、CPU100は、ベクトルqkを最大化又は最小化する射影ベクトルqを求め、方向ベクトルとする。
【0040】
以上の方法でタイプT1とタイプT2とのノードのパラメータを学習することにより、図4に示したツリー構造のパラメータを用意することができる。そして、このパラメータを使用することにより、比較的計算負荷の軽い処理により入力画像中の顔を検出することができる。特に本実施形態では、全ての組み合わせrCに共通する評価関数によって評価値を求めて比較することによって、分割超平面の法線ベクトルを求めるだけでなく、次元削減において使用する成分の選択も行っている。なお、本実施形態では、超平面の法線ベクトルを求めるためにICAを使用したが、PCAやSVD等他の手法を使用することもできる。
【0041】
<実施形態3>
実施形態2では、尖度が正規分布からより乖離した射影ベクトルqを、ICAを使って求める方法を示した。この方法は、尖度が小さい射影ベクトルだけでなく、尖度が大きい射影ベクトルも求めてしまうことになる。本実施形態では、射影追跡法を利用して、直接尖度が小さい射影ベクトルのみを求める方法を示す。本実施形態でも、尖度は正規分布からの乖離度を表す指標の例として用いる。実施形態2とほぼ同じ構成であるが、図13の代わりに本実施形態では図15を使用する。
【0042】
まず射影ベクトルq'を極座標系で表現する。
【数10】
【0043】
また、
【数11】
を次式に従って平行移動させる。
【数12】
【0044】
そして、目的関数は以下の通りとする。
【数13】
【0045】
この目的関数を最小化する射影ベクトルq'を求める方法のフローチャートを図14に示す。図14は、目的関数を最小化する射影ベクトルq'を求める処理の一例を示すフローチャートである。
ステップK01において、CPU100は、θi(i=1,・・・,m)を所定の値で初期化する。例えば、CPU100は、θi=0(i=1,・・・,m)とすることができる。或いは、CPU100は、前記値を乱数で生成することもできる。また、CPU100は、収束条件のためのカウンタ変数sを0に初期化する。
【0046】
CPU100は、ステップK02から繰り返し処理に入る。まずステップK02において、CPU100は、θ+を生成する。より具体的に説明すると、CPU100は、まず乱数により自然数u(1≦u≦m−1)とΔを生成する。Δは、例えば平均0の正規分布をなすものとする。そしてθ+はθの第u成分にΔを足したものとする。つまり、次式の通りとする。θi(i=1,...,m)はθの第i成分である。
θi+=θi(i≠u)
θu+=θu+Δ
【0047】
次に、ステップK03において、CPU100は、目的関数の増減を調べる。より具体的に説明すると、CPU100は、(式1)にθを代入して射影ベクトルq'を求め、J(q')を計算する。次にCPU100は、θの代わりにθ+を使って射影ベクトルq+'を求め、J(q+')を計算する。CPU100は、J(q')≦J(q+')であれば、ステップK06へ進み、逆であればステップK04へ進む。
ステップK04において、CPU100は、カウンタ変数sを0に初期化する。そして、ステップK05において、CPU100は、θにθ+を代入して、再びステップK02よりループを繰り返す。ステップK06において、CPU100は、カウンタ変数sを1つ増分させる。そして、ステップK07において、CPU100は、予め定められた定数Sとsとを比較し、まだs<Sであれば、ステップK02よりループを繰り返す。逆にs≦SであればCPU100は、最小化処理を中止する。これにより、目的関数の値がS回改善されなければループを抜けることになる。このときのθから求めた射影ベクトルq'を、目的関数を最小化する値として扱う。
【0048】
ステップK03において、CPU100は、逐次J(q')を評価しているので、実施形態2の図13のステップG05ように評価値(J(q')の値)を再度計算する必要がない。そのため、図13の代わりに本実施形態では図15に従う。ステップL04の詳細は図14に示したとおりである。
【0049】
以上、尖度を最小化する射影ベクトルを求める方法を示した。本実施形態ではこの射影ベクトルを用いてタイプT2ノードの分割超平面を決定する。
なお、上述した最適化手法以外にも、ニュートン法等他の最適化手法によって射影ベクトルを求めるようにしてもよい。
また、これまでの実施形態では矩形特徴を用いた例を示したが、本発明はこれに限定されるものではない。特徴量としては、入力画像のピクセル値、入力画像にガボール フィルタをかけた特徴量、また局所特徴と呼ばれ入力画像の個々のピクセルにベクトルを割り当てるもの等がある。このようにパターン認識の分野においては、数多くの特徴量が定義されている。また、これまで顔の識別を例に取り上げたが、本発明は、画像のみならず、音声情報やアンケート結果等、他の情報にも適用することができる。
【0050】
以上、上述した各実施形態によれば、パターン識別のための決定木を構築する際に、分岐ノードのパラメータを適切に決定することができるため、入力データを、高速、かつ、高精度にパターン識別する識別器を構成することができる。
【0051】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0052】
100 CPU、101 プログラムメモリ、102 RAM、103 ハードディスク、104 ディスプレイ
【特許請求の範囲】
【請求項1】
識別ノードと分岐ノードとを複数、連結した木構造を有し、入力データを特徴空間の第1のクラスと第2のクラスとの2クラスに識別する識別器の、各ノードのパラメータを決定する学習装置であって、
前記分岐ノードは、パラメータに基づいて、次に起動するべきノードを決定するノードであり、
前記識別ノードは、パラメータに基づいて、入力データが前記第2のクラスに属するかどうかを識別するノードであり、
前記第1のクラスに属する学習データの特徴ベクトルに対して多変量解析を行い、方向ベクトルを求める多変量解析手段と、
前記多変量解析手段で求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する分割面を決定する分割面決定手段と、
前記分割面決定手段で決定された前記分割面に基づいて、前記分岐ノードのパラメータを決定するパラメータ決定手段と、
を有することを特徴とする学習装置。
【請求項2】
前記分割面決定手段は、前記多変量解析手段で求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する前記特徴空間内の超平面を分割面として決定することを特徴とする請求項1に記載の学習装置。
【請求項3】
前記多変量解析手段は、
ある射影ベクトルと前記第1のクラスに属する学習データの特徴ベクトルとの内積値を求める射影手段と、
前記内積値の集合に関する統計量を求める射影評価手段と、
前記統計量を最大化又は最小化する前記射影ベクトルを求め、前記方向ベクトルとする最適化手段と、
を有することを特徴とする請求項1に記載の学習装置。
【請求項4】
前記射影評価手段は、前記内積値の集合の正規分布からの乖離度を表す統計量を求め、
前記最適化手段は、前記統計量を最大化する前記射影ベクトルを求め、前記方向ベクトルとすることを特徴とする請求項3に記載の学習装置。
【請求項5】
前記射影評価手段は、前記内積値の集合の尖度を統計量として求めることを特徴とする請求項3に記載の学習装置。
【請求項6】
前記多変量解析手段で求められた前記方向ベクトルから絶対値の大きさに基づいて要素を削減する次元削減手段を更に有し、
前記分割面決定手段は、前記次元削減手段で次元削減されたベクトルに垂直である、前記分割面を決定することを特徴とする請求項1乃至5の何れか1項に記載の学習装置。
【請求項7】
識別ノードと分岐ノードとを複数、連結した木構造を有し、入力データを特徴空間の第1のクラスと第2のクラスとの2クラスに識別する識別器の、各ノードのパラメータを決定する学習装置における学習方法であって、
前記分岐ノードは、パラメータに基づいて、次に起動するべきノードを決定するノードであり、
前記識別ノードは、パラメータに基づいて、入力データが前記第2のクラスに属するかどうかを識別するノードであり、
前記学習装置が、
前記第1のクラスに属する学習データの特徴ベクトルに対して多変量解析を行い、方向ベクトルを求める多変量解析ステップと、
前記多変量解析ステップで求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する分割面を決定する分割面決定ステップと、
前記分割面決定ステップで決定された前記分割面に基づいて、前記分岐ノードのパラメータを決定するパラメータ決定ステップと、
を含むことを特徴とする学習方法。
【請求項8】
前記分割面決定ステップでは、前記多変量解析ステップで求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する前記特徴空間内の超平面を分割面として決定することを特徴とする請求項7に記載の学習方法。
【請求項9】
前記多変量解析ステップでは、
ある射影ベクトルと前記第1のクラスに属する学習データの特徴ベクトルとの内積値を求める射影ステップと、
前記内積値の集合に関する統計量を求める射影評価ステップと、
前記統計量を最大化又は最小化する前記射影ベクトルを求め、前記方向ベクトルとする最適化ステップと、
を含むことを特徴とする請求項7に記載の学習方法。
【請求項10】
前記射影評価ステップでは、前記内積値の集合の正規分布からの乖離度を表す統計量を求め、
前記最適化ステップでは、前記統計量を最大化する前記射影ベクトルを求め、前記方向ベクトルとすることを特徴とする請求項9に記載の学習方法。
【請求項11】
前記射影評価ステップでは、前記内積値の集合の尖度を統計量として求めることを特徴とする請求項9に記載の学習方法。
【請求項12】
前記多変量解析ステップで求められた前記方向ベクトルから絶対値の大きさに基づいて要素を削減する次元削減ステップを更に有し、
前記分割面決定ステップでは、前記次元削減ステップで次元削減されたベクトルに垂直である、前記分割面を決定することを特徴とする請求項7乃至11の何れか1項に記載の学習方法。
【請求項1】
識別ノードと分岐ノードとを複数、連結した木構造を有し、入力データを特徴空間の第1のクラスと第2のクラスとの2クラスに識別する識別器の、各ノードのパラメータを決定する学習装置であって、
前記分岐ノードは、パラメータに基づいて、次に起動するべきノードを決定するノードであり、
前記識別ノードは、パラメータに基づいて、入力データが前記第2のクラスに属するかどうかを識別するノードであり、
前記第1のクラスに属する学習データの特徴ベクトルに対して多変量解析を行い、方向ベクトルを求める多変量解析手段と、
前記多変量解析手段で求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する分割面を決定する分割面決定手段と、
前記分割面決定手段で決定された前記分割面に基づいて、前記分岐ノードのパラメータを決定するパラメータ決定手段と、
を有することを特徴とする学習装置。
【請求項2】
前記分割面決定手段は、前記多変量解析手段で求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する前記特徴空間内の超平面を分割面として決定することを特徴とする請求項1に記載の学習装置。
【請求項3】
前記多変量解析手段は、
ある射影ベクトルと前記第1のクラスに属する学習データの特徴ベクトルとの内積値を求める射影手段と、
前記内積値の集合に関する統計量を求める射影評価手段と、
前記統計量を最大化又は最小化する前記射影ベクトルを求め、前記方向ベクトルとする最適化手段と、
を有することを特徴とする請求項1に記載の学習装置。
【請求項4】
前記射影評価手段は、前記内積値の集合の正規分布からの乖離度を表す統計量を求め、
前記最適化手段は、前記統計量を最大化する前記射影ベクトルを求め、前記方向ベクトルとすることを特徴とする請求項3に記載の学習装置。
【請求項5】
前記射影評価手段は、前記内積値の集合の尖度を統計量として求めることを特徴とする請求項3に記載の学習装置。
【請求項6】
前記多変量解析手段で求められた前記方向ベクトルから絶対値の大きさに基づいて要素を削減する次元削減手段を更に有し、
前記分割面決定手段は、前記次元削減手段で次元削減されたベクトルに垂直である、前記分割面を決定することを特徴とする請求項1乃至5の何れか1項に記載の学習装置。
【請求項7】
識別ノードと分岐ノードとを複数、連結した木構造を有し、入力データを特徴空間の第1のクラスと第2のクラスとの2クラスに識別する識別器の、各ノードのパラメータを決定する学習装置における学習方法であって、
前記分岐ノードは、パラメータに基づいて、次に起動するべきノードを決定するノードであり、
前記識別ノードは、パラメータに基づいて、入力データが前記第2のクラスに属するかどうかを識別するノードであり、
前記学習装置が、
前記第1のクラスに属する学習データの特徴ベクトルに対して多変量解析を行い、方向ベクトルを求める多変量解析ステップと、
前記多変量解析ステップで求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する分割面を決定する分割面決定ステップと、
前記分割面決定ステップで決定された前記分割面に基づいて、前記分岐ノードのパラメータを決定するパラメータ決定ステップと、
を含むことを特徴とする学習方法。
【請求項8】
前記分割面決定ステップでは、前記多変量解析ステップで求められた前記方向ベクトルに対して垂直であって、学習データの特徴空間を分割する前記特徴空間内の超平面を分割面として決定することを特徴とする請求項7に記載の学習方法。
【請求項9】
前記多変量解析ステップでは、
ある射影ベクトルと前記第1のクラスに属する学習データの特徴ベクトルとの内積値を求める射影ステップと、
前記内積値の集合に関する統計量を求める射影評価ステップと、
前記統計量を最大化又は最小化する前記射影ベクトルを求め、前記方向ベクトルとする最適化ステップと、
を含むことを特徴とする請求項7に記載の学習方法。
【請求項10】
前記射影評価ステップでは、前記内積値の集合の正規分布からの乖離度を表す統計量を求め、
前記最適化ステップでは、前記統計量を最大化する前記射影ベクトルを求め、前記方向ベクトルとすることを特徴とする請求項9に記載の学習方法。
【請求項11】
前記射影評価ステップでは、前記内積値の集合の尖度を統計量として求めることを特徴とする請求項9に記載の学習方法。
【請求項12】
前記多変量解析ステップで求められた前記方向ベクトルから絶対値の大きさに基づいて要素を削減する次元削減ステップを更に有し、
前記分割面決定ステップでは、前記次元削減ステップで次元削減されたベクトルに垂直である、前記分割面を決定することを特徴とする請求項7乃至11の何れか1項に記載の学習方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2010−282367(P2010−282367A)
【公開日】平成22年12月16日(2010.12.16)
【国際特許分類】
【出願番号】特願2009−134305(P2009−134305)
【出願日】平成21年6月3日(2009.6.3)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成22年12月16日(2010.12.16)
【国際特許分類】
【出願日】平成21年6月3日(2009.6.3)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]