刘国明
摘要:为实现复杂背景下快速、精准的行人检测,研究了方向梯度直方图(Histogram of OrientedGradient,HOG)特征描述子和局部二值模式(Local Binary Pattern,LBP)特征描述子。通过融合HOG特征和LBP特征,然后利用支持向量机(Sup-portVectorMachine,SVM)和自适应增强(AdaptiveBoosting,AdaBoost)算法对样本特征进行训练获得分类器,最后在IN-RIA行人数据库进行了三组对比试验。实验结果表明,HOG特征描述子在行人特征描述中要优于LBP特征描述子,本设计使得行人检测的实时性和识别率都有一定的提高。
关键词:行人检测;方向梯度直方图;局部二值模式;支持向量机;自适应增强
无人驾驶汽车的快速发展,使得行人检测技术显得尤为重要。行人检测技术有两个核心的问题:行人特征提取和分类检测。Dalai等提出了HOG特征描述子,并利用SVM分类器进行行人检测。HOG特征是目前使用最广泛的行人特征描述子,通过计算梯度或边缘的方向密度,可以很好地描述局部目标的表象和形状。虽然Dalai等基于HOG的行人检测系统在行人姿态单一的MIT数据库上检测率接近最优,但是实际应用中的行人检测系统容易受到行人姿态、人物遮挡以及光照等因素影响。因此,多姿态以及复杂背景下的行人检测仍然是目前的研究热点。0jala等提出LBP特征描述子,然后又针对原始LBP特征的优化,提出了具有旋转不变性的LBPROT以及等价模式(Uniform Pattern)ULBP特征描述子。针对HOG特征在描述局部纹理特征的不足,利用LBP特征来描述图像局部纹理特征,据此,Wang等提出了基于HOG-LBP融合特征的行人检测。
行人图像的特征向量提取出来后,就利用分类器进行行人的检测。SVM是一种有监督式的学习模型,其定义为把训练样本贴好标签,然后找到最优化的分隔超平面,一般用于二类分类问题。Freund等改进了Boosting算法,提出了AdaBoost算法。针对AdaBoost算法,Jones等提出了由若干个AdaBoost分类器串联组合而成的AdaBoost级联分类器,成功实现了第一个实时人脸检测系统。Schapire证明了AdaBoost算法的收敛性。
通过融合HOG-LBP特征,利用开源计算机视觉库(OpenSource Computer Vision Hbrary,OpenCV)在Visual Studio 2012平台上实现了静态图像中的行人检测。在INRIA数据库进行了三组对比实验,第一组实验通过融合HOG-LBP特征提取行人特征,并采用SVM分类器进行行人分类检测。第二组和第三组实验为单一特征,并采用AdaBoost分类器进行行人分类检测。从实验数据中观察到,第一组实验的识别率明显比另外两组高,并且训练分类器的时间也明显少于另外两组实验。
1特征提取
1.1 HOG特征提取
提出HOG特征描述子,它通过计算和统计图像局部区域的梯度方向直方图来构成特征,广泛应用于图像处理中进行物体检测。提取HOG特征包括以下几个步骤:
1)归一化图像。首先把输入的彩色图像转灰度图像,然后对图像进行平方根Gamma压缩,从而达到归一化效果。这种压缩处理能够有效地降低图像局部的阴影和光照变化,从而提高HOG特征对于光照变化的鲁棒性。
2)计算图像梯度。首先用一维离散微分模版[-1,0,1]及其转置分别对归一化后的图像进行卷积运算,得到水平方向的梯度分量以及垂直方向的梯度分量。然后根据当前像素点的水平梯度和垂直梯度,得到当前像素点的梯度幅值和梯度方向。公式如下:
3)为每个细胞单元构建梯度方向直方图。首先把尺寸为64x128的图像分为8x16个cell,即是每个cell为8x8个像素。然后把梯度方向限定在[0,],并将梯度方向平均分为9个区间(bin),每个区间20度。最后对cell内每个像素用梯度方向在直方图中进行加权投影,也就是说cell中的每个像素点都根据该像素点的梯度幅值为某个方向的bin进行投票,这样就可以得到这个cell的梯度方向直方图,也就是该cell对应的9维特征向量。
4)把细胞单元组合成大的块(block),块内归一化梯度直方图。把相邻的2x2个cell形成一个block,这样每个block就对应着36维的特征向量。由于局部光照的变化以及前景和背景对比度的变化,使得梯度强度的变化范围非常大。为了进一步消除光照的影响,最后对block内的36维特征向量进行归一化。公式如下:
其中,v是未经归一化的描述子向量,v2是v的2范数,是一个极小的常数。
5)收集HOG特征。如图1所示,采用滑动窗口的方法,用block对样本图像进行扫描,扫描步长为一个cell,所以block之间其实是有重叠的。最后把所有归一化后的block特征串联起来就得到3780维特征向量。
1.2 LBP特征提取
文献[2-5]提出LBP特征描述子,并针对原始LBP特征进行了优化。LBP描述子是一种用来描述图像局部纹理特征的算子,具有灰度不变性和旋转不变性等显著的优点。提取LBP特征的基本思想是:利用中心像素點的灰度值作为阈值,其相邻像素点的灰度值与之进行大小比较得到二进制编码来表示局部的纹理特征。
原始的LBP算子定义在3x3的窗口,根据编码的思想,一共有256种编码。为了适应不同尺度的纹理特征,提出了圆形LBP算子。并且允许在半径为R的圆形邻域内有任意多个像素点。为达到旋转不变性的要求,又提出旋转不变模式的LBP,即不断旋转圆形邻域得到一系列初试定义的LBP值,取其中最小值作为该邻域的LBP值。为了解决二进制模式过多的问题,提高统计性,又提出了采用一种等价模式来对LBP算子的模式种类进行降维。LBP特征提取流程如图2所示,具体步骤如下。
1)对图片进行ULBP编码,得到LBP图谱。采用8个采样点半径为1的圆形算子对输入图像进行等价模式编码。在IN-RIA行人数据库正样本训练集中,图像尺寸为96x160,首先把相邻的8个像素的灰度值与中间像素的灰度值进行比较,若周围像素灰度值大于中心像素时,则该像素点的位置被标记为1,否则为0。这样就得到了8位二进制编码,然后统计该二进制编码从0到1或从1到0跳变的次数,当不多于两次跳变时,该LBP所对应的二进制就称为一个等价模式类,除等价模式类以外的模式都归为混合模式类。Uniform形式有58种输出,其他的所有值为第59类,这样就可以从原来的256维降到了59维,从而得到LBP图谱。
2)计算每个cell的直方图,并进行归一化。根据上面的方法处理行人正样本,把96x160的图像裁剪为64x128。然后把图像平均分成4x4个cell,即是每个cell为16x32个像素。接着统计每个灰度值出现的次数,得到每个cell的灰度直方图以及整幅图像的直方图。最后是对每个直方图进行归一化。
3)收集LBP特征。经过上面的处理,每个cell有59维特征向量,那么整幅图像就有4x4x59=944维特征向量,加上整幅图像的59维特征向量,把这些特征串联起来就得到1003维特征向量。
2分类器
2.1SVM分类器
SVM是一种有监督式的学习模型,一般用于二类分类问题。把训练样本贴好标签,然后通过SVM找到最优化的分隔超平面。训练SVM分类器步骤如下:
1)建立训练样本。根据提取到的特征向量分配数组空间以及贴好相关标签,正样本类别为1,负样本类别为0。
2)设置SVM参数。选择SVM的类型为c_svc,核函数类型为HNEAR,算法终止条件中的最大迭代次数设置为1000,容许误差为FLT_EPSILON。
3)根据训练样本和SVM的参数训练支持向量机。
41预测测试样本的类别,并标出行人的位置。
2.2 AdaBoost分类器
AdaBoost是一种迭代算法,其核心思想是针对同一个训练集进行多轮训练,得到多个弱分类器及每个弱分类器对应的权重,然后把这些弱分类器集合起来,构成一个强分类器。训练AdaBoost分类器步骤如下:
1)准备正负训练样本。把正样品裁剪为统一尺寸,而且要求负样本的尺寸大于正样本。
2)生成样本描述文件。其中正样本描述文件包括图像的文件名,图像类型,图片数量以及图片处理区域的左上角坐标和右下角坐标。
3)利用HOG、LBP特征训练样本,得到分类器。
4)利用训练好的分类器进行行人检测。
3实验结果与分析
在INRIA行人数据库对三种方法进行对比实验。该数据库训练集中正样本614张(包含1239个行人),负样本1218张。测试集中正样本288张(包含1126个行人),负样本453张。在实验中,对于训练集正样本只选取了其中的1208个行人,以及左右翻转后的图像,一共2416个正样本。训练集负样本则从1218张无行人的图像中随机截取12180张64x128的无行人图像。然后通过2416个正样本以及12180个负样本训练一个初始分类器,在负样本原图进行行人检测,检测的结果都为误报,最后把这些误报加人训练集负样本,重新训练,生成最终的分类器。
行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到非极大值抑制(NMS)来选取那些邻域里分数最高的窗口,并且抑制那些分数低的窗口,达到窗口融合的效果,从而使检测的准确率更好。
三组对比实验所采用的特征维度,训练时间,检测时间以及识别率如表1所示。虽然第一组实验的特征维度相对较高,但是识别率最高,而且训练SVM分类器的时间明显比训练Ad—aBoost分类器的时间短。图3通过融合HOG-LBP特征,可以准确检测出行人的位置。图4和图5为单一特征,其漏检、误检增加。比较后两组实验,得出结论是HOG特征描述子比LBP描述子更能描述行人的特征。
4结束语
相对于单一的特征描述子,通过融合HOG-LBP特征,识别率有了很大提高。利用OpenCV在Visual Studio 2012平台上,简单、快速实现了静态图像中的行人检测。对于想了解HOG和LBP特征提取具体步骤以及怎样利用OpenCV训练分类器有很好的参考价值。利用HOG-LBP特征融合提取行人特征的維度相对较高,但是训练SVM分类器的时间明显少于训练Ada-Boost分类器的时间,并且识别率较高。实验还表明,在采用相同的算法训练分类器时,利用HOG特征描述子进行行人检测的识别率比LBP描述子高。
下一步工作是从特征提取和分类识别两个方面对行人检测进行研究。一方面,融合多种特征以及对特征进行降维。另一方面,寻找一种计算复杂度较低,并且推广性较好的分类算法,解决复杂背景以及半遮挡行人识别率低的问题,从而加快行人检测的速度以及提高检测率。