SVD / PCA計算からの新しい画像のフィッティング


16

ウィキペディアのEigenfaceページからアイデアを複製しようとしています。数百サンプル画像データで表される行列(各画像は、長さのベクトルに平坦ここで、従ってであるによって行列)、IはSVD分解を計算しました。XnX100n

X=UΣVT

したがって:

XXT=UΣ2UT

最大の固有モードのサブセットを取得することにより、行列を近似できます()。qσ1σ2

Xσ1u1v1T+σ2u2v2T++σquqvqT

ない画像を表す新しいベクトル与えられた場合、新しい画像を最もよく表すために固有ベクトル重み付けを決定するにはどうすればよいですか?病的な場合を除いて、この表現はユニークですか?yXqUy

要するに、私がやりたいことはこれです(wikiページから):

これら固有顔は、現在既存および表現するために使用することができる新たな顔を:我々ができ突出固有顔に新しい(平均減算)画像をすることにより、記録方法、平均面からの新しい顔が異なります。

その投影法をどのように行うのですか?


1
将来の読者は、この実装が価値があると思うかもしれません。
エムレ

回答:


11

参照される「投影」はベクトル投影です。ベクトルの投影を計算するベクターへは、使用内積 2つのベクトルのを:ab

aproj=a,bb

aprojこの場合は、ベクトル成分であると同じ方向にあること。ユークリッド空間では、内積演算子は内積として定義されますab

a,b=ab=i=1naibi

ここで、はベクトルおよびのコンポーネント数、およびはそれぞれベクトルおよびの番目のコンポーネントです。直感的に、2つのベクトルの内積を計算することで、あなたが見つける「どのくらいの」ベクトルベクトルの方向に行く。これは符号付きの量であるため、負の値は、投影演算子の代替定義で示されるように、2つのベクトル間の角度が90度より大きいことを意味します。nabaibiiabab

aproj=|a|cos(θ)b

ここで、は2つのベクトル間の角度です。θ

したがって、ベクトルおよび基底ベクトル束が与えられると、「基底ベクトルのそれぞれの方向に「どれだけの」が入っているかを知ることができます。通常、これらの基底ベクトルはすべて相互に直交します。あなたの場合、SVDは直交分解であるため、この条件は満たされる必要があります。したがって、記述した内容を達成するには、固有ベクトルの行列を取得し、候補ベクトルと各行列の列の内積を計算します。abiaUy

pi=yui

各内積から取得するスカラー値は、ベクトルが番目の固有ベクトルと「整列」するを表します。固有ベクトルは正規直交なので、元のベクトルを次のように再構築できます。piyiy

y=i=1npiui

この表現が一意であるかどうかを尋ねました。正確にはわかりませんが、任意の数の正規直交基底への射影によって特定のベクトルを分解できるという意味では一意ではありません。行列含まれる固有ベクトルはそのような例の1つですが、他の任意の数を使用できます。たとえば、の離散フーリエ変換の計算は、さまざまな周波数の複雑な指数ベクトルの正規直交基底に投影するものと見なすことができます。yUy


すばらしい回答ありがとうございます!「ユニーク」とは、SVDによって与えられる基礎という意味でユニークを意味します。正規直交基底が与えられると、計算するは一意でなければなりません-しかし、基底が正規直交でなければ、そうでないかもしれません)?y
フック

あなたが何を得ているのかまだわかりません。は、新しい画像を抽出したベクトルです。したがって、元の画像と、対応するベクトルを決定するために使用するプロセスと同じくらい一意です。定義によるベクトル空間基底は、線形に独立したベクトルで構成され、相互直交性の特性を強制します。を非直交ベクトルのセットに射影した場合、ベクトルがまたがる空間の基礎となる次元が小さい(基底が小さい)場合、よりコンパクトな表現になる可能性があることに注意してください。yy
ジェイソンR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.