交通标志识别方法综述
2020-05-20伍晓晖田启川
伍晓晖,田启川 ,2
1.北京建筑大学 电气与信息工程学院,北京 100044
2.北京建筑大学 建筑大数据智能处理方法研究北京市重点实验室,北京 100044
1 引言
现代社会经济发展迅速,汽车给人类带来了很大的便利,自动驾驶、无人驾驶也逐步进入商业应用,交通标志识别对行车安全至关重要,因此必须解决交通标志的识别问题。然而交通标志识别容易受到天气变化、遮挡、光照强度变化等影响,这给无人驾驶的应用带来了很大的安全风险。针对交通标志所处环境的复杂性,设计一个准确率高、实时性能好、鲁棒性强的交通标志识别系统至关重要。
交通标志识别系统分为交通标志检测和交通标志识别,而交通标志检测常见的方法有基于颜色的方法、基于形状的方法、基于多特征融合的方法和基于深度学习的方法。基于深度学习的方法具有较明显的优势。交通标志识别常用的方法有基于模板匹配的方法、基于机器学习的方法、基于深度学习的方法。从准确率方面来说,基于深度学习的交通标志识别率更高一些。
本文分别从交通标志检测与交通标志识别两方面进行阐述,分析其包含的算法的原理、步骤、特点和性能;对公开的交通标志数据库进行了罗列和说明;相比传统的交通标志检测与识别算法,深度学习算法有助于解决光照变化、部分遮挡等情况下的交通标志识别难题;分析基于深度学习的交通标志检测和识别需要解决的问题,并对其未来的发展趋势进行了展望。
2 交通标志检测方法
交通标志的检测是交通标志识别系统中的关键技术。本文根据交通标志检测的发展历程,将典型的检测方法分为四大类:基于颜色的方法、基于形状的方法、基于多特征融合的方法和基于深度学习的方法。
2.1 基于颜色的交通标志检测
现在国外应用最广的是德国交通标志数据库,本文仅例举了中国和德国交通标志示例。中国和德国的有些交通标志仅存在细微差别,但是还有一些交通标志具有完全不同的表示形式,例如警告标志。中国的警告标志是黑色边框黄色内层,而德国的警告标志是红色边框白色内层,红色视觉感强烈,而黄色色调相对来说会更加温和。将检测与识别方法应用于交通标志应该考虑到这些细节。
中国的交通标志颜色主要有红色、黄色和蓝色,如图1所示。
图1 中国交通标志颜色示例
德国的交通标志颜色主要有红色、黑色和蓝色,如图2所示。
图2 德国交通标志颜色示例
颜色是交通标志的基本属性,学者们一开始便使用颜色信息来检测交通标志。
(1)RGB颜色模型方法
相机采集到的图像一般是RGB 图像,直接在RGB图像上进行颜色分割会减少计算量。Benallal 等人[1]发现从日出到日落的光照条件下,RGB 各分量之间的差异明显,比较两个RGB 分量就可以分割交通标志。颜色分割公式为:IFRi >Gi &Ri-Gi≥ΔRG;Ri-Bi≥ΔRB,则像素是红色;ELSE IFGi >Ri &Gi-Ri≥ΔGR;Gi-Bi≥ΔGB,则像素是绿色;ELSE IFBi >Gi &Bi-Gi≥ΔBG;Bi-Ri≥ΔBR,则像素是蓝色;其余像素是白色或黑色。RGB 颜色空间对光照变化比较敏感,但是光照变化对RGB各分量之间的差异影响较小。直接对相机采集到的RGB图片进行分割,可以减少计算量,从而极大地提高速度,满足算法实时性要求。算法也存在一定的缺点:当交通标志所处的环境比较复杂时,交通标志可能会和背景噪声混合在一起,算法不能达到良好的检测效果。
(2)HSI颜色模型方法
HSI颜色空间由美国色彩学家Munseu在1915年提出,用色调、饱和度和强度三分量来描述图像,从而使图像表示更接近于人类的视觉感知。朱双东等人[2]利用HSI颜色空间对光照不太敏感的特点,将RGB彩色交通标志图像转换到HSI 彩色空间,再进行阈值分割,但是去噪效果不理想。HSI 颜色空间中的S 空间(色彩饱和度空间)可以消除光照对图像的影响,申中鸿等人[3]在交通标志图像S空间的灰度直方图信息的基础上,用倒溯组内标准差法来选取全局图像分割阈值,实验结果表明该方法比HIS 空间色彩判断法和迭代阈值法分割效果更好。HSI颜色空间具有光照不变等特性,因此鲁棒性好,但是将RGB 转换到HSI 颜色空间具有一定的计算量,需要借助硬件处理来提高实时性。
2.2 基于形状的交通标志检测
中国的交通标志形状主要有三角形、圆形和矩形,如图3所示。
图3 中国交通标志形状示例
德国的交通标志形状主要有三角形、圆形和矩形,如图4所示。
图4 德国交通标志形状示例
形状检测最常见的方法是使用某种形式的霍夫变换[4]。方向梯度直方图(Histogram of Oriented Gridients,HOG)是检测形状的可接受选择之一[5],其表示梯度图像的方向。在HOG 中,基本思想是将图像划分为单元格并在该单元格内累积边缘方向的直方图。最后,生成特征以通过组合直方图条目来描述对象。HOG变换法具有旋转缩放不变性的优点,但运算量太大。Paulo等人[6]首先通过将Harris角点检测器应用于感兴趣的区域,然后在该区域的6 个预定义控制区域中搜索角落的存在来检测三角形和矩形符号。Gavrila 使用基于距离变换的模板匹配进行形状检测[7],首先找到原始图像中的边缘,其次建立距离变换(Distance Transform,DT)图像,最后将模板与DT图像匹配。许少秋等人利用边缘信息来检测形状[8],首先使用离散曲线演变方法滤除边缘噪声,然后分解边缘曲线并且移除与边缘无关的部分,最后用正切函数描述形状与模板进行匹配。算法具有较强的鲁棒性,但计算过程较为繁琐。谷明琴等人针对车辆行驶环境中难以检测的交通标志[9],计算边缘转向角这样尺度不变性的形状特征,用无参数形状检测子来检测图像中的圆形、三角形和矩形等,检测率达到95%以上。
2.3 基于多特征融合的交通标志检测
交通标志颜色和形状都有特殊的规定,易受到环境的影响,仅仅依靠单种特征可能导致交通标志检测失败。因此将颜色和形状等多特征融合的方法更有利于交通标志检测,从而提高交通标志检测算法的准确率。
汤凯等人提出一种颜色特征、形状特征和尺度特征的多特征协同方法[10],采用支持向量机(Support Vector Machine,SVM)对融合特征分类获得检测结果。此方法对提取的闭合轮廓曲率直方图链码进行尺度归一化处理,但是小尺度曲率直方图易受到边缘噪声的影响,会使尺度较小的交通标志难以检测。常发亮等人提出一种基于高斯颜色模型和HOG 与SVM 结合的快速交通标志检测算法[11],比单独使用高斯颜色模型检测效果有所提升,但是高维的HOG描述子增加了SVM分类器训练的难度。沙莎等人提出一种多通道融合的交通标志检测方法[12],结合RGB 和HIS 颜色通道的信息,对交通标志进行分割。算法结合RGB和HIS 彩色空间的分割结果,弥补了对HIS空间中S空间分割造成交通标志信息缺失的缺点,提高了交通标志检测的准确率。
1998 年Itti 等人模仿灵长类动物早期视力特性,提出一种视觉注意系统[13],在复杂的自然环境中可以快速地检测到交通标志。之后,很多学者在此基础上提出交通标志图像显著性目标检测算法。刘芳等人提出一种基于自底向上和自顶向下相结合的视觉注意机制的交通标志检测方法[14]。根据两种注意模型提取颜色、亮度、朝向、形状特征,生成显著图,从中找到交通标志区域,但是检测速度特别慢,无法满足实时应用的要求。
由于文献[13]生成的显著图分辨率低,保留的空间频率范围有限,Achanta 等人提出图像显著性的频率调谐方法[15]。该算法提高了图像检测的准确率和实时性,比传统颜色分割方法滤除图像噪声的能力更强,定位图像更精准。余超超等人[16]首先采用文献[15]的频率调谐显著性分割方法,然后设定轮廓周长阈值来过滤干扰,接着用凸壳处理方法滤除高维信息,最后用傅里叶描述子分析轮廓,并与标准数据库进行比对来检测交通标志。此方法鲁棒性强,满足交通标志检测实时性要求,但也存在一定的不足,比如滤除高维信息会使非交通标志区域更平滑,从而造成误检;另外也没有分解轮廓,无法准确检测连在一起的交通标志。
道路交通标志环境复杂,融合多特征检测交通标志会弥补单个特征的不足,提高交通标志的检测准确率。
2.4 基于深度学习的交通标志检测
深度学习完全不同于前面的方法,它通过训练和学习来提取特征,从而实现交通标志的检测。
基于候选区域提取的目标检测算法检测精度高,RCNN(Regions with CNN features)就是由Girshick 等人提出的一种基于候选区域的目标检测算法[17],它包含丰富的特征层次结构,用于精确的对象检测和语义分割,通过使用深度卷积神经网络(Convolutional Neural Network,CNN)对对象提议进行分类,实现了出色的对象检测精度。但是,因为它重复提取并存储每个候选区域的特征,花费了大量的计算时间和存储资源。同时RCNN 使用区域拉伸将每个候选区域统一成227×227的尺寸,影响CNN 提取特征的质量,降低了检测精度。He等人提出了空间金字塔汇集网络(SPP-Net)[18]。SPP-Net不再单独提取每个候选区域的特征,而是计算整个输入图像的卷积特征映射,再在特征图上取出对应于不同候选区域的特征,处理速度比RCNN 提高了24~102 倍。为消除网络的固定大小约束,SPP-Net 在最后一个卷积层后添加一个空间金字塔池化层(Spatial Pyramid Pooling,SPP),SPP合并特征并生成固定长度的输出,然后将其输入到全连接层(或其他分类器)中,提升了CNN提取特征的质量。SPP-Net也有明显的缺点,它的训练是多阶段的,而不是端到端的方法。Fast RCNN实现了在共享卷积特征上训练的端到端检测[19],并提高了准确性和速度。Fast RCNN训练非常深的VGG16网络比 RCNN 快 9 倍,与 SPPnet 相比快 3 倍,并在 PASCAL VOC 2012上实现了更高的mAP。与SPP-Net不同,Fast RCNN把SPP层替换成RoI Pooling层。RoI Pooling层是SPP层的一个特例,将不同尺度的特征图下采样到一个固定的尺度。此外,Fast RCNN将候选区域分类损失和位置回归损失统一在同一个框架中,实现多任务损失函数,降低了训练所需的存储空间。Faster RCNN引入了一个区域候选网络(Region Proposal Network,RPN)[20],替换了Fast RCNN 采用的选择性搜索方法,它与检测网络共享全图像卷积特征,从而实现了几乎无成本的区域提议。为了将RPN与Fast RCNN对象检测网络统一起来,引入了一种训练方案,该方案在区域提议任务的微调和物体检测的微调之间交替,同时保持提议的固定。FPN(Feature Pyramid Network)在特征金字塔上使用RPN网络提取候选区域[21],通过将深层特征与浅层特征相融合,在特征金字塔的多个尺度上进行预测,从而加强了浅层特征图的语义,提高了小目标的检测精度。
为了提高检测速度,Redmon等人提出YOLO网络,将检测框架设置为单个回归问题[22],直接从整个图像预测边界框坐标和类概率。YOLO 网络可以快速识别图像中的对象,但它很难精确地定位某些对象,尤其是小对象。SSD 网络在特征图上使用小卷积核来预测边界框位置中的对象类别和偏移[23],采用多尺度特征图预测,在不同尺度的特征图上直接提取预设数目default box进行预测,比YOLO网络检测更快,而且精度更高。
为获取位置更精确的检测边界框,Jiang 等人提出IoU-Net网络[24],使用网络训练IoU(Intersection-over-Union)分支,提取每个边界框的定位置信度,从而提升了定位的精度。还提出PrRol-Pooling,解决了Faster RCNN中Rol Pooling 取整运算时一定程度丢失位置信息的问题。但是IoU-Net 网络还存在一定的局限性:IoU 与常用的损失没有强相关性;如果两个对象不重叠,则IoU值始终为零且无法优化,并且不会反映两个形状彼此之间的距离;IoU无法准确区分两个对象的对齐方式。为此,Rezatofighi 等人提出用 GIoU(Generalized Intersection over Union)损失函数作为边界框回归分支的损失[25],可以提升2%~14%的准确度。
卷积神经网络结构复杂,参数太多,会导致无法应用到实际场景中检测交通标志。因此Aghdam等人[26]提出一种轻量级的卷积神经网络,该网络使用膨胀卷积实现滑动窗口方法,使用数据集中的统计信息来加快网络前向传播的速度,在德国交通标志检测数据库(German Traffic Sign Detection Benchmark,GTSDB)上测试得到99.89%的精确度,在NVIDIA GTX 980 GPU硬件上运行每秒可以检测定位37.72张高分辨率图像。
交通标志会被树木、建筑物、旁边行驶的车辆等遮挡,且交通标志还会被其他交通标志遮挡,这给交通标志定位带来一定的挑战。为了解决检测目标被遮挡的问题,Wang等人提出Repulsion Loss来约束检测器的推荐区域[27]。Repulsion Loss 包括两部分:缩小提案与其指定目标之间的距离的吸引项;使目标与周围的非目标对象保持距离的排斥项。Repulsion Loss的计算公式为:
其中,LAttr是吸引项,需要一个预测框接近其指定目标,LRepGT是排斥项,直接惩罚预测框移动到其他地面真实物体,LRepBox是排斥项,要求每个预测框远离具有不同指定目标的其他预测框。具有Repulsion Loss 的检测器不仅显著提高了遮挡情况下的检测精度,也使得检测结果对非极大值抑制(Non-Maximum Suppression,NMS)阈值的敏感性降低。
基于深度学习的交通标志检测方法通过训练大数据来学习特征,具有很强的特征表达能力,不容易受到光照、遮挡等与交通标志无关的外界因素的影响,比传统的交通标志检测方法泛化能力更强,准确率更高。
3 交通标志识别方法
当检测出交通标志之后,再提取交通标志的特征对交通标志进行分类识别。交通标志分类的方法比较多,目前主流的方法主要有基于模板匹配、机器学习和深度学习的方法。
3.1 基于模板匹配的交通标志识别
模板匹配广泛应用于模式识别领域中,它的算法较为简单。将预先已知的小模板在大图像中平移来搜索子图像,通过一定的算法在大图像中找到与模板最匹配(相似)的目标,确定其坐标位置[28]。为了减少传统模板匹配算法的计算量,提高算法的运行效率,唐琎等人提出一种快速的模板匹配算法[29]。一开始取较少的点参与模板匹配,通过相关系数的比较来逐步增加参与匹配的点的数目,记录已运算过的像素并保存步长变化前的运算结果,保证不进行重复计算。冯春贵等人提出一种改进的模板匹配方法对限速标志进行识别[30]。首先将交通标志与传统模板进行匹配,如果匹配不成功,再抽取限速标志字符的边缘信息,最后用边缘模板匹配限速标志,与传统模板匹配算法相比较,识别率由80.95%提高到95.24%。
3.2 基于机器学习的交通标志识别
基于模板匹配的方法的识别结果易受到图像扭曲、遮挡、损坏等影响,难以兼顾计算量和鲁棒性的要求,因此基于机器学习的交通标志识别是一种比较流行的方法。目前的算法主要是采用“人工提取特征+机器学习”,即提取一些能够表示或描述交通标志信息的特征,再结合机器学习算法进行识别。常用的人工提取特征有尺度不变特征变换(Scale Invariant Feature Transform,SIFT)、ORB(Oriented Fast and Rotated BRIEF)特征、Gabor 小波特征和方向梯度直方图(HOG)特征。常用的机器学习分类器有支持向量机(SVM)、BP(Back Propagation)神经网络、极限学习机(Extreme Learning Machine,ELM)和最近邻算法(K-Nearest Neighbor,KNN)。
胡晓光等人[31]提出使用SIFT 方法提取标志的局部特征,然后使用SVM进行训练得到分类模型,在采集的测试影像集上的识别率为93%,在Intel Core 2Q6600系统上平均识别时间为0.44 s。文献[32]发现SIFT算法特征获取时间较长,带来很大的计算负担,于是提出ORB 算法,经实验对比发现,它的计算速度比SIFT 快100 倍。胡月志等人采用基于ORB 全局特征与最近邻的交通标志快速识别算法[33],在公开的德国交通标志识别数据库(German Traffic Sign Recognition Benchmark,GTSRB)上测试,一个交通标志的平均识别时间为2 ms,算法识别准确率达到91%。对比文献[31,33]实验结果发现,ORB 特征提取的识别率略低于SIFT 特征提取的识别率,但是实时性却远远超过了后者。
谷明琴等人[34]提出用Gabor 小波提取交通标志特征,用线性支持向量机来分类交通标志,在GTSDB数据集上测试,识别率达到95.6%。甘露等人[35]用Gabor 滤波提取图像纹理特征,同时用小波不变矩提取形状特征,将融合特征输入BP神经网络分类,识别率比文献[34]算法提高了3%左右。文献[36]采用HOG-Gabor特征融合与softmax分类器的交通标志识别方法,在GTSRB数据库上的识别率为97.68%,比单独采用HOG 特征识别率提高了0.57%,比单独采用Gabor 特征识别率提高了0.14%,识别每张图片耗时0.08 ms。分析文献[34-36]发现,类别单一的特征提取具有一定的局限性,不能很好地描述交通标志的特征,基于特征融合的算法能够提高交通标志的识别率。文献[36]对线性判别分析(Linear Discriminant Analysis,LDA)、SVM、softmax 三种分类器性能进行了比较,对于高维度Gabor 特征,softmax 分类器识别率比其他两种分类器更高,识别时间更短,实验结果表明LDA、SVM分类器更适合低维度特征识别。
2004 年Huang 等人[37]提出简单高效单隐层前馈神经网络学习算法——极限学习机(ELM)。ELM算法比BP网络、SVM学习得更快,且具有良好的泛化能力。徐岩等人提出一种基于PCA(Principal Component Analysis)-HOG 和极限学习机模型的交通标志识别算法[38],在GTSRB数据库上测试,识别率可达97.69%,耗时0.16 ms便可识别一张交通标志。徐岩等人在文献[38]的基础上,融合ELM 和AdaBoost 分类器识别交通标志[39],在GTSRB 数据库上识别率为99.12%,单张交通标志的识别时间为7.1 ms。实验结果表明,分类器融合的分类算法能够使识别效果更好,还能提高模型的泛化能力和鲁棒性,而识别时间也变长。
3.3 基于深度学习的交通标志识别
深度学习具有强大的特征学习能力,深度卷积神经网络(CNN)是深度学习在计算机视觉上应用最广的模型之一。深度卷积神经网络不需要设计手工特征,输入模型的图像通过监督学习来完成特征提取和分类,识别率高于AdaBoost和SVM等传统算法。
Sermanet 等人[40]提出多尺度CNN 应用于交通标志识别任务,达到99.17%的准确率。Ciresan 等人[41]使用多列深度卷积神经网络(Multi-Column Deep Neural Network,MCDNN)在GTSRB数据集上获得99.46%的准确率,但是运算量大,在系统Core i7 950(3.33 GHz)4个GTX 580型显卡的GPU上训练具有25列的MCDNN需要37 h,单张图片的识别时间为690 ms。尽管前两个网络的准确度很高,但它们的计算效率不高,需要在硬件上进行大量的乘法运算,采用的激活函数计算效率也不高,Aghdam 等人[42]为减少计算量,选用线性整流函数(Rectified Linear Unit,ReLU)激活函数,然后将两个中间卷积池化层划分成两组,使得中间层的参数数量减半。网络模型去除了神经网络冗余参数,同时也提高了交通标志识别的准确率和实时性,算法的识别率提高到99.51%。Jin等人[43]提出了一种铰链损失随机梯度下降(Hinge Loss Stochastic Gradient Descent,HLSGD)方法训练CNN,HLSGD 方法比之前网络模型所使用的随机梯度下降(Stochastic Gradient Descent,SGD)方法训练得更快,收敛更稳定,在GTSRB上的识别率为99.65%,在系统 12 核 Intel®Core i7-3960X(两台 Tesla C2075 GPU,3.3 GHz)上的训练时间大约为7 h。
文献[43]的准确率已经比较高,但是需要学习大量的参数,训练时间还是比较长。为此,Natarajan 等人[44]提出一种低复杂度的加权组合的4 个并行的CNN 网络来识别交通标志,在GTSRB 数据集上的准确率为99.59%,当在NVIDIA 980 Ti GPU系统上运行时,可在10 ms内识别出交通标志图像。Li等人[45]使用具有不对称内核的高效且强大的CNN 作为分类器,用1×n卷积和n×1 卷积替换n×n卷积,减少了内核参数,并且降低了卷积的运算量,分类效果好,在GTSRB数据集上准确率为99.66%,在NVIDIA GTX 1080 GPU系统(单个GPU,2 GB内存)上每张交通标志图像的识别时间为0.26 ms。
LeNet-5 网络是一个7 层的神经网络,网络模型较为简单,对交通标志这种多类别的图像分类识别,准确率不高,因此研究者通过增加网络的深度来提高准确率。汪贵平等人[46]在传统LeNet-5卷积神经网络的基础上引入Inception 卷积模块组,改变卷积核的大小和数目,并且增加网络的深度,引入批量归一化算法来防止随着网络层次加深而引起的过拟合和梯度消失等问题。改进的LeNet-5 网络在BelgiumTSC 交通标志数据集上的识别率为98.51%。
基于深度学习的交通标志识别方法通过训练大数据来学习特征,比采用人工设计特征的传统方法更有优势,准确率明显提升。该算法有助于解决光照变化、部分遮挡等情况下的交通标志识别难点问题。
4 交通标志的数据库
为了满足交通标志检测与识别研究的需要,研究机构和学者们采集了交通标志数据库。交通标志数据库在交通标志识别系统中起了非常重要的作用,它是衡量和比较交通标志识别系统算法优劣的基础。2011 年以前公开的交通标志数据库是较小规模的数据库,随着深度学习的兴起,大规模的交通标志数据库开始出现。为学者今后研究算法所需数据库提供参考,列出了一些流行并且公开可用的交通标志数据库,如表1所示。
这些公开的交通标志数据库由摄像机在各种光照条件下、标志形状变化以及遮挡等条件下拍摄的,交通标志样本种类较为丰富,其中BTSD数据库和Lisa数据库包含视频。研究人员常用GTSDB 和GTSRB 数据库来进行交通标志的检测与识别。
5 分析与展望
本文对交通标志检测与识别方法进行了详细的介绍和分析,由于人工提取特征具有一定的主观性且难以选择,随着大规模交通标志数据库的出现和计算机硬件性能的提升,深度学习有着越来越明显的优势。深度学习通过学习训练大量带有标签的交通标志数据库,可以自发学习分类交通标志,在复杂背景情况下检测识别交通标志仍然能够达到很高的准确率。然而基于深度学习的交通标志检测和识别方法仍然有很大的提升空间,未来可以在以下几个方面进一步研究:
表1 已公布交通标志数据库的对比
(1)卷积神经网络达到一定层数后再加深层次,训练时间更长,准确率降低,对硬件的要求也会更加严格。如何在不影响准确度的情况下,寻找裁剪神经网络大小的规律来实现网络模型的压缩是研究的重点。
(2)交通标志会被树木、建筑物、旁边行驶的车辆等遮挡,这给交通标志检测和识别带来一定的挑战。文献[27]利用Repulsion Loss一定程度上提高了被遮挡对象的检测精度,但是还有提升的空间。根据被遮挡交通标志的特点,如何设计深度学习网络模型来检测识别交通标志是未来需要关注的问题。
(3)随着卷积神经网络层次的加深,梯度的传播会变得更加困难,在训练时可能会有梯度消失、梯度爆炸情况出现,批量归一化和残差连接算法的出现使这种情况得到了一定的改善,如何设计算法有助于梯度的传播是一个重要的研究方向。