深度学习之人脸检测算法

检测方法

  • Haar cascade + opencv

  • HOG + Dlib

  • CNN + Dlib

  • SSD

  • MTCNN

Haar特征

1.Haar特征原理综述

Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。它分为三类:边缘特征、线性特征、中心特征和对角线特征。用黑白两种矩形框组合成特征模板,在特征模板内用 黑色矩形像素和 减去 白色矩形像素和来表示这个模版的特征值。例如:脸部的一些特征能由矩形模块差值特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述在特定方向(水平、垂直、对角)上有明显像素模块梯度变化的图像结构。

深度学习之人脸检测算法_第1张图片

2.Haar特征的计算方法

通过改变特征模板的大小和位置,可在图像子窗口中穷举出大量的特征。特征模板在图像子窗口中扩展(平移伸缩)得到的特征称为“矩形特征”;矩形特征的值称为“特征值”。矩形特征可位于图像任意位置,大小也可以任意改变,所以矩形特征值是矩形模版类别、矩形位置和矩形大小这三个因素的函数。故类别、大小和位置的变化,使得很小的检测窗口含有非常多的矩形特征,如:在24*24像素大小的检测窗口内矩形特征数量可以达到16万个。

3.利用积分图Haar特征的加速算法

刚开始认为积分图(Integral image)是个高深的东西,其实很简单。对于一个灰度图像I而言,其积分图也是一张与I尺寸相同的图,只不过该图上任意一点(x,y)的值是指从灰度图像I的左上角与当前点所围成的举行区域内所有像素点灰度值之和,有点耳熟吧。类似于图像直方图与图像累积直方图的关系,这里只不过是二维的图像。

深度学习之人脸检测算法_第2张图片

当把扫描图像一遍,到达图像右下角像素时,积分图像就构造好了。积分图构造好之后,图像中任何矩阵区域的像素累加和都可以通过简单运算得到如图2所示。而Haar-like特征值无非就是两个矩阵像素和的差,同样可以在常数时间内完成。所以矩形特征的特征值计算,只与此特征矩形的端点的积分图有关,所以不管此特征矩形的尺度变换如何,特征值的计算所消耗的时间都是常量。这样只要遍历图像一次,就可以求得所有子窗口的特征值。

你可能感兴趣的:(人工智能,深度学习,代码笔记,深度学习,人工智能,python)