dodo:人脸识别方法个人见解

科院网站

http://www.cbsr.ia.ac.cn/Li%20Group/publicationsCH.htmlgoogle的软件picasa汉王公司 
dodo:人脸识别方法个人见解(2008-01-07 20:56:37) 
dodo:人脸识别方法个人见解 (此贴最开始于 2007-6-23 19:50 发表在 prfans.com 上) dodo TPAMI = IEEE Transactions on PAMI 这个杂志
PAMI  是指 pattern analysis and machine intelligence这两个领域

1)PCA和LDA及其相关方法
Eigenfaces和Fisherfaces无疑是人脸识别中里程碑式的工作。就使用的方法而言,PCA和LDA都不是新方法,但是他们都是被第一次十分明确的用在人脸识别中的方法。之所以说"十分明确",是因为就发表的时间来看,这两个论文都不是首次把这两个方法用在PAMI相关的分类识别中。这给我们一个小小的启示:一个新的方法专注于解决一个具体的问题可能会带来更大的影响,虽然这个方法具有一般性。

在现在人脸识别的方法中,这两个方法也是follow的人最多的。究其原因,除了其有效性之外,简单是其最大的特点。纵观PAMI历史风云,能经受住时间考验而流传下来的方法,除了有效之外一般都有两个特点其一:1)简单(PCA, LDA, K-Means, Normalized Cuts etc.);2)复杂,但是解决一个具有一般性而且很难被解决的问题 (在AAM、3d morphable model有深刻影响的Lucas-Kanade算法)。所以如果你的方法一般人都有能力做得到,那就尽量把你的方法做的简单明确。这就是外国人推崇备至的所谓的Ockham's Razor原理(就个人情感而言,我十分讨厌这个名词)。在这里我要强调一点是,这里说的简单并不是说原理简单,Normalized Cuts就方法本身来说简单,但是原理并不简单;微分几何中的Gauss-Bonnet定理形式非常简单,内涵何其丰富。

在此我想多提两句。由于国内有诸多发论文的方法论,其中一个流传下来的一句话就是:系统做的越简单越好,理论做的越复杂越好。不可否认,这句话有它有道理的地方,但是如果用这句话教育后人,误人子弟矣。

后来出现了许多新的与之类似的方法,就TPAMI上发表的来看,比较有代表性就是 HE Xiaofei 的LPP和 YAN Shuicheng 的MFA。关于这两个方法的评论大家可参看j.liu贴中knato的回帖。
在这里我想谈谈我的个人见解。首先这两个方法的出现有它们的意义。LPP是流形学习中Laplacian Eigenmaps线性化,这样无疑会带动其它流形学习方法在识别问题中的尝试,一个为解决问题找到一个思路,二个为进入寒冬的流形学习找到新的用武之地,虽然这两个都不是上档次的思路,但是潜在影响还是有的。后来 YANG Jian 的UDP就是在LPP号召下在TPAMI上的产物。LPP是非监督方法,所以它的识别性能比LDA好的概率极其微弱。
MFA是基于局部数据关系的监督鉴别方法。它有两个最近临近点数量的参数要调。这两个参数是这个方法双刃剑。参数调的好,MFA会比LDA效果好,调的不好则不行。这样MFA用起来比LDA复杂,这样如果MFA的性能比LDA好的有限,而用起来复杂得多的话,它终将被历史所抛弃。
另外就像j.Liu在他的帖子中说出的一样,这些方法有一定的投机性,比如这两篇文章的试验,他们都把Fisherfaces(PCA+LDA)设为c-1,虽然这是按照原始论文的取法,但是是做过这方面工作的人都知道PCA的主元数目如果取得太大,PCA+LDA的性能会显著降低,在WANG Xiaogang的IJCV上的Random sampling LDA中清楚地给出了图形说明。所以他们论文中给出的实验比较不具可信性。

LPP, UDP, MFA都是我们中国人(至少这些方法发表时还都是)为第一作者发表的方法,个人认为其存在有一定的价值,但它们将是PAMI研究发展中的过眼烟云,无法与PCA,LDA相媲美。

2)LDA奇异性问题

众所周知,LDA是基于求解广义特征值问题(Sb*u=Alpha*Sw*u),所以在实际应用时遇到奇异性的问题,就是Sw矩阵不可逆。在人脸识别中解决这一问题的论文“浩如烟海”。这也说明了LDA的影响力之大。在这一类方法中,也有风格之分。

o. PCA 降维
在Fisherfaces中采用的就是先用PCA降维,再用LDA,这也是现在处理这一问题的一般方法。这里有个比较讽刺的事情。Belhumeur在他的论文里说:PCA actually smears the classes together。那末既然smears the classes together,既然PCA破坏类的结构,那为什莫还要用PCA降维?而且事实证明,即使在Sw可逆的情况下,用PCA features也会增强LDA在人脸识别中的性能。这里只能说明,PCA的作用或是PCA features并不是Belhumeur和其以后follow这样说法的人叙述的那样。PCA虽然简单,但是人们应该对它有个正确的认识,这个以后如果有机会再谈。

a. RDA
至今影响最大最实用的还是基于regularization思想的RDA。其实这个问题不仅仅在人脸识别中才被注意到。很早在统计中就被解决过,RDA发表于1989的Journal of the Americal Statistical Association杂志上,可见其久远。在Sw上加一个扰动项也是解决这一问题的最简单方法。

b.子空间投影
论文最多的也就在这一块。应用knato类似的排列组合方法,令image(Sw)和null(Sw)分别表示Sw的列(像)空间和零空间,则我们可很容易的就列出如下组合方法(强调:这里却不是提供给大家发论文的方法论,而是以较形象的方式叙述!)
把样本投影到
aa. image(Sb), bb. null(Sw), cc. image(Sw), dd. image(Sw)+null(Sw), ee. image(Sb)+null(Sw) 可并列可串行, ff. image(St)+null(Sw)
以上每一种组合就代表不止一篇论文,在此就不详细列举了。另外,你还可以把random sampling技术加进来,这样就可以不止翻倍。还有,你还可以把同样的技术用到KPCA KLDA (kFA)上,这样又可翻倍。更进一步,你还可以把ICA,LBP, Gabor features等诸如此类的东西和以上子空间混合,...,子子孙孙无穷尽焉。
这个东西做的最多的是国内的 YANG Jian。另外香港中文大学的 TANG Xiaoou 和他以前的学生 WANG Xiaogang 也做这相关的工作。YANG Jian的工作可以用他在TPAMI上的 KPCA plus LDA 这篇文章来概括,虽然他灌水无数,但就子空间方法而言,他这篇文章还有他发表在国内自动化学报上的那篇长文还是有东西的。如果你想做这一块的工作,值得看一看,是个较为全面的总结。TANG Xiaoou在子空间方面的代表工作(开山之作)就是dual spaces LDA, random sampling (and bagging) LDA, unified subspaces。(在此之后他还有学生一直在做,就不详细列举了。)

我建议想做这一块工作的同学们,要把TANG and YANG的工作烂熟于心,取长补短,相互学习,取其精华,这样可以较为快速而全面地掌握。

c. QR分解
矩阵和数值功底比较好的人,能做得更像模像样。Cheong Hee Park 和 YE Jieping 无疑是这方面的高手。去看看他们在TPAMI,JMLR, 和SIAM的J. Matrix Anal. & Appl上发表的论文可知一二。

d. 相关性
如果Sw可逆,则Sb*u=Alpha*Sw*u可以转化为 inv(Sw)*Sb*u=Alpha*u。那末就可以考察Sw的子空间和Sb子空间的相关性。这方面的代表工作就是Aleix M. Martinez在TPAMI上长文的那个工作。

e. 变商为差
变u'*Sb*u/(u'*Sw*u)为u'*(Sb-Sw)*u。

3)基于图像局部结构的方法

这一类获得广泛认可的方法有Gabor和LBP,另外还有可能有用的SIFT和differential features。
Gabor应用比较早有影响力的代表作就是EBGM。Gabor也是提取用来识别的visual feature的最常用手段。
有无数人因为LBP的极其简单而怀疑它的性能,但是有趣的是最近Ahonen在TPAMI上的短文,就是把LBP应用在人脸识别上,没有任何新的改进,这也说明Reviewer们和editor对这类方法的肯定和鼓励。在非监督feature extraction中,LBP有明显的优势,但是绝对没有达到作者在论文显示的那个水平。在他的论文中,LBP特别weighted LBP效果非常好,这和他们应用的FERET人脸库的人脸crop形式有关。他们应用CSU的椭圆模板来crop人脸,如果应用正方形的模板weighted LBP提高很有限。特别在FRGC Version 2上测试,LBP绝对没有一般监督性的识别方法好。另外这也给我们一个小小启示,就是加个weight其识别性能就能大大提高,这说明什莫问题呢?

另外,LBP对image blocks大小有一定的敏感性,这个是要承认的。但是LBP有一个性能稳定的image blocks,并不是人们认为的histogram要符合一定的统计性等等。这个block size的选取比最优的PCA主元数目的选取要容易得多。当然这些都是小问题。

国内有人做Gabor和LBP的结合。当然是值得探索的,但是我个人认为不应该在这两种方法结合上花费太多精力。完全可以用类似形式考虑别的思路。

4) Sparse representation

NMF和NTF都属于sparse representation的方法,都曾被应用在人脸识别中,但效果都非常有限。特别是NTF,属于数学理论上非常优美,但是实际效果很勉强的典型。

另外,Sparse representation (coding) 是一个很有趣也是很有前途的方法,Sparse representation 有很多方式,关键要看你怎莫用、解决怎样的问题。过段时间我们还有机会再谈。

5)Tensor方法

Tensor在人脸识别中至少到现在为止,还非常得不成功。最典型的就是M. Alex O.Vasilescu在ECCV'02上的tensorfaces。他们对于问题的分析和tensor的对应天衣无缝,非常有道理,数学实现上也同样简单,但是自从那个方法发表出来以后基本无人follow。究其原因,个人认为就是把本来简单的问题复杂化,最重要的就是复杂化以后并没有带来该有的益处。

