基于CNN的实时交通标志检测识别技术-姚卫博士

2021-12-30

一、理论框架

1.1 卷积神经网络

CNN是一个在卷积层和聚合层[1],[3]之间交替的神经网络。在这些层之后,是一个MLP(多层感知器)。卷积神经网络的目标是使用预定义大小的图像,并生成指示该对象类的输出。

卷积神经网络(CNN)是一个在卷积层和聚合层之间交替的神经网络[1,3]。在这些层之后,是一个MLP(多层感知器)。卷积神经网络的目标是使用预定义大小的图像,并生成指示该对象类的输出。

文献[1]提出了CNN层次模型,将板块划分为类别,每个类别使用不同的CNN。作者将第一个CNN命名为CNN家庭分类器,负责对车牌进行分类,而其他五个CNN称为CNN成员分类器,负责对交通车牌进行分类,如图1所示。车牌的类别是根据其特点来定义的,可以是数字、箭头、格式等。

图片92.png 

图1 文献[1]中使用的层次结构

CNNs通常使用几层,其中一层通常按顺序传送给下一层。在[2]和[6]中使用了非顺序体系结构。在[2]中,在第二阶段,两个流并行使用,只有在第一个流中存在池化层,如图2所示。

图片93.png 

图2 文献[2]中使用的架构

1.2 卷积层

这一层负责生成特性映射[4]。这些映射是从卷积层的图像中提取的。对于层的每个单元,都有一个过滤器,它是一个预定义大小的矩阵[5]。这个过滤器用随机值初始化,这些随机值在训练过程中进行调整[5]。

为了生成特征映射,在输入和过滤器之间执行卷积操作。Stride(步长)是一个参数,表示这个过滤器将移动多少[4-5] 。在图3中步长设置为1x1。在进行卷积运算时,会出现边缘的丢失,为了解决这个问题,需要进行零填充运算[4-5],将边缘的值添加为0,边的大小取决于滤波器的大小。图4表示了一个卷积运算,使用零添加,滤波器大小为3x3,步长为1x1。

图片94.png 

图3 使用1x1步长的卷积运算。灰色箭头代表步骤,黑色箭头代表输出。

图片95.png 

图4 在用蓝色箭头表示的零填充操作之后,使用1x1步长的卷积操作。

1.3 池化层

池化层的目的是减少原始输入的大小[4-5]。通过这种操作,降低了网络的计算成本。有几种类型的池层,最大池化层是最常用的[4-5],另一个例子是camada平均池。

对于池操作,定义了一个窗口和步骤。对于每个窗口,根据池的类型设置一个新值。这个新值将是输出的一部分。在图5中,输入矩阵的大小为4x4,设置一个大小为2x2的窗口和路径为2x2的步骤。结果是一个2x2大小的输出。换句话说,输入减少了75%。

图片96.png 

图5 第一个矩阵代表一个原始输入数据,第二个矩阵表示最大池操作后的输出数据。

 

二、交通标志检测与识别

2.1 检测

在本工作的实现中,我们使用了TensorFlow对象检测API库和一个网络更快的R-CNN com arquitetura Inception-v2[8]。为了进行检测,交通标志被分为三类:规则、警告和停止,用于确定类的标准与它们的类别相对应,因为每个类别都有不同的格式和一组颜色。该算法能够识别16种类型的规则板,6个警告标志和停车标志。在这项工作中使用的是图6所示的规则板。

探测器接收整个图像作为输入,该图像由网络处理,最后返回一组包含感兴趣区域的数据。对于每个可能有目标的感兴趣的区域,有几个信息链接。它们是左上角坐标(x0和y0),右下角坐标(x1和y1)。

图片97.png 

图片98.png 

图6 用于识别的交通标志类别。(a) 20公里/小时;(b) 40公里/小时;(c) 50 公里/小时;(d) 60 公里/小时;(e)限高5.0 米;(f)允许停车;(g)禁止停车;(h)禁止停车;(i)禁止右转;(j)禁止左转;(k)禁止通行;(l)禁止调头;(m)向右方向;(n)向左方向;(o)向前或向右;(p)向前或向左;(q)交通灯;(r) 拱桥;(s)环岛;(t)人行横道;(u) 左侧变窄;(v) 右侧变窄

为了决定是否使用感兴趣的区域,定义了阈值参数。如果百分比低于阈值,则丢弃感兴趣的区域,否则将在下一步使用该区域。

2.2 识别

为了进行分类,实现了基于VGG16架构配置的CNN[7],只是一些图层的参数数量减少了。还实现了Inception-v4架构[6],减少了模块的数量。目的是减少VGG 16架构层的参数和Inception-v4模块的数量,以减少内存使用和训练时间。

网络有一个固定的128*128*3输入,在执行识别时需要调整输入图像的大小,网络返回一组数据,其中包含图6中指定的每个交通标志类别的概率。选择概率最高的类,对图像进行排序。

2.3 训练探测器

