||
动机
如果两张人脸的对应部分很少甚至没有,如何判断它们是否属于同一个人?
我们人类似乎在一定程度上可以解决这一问题。通过人脸的某些部分,我们可以补全人脸的其他部分。如果拥有足够的先验信息,比如以前曾经见过这个人,那么这种补全的效果甚至还不错(回忆、联想能力)。但对于计算机来说,怎么让它做到这一点?
传统人脸识别方法
-划分patch
-提取patch特征(Gabor/LBP + PCA/FLD)
-计算两人脸对应patch的相似度
-所有patch pair的相似度求和
这种传统方法,显然是做不到刚才所说的在patch对应不上的情况下判断人脸是否相似。在有遮挡的情况下,这种方法计算的相似度会比较离谱。(但是用CCA之后就好了吗?不是仍然有和遮挡区域patch的对应么?而且那种对应计算起来其实也不少。是不是要通过某种手段(比如线性约束,因为别的patch显然都靠谱,只有遮挡区域不靠谱),把遮挡区域计算的相似度去掉?而且CCA的基,要选择线性相关系数大于多少对应的那些基?)
本文方法——训练阶段
-划分patch、提取特征
-在所有训练样本上,计算非对应patch两两之间的关系——典型相关分析(CCA)
-CCA计算得到的关系,是两个patch各自的一组基向量
CCA计算得到的实际上是两组基向量,这两组基向量能够建立两个patch之间的关系,把两个patch映射到同一个子空间下,在这个子空间下,它们的投影方差为1,我们把两个patch分别通过这两组基向量投影到一个共同的子空间下,就可以计算不同patch之间的相似度了。这相当于一个弱分类器。比如右下这张图,我们已经用CCA计算出了上方patch和下方patch的共同子空间,因此我们可以把这两个patch投影到共同子空间并计算相似度,如果它们相似,当然就可以判断两张人脸属于一个人,但只用一对patch显然不会太准确,所以就一对patch而言,它是弱分类器。同样,另外两个patch也可以这样计算。
本文方法——测试阶段
-对测试样本划分patch并提取特征
-对测试样本和某一个训练样本,计算它们之间每一对非对应patch的相似度
-计算测试样本对该训练样本的总相似度
-对每一个训练样本,选出测试样本最可能属于哪个类别
-本文选取与测试样本总相似度最大的那个训练样本的类别,作为测试样本的类别
如果划分了m个patch,那么需要计算相似度的patch对就是m(m-1)个,也就是说,测试样本的每个patch除了和自身位置的patch外,和每一个patch都要计算相似度。
典型相关分析(CCA)
度量两个多维随机变量之间的线性关系
找到两组基向量,使两个随机变量在两组基向量上的投影之间有最大的相关系数,这个相关系数,即为两个随机变量之间线性关系的度量
典型相关分析的应用
-机器翻译
-图像检索中图像和文本的对应
-人的动作和语言的对应
-任何对象的两组特征之间的对应
相关PPT下载详见 “视觉计算研究论坛”「SIGVC BBS」:http://www.sigvc.org/bbs/thread-35-1-2.html
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-23 21:39
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社