机器视觉 增强现实分享 http://blog.sciencenet.cn/u/wanglin193 把算法当成业余爱好......

博文

数码相机中的人脸检测 精选

已有 8144 次阅读 2010-8-15 00:57 |个人分类:人脸检测|系统分类:科研笔记|关键词:实时人脸检测 PCA

市场上许多数码相机带有“人脸识别”功能,拍照的时候通过定位人脸进行准确聚焦。它的工作原理就是实时人脸检测(Face detection)技术,把它称为人脸识别其实是不准确的。检测或者定位是指在一个图像中找到人脸的位置,而识别(Recognition)是要指出这人是张三还是李四。识别是检测的后续步骤,只有当人脸正确定位后,识别才能进行。

在1990年代之前,很多人脸检测的方法是通过提取图像中脸的明显轮廓,比如鼻子眼睛和下巴的轮廓来进行的。比如先对图像进行边缘提取,根据人脸形状为椭圆这一先验知识找到脸部轮廓;或者通过对图像水平和垂直方向的灰度值进行累加(称为积分投影),在一维投影曲线上判断眼睛或者嘴的位置。在人们用计算机进行人脸检测的早期阶段,这样的思路是比较普遍,它看起来和一个普通人对“在图像中怎样找到人脸?”的回答一致:“先找眼睛鼻子或者嘴巴的轮廓......”。也许也有人会回答:“先根据皮肤颜色......”。实际上,形状轮廓,或者肤色都不是很好的检测线索。对于复杂的图像通过设置简单的阈值提取轮廓,很难奏效;而肤色也容易和图像背景颜色相混淆,更何况颜色信息在黑白图像中根本不存在。


进入90年代,随着计算机处理能力不断增强,进行图像处理运算的门槛大大降低了。人们在一台普通的PC上也可以进行人脸检测和识别算法的研究,大量人脸识别和检测的相关算法涌现出来。人脸检测方法也从之前的基于形状轮廓的思路,转向基于图像的方法。

数字图像处理通常把一个图像表达成矩阵的形式,一幅黑白图像矩阵中每个元素(称为像素)用8Bit(可表达0~255)的整数表示图像亮度。这样的矩阵也可以看做一个3维曲面,如下图。一个8Bit黑白图像一般称为灰度图像,彩色图像则是由3层分别表示红黄蓝的8Bit图像(一个像素24Bit)叠加而成的。一个64×64的人脸图像矩阵,它所能提供的全部信息都包含在这个矩阵里,不会更多(实际上它也可能是有冗余的),所以利用图像的信息进行人脸检测是当前最常规的方法。

 

人脸检测的基本方法是用一个一系列小窗口扫描照片,窗口的尺寸可视实际人脸的大小选择,比如{16,20,24,32,..., 120} 。扫描窗口,这可以说是人脸图像或者其他目标检测的基本的工作方式,只有这样才能覆盖可能出现在不同位置、不同大小的人脸。对窗口中的图像块提取一系列特征,当这些特征表现出的统计信息满足条件,才判断这个图像为人脸图像。这是模式识别(Pattern recognition)领域的一个典型的两类(“人脸”和“非人脸”)分类问题。

MIT媒体试验室的Turk和Pentland在基于图像的人脸检测和识别方面做出了开创性的工作。1991年他们发表基于主成份分析(PCA)的方法。他们把人脸图像二维矩阵每行首尾相接组成一个向量,这个向量可以看做是高维空间中的一个点。比如16×16的一个灰度图像,可以看成是256维空间中的一个点。大量的人脸图像在这样的空间中应该是聚在一起的,叫做聚类(俗称扎堆)。一个“非人脸”图像离开这个“堆”则比较远。这样扎堆的人脸与非人脸图像的边界并不光滑,所以一般通过降低维数(高维空间投影到低维子空间,PCA就是干这个的)的方法去除噪声,另一方面在低维空间的计算量也会大大减小。作为人脸判断的依据,“远”和“近”是相对的概念,可以转化为某种概率表达,比如高斯分布的形式,但作为最终判断Yes或No是需要一个阈值,它要在正确率和错检率之间取得平衡。这样的阈值的选取非常微妙,在图像处理和模式识别领域里是避免不了的。所以有人说,无论多么好的算法,归根结底都是trade-off(权衡)。

基于PCA的方法,需要先对扫描窗口进行归一化,变成长度一致的矢量,再通过一个变换矩阵进行投影,变到低维子空间。这样的矩阵乘法,其实是由一系列矢量内积运算组成的,简单说,就象一个2维矢量(4,9)投影到x坐标轴(1,0),只要做内积即可:4*1+9*0=4。这样的简单的步骤,对于大量扫描窗口来说,计算量还是很大的。这对数码相机的系统(比如Arm系统或者加上图像处理DSP芯片)来说,负担太重,几乎无法做到实时处理。

另外,检测算法的缺陷也导致无法有很好的鲁棒性(robustness)。把图像窗口矩阵简单地首尾相接,实际上忽视了人脸在空间上的连续性,而仅仅是把图像看成一个矢量,没有更充分地利用人脸的先验知识,比如眼睛区域的总是比脸部颜色深一些。

真正突破性的进展出现在2001年,P. Viola和M.J. Jones发表的会议论文,提出了基于“积分图像”和AdaBoost训练的著名方法,才使得实时人脸检测变成可能。这篇文章几乎可以说是具有划时代的意义,可以毫不夸张地说,现在市场上几乎所有的人脸算法都是以它为基础的。我在一段很长的时间里所做的工作都和它有关。以后有空我们再来谈它吧,今天就到这里。

 

相关文献:

[1] 基于PCA方法在这里可以查到,第一篇就是M. Turk, A. Pentland, Eigenfaces for Recognition。

[2]Viola-Jones论文 Robust Real-time Object Detection



http://blog.sciencenet.cn/blog-465130-352795.html

上一篇:不同环境中的图像原点
下一篇:只用黑白点,如何表示图像
收藏 分享 举报

12 赵星 赵凤光 梁建华 余昕 李学宽 许亮 陈龙 黄锦芳 杨华磊 zdlh laorenzsyf anny424

发表评论 评论 (4 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2017-11-21 23:57

Powered by ScienceNet.cn

Copyright © 2007-2017 中国科学报社

返回顶部