Alex对tensor的应用是flattening high-way tensor。这是一种常见的处理tensor的方法,这样做的好处就是使tensor好处理易于计算。two-way tensorfaces就是我们理解的Eigenfaces。但是同样是tensor,这种tensor和Amnon Shashua的NTF有着本质的区别。NTF是纯正的tensor思想。但是它实现起来过于复杂,又加上原理比Alex的tensor更复杂,所以无人问津。但是不可否认,它们都是数学上十分优美的方法。如果你想学习tensor而又不想枯燥,我推荐你去看这三篇论文(Shashua两篇)。

6)参数模型
参数模型的应用也多种多样,比如HMM, GMM等。这两个都是一般性的建模方法,所以应用也很庞杂,而且在人脸识别中的应用大多是从speech recognition中的方法转化而来,在此就不多谈。有兴趣的同学们可以参看H. Othman在PAMI上的论文和Conrad Sanderson在PR上的论文。

但是在此其中,最简单的是Baback Moghaddam在TPAMI上那个Probabilistic Subspaces的文章,这个文章也是WANG Xiaogang的unified spaces的参考原本。

7) 3D 模型

代表作是Volker Blanz在TPAMI上的那个文章。不过个人十分不看好。

8)Personal Perspectives

a. 基于子空间的方法很难在实际应用中有所用处

b. 基于找图像局部结构的方法更有希望。像EBGM, LBP, SIFT之类可以给我们很多有益的启示。这点和j.liu的观点一致。

c. 把人脸识别中的方法推广开来,应用到一般的分类和统计问题中,这也是人脸识别衍生出来的一大作用。

d. 由于我们国内的特殊研究环境,大家一般都喜欢做简易快的工作,所以人脸识别这一领域出现有华人名字的论文为数可观。其实在某些压力之下这也无可厚非,但是还是希望我们国人在有条件的情况下,不要以发论文为主,多关注于解决问题本身、尽量向推动理论发展的方向努力。我们绝对有这个能力。君不见,NIPS‘06两篇Best student paper被在国外留学的中国人获得,CVPR'07更是又传来喜讯:Best student paper由清华学生获得,这些都是迹象。我们正处于一个意气风发、大有可为的时代。就本人学术水平和资历来说,绝没有资格来说这些话,这只不过是个人的一点心愿和号召而已,同时更是勉励自己。

以上均是dodo个人拙见,囿于本人才疏学浅,难免出现挂一漏万和观点偏颇的情况,还请大家及时批评指正,以免曲彼误人。谢谢  
 dodo: 人脸识别 II     (此贴最开始于 2007-7-21 20:23  发表在 prfans.com 上) dodo这篇文章是接着《dodo:人脸识别方法个人见解》,这个帖子主要是谈谈在上一篇中没有谈到或是一带而过的问题。和上一篇一样,还是就方法论方法。

1,kernel methods

a. KPCA及其相关

kernel席卷PAMI领域的趋势还在加强。原因很简单,绝大多数的问题都能和kernel挂上钩。在人脸识别里,KPCA和KFA的影响力远不及PCA和LDA。就应用领域来说,KPCA也远没有PCA应用的广泛。YANG Jian在PAMI上的那个KPCA plus LDA就是子空间和kernel结合的典型论文。如果用作一般性的降维KPCA确实会比PCA效果好,特别是你用的feature空间不是一般的欧式空间的时候更为明显。所以,把LDA用在KPCA变换的空间里自然会比用在PCA变换的空间里效果好。
但是就降维来说,KPCA有一个严重的缺点,就是由它不能得到一个可表示的子空间,比如PCA也可以得到一组正交基作为表示基。当然,这也是kernel方法的本质属性导致的。这样就会限制kernel方法的应该范围。举个简单的例子,有人做过用PCA来给SIFT特征降维的方法,也就是那个SIFT+PCA,但他们没有用KPCA+SIFT。就原理上来说,KPCA更适合给SIFT降维,但是在实际应用中,对于SIFT来说,如果需要降维的话,用来降维的东西必须事先学好,PCA就可以事先通过大量的自然图片来学习一个子空间。但是,KPCA做不到。虽然有out-of-sample的方法,但是这种方法有明显的缺点:如果训练样本过大,KPCA的kernel矩阵就很大,这样就很不方便应用,如果过小,效果又不好。其实这也是这类kernel方法的通病(不是一般)。

b. regression

regression也是分类常用的一种方法。CVPR'07就有一篇Kernel ridge regression。
regression用来分类的原理很简单,但是他和传统的LDA等类似的方法有着明显的区别。就ridge regression来说,它就是要找一个变换,使样本在变换后的空间里和他们本身的label尽量接近,那末这个学到的变换就在最小二乘意义下尽量好的刻画了样本空间的类结构。一般的,对变换函数(离散就是向量或是矩阵)做一个l2范数上的限制,美其名曰保证函数的smooth(这个下面还会再谈)。这样就可以得到一个形式上较为美的闭解。其实根本不用kernelizaton,regression本身就可以和kernel直接挂上钩,因为求出来变换矩阵在一定限制下就可以看成kernel矩阵(YE Jieping CVPR‘07的metric learning中就用到了类似的思想)。这个和用graph Laplacian做ranking的方法非常相似。Laplacian(或是其简单变形)的逆矩阵如果是正定的,那末就把这个逆看作kernel矩阵。那末和kernel直接相关的方法和思路就用上来了,特别是learning中,种类繁杂。

