郝超杰,贾振堂
(上海电力大学电子与信息工程学院上海 200090)
在当前图像处理和计算机视觉领域,车牌检测是一个重要且热门的研究课题,其早期研究是基于传统特征的方法,如使用边缘信息和颜色特征检测车牌位置[1],此类方法对于受控条件和单一场景下的车牌比较适用。王永杰[2]等提出一种基于多信息融合的车牌定位方法,通过边缘密度信息快速滤除大量背景信息,再由车牌字符的分布信息定位车牌,最后使用模板匹配方法对车牌字符进行分割,通过分割出的字符来验证所定位区域是否为车牌。魏亭[3]等基于视觉感知提出一种计算机多尺度辅助定位车牌的算法。对于完整的单帧图像,该算法从车辆、纹理和颜色3 种特征尺度聚焦车牌区域。然而,这些传统方法对车牌图像的光照、视角变化、污渍、低分辨率图像等影响因素过于敏感,致使检测效果不佳。
随着深度学习的不断发展,其与机器视觉相结合的车牌检测成为新的研究方向[4]。近几年的研究使用YOLO[5]、SSD[6]、RCNN[7]等目标检测算法来解决车牌检测问题,其中YOLO、SSD是一阶段的目标检测算法。RAYSON[8]等提出一种基于YOLO 检测器的实时车牌识别系统,在该系统中,对于车牌位置的检测使用了基于YOLO 的算法。胡逸龙等[9]提出一种车牌检测、字符识别两阶段的中文车牌识别算法,基于YOLO 模型对模型进行轻量化和添加注意力机制等改进得到YOLOPlate 模型,基于CRNN 模型对模型输入和卷积网络结构进行调整,并针对拍摄角度导致的车牌形变问题,向网络中添加STN 网络,得到CRNNPlate 模型。HSU[10]等针对自然场景下的车牌检测提出一种基于YOLO-9000 深度学习的检测器,通过扩大网络的输出尺寸提升图像中小尺寸车牌的检测精度。YING[11]等融合了传统方法和深度学习方法,为解决复杂场景下的车牌检测和定位问题,提出一种基于深度学习的算法。首先将目标检测问题转化为二值分类问题,然后利用选择性搜索算法在滑动窗口上生成矩形候选区域,最后利用支持向量机进行分类。与传统机器学习相比,该算法在检测精度上具有明显的优势。以上基于深度学习的车牌检测研究都是使用矩形框的方式来检测车牌位置,难以表述由拍摄角度倾斜引起的车牌变形后的形状,影响了车牌字符的识别率。
SILVA[12]等针对限定场景下的车牌检测问题,引入一种新的卷积神经网络,实现在不同的相机姿态下检测一幅图中的车牌,并通过仿射矩阵校正变形车牌。余烨[13]等提出一种自然场景下的变形车牌检测模型DLPD-Net,将仿射变换的方法应用于车牌检测中。该模型使用仿射变换得到车牌角点位置,与利用矩形框方式相比,能够实现对仿射变形的车牌的检测,同时具备良好的鲁棒性。但是,该研究不适用于光照不均匀、透视变形、低分辨率等复杂场景中的车牌检测。
受CAO[14]和OSOKIN[15]等对人体姿态估计研究的启发,本文提出一种基于热图的车牌检测网络LPHD-Net。与使用矩形框和仿射变换的检测方式不同,LPHD-Net 使用车牌角点热图的方法来检测车牌,且输出为车牌的4 个角点热点图和4 个边界向量场,可避免车牌角点间的误连接。此外,本文使用中国城市停车数据集(China Urban Parking Data Set,CDPP)对模型进行训练,使模型能够适用于多种复杂场景。
在CAO[13]等关于人体姿态估计的研究中,人体关节点采用热图(heat map)的方式来表示,热图中的极值点即为关节点,关节点的热图标签采用高斯函数来生成,关节点之间的连接关系则采用部件亲和力场(PAFs)的方法来描述。PAFs 能够准确建立关节点之间的连接关系,从而完成对人体姿态的正确估计。受此启发,本文用热图来估计车牌的全部角点,并用PAFs 来描述角点之间的连接关系,完成对车牌的检测。
车牌角点匹配的实现依赖于PAFs,为了便于理解,本文称之为角点连接向量场,简称为向量场,其原理如图1 所示。其中,j1、j2表示由网络输出的车牌的2 个角点热图,v是从j1指向j2的单位向量,vT是垂直于v的单位向量。取线段j1j2的一个矩形邻域Ω,如图1 中的箭头簇区域所示。邻域Ω的长度和宽度分别设为lc、σc。对于邻域Ω内的每个像素点,都赋值为向量v,而Ω邻域之外的点都赋值为零向量。邻域Ω内的向量场就描述了角点j1和角点j2之间的连接关系。车牌的任何一条边都由一个这样的向量场来表示其两个端点之间的连接关系。
图1 角点连接向量场示例图Fig.1 Example diagram of corner connection vector field
以上关于向量场的定义,可用式(1)和式(2)表示:
其中:|vT∙(p-j1)|表示点p距离线段j1j2的垂直距离;v∙(p-j1)代表点p在j1->j2方向上与j1的距离;F表示向量场。
本文网络模型训练后输出预测的车牌角点热图H和边界框向量场F。由角点热图估计出车牌边界顶点,然后通过向量场F建立顶点之间的关联。使用式(3)计算车牌顶点之间的关联置信度,其实质是计算单位向量v与向量场F的内积,计算值反映了两预测角点j1、j2之间相连的可能性。
如图2 所示,本文网络模型的图像输入尺寸为640×480×3,首先初步提取输入图像中的图像特征,即图2 中的f。然后经过初始阶段网络的2 个分支分别得到车牌4 个角点热点图H和4 条边界框向量场F,之后再将热点图H、向量场F和图像特征f拼接起来作为调整阶段网络的输入,以便网络最后输出更为精细的车牌角点热图和车牌边界框向量场。此外,为了引导网络迭代地预测角点热图和边界框向量场,在每个阶段的每个分支末尾都应用损失函数予以约束。网络的初始阶段(InitialStage)由3 个3×3 的卷积层和2 个1×1 的卷积层组成,调整阶段(RefinementStage)则由5 组调整模块和2 个1×1 的卷积层组成,其中每个调整模块由一个1×1 的卷积核和2 个3×3 的卷积层组成。图像特征f的提取部分使用了改进型DenseNet 结构[16],该结构由2 组DenseBlock 层和1 个Transition 层构成,这与原DenseNet 网络结构是不同的。此外,相较于CAO[14]等使用的VGG19 网络,DenseNet 网络可通过建立不同层之间的连接实现特征的重复利用。Translation 层以及较小的增长率growth rate 也可减少训练参数,提高训练效率。后处理过程包括从角点热点中提取角点和使用PAFs 方法计算角点间的关联置信度。
图2 车牌检测网络结构Fig.2 License plate detection network structure
在本文构建的网络结构中,每个阶段的每个分支末尾应用一个损失函数,该损失函数定义为预测值和真实值的平方差损失。热点分支网络的输出为4 张图像的角点热点图,向量分支网络的输出由4 张车牌边界框连接向量图。式(4)和式(5)分别代表2 个分支网络的损失函数,其中是角点热点图分支损失函数;是边界框向量图场分支损失函数;式(4)中H*代表真实车牌角点热点图;式(5)中F*代表真实车牌边界框向量场是第t个阶段的角点热点图是第t个阶段的边界框向量场。
为了判断网络是否收敛,定义式(6)为整个网络的损失函数,其为网络初始阶段和调整阶段的损失之和。因为本文文网络共2 个阶段,所以T的取值为2。
车牌检测过程如下:
1)将图片裁剪成为640×480 像素的图像,将裁剪完成的图片作为LPHD-Net 的输入。如图3 所示,经过LPHD-Net 网络输出8 个通道特征图,分别是4 张车牌角点热点图、4 张边框向量场分量图。车牌的4 个边界分别用一个向量场来表示。
图3 单张车牌的角点热点图与边界框向量场图Fig.3 Corner heat map and bounding box vector map of a single license plate
2)提取车牌角点坐标。因为预测的角点热点图是车牌候选角点组成的一个区域,所以首先要在该区域中提取车牌角点。对于包含单张车牌目标的图片,通过比较热点图内各点热力值大小即将热力值最高的位置作为车牌角点的位置。如图4 所示,对于包含多张车牌的图片以及角点预测结果中出现干扰点的情况,除使用热点热力值进行筛选外,还另外设置了一个约束条件,即通过设置车牌角点之间的距离阈值进行筛选,把小于距离阈值的点删除。这样通过对各角点热点区域内热力值的大小以及车牌角点之间的距离进行筛选后,即可得到所有车牌角点位置。
图4 多张车牌的角点热点图、边框向量场图Fig.4 Corner heat map and bounding box vector map of multiple license plates
3)车牌角点的组合。提取出车牌角点后使用PAFs 算法将各角点组合起来,组合的目的是为了避免车牌角点的错误连接,从而将车牌位置准确地检测出来。使用式(3)计算车牌边界的大于设定的阈值则认为两车牌角点间存在车牌的边界框。最后将这些角点间的边界框拼接起来,即完成车牌位置的检测。
本文使用的数据集是中国城市停车数据集(CCPD),该数据集包含各种复杂环境下的车牌图片(例如倾斜、夜间、强光、低分辨率、雨雾天)。按照一定的比例选取其中一部分数据用于训练、验证和测试。各种类在训练集、验证集、测试集所占的数量如表1 所示。模型训练完成后,在测试数据上进行实验测试,用于分析和比较。
表1 数据分配表Table 1 Data allocation table
本文采用基于pytorch 的深度学习框架进行训练和测试,基于热图方法对车牌进行定位检测,选用NVIDIA 1080Ti,CUDA9.2,内存为32 GB 的GPU。使用的编程语言为Python。训练过程中相关参数的设置:训练代数为210,批次数为8,学习率为0.005。
对于车牌检测方法的性能评价,本文采用通用文本检测中常用的评价标准:精确率与召回率。本文定义精确率为正确检测到的车牌数量除以检测到的车牌数量,召回率为正确检测到的车牌数量除以真实车牌的数量,公式如下:
其中:TP表示被正确检测到的车牌数量;FP表示被错误检测到的车牌数量;FN表示被错误检测的车牌中正确车牌的数量。此外,当检测到4 个点时才算是检测到了车牌。检测精度遵循对象检测交集-并集中的惯例做法。当预测角点组成的框与真实角点组成的框的IOU 大于70%(IOU>0.7)时,该边界框才被认为是正确的车牌区域,否则认为是错误检测到的车牌。定义交并比(Intersection over Union,IOU)为:
其中:Rpr代表预测出的车牌角点构成的任意四边形区域;Rgt代表真实的车牌角点构成的四边形区域;aarea代表两四边形交并区域的面积。实验结果如表2所示。由实验结果可以反映出本文检测模型在性能上更快、更准确。需要说明的是,在本文实验中,将网络输出了4 个角点热图规定为检测到了车牌。实际测试发现对于一些图片,由于复杂场景中存在着不少的干扰,网络并不会完整地输出4 个角点热图,对于网络输出3 个车牌角点的情况,本文通过平行四边形特征计算缺失的车牌角点坐标,这有助于提高检测率。
表2 不同模型的检测性能对比Table 2 Detection performance comparison of different models
由表2 可知,本文方法检测准确率比MTLPR+data augmentation、LMAFLPD 方法分别提升了1.5 和1.15 个百分点,速度分别提升了13 frame/s 和14 frame/s。另外,与不进行数据增强的MTLPR 方法相比,本文检测方法在速度、精确率、召回率3 个性能指标上均有较大提升。
为探索各模块在整个网络结构中所起的作用,在验证集上的进行消融实验,以便于更好地理解网络的行为。实验结果如表3 所示。由表中结果可知,添加调整阶段模块比只添加初始阶段模块时的结果更好。因为DenseNet 在网络中用来提取网络图像特征,所以精确率和召回率均为0。
表3 LPHD-Net 使用不同结构的检测结果Fig.3 Detection results by LPHD-Net using different structures
本文模型的检测效果如图5 所示。第1 行为各种复杂背景中的车牌检测效果,包括车牌扭曲、雨雪天气和低分辨的情况。第2 行为梯形车牌的检测效果。第3 行为多车牌的检测效果。
图5 车牌检测效果Fig.5 The effect of license plate detection
本文提出一种基于热图的车牌检测方法,构建LPHD-Net网络完成车牌的检测,该网络结构的关键在于PAFs算法。在CPDD车牌数据集上进行网络模型的训练和测试,实验结果表明,LPHD-Net网络对变形、污垢和图像模糊等复杂场景下的车牌具有很好的检测效果。同时,与SSD、Faster-RCNN、YOLOv3 等传统算法和其他神经网络算法相比,该方法可以有效提升复杂场景下车牌检测的精度和速度。由于CPDD 数据集中不包含多车牌的图片数据,因此下一步将通过使用其他数据集,研究LPHD-Net在多车辆和多车道情况下的车牌检测效果。