基于孪生网络的车牌检测与跟踪算法

2022-04-21 07:24邹承明纵耘博
计算机工程与设计 2022年4期
关键词:车牌卷积车辆

邹承明,纵耘博

(1.武汉理工大学 计算机科学与技术学院,湖北 武汉 430070;2.武汉理工大学 交通物联网技术湖北省重点实验室,湖北 武汉 430070)

0 引 言

车牌自动检测(ALPD)技术是智能交通系统(ITS)的一个重要组成部分[1]。现有车牌检测与识别的研究主要集中在不同条件下的静态图像上[2],如文献[3]提出WPOD-NET模型,专注于解决非限制场景下的车牌检测问题,文献[4]提出将颜色边缘特征提取和深度学习相结合的车牌定位算法,文献[5]提出检测和识别于一体的RPnet模型。但是,上面的方法忽略了视频帧的上下文信息。换句话说,车牌检测并不能随着视频帧的推进而锁定该目标的运动,会出现目标车牌“漏检”的问题。为了实现车牌跟踪,文献[6]提出基于梯度的图像分割方法,利用图像中强度等级的变化跟踪车牌的位置,文献[7]提出轨迹聚类算法将车牌检测与跟踪结合起来。以上方法虽然从视频序列中跟踪出新的车牌,但是并没有为同个视频帧内多个车牌跟踪提出完善的解决方案。同时,也不适用于图像分辨率更低、车牌目标更小更多的交通监控场景。

基于以上讨论,我们提出一种车牌检测与跟踪框架。通过对车辆进行跟踪,为视频序列中每一个车牌分配唯一的ID,从而实现同时对多个车牌进行跟踪。并且,本文基于孪生网络中的SiamRPN模型[8],提出一种具有深度特征的目标跟踪算法对车牌进行稳健跟踪,使用性能更加优秀的改进的DenseNet网络[9]提取特征,提升跟踪器识别能力,用密集连接的方式实现特征复用。最后为了验证本文算法的有效性,我们创建了一个具有挑战性的交通监控车牌数据集进行详细的实验,并与其它车牌检测算法和目标跟踪算法进行比较,取得了很有竞争力的实验结果。

1 车牌检测与跟踪框架

为了提升面向监控视频的车牌检测性能,我们提出了一种车牌检测与跟踪框架。本文提出的框架通过车辆跟踪、车牌检测、车牌跟踪3个模块实现了车牌的检测与跟踪。因为在视频图像的每一帧中,往往有多个车牌目标。为了在连续的帧序列中唯一地识别与跟踪车牌目标,通过车辆跟踪,间接地为视频序列中的每个车牌分配一个唯一的ID。作为本文工作的重点,我们基于孪生网络中的SiamRPN模型,提出了一种具有深度特征的目标跟踪算法,实现有力的跟踪车牌,提供更加准确的定位结果。

1.1 车辆跟踪

正如文献[3]所提到的,车辆是许多经典的检测和识别数据集中的底层对象之一。我们决定不从零开始训练车辆跟踪器,而是选择一个已知的模型来进行车辆跟踪。

车辆跟踪器实现主要包含两个部分:目标检测和目标跟踪。目标检测对象为交通监控视频中捕捉到的汽车、卡车等机动车辆。然后对这些目标进行多帧跟踪,将后续车辆检测结果与跟踪结果进行关联,优化最终检测结果。

基于车辆目标的召回率和准确率考虑,本文使用YOLOv3[10]作为车辆检测算法。同样,基于Deep-SORT[11]的目标跟踪算法在多目标实时跟踪方面取得了很好的效果,而且可以很好满足本文对于跟踪器设计的要求,所以本文以Deep-SORT 为算法基础实现车辆跟踪,算法如图1所示。具体来说,首先使用YOLOv3检测模型获取T帧和T-1帧的车辆位置信息;然后根据T-1的车辆位置信息,利用卡尔曼滤波器预测T帧的车辆轨迹;最后使用传统的匈牙利算法,关联T帧的车辆位置检测信息和预测信息,实现车辆连续跟踪。

图1 基于YOLOv3与Deep-SORT的车辆跟踪

1.2 车牌检测

基于上一步获得的车辆空间信息,我们使用文献[3]中的WPOD-NET对视频中的车牌进行检测。因为我们已经跟踪了每一辆目标车辆,所以视频中出现的每一个车牌都可以分配到对应的车辆。与原算法相比,车牌检测的输出不仅有车牌信息,还包括对应车辆的位置数据。本文首先将每个视频内车辆的空间信息格式转换为Dt,然后调整车辆的空间大小

Dt=(f,id,x,y,w,h)

(1)

