董朋林
(四川大学计算机学院,成都610065)
基于计算机视觉的交通标志识别方法是近几年的研究重点,现有的识别系统往往分为两部分,交通标志检测和交通标志识别。交通标志检测常使用颜色特征[1-3]、形状特征[4-6]以及两者相结合[7-9]的办法。由于交通标志处于室外环境,基于计算机视觉的检测方法不仅容易受到光照的影响,而且容易受到交通标志褪色、形变和遮挡的影响。为了解决该问题,不少研究人员提出了消除光照影响的办法,例如使用多颜色空间或者自动白平衡等方法[10-11]。在形状检测方面,有Hough 变换[12]、最小二乘法拟合[6]等常用办法。有研究员使用了颜色与形状特征结合的办法,但是容易存在计算量大、耗费时间的问题。
而交通标志识别上,常用的方法是先提取纹理特征例如HOG 特征[13]、Hu 不变矩和Zernike 不变矩特征[14]、Haar[15]特征等,然后使用SVM 或者AdaBoost 等分类器进行分类。近年来,深度学习算法在物体识别上取得了不错的效果,例如R-CNN 系列算法[16]。也有研究员将该方法用以交通标志的识别和检测,但是交通标志通常只占整个图像的很小一部分,而该系列算法对于小目标的识别效果不是特别好。
为了解决当前算法存在的问题,本文针对文献[17]提出的RGB 空间颜色分割算法进行了改进,能较好地降低光照对颜色分割的影响。然后使用HOG 与LBP特征结合的融合特征训练SVM 分类器,实现交通标志的检测和基于颜色的初分类。最后设计了两个相同结构的十层卷积神经网络,对两种类别的交通标志精确分类。整个算法检测与识别交通标志的流程如图1 所示,经试验表明,该方法能从复杂的街道实景中检测到交通标志,部分小交通标志依然有较好的效果,并以较高的分类准确率对36 种交通标志精确分类,且具有鲁棒性高和抗干扰性强的优点。
图1 算法流程
为了减小候选ROI 的数量,需要先对图像进行预处理,大体流程如图2 所示。
图2 颜色分割流程
前3 个步骤需要在YUV 颜色空间中处理,该颜色空间的一个重要特性就是亮度信号Y 和色度信号U、V是分离的。为了消除光照的影响而不使物体的颜色发生变化,只需要对Y 通道进行处理而保持U、V 通道不变。计算Y 通道直方图,然后进行直方图均值化,使整副图像的像素Y 通道值占有更多的级别且均匀分布,提高了对比度。处理过程如下:
(1)按照公式(1),将RGB 颜色空间转换为YUV颜色空间:
(2)计算Y 通道直方图H,并进行归一化,使直方图分布到255 个级别,计算直方图积分(式(2)),然后将计算后的结果当作一个查找表,将原始图像各像素点的Y 值,转换为新的值Y’;
(3)计算均衡之后的Y’通道平均值Yavg;
(4)计算均衡之后Y’值大于Yavg部分的平均值YHav和Y’值小于Yavg部分的平均值YLav;
(5)设定预期的Y’通道平均值YDavg、大于Yavg部分的期望平均值YDHav和小于Yavg部分的期望平均值YDLav,本文中设置YDLav=120,YDavg=160,YDHav=200;
(6)按照公式(3)计算每个像素点新的Y 通道值;
(5)再次使用公式(1),从YUV 颜色空间转回RGB颜色空间,然后转换到HSV 颜色空间;
(6)结合YUV 空间和HSV 空间信息从原图分割出红色和蓝色,并二值化(式(4));
(7)形态学处理,并提取轮廓。
本部分各阶段处理效果如图3 所示。
图3 颜色分割
在经过颜色分割之后,过滤掉了原始图像中的大部分信息,但是还存在很多的干扰,本部分主要阐述从剩余轮廓筛选出交通标志的过程。
根据剩余轮廓在原始彩色图像上提取最小包围矩形作为候选区域ROI,在ROI 内提取HOG 特征和LBP特征,用于训练两个不同的SVM 分类器,分别用于区域内是否含有红色和蓝色交通标志。
方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种常被用来做物体检测的特征描述子,该特征通过计算和统计设定区域内的方向梯度直方图得出。含有交通的区域会有明显的圆形、矩形或者三角形边缘,其方向梯度直方图与不含有交通标志的区域有明显的区别。图4 为提取HOG 特征之后的效果。经过大量实验,在样本大小为64×64 的条件下,设置block 为16×16,cell 为4×4,bin 等于9 时,效果最好。
图4 交通标志的HOG特征
使用单独的HOG 特征无法区分某些极端情况下候选ROI 中是否含有交通标志,因此采用LBP 特征与HOG 特征融合形成最终的特征。局部二值模式(Local Binary Pattern,LBP)也是一种计算机视觉中常用的特征算子,LBP 特征具有灰度不变性、旋转不变性和计算简单的特点。在形成该特征的时候,同样需要将原图划分为若干区域,统计每个区域内的LBP 的归一化直方图,连接每个区域的统计直方图成为最后的特征向量。经过实验取每个区域为8×8 大小时,效果最好。
根据前文描述的方法提取HOG 特征,特征维度为6084 维;提取LBP 特征,特征长度为576 维,采用特征层融合的方式将两个特征串行为6660 维融合特征。由于特征长度过长,直接输入到SVM 中,训练和分类过程都会非常缓慢,故采用主成分分析(PCA)进行特征降维。经实验,降维后保留1500 维左右的特征能达到最好的效果。
本实验采用以径向基函数(RBF)为核函数的SVM作为分类器,训练了两个分类器分别区分含有红色交通标志的ROI、不含交通标志的红色ROI 和含有蓝色交通标志的ROI、不含交通标志的蓝色ROI。正负样本来自训练集经过颜色分割后的局部彩色图像,正样本为含有交通标志的区域,负样本为不含交通标志的区域,如图5 所示。
图5 正负样本
经过SVM 分类之后,样本已经被初分为了3 类,分别是含有红色交通标志、含有蓝色交通标志和不含交通标志,接下来使用卷积神经网络对前两类进行精确分类。卷积神经网络由一系列卷积层和池化层构成,每一层的输入数据为前一层的输出数据,最后再连接2-3 个全连接层,用于输出最后的分类结果。将输出结果与物体的真实类别相比较,得出损失函数值,通过最小化损失函数来调整每一层的参数。
在文献[19]中,Cires an D 等人设计了一个多列深度神经网络用于交通标志的分类,在GTSRB 测试集上取得了比肉眼识别准确率跟高的结果,达到了99.46%的准确率。他们在将样本送入网络之前,先做了5 种不同的预处理,每种预处理之后的结果单独输入5 个不同初始化但是具有相同结构的9 层卷积神经网络中。这样的多列深度神经网络虽然在该数据集上能取得很高的效果,但是训练该神经网络的时间多达几十个小时,且在识别的时候无法满足实时性需求。因此,本文设计了2 个十层卷积神经网络分别用于分类红色和蓝色交通标志,训练时间大幅度减少,而且还有很高的分类精度,在TT100K 的单纯用于测试分类的测试集上能达到98%左右的准确率。
表1 神经网络结构
网络结构如表1 所示,在前6 层使用了两个卷积层接一个池化层的模型代替了卷积层与池化层交替的结构,然后在每一个卷积层后面增添非线性激活函数ReLU。在池化层中,使用了尺寸为2×2,步长为2 的最大池化。在池化层2 后面再接上交替的卷积层和池化层进一步提取特征。最后两层是全连接层,在每一个全连接层后面驾驶drop 率为0.5 的dropout 层防止过拟合,最后一个全连接层的神经元个数为最后要分类的交通标志的类别数目。在损失函数的选择上,使用了Softmax 作为损失函数,并使用了Adam 作为优化损失函数的方法。
为了训练该神经网络,我们使用了TT100K 数据集[20],关于该数据集的详细介绍在下一节中。该数据集各类别的样本数量分布不均衡,所以在训练之前对数据集进行了增广。保持原始样本数量大于1000 的类别的样本数量不变,对数量小于1000 的样本我们使用了两种方式增广数据集,一是将原始样本随机旋转[-5°,5°],第二中方式是将原始样本随机平移[-10,10]个像素位置,这样就使得样本数量为原始数量的3 倍。各类别样本数量如图8 所示。
图6 每种类别的样本数量
在训练的时候,将训练集的20%作为验证集,并设置了可变学习率,当迭代进行到某个次数的时候,将学习率变为当前学习率的1/10,初始学习率设置为0.001。图6 为训练过程中,准确率和损失的变化趋势。该网路的一个明显优势是训练时间,与动辄训练需要几十个小时的深度神经网络相比,训练本网络使用的时间不足1 个小时。
图7 准确率与损失趋势(左为红色交通标志,右为蓝色交通标志)
图8 数据集中包含的红蓝交通标志类别
为了评估本方法的效果,在参考了其他文献的数据之后,在交通标志检测和识别方面与一些典型方法做了多个相关对照实验,最主要有:一是与传统的交通标志检测算法进行了对比,二是与完全使用神经网络的办法就检测与识别同时进行时的对比。所有实验均在一台CPU 为Intel Core i7、GPU 为GTX 1080、64G 内存的Linux 计算机上进行。
本文使用Tsinghua-Tencent 100K[20]数据集对交通标志的检测与识别进行实验。该数据集是适合中国道路情况的、全新的开放交通标志基准,由清华大学与腾讯街景联合推出的。整个数据集有100000 张图片,其中包含交通标志的图片有9000 余张,这些图片是不同条件下的腾讯街景图像,大小为2048×2048 像素。包含交通标志的图片又分为test 测试集和train 训练集,其中test 集包括3073 张、train 集包括6107 张。数据集中包括大量各种光照条件下的样本,而且部分标志有形变、遮挡、褪色和与背景颜色相似等情况出现,因此该数据集能够较好地测试交通标志识别分类算法应对各种复杂情况下的能力。数据集中包含的红色和蓝色交通标志类别如图8,几乎涵盖了所有中国道路上常见的红蓝标志。在测试的时候,部分交通标志样本数量实在过少,故选取了样本数量大于80 的类别,共计36 类,并按上一节所述方法进行增广。
传统的方法对于圆形交通标志的检测使用Hough变换或者最小二乘拟合的方法,使用机器学习的办法则使用HOG 特征加SVM 或者Haar 特征加AdaBoost的办法,在相同的数据集上,我们与这几种方法进行了对比,对比结果如表2 所示。从下表可以看出,本文的方法与其它方法相比,无论是在准确率还是在召回率上都有明显的优势,只是在处理时间上,虽然比Hough变换所用时间少,但是却比最小二乘拟合多,这暴露出了本方法的一个可以改进的地方。
在实验过程中也发现,本方法在有遮挡、形变和旋转的情况下依然能从图中检测到交通标志,而传统方法则很难处理该情况。机器本方法则不使用形状进行判别,从而避免这两种情况的干扰。相比于使用单特征的机器学习方法,本方法有更高的准确率和召回率以及更低的漏检率。
表2 检测准确率
仅用本文提出的网络用于分类能取得98%的准确度,但是将检测阶段联合在一起的准确度则更能说明效果。我们主要与文献[20]中提出的卷积神经网络和经典的Fast R-CNN[21]进行了比较。表3 显示的是与这两种方法相比各类别的准确率(FA 为Fast R-CNN 的准确率,TA 为文献[20]的准确率,OA 为本文方法的准确率),从表中数据可以看出,虽然在部分类别的分类正确率上不如文献[20]中的方法和Fast R-CNN,但是总体上准确率较稳定,在部分类别的识别准确率上有明显优势,Fast R-CNN 的准确率约为0.50,文献20 的准确率约为0.88,本文的准确率约为0.91。不过在实验中发现,三种方法都存在一定程度上的漏检,尤其是Fast R-CNN,原因在于交通标志相对于整个图片来说所占比例太少,暴露出不管是传统方法还是深度学习的方法,在小目标的检测上都需要提高。
本文主要说明了一种针对街道实景交通标志的高效检测和识别方法,对方法的各主要步骤进行了详细的说明。与传统方法相比,使用了YUV 与HSV 颜色空间结合的颜色分割方法。针对传统的使用颜色分割+形状匹配的方法不能有效解决遮挡、形变和旋转的情况,提出了使用颜色分割和SVM 检测的方法,在颜色分割之后使用HOG 与LBP 结合的融合特征用于判定ROI 是否含有交通标志。在精确分类的时候,使用了2 个具有相同结构的10 层卷积神经网络进行分类,与其他的深度学习方法相比,在分类准确率上有明显的优势。
在未来,还需要对本方法进行改进,希望能降低检测所用时间,针对小目标也能有不错的检测效果。
表3 各类别分类准确率