APP下载

HOG的一种改进算法在人脸检测上的应用

2021-11-17朱国华

计算机仿真 2021年9期
关键词:正确率人脸均值

朱国华,徐 昆

(江汉大学人工智能学院,湖北 武汉 430056)

1 概述

人脸检测问题源自于人脸识别,人脸识别是当今最为有效和最受欢迎的验证手段之一,被广泛应用于手机,电脑,门禁等设备上。随着人脸识别被广泛地应用,人脸检测也开始作为一个单独的问题被重视起来。一般情况下,人脸检测系统面临的使用情形复杂,它必须能够在不同的环境识别出人脸,这要求它在有着较高识别率之外还必须能够对不同的环境进行适应。目前人脸检测与人脸识别相关的技术被用在各种领域,它在信息检索、目标监测,目标追踪,自动驾驶等方面也有着重要的学术价值与应用价值[1]。

HOG是目标检测领域中的常用算法,它通过计算图像的梯度方向与大小,从而获得图像关于梯度的统计描述子。算法具有光照不变性,平移不变性和旋转不变性等特点[2]。在它们基础之上而改进的算法,如:文献[3]中通过内嵌一个支持向量机(SVM)分类器的HOG特征提取归一化模块,来提高行人检测的准确性和计算效率;文献[4]中通过人体目标图像的局部二值模式(LBP)与HOG分层融合的GEI识别算法,来提高再步态识别上的检测识别率。可以说,HOG以及基于它之上而改进的算法在目标检测等领域中有着非常重要的位置。

随着深度学习模型AlexNet在ImageNet比赛中夺冠,各种深度学习模型被应用于人脸检测等计算机视觉问题上[5]。深度学习算法通过卷积神经网络对图像进行扫描,具有很好的平移不变性和尺度不变性,如:R-CNN、Fast-RCNN等[6]。针对Fast-RCNN对小目标物体检测效果不好的问题,R-FCN使用全卷积网络ResNet来减少对图像同一区域的重复采样,从而提升了特征提取与分类的效果[7]。Mask R-CNN通过双线性差值 RoIAlign 算法对Faster R-CNN做出改进,使得对目标人脸的进度达到了像素级[8]。有些深度学习算法可以将检测和识别融合到一步之中,算法直接读入原始图像并输出人脸检测和人脸识别的结果,这样可以大大简化认证过程步骤,如:DeepFace、DeepID、FaceNet等[9]。深度学习算法计算复杂,相较于传统算法有着更高的识别或是检测正确率。不过,深度学习算法一般来说运算量大,需要有大量的数据来进行训练拟合,并且还有着解释性较弱等缺点。

目前基于原始HOG的改进算法仅使用梯度信息来提取特征描述符,从而造成模型不稳定,并且在面对模糊图像和边缘光滑图像时,不能有效地提取图像信息。为了进一步提高HOG算法的稳定性与检测效果,针对原始HOG算法的不足之处提出一种改进的HOG算法,将HOG算法提取的信息与图像的单元均值,方差等进行融合,从而提出一种全新的更加有效的HOG算法。之后再将HOG与SVM算法相结合,通过多尺度检测和非极大抑制算法,使SVM模型可以泛化到任意尺度进行人脸检测。最后设计了对比试验并给出了其实验结果,对比分析了在不同参数设置下原始HOG算法与新算法的检测效果,实验证明改进的HOG算法相较于原始算法在人脸检测的正确率上有明显提升。

图1 HOG特征提取过程中图像的变化

图2 改进的HOG算法流程图

2 原始HOG算法

HOG最初是Dalia等提出的一种用于行人检测的算法,后来被研究应用于人脸检测等领域。由于颜色在目标检测问题中所起的作用非常小,因此HOG算法忽略图像中颜色信息的影响,首先对图像进行灰度化。为了保证光照不变性,再对整个图像进行全局归一化。HOG算法在图像中大小一致并且密集的cell单元计算梯度大小与方向并进行统计,然后在block范围内进行合并和局部归一化来提高HOG算子的特征描述能力,其处理效果如图1所示。

HOG算法流程如下:

1) 对原始图像进行灰度化,;

2) 对原始图像进行归一化,通常是使用Gamma校正法,这样可以抑制图像局部阴影和光照带来的影响;

3) 计算图像每一个像素的梯度大小与梯度方向;

4) 将图像切割成大小相同的单元;

5) 对每一个单元的梯度信息进行统计,得到它的统计描述直方图。通常是用8个方向对梯度信息进行统计,这梯度直方图所代表的向量便是它的描述子;

6) 将相邻的cell单元的统计特征向量进行合并,得到每一个block的特征向量;