把ridge regression核化的全部技术含量就在计算的trick上。由于把样本映射到Hilbert空间中只是一个虚的表示,在出现内积的情况下才能写成现实的表达式,所以对于kernel方法来说,计算上的trick要求就比较高。但是,往往这类trick都是在统计和矩阵早已被解决的问题,所以大部分工作就是怎样用好而已。

像这样“借壳还魂”的做法,在很多理论的研究上都非常重要。我们要达到我们的目的,但是这个东西又不是直接可表达的,那末就可以把它放到一定的空间中,按照这个空间中的基本原理来计算,最后到达一个可以表达的形式,而且是按照你的idea来推导的。这种东西一旦做出来,质量还不低。

2,regularization

虽然名字叫regularization,其实就想谈谈优化目标和优化约束问题。
如果你看了ICML'07,CVPR'07和即将出炉的ICCV'07,你就会发现07年是个不平凡的一年,降维领域有点混乱。或者说自从97年以来一直就没有平静过,都是Fisherfaces惹的祸:)
还记得knato回帖中斗胆列出的排列组合吗?如果不记得暂且去温习一下,因为我要用一把。把knato列出的不同排列组合加上如下regression一个的一个优化
||Y-W'X||^2,
就可以概括所有今年的和这类相关论文的思想。然后,如果你愿意,你还可以衍生出很多。优化目标确定以后,所不同的就是求解方法。你可以带着这个观点再去看一下今年的论文,了然于胸。

由此,线性降维的混乱过程经历了一个小小的转折————从子空间组合到优化目标和优化约束的组合。子空间主要集中在1998--2005(当然还不会消失),后一种在今年可以说是达到一个小小的高潮。如果再加上应用算法的策略,就形成了乱世中的三足鼎立局面。特别是后一种,往往穿插出现,而且有待加强。这其中的代表人物 TANG Xiaoou, YANG Jian, YE Jieping, HE Xiaofei,YAN Shuicheng。导致这一变更的主要因素来源于非线性方法的应用,特别kernel和manifold learning的线性化应用,这其中LPP起了很大的刺激作用。
如果你能站在一个高度(一定范围内)看待这些东西,那末当你面临毕业出国压力时,你就可以“察若水三千,得一瓢饮”来缓解压力。而且还可以尽量饮得好水。(再次郑重声明:这不是发这个帖子的原意。)

3,子空间方法中常用的计算技巧
a.
关于这一块的东西,Stan Z. Li编辑过一个小书挺好的,可以通过下面的网站找到。
http://www.face-rec.org/
不过,我想谈谈规律性的东西。这其中涉及到的东西就是 column (range) space, null space, generalized inverse。这些东西都和QR分解,SVD或是GSVD相关。遇到这些东西,就想起他们准没错。如果你有兴趣,可以看看YE Jieping和Haesun Park关于子空间的论文,都是一个模式。

b. 正交化
从发表的论文来看,对于广义特征值问题,如果求解一组相互正交的基,比B-orthogonal效果要好很多。代表作就是CAI Deng的orthogonal LPP和YE Jieping的 orthogonal LDA。
CAI Deng做了一个orthogonal LPP发在TIP上。他用的就是88年发在TPAMI上的方法,原理一模一样。YE Jieping用的是同时对角化三个矩阵。风格不同,各有长短。个人还是倾向于CAI Deng用的那个方法。

4,Tensor revisited

在上一篇中,我谈了tensor的方法,主要说了tensorfaces和NTF。这里再多说几句。

最近在tensor方面功夫最多的是YAN Shuicheng,最近的TPAMI, TIP, 和 CVPR'07都有他与此相关的文章。这对于发扬和推广tensor的思想和方法确实是个好事情,我是赞同探讨的。
另外,HE Xiaofei和CAI Deng也做过tensor subspace。准确地说,他们只是借用了tensor的概念,他们的方法可以和2D PCA, 2D LDA归为一类。

