【人脸识别】初识人脸识别

【人脸识别】初识人脸识别

/*Author: cyh_24 */

/*Date: 2014.10.2 */

/*Email: cyh@buaa.edu.cn */

/*More: */

由于导师给我们布置了每周阅读两篇大牛论文,并写ppt的任务。反正ppt都写了,所以我想干脆直接把ppt的内容再整理一下写成博客。近期的阅读论文都是人脸识别相关的主题。

如果你研究过人脸识别,或者对这方面有兴趣,那么你一定听说过Paul Viola。他可以算得上是人脸检测识别的始祖,他的一篇大作《RobustReal-time Object Detection》可以说是人脸识别领域最重要的一篇论文。

本文主要就这篇论文展开,介绍Haar特征,积分图,Adaboost等内容。

1、Haar特征

1.1特征

什么是特征?

想一想我们是如何分辨物体的?更具体一点,你是如何辨别一张图片里面的人脸是一个人脸的?其实很简单,你会去找是不是有眼睛、嘴巴等面部器官。当然这些器官的位置基本是固定的。是否有眼睛,眼睛之间的距离,眼睛跟鼻子的位置关系等等这些都叫特征。选择使用特征的一个重要的原因:基于特征的系统的运行速度要远比基于像素的快。

有的人想,特征什么的谁不知道,但是怎么表示这些特征呢?我要怎么表示、分辨特征呢?

1.2Haar特征

讲haar特征之前,我想先直观地给大家看看haar特征长什么样,下图就是viola等人提出的haar特征:

当然,这只是第一次提出的样子,后来又有很多人对这些图进行了改进,Lienhart等大神后来又提出了下面这些haar特征:

这些图有什么用呢?

,得到的结果就是一个特征值。如下图:

例如:我们都知道,眼睛跟眼窝的颜色不同,眼睛更黑。我们定义一个阈值K,当一张使用(上黑下白)的矩形特征模板进行运算(白色区域的像素和 – 黑色区域的像素和),如果运算的结果>=K时,我们就认为找到了眼睛。

有的人就反对了,凭什么你用一个矩形特征模板运算得到一个结果>=K就算找到眼睛了,万一我这个图像就是一个区域上面是黑的,下面是白的呢?

不要着急,我们再使用第二个矩形特征模板对这块区域进行验证,是不是能增加可靠度呢?如果再用其他的矩形特征模板验证,是不是还可以增加可靠度呢?如果再换个区域,再换个矩形特征模板再验证,是不是还可以增加可靠度呢?

通过改变特征模板的大小和位置,可在图像子窗口中穷举出大量的特征。对于一个给定的24*24像素的人脸图像,根据不同的位置,以及不同的缩放,可以产生160,000个特征。

有这么多的特征,我想这个时候的精确度应该已经很高了,但是同时其他问题也出现了——运算速度。

为了提高运算速度,我们的大神viola又提出了积分图的概念。

2、积分图

积分图是个啥东西呢?

上面提到haar特征计算方法是用白色区域的像素和-黑色区域的像素和,如果是我,我可能会这么做:

1、 找出黑色区域所有像素点,全部加起来=BSum;

2、 找出白色区域所有像素点,全部加起来=WSum;

3、 WSum-BSum;

这么算显然是很笨的,因为有很多值我之前都算过了,重复计算就是无意义的消耗cpu了。

所以viola提出了积分图的概念,算法的思想其实有点像动态规划,就是一次计算,多次使用。实际上,积分图只需要遍历一次图像就可以求出图像中所有区域像素和,大大提高了图像特征值计算的效率。

来看看他究竟是这么做的。还是先放图:

坐标(x,y)的值 = 阴影部分所有像素之和。

积分图构建算法:

s(i,j)=s(i,j-1)+f(i,j)

ii(i,j)=ii(i-1,j)+s(i,j)

积分图构造好之后,图像中任何矩阵区域的像素累加和都可以通过简单运算得到如图所示:

例如:区域D的像素值之和 = (4 + 1 -(2+3))

3、Adaboost

便觉不过如此。也许我们只是想让自己的心去旅行,

【人脸识别】初识人脸识别

相关文章:

你感兴趣的文章:

标签云: