基于卷积神经网络的道路标识识别方法
2018-06-22胡庆文陈湘
胡庆文 陈湘
摘要:道路指示标识准确检测识别是智能交通领域实现车辆自动导航和安全驾驶一个关键问题。本文提出一种基于卷积神经网络检测识别道路指示标识的方法,首先将所采集的道路指示标识图像进行几何归一化与灰度化,再进行滤波等图像预处理,采用分块二值化及腐蚀膨胀处理方法得到理想的二值化图像,然后采用卷积神经网络方法识别图像。本文建立了道路指示标识图像数据库,并进行训练和测试,取得了较好的效果。实验结果表明,与传统机器学习方法相比,本文提出的方法,能更好地识別道路指示标识。
关键词:道路标识;卷积神经网络;分块二值化;图像识别
1.国内外研究现状
在智能交通领域,道路指示标识准确并快速的检测与识别是实现车辆自动导航和安全驾驶的首要问题。随着路面交通的不断发展,交通压力也在急剧增加,交通系统的智能化也在逐步成为重要的研究方向。作为交通系统智能化的核心部分,准确检测识别出交通道路指示标识,成为智能交通的重要研究方向。
图像检测的中心任务是对图像进行识别和对图像进行特征提取,即是将物体形状,位置,图像边界,阴影轮廓等重要图像边缘产生的视觉信息让计算机分析理解,图像的边缘负载的信息,能让图像处理过程中达到识别作用。在对图像进行检测和边缘提取的研究中,出现了许多的边缘检测识别方法,有各自的局限性。传统的边缘检测对噪声敏感,实际效果运用有时不能达到预期目标。故而近年来较主流研究方向是寻找更普遍适用的边缘检测方法。瑞典的Gareth Loy实验室和澳大利亚的Nick Barnes的自动化研究所合作构建了利用图形形状和交通标志图像对称性来确定交通标志图形质心位置的交通标志识别系统达到了极高的识别准确率。在我国,由于国内道路设施和道路交通研究的起步晚于国外,使得国内在道路交通系统的智能化方面也相对于国外研究相比有一定的差距,而其中有代表性的是一种基于数学形态学的交通标志自动识别方法[1],针对一些警告标志采用数学形态及形态学骨架函数为特征做模板匹配,再对交通标识进行分类识别,取得了比较好的识别效果;常规的采用SVM、PCA主成分分析法,取得了较好的效果,但是对于不同角度形态的指示标志图像,效果较差。本文采用的方法是先采集所需图像,再对图像进行尺寸归一化、进行灰度处理再滤波,去除杂散边缘和双边缘,然后采用边缘特征的阈值选取方法实现图像二值化,二值化后的图像再经过腐蚀膨胀,分块状区域处理,寻找当中最大连通域,结合抗干扰能力强的Hough变换校正和归化,最后采用卷积神经网络方法识别图像,反馈出错误率。本文针对常见的六类指示标识进行处理。
2.道路指示标识的图像处理
2.1道路指示标识检测
本文针对的道路指示标识主要为城市道路路面交通方向标志,图像获取传感器为安装在汽车正前方的摄像机。由于道路周围环境的复杂性,特别是在阳光以及路面损坏的状态下,极大地干扰了道理指示标识的定位,因此,如何从影像中减少干扰信息是成功定位道路指示标识的一个必须面对的问题。通过观察大量的图片发现,道路指示标识一般出现在所采集的图像的正中间的位置,其附近一般不会出现和道路指示标识混淆的其他特征的物件。随着道路指示标识的逐渐靠近,其形状越来越大,其位置也逐渐慢慢地向正前方移动。因此,在图像采集后,通过颜色对比判断疑似道路标志物,再进行图像的裁剪,仅仅采用如图1所示位置的图像。通过如此的处理方式,不仅大大减少了影像中干扰交通标志的信息,同样也大大减少了后续环节处理的计算量。
2.2道路指示标识图像灰度化
由于安装在汽车正前方的摄像机采集图像分辨率可能不同,所以需要进行几何尺寸的归一化。道路指示标识采集之后,因为道路标志检测识别对于颜色要求不高,为了减少图像计算数据量,将三维彩色图像转化为二维灰度图像,即进行灰度处理。在图像灰度化时,加权平均法是目前最常用的方法,其灰度化结果更为合理,更符合实际应用的需要,所采用灰度化公式如(1)所示。道路标志图像及灰度化之后的图像如图2 所示。
(1)
2.3图像中值滤波去噪
图像在采集时,由于车辆行驶中受外界各种因素干扰,例如由于电子干扰、光照以及噪声影响,会产生一些噪声或模糊。需要采用滤波器进行去噪。目前常见的两种滤波是邻域滤波与中值滤波,本文经过试验对比,发现中值滤波的优点是可以很好的过滤掉椒盐噪声,并且更加的适合道路指示标识图像的处理。道路标志图像及中值滤波之后的图像如图3所示。
2.4图像分块二值化以及腐蚀膨胀找最大连通域
Otsu(大津展之)于1978年提出的最大类间方差法[2,3]是引起较多关注的一种阈值选取方法,它是在判决分析或最小二乘原理的基础上推导出来的,可以获取二值化之后的图像。但是由于道路标志图像受光照影响较大,当强光照时,如果一部分道路标志图像在树荫下,二值化效果误差较大,本文采用分块二值化的方式,将图像均匀分成4块,每块图像采用最大类间方差法进行二值化,再将分块二值化之后的结果汇总,可以得到不受光照和树荫干扰的更加准确的二值化图像,如图4(a)所示。
在经过图像二值化与滤波后得到的图像还存在一些噪声点,说明普通的滤波方法不能完全的去除噪声点,所以本文采用先腐蚀后膨胀的方式[4],然后寻找图像中的最大连通域[5],从而得到准确的道路指示标志的二值化图像,如图4(b)所示。将处理后的图像重新建立图像库,以便后续卷积神经网络进行图像识别。
3. 基于卷积神经网络的道路标识识别
卷积神经网络(Convolutional Neural Networks, CNN)是一个受生物视觉启发、以最简化预处理操作为目的的多层感知器的变形,本质是一个前向反馈神经网络,卷积神经网络与多层感知器的最大区别是网络前几层由卷积层和池化层交替级联组成,模拟视觉皮层中用于高层次特征提取的简单细胞和复杂细胞交替级联结构, 2012年Yann等将CNN用于手写数字识别,并取得了该问题的霸主地位。近年来,神经网络在多个领域均表现出突出的效果和潜力,在图像处理领域,以卷积神经网络(convolutionalneural network,简称CNN)为代表的深度学习模型已经突破了人类自身的识别能力[6,7]。并且在语音识别、人脸识别、通用物体识别、运动分析、自然语言处理甚至脑电波分析方面均有突破。
二维离散数据卷积公式:
(2)
卷积神经网络是受视觉神经机制启发而设计的一种多层感知器(Multi-Layer Perceptron,MLP)。与传统神经网络一样,它运用反向传播(Back Propagation,BP)[8]算法对网络进行训练[9]。卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。如果将神经网络看作是一种训练生成分类器的算法,那么卷积神经网络可以概括为提取特征和训练生成分类器的算法。
卷积神经网络的三个基本概念是:局部感知[10]、权值共享[11],以及时间或空间降采样。一般认为人对外界的认知是由局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。网络部分连通的思想,也是受启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)。
(3)
在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。
在通过卷积获得了特征之后,下一步采用这些特征去做分类。使用提取到的特征去训练分类器会使计算量过大,且容易出现拟合现象,再进行池化处理。
本文采用上一节处理后获取的标准二值化图像,将图像输入到深层CNN进行训练,能大大提高图像检测识别准确率,过程包括以下步骤:
(1) JIANCE数据集:原始输入数据集共6类。4800张训练图像,120张测试图像,每张图像大小为56*56。
(2)网络层级结构概述:5层神经网络。
(3)输入层: 输入数据为原始训练图像。
(4)一层卷积:5个5*5的卷积核,步长为1。
(5)一层池化:卷积核大小为2*2,步长为2。
(6)二层卷积:12个5*5的卷积核,步长为1。
(7)二层池化:卷积核大小为2*2,步长为2。
(8)输出层:输出为12维向量。
主要的Matlab代码流程:
(1)获取训练数据和测试数据:
(2)定义网络层级结构;
(3)初始设置网络参数(权重W,偏置b)cnnsetup(cnn, train_x, train_y)
(4)训练超参数opts定义(学习率,batchsize,epoch)
(5)网络训练之前向运算cnnff(net, batch_x)
(6)网络训练之反向传播cnnbp(net, batch_y)
(7)网络训练之参数更新cnnapplygrads(net, opts)
(8)重复(5)(6)(7),直至满足epoch
(9)网络测试cnntest(cnn, test_x, test_y)
(10) 得到错误率
4.实验及结果分析
应用层主要面向于有车载摄像头的汽车,通过摄像头捕捉道路标志,将得到的信息逐帧分析,将其中较为清晰的图像交给程序进行识别。
本实验主要结合手写字体识别主要代码,参考其数据库布局与标签分类形式。手写字体识别运用的神经网络识别模型是卷积神经网络,数据库使用数据形式为mat格式下的JIANCE数据集。本文模仿mnist数据集用采集得到的图像库建立一个新的JIANCE数据集。
实验的第一步就是需要将jpg格式的图像转化为JIANCE数据集,其中JIANCE数据集由四个部分组成,分别是一个训练图片集,一个训练标签集,一个测试图片集,一个测试标签集。标签格式为x(y)(x为图像种类数目,y为每类图像的数目)。实验采用的转换方法是先将所要用到的图像统一切割成56*56像素大小,再通过c语言程序,将预先做好标签的图片进行处理,获得4个主要的txt文件后,再用matlab将文件转化为mat格式。Mat格式下的JIANCE数据集就是在随后的训练测试中所要使用的数据库。数据库包含4920张图片,种类为6类(每类820张),本实验使用其中的4800张(每类800张)用来训练,剩余的120张(每类20张)进行测试。
结果分析:
实验数据的最终记录结果见下文表格1。本文采用5层结构的神经网络,将道路标识共6类样本进行输入,经过网络训练与检测后,每类标识的检测准确率最高达到83.67%,实验结果较为理想。从训练样本中提取特征,利用原始数据提供的信息进行路标分类与识别,实验结果表明,对于图片模糊,噪声污染面大以及对比度小于正常值的场景,也同样可以有效地识别出道路标识。
从表1中可以看出,本实验采用20次训练次数。神经网络随着训练次数迭代量的增长,通过优化训练样本的误差,不断修复误差,大幅度提升了多标签功能识别图像能力,对比于传统SVM[12]算法,本文所采用的CNN算法能更加准确识别道路指示标识。
表1 方向检测交叉验证准确率
5.结论
本文针对城市道路交通路面方向指示标识,提出了一种深度学习检测方法。本文利用卷积神经网络实现了对道路标识线的识别,该算法简单,很大程度上降低了对路面标识匹配系统的容量,与传统方法相比,道路标识线识别精度明显提高,而且得到的图像边缘接近于理想边缘,明显提高了道路标识线检测准确率。实验还表明,其抗干扰能力强,能克服一定路面阴影、光照等的影响。
参考文献
[1] 蒋刚毅,郑义,郁梅.基于数学形态学的交通标志自动识别[J].汕头大学学报(自然科学版),1998,(1):90-96.
[2] Otsu N. A threshold selection method from gray-level histogram. IEEE Trans, 1979; SMC-9; 62-66.
[3] 石为人,方莉,陈舒涵.基于改进Otsu和Niblack的图像二值化方法[J].世界科技研究与发展,2013,(3):395-398.
[4] 李晓飞,马大玮,粘永健, 等.图像腐蚀和膨胀的算法研究[J].影像技术,2005,(1):37-39.
[5] Rumelhart D, Hinton G, Williams R. Learning representations by backpropagatingerrors[J].Nature, 1986, 323(6088): 533-536.
[6] 陈先昌.基于卷积神经网络的深度学习算法与应用研究[D].杭州:浙江工商大学2014.
[7] LeCun Y, Boser L, Denker J, et al.Backpropagation applied to handwritten zip code recognition[J].Neural Computation, 1989, 1(4): 541-551.
[8] 黃志斌,陈锻生. 支持向量机在车牌字符识别中的应用[J]. 计算机工程,2003,(5).
[9] 孙晔,吴锐文.基于卷积神经网络的车标识别[J].现代计算机(普及版),2015,(4):84-87.