□ 文/张骅 戚悦
随着现代社会生活水平的不断提高,汽车数量高速增长,交通监管面临巨大挑战。高清智能卡口系统作为交通监管的一种重要手段,已被广泛应用于现代交通的各个领域。然而传统的依赖人工判读的方法已无法满足如今海量交通图像处理的需要,构建智能识别系统以自动处理各种交通图像信息成为必然趋势。不同类型车辆,具有不同的道路使用权,高清卡口系统的一项主要任务就是识别车辆类型。本文就定位并识别高清卡口图片中的小轿车和大客车进行了研究。
车辆定位一般是基于视频监控系统。对于时域连续的图片,可以利用帧间差分和光流法等技术方便提取出运动车辆的位置。但是不同于视频监控系统,高清智能卡口系统只能获取离散的抓拍图片,传统的基于视频的定位系统不能取得理想的效果。目前,基于图片的定位方法主要有:滑动窗和图像分割,但是这两种方法都非常耗时。本文充分利用高清智能卡口图片背景信息,将卡口图片的边缘与背景边缘进行差分,提取出前景车辆位置。确定车辆位置之后,就可以进行车型识别。本文的车型识别主要是利用卷积神经网络对提取的前景车辆进行分类。相较于传统方法,卷积神经网络的识别正确率可以做到90%以上,此外将卷积神经网络放入GPU中处理速度非常快。本文采取经典的AlexNet网络进行车辆分类,取得了很好的效果。
高清智能卡口系统通过高清卡口抓拍摄像机对过往车辆进行抓拍,摄像机抓拍的所有图片都是同一角度,背景完全相同。但是由于抓拍系统的工作时间间隔可能很长,无法实时建模,导致不能直接通过背景相减提取出前景。为了利用背景信息,必须消除光照影响。本文通过平均值法得到背景图,然后提取出背景边缘图。考虑到抓拍摄像机不可能保持绝对不动,不同的图片背景之间会有一定的位移,但是绝大数情况下,这种位移是很小的,所以对背景图的边缘进行膨胀操作以消除这些微小位移的影响。卡口系统都是针对特定车道的抓拍,对于其他车道的信息并不关心。因此可以划定车道,只对特定车道进行处理,对于车道外信息完全屏蔽。
高清智能卡口图片清晰度好高,能很好的还原车辆的细节信息。但是对于车辆定位而言,许多细节信息并不重要,太大的图片反而影响处理速度。所以将图像缩放至原图的1/4,并对原图进行修剪,去除非车道部分。
在不同时间和天气条件下,图片的明暗程度差别很大。直方图均衡化处理,可以很好的提高图片的对比度,从而更有利于边缘的提取。处理后图片如下图所示,从图中可以看出,未处理之前的图片光照条件很差,右下角的车辆几乎看不清楚,经过均衡化处理提高了对比度,车辆外观清晰可见。
▲图1:均衡化处理结果
利用canny算法提取出抓拍图片的边缘信息,减去背景的边缘信息即可得到前景信息。但是此时的前景边缘可能会被背景边缘切断,需要对得到的前景边缘进行膨胀处理以便将断开的边缘重新连接。抓拍系统一次抓拍目标只有一个,即距离摄像头最近的车辆。由于相机的透视效应,离摄像头最近的车辆也是最大的,因此只需找出最大连通域并求出其最小外接矩形,即可定位车辆。但是由于阴影的影响,以及前后车辆粘连,会导致,定位框过大。对于固定卡口,摄像头的参数是固定的,摄像头与车辆之间的距离也是固定的,因此车辆在不同位置的大小也是可以确定的。本文选取一系列抓拍图片,对不同位置的车辆大小进行了测量,最终拟合出一个近似换算公式。对于过小、过窄以及过宽的外接矩形进行剔除,对于过大的外接矩形进行修正。
定位结果如图所示。这张抓拍图片抓拍的是左车道,本文算法屏蔽了右侧车道只检测出右车道的两辆小轿车,最终保留了最近的轿车。
▲图2:车辆定位结果
卷积神经网络(CNN)是人工神经网络算法(ANN)的一种,近年来广泛应用于图像处理领域,是一种高效的识别方法。
卷积神经网络的前向传播
卷积神经网络分为两个部分:学习和预测,其中预测过程称为卷积神经网络的前向传播,典型的卷积神经网络一般有三步操作:卷积、激活和池化。其中卷积操作与图像的卷积操作一致,它将每一个多通道的图像看作是一层输入,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;卷积操作的本质是输入按照权重进行叠加,这是一个线性操作,如果直接将叠加值作为输出,则神经网络的隐藏层将失去作用,卷积神经网络将与原始的感知机无异,因此为了增加神经元的拟合能力,必须引入一个非线性的函数,即激活函数;卷积神经网络的池化操作主要用于降低提取特征的维度以降低计算量,即通过对不同位置的特征进行聚合统计,可以有效的降低运算的复杂度,并一定程度上防止过拟合,常用的池化方法有平均池化或者最大池化。
卷积神经网络的后向传播
前面我们所介绍的卷积神经网络的前向传播过程是建立在权重已知的前提下,但是实际上我们并不能确定权重,因此我们需要通过后向传播进行权重的更新学习(或称为训练)。通过学习,我们的算法计算得出的结果与实际结果越接近越好。数学上,我们用损失函数来衡量计算结果与实际结果的距离的指标。卷积神经网络的学习过程就是最小化损失函数的优化过程,常用的优化方法有梯度下降法。
车型分类
我们利用边缘检测针对高清卡口图片进行车辆定位,确定了待分类车辆的候选框。确定候选框之后,为了确定候选框内是否包含车辆和车辆的具体类别,就需要对候选框中图像进行分类。卷积神经网络作为一个自学习的特征提取器,避免了传统算法手工挑选特征的主观性,并且可以应对各种复杂环境。
车型分类作为物体分类的一个子问题,完全可以使用卷积神经网络来实现车型的分类。目前大型卷积神经网络,例如AlexNet、VGGNet以及GoogleNet等在物体识别上取得了巨大的成功。三个网络在imagenet比赛中,一千类物体识别率均在80%以上。但是相对而言,AlexNet网络最为扁平,处理速度最快。因此本文以AlexNet为基础,针对车辆数据集进行训练。AlexNet网络结构如图所示。整个网络由5个卷积层和3个全连接层组成,最后接入softmax进行分类。
▲图3:网络结构
数据集建立
卷积神经网络的学习过程虽然不需要手工选取特征,可以实现对图像特征的自动化学习,但是这种学习需要以大量的学习资料作为基础,即数据集。然而目前物体识别领域已有的经典数据集,如imagenet和VOC,图像数量庞大,物体种类繁多,对本文的研究并不具有针对性。因此为了针对性地提升识别效果,我们需要建立基于卡口图像的车型数据库。
参照标准图像分类数据集,我们对数据集进行车辆区域和车辆类型的标注,其中,车辆区域用一个矩形框标定,包括左上角顶点的横纵坐标以及右下角顶点的横纵坐标;车辆类型分为小轿车和大客车两大类,图4是一个图像的标注结果。
本文原始数据集中共标定了2800张图像,其中2000张小轿车,800张大客车。本文选取1900张小轿车,700张大客车作为训练集,余下100张小轿车,100张大货车作为验证集。由于两类训练数据并不均衡,且训练集数据对于卷积神经网络的训练是远远不足的,因此在原有已标定数据集的基础上,我们又进行了数据的增广,具体的数据增广方式如下:
对图像进行上下左右的镜像翻转,候选框坐标做相应更改;
将图像进行90°、180°、270°的选择,候选框坐标做相应更改
对图像添加小强度的高斯噪声,候选框坐标无需更改;
在原图上随机裁剪图像,保留包含完整候选框的图像,并相应更改候选框坐标。
经过这样的数据增广处理,数据集可以扩大10倍,可以满足卷积神经网络的训练需求。
▲图4:数据集标注
网络训练过程
卷积神经网络在本质上是一种输入到输出的映射。用大量的已知输入以及对应输出,对卷积网络加以训练,网络就可以学习到这种映射关系。和标准AlexNet相同,本文也采取随机梯度下降法训练。每一层的权重用均值为0,标准差为0.01的高斯分布进行初始化。
学习率初始化为0.1,每训练完一轮数据集验证一次正确率。每当正确率不再提高时,将学习率除以10。最终,将数据集训练200轮之后,正确率趋于稳定,训练结束。
本文数据集采用手动标定高清卡口图像2800张,原始图片大小为2208×2752像素,其中2600张用于训练,200张用于验证,并经过数据增广将数据集扩大至原始数据集的十倍。
本文利用边缘检测针对高清卡口图像进行车辆定位提取候选框,并将候选框输入卷积神经网络对车辆进行分类,每张图的处理时间为180毫秒,具体结果如表1所示。在保证识别准确率基本不变的前提下,与RCNN算法比较,本文的定位速度要快280倍,识别速度快250倍;与fast rcnn算法比较,本文的的定位速度快11倍,识别速度快27倍。
表1:结果对比
与传统物体识别算法和纯粹的卷积神经网络识别算法不同,本文结合了两者的优点,并针对性地标注和选用数据集,利用边缘检测针对高清卡口图片进行车辆定位,并选用了扁平化的卷积神经网络AlexNet对车辆进行分类。实验表明,相对于rcnn和fast rcnn算法,本文算法在较快的识别出卡口图片中车辆的同时,在车辆定位速度上也有显著提高。但是相较于识别过程,车辆定位花费时间太长,且定位精确度有所降低,后续有望对此进行改进。由于候选框回归网络和车型分类网络都需要进行特征提取,候选框回归网络希望提取出车辆的位置及大小,车型分类网络希望提取出车型的细节、组成及轮廓等信息。这两种特征是密切相关甚至互相包含的,因此后期可以考虑让这两个网络共享特征提取提取网络以提高定位和识别速度。