
固有顔( / ˈ aɪ ɡ ən -/ EYE -gən- ) は、コンピュータビジョンの人間の顔認識問題で使用される固有ベクトルの集合に付けられた名前です。[ 1 ]認識に固有顔を使用するアプローチは、Sirovich と Kirby によって開発され、Matthew TurkとAlex Pentlandによって顔分類に使用されました。[ 2 ] [ 3 ]固有ベクトルは、顔画像の高次元ベクトル空間上の確率分布の共分散行列から導出されます。固有顔自体は、共分散行列の構築に使用されるすべての画像の基底セットを形成します。これにより、より小さな基底画像のセットが元のトレーニング画像を表現できるようになるため、次元削減が実現されます。分類は、基底セットによって顔がどのように表現されるかを比較することによって達成できます。
固有顔アプローチは、顔画像の低次元表現の探索から始まりました。SirovichとKirbyは、主成分分析を顔画像のコレクションに適用して、一連の基底特徴を形成できることを示しました。[ 2 ]固有画像として知られるこれらの基底画像は、線形結合して元のトレーニングセットの画像を再構成できます。トレーニングセットがM個の画像で構成されている場合、主成分分析はN個の画像の基底セットを形成できます。ここで、N < Mです。再構成誤差は固有画像の数を増やすことで減少しますが、必要な数は常にMより小さく選択されます。たとえば、M個の顔画像のトレーニングセットに対してN個の固有顔を生成する必要がある場合、各顔画像はすべてのK個の「特徴」または固有顔の「割合」で構成されていると言えます。顔画像1 = (E 1の23%) + (E 2の2% ) + (E 3の51% ) + ... + (E nの1% )。
1991年、M. TurkとA. Pentlandはこれらの結果を拡張し、顔認識の固有顔法を発表しました。[ 3 ]彼らは固有顔を用いた自動顔認識システムの設計に加えて、当時のコンピュータが多数の顔画像に対して固有値分解を実行できるように、共分散行列の固有ベクトルを計算する方法を示しました。顔画像は通常高次元空間を占め、従来の主成分分析はこのようなデータセットでは扱いが困難でした。TurkとPentlandの論文は、ピクセル数ではなく画像数でサイズが決められた行列に基づいて固有ベクトルを抽出する方法を示しました。
いったん確立されると、固有顔法は精度を向上させるための前処理法を含むように拡張されました。[ 4 ]また、さまざまな被験者[ 5 ] [ 6 ]や目などのさまざまな特徴[ 7 ]の固有顔のセットを構築するために、複数の多様体アプローチも使用されました。
固有顔のセットは、さまざまな人間の顔を描いた多数の画像に対して主成分分析(PCA)と呼ばれる数学的処理を実行することによって生成できます。非公式には、固有顔は、多数の顔写真の統計分析から導き出された「標準化された顔の要素」のセットと考えることができます。人間の顔は、これらの標準顔の組み合わせであると考えることができます。たとえば、ある人の顔は、平均的な顔に固有顔1の10%、固有顔2の55%、さらには固有顔3の-3%を加えたものから構成されている可能性があります。驚くべきことに、ほとんどの顔を適切に近似するために、多くの固有顔を組み合わせる必要はありません。また、人の顔はデジタル写真ではなく、値のリスト(使用されるデータベース内の各固有顔に対応する1つの値)として記録されるため、各人の顔に必要なスペースははるかに少なくて済みます。
生成される固有顔は、特定のパターンで配置された明暗の領域として現れます。このパターンによって、顔のさまざまな特徴が抽出され、評価および採点されます。対称性、顔の毛のスタイル、生え際、鼻や口の大きさなどを評価するためのパターンがあります。他の固有顔には、識別が容易ではないパターンがあり、その固有顔の画像は顔とはほとんど似ていない場合があります。
固有顔を作成し、それを認識に利用する技術は、顔認識以外にも、手書き文字認識、読唇術、音声認識、手話/手振り解釈、医用画像解析などにも用いられています。そのため、固有顔という用語を使わず、「固有画像」という用語を用いる人もいます。
固有顔のセットを作成するには、次のことを行う必要があります。
これらの固有顔は、既存の顔と新しい顔の両方を表現するために使用できます。新しい(平均値を差し引いた)画像を固有顔に投影することで、その新しい顔が平均顔とどのように異なるかを記録できます。各固有顔に関連付けられた固有値は、トレーニングセット内の画像がその方向で平均画像からどれだけ異なるかを表します。画像を固有ベクトルのサブセットに投影すると情報が失われますが、固有値が最も大きい固有顔を保持することで損失を最小限に抑えることができます。たとえば、100 × 100 の画像を扱うと、10,000 個の固有ベクトルが生成されます。実際のアプリケーションでは、通常、100 ~ 150 個の固有顔への投影を使用してほとんどの顔を識別できるため、10,000 個の固有ベクトルのほとんどを破棄できます。
以下は、Extended Yale Face Database B を使用して固有顔を計算する例です。計算とストレージのボトルネックを回避するために、顔画像は 4×4=16 倍にサンプリングされます。
clear all ; close all ; load yalefaces [ h , w , n ] = size ( yalefaces ); d = h * w ; % 画像のベクトル化x = reshape ( yalefaces , [ d n ]); x = double ( x ); % 平均を減算mean_matrix = mean ( x , 2 ); x = bsxfun (@ minus , x , mean_matrix ); % 共分散を計算s = cov ( x ' ); % 固有値と固有ベクトルを取得[ V , D ] = eig ( s ); eigval = diag ( D ); % 固有値を降順にソートeigval = eigval ( end : - 1 : 1 ); V = fliplr ( V ); % 平均値と1番目から15番目の主固有ベクトルを表示figure , subplot ( 4 , 4 , 1 ) imagesc ( reshape ( mean_matrix , [ h , w ])) colormap gray for i = 1 : 15 subplot ( 4 , 4 , i + 1 ) imagesc ( reshape ( V (:, i ), h , w )) end共分散行列Sは多くの固有顔を生成しますが、顔の大部分を表現するにはそのうちのごく一部しか必要ありません。例えば、すべての顔画像の全変動の95%を表現するには、最初の43個の固有顔だけで十分です。この結果を計算するには、次のコードを実装してください。
% 総分散の 95% を表すために必要な主成分の数を評価します。eigsum = sum ( eigval ); csum = 0 ; for i = 1 : d csum = csum + eigval ( i ); tv = csum / eigsum ; if tv > 0.95 k95 = i ; break end ; end ;画像の共分散行列に対して直接 PCA を実行することは、多くの場合、計算上実現不可能です。たとえば 100 × 100 ピクセルの小さな画像を使用する場合、各画像は 10,000 次元空間の点であり、共分散行列S は 10,000 × 10,000 = 10 8個の要素を持つ行列です。ただし、共分散行列のランクはトレーニング例の数によって制限されます。トレーニング例がN個ある場合、非ゼロの固有値を持つ固有ベクトルは最大でN − 1 個になります 。トレーニング例の数が画像の次元よりも小さい場合、主成分は次のように簡単に計算できます。
T を前処理済みのトレーニング例の行列とし、各列には平均減算された画像が 1 つ含まれるとする。共分散行列は S = TT T として計算でき、Sの固有ベクトル分解は次のように与えられる。
しかし、TT Tは大きな行列であり、代わりに固有値分解を取ると
すると、方程式の両辺にTを左から掛けると、次の式が得られることがわかります。
つまり、u i がT T Tの固有ベクトルであれば、v i = Tu iはSの固有ベクトルになります。100 × 100 ピクセルの画像が 300 枚あるトレーニング セットの場合、行列T T Tは 300 × 300 行列となり、10,000 × 10,000 の共分散行列よりもはるかに扱いやすくなります。ただし、結果として得られるベクトルv iは正規化されていないことに注意してください。正規化が必要な場合は、追加の手順として適用する必要があります。
Xを とします。列を持つデータ行列平均値を減算した画像ベクトルとして。次に、
Xの特異値分解(SVD)を次のように定義する。
次に、固有値分解はは:
したがって、以下のことが容易にわかる。
データ行列Xに対してSVDを使用する場合、固有顔を得るために実際の共分散行列を計算する必要はありません。
顔認識は、固有顔の作成動機となった。この用途において、固有顔はシステムの速度や効率性など、他の利用可能な技術よりも優れている。固有顔は主に次元削減手法であるため、システムは比較的少ないデータセットで多くの被写体を表現できる。顔認識システムとしては、画像サイズの大きな縮小に対しても比較的安定している。ただし、認識対象画像とプローブ画像との差異が大きい場合は、認識精度が著しく低下する。
顔認識を行うために、システムが認識したギャラリー画像は、各固有顔がその画像にどれだけ寄与しているかを示す重みの集合として保存されます。分類のために新しい顔がシステムに提示されると、その画像を固有顔の集合に投影することで、その顔自身の重みが求められます。これにより、プローブ顔を記述する重みのセットが得られます。これらの重みは、ギャラリーセット内のすべての重みと比較され、最も近い一致が見つかります。最近傍法は、 2つのベクトル間のユークリッド距離を求める単純なアプローチであり、最小値が最も近い対象として分類されます。[ 3 ]: 590
直感的に言えば、固有顔法による認識プロセスは、クエリ画像を計算された固有顔によって張られる顔空間に投影し、その顔空間内で顔クラスに最も近い一致を見つけることである。
各ギャラリー画像の重みは、その画像自体を説明する情報のみを伝え、被写体を説明する情報は伝えません。正面からの光の下で撮影された同一被写体の画像は、強い左側からの光の下で撮影された同じ被写体の画像とは、重みが大きく異なる場合があります。このため、このようなシステムの適用範囲は制限されます。Eigenfaceの原著論文における実験では、光の変化に対して平均96%、向きの変化に対して85%、サイズの変化に対して64%という結果が得られました。[ 3 ]: 590
固有顔法にはさまざまな拡張が行われてきました。固有特徴法は、顔の特徴間の距離を測定する顔計測値と固有顔表現を組み合わせたものです。Fisherfaceは線形判別分析[ 9 ]を使用し、照明や顔の姿勢の変化に対する感度が低くなっています。Fisherfaceはラベル付きデータを使用して、次元削減段階でクラス固有の情報をより多く保持します。
固有顔やフィッシャー顔に代わるもう一つの手法として、アクティブアピアランスモデルがあります。この手法では、アクティブシェイプモデルを用いて顔の輪郭を記述します。多数の顔の輪郭を収集することで、主成分分析を用いて、様々な顔のバリエーションを包含するモデルの基本セットを構築することができます。
現代の多くの手法では、次元削減の手段として、あるいはさまざまな変動モードの基底画像を形成する手段として、依然として主成分分析が用いられている。
Eigenfaceは、顔認識を実現するための比較的シンプルな方法を提供します。
しかし、固有顔法の欠点も明らかである。
照明による影響に対処するため、実際のところ、固有顔法ではデータセットから最初の3つの固有顔を破棄するのが一般的です。照明は顔画像における最大の変動要因となることが多いため、最初の3つの固有顔は主に3次元照明の変化に関する情報を捉えており、顔認識にはほとんど寄与しません。これらの3つの固有顔を破棄することで、顔認識の精度は大幅に向上しますが、フィッシャーフェイスや線形空間などの他の手法には依然として優位性があります。