这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 企业专区» OpenVINO生态社区» 【原创】项目实战—人脸检测之级联分类器理论(一)

共11条 1/2 1 2 跳转至

【原创】项目实战—人脸检测之级联分类器理论(一)

高工
2020-08-20 09:34:05 打赏

项目实战—人脸检测之级联分类器理论(一)

至本次教程开始,我们将进入实战篇,当然仍然会设计到一些理论部分,比如机器学习相关的知识,级联分类器等等。接下来,我们将使用OpenCV自带的级联分类器实现一个简单的人脸检测的功能。

首先逐步开始研究级联分类器。

级联分类器,即使用类Haar特征工作的级联增强分类器,是集成学习的一种特殊情况,称为boost。它通常依赖于Adaboost分类器(以及其他模型,如Real AdaboostGentle AdaboostLogitboost)。

我们如何检测图上是否有人脸呢?有一种名为Viola-Jones的目标检测框架的算法,包括了实时人脸检测所需的所有步骤:

·提取Haar特征,特征来自Haar小波

·创建图像

·Adaboost训练

·级联分类器

Haar特征选择

人脸上最常见的一些共同特征如下:

·与脸颊相比,眼部颜色较深

·与眼睛相比,鼻梁区域较为明亮

·眼睛、嘴巴、鼻子的位置较为固定......

这些特征称为Haar特征。特征提取过程如下所示:

image.png

在上图中,第一个特征测量眼部和上脸颊之间的强度差异。特征值计算的方法很简单,对黑色区域中的像素求和再减去白色区域中的像素即可。

然后,将这个矩形作为卷积核作用到整个图像。为了不产生遗漏,我们需要用到每个卷积核的所有的维度和位置。简单的24 * 24的图像可能会产生超过160000个特征,每个特征由像素值的和/差组成。这样在计算上无法实现实时人脸检测。那么,该如何加快这个过程呢?

一旦通过矩形框识别到有用区域,则在与之完全不同的区域上就无需再做计算了。这一点可以通过Adaboost实现。

使用积分图像原理计算矩形框特征的方法更快。我们将在以后介绍这一点。

image.png

原始论文中提到几种可用于Haar特征提取的矩形框:

·双矩形特征计算的是两个矩形区域内像素和的差,主要用于检测边缘(a,b)

·三矩形特征计算的是中心矩形和减去两个外部矩形和的差,主要用于检测线(c,d)

·四矩形特征计算的是矩形对角线对之间的差(e)

image.png

特征提取完成后,使用Adaboost分类器将它们应用于训练集,该分类器结合了一组弱分类器来创建准确的集成模型。只需200个特征(最初是16万个),实现了95%的准确率。该论文的作者提取了6000个特征。

积分图像

以卷积核的形式计算特征需要花费很长时间。出于这个原因,作者ViolaJones提出了图像的中间表示:积分图像。积分图像的作用是仅使用四个值简单地计算矩形和。我们来看看它是如何工作的!

假设我们想要确定一个坐标为(x,y)的给定像素的矩形特征。然后,像素的积分图像是给定像素的上方和左侧的像素之和。

image.png

其中ii(x,y)是积分图像,i(x,y)是原始图像。

当计算整个积分图像时,有一种只需要遍历一次原始图像的递归方法。实际上,我们可以定义以下一对递归形式:

image.png

其中s(x,y)是累积行和,而s(x−1)=0, ii(−1,y)=0

这是怎么实现的呢?假设我们想要估算区域D的像素总和。我们已经定义了3个其他区域:ABC

·1处的积分图像的值是矩形A中的像素的总和。

·2处的值为A + B

·3处的值为A + C

·4处的值是A + B + C + D

因此,区域D中的像素之和可以简单地计算为:4+1−(2+3)

这样我们仅使用4个数组值就计算出了矩形D的值。

image.png

人们应该知道矩形在实际中是非常简单的特征,但对于人脸检测已经足够了。当涉及复杂问题时,可调滤波器往往更灵活多变。

image.png

使用Adaboost学习分类函数

给定一组带标签的训练图像(正负样本均有),Adaboost用于:

·提取一小部分特征

·训练分类器

由于16万个特征中的大多数特征与之极不相关,因此我们设计一个增强模型的弱学习算法,用来提取单个矩形特征,将最好的正负样本区分开。

虽然这个过程十分的有效,但是仍然存在一个重大问题,而正是由于这个问题,导致了级联分类器的诞生,我们将在下一个教程中详述。


对计算机视觉感兴趣?这个社区推荐给你~

>>点击了解OpenVINO生态开发社区



高工
2020-08-21 22:29:20 打赏
2楼

挺厉害~


工程师
2020-08-22 15:07:13 打赏
3楼

这个理论很有实践意义


工程师
2020-08-23 16:55:44 打赏
4楼

不错 学到了


工程师
2020-08-23 17:03:00 打赏
5楼

感谢楼主分享


工程师
2020-08-23 17:07:15 打赏
6楼

期待更新


工程师
2020-08-23 17:12:54 打赏
7楼

谢谢分享


工程师
2020-08-23 17:17:48 打赏
8楼

期待楼主更新


工程师
2020-08-23 17:23:30 打赏
9楼

学习到了


工程师
2020-08-23 20:02:58 打赏
10楼

感谢分享


共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]