ปรับภาพใหม่ให้เหมาะสมจากการคำนวณ SVD / PCA


16

ฉันพยายามที่จะทำซ้ำความคิดจากหน้า Eigenfaceในวิกิพีเดีย จากภาพตัวอย่างร้อยภาพที่แสดงโดยเมทริกซ์ข้อมูล (ซึ่งภาพแต่ละภาพแบนไปเป็นเวกเตอร์ที่มีความยาวnดังนั้นXคือ100XnX100เมทริกซ์คูณ ) ฉันได้คำนวณการสลายตัวของ SVD:n

X=UΣVT

ด้วยเหตุนี้:

XXT=UΣ2UT

โดยการย่อยของที่ใหญ่ที่สุด eigenmodes ฉันสามารถใกล้เคียงกับเมทริกซ์ (ขอσ 1σ 2 ):qσ1σ2

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

ตอนนี้ได้รับเวกเตอร์ใหม่ซึ่งหมายถึงภาพที่ไม่ได้อยู่ในXฉันจะกำหนดน้ำหนักของQ eigenvectors Uที่จะเป็นตัวแทนของภาพใหม่ของฉันY ? การแสดงนี้มีลักษณะเฉพาะหรือไม่?yXqUy

ในระยะสั้นสิ่งที่ฉันต้องการจะทำคือ (จากหน้า wiki):

eigenfaces เหล่านี้สามารถใช้เพื่อแสดงทั้งที่มีอยู่และ ใบหน้าใบหน้าใหม่ได้ : เราสามารถฉายภาพ (ลบค่าเฉลี่ย) ใหม่บน eigenfaces และบันทึกว่าใบหน้าใหม่แตกต่างจากใบหน้าเฉลี่ยอย่างไร

ฉันจะฉายภาพนั้นได้อย่างไร


1
ผู้อ่านในอนาคตอาจพบว่าการดำเนินการนี้มีค่า
เอ็ม

คำตอบ:


11

"การฉาย" ที่จะเรียกว่าเป็นโปรเจคเวกเตอร์ ในการคำนวณโปรเจคชันของเวกเตอร์บนเวกเตอร์bคุณใช้ผลิตภัณฑ์ภายในของเวกเตอร์สองตัว:ab

aproj=a,bb

ในกรณีนี้เป็นองค์ประกอบเวกเตอร์ของว่าโกหกในทิศทางเดียวกันของข ในพื้นที่แบบยุคลิดผู้ประกอบการผลิตภัณฑ์ด้านในถูกกำหนดให้เป็นผลิตภัณฑ์แบบจุด:aprojab

a,b=ab=i=1naibi

nabaibiiabab. Note that this is a signed quantity, so a negative value would mean that the angle between the two vectors is greater than 90 degrees, as illustrated by an alternative definition for the projection operator:

aproj=|a|cos(θ)b

where θ is the angle between the two vectors.

So, given a vector a and a bunch of basis vectors bi, one can find "how much of a" goes in each of the directions of each of the basis vectors. Typically, those basis vectors will all be mutually orthogonal. In your case, the SVD is an orthogonal decomposition, so this condition should be satisfied. So, to accomplish what you describe, you would take the matrix of eigenvectors U and calculate the inner product of the candidate vector y with each of the matrix's columns:

pi=yui

The scalar value pi that you get from each inner product represents how well the vector y "lined up" with the i-th eigenvector. Since the eigenvectors are orthonormal, you could then reconstruct the original vector y as follows:

y=i=1npiui

You asked whether this representation is unique; I'm not sure exactly what you mean, but it is not unique in the sense that a given vector y could be decomposed by projection onto any number of orthonormal bases. The eigenvectors contained in the matrix U are one such example, but you could use any number of others. For instance, calculating the discrete Fourier transform of y can be viewed as projecting it onto an orthonormal basis of complex exponential vectors of varying frequency.


Great answer thanks! For "unique", I meant unique in the sense of the basis given by the SVD. I'm guessing that given an orthonormal basis, then the y you compute must be unique - but if the basis is not orthonormal then it may not be (since if they weren't orthogonal, then we could find a smaller basis set)?
Hooked

Still not sure what you're getting at. y is the vector that you've distilled your new image down to, so it's only as unique as the original image and the process that you use to determine the corresponding vector. A vector space basis by definition consists of linearly-independent vectors, which forces the property of mutual orthogonality. You do note correctly that if you projected y onto a set of nonorthogonal vectors, you could possibly come up with a more compact representation if the space spanned by the vectors had lesser underlying dimensionality (a smaller basis).
Jason R
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.