(57)【要約】【課題】  複数の要素から構成されるビット列をスカラ値に変換して特徴量を生成する際に、ビット列をスカラ値に変換する変換パラメータの学習により、低次元かつパターン識別の対象に適した特徴量を得る。【解決手段】  演算処理部105は、入力データ101における処理対象領域108内の注目データの近傍の複数データをそれぞれ用いて演算処理を行う。二値化処理部106は、複数データそれぞれに対応する演算処理結果102を二値化処理する。特徴データ生成部107は、変換パラメータを用いて、複数データそれぞれに対応する二値化処理結果103から注目データに対する特徴データ104を生成する。学習部109は、同じクラスの入力データから生成される特徴データの間の距離が小さく、異なるクラスの入力データから生成される特徴データの間の距離が大きくなるように、変換パラメータを学習する。【選択図】  図2
2015185042.tif 000002
【特許請求の範囲】
【請求項１】
入力データにおける処理対象領域内の注目データの近傍の複数データをそれぞれ用いて演算処理を行う演算手段と、
前記複数データそれぞれに対応する演算処理結果を二値化処理する二値化手段と、
変換パラメータを用いて、前記複数データそれぞれに対応する二値化処理結果から前記注目データに対する特徴データを生成する生成処理を行う生成手段と、
同じクラスの入力データから生成される特徴データの間の距離を小さくし、異なるクラスの入力データから生成される特徴データの間の距離を大きくするように、前記変換パラメータを学習する学習手段とを有する情報処理装置。
【請求項２】
前記演算手段は、前記注目データと、前記注目データに対して所定の位置関係にある前記複数データそれぞれとの間の差分を計算する請求項1に記載された情報処理装置。
【請求項３】
前記演算手段は、前記注目データに対して所定の位置関係にある前記複数データそれぞれの間の差分を計算する請求項1に記載された情報処理装置。
【請求項４】
前記演算手段は、二分木の各ノードにおいて、前記注目データと、前記注目データに対して所定の位置関係にある前記複数データの一つとの間の差分を計算し、
前記二値化手段は、前記二分木の各ノードにおいて、前記差分に基づき分岐先の判定を前記二値化処理として行う請求項1に記載された情報処理装置。
【請求項５】
前記二値化手段は、ステップ関数を用いて前記二値化処理を実行する請求項1から請求項4の何れか一項に記載された情報処理装置。
【請求項６】
前記二値化手段は、パルス関数を用いて前記二値化処理を実行する請求項1から請求項4の何れか一項に記載された情報処理装置。
【請求項７】
前記生成手段は、前記生成処理として、前記二値化処理結果と前記変換パラメータとの乗算、それら乗算結果の加算を行う請求項1から請求項6の何れか一項に記載された情報処理装置。
【請求項８】
前記処理対象領域は複数あり、前記生成手段は、前記複数の処理対象領域に同じ変換パラメータまたは異なる変換パラメータを適用する請求項1から請求項6の何れか一項に記載された情報処理装置。
【請求項９】
前記生成手段は、前記複数の処理対象領域のうち、特性が類似する領域に前記同じ変換パラメータを適用する請求項8に記載された情報処理装置。
【請求項１０】
前記変換パラメータは、前記複数データそれぞれに対応する重み係数である請求項1から請求項9の何れか一項に記載された情報処理装置。
【請求項１１】
前記学習手段は、
複数のデータから第一のデータおよび前記第一のデータと異なる第二のデータをランダムに選択し、前記第一のデータのクラスと前記第二のデータのクラスの関係を示すラベル情報を生成する選択手段と、
前記演算処理、前記二値化処理および前記生成処理により、前記第一のデータから第一の特徴データを生成し、前記第二のデータから第二の特徴データを生成する手段と、
前記第一の特徴データと前記第二の特徴データの間の距離を計算する距離計算手段と、
前記距離および前記ラベル情報に基づき損失を計算する損失計算手段と、
前記損失に基づき前記変換パラメータを更新する更新手段とを有する請求項1から請求項10の何れか一項に記載された情報処理装置。
【請求項１２】
前記選択手段は、前記第一および第二のデータの識別情報が同じ場合は同じクラスを示す前記ラベル情報を生成し、前記第一および第二のデータの識別情報が異なる場合は異なるクラスを示す前記ラベル情報を生成する請求項11に記載された情報処理装置。
【請求項１３】
前記距離計算手段は、前記第一の特徴データの各要素を並べた一次元のベクトルと、前記第二の特徴データの各要素を並べた一次元のベクトルの間のノルムを前記距離として計算する請求項11または請求項12に記載された情報処理装置。
【請求項１４】
前記損失計算手段は、前記ラベル情報が同じクラスを示す場合は前記距離と比例関係を示す損失を算出し、前記ラベル情報が異なるクラスを示す場合は前記距離と反比例関係を示す損失を算出する請求項11から請求項13の何れか一項に記載された情報処理装置。
【請求項１５】
前記更新手段は、前記損失と勾配降下法を用いて前記変換パラメータを更新する請求項11から請求項14の何れか一項に記載された情報処理装置。
【請求項１６】
演算手段、二値化手段、生成手段、学習手段を有する情報処理装置の情報処理方法であって、
前記演算手段が、入力データにおける処理対象領域内の注目データの近傍の複数データをそれぞれ用いて演算処理を行い、
前記二値化手段が、前記複数データそれぞれに対応する演算処理結果を二値化処理し、
前記生成手段が、変換パラメータを用いて、前記複数データそれぞれに対応する二値化処理結果から前記注目データに対する特徴データを生成し、
前記学習手段が、同じクラスの入力データから生成される特徴データの間の距離を小さくし、異なるクラスの入力データから生成される特徴データの間の距離を大きくするように、前記変換パラメータを学習する情報処理方法。
【請求項１７】
請求項1から請求項15の何れか一項に記載された情報処理装置を用いて顔認証処理を行う認証装置。
【請求項１８】
前記認証装置は、識別情報に関連付けられた顔画像の画像データおよび照合用データを格納する格納手段、ユーザ指示および画像データを入力する入力手段、並びに、認証手段を有し、前記認証手段は、
学習モードを示すユーザ指示が入力されると、前記情報処理装置を用いて前記格納手段に格納された画像データに基づく前記変換パラメータの更新を実行し、
登録モードを示すユーザ指示が入力されると、入力される画像データに含まれる顔画像を抽出し、前記情報処理装置を用いて前記顔画像の画像データから特徴データを抽出し、前記特徴データの次元を削減した照合用データと前記顔画像の画像データを識別情報に関連付けて前記格納手段に登録し、
識別モードを示すユーザ指示が入力されると、入力される画像データに含まれる顔画像を抽出し、前記情報処理装置を用いて前記顔画像の画像データから特徴データを抽出し、前記特徴データの次元を削減したデータと前記格納手段に格納された照合用データを用いて前記顔認証処理を行う請求項17に記載された認証装置。
【請求項１９】
識別情報に関連付けられた顔画像の画像データおよび照合用データを格納する格納手段、ユーザ指示および画像データを入力する入力手段、並びに、認証手段を有し、請求項1から請求項15の何れか一項に記載された情報処理装置を用いて顔認証処理を行う認証装置の認証処理方法であって、前記認証手段が、
学習モードを示すユーザ指示が入力されると、前記情報処理装置を用いて前記格納手段に格納された画像データに基づく前記変換パラメータの更新を実行し、
登録モードを示すユーザ指示が入力されると、入力される画像データに含まれる顔画像を抽出し、前記情報処理装置を用いて前記顔画像の画像データから特徴データを抽出し、前記特徴データの次元を削減した照合用データと前記顔画像の画像データを識別情報に関連付けて前記格納手段に登録し、
識別モードを示すユーザ指示が入力されると、入力される画像データに含まれる顔画像を抽出し、前記情報処理装置を用いて前記顔画像の画像データから特徴データを抽出し、前記特徴データの次元を削減したデータと前記格納手段に格納された照合用データを用いて前記顔認証処理を行う認証処理方法。
【請求項２０】
コンピュータを請求項1から請求項15の何れか一項に記載された情報処理装置の各手段として機能させるためのプログラム。
【請求項２１】
コンピュータを請求項17または請求項18に記載された認証装置の各手段として機能させるためのプログラム。
【請求項２２】
請求項20または請求項21に記載されたプログラムが記録されたコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターン識別に好適な特徴量を抽出する情報処理に関する。
【背景技術】
【０００２】
顔認証などのパターン識別に有効な特徴量として、非特許文献1に記載されたlocal binary pattern（LBP、局所二値パターン）が提案されている。図1によりLBPの抽出処理の概要を説明する。
【０００３】
座標(x, y)のLBPは、3×3画素領域における中心画素(x, y)を注目画素とし、注目画素に隣接する八つの参照画素(x＋xn, y＋yn)を用いて、式(1)によって計算される。
tn(x, y) = i(x+xn, y+yn) - i(x, y)；
if (tn(x, y) ≧ 0)
s(tn(x, y)) = ‘1’；
else
s(tn(x, y)) = ‘0’；
LBP(x, y) = Σn=07{s(tn(x, y))・2n}；      …(1)
ここで、i(x, y)は注目画素の画素値、
i(x+xn, y+yn)はn番目の参照画素の画素値、
xn={-1, 0, 1}、yn={-1, 0, 1}、xn2+yn2≠0。
【０００４】
つまり、LBPは、注目画素の値と各参照画素の値の差分から得られるビット列の各要素に2nを乗算したスカラ値として得られる8ビットの特徴量である。
【０００５】
図1に示す例は、注目画素の左隣の画素を(x0, y0)とし、注目画素を中心に反時計回りに(x1, y1)、(x2, y2)、…、(x7, y7)とした例である。つまり、図1に示す例では、破線矢印の順にビットを並べてビット列‘00111010’が得られ、LBPの値は「58」である。
【０００６】
また、特許文献1は、LBPにおけるエンコード前のビット列を特徴量とする手法を提案する。非特許文献1におけるLBPが8ビット、一次元の特徴量（図1の例では58）に対して、特許文献1は、特徴量として1ビット、八次元の特徴量（図1の例では‘00111010’）を生成する。
【０００７】
また、特許文献2は、ビット列の変換方法を学習によって決定する手法を提案する。この手法は、画素パターンが似た3×3画素領域から得られるビット列同士のユークリッド距離を小さくする変換方法を学習によって決定する。具体的には、3×3画素領域の画素パターンの類似性を表現するP次元（P＜8）の空間にビット列を射影する変換式を学習する。この手法によれば、元のデータの類似性を表現する、比較的低次元の特徴量を生成することができる。
【０００８】
LBPは、パターン識別に有効な特徴量として広く利用されている。LBPは、元来、LBPヒストグラムとしての使用を前提に設計されたため、LBPの値は単なるインデックスであり、値の大小関係に意味はない。パターン識別の中でも顔認証のように、詳細なテクスチャ情報が識別に有効な場合、ヒストグラム化前のデータをそのまま特徴量として使用する方が好ましい。しかし、LBPの値は大きさ自体に意味がないため、LBPの間の距離によって元のデータの間の類似度を適切に表現することができない。
【０００９】
一方、特許文献1の手法によれば、各ビットそれぞれについて距離を計算することにより、元のデータの間の類似度を表現することが可能である。しかし、特徴量の次元が元のデータの八倍になるため、後段の処理における計算時間が増加する。
【００１０】
また、特許文献2の手法によれば、比較的低次元の特徴量により元のデータの間の類似度を表現することが可能である。しかし、この手法は、元のデータの類似性を表現可能な変換方法を学習するものであって、対象を識別するのに適した変換方法を学習するわけではない。そのため、学習によって得られる変換方法は、必ずしも、パターン識別に適しているとは限らない。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開2009-86926号公報
【特許文献２】特開2011-08631号公報
【非特許文献】
【００１２】
【非特許文献１】T. Ojala、M. Pietikainen、D. Harwood「A Comparative Study of Texture Measures with Classification Based on Featured Distributions」Pattern Recognition、Vol. 29、pp. 51-59、1996年
【非特許文献２】S. Chopra、R. Hadsell、Y. LeCun「Learning a similarity metric discriminatively, with application to face verification」Proc. IEEE Conference on Computer Vision and Pattern Recognition、pp. 539-546、2005年
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明は、複数の要素から構成されるビット列をスカラ値に変換して特徴量を生成する際に、低次元かつパターン識別の対象に適した特徴量を得ることを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１５】
本発明にかかる情報処理は、入力データにおける処理対象領域内の注目データの近傍の複数データをそれぞれ用いて演算処理を行い、前記複数データそれぞれに対応する演算処理結果を二値化処理し、変換パラメータを用いて、前記複数データそれぞれに対応する二値化処理結果から前記注目データに対する特徴データを生成し、同じクラスの入力データから生成される特徴データの間の距離が小さく、異なるクラスの入力データから生成される特徴データの間の距離が大きくなるように、前記変換パラメータを学習する。
【発明の効果】
【００１６】
本発明によれば、ビット列をスカラ値に変換する変換パラメータの学習により、複数の要素から構成されるビット列をスカラ値に変換して特徴量を生成する際に、低次元かつパターン識別の対象に適した特徴量を得ることができる。
【図面の簡単な説明】
【００１７】
【図１】LBPの抽出処理の概要を説明する図。
【図２】実施例1における信号処理部の構成例を説明するブロック図。
【図３】入力画像データと処理対象領域の関係を説明する図。
【図４】注目画素と参照画素の位置関係の一例を示す図。
【図５】学習部の構成例を説明するブロック図。
【図６】実施例の情報処理装置の構成例を示すブロック図。
【図７】実施例の顔認証処理を説明するフローチャート。
【図８】処理対象領域、参照画素の相対位置、重み係数群に関する情報のメモリ格納形式の一例を示す図。
【図９】学習処理を説明するフローチャート。
【図１０】識別処理を説明するフローチャート。
【図１１】顔認証結果の出力例を示す図。
【図１２】登録処理を説明するフローチャート。
【図１３】実施例2における信号処理部を説明するブロック図。
【図１４】二分木処理を説明する図。
【図１５】複数の処理対象領域の設定例を説明する図。
【図１６】二つの参照画素を比較する例を示す図。
【発明を実施するための形態】
【００１８】
以下、本発明にかかる実施例の情報処理を図面を参照して詳細に説明する。
【００１９】
以下では、実施例の信号処理とその学習方法について説明し、実施例の信号処理および学習方法をパターン識別に適用する情報処理装置およびその方法を説明する。実施例の信号処理は、入力データ群からパターン識別に使用する特徴量を抽出するために用いられる。入力データ群は、複数の要素からなるデータの集合であり、例えば画像データである。
【００２０】
また、以下では、顔画像から顔認証に適した特徴量を抽出するために実施例の信号処理を使用する例を挙げる。顔認証においては、入力された顔画像から特徴量を抽出し、抽出した特徴量と予め作成され登録された特徴量を比較することで個人を特定する。なお、実施例においては、本発明を顔認証における特徴抽出に適用する例を説明するが、本発明は他のパターン識別における特徴抽出にも適用可能である。
【実施例１】
【００２１】
［信号処理部］
図2のブロック図により実施例1における信号処理部の構成例を説明する。
【００２２】
入力画像データ101には、予め処理対象領域108が設定されている。図3により入力画像データ101と処理対象領域108の関係を説明する。目、鼻、口といった顔の特徴をよく表す部位を含む領域が処理対象領域108として設定される。
【００２３】
演算処理部105a-105cは、処理対象領域108の画像データに局所演算処理を施し、二次元データの局所演算処理結果102a-102cを生成する。局所演算処理は、予め定められた近傍領域に存在する複数データを用いる演算処理である。演算処理部105a-105cは、下式に示す、注目画素と予め指定された参照画素の間の画素値の差分rnを局所演算処理結果として計算する。
rn(x, y) = i(x+xn, y+yn) - i(x, y)        …(2)
ここで、rn(x, y)はn番目の参照画素に対応する局所演算処理結果の画素値、
i(x, y)は注目画素の画素値、
i(x+xn, y+yn)はn番目の参照画素の画素値、
(xn, yn)はn番目の参照画素の注目画素に対する相対位置。
【００２４】
図4により注目画素と参照画素の位置関係の一例を示す。相対位置(xn, yn)は、例えば、図4(a)(b)(c)の順に、それぞれ(x0, y0)=(0, -1)、(x1, y1)=(-1, 0)、(x2, y2)=(1, 1)である。
【００２５】
二値化処理部106a-106cは、局所演算処理結果102a-102cに二値化処理を施し、二次元データの二値化処理結果103a-103cを生成する。二値化処理部106a-106cは、例えば、二値化処理に下式のステップ関数処理を行う。
if (rn(x, y) ≧ 0)
bn(x, y) = ‘1’；
else
bn(x, y) = ‘0’；        …(3)
ここで、bn(x, y)はn番目の参照画素に対応する二値化処理結果の画素値。
【００２６】
特徴データ生成部107は、積算器107a-107cにより二値化処理結果103a-103cそれぞれに重み係数w0-w2を乗算し、加算器107dにより乗算結果を加算処理して二次元データの特徴データ104を生成する生成処理を行う。以下では、処理対象領域108に対して使用する重み係数のセットw0-w2を「重み係数群」と呼ぶ。下式は二値化処理結果103a-103cから特徴データ104を生成する計算式である。
v(x, y) = Σn=0N-1{bn(x, y)・wn}        …(4)
ここで、v(x, y)は特徴データ104の画素値、
wnはn番目の参照画素に対応する二値処理結果の重み係数、
Nは二値化処理結果の数。
【００２７】
図2に示す信号処理部はN=3の例であり、b0(x, y)からb2(x, y)は二値化処理結果103a-103cの画素値である。
【００２８】
学習部109は、詳細は後述するが、学習により、パターン識別の対象に適合する重み係数群w0-w2を決定する。
【００２９】
LBPは、ビット列の各ビットに2Nを乗算して、スカラ値を得る。実施例の信号処理部において、二値化処理結果103a-103cは、LBPにおけるエンコード処理前のビット列と等価である。そして、パターン識別の対象に適合するように学習された重み係数群w0-w2と各ビットの乗算結果を加算してスカラ値である特徴データ104を得る。つまり、重み係数群w0-w2がビット列をスカラ値に変換する変換パラメータに相当する。
【００３０】
［学習部］
学習部109は、図2に示す信号処理部の出力である特徴データ104がパターン識別対象に有効な特徴量を示すように重み係数群w0-w2を学習により決定する。
【００３１】
図5のブロック図により学習部109の構成例を説明する。学習部109は、Siamese学習器（非特許文献2参照）を基本構成とする。Siamese学習器は、入力データのペアとそれらデータのクラスを示すラベル情報を基に、特徴データ間の距離を、同じクラスのデータに対しては小さくし、異なるクラスのデータに対しては大きくする、変換パラメータを学習する。
【００３２】
データベース(DB)406は、顔画像と当該顔画像に対応する人物IDからなる顔認証用のデータ群を格納する。人物IDは、顔画像に対応する人物を特定するための識別情報であり、例えば整数値で表される。例えば、DB406に登録された人物の順に人物IDとして例えば値0、1、2、…が設定される。さらに、人物IDに、名前やニックネームなどの文字列データを関連付けることが好ましい。
【００３３】
DB406に登録する顔画像は、両目が水平に配置され、かつ、予め定められたサイズになるように画像変換された画像が好ましい。さらに、信号処理の出力として、各種変動に対してロバストな特徴量が得られるように、顔画像は、パン方向およびチルト方向への顔の傾き、表情、照明条件などについて、様々な変動を含むことが望ましい。
【００３４】
画像ペア選択部407は、DB406から学習に使用する顔画像のペアを選択する。顔画像のペアは、DB406に格納されたすべての顔画像の中から、毎回、ランダムに選択される。選択された顔画像の画像データ401a、401bはそれぞれ、特徴抽出部408aと408bに入力される。また、画像ペア選択部407は、選択した顔画像の人物IDが同じ場合は値0、異なる場合は値1のラベル405を設定する。ラベル405は、損失計算部404において損失が計算される際に使用される。
【００３５】
特徴抽出部408a、408bは、入力された顔画像401a、401bに対して、図2に示す信号処理部と同等の処理を実行して特徴データ104を生成する。特徴抽出部408a、408bは同じ構成を有し、重み係数群402を共有するため、入力された顔画像が同じであれば同じ特徴データが得られる。
【００３６】
距離計算部403は、特徴抽出部408a、408bが生成した二つの特徴データの距離を計算する。本実施例においては距離尺度として、特徴データをベクトルとした場合のベクトル間のL1ノルムを使用する。例えば、特徴データのサイズをW×Hとすると、ベクトルの次元はW×Hになる。下式は、特徴抽出処理408a、bが生成した特徴データ間のL1ノルムを計算する計算式である。
E(w) = ‖v1(w) - v2(w)‖1        …(5)
ここで、E(w)は特徴データ間のL1ノルム、
wは重み係数群、
vm(w)は入力画像mから生成した特徴データ、
mは画像ペアにおけるインデックス。
【００３７】
式(5)において、重み係数群wは、本実施例の信号処理における重み係数を要素とするベクトルである。特徴データv、L1ノルムEは何れも重み係数により値が変化するため、wの関数として表す。特徴データv1(w)、v2(w)は、顔画像401a、401bから生成される特徴データである。つまり、式(5)により、第一の特徴データv1(w)の各要素を並べた一次元のベクトルと、第二の特徴データv2(w)の各要素を並べた一次元のベクトルの間のL1ノルムが計算される。
【００３８】
なお、距離尺度はベクトル間のL1ノルムに限らず、ユークリッド距離、コサイン距離など他の距離尺度を使用してもよい。
【００３９】
損失計算部404は、距離計算部403が計算したL1ノルムと、画像ペア選択部407が生成したラベル405に基づき、損失を計算する。下式は、L1ノルムとラベル405から損失L(w)を計算する計算式である。
L(w) = (1 - Y)2/Q・E(w)2 + Y・2Q・exp{-2.77E(w)/Q}      …(6)
ここで、Yはラベル405（値0は人物IDが同じ、値1は人物IDが異なる）、
QはL1ノルムE(w)の上限値（設定値）。
【００４０】
顔画像401a、401bの人物IDが同じ場合、ラベル405はY=0になり、損失L(w)は、L1ノルムE(w)が小さければ小さな値に、L1ノルムE(w)が大きければ大きな値になる（距離と損失が比例関係を示す）。つまり、同じ人物の顔画像については、特徴データ間の距離が小さいほど損失L(w)が小さな値になることを意味する。
【００４１】
また、顔画像401a、401bの人物IDが異なる場合、ラベル405はY=1になり、損失L(w)は、L1ノルムE(w)が小さければ大きな値に、L1ノルムE(w)が大きければ小さな値になる（距離と損失が反比例関係を示す）。つまり、異なる人物の顔画像については、特徴データ間の距離が大きいほど損失L(w)が小さな値になることを意味する。
【００４２】
顔画像のペアから損失L(w)が計算されると、係数更新部409は、損失L(w)を基に勾配降下法を用いて重み係数群402を更新する。なお、重み係数群402は、学習を始める前に初期化する必要があり、係数更新部409は、乱数を用いて重み係数群402を初期化するか、以前の学習により得られた重み係数群wを重み係数群402の初期値に設定し、追加再学習を行うようにする。
【００４３】
下式は、勾配降下法により重み係数群wのi番目の要素の更新を示す式である。
w'i = wi - ρ・∂L(w)/∂wi        …(7)
ここで、wiは更新前のi番目の要素、
w'iは更新後のi番目の要素、
ρは更新係数。
【００４４】
式(7)によりwiを更新するには∂L(w)/∂wiを求める必要がある。損失L(w)は、L1ノルムE(w)を通してのみwiに依存するため、偏微分の連鎖法則を適用し、∂L(w)/∂wiを下式のように変形する。
∂L(w)/∂wi = ∂L(w)/∂E(w)・∂E(w)/∂wi      …(8)
【００４５】
式(8)において、∂L(w)/∂E(w)は、式(6)をL1ノルムE(w)について偏微分することにより得られる。また、∂E(w)/∂wiは、∂L(w)/∂wiを分解した場合と同様に、下式のように変形することができる。
∂E(w)/∂wi = Σj{∂L(w)/∂vj・∂vj/∂wi}      …(9)
ここで、vjは特徴データv(w)のj番目の要素。
【００４６】
式(9)において、∂E(w)/∂vjは、式(5)をvjについて偏微分することにより得られる。ただし、∂E(w)/∂vjは、顔画像401aの特徴データv1(w)に含まれるvj、顔画像401bの特徴データv2(w)に含まれるvjそれぞれについて計算する必要がある。また、式(9)は、特徴データv(w)の各要素vjについて分解した結果を総和する。これは、L1ノルムE(w)が特徴データv(w)の全要素vjを通してwiに依存するためである。
【００４７】
また、式(9)において、∂vj/∂wiは、式(4)をwiについて偏微分することにより得られる。このようにして得られる∂L(w)/∂wiを用いて、式(7)によりwiを更新する。
【００４８】
なお、∂E(w)/∂vjには、特徴データv1(w)から算出されたものと、特徴データv2(w)から算出されたものがある。重み係数群wは、前者の∂E(w)/∂vjを用いて更新された後、後者の∂E(w)/∂vjを用いて更新されるものとする。
【００４９】
以上の勾配降下法による重み係数群wの更新は、顔画像のペア一組に対して一回実行する。例えばM組（M≧1）のペアが選択される場合、式(7)による重み係数wの更新はM回実行される。
【００５０】
［情報処理装置の構成］
図6のブロック図により実施例の情報処理装置の構成例を示す。
【００５１】
CPU503は、RAM505をワークメモリとして、ROM504やデータ保存部501に格納されたOSや各種プログラムを実行し、システムバス509を介して、後述する構成を制御し、後述する機能を実行する。データ保存部501は、ハードディスクドライブ(HDD)、ディスクドライブ、メモリカード、USBメモリなどで構成され、記録媒体に画像データ、プログラムやその他のデータを保持する。データ保存部501に格納されたプログラムには、前述した信号処理部および学習部109を実現するプログラムやデータ、後述する顔認証を実行するプログラムやデータが含まれる。
【００５２】
表示部507は、ビデオカードおよびモニタから構成され、CPU503によって、画像処理前後の画像や、グラフィックスユーザインタフェイス(GUI)などを表示する。
【００５３】
入力部506は、キーボード、ポインティングデバイス、表示部507のモニタに重ねられたタッチパネルなどを有し、ユーザ指示を入力する。実施例の情報処理装置を例えばディジタルカメラやプリンタなどの機器に適用する場合、入力部506は、ボタン、ダイヤル、テンキー、タッチパネルなどに相当する。勿論、ソフトウェアキーボードをモニタに表示し、タッチパネルの操作によってユーザ指示が入力される構成も可能である。
【００５４】
通信部502は、有線または無線ネットワークを介して、機器間の通信を行うためのインタフェイスである。
【００５５】
CPU503は、顔認証対象の画像データを、例えば、入力部506に設けられたUSBなどのシリアルインタフェイスなどを介して外部の撮像装置から入力する。あるいは、通信部502を介して、ネットワーク上の撮像装置または情報処理装置やサーバ装置から顔認証対象の画像データを入力してもよい。また、図5に示すDB406は、データ保存部501またはネットワーク上のサーバ装置に格納されている。
【００５６】
なお、実施例の情報処理装置は、前述した信号処理部および学習部、後述する顔認証処理を実現するプログラムを汎用のコンピュータ機器に供給することで実現可能である。
【００５７】
［顔認証処理］
図7のフローチャートにより実施例の顔認証処理を説明する。なお、図7に示す処理はCPU503によって実行される。
【００５８】
CPU503は、顔認証処理を開始すると、上述した信号処理に使用する処理対象領域108、参照画素の相対位置、重み係数群、後述する変換行列などに関する情報をRAM505の所定領域にロードする初期化処理を実行する(S601)。
【００５９】
図8により処理対象領域108、参照画素の相対位置、重み係数群に関する情報のメモリ格納形式の一例を示す。RAM505には、次の情報が格納される。処理対象領域の情報として、処理対象領域108の対角線上の二頂点の座標(Xlt, Ylt)と(Xrb, Yrb)が格納される。続いて、局所演算処理結果の数に対応する参照画素の数Nが格納される。続いて、参照画素数N分の参照画素の相対位置として(x0, y0)、(x1, y1)、…、(xN-1, yN-1)が格納される。さらに、参照画素数N分の重み係数群としてw0、w1、…、wN-1が格納される。
【００６０】
重み係数群として、例えば乱数または以前の学習により得られた重み係数群が初期値として設定される。なお、図8に示す処理対象領域108、参照画素の相対位置、重み係数群に関する情報の格納形式は一例であり、CPU503がそれら情報を識別可能な形式であれば任意の格納方法でよい。
【００６１】
次に、CPU503は、入力部506を介して、動作モードの指示が入力されたか否かを判定する(S602)。そして、動作モードの指示が入力されると、指示された動作モードに従い処理を分岐し(S603)、指示された動作モードに従う処理が終了すると、処理をステップ601に戻す。
【００６２】
実施例における動作モードには、(a)学習モード、(b)識別モード、(c)登録モードの三つがある。学習モードにおいては、上述した学習処理(S604)が実行される。識別モードにおいては、上述した信号処理を用いて顔認証処理(S605)が実行される。登録モードにおいては、上述した信号処理を用いて顔認証に使用する登録データの作成処理(S606)が実行される。
【００６３】
また、学習処理に使用される顔画像は、学習処理に先立ち、以下の手順に従い作成され、人物IDに関連付けられてデータ保存部501など割り当てられたDB406に格納されているとする。
【００６４】
CPU503は、学習対象の顔画像の画像データをデータ保存部501などからRAM505の所定領域にロードし、ロードした画像データを8ビット符号なし輝度画像に変換する。そして、顔検出手法を用いて、画像データから顔領域を検出し、所定サイズにリサイズした顔画像の画像データを人物IDに関連付けてDB406に格納する。
【００６５】
さらに、動的アピアランスモデルや動的形状モデルなどを用いて、目、鼻、口などの部位の位置を検出し、検出した位置に基づき、両目を水平に配置し、かつ、顔画像が所定サイズになるように画像変換することが好ましい。さらに、信号処理の出力として、各種変動に対してロバストな特徴量が得られるように、顔画像は、パン方向およびチルト方向への顔の傾き、表情、照明条件などについて、様々な変動を含むことが望ましい。
【００６６】
なお、学習処理に使用される顔画像を作成する準備作業を外部の画像処理装置などによって実行することもできる。この場合、CPU503は、ネットワークや記録媒体を介して、外部で作成された顔画像と人物IDを入力し、顔画像と人物IDをDB406に格納する。
【００６７】
●学習モード
図9のフローチャートにより学習処理(S604)を説明する。
【００６８】
学習モードが指示されると、CPU503は、学習の完了を判定するためのカウンタpをp=0に初期化し(S611)、カウンタpのカウント値に基づき所定の繰返回数K（≧1）の学習が完了したか否かを判定する(S612)。つまり、p＜Kの場合は学習が未了と判定され処理はステップS613に進み、p=Kになると学習が完了と判定され処理はステップS602に戻り、動作モードの指示入力を待つ。
【００６９】
学習が未了の場合、CPU503は、学習に使用する一枚目の顔画像をDB406からランダムに選択し、選択した顔画像の画像データ401aと当該顔画像の人物IDをRAM505の所定領域にロードする(S613)。そして、上述した信号処理により、一枚目の顔画像の画像データ401aから特徴データを抽出する(S614)。
【００７０】
次に、CPU503は、学習に使用する二枚目の顔画像をDB406から選択し、選択した顔画像の画像データ401bと当該顔画像の人物IDをRAM505の所定領域にロードする(S615)。二枚目の顔画像は一枚目の顔画像を除く顔画像の中からランダムに選択される。そして、上述した信号処理により、二枚目の顔画像の画像データ401bから特徴データを抽出する(S616)。
【００７１】
次に、CPU503は、一枚目の顔画像の人物IDと二枚目の顔画像の人物IDが一致するか否かを判定してラベル405を生成する(S617)。前述したように、人物IDが一致すればラベルY=0、一致しなければラベルY=1が生成される。
【００７２】
次に、CPU503は、二つの特徴データとラベルYを用いて損失L(w)を計算し(S618)、損失L(w)を用いて、勾配降下法により、RAM505に格納した重み係数群を更新する(S619)。そして、カウンタpをインクリメントして(S620)、処理をステップS612に戻す。
【００７３】
●識別モード
図10のフローチャートにより識別処理(S605)を説明する。
【００７４】
識別モードが指示されると、CPU503は、顔認証対象の画像データをRAM505の所定領域にロードし(S631)、当該画像データから顔画像を抽出する(S632)。なお、顔認証対象の画像データが複数の人物の顔画像を含む場合、複数の顔画像が抽出される。
【００７５】
次に、CPU503は、動的アピアランスモデルや動的形状モデルなどを用いて、抽出した顔画像から目、鼻、口などの部位の位置を検出し、検出位置に基づき両目を水平に配置し、かつ、顔画像を所定サイズにする画像変換を前処理として行う(S633)。
【００７６】
次に、CPU503は、上述した信号処理により、顔画像の画像データ（複数の顔画像を抽出した場合は一つの画像データ）から特徴データを抽出し(S634)、特徴データの次元を削減する(S635)。以下では、次元削減後の特徴データを「射影ベクトル」と呼ぶ。
【００７７】
次元削減は、特徴データから識別に効果的な情報のみを抽出して、後段の処理における計算量を少なくする処理である。次元削減は、主成分分析(principal component analysis)や局所保存射影(locality preserving projection)などの予め決定された変換行列を用いて行えばよい。
【００７８】
変換行列は、次元削減後のベクトル空間を規定する基底ベクトルを配置したものである。変換行列を用いて、特徴データを一列に並べた特徴ベクトルを、元の空間から基底ベクトルが規定する空間へと射影する。変換行列は、ROM504やデータ保存部501に格納されていたり、または、プログラムの一部として提供され、初期化処理(S601)においてRAM505にロードされる。
【００７９】
次に、CPU503は、射影ベクトルとDB406に格納された登録データを照合する識別処理を実行する(S636)。登録データは、例えば、登録された顔画像の画像データの射影ベクトル（以下、登録ベクトル）と、当該顔画像の人物IDとを有するデータであり、識別処理の照合用データである。なお、人物IDに関連付けて、当該人物の名前やニックネームなどの文字列データ、および、顔画像の画像データがDB406に登録されている。
【００８０】
識別処理においては、射影ベクトルと登録ベクトルの間の類似度および所定の閾値に基づき、識別対象の顔画像の人物IDを特定する。ここでは、類似度を、次元削減後の特徴空間におけるベクトルの間のユークリッド距離として説明する。この場合、距離が小さいほど射影ベクトルと登録ベクトルは類似すると判定することができ、距離が小さい登録ベクトルに対応する顔画像ほど、識別対象の顔画像に類似すると判定される。
【００８１】
CPU503は、射影ベクトルと登録ベクトルすべての間の距離を計算し、距離が小さい順に登録ベクトルをソートする。ソート後、先頭の登録ベクトルと射影ベクトルの間の距離（最小距離）を計算し、最小距離Dminと所定の閾値Dthを比較する。最小距離が閾値以下（Dmin≦Dth）であれば、識別対象の顔画像は、先頭の登録ベクトルに対応する人物IDに一致し、登録された顔画像であると判定する。他方、最小距離が閾値よりも大きい（Dmin＞Dth）場合、識別対象の顔画像は未登録と判定する。なお、未登録の顔画像の場合、例えば、未登録人物に対応する所定のID値を識別対象の顔画像の人物IDとする。
【００８２】
次に、CPU503は、識別処理によって得た人物IDを識別対象の顔画像に関連付けてRAM505に格納する(S637)。RAM505に格納された顔画像には、顔認証結果を表示するための情報（例えば、顔認証対象の画像データにおける顔画像の位置とサイズなど）が関連付けられて保存されている。
【００８３】
CPU503は、ステップS638の判定により、顔認証対象の画像データから抽出した顔画像すべての識別処理が終了するまで、ステップS634からS637の処理を繰り返す。そして、顔画像すべてについて識別処理が終了すると、識別結果を顔認証結果として出力し(S639)、処理をステップS602に戻し、動作モードの指示入力を待つ。
【００８４】
図11により顔認証結果の出力例を示す。RAM505に保存されている顔認証対象の画像データ、各顔画像の位置とサイズ、顔画像の人物IDに基づき、図11に示すような顔認証結果を示す画像を生成して表示部507に表示する。図11は、顔認証対象の画像データにおける各顔画像の領域を矩形枠で表し、矩形枠の上部に当該顔画像に関連する文字列を表示した出力例である。
【００８５】
顔認証結果の出力は表示部507への表示に限らず、顔認証対象の画像データ、顔画像の位置とサイズ、顔画像の人物IDなどを関連付けて、データ保存部501に保存してもよい。さらに、顔認証結果を通信部502を介して外部の機器に送信してもよい。
【００８６】
また、顔認証対象の画像データから抽出したすべての顔画像について識別処理が終了した後、顔認証結果を出力する例を説明したが、顔画像ごとの識別処理が終了する都度、顔認証結果を出力してもよい。
【００８７】
また、識別精度を高めるために、前処理(S623)において、両目を水平に配置し、かつ、所定サイズにする画像変換を行う例を説明した。しかし、例えば、精度は多少低下してもよいが、顔認証速度の向上や顔認証処理のリソース削減を図るシステム要件がある場合など、前処理(S623)を省略してもよい。
【００８８】
●登録モード
前述したように、登録データは、例えば、登録された顔画像の画像データの射影ベクトル（登録ベクトル）と、当該顔画像の人物IDとを有するデータである。好ましくは、名前やニックネームなどの文字列データが人物IDに関連付けられて登録されている。
【００８９】
図12のフローチャートにより登録処理(S606)を説明する。
【００９０】
登録モードが指示されると、CPU503は、登録対象の顔画像の画像データをRAM505の所定領域にロードし(S651)、当該画像データから顔画像を抽出し(S652)、抽出した顔画像を矩形枠で囲った画像を表示部507に表示する(S653)。なお、登録対象の画像データが複数の人物の顔画像を含む場合、複数の顔画像が抽出される。
【００９１】
ユーザは、表示画像を参照し、入力部506を操作して、登録すべき顔画像を選択する(S654)。その際、ユーザは複数の顔画像を選択することができる。また、もし登録したい顔画像が存在しない場合は、次の顔画像の画像データの入力を指示することができる。
【００９２】
次に、CPU503は、識別モードにおけるステップS633-S635の処理と同様に、ユーザが選択した顔画像の画像データに前処理を施す(S655)。そして、顔画像の画像データ（複数の顔画像が選択された場合は一つの画像データ）から特徴データを抽出し(S656)、特徴データの次元を削減した射影ベクトルを生成する(S657)。
【００９３】
次に、CPU503は、既に登録されている人物ID（または人物IDに関連付けられた文字列データ）を表示部507に表示する(S658)。好ましくは、人物ID（または文字列データ）に対応する顔画像も表示する。ユーザは、表示を参照し、入力部506を操作して、選択した顔画像に該当すると思われる人物ID（または文字列データ）を指定するか、選択した顔画像に該当する人物ID（または文字列データ）が存在しない旨を入力する(S659)。
【００９４】
CPU503は、人物IDが指定されたか否かを判定し(S660)、選択した顔画像に該当する人物IDが存在しない旨が入力された場合は、新たな人物IDを発行する(S661)。そして、指定された人物IDまたは発行した人物IDに射影ベクトルを関連付けた登録データをDB406に格納する(S662)。
【００９５】
CPU503は、ステップS663の判定により、ユーザが選択した顔画像すべての登録処理が終了するまで、ステップS656からS662の処理を繰り返す。そして、顔画像すべてについて識別処理が終了すると、処理をステップS602に戻し、動作モードの指示入力を待つ。
【００９６】
上記では、学習処理と顔認証処理の流れの違いが分かる好適な例として、学習処理と識別処理、登録処理を一つの機器またはプログラムによって実行する例を説明した。しかし、事前の学習処理によって重み係数群が用意され、それを別の機器やプログラムが参照して識別処理や登録処理を実行する構成も可能である。
【００９７】
このように、LBPのような画素間の大小関係を表すビット列を値に変換して生成される特徴量において、スカラ値への変換に使用するパラメータ（重み係数群）を学習することで、低次元かつパターン識別の対象に適した特徴量を抽出することが可能になる。
【実施例２】
【００９８】
以下、本発明にかかる実施例2の情報処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００９９】
図13のブロック図により実施例2における信号処理部を説明する。
【０１００】
二分木処理部901は、処理対象領域108に二分木処理を施して二次元データの二値化処理結果902a-902cを生成する。特徴データ生成部107は、二値化処理結果902a-902cそれぞれに重み係数群w0-w2を乗算し、乗算結果を加算処理して、二次元データの特徴データ104を生成する。なお、二値化処理結果902a-902cから特徴データ104を生成する処理と、重み係数群の学習方法は実施例1と同様である。
【０１０１】
図14により二分木処理を説明する。実施例2では、すべてのノードが葉か二つの子をもち、かつ、すべての葉が同じ深さである完全二分木を使用する。図14に示す二分木は深さが「3」、葉の数が「8」の完全二分木である。
【０１０２】
二分木処理は、入力データについて、根ノード1001から葉ノード1004a-1004hに到達するまで、順に、二つの子ノードの何れに分岐するかを判定する。実施例2では、子ノードをもつ各ノード（1001、1002a-1002b、1003a-1003d）それぞれについて、式(2)における参照画素の相対位置を予め設定しておく。
【０１０３】
データが入力されると、各注目画素(x, y)について、式(2)により注目画素と参照画素の間の差分rnを計算する（局所演算処理）。そして、式(3)に示すステップ関数処理の結果に基づき、分岐先を判定する（つまり、何れの子ノードに分岐するかを判定する二値化処理）。図14に示す例は、ステップ関数処理の結果が‘0’の場合は左の子ノードに、‘1’の場合は右の子ノードに進む。
【０１０４】
葉ノード1004a-1004hに到達すると、すべての判定結果を並べたバイナリ列を生成する。図14に破線矢印で示す例においてバイナリ列は‘001’になる。そして、生成したバイナリ列の各要素を図13に示す二値化処理結果902a-902cの座標(x, y)における画素値とする。
【０１０５】
このように、二分木の各階層における分岐の判定結果に対する重みを学習することにより、低次元かつパターン識別の対象に適した特徴量を抽出することができる。
【０１０６】
［変形例］
上記では、二次元の画像データに対して、上述した信号処理を適用する例を示したが、三次元以上のデータに対して、あるいは、音声信号などの一次元のデータに対しても本発明を適用することができる。つまり、様々な次元の入力データにおける処理対象領域内の注目データの近傍の複数データを用いて演算処理を行い、上述した信号処理を適用すればよい。
【０１０７】
上記では、処理対象領域が一つの例を説明したが、処理対象領域の数は一つに限らず、複数の処理対象領域を設定し、処理対象領域おとに異なる重み係数群を設定してもよい。
【０１０８】
図15により複数の処理対象領域の設定例を説明する。図15は、左目領域1201、右目領域1202、鼻領域1203、口領域1204の四つの処理対象領域を設定する例を示す。これら四つの処理対象領域に対して、上述した学習手法を適用することにより、各処理対象領域に適切な重み係数群を決定することができる。ただし、左目領域1201と右目領域1202のように、特性が類似する領域については、それらを区別せずに重み係数群を学習し、得られた重み係数群をそれら領域に適用してもよい。
【０１０９】
上記では、二値化処理として式(3)に示すステップ関数を使用する例を説明したが、二値化処理として下式に示すパルス関数を用いてもよい。
if (|t| ≧ Th)
p(t) = ‘1’；
else
p(t) = ‘0’；        …(10)
ここで、tは局所演算結果、
Thは所定の閾値。
【０１１０】
ステップ関数を用いる場合、局所演算結果≧0であれば‘1’、局所演算結果＜0であれば‘0’である。つまり、実施例1、2で説明したように、局所演算が注目画素と参照画素の大小比較である場合、参照画素値≧注目画素値であれば‘1’、参照画素値＜注目画素値であれば‘0’になる。
【０１１１】
これに対して、パルス関数を用いる場合、局所演算結果の絶対値≧閾値であれば‘1’、絶対値＜閾値であれば‘0’とする。つまり、注目画素値と参照画素値の差分絶対値が、閾値以上であれば‘1’、閾値未満であれば‘0’になる。そのため、画素値の大小関係よりも、画素値の差分に注目する場合はパルス関数の利用が有効である。
【０１１２】
また、局所演算処理として二つの画素値の比を計算し、パルス関数を用いて二値化してもよい。画像データ全体の値のレベルが変化（例えば明度の増減）しても、画素値の比は変化しないため、画素値の比を用いると画像データ全体の値のレベルの変化に依らず、同一の処理結果が得られる利点がある。
【０１１３】
また、上記では、局所演算処理として入力画像データの注目画素と参照画素の画素値を比較する例を説明したが、これに限られない。注目画素を使用せずに、注目画素に対して所定の位置にある二つの参照画素を比較してもよい。図16により二つの参照画素を比較する例を示す。あるいは、注目画素および参照画素の画素値と所定の固定値の四則演算（加算、減算、乗算、除算）を実行してもよい。また、注目画素および参照画素の画素値の絶対値を計算してもよい。
【０１１４】
また、上記では、局所演算処理において、入力画像データの画素値を比較する例を説明したが、一画素の画素値の代わりに、m×m画素領域の画素値の平均値を使用してもよい。
【０１１５】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１１６】
105a-105c … 演算処理部、106a-106c … 二値化処理部、107 … 特徴データ生成部、109 … 学習部
【図１】
2015185042.tif 000003
【図２】
2015185042.tif 000004
【図３】
2015185042.tif 000005
【図４】
2015185042.tif 000006
【図５】
2015185042.tif 000007
【図６】
2015185042.tif 000008
【図７】
2015185042.tif 000009
【図８】
2015185042.tif 000010
【図９】
2015185042.tif 000011
【図１０】
2015185042.tif 000012
【図１１】
2015185042.tif 000013
【図１２】
2015185042.tif 000014
【図１３】
2015185042.tif 000015
【図１４】
2015185042.tif 000016
【図１５】
2015185042.tif 000017
【図１６】
2015185042.tif 000018