使用Haar特征进行人脸识别

这篇博客对2001年那篇划时代的paper:Rapid Objection Using a Boosted Cascade of Simple Features进行一个简要的解析。这篇文章之后人脸识别的效果有了很大的提升。后来还被应用到了OpenCV之中。

使用Haar特征进行人脸识别_第1张图片
人脸检测一般来说就是在人脸检测时用一个子窗口在待检测的图片窗口中 不断的移位滑动, 子窗口每到一个位置,就会计算出该区域的特征, 然后用训练好的级联分类器对该特征进行筛选,一旦该特征通过了所有强分类器的筛选, 则判定该区域为人脸。这里用到了Haar特征,那么首先来介绍一下Haar特征。

Haar特征

使用Haar特征进行人脸识别_第2张图片
Haar特征的基本原理就是认为不同区域的像素值是不同的,这和卷积神经网络的filter十分的类似,是一种边界检测。比如说,对于人的眼睛和非眼睛区域,就十分的不同,以此这个特征来作为一种检测标准。Haar特征的检测方式就是白色区域的像素和减去黑色区域的像素和。

实际上,Haar特征可以有不同的类型,可以有很多的变换。
使用Haar特征进行人脸识别_第3张图片
以此来进行多尺度的特征检测。

有了Haar特征检测,接下来还会面临一个问题,就是到底什么样的特征可以算是人脸特征呢,多少个特征就可以勾画成人脸特征检测器,检测人脸达到较好的效果呢?这里,使用Adaboost算法对模型进行训练。

积分图加速

使用计算图可以加速Haar特征的计算。
使用Haar特征进行人脸识别_第4张图片
积分图的计算是该点左上角所有值得和。区域D的值 = L4 + L1 – L2 – L3。第一步,计算某个像素区域的积分图 第二步,使用积分图的值可以计算某个像素区域 像素点的和。将像素区域转换成积分图之后,计算Haar特征只需要加加减减 即可,大大的提高了计算效率。

Adaboost算法

使用Haar特征进行人脸识别_第5张图片
Adaboost算法的目的是来确定需要什么样的Haar特征分类器,以及什么样的Haar特征分类器的组合。这里,对Adaboost算法进行一个简要介绍。

使用Haar特征进行人脸识别_第6张图片使用Haar特征进行人脸识别_第7张图片
使用Haar特征进行人脸识别_第8张图片
使用Haar特征进行人脸识别_第9张图片
使用Haar特征进行人脸识别_第10张图片
使用Haar特征进行人脸识别_第11张图片
Boost算法的思想就是哪个分类没分到,就把权重加大,下一次分类器就有更多精力关注到错误的分类器上面。最后就可以看到,类别就被正确的区分了。

这样,一个弱分类器也就变成了强分类器。

最后呢,人脸检测是多个分类器的组合形式。
使用Haar特征进行人脸识别_第12张图片

详细课程内容介绍

你可能感兴趣的:(计算机视觉)