创建一个数据集,用于训练更快的R-CNN网络,包含5268张图像(原始和旋转)。在这个数据集中使用了数据增强技术,包括对图像应用过滤器和变换。采用顺时针和逆时针旋转20、30、50和70。从增加的数据来看,90%的图像用于训练,10%的图像用于网络验证。

2.4 CNN训练

为了建立CNN识别网络的训练和验证数据集,我们对原始图像和旋转图像的交通标志进行了分割(6731个分割标志)。我们创建了一个脚本,根据在构建检测数据集时所执行的操作,对每个图像的所有板进行分割。获得的子图被分开在文件夹中,适当地贴上标签。

在这个过程之后,进行了数据增强。为此,一些类的图像被水平镜像,例如,拱桥(图6)(r))和交通灯(图6(q))。这样做是为了增加这些板的图像数量,因为镜像不会改变信号的含义。镜像也应用于指示道路运动方向的车牌(图6 (m, n))。但是向前或向左(图6 (p)),向前或向右(图6(o)),生成具有相反含义的新图像。

有些图像不能镜像。例如,禁止左转(图6 (j))和禁止右转(图6 (i)),因为它们有一条从左到右从上到下的对角线。如果你镜像这些标志的图像,信号就会出错。

根据创建检测中使用的训练和验证数据集的相同标准,将图像分为两组。

2.5 获取图像

为了获得图像,使用了GoPro Hero 5 Black相机。摄像机被固定在一辆汽车的挡风玻璃上。在某城市的主要街道和大道上拍摄了视频。视频以1920 x 1080像素的分辨率录制。对于每个记录的视频,提取包含选择的板组成检测和识别数据集的帧。

2.6 检测与识别

实验中使用的交通标志检测与识别算法的执行流程如下:首先,从其中一个录制的视频中获得一帧。这个视频没有被用于提取任何图像用于构建用于网络训练的数据集。每一帧都用作板检测器的输入,返回一组感兴趣的区域。对于每个感兴趣的区域,得到板的坐标、类和概率。

每个感兴趣的区域包含概率大于30%的板(经验定义的阈值)被添加到可能的板列表中。列表中所有感兴趣的区域都作为实现CNN识别的算法的输入。算法返回每个板的类别,如图6所示,以及一个表示该类别被识别概率的分数(图7)。

如果返回的类不是板,则不会显示感兴趣的区域,否则将显示与检测类颜色对应的区域(绿色表示规则,黄色表示警告,红色表示停止),以及识别算法返回的类标题及其各自的百分比。图7 (a)显示了带有四个板的图像探测,(b), (c), (d) 和 (e)分别为四个板的图像。

图片99.png 

图7 使用帧作为输入的检测和识别。(a)表示一个完整的图像,(b), (c), (d) 和 (e)为检测和识别的板

 

三、结论

根据所获得的结果,可以验证用于执行交通标志识别的体系结构。用于识别交通标志的Inception-v4系统显示出了最好的结果。

实验结果表明,在训练所采用的CNNs时,具有相似特征和不同背景的同一交通标志板的图像数量越多,网络的精度就越高。还需要在识别步骤中添加一个特殊的类,即“非板”类,因为感兴趣的区域可能不包含板,或者板不在数据集中。根据所获得的结果,可以验证用于执行交通标志识别的架构,显示最好结果的是用于交通标志识别的Inception-v4架构。

 

参考文献

[1] X. Mao, S. Hijazi, R. Casas, P. Kaul, R. Kumar and C. Rowen, "Hierarchical CNN for traffic sign recognition," 2016 IEEE Intelligent Vehicles Symmposium (IV), Gothenburg, 2016, pp. 130-135.

[2] P. Sermanet and Y. LeCun. "Traffic sign recognition with multi-scale Convolutional Networks." The 2011 Intermational Joint Conference on Neural Networks, San Jose, CA, 2011, pp. 2809-2813.

[3] P. Sermanet. S. Chintala and Y. LeCun. "Convolutional neural networks applied to house numbers digit classification," in Proceedings of the 21st International Conference on Pattern Recognition (ICPR2012), Tsukuba. Japan, 2012, pp. 3288-3291.

[4] S. Albawi, T. A. Mohammed and S. Al-Zawi, "Understanding of a convolutional neural network," 2017 International Conference on Engineering and Technology (ICET), Antalya, 2017, pp. 1-6.

[5] F. H. D. Araújo, A. C. Canneiro, R. R. V. Silva, et al, "Redes Neurais Convolucionais com Tensorflow:Teoria e Prática." in 2017 III Escola Regional de Informática do PiauiLivro Anais -Artigos e Minicursos, vol. 1, no. 1, pp: 382-406.

[6] C. Szegedy, S. Ioffe, V. Vanhoucke, A. Alemi, "Inception-v4, InceptionResNet and the Impact of Residual Connections on Learning." in A441 vol. 4. 2017.

[7] K. Simonyan, A. Zisserman, "Very Deep Convolutional Networks for Large-Scale Image Recognition." 2015.

[8] D. Santos, F. Silva, D. Pereira, et al, "Real-Time Traffic Sign Detection and Recognition using CNN. " IEEE Latin America Transactions, vol. 18, no. 3, pp: 522-529.