其实做这一块东西最早的是YANG Jian的一个大师兄,在90年代PR上的工作,后来YANG Jian把它发扬光大,最初的结果就是PR和TPAMI上各一篇短文(2DPCA)。
最早把这类东西以tensor形式呈现的是CV中的大牛Amnon Shashua在01年CVPR上的论文,有兴趣可以看看。不过,大牛终究是大牛,当他听说了NMF以后,NTF立马横空出世(ICML'05)。这个中间的变化是质的跨越,能做出前面那种方法的可以说非常之多,能做出后面那种方法的真是寥寥。这是值得我们好好学习的。
(B.T.W.,Amnon此人并不只是学术了得,其妻子是以色列小姐,again,也值得大家学习的榜样,特别是整天闷头做科研的我们)

在这里要强调的是,我们不能完全否定一些简单的东西,上轨道的或是正宗有深度的方法往往就是这样慢慢做出来的。

5,其它

关于kernel的方法我就是点到而止。在上一个帖子中有人提出说说SVM和Boosting,如果谁有兴趣,可以谈谈。

另外也有人说在上一个贴中我漏掉了Bayesianfaces,实际这个就是我在参数模型中提到的Probabilistic Subspaces方法。有兴趣可以看看。

结束语

纵观PAMI领域困扰纷争,虽然我们达不到“跳出三界外,不在五行中”的境界,但是至少我们可以更好的看清楚这个领域的情况。如果你能站在一个高度看待这些东西,你就有可能认清你自己认为有希望的方向在哪儿,从而更准确地找到自己的目标而少走弯路,或是更好地给自己定位。

写这些东西,就是想帮助了解这一领域的人能全面准确地了解这一块的东西,少走弯路。另外,对于已经谙熟于心的人,激发一个讨论的话题。在上一篇贴子中,看贴的人多,回帖的人少,这个现象可不好。欢迎大家踊跃发言,良性讨论,这样才会带来更多益处,千万不要担心自己是新手,越是新手越需要发言。

俗话说:“乱世出英雄”,当今在PAMI领域正是需要英雄的时机,就是我在I中说的“我们正处在一个大有可为的时代”,希望下次力挽狂澜的是华人的名字。

以上尽是一家之言,欢迎大家批评指正、主动参与讨论。

最后用王羲之的《兰亭序》中的两段话来抒情吧:)

夫人之相与,俯仰一世,或取诸怀抱,晤言一室之内;或因寄所托,放浪形骸之外。虽取舍万殊,静躁不同,当其欣于所遇,暂得于己,快然自足,不知老之将至,及其所之既倦,情随事迁,感慨系之矣。向之,所欣俯仰之间,以为陈迹犹不能不以之兴怀。况修短随化,终期于尽。古人云:死生亦大矣。岂不痛哉!

每览昔人兴感之由,若合一契,未尝不临文嗟悼,不能喻之于怀。固知一死生为虚诞,齐彭殇为妄作。后之视今,亦犹今之视昔。悲夫!故列叙时人,录其所述,虽世殊事异,所以兴怀其致一也。后之览者,亦将有感于斯文。

dodo:人脸识别 III (方向问题)

dodo:人脸识别 III (方向问题)(2008-03-05 12:46:45) 转载 
兼答Williams兄问。http://prfans.com/forum/viewthread.php?tid=265
就像loveisp兄说的,人脸识别中已经解决的问题还很有限。值得研究的问题很多。关键是有没有恒心和能力去做的问题。这里就简单谈谈人脸识别方向问题。
1)detection
face detection 的进展比 recognition 要好。当然前者也是实际应用的基础。
但是就detection来说,现在基本上还都是基于传统框架上的learning方法,新的思维还有待探索。是实际做过这类工作的人都有体会,training不是个容易的过程。比如不基于learning的 saliency maps, attention 等相关领域的方法都会随着时间慢慢渗透到detection中来。有心的人可以留意留意,或是有可能做些引导性的工作。

2)recognition
a. feature extraction
对于face recognition来说,最重要的在于合理的 visual feature 的提取,关于这一点伙伴们在人脸贴中都有讨论过。而就现在可以用的 visual feature extractor 来说,能用的很有限,也就是那几个。现在最常用的也就是 Gabor, LBP。也有用SIFT这类feature作识别的。Gabor有一个缺点就是速度快不了,所以现在在尝试的实际系统中,一般选择LBP:1)能保证一定的效果;2)相对来说,速度快。

有一点值得强调,现在detection和recognition用的feature一般都是不一样的,由于种种原因,现在这两个任务都是独立分开来做的。当然,从实际应用的角度来说,如果两者结合在一起效率会更高。这几年,这类工作也有出现。我认为对做实际应用系统的伙伴们,这类方向值得注意。
b. feature selection and classifier
feature提好之后就是怎么用的问题,一般就用两种选择 1)直接上 classifier 2)做个处理之后在上classifier,比如 feature selection 或是dimensionality reduction。这两个都是脱离于人脸识别之外的一般性问题。
boosting相关的方法和svm相关的方法还是这类问题的首选。feature selection 这一块能做的工作比较多。由于boosting相关思想的有效性,还是这些问题的主题;另外,基本L1的sparse方法会在这一块发挥重要作用。进而会把 combinatorics 的方法和思想引进 feature selection 和 classifier这两个领域中来。这是一个很有潜力的方向,有兴趣的朋友可以看看。论文也很好找,应用Salu兄的 “逐步细化搜索法” ,第次搜索几个关键词就可以了。比如
1) L1 regularization, sparse;  classifier, feature selection,....
2) feature selection, classifier, classification; simplex, complex, polyhedra, polyhedron, ....
然后再在搜到的论文中得到更有用的信息,找更合适的主题。

我建议对这一块比较感兴趣的伙伴们,可以先看看SDP、convex optimization、和 geometric combinatorics 相关的书籍,不一定要细看,开卷有益。

