陈立潮,郑佳敏,曹建芳,2*,潘理虎,张 睿
(1. 太原科技大学计算机科学与技术学院,太原030024; 2. 忻州师范学院计算机系,山西忻州034000)
(∗通信作者电子邮箱kcxdj122@126.com)
交通标志识别是先进驾驶员辅助系统和无人驾驶系统重要组成部分。由于车辆在各种环境、光照条件、速度和地理位置下行驶,深度学习算法必须始终保持鲁棒性和可靠性。交通标志识别领域面临的主要问题有:环境、天气的影响;图像采集角度的问题;遮挡物影响;实时性问题。目前交通标志识别常用的算法有方向梯度直方图[1]、支持向量机[2]、卷积神经网络(Convolutional Neural Network,CNN)等,在正常行驶环境下,基于卷积神经网络的AlexNet[3]、LeNet-5[4]对于特殊场景识别精度和适应性存在不足。
传统的图像识别算法对于环境的适应性较差,识别速度缓慢,已经无法满足高精度实时性的要求。胶囊网络(Capsule Network,CapsNet)[5]是一种新型卷积神经网络模型,使用向量神经元克服了CNN 对物体之间的空间辨识度差及物体大幅度旋转之后识别能力低下的两个缺陷,有效地弥补了CNN 模型的不足;动态路由算法的快速收敛及简单的网络结构,不仅保证了较高的识别精度,而且收敛速度得到了极大的提升。
针对目前交通标志识别存在的问题,本文提出了一种基于胶囊网络的智能交通标志识别方法。胶囊网络本身对图像旋转的适应性很好地解决了图像采集角度问题,通过超深度卷积模型改进了胶囊网络结构中的特征提取部分,并在主胶囊层引入池化层,以及采用移动指数平均法改进动态路由算法,提高了胶囊网络在交通标志识别领域的识别精度,并降低了运算负荷,实现了比原结构更优越的性能。
胶囊网络是一个非常浅的卷积神经网络,其结构如图1所示,基本结构为:输入层、卷积层、主胶囊层和数字胶囊层。卷积层采用9 × 9 步长为1 的卷积核进行特征提取,特征提取不完全,因此在交通标志识别上精度较低。
图1 胶囊网络基本结构Fig. 1 Basic structure of capsule network
主胶囊层是胶囊网络的核心之一,实现了标量到向量的转化,原胶囊网络主胶囊层的输入维度为20 × 20 × 256 的特征图,通过8 组9 × 9 × 32步长为2 的卷积核卷积得到8 组6 ×6 × 32 的特征图,然后将8 组特征图对应位置线性组合,得到1 152个胶囊,具体过程如图2所示。
图2 主胶囊层Fig. 2 Main capsule layer
图3 为动态路由算法向量运算的形象表示,特征分量加权之后相加,得到预测向量sj,采用非线性激活函数得到vj:
图3 动态路由算法Fig. 3 Dynamic routing algorithm
用vj与特征分量的向量点积表示高层胶囊vj与低层胶囊vj-1的相关程度,调整特征分量的权重,使特征分量的加权求和结果越来越接近真实向量。
本文所提出的网络结构如图4 所示,图中Conv3-128 表示128 个3× 3 的卷积核,首先采用深度特征提取结构提取深度特征,然后通过引入最大池化层(MaxPool)的主胶囊层实现标量神经元到向量神经元的转换,最后用自适应路由算法实现胶囊间的参数更新,由数字胶囊层(Digital Capsule Layer,DigitCaps)得到识别结果。
图4 深度特征提取网络Fig. 4 Depth feature extraction network
深度卷积网络有助于提取图像深层特征,从而提高识别精度[6]。超深度卷积神经网络由牛津大学计算机视觉组(Visual Geometry Group,VGG)与Google DeepMind 公司共同研发,该网络结构说明了深度有益于提高分类的正确率,通过在传统的卷积网络框架中使用更深的层能够在同样的数据集上取得优异的结果[7]。VGG 通过使用大量3× 3 的小卷积核进行堆叠,稳步增加网络深度,用更少的参数实现了与大卷积核相同的感受野,不但减少了网络参数,而且提高了训练速度。因此,本文基于VGG 模型改进胶囊网络特征提取部分,实现深度特征提取,达到提高识别精度的目的。
如图5 所示,本文采用多个3× 3 卷积核改进原结构,在基于VGG 结构上,提出三种深度特征提取结构,特征提取层数分别为2层、3层、5层。训练时,输入图片均调整为28× 28的灰度图,激活函数选取线性整流函数(Rectified Linear Unit,ReLU)[8],采用最大池化层进行数据降维,得到14 ×14 × 256的特征图。
图5 三种深度特征提取结构Fig. 5 Three depth feature extraction structures
传统卷积神经网络的最大创新就是共享卷积参数与池化压缩参数,提高网络表达能力,减小过拟合风险[9]。Hinton 认为CNN 中的池化操作是一个灾难,因为池化过程在一定程度上弱化了神经网络结构对于位置信息的准确把握,并不能精准地学习到不同物体的位置关联[10]。但是数据降维获得抽象特征是每一个卷积神经网络的重点,胶囊网络也不例外,主胶囊层为了数据降维,原胶囊网络采用步长为2 的卷积操作,这种方式必定会丢失特征信息,尽管最大池化也丢失特征信息,但是有选择地保留了主要特征[11]。
如图6 所示,如果使用步长为1 的卷积核加最大池化操作,将会得到4 × 4 区域中最显著的特征,如果采用步长为2的卷积操作,将会受图片中数字位置的影响,得到四个卷积结果的其中之一,影响识别精度,因此,通过引入池化层实现数据降维可以提高模型性能[12]。
图6 池化层的作用Fig. 6 Role of pooling layer
本文深度特征提取得到的特征图为14 × 14 × 256,根据上述分析,主胶囊层采用8组3× 3× 32步长为1的卷积核,对比实验采用8 组3× 3× 32 步长为2 的卷积核,用VALID 方式填充,进行对比实验,验证池化层引入的效果。
许多多糖对病毒通过多糖大分子机械性和化学性竞争病毒与细胞结合位点起抑制作用,从而抑制病毒吸附细胞。EOP对天性免疫缺陷性病毒细胞的吸附与增殖有抑制作用,因此EOP具有防治艾滋病感染的作用,且无副作用[14]。辛晓明等[17]考察EOP的抗肿瘤活性,表明EOP对肿瘤S-180细胞有明显的抑制作用,且能提高动物脾脏和胸腺指数,还能增加外周血白细胞和骨髓有核细胞数量。
主胶囊层通过引入池化层实现了数据降维,但是训练后期无法稳定收敛,精度出现2%的上下浮动,分析发现,原动态路由算法更新参数bij时直接使用误差更新,未设置学习率,无法适应深度特征提取网络的训练过程,为了解决这个问题,本文采用随机优化方法Adam(Adaptive moment estimation)[13],对胶囊之间的误差进行移动指数平均,实现自适应矩估计,动态调整路由算法的学习率,使其平稳收敛。
硬件环境:i7-8700k,GTX 1060-6G,16 GB内存。
软件环境:Windows 10,Python 3.6.5,TensorFlow-GPU 1.11.0,CUDA-9.2,cuDNN-v7.5.0
本文实验数据集采用德国交通标志数据,该数据集包括43 类交通标志,训练集39 209 张,测试集12 630 张,其中有大量模糊不清的图像,部分遮挡、倾斜、运动模糊等不利条件下的图像,基本可以达到实际情况下的识别难度。部分交通标志如图7所示。
图7 数据集示例Fig. 7 Dataset examples
本文网络训练测试均采用灰度图,网络训练参数定义如下:每批128 张,路由更新次数为3,一阶矩修正指数a 为0.9,二阶矩修正指数b为0.999,稳定常数ε为10-8,迭代50次。
3.2.1 确定特征提取深度
用图5 给出的三种深度特征提取结构进行对比实验,确定特征提取的深度。表1 中A-CapsNet、B-CapsNet、C-CapsNet分别采用2、3、5 层卷积层进行特征提取,之后与胶囊网络原结构进行对比。
表1 原结构模型与深度特征提取模型的精度对比Tab. 1 Accuracy comparison of original structure model and depth feature extraction models
表1 显示,原胶囊网络的识别精度为93.17%,三种深度特征提取模型精度均比原模型高,因此深度特征提取结构很好地提高了模型性能。从表1 可以看出:深度特征提取参数层为3层时精度达到最高;A结构深度较浅,特征提取不完全,导致精度较低;C 结构可能在训练后期出现梯度消失问题,导致精度无法再提高。另外池化层的对比显示,主胶囊层引入池化层可以一定程度上提高精度,因为池化层所选择的是局部主要特征,而步长为2 的卷积操作得到的特征会受到图像拍摄角度的影响,而交通标志识别算法适应车辆行驶过程中的拍摄角度是非常重要的,因此主胶囊层引入池化层提高了网络性能,而步长为2 的卷积操作严重影响网络性能。本文接下来的对比实验均采用在主胶囊层引入池化层的BCapsNet结构。
3.2.2 验证动态路由算法改进效果
图8 是采用自适应路由算法与动态路由算法的损失对比,是训练批次达到6 000 以后的损失变化情况,黑色线条为本文算法损失变化,灰色线条为采用动态路由算法的损失变化,此时网络已经基本收敛。从图8 可以看出,灰色线条的波动程度远大于黑色线条,原动态路由算法在训练后期损失振荡严重,不利于网络收敛,而改进后的波动程度很小,更加稳定。这是因为使用移动指数平均法会使近几次的损失占更大的比重。训练初期损失较大,所以参数更新速度很快,训练后期损失较小,即使某一次损失较大,也会因为近几次的平均而减弱波动程度,因此不会出现太大的震荡,既保证了训练前期的快速更新,又保证了训练后期的平稳收敛。
图8 本文算法与动态路由算法的损失对比Fig. 8 Loss comparison of the proposed algorithm and dynamic routing algorithm
3.2.3 本文算法性能验证
为了验证本文改进后的胶囊网络的性能,本文将43 类交通标志的分类结果分为三大类以方便展示:禁令标志(红色圆形)、警告标志(红色三角形)和指示标志(蓝色圆形)。分别计算三大类的识别精度及总精度,评价模型性能,实验结果如表2所示。
表2 本文算法性能评价Tab. 2 Performance evaluation of the proposed algorithm
从表2 可看出,禁令标志的识别效果最好,警告标志识别效果最差,这是因为警告标志为红色三角形,其中有多种相似的图案,区分度较弱,在识别过程中有较大的难度,因此识别效果较差。
为了验证本文算法在特殊场景中的识别效果,采用3.2.1节中的B-CapsNet训练得到的模型和训练好的AlexNet、Let5-Net 模型,并从原数据集中挑选图像模糊、变形和缺失等难以识别的图片,测试三个模型,以验证本文算法在特殊场景下的识别效果,测试结果如图9 所示。为了直观地表示识别结果,采用清晰的能够代表类别的图片表示识别结果。
图9 特殊场景识别部分结果Fig.9 Some results of special scene recognition
图9 中待测的交通标志图片模糊、变形和缺失非常严重,在这种极难识别的场景中本文算法仍然能够正确识别2 张,而另外两种算法均无法正确识别,可见本文算法识别特殊场景中的交通标志拥有一定的优势。根据待测图片的场景分析,本文算法与经典的交通标志识别算法在光线暗淡场景下的识别错误率都比较高,图像采样的低分辨率或摄像机运动而产生的图像模糊场景下识别率也比较低,可见无法提取到图像特征是识别错误的根本原因。表3 是本次实验的精度及识别耗时的数据记录。
表3 不同算法性能对比结果Tab. 3 Performance comparison of different algorithms
从表3 结果可以看出,本文算法能够取得很好的分类结果,在特殊场景下,识别精度比AlexNet 提升了10.02 个百分点,比Let5-Net提升了12.68个百分点。这是因为胶囊网络采用向量神经元,保留图像特征的位置信息,因此对整体同变性有非常好的鲁棒性,能够正确识别不同拍摄角度下的交通标志;而基于卷积神经网络的经典图像识别算法使用标量神经元,没有保留特征的位置信息,对于图像旋转的鲁棒性较差,不能很好地解决拍摄角度问题,因此经典的CNN 算法相对本文算法精度较低。本文算法对单张图片的识别时间相对AlexNet缩短了2.09 ms,相对Let5-Net缩短了0.42 ms,效率提升不明显。虽然本文算法的网络复杂度低于另外两种算法,但是动态路由算法部分运算复杂,占用了总识别时间的80%。经测试,训练过程主要耗时也在动态路由算法部分,因此动态路由算法是胶囊网络识别效率提升不明显的主要原因。
本文提出的结构改进的胶囊网络,首先采用VGG 深层特征提取思想进行深度特征提取,为主胶囊层提取图片的深层特征;然后在主胶囊层引入池化层,较低数据维度,并保留显著特征;最后用移动指数平均法改进动态路由算法,使学习率可以自适应调节,以适应深度特征提取网络的训练,使模型能够快速平稳地收敛,最终实现了比原结构更好的性能。结构改进的胶囊网络提高了交通标志识别的精度,解决了基于卷积神经网络的经典结构在复杂场景下识别率低的问题。通过对识别效率和误报图像的分析,本文所提出的模型采用的动态路由算法复杂度较高,识别场景受光线影响较大,下一步将针对动态路由算法进行优化,提高识别效率,并完善网络结构,提高对光线强弱的适应性,进一步提高识别精度,使其能够更加高效、准确地进行交通标志识别。