通过SVD / PCA计算拟合新图像


16

我正在尝试从Wikipedia 的Eigenface页面复制想法。从数据矩阵表示的一百个样本图像X(每个图像展平为长度为的向量n,因此X100 x n矩阵)中,我计算了SVD分解:

X=UΣVT

因此:

XXT=UΣ2UT

通过取最大的子集q本征模,我可以近似矩阵(让σ1σ2):

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

现在给定一个新的向量y,该向量表示不在的图像X,我如何确定q特征向量的权重U以最好地表示我的新图像y?除病理情况外,此表示是否唯一?

简而言之,我想做的是(来自Wiki页面):

这些特征脸现在可以用来表示现有的和新的面孔:我们可以在特征面孔投影一个新的(均值减去的)图像,从而记录新面孔与平均面孔的区别。

我该如何做投影?


1
未来的读者可能会发现实现有价值。
Emre

Answers:


11

所指的“投影”是矢量投影。要计算向量在向量b上的投影,请使用两个向量的内积ab

aproj=a,bb

在这种情况下,该矢量的分量一个即在于相同的方向 b。在欧几里得空间中,内积运算符定义为其点积aprojab

a,b=ab=i=1naibi

其中是部件的载体中的号码b以及一个b 是本矢量的第分量一个b,分别。直观地,通过计算两个向量的内积,可以发现向量a中有“多少” 沿着向量b的方向移动。请注意,这是一个有符号的数量,因此负值将意味着两个向量之间的角度大于90度,如投影算符的替代定义所示:nabaibiiabab

aproj=|a|cos(θ)b

其中是两个向量之间的角度。θ

因此,给定一个向量和一堆基础向量b i,可以发现“多少a ”在每个基础向量的每个方向上进行。通常,那些基向量将全部相互正交。在您的情况下,SVD是正交分解,因此应满足此条件。因此,要完成您所描述的内容,您将采用特征向量U的矩阵,并使用矩阵的每一列计算候选向量y的内积:abiaUy

pi=yui

从每个内积得到的标量值表示向量y与第i个本征向量“对齐”的程度。由于特征向量是正交向量,因此您可以按如下方式重构原始向量ypiyiy

y=i=1npiui

您问这种表示是否唯一?我不确定您的意思到底是什么,但是就给定向量可以通过投影到任意数量的正交基上可以分解的意义而言,它并不是唯一的。矩阵U中包含的特征向量就是一个这样的例子,但是您可以使用任意其他数目的例子。例如,计算离散傅立叶变换ÿ可以被看作是它投影到不同的频率的复指数矢量的正交基。yUy


很好的回答,谢谢!对于“唯一”,我指的是SVD提供的基础上的唯一。我猜想给定一个正交基准,那么您计算的必须是唯一的-但是如果该基准不是正交的,那么它就可能不是唯一的(因为如果它们不是正交的,那么我们可以找到一个较小的基准集)?y
上钩

yy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.