c. face recognition和传统的分类问题并不等价!
不要把传统的基于子空间提取鉴别特征的人脸识别方法当作人脸识别本身
!对于新人来说,这是个误区。那些方法,比如 PCA, LDA, LPP, MFA等等,对于人脸识别来说仅仅能起到锦上添花的作用。准确的说,那些都是和传统分类问题有关的方法,不是人脸识别问题本身。它们有它们的意义,但是不要和人脸识别划等号。
Fisherfaces是人脸识别中的一个影响力非常大的方法。而正是这个方法对人脸识别造成了非常负面的影响。由于现在用子空间方法以人脸识别为主题(甚至为题目)的论文铺天盖地,人们常常误解为那是在解决人脸识别问题!对于真正想解决人脸识别问题的新人来说,这是个非常不好的诱导。
另外,也不要随意认为那些已经成名的大家发的论文就是正确的方向。要广泛听听意见,根据自己的实际考察,然后做出判断。盲从只会迷失方向。

我劝想做人脸识别的伙伴们,在FRGC、FERET这样的大规模人脸库上,自己实际比较一下Gabor、LBP、RDA、Fisherfaces等方法,或是结合应用,心中自然有数。

3) 3D related.
虽然本人不看好三维人脸识别的实际应用前景,但是三维人脸识别在pose变化等情况下确实展现了非凡的能力,而且确实是在做人脸识别问题本身。值得广泛深入探讨。本人在这一块了解有限,不敢妄言。
有兴趣的朋友可以找找相关论文参考参考。有经验的伙伴可以多谈谈。

结束语

1)关于我在《人脸识别》帖子中列出的种种方法,就像我说过的一样,“就方法论方法”。这个帖子算是对前两个帖子在人脸识别问题上的一点补充。
2)由于本人所知有限,写出来的也只是冰山之一角;而且都是些个人理解和观点,仅供伙伴们参考,不要太当回事。
3)写帖子的本意就是想帮助新人们尽快了解相关的领域,但是我们也应该看到另外一面:往往先入为主,把新人诱导到所写的东西上。再次强调,写出来的东西仅仅是作者个人在某些方向上的理解和观点,仅仅当作参考,不要盲从
4)另外,在这一块一直缺少boosting、svm、3d face recognition相关的帖子,还是希望了解的伙伴们能写写。

欢迎伙伴们积极参与讨论,发表意见,共同成长,共同受益。 (本帖在其它论坛和bbs上贴出来时,用的题目是《dodo:人脸识别的方向问题》)

=============================同时下面贴出一篇关于利用稀疏的方式解决人脸识别问题的介绍

文章转载至:http://blog.csdn.net/celerychen2009/article/details/9257275

基于稀疏表示的人脸识别

1.  问题背景

信号的稀疏表示并不是新的东西。我们很早就一直在利用这一特性。例如,最简单的JPEG图像压缩算法。原始的图像信号经过DCT变换之后,只有极少数元素是非零的,而大部分元素都等于零或者说接近于零。这就是信号的稀疏性。

任何模型都有建模的假设条件。压缩感知,正是利用的信号的稀疏性这个假设。对于我们处理的信号,时域上本身就具有稀疏性的信号是很少的。但是,我们总能找到某种变换,使得在某个变换域之后信号具有稀疏性。这种变换是很多的,最常见的就是DCT变换,小波变换,gabor变换等。

然而,这种正交变换是传统视频图像处理采用的方法。目前所采用的一般不是正交变换。它是基于样本采样的。或者说是通过大量图像数据学习得到的,其结果称作字典,字典中的每一个元素称作原子。相关的学习算法称作字典学习。常见的算法例如K-SVD算法。学习的目标函数是找到所有样本在这些原子的线性组合表示下是稀疏的,即同时估计字典和稀疏表示的系数这两个目标。

压缩感知和稀疏表示其实是有些不同的。压缩感知的字典是固定的,在压缩感知的术语里面其字典叫做测量矩阵。但压缩感知的恢复算法和稀疏表示是同一个问题。他们都可以归结为带约束条件的L1范数最小化问题。求解这类泛函的优化有很多种方法。早在80年代,统计学中Lasso问题,其实和稀疏分解的优化目标泛函是等价的。而求解统计学中lasso 问题的LARS算法很早就被提出了,故我们还可以通过统计学的LARS算法求解稀疏表示问题。目前很多统计学软件包都自带LARS算法的求解器。

2. 基于稀疏表示的分类 SRC

人脸的稀疏表示是基于光照模型。即一张人脸图像,可以用数据库中同一个人所有的人脸图像的线性组合表示。而对于数据库中其它人的脸,其线性组合的系数理论上为零。由于数据库中一般有很多个不同的人脸的多张图像,如果把数据库中所有的图像的线性组合来表示这张给定的测试人脸,其系数向量是稀疏的。因为除了这张和同一个人的人脸的图像组合系数不为零外,其它的系数都为零。

上述模型导出了基于稀疏表示的另外一个很强的假设条件:所有的人脸图像必须是事先严格对齐的。否则,稀疏性很难满足。换言之,对于表情变化,姿态角度变化的人脸都不满足稀疏性这个假设。所以,经典的稀疏脸方法很难用于真实的应用场景。

