【人脸检测——基于机器学习4】HOG特征
前言
HOG特征的全称是Histograms of Oriented Gradients,基于HOG特征的人脸识别算法主要包括HOG特征提取和目标检测,该算法的流程图如下图所示。本文主要讲HOG特征提取。
HOG特征的组成
Cell:将一幅图片划分为若干个cell(如上图绿色框所示),每个cell为8*8像素
Block:选取4个cell组成一个block(如上图红色框所示),每个block为16*16像素。Block的滑动步长为8像素,如黄色箭头所示
Detection Window:令64*128像素大小的图片为检测Win,在其中共计有105个block。
HOG 特征要完全描述一个obj的所有信息,它的维度=窗体中所有block个数(105)*每个block中cell的个数(4)*每个cell中Bin的个数(9)=3780(维),每一维就是一个bin
HOG特征的提取
- Gamma/Colour Normalization
在Navneet Dalal的实验 [1]中Gamma/Colour Normalization对于检测器的性能仅仅有些许的影响,他猜测是后续的描述子归一化能实现相同的功能。
- Gradient Computation
Dalal的实验[1]中最简单的一维中心对称模板在处的高斯模板下效果最好。根据具体的检测目标采取不同的梯度计算方法。
人脸识别中可以采用如下特征模板计算像素的梯度:
水平方向上的模板为:; :左中右三个像素分别与模板相乘=相邻像素之差
竖直方向上:;b也就是上下像素之差
整个梯度的幅值 :
角度:
- Spatial/Orientation Binning
这里我们定义了新的概念bin。Bin可以是(无符号的梯度),也可以是(有符号的梯度)。对于人体检测系统来说,由于不同人着装的颜色和背景变化太大,梯度方向的符号不是很重要,而对其他的刚性对象如花瓶、茶杯、摩托车等梯度符号信息非常重要。
我们这里的人脸检测中,将bin定义在,并将其分为9份,因此,每个cell都有9个bin。上一小节我们计算出 了像素的梯度与角度。我们要在cell中统计每个梯度的幅值总和。
bin的投影操作可如下所示(并不唯一)
Bin的投影
Bin 将0-360划分为9块,每块为40度,这40度中,每20度为连续的。
例如 0-40度中
Bin1 为0- 20 在这个范围 180-200 当在这两个范围内的 被认为在一个bin上
例如(有很多方法)
对于某个像素ij,计算出来的幅值为f,角度为a=10,在0-20,那么就投影在bin1上
若 a=190,在180-200之间,那么也在bin1上。
投影幅值为:
若 a=10/190,刚好位于中间,这,投影幅值就为f
若a=25,那么投影将被分解为在Bin1 和bin2上
,
计算整体的hog特征
3780维==win(block cell bin),每个维度就是一个bin
对于3780维的某一维,就是某一个窗体win下的某个block中的某个cell的某个bin
对于一个block中的4个cell
Cell0: bin0 bin 1 … bin8
Cell1: bin0 bin 1 … bin8
Cell2: bin0 bin 1 … bin8
Cell3: bin0 bin 1 … bin8
对于第ij(第i行j列)个像素,投影在cell0中的Bin0上,那边bin0中的内容就是f0:bin0中描述的就是当前像素的梯度
对于第i+1j像素,若也投影在cell0中的Bin0上,那么Bin0中的内容就是f1
当投影完后, 求 sumbin0 --------就是最后的bin0 权重的累加
- Normalization and Descriptor Blocks
原因:梯度算子容易受到噪声如光照和背景对比度的影响,为了减少这种影响需要对局部cell进行归一化处理
基本思想:将相邻的cell组成可重叠的block,以有效的利用重叠的边缘信息,然后对每个块分别进行归一化处理。
Dala文章中介绍了四种常见的block归一化算法,其中(1),(2),(4)的性能大致相同,而(3)则降低了性能
(1)L2-norm:
(2)L2-Hys:先做一次L2-norm归一化,然后把大于等于0.2的分量赋值为0.2再做一次L2-norm
(3)L1-norm:
(4)L1-sqrt:,采用了L1-norm的平方根式
其中, 表示v的k阶范数,为一个小数值的常量,它的存在是必要的
统计好每一个block内的梯度信息并形成描述子后,将检测窗口(win)内所有信息收集起来并结合成的向量即为HOG特征向量。
参考与致谢
Dalal N, Triggs B. Histograms of oriented gradients for human detection[C]//Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on. IEEE, 2005, 1: 886-893.