基于卷积神经网络的实景交通标志识别
扫描二维码
随时随地手机看文章
引 言
随着计算机视觉技术的不断发展与完善,人们开始着眼于将计算机视觉系统应用于现实生活中,人脸识别技术在身份验证方面达到了令人瞩目的成就,而路标识别则是自动驾驶的重中之重。自动驾驶的火热反映出人们对其的迫切需求,而更多的瞩目意味着更严苛的标准,自动驾驶对路标识别的要求不仅仅在准确性方面,更多的是要求系统的处理速度是驾驶系统可以接受的,即要求识别过程尽可能的高效。相较于传统的识别方法,使用卷积神经网络不仅可以达到更加令人满意的准确率,同时,算法的消耗时间也可以接受。
卷积神经网络经过多年的积累和完善,已经被广泛应用于图片识别领域, 并且取得了显著的成效。Lenet-5 可谓是最早的卷积神经网络结构,由LeCun 等人首先提出,他们最早将其应用在文本识别领域,在 mnist 手写数字数据库上, Lenet-5 的识别率可以达到 99.8%,这是使用传统模式识别方法所不能比拟的。卷积神经网络的另一大优势在于,它可以将原始图片直接输入网络,自动训练特征,不同于很多传统的模式识别方法,无需对图片进行繁复的预处理工作或人为指定特征。
近期研究表明,识别的准确率与神经网络的深度有很大关系,一般情况下,深层网络相较于浅层都可以取得较高的准确率。所以本文在传统的Lenet-5上做了改进,通过增加它的层数来提升识别效果,并应用于实景交通标志的识别中。经验证,这些改进取得了不错的效果。
1 实景交通标志识别神经网络模型
传统的Lenet-5 网络一共包含 7 层,含有卷积、下采样和池化三种操作。卷积层使用 5 5 的卷积核,卷积步长为1 ;池化层使用max-pooling,池化窗口大小 2 2,步长为 1。传统网络由于受到网络层数的限制,导致识别率难以再提升,现做如下改进:
(1) 增加了网络层数,增加了两个卷积层,并把卷积核大小改为 3 3;
(2) 在全连接层之后加入Dropout操作,以防止网络训练过拟合;
(3) 使用Softmax层作为输出层,将结果映射为概率的形式。
改进的网络结构见表 1 所列。
在该网络模型中,使用了4 个卷积层,每一层的卷积核 大小均为 3×3,前两个卷积层含有 64 个 FeatureMap,后两个 卷积层含有 128 个 FeatureMap。每隔两个卷积层会紧跟一个 池化层,池化窗口为 2×2,步长为 2。神经网络的末端是两个 全连接层和一个 Softmax 层,全连接层的神经元个数分别为 786 和 500,每个全连接层均采用 Dropout 操作,即随机去掉 一些神经元的连接,Dropout 概率取 0.5。
2 训练集
训练集包含 10 万张训练图片和 2万张测试图片,包含100种交通标志分类,所以每个目标分类对应 1000张训练图片和 200 张测试图片。这些图片是在不同时段选择各种不同角度拍摄的实景图片,更能真实反映实景图识别中光照、天气等复杂情况的影响。每张图片都是 64 64 的RGB 三通道图片。在训练网络过程中,这些图片不需做任何预处理,可直接输入网络进行训练。常见的交通标志如图 1 所示,交通标志图例如图 2 所示。
3 深度神经网络训练过程
一直以来深度神经网络的训练都被公认为是一件很困难的事情,随着网络深度的增加,训练难度会越来越大。网络权重的初始化不理想或者训练参数设置不合理,都会导致网络训练过程中出现过拟合,进而致使训练失败。因此,选择一套好的训练方法十分必要。可以将神经网络看作一个关于输入向量 x、权重 w 和偏执 b 的非线性函数,用 F(x,w, b) 表示。使用交叉熵函数来计算网络的输出 F(x,w, b) 与真实标签 L(x) 的误差值:
其中,n 表示训练样本的个数,x 表示某一个样本,F(x,w, b) 表示该样本经过神经网络后的输出,L(x) 表示该样本的标签。 我们的优化目标是最小化该损失函数 C(x, w, b)。
目前对于神经网络的训练均采用基于梯度的优化算法, 这种算法分为以下两步:
(2)利用梯度更新 w 和 b 的值,从而使 C(x, w, b)逐步趋于最小化。
反向传播算法是一种利用误差反向传播来求取梯度的方法。当网络获得一个输入向量时,该向量会通过前向传播经过网络的每一层,直到其到达输出层。这时,输出层会将当前向量与期望输出向量进行比对,并使用一个误差函数以计算得到网络中每层存在的误差值。这些误差将被反向传播回网络中的每一层,我们可以认为这些误差值便是该输入向量对网络的贡献。反向传播算法使用这些误差值与相应的权重值进行损失函数的梯度计算。当梯度计算好之后,使用 伴随冲量的随机梯度下降算法 来优化权重 w 和偏执 b :
其中, >0 是学习率,m∈[0, 1] 是冲量系数,∇wC x( , w b, ) 是损 失函数 C 关于权重 w 的梯度。偏执 b 的更新和权重 w 的更新 类似,需要计算损失函数 C 关于偏执 b 的梯度。
网络中的权重 w 使用 Xavier 方法初始化,而偏执 b 则统 一初始化为 0。在训练过程中,将冲量系数 m 设置为 0.9,学 习率 设置为 0.001,min-batch 设置为 100,经历一个 epoch 需要 1 000 次迭代。
4 实验结果
在大约 60 个 epoch 之后,准确率和误差值基本收敛, 实验结果如图 3 和图 4 所示。图 3 中两条曲线分别表示训练 数据和测试数据的准确率,图 4 表示训练数据和测试数据的 误差值。由图可以看到,随着迭代次数的增加,识别率在逐 步增加,而误差值在逐渐减小,最终的准确率可以达到 85%。