稀疏脸很强的地方在于对噪声相当鲁棒,相关文献表明,即使人脸图像被80%的随机噪声干扰,仍然能够得到很高的识别率。稀疏脸另外一个很强的地方在于对于部分遮挡的情况,例如戴围巾,戴眼镜等,仍然能够保持较高的识别性能。上述两点,是其它任何传统的人脸识别方法所不具有的。

3. 稀疏人脸识别的实现问题

一谈到识别问题,大家都会想到要用机器学习的方法。先进行训练,把训练的结果以模板的形式存储到数据库上;真实应用环境的时候,把测试样本经过特征提取之后,和数据库中的模板进行比对,查询得到一个最相似的类别作为识别结果。往往,机器训练的时间都超级长,几天,几个礼拜乃至几个月,那是常见的事情;识别的时间一般是很小的。典型的例如人脸检测问题。这是可以接受的,因为训练一般都是离线的。

然而,基于稀疏分解的人脸识别是不需要训练的,或者说训练及其简单。基于稀疏表示的人脸识别,其稀疏表示用的字典直接由训练所用的全部图像构成,而不需要经过字典学习【也有一些改进算法,针对字典进行学习的】。当然,一般是经过简单的特征提取。由于稀疏表示的方法对使用什么特征并不敏感。故而,其训练过程只需要把原始图像数据经过简单的处理之后排列成一个很大的三维矩阵存储到数据库里面就可以了。

关键的问题在于,当实际环境中来了一张人脸图像之后,去求解这张人脸图像在数据库所有图像上的稀疏表示,这个求解算法,一般比较耗时。尽管有很多的方法被提出,但是对于实时应用问题,依然没法满足。所以,问题的关键还是归结于L1范数最小化问题上来。

L1范数最小化问题已经有很多种快速求解方法,这里主要包括有梯度投影Gradient Projection,同伦算法,迭代阈值收缩,领域梯度Proximal Gradient,增广拉格朗日方法,这几种方法都比正交匹配追踪算法OMP要高效的多。上述几种快速算法中,采用增广拉格朗日的对偶实现相比其它的快速算法要更好。最近流行的Spit Bregman算法也是不错的选择。

4. 稀疏表示人脸识别的改进算法

稀疏人脸识别算法要用于实际的系统,需要在两方面加以改进。首先,要突破人脸图像的对齐这一很强的假设。实际环境中的人脸往往是不对齐的,如何处理不对其的人脸是额待解决的问题。其实,是快速高效的优化算法。最后,也是最重要,实际环境中的应用往往训练样本很少。目前,研究人员已经取得了很多可喜的成果,下面分别予以介绍。

4.1 CRC-RLS算法

CVPR2011 LeiZhang  Sparse Representatiion or Callaborative Representation: Which helps Face Recognition? 稀疏表示和协同表示,哪一个有助于人脸识别。该文作 者提出了用L2范数代替L1范数求解原问题。这样,能够非常快速的求解问题,实时性没有任何问题。但稀疏性不像原来的L1范数那样强。但作者对分类准则进行了改进,使得其分类性能几乎接近于原始L1范数最小化问题分类性能。为了对比,我把关键性算法列表如下:
 
SRC算法求解的是方程1的解,而CRC-RLS算法则直接给出了表示系数的最小二乘解。二者另外一个主要的不同点在于计算残差的方式不一样,具体请注意上述方程2和方程10的不同点。后者的计算时间较前者最多情况下加速了1600倍。更多的实现细节可以参考原文。

4.2  RSC算法

CVPR2011 Meng Yang,Robost  Sparse Coding for Face Recognition. 鲁棒的稀疏编码算法。该文作者没有直接求解稀疏编码问题,而是求解Lasso问题,因为Lasso问题的解和稀疏编码的解是等价的。在传统的SRC框架下,编码误差使用L2范数来度量的,这也就意味着编码误差满足高斯分布,然而,当人脸图像出现遮挡和噪声污染的情况下,并非如此。在字典学习框架下,这样的字典是有噪声的。该文作者对原始Lasso问题进行改进,求解加权L1范数约束的线性回归问题。Lasso问题描述如下:

加权Lasso问题的目标函数描述如下:

此算法的关键还在于权重系数的确定,文中采用的是logistic函数,而具体的实现则是通过迭代估计学习得到。该方法基于这样一个事实:被遮挡或噪声干扰的像素点赋予较小的权重,而其它像素点的权重相对较大。具体迭代算法采用经典的迭代重加权算法框架,当然内部嵌入的稀疏编码的求解过程。此算法在50%遮挡面积的情况下取得的更好更满意的结果。但是文中没有比较计算时间上的优略而直说和SRC框架差不多。

4.3  RASL算法

CVPR2010. Yigang Peng.  Robust batch Alignment of Images by Sparse and Low-Rank Decomposition. 这篇文章的作者在这篇文章中讨论的是用矩阵的低秩分解和稀疏表示来对齐人脸的问题。

4.4  RASR算法

       PAMI2011 Wagner. Towards a Practical Face Recognition System:Robust Alignment and Illumination by Sparse Representation.该文的目的和RASL类似。

4.5  MRR算法

