阮 航,王立春
(南京航空航天大学 计算机科学与技术学院,江苏 南京 211100)
车辆检测和分类是智能交通系统的关键,有助于提高交通监控和车流量统计的系统效率。交通视频监控情况下车辆检测和分类面临的主要难点是道路环境复杂、光照和天气变化多样、摄像机位置高度不同。而解决这些问题成为智能交通系统实现的关键。
车辆检测和分类包括定位车辆位置和分类车辆类型。在车辆检测方面,基于特征和基于外观的检测方法被广泛研究。陈拥权等[1]通过图像积分图来提取Harr特征,采用Adaboost算法对特征机械能分类,通过模式匹配实现车辆检测。朱彬等[2]提出基于Harr-like和MB-LBP特征的分区域多融合特征车辆检测方法,检测远近不同车辆,提升系统实时性。但是该方法对遮挡、光照变化和透视畸变十分敏感。文献[3]利用对称性和尾灯的特征信息,通过移动摄像头来检测和跟踪多个车辆。文献[4]使用帧差来检测移动车辆,生成的二值图像被用于对称滤波器检测汽车的前视图。但该方法不能处理多辆车的情况。王海等[5]提出以低维Harr-NMF特征代替Harr特征,并自适应修正改进SOMPNN算法,用于车辆检测。文献[6]采用直方图分析与自适应阈值结合的方式预测车辆假设区域,并通过纹理、对称性、轮廓匹配度等验证假设区域。
对于车辆细粒度分类,主要是识别车辆的品牌。然而,传统的车辆分类方法只关注浅层特征,难以在细粒度分类中取得良好的表现。文献[7]基于视频车辆的几何参数特征来提取车辆轮轴参数,实现车型自动分类。孟华东等[8]提出基于贝叶斯网络的传感器融合车辆分类系统,通过提取车辆高度轮廓和平面轮廓实现车辆特征提取。文献[9]通过构建基于稀疏特征和背景建模的监控车辆分类识别框架,将车辆图像表示为低维稀疏线性组合,实现车辆分类。文献[10]在运动目标检测和图像标定技术上,通过引用多类支持向量机实现车辆分类。张伟等[11]基于邻接传感器网络和BP神经网络进行车辆类型分类。文献[12]基于朴素贝叶斯分类模型,采用离线训练分类器实现车辆分类。
这些方法需要复杂的图像或视频预处理,对图像质量要求较高,容易受到变形的影响。在现实的交通监控,复杂的道路环境,各种光照和天气条件下,摄像机采集图像的位置和方向影响车辆检测和分类的性能。基于特征和基于外观的方法没有足够的鲁棒性,因为上述方法只提取图像浅层特征。
近年来,深度学习在图像处理领域,尤其是卷积神经网络在物体检测和图像分类方面取得了很好的效果。卷积神经网络是一种深度特征模型,主要通过卷积提取图像浅层和深层特征,然后进行特征组合,从而实现图像分类和物体检测。卷积神经网络具有良好的鲁棒性,需要较少的图像预处理。其提取深度特征的能力使其分类性能远远超过传统方法。
卷积神经网络卷积层为特征提取器表现为对象检测器,所以卷积神经网络也可以用来定位对象。Zhou等[13]采用类激活映射来表示区分图像区域,可用于对象检测和类别识别。文献[14]提出了一个基于单个图像的车辆识别框架,该框架通过使用基于部件检测器来提取车辆的特征,但它无法识别一个图像中的多个目标。文献[15]通过主动学习策略实现车辆识别和车辆跟踪系统。
受到这些思想的启发,文中提出了一种基于卷积神经网络特征图的车辆检测和分类模型,以准确、快速地对车辆进行检测和分类。
首先建立一个名为DetectNet的检测网络,用卷积神经网络模型训练图像。在这个网络中,在卷积神经网络的最终输出之前对特征地图进行可视化和分析,发现并非所有特征对于车辆检测都具有相同的贡献。因此,使用高维空间特征加权算法在DetectNet上计算加权和,得到图像的加权特征图。然后,对加权映射的特征图通过阈值分割算法得到车辆目标候选框。最后,通过提取图像的卷积神经网络特征,可以得到称为ClassNet的分类模型。这种基于CNN的模型可以检测多个车辆目标,并输出每个车辆模型的分类结果。
AlexNet,VGG,GoogLeNet是常用的深度神经网络结构。文中采用GoogLeNet作为基本的卷积神经网络。该网络有22层,包含大量的神经网络参数。首先使用ImageNet来训练网络模型,然后用小规模的车辆数据集对这个模型进行微调。
在训练过程中,CNN中的不同卷积核提取图像不同特征,用于生成图像特征图。为了分析不同的特征图对车辆检测的影响,将输入图像I送入DetectNet,经过前向计算,得到图像I的每个类别的概率。假设最大概率来自类别c,Sc是该类的得分,为寻找图像响应最大的区域,通过分析不同特征图的像素值,可以得到图像I对应的得分Sc如式1,其在所有类别中所占的概率pc的计算如式2:
(1)
(2)
其中,f为激活函数,n是最后一层全连接层的神经元个数,对于神经元k,Zk为最后的输出值。
如图1所示,卷积层和全连接层是DetectNet最后输出的两层网络层。
图1 卷积层(CONV)和全连接层(FC)的结构
(3)
(4)
其中,Zk为最后得到的加权特征图;m为卷积层神经元的数量;Mki为第i张特征图的全部响应。
将图像输入到DetectNet通过一次前向计算,得到图像的分类结果。通过计算该分类结果的最大响应,可以得到最后的加权特征图和特征地图的最大响应,以获得最终的加权特征地图。如图2所示,左栏为原始多目标车辆图像,包括不同数量的车辆,不同的照明条件和不同的噪声影响,右栏是加权特征映射算法对原始图像的检测结果。颜色越深,图像中的响应越大。如图2所示,该算法能够完美地检测和定位一幅图像中的多辆车。
图2 特征图加权映射车辆检测结果
目标检测是分类的基础,只有准确地识别目标才可以更好地分类。在真实的道路图像中,首先检测定位车辆区域,然后细分类车辆目标。通过微调GoogLeNet训练得到DetectNet进行车辆检测,将测试图像放入DetectNet中,通过前向计算得到最终卷积层的特征图和全连接层的权重。卷积神经网络提取边缘、线条等浅层特征到提取深层结构特征,最终组合成高级语义特征。
如图2所示,图像中较深的颜色代表最重要的区域,即车辆目标。对于车辆检测,重复上述步骤结合尺度转换和消除颜色信息。然后,通过累加单个目标结果并将加权特征映射上采样到输入图像的大小,最终得到多个车辆位置。通过对特征图进行轮廓外接矩形检测,上下左右扩充矩形边框,最终得到车辆的检测矩形框。
由于卷积神经网络的深层结构和大量的权值参数,使得需要大量时间来训练神经网络。因此,文中利用预先训练的GoogLeNet模型来加速DetectNet和ClassNet的训练过程。GoogLeNet模型是在ImageNet的大规模图像数据集上训练完成的,然后对预训练模型进行微调,得到DetectNet来进行车辆检测和分类任务。使用GoogLeNet模型参数初始化权重,然后使用车辆数据集更新权重参数。在计算机视觉任务中使用预训练方法是非常普遍的,有许多文献试图寻求这种方法背后的理论。实验基于Caffe平台和GeForce GTX TITAN X GPU,在预训练模型上进行微调,只需要2个小时就可以微调预训练模型完成训练。
利用web-nature数据集训练DetectNet和surveillance-nature数据集训练ClassNet,而这两个数据集都来自Compcars。其中web-nature数据集包含163种车辆类型,文中选择比较常见的73种,共52 083张图像,这些图像具有复杂多样的背景,对车辆检测问题有较好的适用性。surveillance-nature数据集包含281辆汽车,共有50 000辆汽车图像。这些图像是从真实道路监控场景下采集的车辆正向图像,包括不同天气和不同光照的图像。这些图像具有较少的背景信息和更详细的车辆信息。文中利用该数据集来训练ClassNet进行细粒度车辆分类。
为了测试训练好的网络,从交通监控视频中采集了3 600幅图像,测试数据集包括不同光照和不同环境的图像。首先将测试图像输入DetectNet,经过前向计算,对特征进行加权映射得到车辆检测结果。然后,将检测到的车辆目标输入ClassNet进行细粒度车辆分类。
在车辆检测中,首先训练DetectNet,得到单个加权映射特征图,然后累积这些特征图得到最终的车辆定位结果。
采用web-nature数据集作为训练数据集,微调GoogLeNet模型,得到最终车辆检测模型DetectNet。首先,将训练数据集图像归一化256*256*3,对整个数据集求取均值,并将每幅图像进行去均值处理。在进行微调之前,将GoogLeNet全连接层中的1 000个神经元替换为73即替换为训练数据集类别数,并且对最后全连接层参数进行随机初始化。为防止小规模数据集引起的过拟合问题,将整个网络初始学习率设为0.001,并使用随机梯度下降更新(SGD)参数,最终得到一个损失收敛网络DetectNet。对于ClassNet,将GoogLeNet全连接层输出替换281个类别,而不是分类层中的1 000个类别,对参数和学习速率进行与DetectNet相同的初始化。经过30 000次迭代后,得到了收敛网络ClassNet用于车辆分类。
3.3.1 车辆检测
对于DetectNet给出的候选框,在得到最终的特征映射后,首先通过图像处理方法找到候选框中心的外轮廓,然后展开该轮廓以得到最终框。对于检测准确性的判别,利用IoU(交并比)方法来验证候选框是否为车辆位置,计算结果如下:
(5)
其中,A为候选框;B为真实矩形框;IoU为矩形A和矩形B的交集占矩形A和矩形B的并集的比率;SI为矩形A和矩形B的交集面积;SA+SB-SI为矩形A和矩形B的并集面积。
文中选取交并比0.7为阈值,即预测矩形框与真实矩形框重合度大于等于0.7的为检测正确,否则为检测错误。
将DetectNet模型的检测结果与其他检测方法进行了比较,包括提取Harr-like特征,对称特征和Gabor特征,分类器采用Adaboost。另外,还将这种方法与两种深度学习方法进行了比较。如图3所示,随着图像数量的增加,车辆检测性能总是优于其他方法。
图3 随着测试图像数量增加检测精度的变化
在图4中,给出了这些方法的平均检测精度。可以发现,DetectNet模型具有更高的平均检测精度。
图4 平均检测精度对比
可以看出,基于卷积神经网络的加权特征图方法可以提取不同而且丰富的特征,较为准确地检测目标。该方法无需复杂的图像预处理,通过将图像输入卷积神经网络来提取图像的深层特征,从而得到图像响应最大的区域。
3.3.2 车辆分类
在细粒度车辆分类中最不同的地方是车标,但是在包含多个车辆目标的图像中很难获得车标。因此,提出了一个基于CNN的神经网络模型ClassNet进行细粒度分类,网络深层结构能够区分图像的深层特征。
如图5所示,随着测试图像数量的增加,与SVM和AdaBoost分类器相比,ClassNet的细粒度分类准确率更高,ClassNet均有更高的性能。对于传统方法,利用SIFT进行特征提取。在图像网格上提取SIFT描述符并合并空间信息以获得特征向量。然后利用SVM和AdaBoost分类器进行训练和测试。其中一个原因就是SIFT提取图像边缘和纹理等浅层的局部特征。但ClassNet在前几层神经网络中已提取到这些特征,高层卷积层提取到轮廓等深层特征,随着层数的增加,提取到的则是特征的高级语义组合。
图5 随着数量增加细粒度分类准确率的变化
文中也将ClassNet与其他相关结果进行了比较,如图6所示,可以看出ClassNet均有较高的分类准确率。
图6 平均准确率对比
文中提出了一种基于卷积神经网络特征图的车辆检测和车辆分类模型。DetectNet使用加权特征图实现车辆检测,ClassNet用于细粒度车辆分类。在车辆检测中,通过卷积神经网络的前向计算得到卷积层特征图,将特征图进行加权映射得到车辆的检测结果。在车辆细分类中,通过卷积神经网络对车辆进行分类。与其他车辆检测和分类方法相比,该模型具有如下优点:不需要复杂的图像预处理,如图像滤波和边缘检测;可以在一幅图像中定位多辆车辆,对背景噪音和光照变化具有较强的抗干扰能力;基于CNN的细粒度车辆分类模型在真实道路采集的图像中对低质量图像和噪声干扰图像均具有良好的鲁棒性。
然而,该方法还需要进一步研究和改进,如车辆的哪一部分对于细粒度分类最重要,以及如何改善深度网络以获得更高的准确率,这些都需要在今后的工作中继续深入研究。