人脸识别的原理——这样学习最简单(文末有免费送书活动)

2022-03-04 12:11:34 浏览数 (1)

关注并星标

从此不迷路

计算机视觉研究院

公众号IDComputerVisionGzq

学习群扫码在主页获取加入方式

文末有送书福利!!!

计算机视觉研究院专栏

作者:Edison_G

OpenCV 中提供了关于人脸识别的算法,它主要使用 Haar 级联的概念。

1.Haar 特征 

        人脸识别使用 Haar 级联分类器,通过对比分析相邻图像区域来判断给定图像或子图像与 已知对象是否匹配。Haar 特征分为 4 种类型:边缘特征、线性特征、中心特征和对角线特征。将这些特征组合成特征模板,特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白 色矩形像素之和减去黑色矩形像素之和。Lienhart R.等人对 Haar-like 矩形特征库做了进一步 扩展,扩展后的特征大致分为 4 种类型——边缘特征、线性特征、圆心环绕特征和特定方向 特征,如图 1所示。

图 1     扩展后的 Haar 特征

    Haar 特征的提取简单来说就是通过不断改变模板的大小、位置和类型,将白色矩形区域 像素之和减去黑色矩形区域像素之和,从而得到每种类型模板的大量子特征。

2.积分图

       计算 Haar 的特征值需要计算图像中封闭矩形区域的像素值 之和,在不断改变模板大小和位置来获取子特征的情况下,计算 大量的多重尺度区域可能会需要遍历每个矩形的每个像素点的 像素值,且同一个像素点如果被包含在不同的矩形中会被重复遍 历多次。这就导致了大量的计算和高复杂度,并且包含了大量不 必要的操作,因此可以用积分图来减少计算量。 

       积分图的原理是从第二次遍历图像开始,通过第一次遍历图 像时保留下来的矩形区域 4 个角的值来提供需要的像素的总和。我们通过图 2 所示的积分原图可以更好地理解这个概念,因 此如果需要计算图像中任意矩形区域的面积,就不需要遍历区域 内的所有像素点。

图 2   积分原图

        例如,计算图 12.5 中矩形 ABCD 的面积。将矩形 ABCD 的面积记为 S1,图中左顶点记为 O 点,以 O 点与 A 点连线为对角线的矩形面积记为 S2,以 O 点与 B 点连线为对角线的矩形面 积记为 S3,以 O 点与 C 点连线为对角线的矩形面积记为 S4,以 O 点与 D 点连线为对角线的矩 形面积记为 S5,如图 3所示。

图 3      O 点对应的不同矩形区域

     有了 4 个区域的面积后,就可以通过 S2、S3、S4 和 S5 来计算出 S1 的面积了,如式所示。

       提取目标图像的 Haar 特征需要计算多个尺度矩形的和。这些计算是重复的,因为遍历图 像时反复遍历了同一个像素点,而这会导致系统运行速度缓慢且效率低下,并且这对构建一个 实时的人脸识别系统来说是不可行的,因为卡顿会造成用户体验不好的情况。 

       其实不需要多次遍历相同的像素点。运用积分图的思想,如果要计算任意一个矩形区域, 上述公式等号右边的所有值在积分图像中都是易于获取的,之后只需要用正确的值替代它们就 可以比较轻松地提取相关特征了,从而大幅度减少了计算量。

3.Haar 级联

        Haar 级联是一个基于 Haar 特征的级联分类器,级联分类器能够把弱分类器串联成强分 类器。弱分类器可以理解为性能受限的分类器,它们没有办法正确地区分所有事物。当问题 很简单时,弱分类器产生的结果是可以接受的,但是问题一旦复杂起来,结果就会出现很大的偏差。强分类器可以正确地对数据进行分类,建立一个实时系统来保证分类器运行良好并 且足够简单。 

       在强相连与弱相连之间,唯一需要考虑的就是分类器够不够精确的问题。如果试图获得更 精确的结果,那么最终系统就会变成计算密集型,但运行速度慢的系统。精确度和速度的取舍 在机器学习中十分常见。将一些弱分类器串联成一个统一的强分类器可以解决这个问题。弱分 类器本身面对的问题的需求不需要太精确,将它们串联起来形成的强分类器具有高精确度、低 速度的特点。

     本文节选自《 OpenCV图像处理入门与实践》,作者荣嘉祺,本文已获得人民邮电出版社转载授权。

文末赠书

OpenCV 4详解教程,基于Python语言实现,剖析利用OpenCV 4进行图像处理的基本操作,配合项目实战,真实应用场景,附赠源代码、讲解视频及PPT。

如果你对以上内容感兴趣

快在留言区大声告诉我们

截止2月16日晚八点

留言获赞数最高的五位同学各赠一本

《OpenCV图像处理入门与实践》

没有抽中的粉丝不要气馁,可在京东购买此书,快快来抢购吧。

0 人点赞