7) 将图像内的所有block的描述子合并起来就可以得到该原始图像的HOG特征描述子,即特征向量;

8) 将训练集提取出来的HOG特征向量供SVM模型训练,得到基分类器;

3 改进的HOG算法

原始HOG算法对图像特征的提取过于简单,仅仅是对图像的梯度信息做统计,而没有考虑其它信息,如均值,方差等。为了在图像中提取出更为有效的信息,改进的HOG算法基于多种维度信息,不仅提取出了图像中代表了图像的梯度信息的HOG特征,同时还提取出了每一个单元的均值与方差信息,它们分别代表了图像的大小与波动的信息,最后,将图像每一个单元的均值与标准人脸每一个单元的均值进行比较,它代表图像与一般脸的差值信息,其处理流程如图2所示。

新算法步骤如下:

1) 在全局归一化的基础上,计算每一个cell单元的均值,方差;

2) 计算训练集所有图像的平均值;

3) 计算原始图像与平均值图像的差值,取绝对值;

4) 计算差值图像每个cell的均值;

5) 将(1),(4)得到的特征展开,再与原始HOG特征结合;

用blockH表示block块的高度,blockW表示block块的宽度,blockStrideH表示block块在高度方向上的间隔,blockStrideW表示block块在宽度上的间隔,cellH表示cell单元的高度,cellW表示cell单元的高度。

原始HOG算法,处理一张(height-width)格式的图像进,其特征数为

featureNum=

((height-blockH)÷blockStrideH+1)×

((width-blockW)÷blockStrideW+1)

(1)

在新算法中,每张图像特征数的计算方式为

eatureNum=

((height-blockH)÷blockStrideH+1)×

((width-blockW)÷blockStrideW+1)+

(height÷cellH)×(width÷cellH)×3

(2)

4 HOG算法进行人脸检测

4.1 支持向量机

提取出了训练集的特征向量之后,需要有一个基分类器对人脸,和非人脸进行判断。支持向量机(SVM)是统计学习中一个经典的二分类算法[10],使用它可以很好地解决这个问题,其基本思想如下:

给定样本集:D={(x1,y1),(x2,y2),…,(xn,yn)},yi∈(1,-1)。线性分类器基于样本D在特征空间中找到超平面来分开二类样本,在二维特征空间其分类效果如图3所示。对于可能存在的多个超平面,算法要找到使得间隔最大化的超平面。最后经过推导,它等于以下优化问题

(3)

s.t.yi(wTxi+b)≥1,i=1,2,…,n

(4)

使用核技巧,也可以将它用于非线性问题上。对于一般的数据集,有时并不存在任何超平面可以分割正反样本,这时需要对SVM进行软间隔设置,允许它在一定程度上犯错。在本文后面,将讨论不同软间隔设置对于模型正确率的影响。

图3 SVM分类原理图

4.2 多尺度检测与非极大抑制

训练一旦完成,支持向量机就只能对特定长度的特征向量进行检测。如果在训练中使用8*8的cell单元,则SVM也只能检测8*8大小的目标。要想使用它检测出一张图片中不同大小尺度的人脸,还需要使用多尺度检测与非极大抑制。

多尺度检测算法可以消除图像尺度差异带来的影响,通过对图像进行缩小,并且在每一张缩小的图像上进行扫描检测,从而发现不同大小的目标。要实现多尺度检测,通常的做法是使用相对坐标来记录矩阵的位置。如以图像的左上角为原点,向下,向右为正方向,如果一个矩阵上下左右的坐标分别为(u,d,l,r),则它的相对坐标可以表示为(u/H,d/H,l/W,r/W)。通过对图像不断的进行缩放,可以将图像中的人脸缩放到检测器可以检测出来的大小,然后记录人脸的相对坐标,最后,对所有人脸坐标通过以上过程的逆转换,便可以编程(H,W)尺度下的绝对坐标。

假设有一个训练好的分类器classifier可以对(h,w)大小的图像进行检测,对于人脸图像输出1,对于非人脸图像输出0,现在输入一张(H,W)尺度大小的图像,则多尺度检测的描述过程如下:

多尺度检测算法:

position=None

while true:

滑动窗口遍历图像得到图像片段fragment

if 滑动窗口出界:

break

if classifier(fragment)=1:

添加fragment的相对位置到position

else:

进入下一个窗口,更新fragment

