狗脸检测器的形成方法和狗脸检测方法
技术领域
本发明涉及目标检测技术领域,尤其涉及一种狗脸检测器的形成方法和狗脸检测方法。
背景技术
目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割,将目标的分割和识别合二为一。在复杂场景中,通常需要对多个目标进行实时处理,因此,目标自动提取和识别就显得特别重要。随着计算机视觉技术的迅速发展,其被广泛地应用在目标检测领域,就目前而言,现有技术中已经存在多种针对特定目标进行检测的方法,如:人脸检测、行人检测、车辆检测等,且从目标检测的发展来看,在人脸检测、行人检测、车辆检测方面的研究也最为广泛,而在狗脸检测方面的研究却很少。
众所周知,狗是人类忠实的朋友,目前,在中国、美国、日本等国家,养狗的人逐渐增多,因此,与狗相关的图像处理技术具有广泛的市场前景,尤其是狗脸识别技术,在狗注册、狗身份认证、狗相册制作以及公共安全监控等方面起到了至关重要的作用。
狗脸检测是狗脸识别中极为重要的一个环节,其也属于对特定目标的检测,狗脸检测的目的就是将狗脸从图像背景中检测出来,或者说是将狗脸的子窗口与非狗脸的子窗口分开。相对于人脸检测而言,狗脸检测要困难的多,这主要是因为:狗脸在形状、大小、毛色、姿态、表情等方面变化多样;狗耳朵和脸部长毛容易遮挡其面部,尤其是眼睛部分;在拍摄狗时,由于其一般都处于走动状态,需要抓拍,故导致狗脸在图像中的位置变化很大或者说狗脸在图像中的位置总是不确定的,而人脸则通常位于图像的中心;背景变化、光照变化等因素引起的图像差异;狗种类较多,狗样本图像不易采集,上述的原因导致了现有的目标检测方法不能直接有效的检测狗脸,因此,如何能够正确且快速地检测狗脸成为目前亟待解决的问题之一。
有关目标检测的技术可以参见公开号为CN101799875A,发明名称为一种目标检测方法的中国专利申请,但是对于上述问题,其并未涉及。
发明内容
本发明解决的问题是提供一种狗脸检测器的形成方法和狗脸检测方法,以准确且快速地检测狗脸。为解决上述问题,本发明提供一种狗脸检测器的形成方法,包括:采集狗脸图像;采集不包含狗脸的图像;从所述狗脸图像提取边缘图像;基于所述边缘图像获取边缘片段集合;以所述狗脸图像作为正样本、不包含狗脸的图像作为负样本,并以所述边缘片段集合中的边缘片段为特征,训练基于狗脸的边缘特征的强分类器;由至少一级强分类器形成狗脸检测器。
可选的,所述采集狗脸图像包括:从包含狗的图像中提取包含狗脸的图像;对提取到的包含狗脸的图像进行归一化。
可选的,所述从包含狗的图像中提取包含狗脸的图像包括:确定狗眼睛的位置及狗眼睛之间的眼间距;利用所述眼间距与狗脸图像的宽之比、狗脸图像的高和宽之比、以及以所述狗眼睛的位置为分界的狗脸图像上、下两部分的高度之比,提取包含狗脸的图像。
可选的,所述对提取到的包含狗脸的图像进行归一化包括:基于所述包含狗脸的图像的尺寸和预定的归一化尺寸获取缩放倍数;基于所述缩放倍数对所述包含狗脸的图像进行插值。
可选的,在所述包含狗脸的图像为彩色图像时,对所述包含狗脸的图像的灰度图像进行归一化。
可选的,还包括:对归一化后的包含狗脸的图像进行左右翻转。
可选的,所述对归一化后的包含狗脸的图像进行左右翻转通过如下公式获得:
其中,P(i,nc-j+1)是归一化后的包含狗脸的图像中第i行nc-j+1列的像素值,P1(i,j)是左右翻转后的包含狗脸的图像中第i行j列的像素值,nr×nc是归一化后的包含狗脸的图像的尺寸。
可选的,所述基于所述边缘图像获取边缘片段集合包括:在所述边缘图像上选取像素点作为种子;将所述种子沿边缘生长以生成原始边缘片段,所述边缘片段集合包括原始边缘片段。
可选的,所述基于所述边缘图像获取边缘片段集合还包括:以预定步长依次减少所述原始边缘片段的长度以获得新边缘片段,所述边缘片段集合还包括新边缘片段。
可选的,所述原始边缘片段的长度小于或等于预定长度,或者所述原始边缘片段的长度等于所述种子与所述边缘的终点之间的长度,或者所述原始边缘片段的长度等于所述边缘的起点与终点之间的长度。
可选的,所述基于所述边缘图像获取边缘片段集合还包括去除两边缘片段之间的差异小于预设阈值的其中一边缘片段。
可选的,所述训练基于狗脸的边缘特征的强分类器包括:
步骤S51,为第i个训练样本Ei设定初始权值ωi=1,并为训练样本Ei加上类别标签yi,正样本yi=1,负样本yi=-1,设定正样本通过率Ro和负样本通过率Rb,其中,Ro>99%,Rb在40%~60%之间取值,所述训练样本包括正样本和负样本;
步骤S52,训练当前权值下的弱分类器;
步骤S53,通过计算训练样本Ei在当前级的强分类器的输出,并和该训练样本Ei的类别标签yi进行比较,如果一致则认为分类正确,反之则认为分类错误;其中,Nw为训练好的弱分类器的个数,为第j个训练好的对应训练样本Ei和边缘片段T的弱分类器,H′(Ei)为训练样本Ei在当前强分类器的输出;
步骤S54a,判断训练好的弱分类器的个数是否达到上限值,若是则执行步骤S56,若否则执行步骤S54b;
步骤S54b,判断是否正样本的分类正确率大于Ro且负样本的分类正确率大于(1-Rb),若是则执行步骤S56,若否则执行步骤S55;
步骤S55,按照更新每个训练样本的权值,接着执行步骤S52;其中,为第Nw个训练好的对应训练样本Ei和边缘片段T的弱分类器;
步骤S56,输出当前级的强分类器其中,Ts为强分类器的调整阈值。
可选的,所述步骤S52包括:
步骤S521,建立弱分类器的表达式其中,hT(E)为对应训练样本E和边缘片段T的弱分类器,为训练样本E与边缘片段T的匹配代价,θT={0°,1°,2°,...89°,90°};aT和bT是弱分类器的输出;thT是判断弱分类器输出的阈值;
步骤S522,计算每个训练样本和边缘片段T的匹配代价:
其中,SimilarityT(E)为训练样本E与边缘片段T的形状相似度,DistanceT(E)为训练样本E与边缘片段T的距离相似度;
步骤S523,对θT的一个取值计算最优弱分类器的参数{aT,bT,thT},参数的值是通过使准则函数最小化得到的;
重复步骤S523,计算每一个θT值下的最优弱分类器,取其中使准则函数最小的最优弱分类器,记录该最优弱分类器的参数{aT,bT,thT,θT};
重复步骤S522~S524,计算对应于每一个边缘片段的最优弱分类器,并取其中使准则函数最小的最优弱分类器作为当前权值下训练好的弱分类器,记录训练好的弱分类器的参数{aT,bT,thT,θT,T}。
可选的,所述训练样本E与边缘片段T的形状相似度SimilarityT(E),训练样本E与边缘片段T的距离相似度DistanceT(E)通过下述公式计算:
SimilarityT(E)=min(Mapchamfer(x)),DistanceT(E)=d(Pmatch,Ptemplate);
其中, 表示训练样本的边缘点的集合,p是训练样本中的像素点,t表示边缘片段T上的边缘点,NT表示边缘片段T的长度,x表示边缘片段T在测试样本的距离变换矩阵DT上移动的位移向量,xx表示位移向量x的水平分量,xy表示位移向量x的垂直分量,W表示测试样本的宽度,H表示测试样本的高度,r为比例因子;Pmatch=Ptemplate+argmin(Mapchamfer(x)),Pmatch为边缘片段在测试样本的边缘图像上的最优匹配点,Ptemplate为边缘片段的原始位置。
可选的,所述步骤S523包括:将各个训练样本和边缘片段T的匹配代价(E)按照从小到大的顺序排序,求出相邻两个不同的(E)取值的平均值,构成一个数列{ck},令thT分别依次取数列中的值。对于取定的每个thT值,将上述准则函数分别对aT和bT求偏导数,并令偏导数为零,可以解得:
对于每个thT值,可得到相应的一组参数{aT,bT,thT},保留其中aT<bT,并将这样筛选后得到的每一组参数{aT,bT,thT}的值代入准则函数中,求出准则函数的值,取使准则函数最小的那组参数作为该对特征在该θT值下的最优弱分类器的参数。
可选的,所述调整阈值通过下述步骤计算:计算每个负样本的弱分类器的输出累加和将计算得到的各负样本的累加和按从大到小排序得到数列{Sk};设置调整阈值Ts=SK,其中,K=Rb×Nneg,Nneg为当前级中参与训练的负样本的总数。
可选的,所述由至少一级强分类器形成狗脸检测器包括:根据已训练好的所有级联的强分类器从非狗图像集中采集训练下一级强分类器所需的负样本,并计算虚警率;判断虚警率是否小于虚警率阈值TFPR,若是则停止训练,此时当前级联的强分类器的级数即为狗脸检测器的级数;若否则执行步骤S51,继续训练下一级强分类器。
可选的,所述根据已训练好的所有级联的强分类器从非狗图像集中采集训练下一级强分类器所需的负样本,并计算虚警率包括:
步骤S611,初始化总测试次数Total为0,从非狗图像集随机选择一个测试样本,并按训练样本的归一化尺寸对该测试样本进行归一化;
步骤S612,总测试次数Total加1,计算各级强分类器对该归一化后的测试样本的输出;
步骤S613,判断是否有一级强分类器对该归一化后的测试样本的输出为-1,若是则执行步骤S614,若否则执行步骤S615;
步骤S614,从非狗图像集选择另一个测试样本,并按训练样本的归一化尺寸对该测试样本进行归一化,继续执行步骤S612;
步骤S615,记录该测试样本为训练下一级强分类器的负样本;
步骤S616,判断采集到的训练下一级强分类器的负样本的个数Nneg是否达到训练要求,若是则计算虚警率FPR=Nneg/Total,若否则继续执行步骤S614。
为解决上述问题,本发明还提供一种狗脸检测方法,包括:采用所述的狗脸检测器的形成方法形成的狗脸检测器对待检图像进行狗脸检测。
可选的,还包括:采用狗脸特征检测器对待检图像进行狗脸预检测,以获得狗脸的预测图像,所述狗脸检测器检测的待检图像为所述狗脸的预测图像,所述狗脸特征检测器包括狗鼻孔检测器和/或狗眼睛检测器。
可选的,所述采用狗脸特征检测器对待检图像进行狗脸预检测,以获得狗脸的预测图像包括:
步骤S81,设定狗脸特征检测器所用到的级联的强分类器的级数,对应每个级数的狗脸特征检测器,均采用步骤S82~S85检测狗脸特征;
步骤S82,根据当前搜索窗口的尺寸对预处理后的待检图像进行分割获得至少一个搜索子窗口;
步骤S83,通过所述狗脸特征检测器检测所述搜索子窗口,直至检测到存在狗脸特征的搜索子窗口;
步骤S84,若不存在,则以预设倍数更新当前搜索窗口的尺寸,重复上述步骤S82和S83,直至当前搜索窗口的尺寸大于预处理后的待检图像的尺寸;
步骤S85,记录存在所述狗脸特征的搜索子窗口的位置作为对应级数的狗鼻孔检测器的检测结果;
步骤S86,合并狗脸特征检测器的检测结果,以获得狗脸特征检测结果;
步骤S87,将每个狗脸特征检测结果进行缩放处理;
步骤S88,预测缩放处理后获得的每个狗脸特征检测结果对应的狗脸区域和搜索范围。
可选的,所述狗脸特征为狗鼻孔,所述狗脸区域的宽度为狗鼻孔检测结果的窗口宽度的4倍,所述狗脸区域的高度为狗鼻孔检测结果的窗口高度的6倍;所述搜索范围的宽度偏移量为狗鼻孔检测结果的窗口宽度的2.5倍,所述搜索范围的上部偏移量为狗鼻孔检测结果的窗口高度的4.5倍,所述搜索范围的下部偏移量为狗鼻孔检测结果的窗口高度的2倍。
可选的,还包括:对待检图像进行预处理,所述狗脸特征检测器检测的待检图像为预处理后的待检图像。
可选的,所预处理为图像缩放、图像左右翻转或图像旋转,或者它们的任意组合。
可选的,采用所述狗脸检测器对待检图像进行狗脸检测包括:
根据预测的狗脸区域的尺寸和狗脸检测器的训练样本的尺寸之比,缩放所述狗脸的预测图像;
计算缩放后的狗脸的预测图像的距离变换矩阵;
基于 确定对应狗脸特征检测结果的狗脸检测器所需的分类器的级数,其中,N是预设的狗脸特征检测器和狗脸检测器的总级数,Nnmax是狗脸特征检测器的最大级数, 为狗脸特征检测器训练过程中设定的正样本通过率,为狗脸特征检测器训练过程中设定的负样本通过率,为狗脸检测器训练过程中设定的正样本通过率,为狗脸检测器训练过程中设定的负样本通过率,Nn为狗脸特征检测器的级数,Nf为狗脸检测器的级数;
利用Nf级强分类器级联构成的狗脸检测器和缩放后的狗脸的预测图像的距离变换矩阵检测缩放后的狗脸的预测图像中的狗脸目标;
对狗脸检测器的检测结果取平均得到狗脸检测结果。
与现有技术相比,本发明的技术方案具有以下优点:
利用了狗脸的边缘特征对颜色纹理变化不敏感的特点,训练基于狗脸的边缘特征的强分类器,由此得到的强分类器构成的狗脸检测器具有较好的检测性能。
边缘片段集合中的边缘片段由边缘图像中的像素点生长获得,与现有的需要手工挑选边缘片段、分割样本以及对边缘片段进行聚类的复杂预处理过程相比,获得边缘片段的方式较为简单,边缘片段集合自动生成,因而,降低了形成狗脸检测器的复杂度和成本。
由于联合了狗脸特征检测器和狗脸检测器对狗脸进行检测,融合了狗脸特征检测和狗脸检测的结果,由此提高了狗脸检测结果的准确率。
进一步,利用分别独立训练得到的两个级联的自适应提升检测器的级数信息,使最终检测结果的置信度保持恒定,联合检测器的检测性能远优于单个自适应提升检测器的检测性能。
先利用狗脸特征检测器检测出狗脸特征所在的位置,进而给出狗脸可能的大小和对狗脸进行搜索的区域,节省了后续采用狗脸检测器检测狗脸时计算边缘特征的时间,极大地提高了狗脸检测的速度。
附图说明
图1是本发明实施例的狗脸检测器的形成方法的流程示意图;
图2是狗脸图像的实例示意图;
图3是图1所示的步骤S5的流程示意图;
图4是图1所示的步骤S6的流程示意图;
图5是图4所示的步骤S61的流程示意图;
图6是本发明实施例的狗脸检测方法的流程示意图;
图7是图6所示的步骤S8的流程示意图;
图8是预测狗脸区域和搜索范围的实例示意图;
图9是图6所示的步骤S9的流程示意图;
图10是采用本发明实施例的狗脸检测方法和现有的狗脸检测方法的性能比较示意图。
具体实施方式
正如背景技术中描述的,现有技术中对于狗脸检测方面几乎空白,且狗脸检测相对于人脸检测而言比较困难。
发明人经过研究发现,狗脸属于颜色纹理变化较大的目标,若直接采用自适应提升方法对狗脸进行检测,由于该方法通常适用于纹理相对稳定的目标的检测,故将其用于狗脸检测会导致漏检率和误检率较高。相对于狗脸颜色纹理变化较大而言狗脸的轮廓是比较稳定的,因此,可以利用轮廓信息对颜色纹理变化较大的狗脸进行检测。然而,现有的利用轮廓信息对目标进行检测,在提取轮廓的边缘特征时往往需要大量的预处理,例如对边缘片段打分筛选、手工分割等,导致工作量很大,达不到机器自动学习的要求。因此,发明人提出一种狗脸检测器的形成方法,该方法中对于边缘特征的提取无需进行预处理和人工操作,降低了形成狗脸检测器的复杂度,也减少了形成狗脸检测器的成本。
另外,发明人通过研究发现,相对于其他宠物如:猫、兔子等而言,狗鼻孔的区分性比较好,这是因为不论狗的种类如何,大部分的狗都具有圆形的鼻孔,即狗鼻孔在形状结构上比较稳定,而且对于一般的狗而言,狗鼻孔通常比狗眼睛大,且狗鼻孔不易受其脸部毛色的遮挡,受角度变化的影响小,即对角度的鲁棒性好。因此,可以采用自适应提升方法,例如,基于矩形类哈尔小波特征的自适应提升方法对纹理相对稳定的狗鼻孔进行检测,利用狗鼻孔的检测结果来大致确定狗脸的区域,进而在确定了的狗脸区域中利用上述的狗脸检测器来对狗脸进行检测,由于在确定的狗脸区域中来对狗脸进行检测,故可以节省计算边缘特征的时间,在很大程度上提高了检测狗脸的速度,且基于狗鼻孔和狗脸轮廓联合检测的方式在很大程度上提高了狗脸检测的准确率。
因此,发明人提出通过离线训练的方式形成狗脸特征检测器和狗脸检测器,所述狗脸特征可以是狗鼻孔、狗眼睛、狗嘴巴,用于对狗脸的不同特征进行相应的检测,本发明中具体地,形成狗鼻孔检测器对狗鼻孔进行检测,形成狗眼睛检测器对狗眼睛进行检测。通过狗脸特征检测器估计狗脸的大小及其存在的区域,进而利用狗脸检测器对存在狗脸的区域中的狗脸进行检测。
图1是本发明实施例的狗脸检测器的形成方法的流程示意图,如图1所示,所述狗脸检测器的形成方法包括:
步骤S1:采集狗脸图像;
步骤S2:采集不包含狗脸的图像;
步骤S3:从所述狗脸图像提取边缘图像;
步骤S4:基于所述边缘图像获取边缘片段集合;
步骤S5:训练基于狗脸的边缘特征的强分类器;
步骤S6:由至少一级强分类器形成狗脸检测器。
以下对各步骤进行详细说明。
本实施例中,在执行步骤S1前,需要先获取狗图像集(一定数量的包含狗的图像的集合),具体地,可以通过图像采集设备,如照相机或摄像机来获取包含狗的图像,或者在网上搜索包含狗的图像,为了能够提高狗脸检测器的性能,应尽可能获取多的包含狗的图像,获取的包含狗的图像既可以是彩色图像也可以是黑白图像。获取的包含狗的图像的数量可以大于或等于第一预定数量N1,也可以略少于所述第一预定数量N1(该情况适用于获取的包含狗的图像中包括至少两只狗的图像),可选地,获取的包含狗的图像的数量为所述第一预定数量N1。
执行步骤S1,采集狗脸图像。本步骤中,采集狗脸图像包括:步骤S11:从包含狗的图像中提取包含狗脸的图像;步骤S12:对提取到的包含狗脸的图像进行归一化。
图2是狗脸图像的实例示意图,发明人经过研究发现,狗眼睛之间的距离(眼间距)d与狗脸图像的宽w之间、狗脸图像的高h与狗脸图像的宽w之间、以及以狗眼睛位置为分界的狗脸图像上、下两部分的高度(hu、hd)之间分别存在一定的比例关系,其中h=hu+hd,故本实施例中可以利用上述的比例关系从获取的包含狗的图像中提取包含狗脸的图像。通常狗眼睛之间的距离与狗脸图像的宽之比(d/w)在1:2.5~1:3.5之间,狗脸图像的高和狗脸图像的宽之比(h/w)在1.2:1~2.0:1之间,以狗眼睛位置为分界的狗脸图像上、下两部分的高度之比(hu/hd)在0.8:1~1.5:1之间,在实际提取过程中可以从上述比例关系中选取适当的比例以提取不同的狗脸,选取适当比例的准则是确保最终提取到的包含狗脸的图像中完整保留狗脸的外轮廓。
执行步骤S11,利用所述比例关系从包含狗的图像中提取包含狗脸的图像。具体实施时,在包含狗的图像中,先确定狗眼睛的位置,例如通过手工标定狗眼睛的位置,并基于狗眼睛的位置,获得狗眼睛之间的距离,即眼间距,基于狗眼睛的位置以及上述的比例关系提取包含狗脸的图像。本实施例中,以眼间距与狗脸图像的宽之比为1:3.5,狗脸图像的高和狗脸图像的宽之比为1.5:1,以狗眼睛位置为分界的狗脸图像上、下两部分的高度之比为1:1提取包含狗脸的图像。具体来说,在标定狗眼睛位置后,以狗左眼睛位置为基准,水平向左取眼间距长度的1.25倍,以狗右眼睛位置为基准水平向右取眼间距长度的1.25倍来获得狗脸图像的宽,根据狗脸图像的高和宽之间的比例关系,可以得到狗脸图像的高,即1.5倍的狗脸图像的宽,由于以狗眼睛位置为分界的狗脸图像上下两部分的高度比为1:1,则以狗眼睛位置为分界分别向上、向下各取狗脸图像的高的0.5倍,由此从包含狗的图像中提取包含狗脸的图像,其中,眼间距、狗脸图像的高和宽均以像素为单位。需要说明的是,以狗眼睛位置为分界可以是以狗眼睛的中心的纵坐标为分界线,也可以是以狗眼睛的上边缘的纵坐标为分界线,还可以是以狗眼睛的下边缘的纵坐标为分界线。提取的包含狗脸的图像的数量应当符合训练要求(或者说实际训练分类器所需的正样本数),如第一预定数量N1大于或等于100幅,本实施例中所述第一预定数量N1为200幅。
本实施例采用基于狗眼睛和比例关系的方法,可以快速、准确地提取包含狗脸的图像。在其他实施例中也可以采用其他方法提取包含狗脸的图像,例如通过人工标定的方式从包含够的图像中剪切出包含狗脸的图像。
此外,本实施例中,若获取的包含狗的图像为彩色图像,则提取的包含狗脸的图像也为彩色图像,此时需要将其转换为灰度图像,彩色图像转换为灰度图像可以采用现有技术。本实施例中,通过公式(1)将包含狗脸的彩色图像转换为灰度图像:
P=0.299×R+0.587×G+0.114×B(1)
其中,P是转换后的包含狗脸的灰度图像中像素点的灰度值,R、G、B分别是该像素点在包含狗脸的彩色图像中对应的红基色、绿基色和蓝基色的分量值。
通过步骤S11从包含狗的图像中提取到包含狗脸的图像(灰度图像)后,执行步骤S12,对提取到的包含狗脸的图像进行归一化处理,具体地,可以基于所述包含狗脸的图像的尺寸和预定的归一化尺寸获取缩放倍数,基于所述缩放倍数对所述包含狗脸的图像进行插值。
本实施例中所述归一化尺寸可以在50×50~80×80像素(归一化后的包含狗脸的图像的高×归一化后的包含狗脸的图像的宽)之间,以下以预定的归一化尺寸为75×50像素,对包含狗脸的图像的归一化过程进行简要的说明。
根据提取到的包含狗脸的图像的实际尺寸和归一化尺寸获取对该图像进行缩放的缩放倍数RF1,所述缩放倍数RF1可以通过公式(2)获得:
或
其中,Wif为所述包含狗脸的图像的宽,Hif为所述包含狗脸的图像的高,Wnf为归一化后的包含狗脸的图像的宽,Hnf为归一化后的包含狗脸的图像的高。
基于获得的缩放倍数RF1和相应的图像插值方法对该包含狗脸的图像进行归一化,所述图像插值方法可以采用现有的双线性插值(bilinearinterpolation)、最近邻插值(nearestneighborinterpolation)、双三次插值(bicubicinterpolation)等,本实施例中,采用双线性插值方法或者最近邻插值方法对提取的包含狗脸的图像进行归一化。采用图像插值方法和图像的缩放倍数对图像进行归一化可以采用现有技术,故不再展开详述。
在对包含狗脸的图像进行归一化后,为了可以获得更多的训练狗脸检测器的训练样本,以提高后续获得的狗脸检测器的性能,可以对归一化后的包含狗脸的图像(狗脸图像)进行左右翻转来获得新的狗脸图像,因此,对于通过步骤S11和S12提取了N1幅狗脸图像而言,进行左右翻转,共可以获得2N1幅狗脸图像。
具体地,通过公式(3)对狗脸图像进行左右翻转:
其中,P(i,nc-j+1)是归一化后的包含狗脸的图像中第i行nc-j+1列的像素值,P1(i,j)是左右翻转后的包含狗脸的图像中第i行j列的像素值,nr×nc是归一化后的包含狗脸的图像的尺寸。以归一化后的包含狗脸的图像的尺寸为75×50像素为例,nr=75,nc=50。
通过步骤S1采集到的狗脸图像,用于生成边缘片段集合(也称为边缘片段字典),还用于作为后续采用Adaboost训练方法训练狗脸检测器的正样本。
请继续参考图1,执行步骤S2,采集不包含狗脸的图像。
本步骤中,采集不包含狗脸的图像包括:获取不包含狗的图像;在所述不包含狗的图像中选取预设高宽比的区域并进行归一化。
具体地,可以通过图像采集设备,如:照相机或摄像机来获取不包含狗的图像、或者在网上搜索不包含狗的图像,为了能够提高狗脸检测器的性能,应尽可能获取多的不包含狗的图像,获取的不包含狗的图像尽可能包含各种常见背景和较多其他目标,如猫、兔子、鹿、老虎、狮子、行人和图标等,这样建立的训练用非狗图像数据可以较为明显地提高训练所得的狗脸检测器的性能。获取的不包含狗的图像的数量可以等于第二预定数量N2,也可以小于所述第二预定数量N2,对于后一种情况而言,则是通过在获取的不包含狗的图像中选取多个图像区域进而获得第二预定数量N2的不包含狗脸的图像。
对于获取的不包含狗的图像,可以从该图像的任意位置来选取预设高宽比的区域,所述预设高宽比与步骤S1中提取的包含狗脸的图像的高宽比相一致。从不包含狗的图像中选取预设高宽比的区域可以采用现有技术,在此不再赘述。
此外,若从不包含狗的图像中选取的预设宽高比的图像区域为彩色图像则仍需要将其转换成为灰度图像,可以参见步骤S1中将包含狗脸的彩色图像转换为灰度图像时采用的公式,在此不再赘述。
对选取的预设宽高比的图像区域进行归一化以获得不包含狗脸的图像,归一化的尺寸与步骤S1中提取的狗脸图像的归一化尺寸相同。归一化的过程与步骤S1中对包含狗脸的图像进行归一化的过程类似,在此不再赘述。本实施例中,采集到的不包含狗脸的图像的数量应当符合训练要求(或者说实际训练分类器所需的负样本数),例如,第二预定数量N2与所述第一预定数量N1在同一数量级内,所述第二预定数量为200幅。
通过步骤S2采集到的不包含狗脸的图像,用于作为后续采用Adaboost训练方法训练狗脸检测器的负样本。
由于本实施例中的狗脸检测器是基于狗脸的轮廓信息来对狗脸进行检测,故需要利用采集的狗脸图像来获取狗脸图像的边缘图像,基于该边缘图像以获得更多的狗脸轮廓信息(边缘信息),进而以采集到的狗脸图像作为训练狗脸检测器的正样本、不包含狗脸的图像作为训练狗脸检测器的负样本、狗脸的轮廓信息为特征来训练狗脸检测器。
请继续参考图1,执行步骤S3,从所述狗脸图像提取边缘图像。本实施例中,提取边缘图像可以采用现有的微分算子、拉普拉斯-高斯算子、坎尼(Canny)算子、拟合法等边缘提取技术。可选地,采用Canny算子提取狗脸图像的边缘图像,其中,边缘图像既包括狗脸边缘,也有可能包括背景边缘,这是因为提取的狗脸图像实际会比狗脸大,所以不可避免会有一些背景边缘。
在提取边缘图像后,执行步骤S4,基于所述边缘图像获取边缘片段集合(也可称为边缘片段字典)。狗脸图像的数量为第一预定数量,相应地,边缘图像的数量也为第一预定数量,对于每一边缘图像生成相应的边缘片段,所述边缘片段字典为所有边缘图像的边缘片段的集合。
具体实施时,以一幅边缘图像为例,先在所述边缘图像上选取像素点(以下称为边缘像素点)作为种子,种子的选取可以为随机选取,所述种子的数量小于所述边缘图像的像素点的总数,一般,种子的数量与边缘图像的像素点的总数之比可以在0.1~0.5之间选择。
将所述种子沿边缘生长以生成原始边缘片段。本实施例中为了获取丰富的原始边缘片段,在种子沿边缘生长(沿着狗脸的轮廓边缘计算长度)到符合以下任一种情况时停止生长:
第一种,种子沿边缘生长到预定长度,此时生成的原始边缘片段的长度为所述预定长度。所述预定长度为预先规定的原始边缘片段的最大长度,通常由狗脸图像的尺寸和复杂程度而定,所述狗脸图像的复杂程度通常代表了狗脸图像客观信息量的大小。以狗脸图像的尺寸在100×100~300×300像素之间为例,所述预定长度可以在50~150个像素之间,可选地,所述预定长度为100个像素。
第二种,种子沿所述边缘生长到边缘的终点,种子无法再继续生长(该情况适用于种子不是边缘的终点),此时生成的原始边缘片段的长度为种子与所述边缘的终点之间的长度。
第三种,种子沿所述边缘生长到了该边缘片段开始生长的起点(该情况适用于种子与边缘的终点重合),此时获得的原始边缘片段的长度为边缘的起点和终点之间的长度。其中,边缘的起点是指为计算而选择的边缘上的一个像素点,边缘的终点是指沿边缘计算一周的结束像素点。
进一步,为了获得更多的边缘片段,以提高狗脸检测器的性能,本实施例中,还利用原始边缘片段来生成新边缘片段,具体地,以预定步长依次减少所述原始边缘片段的长度,得到与原始边缘片段起点相同,长度不同的新边缘片段。所述预定步长由实际需求而定,通常可以为3~7个像素,本实施例中所述预定步长为5个像素。举例来说,若所述原始边缘片段的长度为75个像素,则以预定步长5个像素依次递减,获得长度依次为70、65、60、55、…、10、5的新边缘片段,所述新边缘片段与对应的原始边缘片段具有相同的起点。
此外,为了提高狗脸检测器的性能,还可以对边缘片段字典中的边缘片段(原始边缘片段和新边缘片段)进行判断,判断边缘片段字典中两边缘片段之间的长度差异是否小于预设阈值,若小于则去除其中一边缘片段,所述预设阈值与预设步长相关,通常所述预设阈值为3~7个像素,本实施例中,所述预设阈值为5个像素。在实际应用中,可以在每生成一个新边缘片段,就将其与边缘片段字典中已存在的新边缘片段进行比较,若二者之间的差异小于5个像素,则抛弃该新边缘片段,若二者之间的差异大于或等于5个像素,则将该新边缘片段添加到边缘片段字典。
需要说明的是,通过边缘图像生成的边缘片段字典中,既包括狗脸的边缘片段(即狗脸的外轮廓和内轮廓),也会包括背景的边缘片段。其中,通常,检测出的狗脸轮廓有一定的宽度,狗脸的外轮廓是指狗脸轮廓与背景交界的轮廓线,狗脸的内轮廓是指狗脸轮廓靠近狗脸的一侧轮廓线,也就是不与背景交界的轮廓线。
本步骤中,边缘片段字典中边缘片段基于狗脸图像的边缘图像自动生成,不需要进行如边缘片段打分筛选、手工分割等预处理,因此,降低了狗脸检测器的成本及形成狗脸检测器的复杂度。
请继续参考图1,执行步骤S5,训练基于狗脸的边缘特征的强分类器。本实施例中,是以步骤S1中提取的狗脸图像作为训练的正样本、步骤S2中提取的不包含狗脸的图像作为训练的负样本,并以边缘片段字典中的边缘片段为特征,具体地,就是利用正、负样本与每一个边缘片段之间的形状相似度和距离相似度来进行训练以获得基于狗脸的边缘特征的强分类器。本实施例中,所述训练采用Adaboost算法,Adaboost算法是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
对于边缘片段字典中的每一个边缘片段而言,其与每个训练样本的边缘图像之间均具有描述相似性的两个特征:形状相似度和距离相似度。
以下通过公式来表示形状相似度和距离相似度,需要说明的是,以下公式中给出的是待匹配图像的边缘图像与边缘片段的形状相似度和距离相似度的一种公式,本领域技术人员可以理解,在计算训练样本的边缘图像与边缘片段的形状相似度和距离相似度时,待匹配图像的边缘图像具体为训练样本的边缘图像。
通常,形状相似度用于描述边缘片段与待匹配图像的边缘图像在形状上的相似度,其物理意义是指边缘片段上的各像素点(以下简称边缘点)与距其最近的待匹配图像的边缘点的距离的平均值,待匹配图像的边缘点即指待匹配图像的边缘图像上的像素点。
待匹配图像的距离变换矩阵表示为公式(4):
其中,E={e}表示待匹配图像的边缘点的集合,d(·)表示欧式距离,p是待匹配图像中的任意一个像素点。DT为一矩阵,其大小与待匹配图像对应的矩阵的大小相同,且矩阵中每一点的值DT(p)对应于待匹配图像上相应位置的一个像素点p,表示待匹配图像中的像素点p到距离其最近的一个边缘点的距离,min(.)为求最小值函数。
基于所述距离变换矩阵计算形状相似度矩阵,表示为公式(5):
其中,T表示第T个边缘片段,t表示边缘片段T上的边缘点,T={t};NT表示边缘片段T的长度;x表示边缘片段T在待匹配图像的距离变换矩阵上移动的位移向量;xx表示位移向量x的水平分量,xy表示位移向量x的垂直分量,W表示待匹配图像的宽度,H表示待匹配图像的高度;r为比例因子。
计算相似度矩阵Mapchamfer(x)的过程中,r用来控制对待匹配图像进行搜索时搜索范围的大小。通常情况下,为了减小具有丰富边缘的区域对搜索最优匹配点(即形状相似度出现最小值的位置)的干扰,通过调整比例因子r来将搜索范围限制在边缘片段的原始位置(边缘片段的原始位置是指边缘片段在待匹配图像的距离变换矩阵上移动前的位置)附近,所述比例因子r的取值范围可以为0.05~0.1,本实施例中,r取0.05。在形状相似度矩阵Mapchamfer(x)中,值越小则表示和所选择的边缘片段越相近,其中的最小值即为形状相似度,表示为公式(6):
SimilarityT(E)=min(Mapchamfer(x))(6)
其中,SimilarityT(E)为待匹配图像的边缘图像与边缘片段T的形状相似度。
距离相似度用于描述边缘片段与待匹配图像的边缘图像在几何位置上的相似度,待匹配图像的边缘图像与边缘片段T的距离相似度DistanceT(E)取最优匹配点距边缘片段的原始位置的距离,表示为公式(7):
DistanceT(E)=d(Pmatch,Ptemplate)(7)
其中,Pmatch为边缘片段在待匹配图像的边缘图像上的最优匹配点,Ptemplate为边缘片段的原始位置,Pmatch=Ptemplate+argmin(Mapchamfer(x)),d(·)表示欧式距离,argmin(.)是指使函数为最小值时的变量值。
对于边缘片段字典中的每一个边缘片段都可以计算其与训练样本的边缘图像的两个相似特征,即形状相似度和距离相似度。对于每个训练样本而言都可计算出2NEdge个相似特征,NEdge是边缘片段字典中边缘片段的数量。
以下对步骤S5进行详细说明,请参考图3,执行步骤S51,训练初始化。具体地,为第i个训练样本(以Ei表示)设定一个初始权值ωi=1,并为训练样本Ei加上类别标签yi,正样本yi=1,负样本yi=-1。设定正样本通过率Ro和负样本通过率Rb,Ro一般取大于99%的值,Rb一般取40%~60%之间的值。
步骤S52,训练当前权值下的弱分类器。也就是在当前权值下求最优弱分类器,具体包括:
步骤S521,建立弱分类器的表达式,如公式(8):
其中,hT(E)为对应训练样本E和边缘片段T的弱分类器,为训练样本E与边缘片段T的匹配代价;θT是形状相似度和距离相似度的组合参数,θT={0°,1°,2°,...89°,90°};aT和bT是弱分类器的输出;thT是判断弱分类器输出的阈值。每个弱分类器由5个参数来描述:{aT,bT,thT,θT,T}。
步骤S522,对和边缘片段T相关的一对特征(形状相似度和距离相似度),采用tan(θT)离散化组合参数,并通过公式(9)计算每个训练样本和边缘片段T的匹配代价:
其中,SimilarityT(E)为训练样本E(训练样本的边缘图像)与边缘片段T的形状相似度,DistanceT(E)为训练样本E与边缘片段T的距离相似度,θT是形状相似度和距离相似度的组合参数,tan(.)为正切函数。
步骤S523,对θT的一个取值计算最优弱分类器的参数,参数的值是通过使以下准则函数最小化得到的,准则函数表示为公式(10):
其中,i是训练样本的序号。最优化的过程是:首先将各个训练样本和边缘片段T的匹配代价按照从小到大的顺序排序,求出相邻两个不同的取值的平均值,构成一个数列{ck},令thT分别依次取数列中的值。对于取定的每个thT值,将上述准则函数分别对aT和bT求偏导数,并令偏导数为零,可以解得:
对于每个thT值,可得到相应的一组参数{aT,bT,thT},保留其中aT<bT(通过这种参数选择方法可以使弱分类器选出的边缘片段和狗脸的边缘更相关)的参数组,并将这样筛选后得到的每一组参数{aT,bT,thT}的值代入准则函数中,求出准则函数的值,取使准则函数最小的那组参数作为该对特征在该θT值下的最优弱分类器的参数。
步骤S524,对该对特征的每一个θT值,重复上述步骤S523,计算每一个θT值下的最优弱分类器,取其中使准则函数最小的那个最优弱分类器作为该对特征下的最优弱分类器,记录该最优弱分类器的参数{aT,bT,thT,θT}。
步骤S525,对边缘片段集合中的每一个边缘片段T,重复上述步骤S522~S524,计算对应于每一个边缘片段的最优弱分类器,并取其中使准则函数最小的最优弱分类器作为在当前权值下的最优弱分类器,记录该当前权值下的最优弱分类器(也就是训练好的弱分类器)的参数{aT,bT,thT,θT,T}。
请继续参考图3,执行步骤S53,计算训练样本Ei在当前级的强分类器的输出,并判断是否分类正确。具体地,通过公式(12)计算训练样本Ei在当前强分类器的输出,并和该训练样本Ei的类别标签yi进行比较,如果一致则认为分类正确,反之则认为分类错误。
其中,Nw为训练好的弱分类器的个数,为第j个训练好的对应训练样本Ei和边缘片段T的弱分类器,H′(Ei)为训练样本Ei在当前强分类器的输出,sign(.)为符号函数。
执行步骤S54a,判断训练好的弱分类器的个数是否达到上限值,若是则执行步骤S56,若否则执行步骤S54b。其中,所述上限值可以根据实际需求设定,例如可以在100~150个之间选择。
步骤S54b,判断是否正样本的分类正确率大于Ro且负样本的分类正确率大于(1-Rb),若是则执行步骤S56,若否则执行步骤S55。步骤S54a和S54b可以互换。其中:
正样本的分类正确率=(分类正确的正样本的数量/正样本总数)×100%,
负样本的分类正确率=(分类正确的负样本的数量/负样本总数)×100%。
步骤S55,按照公式(13)更新每个训练样本的权值:
其中,ωi为第i个训练样本的权值,yi为第i个训练样本的类别标签,为第Nw个训练好的对应训练样本Ei和边缘片段T的弱分类器,exp(.)为e的指数函数。
接着执行步骤S52。
步骤S56,输出当前级的强分类器,如公式(14)所示:
其中,Ts为强分类器的调整阈值,通过下述方式计算:计算每个负样本的弱分类器的输出累加和将计算得到的各负样本的累加和按从大到小排序得到数列{Sk};设置调整阈值Ts=SK,其中,K=Rb×Nneg,Nneg为当前级中参与训练的负样本的总数。
通过上述步骤S5获得一级强分类器后,还可以继续进行训练,以获得更多级的强分类器,训练好的多级强分类器级联形成狗脸检测器,如图1所示的步骤S6所述。下一级强分类器的获得,与当前级的强分类器的获得相类似,不同的是,训练下一级强分类器时,训练构成所述下一级强分类器的最优弱分类器时的负样本有所不同。
具体实施时,步骤S6如图4所示,包括:
步骤S61,根据已训练好的所有级联的强分类器从非狗图像集(不包含狗的图像的集合)中采集训练下一级强分类器所需的负样本,并计算虚警率。如果只训练了一级强分类器,则只使用这一级强分类器。
步骤S62,判断虚警率是否小于虚警率阈值TFPR,若是则停止训练,此时当前级联的强分类器的级数即为狗脸检测器的级数;若否则执行步骤S5,继续训练下一级强分类器。其中,虚警率阈值TFPR根据实际需求设定,一般可以在10-5~10-6之间选择。
如图5所示,步骤S61可以具体包括:
步骤S611,初始化总测试次数Total为0,从非狗图像集随机选择一个测试样本(大小和位置是随机的,高宽比与正样本的高宽比保持一致),并按训练样本的归一化尺寸对该测试样本进行归一化;
步骤S612,总测试次数Total加1,计算各级强分类器对该归一化后的测试样本的输出;
步骤S613,判断是否有一级强分类器对该归一化后的测试样本的输出为-1,若是(只要有一级输出为-1则表明当前级联的强分类器可将该测试样本正确分类)则执行步骤S614,若否(所有级联的强分类器对该归一化后的测试样本的输出均为1)则执行步骤S615;
步骤S614,从非狗图像集选择另一个测试样本(大小和位置是随机的,高宽比与正样本的高宽比保持一致),并按训练样本的归一化尺寸对该测试样本进行归一化,继续执行步骤S612;
步骤S615,记录该测试样本为训练下一级强分类器的负样本;
步骤S616,判断采集到的训练下一级强分类器的负样本的个数Nneg是否达到训练要求,如是否达到第二预定数量,若是则计算虚警率FPR=Nneg/Total,若否则继续执行步骤S614。
通过上述方法获得的狗脸检测器可以用于在图像中检测狗脸,为了提高检测速度和检测率,降低虚警率,本发明实施例采用联合检测的方式,请参考图6所示,本实施例的狗脸检测方法包括:
步骤S7,对待检图像进行预处理;
步骤S8,采用狗脸特征检测器对预处理后的待检图像进行狗脸预检测,以获得狗脸的预测图像;
步骤S9,采用狗脸检测器对狗脸的预测图像进行狗脸检测。
其中,狗脸特征检测器为狗鼻孔检测器或狗眼睛检测器,或者狗脸特征检测器包括狗鼻孔检测器和狗眼睛检测器。狗脸特征检测器的形成方法可以采用现有技术,例如可以参考公开号为CN102436578A,发明名称为“狗脸特征检测器的形成方法、狗脸检测方法及装置”的中国发明专利申请中的相关记载。
本实施例先检测狗脸特征(狗鼻孔和/或狗眼睛),以此获得狗脸的预检区域,节省了后续狗脸检测计算边缘特征的时间,极大地提供了系统检测的速度。进一步融合够脸特征检测和狗脸检测,使得最终检测结果的置信度保持核定,提高了检测性能。
下面以检测的狗脸特征为狗鼻孔为例,对上述狗脸检测方法的各步骤进行详细说明。
在狗脸特征检测前,首先可以对待检图像进行相应的预处理。如步骤S7所述。所预处理可以为图像缩放、图像左右翻转或图像旋转,或者它们的任意组合。
图像缩放采用分段的图像放缩技术,其主要是为了解决质量较差的待检测图像中鼻孔部分太小和高分辨率图像处理速度慢两个问题,实验结果表明结合分段的图像放缩技术,能够检测到的最小鼻孔部分大小为9×9像素。
图像左右翻转的主要依据是训练时所有鼻孔部分图像均被左右翻转一次,以使相应样本数量增加一倍,进而提高训练所得检测器的性能。而Adaboost方法所用15个小波特征原型(Haar-likefeatureprototype,Adaboost方法专用特征)有6个不是左右对称的,因此左右翻转待检测图像对鼻孔部分检测器在检测正确率方面的有一定的提高。
因为圆形鼻孔部分对角度变化的鲁棒性好,对于鼻孔部分向右侧或者向左侧的狗图像,顺时针或者逆时针把图像旋转一定角度能使得狗鼻孔部分更接近正面,进而提高相应的鼻孔部分检测正确率。
关于图像缩放、左右翻转和图像旋转也可以参考上述提及的公开号为CN102436578A的中国发明专利申请中的相关记载,在此不再展开说明。
执行步骤S8,采用狗脸特征检测器对预处理后的待检图像中的狗脸特征进行检测,请参考图7,步骤S8具体包括:
步骤S81,设定狗鼻孔检测器所用到的级联的强分类器的级数为nnose,使狗鼻孔检测器的级数nnose依次取Nnose-Nstage+1、Nnose-Nstage+2、……、Nnose,其中Nnose为狗鼻孔检测器的总级数,Nstage小于或等于Nnose,例如可取4~10之间。对于nnose级的狗鼻孔检测器,均采用步骤S82~S85检测狗鼻孔:
步骤S82,根据当前搜索窗口的尺寸对预处理后的待检图像进行分割获得至少一个搜索子窗口。
步骤S83,通过所述狗鼻孔检测器检测所述搜索子窗口,直至检测到存在狗鼻孔的搜索子窗口。
步骤S84,若不存在,则以预设倍数更新当前搜索窗口的尺寸,重复上述步骤S82和S83,直至当前搜索窗口的尺寸大于预处理后的待检图像的尺寸。
步骤S85,记录存在所述狗鼻孔的搜索子窗口的位置作为对应级数nnose的狗鼻孔检测器的检测结果。
本实施例中,所述预设倍数与预处理后的待检测图像的尺寸相关,一般来讲,所述预设倍数在1.2~1.5之间,搜索窗口的尺寸的初始值与狗鼻孔检测器的尺寸相同,以狗鼻孔检测器的尺寸为24×24像素,所述预设倍数为1.2为例,则设置当前搜索窗口的初始尺寸为24×24像素,根据当前搜索窗口的初始尺寸对预处理后的待检图像进行分割,获得多个搜索子窗口,对每个搜索子窗口采用狗鼻孔检测器对其进行检测,如检测到狗鼻孔,则存储该搜索子窗口的位置,并输出存在所述狗鼻孔的搜索子窗口的位置,结束检测。若没有检测到狗鼻孔,则将当前搜索窗口的尺寸更新为29×29像素(按照预设倍数应该是28.8×28.8,为了方便检测,故更新后的搜索窗口的尺寸应为对当前搜索窗口的尺寸与预设倍数的乘积取整),基于更新后的搜索窗口的尺寸,继续对预处理后的待检图像进行分割,搜索狗鼻孔,直至最终更新后的搜索窗口的尺寸大于预处理后的待检测图像的尺寸。
步骤S86,合并狗鼻孔检测器的检测结果,以获得狗鼻孔检测结果。具体地,去除具有相同检测结果(即大小、位置都相同)的相邻两级的其中一个检测结果,具体实施时,可以是如果在上面对应各级数的狗鼻孔检测器的检测结果中,前一级和相邻的后一级有完全相同的检测结果,则去除前一级的检测结果,保留后一级的检测结果,否则前一级和相邻的后一级的检测结果均保留。将保留的检测结果记录下来,并记录每个保留下来的狗鼻孔检测结果所需的狗鼻孔检测器的级数Nn。
步骤S87,将每个狗鼻孔检测结果进行缩放处理。由于狗鼻孔检测结果的窗口大小与实际鼻孔大小的比例并不稳定,为了增加融合检测的鲁棒性,将狗鼻孔检测结果进行放大和缩小,对于一个狗鼻孔检测结果,缩放处理后,获得多个中心点重合(即原始的狗鼻孔检测结果的中心点)、尺寸不同的狗鼻孔检测结果,并且缩放处理后的每一个狗鼻孔检测结果所需的鼻孔检测器的级数Nn分别等于其对应的原始狗鼻孔检测结果所需的狗鼻孔检测器的级数。
举例来说,以步长为原始的狗鼻孔检测结果的5%逐级放大和缩小狗鼻孔检测结果,放大和缩小各5级,如:
原始的狗鼻孔检测结果的窗口尺寸为Winitial×Hinitial;
第1级放大后的窗口尺寸为(Winitial+wstep)×(Hinitial+hstep),第1级缩小后的窗口尺寸为(Winitial-wstep)×(Hinitial-hstep);
第2级放大后的窗口尺寸为(Winitial+wstep×2)×(Hinitial+hstep×2),第2级缩小后的窗口尺寸为(Winitial-wstep×2)×(Hinitial-hstep×2);
以此类推,
第5级放大后的窗口尺寸为(Winitial+wstep×5)×(Hinitial+hstep×5),第5级缩小后的窗口尺寸为(Winitial-wstep×2)×(Hinitial-hstep×2);
其中,wstep=Winitial×5%,hstep=Hinitial×5%。
这样,原始的狗鼻孔检测结果变为11个中心点重合的狗鼻孔检测结果。
步骤S88,预测缩放处理后获得的每个狗鼻孔检测结果对应的狗脸区域和搜索范围,以提取狗脸的预测图像。举例来说,如果缩放处理前有10个检测结果,缩放处理后的检测结果共有110个,那么需要对110个检测结果的每个确定对应狗脸区域和搜索范围,狗脸的预测图像是指预测的狗脸区域。请结合参考图8,对于每个狗鼻孔检测结果,根据狗鼻孔所在的位置(狗鼻孔检测结果的窗口A1),狗脸区域A2的宽度为狗鼻孔检测结果的窗口A1宽度的4倍,狗脸区域A2的高度为狗鼻孔检测结果的窗口A1高度的6倍;搜索范围A3的宽度偏移量为狗鼻孔检测结果的窗口A1宽度的2.5倍,搜索范围A3的上部偏移量为狗鼻孔检测结果的窗口A1高度的4.5倍,搜索范围A3的下部偏移量为狗鼻孔检测结果的窗口A1高度的2倍。由于已经有了狗鼻孔检测结果,所以采用狗脸检测器搜索狗脸时,对狗脸的搜索不需要在整个待检图像上进行,只需要在比狗脸大小稍大一些的搜索范围内进行,因此,在采用狗脸检测器进行检测时,大大减小了计算量。而搜索范围要取得稍大一些的原因则是为了使狗脸检测器对于狗脸的姿态有更好的适应性。
接着执行步骤S9,请参考图9,具体可以包括:
步骤S91,根据预测的狗脸区域的尺寸和狗脸检测器的训练样本的尺寸之比,缩放所述狗脸的预测图像。采用插值方法(如双线性插值、双三次插值等方法)放大或缩小所述狗脸的预测图像,获得尺寸与狗脸检测器的训练样本的尺寸相同或接近的狗脸的预测图像。
步骤S92,计算缩放后的狗脸的预测图像的距离变换矩阵。利用边缘提取技术提取缩放后的狗脸的预测图像的边缘图像,距离变换矩阵的计算可参考上述公式(4),含义有所不同的是,其中的E={e}表示缩放后的狗脸的预测图像的边缘点(边缘图像中的像素点)的集合,p是缩放后的狗脸的预测图像中的像素点。
步骤S93,基于公式(15)确定对应狗鼻孔检测结果的狗脸检测器所需的分类器的级数:
其中,N是预设的狗脸特征检测器和狗脸检测器的总级数,Nnmax是狗脸特征检测器的最大级数, 为狗脸特征检测器训练过程中设定的正样本通过率,为狗脸特征检测器训练过程中设定的负样本通过率,为狗脸检测器训练过程中设定的正样本通过率,为狗脸检测器训练过程中设定的负样本通过率,Nn为狗脸特征检测器的级数,Nf为狗脸检测器的级数。
本实施例中,是联合狗鼻孔检测器和狗脸检测器对狗脸进行检测,因此可以根据狗鼻孔检测器的级数来计算狗脸检测器的级数,计算的依据则是保证最终检测结果的置信度是一个常数。
对于狗鼻孔检测结果分为两类:一类是用训练得到的所有级(最大级数Nnmax)的级联检测器得到的检测结果,另一类是级数少于最大级数Nnmax的级联检测器检测得到的结果。对于后者而言,其可以看作是被完整的狗鼻孔检测器(即包含训练得到的所有级强分类器)检测为负样本的样本。
对于第二类狗鼻孔检测结果(级数少于最大级数Nnmax的级联检测器检测得到的结果),由公式(16)可以看出,只要满足公式(17)即狗鼻孔检测器的级数与狗脸检测器的级数之和为一个常数,那么最终的检测结果的置信度就为一个常数:
其中,p(o|w)表示最终检测结果的置信度,po表示含狗脸的搜索窗口在待检图像中出现的概率,pb表示非狗脸的搜索窗口在待检图像中出现的概率。
狗脸检测器所需的级数可以通过公式Nf=N-Nn-1计算,其中,N是预先设定的总级数,根据实际需求设定,本实施例中N可以取45~62。
对于第一类狗鼻孔检测结果(训练得到的所有级的级联检测器检测得到的结果),狗脸检测器所需的级数通过公式Nf=N-Nn-n计算,其中,n则可以通过公式(18)计算:
其中,Nc、Ng表示N的两个不同取值。由上式可见,参数n仅由训练阶段设定的正负样本的通过率决定。本实施例中,参数n=6。
综合上述的两种情况,最终可以得到对应Nn级的狗鼻孔检测结果的狗脸检测器所需的级数如下:
步骤S94,利用Nf级强分类器级联构成的狗脸检测器和缩放后的狗脸的预测图像的距离变换矩阵检测缩放后的狗脸的预测图像中的狗脸目标。
具体地,将缩放后的狗脸的预测图像分割成多个尺寸与狗脸检测器的训练样本的尺寸相同的搜索窗口,对于每个搜索窗口,分别按照公式(14)计算每个搜索窗口在Nf级强分类器的各级强分类器的输出(其中需要利用到步骤S92计算得到的缩放后的狗脸的预测图像的距离变换矩阵),如果输出均为1,则将该搜索窗口记录为对应Nf级强分类器级联构成的狗脸检测器的狗脸检测结果,否则淘汰该搜素窗口。如果搜索窗口在某一级强分类器的输出为1则判定其为正样本,通过该级强分类器,对于Nf的一个取值来说,只有通过Nf级强分类器的所有级强分类器的搜索窗口才被保留作为检测结果。
步骤S95,对狗脸检测器的检测结果取平均得到狗脸检测结果。
具体地,通过公式(19)获得最终的检测结果:
其中,Nr是狗脸检测器的检测结果的总数,是狗脸检测结果的窗口左上角横坐标、狗脸检测结果的窗口左上角的纵坐标,Fjx是第j个狗脸检测器的检测结果的左上角横坐标、Fjy是第j个狗脸检测器的检测结果的左上角纵坐标,是狗脸检测结果的窗口宽度,Wj是第j个狗脸检测器的检测结果的窗口宽度,是狗脸检测结果的窗口高度也可以通过计算。
需要说明的是,如果待检测的图像中有多只狗,则步骤S8会检测到多个狗脸特征,以狗脸特征为狗鼻孔为例,对应于每个狗鼻孔,则获得多个狗脸的预检图像,因此,本领域技术人员可以理解,步骤S95对应每个狗鼻孔,都会输出一个狗脸检测结果,也就是,公式(19)中的Nr是对应于一个狗鼻孔的狗脸检测器的检测结果的总数。
按照步骤S95获得的狗脸检测结果可以对图像中的狗脸位置进行标定。进一步,根据狗鼻孔检测结果和狗脸检测结果,还可以判断出狗脸的姿势。
本发明实施例的狗脸检测方法可以克服采用单个自适应提升检测器检测不够准确的缺点。图10示出了本发明实施例的狗脸检测方法和现有采用单个检测器的检测性能比较,从图中可以看出,联合检测器由于采用狗脸特征检测器和狗脸检测器进行联合检测,综合了哈尔小波特征计算速度快以及边缘特征对颜色纹理变化不敏感的优点,在达到较高检测率的同时极大降低了虚警的发生。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。