其中,(x,y)分别为车辆中心相对于图像宽度和高度的坐标,f代表视频帧序号,id是车辆id。

因为在正视图和背视图中,车牌大小和车辆矩形边界框的比例较大,而在倾斜图和侧视图中两者的比例较小。因此需要将倾斜视图调整到正面视图上,增大车牌面积,从而增加车牌的检测率。调整的缩放因子的计算方式[3]如下

(2)

其中,Wv和Hv是车辆识别矩形边界框的宽度和高度。由于Dmin≤fscmin(Wv,Hv)≤Dmax,所以Dmin和Dmax为调整车辆图片的维度大小划定了范围。

最后将上一步调整后的信息送入WPOD-NET进行检测和反扭曲,获得检测后的车牌信息,输出的信息格式如下所示

Pt=(f,id,x,y,w,h,c)

(3)

其中,(x,y)分别为车牌边界中心相对于图像宽度和高度的坐标,c代表置信度。和原算法相比,我们每一帧都增加了该车牌对应的车辆id,以便下一步对车牌的跟踪补全。

1.3 车牌跟踪模型

虽然基于WPOD-NET的车牌检测通过实验验证是可行的,但是在实验进行中也发现了一些问题。比如WPOD-NET对于车牌的检测主要是基于单帧视频图像进行的,忽略了视频前后帧的上下文信息。换句话说,车牌检测无法有效跟踪目标车辆在视频帧前进时的运动,有可能导致目标“丢失”。为了解决这一问题,我们提出一种具有深度特征的目标跟踪算法作为车牌跟踪器,对检测到的目标进行一段时间的跟踪,恢复视频序列车牌漏检部分,算法框架如图2所示。此外,对于跟踪结果中的误检部分,我们使用基于ResNet-50的车牌二分类器,去除结果中与车牌无关的候选区域,实现再次精确定位以提高精度。

图2 网络结构

1.3.1 SiamRPN

近年来,基于孪生网络的目标跟踪算法可以充分利用卷积特性,在保证实时性的同时提高精确度。SiamRPN在SiamFC[12]的基础上,抛弃了多尺度测试,加入了区域推荐网络(RPN)。该算法采用RPN子网络代替了SiamFC网络的互相关操作,通过回归得到更加精确的目标位置。RPN子网络由分类分支和回归分支两部分组成,这里采用类似目标检测的方式生成候选跟踪目标。模板图像提取的特征φ(z)通过两个卷积层,分别增加到通道数为2K和4K的两个分支[φ(z)]cls和[φ(z)]reg,其中K表示锚点个数。同理,搜索图像提取的特征通过两个卷积层,分成[φ(x)]cls和[φ(x)]reg两个分支,但是通道数不变。RPN子网络有如下两个输出

(4)

loss=Lcls+λLreg

(5)

其中,Lcls表示交叉熵损失函数,Lreg表示带正则化的平滑L1损失函数,λ是超参数。

1.3.2 深度特征提取网络

我们观察到,SiamRPN仍然采用较浅的AlexNet[13]作为特征提取网络。浅层网络提取的特征只是目标的一般表示。这些一般特征在一些简单场景中表现良好,但在复杂场景中却无法区分干扰物或背景。研究结果表明在基于孪生网络的跟踪器,用更深的网络代替AlexNet作为主干网络是有效的[14],我们可以使用ResNet[15]和DenseNet用于特征提取。

与传统神经网络模型不同的是,DenseNet通过构建少量卷积核,密集连接生成大量可重用的feature map。这使得DenseNet的网络更加深入,但并没有显著增加参数的数量。综合以上讨论,为了提升SiamRPN的特征提取能力,我们使用改进后的DenseNet作为特征提取网络。

传统的CNN通过对上一层的输出xl-1进行非线性变换H来计算第l层的输出

xl=Hl(xl-1)

(6)

通过连续卷积和池化,网络实现了空间不变性,得到顶层的粗语义特征。然而,精细的图像细节往往会在网络的最顶端消失。

为解决梯度弥散和实现更深层的卷积神经网络,ResNet通过加入short-cut构造恒等映射条件,由传统的拟合恒等映射转化为优化残差,计算由传统的乘法实现了加法的转变,即输出xl+1=Hl+1(xl)。short-cut的引入使得计算更加稳定,缓解了深度与退化的矛盾,实现了深度与精确度的双飞跃。但是恒等映射与输出特征Hl是通过加和计算进行组合,这会对网络的信息流造成一定程度的破坏。