非极大抑制算法将图像中重合率过高的目标位置进行抑制,只保留置信度最高的目标,这样就可以消除相邻区域内的同一识别目标。要实现非极大抑制算法,首先要对两个矩阵的相交面积进行计算。因为两个矩阵如果相交,那么它们的相交部分也是一个矩阵,这样,就可以通过计算相交部分的wide和height来计算相交分布的面积。然后,对于输入的一系列矩阵坐标,假设有n个矩阵的坐标,先计算它们的相交面积矩阵,这是一个n*n的矩阵。先找出相交面积最大的两个矩阵,如果它们的重合部分的面积达到一定的比例,如1/4的矩阵面积,则对这两个矩阵进行非极大抑制,即消除它们中置信度较小的一个。一直持续这一过程,直到任意两个矩阵的相交面积都达到要求,其抑制过程如图4所示。

非极大抑制算法:

input::矩阵位置P,置信度R

output:非极大抑制后的矩阵位置

while True:

if P中任意两个矩阵的相交面积小于它们最小值的二分之一:

break;

else:

得到相交面积最大的两个矩阵P[i],P[j]

if R[i]>R[j]:

P中删j号元素, R中删除j号元素

else:

P中删除i号元素, R中删除i号元素

5 LFW人脸检测结果

本文采用LWF数据集进行训练与验证。LFW是一个大型人脸数据集,它总共包含13000多张图片。其中,1600个人以上包含了至少两张人脸。该人脸数据集包含许多文件夹,每一个文件夹代表同一个人在不同状态下的人脸图像,本文使用它的前3000张人脸图像作为正例。同时,从互联网上采集了3000张不包含人脸的图像作为反例。因此,本文一共使用了6000张图像参与学习与验证,并且这6000张图像统一压缩到64*64大小,处理效果如图(5)所示。

图5 LWF数据集示例

将6000张图像中的3000张供给SVM模型进行训练,另外300张用于测试。本文使用线性SVM进行训练和检测,其中设置软间隔参数C=0.5.在原始HOG算法中,默认的blockStride与cellSize相同,实验在PC台式机,win10下研究进行。本文研究了在不同cellsize情况下,不同算法对正确率的影响,其实验结果如图6所示。

图6 实验结果注:a)左上为使用原始HOG算法(算法1),b)右上为使用cell均值算法(算法2),c)左下为使用cell方差算法(算法3),d)右下为去中心化后的cell均值算法(算法4)

从以上实验数据可以看出,算法1,算法2在不同cellSize大小下精确度较高,算法3,算法4的精确度随cellSize大小变化波动较大。在综合考虑运算量与精确度的情况下,本文在算法1,算法2,算法3,算法4中最后使用的cellSize大小分别为(8,8),(8,8),(2,4),(4,8)。在上述参数设置下,新算法与原始算法的对比结果如图7所示。

图7 原始HOG算法与改进的HOG算法的对比曲线

通过以上实验数据可以看出,在不同cellSize尺度下,改进的HOG算法相较于原始算法均有着更高的正确率。在cellSize尺度较小时,根据式(1)和式(2),两种算法提取的特征数都很多,计算量都很大,可以从原始图像提取充分的信息,它们在验证集上的表现差异不大,新算法只稍微优于原始算法。在cellSize尺度大于(8*8)时,两种算法提取的特征数和计算量以O(cellSize[0]×cellSize[1])的方式下降,此时改进的HOG算法明显优于原始算法。在cellSize为(16*16)时,新算法比原始算法高1.7%。最后,针对新算法中cellSize为(8*8)的情况,研究了在SVM中,不同软间隔设置对正确率的影响,结果如图8所示。可以看出,软间隔参数设置C=0.01时,其识别率最高,达到99.6%。

图8 惩罚因子C与正确率的关系图

6 结语

本文提出了一种经过单元均值与方差等信息而改进的HOG算法,HOG算法使用图像的梯度信息对图像进行描述,描述信息过于单一,且只进行了局部归一化,不能有效的消除全局明暗差异带来的影响。新的算法在原始HOG算法提取的特征的基础上,还加入了全局归一化后的单元均值,单元方差等信息,从而有效地解决了以上问题。本文使用LWF人脸数据集,在不同cellSize大小下,对原始HOG算法和新HOG算法做出了对比。实验结果表明,经过改进后HOG算法在不同的cellsize参属下的准确率都要高于原始算法,特别是在cellSize尺度较大时效果提升明显。相较于深度学习算法,HOG算法解释性强,具有强大的特征提取能力。但其检测正确率和稳定性不如深度学习算法,之后的研究可将它们结合,从而使算法的性能达到新的高度。

猜你喜欢

正确率人脸均值
个性化护理干预对提高住院患者留取痰标本正确率的影响
课程设置对大学生近视认知的影响
玻璃窗上的人脸
均值—方差分析及CAPM模型的运用
均值—方差分析及CAPM模型的运用
智力考场:有趣的图片测试
均值不等式的小应用
生意
生意
“领家系”可爱脸VS“高冷系”美人脸