稀疏表示与人脸识别、人脸表情识别实验

http://chentingpc.me/article/article.php?id=491

如果把多个不同类的同种对象放入一个大型库中,那么当你需要把未知的一个实例进行分类的话,实际上你可以用大型库中每个样本的线性组合来描述,并且,最合适的描述一定是稀疏的,大多数项的系数都是零值或接近零值,直白但不严格的理解就是同一类的部分对象才是用来描述新来同类对象的主要“参与者”。基于这种思想,可以用稀疏表示来做分类(Sparse coding for recognition)。具体算法是SRC算法[1],先建立超完备的子空间A,然后解L1最优化问题[2],接着重构并观察残差,当残差呈现一类特别小其他类特别大的时候,就是残差最小的那一类,如果呈现比较均衡且都很大的情况,就表明测试对象根本不属于数据库中的这个种型(比如拿电视机放到人脸数据库训练出来的SRC来跑,就会算出这种结果,说明被测对象不是人脸)。这个方法很神奇的,优化L1就可以解出最近似的表示,实在奇特,难怪参考文献[2]中的l1优化算法叫做l1-magic。SRC形式化表述:

oOk. Let's begin our Exp journey:

Exp 1.

基于JAFFE数据库,按人来分成10类,每个人二十来张,共7类表情。预处理,截取出脸部116X156。

构建出来的A矩阵mX212,m是降采样后的分辨率值,由于稀疏约束,m最好远小于212,但太小又会是图片过于失真,因此有一个度的把握。

测试图像:

KA

她在数据库中的其他图像(此处截图缘故,少截了一张张口惊讶的表情,在下一个试验中有):

KA except the-mouth-open-surprise one

图片降采样4X5 : 8X10 12X15时的重构残差(再大的分辨率就报错了,那就成超定方程而不是欠定方程了):

可以看出,识别的效果非常好,全部都正确的识别到了正确的分类。他们各自对应的稀疏系数为:

可以看出,随着分辨率不断升高,矩阵A越来越不扁平,系数也越来越不稀疏,识别效果最好的是最稀疏的。事实上,由于版面篇幅问题,我还做了2X3,3X4等没有截图的部分,发现,只要A矩阵的横纵比在3:1以上,对于这个实验,效果都非常不错(一个正确的低峰其他都是高峰,没有任何歧义)。

事实上,仔细观察这个测试图像在人脸库中是有比较接近的图像与其对应的,如果表情变化的“力度”比较大呢,实验结果如何?

Exp 2.

在Exp 1.基础上用了大表情尺度的图片作为测试对象(测试对象在训练图库的类别中没有相同表情的图片,也即是没有张嘴瞪眼的图),同样图片全部降采样的4X5:

 

KA                             YM

重构残差分别是:

相当理想!

嘿嘿,邪恶的想法诞生了,给它来几笔吧,测测鲁棒性(对不起了KA姐姐,你为科学献身了,这个做法或许不是很妥当,但郑重声明没有对任何人的任何侮辱!No insult, with all respect):

看看重构结果:

你相信吗?第一张还是被认出来了,第二张失败了。再回顾一下大致算法,降采样,优化L1,重构,识别,就这么简单几步居然这么鲁棒。Unbelievable!

Exp 3.

在上面的基础上,把上面实验的jaffe数据库不进行人脸剪裁进行同样实验(其他条件不变,测试图像仍然是KA姐姐的张嘴图)。

不剪裁的图示例:

exp 3.1 训练图、测试图都不剪裁:

训练图中不含有以及含有测试图片(含有也是一个剪裁过一个没剪裁过的)的重构残差:


第一个虽然识别对了但是不理想,说明背景(即便背景都很相似)的影响还是蛮大的。第二个当然完美识别出来了。

exp 3.2 训练图剪裁、测试图不剪裁:

训练图中不含有以及含有测试图片(含有也是一个剪裁过一个没剪裁过的)的重构残差:

很遗憾,都识别错了。

exp3.3 训练图不剪彩、测试图剪裁:

训练图中不含有以及含有测试图片(含有也是一个剪裁过一个没剪裁过的)的重构残差:

虽然都能正确识别,但是显然效果不好,因为低峰较多且不唯一。

exp3.4 剪裁,但是不对齐

上几个实验结果引起了我的好奇,背景和大小不对齐是存在影响的,那空间不对其会怎样呢?

基于剪裁的训练图,测试图如下:

为了比较,原对齐图(在训练图库中未出现)为:

重构的残差分别是:

前两个都识别错误了,第三个勉强正确。当然,由于测试图的表情(惊讶)在训练图的KA此人类别中并未出现,所以识别的难度本身就比较大,因此对于对齐的要求也比较高。

Exp 4.

上面都是基于人脸的身份识别,现在尝试下表情识别,做法跟Exp 1.类似,都是用剪裁过后的测试图与训练图,为了排除身份的影响,将被测对象的所有图片都从训练图库中去除。

测试图:

分别对应重构残差(纵轴依次为:anger disgust fear happy neutral sad surprise):

正确率很一般,就算正确也是差强人意的(低峰不唯一)。

如果用真实环境中采样来的图片(经过手工剪裁后)来做实验,更是要糟糕,识别率接近random,可见表情识别比身份识别要难做得多。

Conclusion

总的来说Spare coding是个很强大很鲁棒很神奇的东西。

在人脸识别中,对表情变化、光照和遮挡都有不错的效果(Exp 2.),但是对于对齐有一定的依赖(Exp 3.),实验效果很不错(尤其在训练总样本近两百左右的训练集来说),而且还是在没有任何特征提取的前提下(当然,[1]中已经证明足够稀疏,特征提取已经不重要)!

但在人脸表情识别中,单纯的移植人脸识别的做法却十分差强人意(Exp 3.),特别当测试对象延伸到训练对象(不同表情的测试者未在测试表情中出现)以外。


Reference:

[1] Robust Face Recognition via Sparse Representation.  IEEE TRANS. PAMI, MARCH 2008.

[2] l1-magic: Recovery of Sparse Signals via Convex Programming


http://chentingpc.me/article/article.php?id=491
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值