为了提升卷积神经网络的信息流,我们采用密集连接(DenseNet)的方式作为特征提取的骨干网络,密集连接网络如图3所示。卷积层(Conv)、密集连接模块(DenseBlock)和过渡层(Transition)是近年来DenseNet研究的重要子模块。网络第一层为一个卷积核大小为7×7,步长为2,填充为0的卷积层,用于提取一般特征。然后通过密集连接模块——过渡层的堆叠搭建整个网络。密集连接模块中,第l层接收前面所有层的特征映射作为输入

图3 密集连接模块

xl=Hl([x0,x1,…,xl-1])

(7)

其中,[x0,x1, …,xl-1]是由第0,1,l-1个卷积层输出特征图连接而成。这样,即使是最后一层也可以访问第一层的输入信息。Hl(*)是3个连续操作的复合函数,包括批处理归一化(BN)、线性整流函数(ReLU)和3*3卷积。我们将这样的复合函数表示为一层。在这种情况下,所有层都可以访问前一层的特征图,提升了特征图的重用率,使得模型更加紧凑,更不容易过拟合。假设k0表示密集连接模块的输入层通道数,每个复合函数均输出数目为k的特征图,则整个模块共有k0+k×(l-1)个特征图,其中k也被称之为特征通道增长率。本文中超参数k设置为12。为了降低特征图的尺寸大小,网络中使用了密集连接模块加过渡层的结构。过渡层模块包括1*1的卷积层与2*2的平均池化层,两个相邻的密集连接模块之间由过渡层连接,通过池化操作来降低特征图尺寸并压缩模型。

文献[14]指出,直接将 AlexNet 替换为更深层网络时,同时引入的padding使网络失去平移等价性,特征图不等价。这也是利用特征提取网络加深,跟踪性能不升反降的重要原因。相关性计算方式如图4所示,E表示模板区域,A表示搜索区域,B是搜索区域A向左移动一定距离得到的区域。没有padding的网络,当跟踪目标移动一定距离时,比如向左上角移动,对应特征图的响应点也会对应移动一定的距离。即区域A和B分别经过相同的特征提取网络提取的特征φ(A)=φ(B),所以此时特征图R1=R2,即

R1=φ(A)*φ(E)

R2=φ(B)*φ(E)

(8)

有padding的网络,此时图中E’表示原模板区域E加上padding后影响的区域,A’和B’均为搜索区域A和B加上padding后影响的区域。如图4中所示,被padding影响的B’的边界已经超过了原图像的边界,所以经过特征提取网络提取的特征φ(A)≠φ(B),同理特征图R1≠R2。由此可见,padding的影响会使得孪生网络的相似性算法产生错误。并且当网络加深的时候,感受野会急剧的增大,会很容易超出图像边界。通过特征图裁剪(Crop),可以解决这个问题。针对padding带来的干扰,我们将Conv层的特征图最外围两层裁剪(Crop1)掉,将Dense Block1、Dense Block2和Dense Block3的特征图最外围一层裁剪(Crop2)掉,消除padding给特征图(feature map)边缘带来的影响。综上所述,网络参数见表1。

图4 相关性计算

表1 特征提取模块网络参数

2 实验结果及分析

2.1 实验环境及参数设置

本实验使用的 Linux系统版本为64位CentOS 7.5。服务器的配置信息如下:处理器为Intel®Xeon®CPU E5-2678 v3 @2.50 GHz,显卡为NVIDIA 1080Ti,内存为220 GB。我们使用的深度学习框架为Pytorch 0.4.1。为了提高GPU的运行效率,使用了CUDA 10.0以及cuDNN 7.0。编程语言及版本为Python3.6.5。

本文车牌跟踪算法采用大型数据集ILSVRC[16]和YoutubeBB[17]进行训练,模型的迭代次数为100轮,学习率从10-2衰减至10-5。

2.2 数据集

我们创建了一个交通监控车牌数据集,用以测试本实验中所有的车牌检测与跟踪模型。该数据集是从中国某省会城市收集到的包含87个交通监控视频,在不同的环境下录制得到。我们事先将选定好的监控视频每隔30帧截取一张图片,并手动标注图片中车牌的位置。最后我们将模型在监控视频上的运行结果与图像标注的结果进行对比,得到最终的检测性能。

交通监控车牌数据集包括从不同条件下的各种交通场景中采集的11 635张图像,用于测试车牌检测模型。该数据集与WPOD-NET中采用的数据集相比,分辨率低,图像模糊,车牌目标更小,同时每张图像中包含的车牌目标也可能更多。以上因素都可能会降低车牌检测模型的性能。该数据集根据拍摄场景和复杂度分成了3个子数据集(G1到G3)。该数据集的部分样本图片如图5所示。3个子数据集描述如下:

图5 数据集部分样本图片