ECCV2012,Meng Yang. Efficient Misalignment-Robust Representation for Real Time Face Recognition.这篇文章又是Meng Yang的大作。这篇文章在充分分析RASR算法的基础上提出了一个高效的快速算法。该文对人脸对齐中求解变换矩阵T分为由粗到细的两个阶段。 这篇文章把稀疏脸应用在实际系统中推进了一大步。具体算法实现本人正在拜读之中。
对稀疏脸的改进算法其实很多,例如分块SRC算法,表情鲁棒SRC等。但本人认为能够把它推向实际应用的却很少。上述文献是本人认为可圈可点的值得仔细拜读的文献。

dodo:人脸识别方法个人见解(包括稀疏表示方法的理解)相关推荐

  1. 人脸识别经典算法一:特征脸方法(Eigenface)

    这篇文章是撸主要介绍人脸识别经典方法的第一篇,后续会有其他方法更新.特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的.特征脸用到的理论基础PCA在另一篇博客里:特征脸(Eig ...

  2. 人脸识别拷勤门禁主板_捷易讲解AI无感人脸识别考勤门禁终端设备在使用中的维护方法...

    人脸识别考勤门禁终端设备虽然在出厂时,都有做密封处理,但面对细小的灰尘,并没有做到百分百防尘.灰尘对于AI无感人脸识别考勤门禁终端设备是有一定的影响的,他会沉淀在主板上.屏幕上,影响设备散热和正常工作 ...

  3. 人工智能AI系列 - 人脸识别套件列表,包括人脸检测,人脸识别,人脸关键点,人脸比对,人脸搜索等等。

    人脸识别套件列表 打造最好的java开源人脸识别套件,包括人脸检测,人脸识别,人脸关键点,人脸比对,人脸搜索等等. 人脸检测SDK 人脸检测SDK 链接 人脸检测 (含5个人脸关键点) SDK 链接 ...

  4. dodo:人脸识别方法个人见解 (zz)

    广告 我在英国SURREY UNIVERSITY的CVSSP作关于人脸方面的研究,师从英国皇家院士Prof. Josef Kittler http://personal.ee.surrey.ac.uk ...

  5. dodo:人脸识别方法个人见解(三部分汇总)

    dodo的个人主页:sites.google.com/site/zhaodeli/(需要翻墙),新浪博客:blog.sina.com.cn/dodo2pami.原文分3部分,虽然原文是07年左右的文章 ...

  6. dodo:人脸识别方法个人见解zz

    此帖转自http://prfans.com/forum/index.php 看到j.liu关于人脸识别的帖子,萌发写这个帖子的念头.没有别的意思,就是想抛砖引玉,把问题说的全面一点,希望j.liu和回 ...

  7. 人脸识别方法个人见解

    dodo:人脸识别方法个人见解(之一) TPAMI = IEEE Transactions on PAMI 这个杂志 PAMI  是指 pattern analysis and machine int ...

  8. MDFR :基于人脸图像复原和人脸转正联合模型的人脸识别方法

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:AI 科技评论报道 编辑 | 陈大鑫 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可 ...

  9. 人脸识别方法(转载)

    HUNNISH 注:从师弟的网站 www.prfans.com 看到了DODO先生所写的"人脸识别方法之个人见解",感觉收益非浅.本文颇有高屋建瓴的意味,因此在没有经过作者本人的同 ...

最新文章

  1. STM32处理器存储空间布局解析
  2. 继续说invoke伪指令
  3. mybatis动态SQL语句
  4. anaconda3卸载python_python从安装到到数据分析应用高手 Python语言基础知识
  5. C#获取网上图片的宽高代码
  6. 使你的MFC程序具有win7的透明立体风格
  7. Maven常用插件简单配置
  8. 算法进阶之BFS 算法
  9. python函数库 阶跃 信号函数 调用_使用numpy增加阶跃函数中的分辨率
  10. HDU4747 MEX(dp ,递推)
  11. kmplayer音轨切换(换配音)
  12. zabbix监控windows主机网卡流量
  13. 【新星计划】Matlab绘制信号包络线hilbert或者envelope实现
  14. 【蓝桥杯】看完这些,还在担心自己拿不到奖?
  15. 手机通讯录系统(三层架构+JDBC+MySQL)
  16. 腾讯企业邮箱十大优势特点 (浅谈腾讯企业邮箱优点之一二三)
  17. 1、 输入长方形的长和宽,编程求该长方形的周长和面积
  18. 连锁百货企业数据分析系统建设方案
  19. linux 灰度显示grayscale
  20. Matlab中.mat文件的使用操作

热门文章

  1. 王者s19服务器维护,王者S19丨4个必须知道的调整!最后一个不知没法玩!
  2. 容易被误解的inline
  3. 互联网日报 | 2月28日 星期日 | 百世快递回应部分网点倒闭;上汽奥迪明年一季度开始销售;魅族18系列取消附送充电器...
  4. MySQL - 为什么使用B+树做索引结构
  5. liferay mysql_Liferay中搭配MySQL数据库的两种措施
  6. 创业公司的产品经理应该怎么去做?
  7. java QQ客户端
  8. ssh提示IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY解决
  9. matlab实现GPC隐写算法,基于LSB信息隐藏算法的MATLAB实现
  10. java——简易绘图板