基于卷积神经网络预处理的Hog特征车辆检测算法
2019-01-23杨映波周欣曾珍魏彪
杨映波,周欣,曾珍,魏彪
(四川大学计算机学院,成都 610065)
0 引言
车辆检测作为当今智能交通中一个重要的课题,广泛的应用于道路监控、车辆追踪、车辆搜寻定位等领域,具有重大的研究意义。目前车辆检测的常用方法有以下两种,基于运动背景的,背景差分法[1]、帧间差分法[2]、光流法[3]等;以及基于车辆局部特征,利用SIFT[4]、Hog[5]、Harr[6]等特征计算车辆特征,放入支持向量机(SVM)[7]分类,进行车辆检测。前一种方法有一定的局限性,必须基于连续多帧的图片才能够进行检测,同时对背景的要求极高,倘若出现雨雪天气或者光照变化,会导致识别率降低。后一种方法,SIFT特征拥有尺度不变性以及旋转不变性,但由于其计算量较大,实时检测效率较低。Harr特征描述的是纹理特征,更适合于阴影检测,当相比于SIFT以及Hog特征,缺乏了方向信息,导致在目标识别中有一定缺陷。Hog特征描述的是边缘方向密度,能够有效地描述车辆边缘轮廓,相比于SIFT特征,缺少尺度不变性,但可以通过对检测图片进行多尺度缩放来进行检测,计算量虽然会因此增大,但可根据具体场景进行调节。同时基于车辆局部特征的方法,能够有效地根据车辆的车尾以及车头进行车辆检测,但对车辆的侧身识别率依然不高。同时,自2012年以来,深度学习取得了爆发性的突破,卷积神经网络(CNN)[8]作为其中模型之一,对图像目标识别分类更有着出色的表现。其通过对图像进行多次的卷积、激活、池化操作,自主进行特征提取,将高维特征压缩至低维特征,进行特征分类。然而由于其运算过程如同黑盒,科学家们无法用具体的数学方式去证明、表示其运算过程,因此卷积神经网络具有一定的不可解释性,这是当代工程应用无法接受的。
因此,本文基于以上特征与模型,提出一种车辆检测算法,首先利用卷积神经网络的多个卷积核对图像进行特征描述,因其浅层特征是对图像颜色、边缘、纹理等特征的描述,根据其浅层特征中,边缘性较好的图像,获取对应的卷积核。用提取后的卷积核对原始图像进行预处理,然后进行Hog特征运算,放入支持向量机中进行训练、分类,从而识别出正确车辆。实验表明,本方法能够有效地从各个角度检测出车辆,识别率优于传统方法以及经典卷积神经网络。
1 卷积神经网络原理
卷积神经网络与本方法中所用到的支持向量机同为有监督学习,区别在于,深度学习作为“端到端”的学习,无需人工特定的选择特征。深度学习以数据的原始形态作为输入,经过卷积层、池化层、激活层等多层叠加抽象,从原始数据中自动提取本次任务所需的最终特征,其中所有过程并无夹杂人为操作。以下本文将着重介绍卷积层、池化层与激活层,以便后续展示输出图像特征。
卷积层通过一定大小以及数量的卷积核与同等大小图像区域进行卷积运算,从而获取图像颜色、形状、纹理等局部信息。卷积层中包含三个重要参数,卷积核数量,卷积核大小以及卷积步长。首先我们设Xi,j表示原图第i行第j列的像素,Wm,n为卷积核第m行第n列的权重,b表示为卷积核的偏置项,卷积核大小为k,ai,j表示卷积后的特征图在第i行第j列的像素,因此卷积层的计算公式为:
不同的卷积核会分别检测出图像的局部信息,卷积核权重由网络每次“反向传播”进行修正。通过组合这些卷积过后生成的图像,整个卷积神经网络会对训练图像有全方位的了解,以便后续提取有效特征。
池化层能够对特征图进行降采样工作,通过去除特征图不重要的像素信息,进一步减少参数数量,同时保证特征不变性,在一定程度上防止了数据过拟合。池化操作常见的操作有平均值池化以及最大值池化。
本文方法中使用的为最大值池化,在n×n的图像区域中,取其中最大的像素值,作为本区域的池化过后输出值。池化公式为:
激活层能够增加整个卷积神经网络的表达能力,(1)、(2)两个公式仅仅为线性操作,只能起到线性映射的作用,无法构成复杂的函数。本文方法中使用ReLU函数作为激活函数,其能够加速随机梯度下降方法收敛,收敛速度约比其他激活函数快6倍。ReLU函数为:
2 Hog特征提取
Hog特征全称Histograms of Oriented,是基于边缘与梯度的描述子,本文认为即使机器不知道对应的边缘与梯度的位置,但通过局部梯度方向直方图也能够有效地描述局部目标的形状。因此Hog特征,作为由图像局部区域的梯度方向直方图所组合构成的特征,能够有效的描述车辆边缘与梯度特征。以下为本文
Hog特征提取过程。
(1)首先输入图像为经过灰度化的灰度图像,计算其像素点(x,y)梯度大小以及方向,像素点(x,y)处的梯度值与方向分别为 G(x,y),θ(x,y),具体公式如下:
(2)将图像划分为若干个n×n的cell,各个cell之间不能重叠。在每个cell内划分相同的9个方向,以9个方向的等距离角度区间作为横轴,梯度大小作为纵轴,计算出各个cell的梯度直方图,得到每个cell的9维特征值。
(3)将相邻的4个cell组合成为一个Block块。串联4个单元格的9维特征值,获得本Block块的36维特征值,然后对此特征值进行归一化。
(4)将所有Block块的特征值串联起来,从而得到本图像的Hog特征值。其中各个Block之间可以重叠,以增强Hog特征鲁棒性。
3 基于卷积核预处理的Hog特征车辆检测
综上所述,传统Hog特征搭配支持向量机SVM的方法能够有效对车头以及车尾进行检测,但无法有效的获取车辆侧身的边缘信息。卷积神经网络能够自动获取特征,对图像中待识别目标有着强大的描述能力。但当它在对原始数据进行不断的抽象过程中,随着网络层数的加深,每层的输出变得越来越抽象,描述能力也越来越强。而Hog特征是提取像素级的梯度方向特征,对于高度抽象的特征无法提取有效的信息。根据Matthew Zeiler等人于2011年提出的反卷积神经网络[9],以及次年的特征可视化论文[10]所述,卷积层第一层与第二层学习的是颜色、边缘等基础特征,第三层学习的是纹理特征。往上更高层的特征则越来越抽象。因此第三层以后的输出特征对于Hog计算来说,已经过于抽象。但第一次卷积后的特征,能够对图像基础信息,例如纹理、颜色、特征等,有良好的描述以及较低的抽象程度。因此本文选择获取卷积神经网络第一层特征,然后进行Hog特征运算,提升原始Hog特征对车辆侧身特征的描述,给与它更强的特征描述能力,从而无论从车辆头部、尾部、侧身各个角度,都能够有效地检测车辆。以下分节为具体算法流程。
3.1 实验卷积特征选取
(1)根据公式(1),使用 5个 5×5的滤波器对输入图像进行卷积,得到C1层5个126×126的特征图。
(2)按公式(2)、(3)将 C1 层中每组特征根据 2×2的邻域进行最大值池化,然后通过一个ReLU激活函数,得到S2层5个63×63大小的特征图。
(3)根据公式(1),使用 16个 3×3的滤波器对 S2层进行卷积,得到C3层16个61×61大小的特征图。
(4)同样按公式(2)、(3)对 C3 层进行下采样,获得30×30的特征图。
(5)将特征图排列成特征向量。
根据前文所述,我们需要的是卷积神经网络浅层信息。经过大量实验,因此本文按上述具体参数构建出五层卷积神经网络。具体卷积神经网络结构图,如图1所示。
图1 卷积神经网络结构示意图
在获取了C1层的特征图之后,除去明显的颜色特征图以及其他基础特征图,其中部分边缘图以人的肉眼无法判断其边缘性特征优劣。故本文选取了以下4张具有代表性的边缘特征图,如图2所示,保存对应的4组卷积模型以及卷积核。对整个相同的数据集进行卷积,得出4组输出特征图,根据第2小节所述算法,分别计算其Hog特征,代入支持向量机进行训练,识别率如表1所示。
图2 原始图像与四组边缘特征图
表1 不同模型实验效果对比
由表1可知,第一组卷积模型提取的边缘特征图能够更好地描述车辆边缘性特征。因此保留其模型以及对应的卷积核,具体卷积核如下公式(8)所示,选择本组卷积特征作为计算Hog的输入图像。
3.2 车辆检测算法流程
根据3.1节所述,实验可以通过训练后的卷积神经网络结构或者提取出的卷积核获得边缘特征图,本文选择通过已有的卷积神经网络对原始图像进行预处理。具体车辆检测算法流程如下:
(1)根据3.1节训练过后的网络模型,对图像进行预处理,获得C1层特征图。选取其中边缘性最好的边缘特征图。
(2)将获取的边缘特征图归一化为128×128像素大小的灰度图像。
(3)将灰度图像划分为64个16×16大小的cell,根据公式(4)、(5)、(6)、(7),计算每一个 cell内部像素点的梯度大小与方向。
(4)将每一个Cell的梯度方向由0-180°分为9个方向,每个方向范围为20°。根据每个像素点的梯度大小与方向,投影到9个方向块中,获得一个9维的cell块Hog特征值。
(5)将4个相邻的cell合并成为一个Block块,窗口滑动步长为32个像素,因此整张图片包含16个Block块。选择归一化函数L2-norm,对Block块进行归一化,增加对光照的鲁棒性。
(6)将每个Block块的Hog特征值级联,获得576维输出特征,放入支持向量机中进行训练,其中惩罚系数设为0.1,核函数选择高斯核函数。
4 实验结论与分析
4.1 样本集
本方法中采取标准样本集与自制样本集所结合的方式,组成本方法中所用的数据集。自制样本集来自成都市某路口2448×2048像素高清分辨率监控摄像仪,我们手动截取了摄像头视角下行驶的各类车辆,以便后期本方法能够适用于成都市道路监控。标准样本集来自Stanford大学车辆数据集,有一定的代表性以及权威性。标准集中含有8144张训练数据,8041张测试数据,以上数据均为正样本。自制样本集中含有4000张训练正样本数据,4000张测试正样本数据。其中有关训练以及测试数据的负样本,我们通过截取成都市道路监控摄像头下非车辆的图片作为负样本。所有样本像素大小为128×128。部分示例如图3所示。
图3 标准样本集与自制样本集部分示例
4.2 实验结果分析
本文按照以上组合集,选取6000张车辆图像作为训练正样本。其中5000张图像来自标准样本集,1000张来自自制样本集。同时从自制样本集中选取5000张作为训练负样本。选取12041张车辆图像作为测试正样本,其中包含8041张Stanford大学标准车辆集以及4000张自制样本集。从自制样本集中再取4000张作为测试负样本。由上文可知,本文利用卷积神经网络自动学习特征,对原图像进行预处理,从而获取良好的边缘特征图。在此本文根据基于人工手动设置的边缘提取算子,对以上数据集进行预处理,部分边缘特征示例如图4所示。最后计算相应的边缘特征图Hog特征,分别放入支持向量机训练、分类,实验结果如表2所示。
图4 各边缘提取算子部分样本示例
表2 不同算子实验效果对比
由图4与表3结合所知,Canny边缘提取算法提取过多无关车辆边缘特征,导致正样本识别率(36.24%)较低,总体识别率(51.25%)大幅度低于其他边缘提取算法。与未经图像预处理的HOG+SVM经典车辆检测算法相比,基于Sobel与Robert边缘提取的算法识别率仅略高于经典算法。而结合由自主学习的卷积神经网络所提取的边缘特征图,能够较好地保存原图车辆的细节特征,其算法识别率(99.42%)明显高于余下算法识别率。
同时将以上数据集代入目前常规的车辆检测算法,实验结果如表3所示。
表3 不同算法实验效果对比
由上表所知,本文所提出的方法识别率为99.42%,,明显高于经典HOG+SVM车辆检测算法(96.07%),略高于经典CNN算法(98.64%)。三种算法的正负样本识别率相对于整体识别率没有较大的波动,证明数据集设置合理。
5 结语
针对在道路监控中的车辆检测,本文提出了一种基于卷积神经网络预处理的Hog特征车辆全身检测算法。根据卷积神经网络下采样层中边缘性明显的图像,提取对应的卷积核,对原始图像进行预处理,计算其Hog特征,最后交由支持向量机进行分类。实验证明基于CNN预处理的Hog特征在对车辆全身的描述性上强于基于人工边缘提取算子预处理的Hog特征以及单一HOG特征,在识别率上略高于经典CNN网络。相对于经典CNN网络需要计算性能较好的GPU以及足够的内存,本文所提方法对设备硬件性能的要求较低,适用面广,更方便适用于各道路监控等设备,且识别率更高。