(1)居民小区监控子数据集(G1)。该数据集包含1159张图像。该场景下的车辆大多低于正常车速行驶,通过居民小区入口。就监控视频的复杂度而言,该场景的复杂度是3个场景中最简单的一个。在该场景中,很多车牌区域亮度非常的不均匀,有很强的光线干扰;

(2)交通道路监控子数据集(G2)。该数据集包含5613张图像。该场景下车辆一般以正常车速行驶,且一张图像中不仅包含多个车牌,还可能包含路人、路边等,场景最为复杂。该场景下的监控视频质量也参差不齐,部分车牌的字符清晰可见,部分车牌有不同程度的倾斜,比较模糊,用肉眼难以识别;

(3)商城入口和停车场监控子数据集(G3)。该数据集包含4863张图像。该场景下多是停车时拍摄,车辆非常密集,每帧图像包含不定数量的车辆。图像中有的车辆重叠,部分车牌不是完整的,导致检测的难度较大。

2.3 评价指标

目前还没有完全统一的评价标准来对各种车牌检测系统的性能进行评估。本节为了更好的与其它基准车牌检测模型进行比较,故采用文献[18]所使用的召回率(recall)和准确率(precision)。这两个评估标准都用于衡量模型的检测性能。模型的recall和precision越高,该模型的车牌检测和跟踪的性能越好。precision和recall计算公式如下

(9)

其中,P代表测试样本中的正样本的数量,TP代表检测和跟踪出的样本中的正样本的数量,FP代表检测和跟踪出样本的负样本数量。准确率和召回率是根据模型检测和跟踪的结果来进行计算的。模型的检测和跟踪结果,即模型检测和跟踪到的区域与人工标注区域二者的重合度,称之为Intersection-over-Union(IoU)。在本实验中,设置IoU的阈值为0.3。

2.4 实验结果及分析

表2展示了不同模型在交通监控车牌数据集上的召回率和准确率,其中WPOD-NET、WPOD-NET+VT和RPnet为车牌检测模型,VT表示车辆跟踪。从表2可以看出,在车辆跟踪的基础上进行车牌检测,车牌检测的召回率得到大幅度的提升。一方面,将车辆跟踪信息送入WPOD-NET进行车牌检测,降低了复杂环境中非车辆图像的干扰;另一方面,与原算法相比,有更多含有车牌目标的车辆送入车牌检测模型,间接提升了车牌检测性能。

表2 几种模型在数据集上的性能对比

SiamRPN和本文算法是在车辆跟踪和车牌检测的基础上,融合了车牌跟踪。从实验结果我们可以看到,无论是模型检测准确率还是召回率,使用车牌跟踪的模型均优于只使用车牌检测的算法,其中本文提出的方法最为出色。具体来说,在交通监控车牌数据集的3个子数据集的实验结果表明,相比WPOD-NET,我们的模型平均检测准确率提高了10.19%,平均召回率提高了24.91%;相比RPnet,我们的模型平均检测准确率提高了29.33%,平均召回率提高了30.55%;相比SiamRPN作为车牌跟踪器,我们的模型平均检测准确率提高了3.37%,平均召回率提高了2.05%。特别是在G2数据集上,与其它模型相比,我们的模型检测结果比另外两个数据集提升更为明显。

在一些识别任务中,如果只包含IoU为0.3的车牌区域,可能无法完整识别车牌信息。我们将IoU的阈值区间设置为0.3≤IoU≤0.9,用IoU分段统计召回率和准确率,用以衡量各算法的实用性,如图6和图7所示。从图中可以看出,使用车牌跟踪器的模型比仅使用车牌检测算法的模型有明显的优势。在IoU为0.75的阈值时,召回率超过70%,比第二名高出6.89个百分点,具有合理的实用性。

图6 不同IoU下的综合召回率

图7 不同IoU下的综合准确率

3 结束语

本文提出一种车牌检测与跟踪框架。我们通过扩展当前最先进的车牌检测模型,在SiamRPN的基础上,提出一种具有深度特征的目标跟踪算法实现车牌跟踪,解决了具有挑战性的交通监控视频中车牌检测性能较低的问题。我们创建了一个基于真实场景的交通监控车牌数据集,对提出方法进行评估。实验结果表明在实际的交通监控场景中,车牌检测与跟踪框架确实提高了检测率,具有良好的有效性和可行性。在未来工作中,我们会开发出一种更加鲁棒的车牌检测型。面对具有挑战性的交通监控场景,提升远距离、目标模糊的车牌检测率。

猜你喜欢
车牌卷积车辆
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
数字图像处理技术在车牌识别系统中的应用
从滤波器理解卷积
车辆
基于傅里叶域卷积表示的目标跟踪算法
第一张车牌
基于MATLAB 的车牌识别系统研究
冬天路滑 远离车辆
提高车辆响应的转向辅助控制系统