【深度学习】基于卷积神经网络的铁路信号灯识别方法

news2024/11/18 3:38:53

基于卷积神经网络的铁路信号灯识别方法

    • 摘 要:
    • 1 引言
    • 2 卷积神经网络模型
      • 2.1 卷积神经网络结构
        • 2.2.1 卷积层
        • 2.2.2 池化层
        • 2.2.3 全连接层
    • 3 卷积神经网络算法实现
      • 3.1 数据集制作
      • 3.2 卷积神经网络的训练过程
      • 3.2.1 前向传播过程
    • 4 实验
    • 5 结语

摘 要:

目前中国货运铁路和既有线铁路采用的仍是司机通过瞭望铁路沿线信号灯来指导行驶。本文介绍了一种基于卷积神经网络(CNN)的铁路信号“三显示”通过信号机识别方法,为司机二次甄别信号灯颜色。本文制作“三显示”信号灯数据集,在 TensorFlow 平台搭建卷积神经网络,建立以卷积层数、数据集大小以及迭代次数为变量的对比实验。在样本条件下,4 层卷积网络特征提取效果最优,进一步进行卷积层中卷积核的深度对网络收敛性和收敛速度与识别精度的影响的实验,最终,最优网络下识别率可
达 99.16%。

1 引言

铁路运输是我国交通运输领域的重要组成部分,目前,我国既有线铁路仍有部分线路需司机瞭望以获取信号灯颜色。为保障铁路运输安全,同时为司机提供准确参考信息,本文采用卷积神经网络对铁路信号色灯进行识别。
本文着重阐述在以下两种卷积神经网络的基础上自行设计的网络结构提出、进展和最终效果。随着Hinton 等[1]人解决了深度学习模型优化问题,深度学习得到迅速发展。基于 1998 年 LeCun 等[2]提出并首先成功应用于数字识别问题的卷积神经网络 LeNet-5和 2014 年由牛津大学提出并准确进行图像分类和目标 检 测 的 卷 积 神 经 网 络 VGG (Visual geometrygroup)[3]设计出能够准确识别信号灯信号卷积神经网络。其中,LeNet-5 由以 32321 的单通道图像像素作为输入,经 2 层卷积 3 层全连接组成,并在小规模手写数字识别中取得较好结果。VGG以 2242243的三通道图像像素作为输入,经 13 层卷积 3 层全连接组成,并在 2014 年的 ILSVRC 比赛中,在 Top-5中取得了 92.3%的正确率。不同于其他深度学习框架,卷积神经网络具有位移、畸变鲁棒性,并行性等特点,是基于深度学习理论的人工神经网络,其中的卷积结构既可减少深层网络占用空间,也可减少网络参数数量,缓解模型过拟合。本文通过制作“三显示”信号灯数据集,在TensorFlow 平台搭建多层卷积神经网络,建立以卷积层数(4、5、6 层)、卷积层中不同卷积核个数为变量的对比实验,最终找到最优卷积神经网络结构并完成对铁路信号色灯的正确识别。

2 卷积神经网络模型

2.1 卷积神经网络结构

卷积神经网络由多个神经网络层构成,每层神经网络由多个神经元组成,其结构如图 1 所示。
在这里插入图片描述

卷积神经网络可分为:输入层、卷积层、池化层、全连接层和输出层。具体介绍如下:
(1)输入层:通过对输入图像进行读写操作,将原图转化成像素值传入到输入层。
(2)卷积层:卷积核滑动进行卷积运算,提取输入层图像特征。卷积核维度和个数均会对输入特征提取量产生影响。
(3)池化层:同样有与卷积核相似的池化核对卷积层图像进行子抽样,在保证了有用信息不降低的前提下,减少数据处理量。
(4)全连接层:可含有多个全连接层,代表神经网络中的隐藏层部分,第一层与上一层池化层输出相连。
(5)输出层:输出层的设计取决于卷积神经网络所需结果,一般为分类器。
在这里插入图片描述

2.2.1 卷积层

通过一个可学习卷积核和一个激活函数,即可得
到一个输出特征图。卷积核的维度和个数不同使得特
征图不同,卷积层计算公式为在这里插入图片描述

2.2.2 池化层

池化的原理是将上一层输出特征图进行缩小,即
在这里插入图片描述

2.2.3 全连接层

全连接层中,将上一层所得特征图数据拉伸为一维特征作为全连接层输入。全连接层输出通过对输入加权求和并通过激活函数的响应得到
在这里插入图片描述

3 卷积神经网络算法实现

3.1 数据集制作

本文信号灯数据集来源于铁路信号实验室,拍摄铁路信号灯视频,运用 AdobePremiere Pro CC 2015 分帧得到大量图片。将数据集中信号灯图片分为红色、绿色、黄色共 3 类。每类选出 300 张图片作为训练集,100 张图片作为测试集。该数据集包含不同视角的铁路信号灯图片,在这里插入图片描述

3.2 卷积神经网络的训练过程

3.2.1 前向传播过程

本实验卷积层网络初始化主要采取两种方式,分别为 Xavier 方式和正则化方式,偏置初始化为0.00001。全连接层权重初始化采取 Xavier 方式,偏
置初始化为 0. 1。本 实 验 前 向 传 播 训 练 过 程 中 , 卷 积 层 采 用
Softmax 分类输出,loss 采用交叉熵求平均,优化器采用梯度下降 GDO 优化器,并使用最小 minimize 取出损失。其中,全连接层使用 Dropout 随机损失函数可避免网络过拟合,学习率固定,未采用自适应学习率。输入图片数据时,批尺寸的图片输入采用训练样本随机抽取形式。3.2.2 反向传播过程在反向传播算法中,主要训练的网络参数为:卷积层、全连接层网络权重和各层网络偏置参数。反向传播算法主要基于梯度下降法,网络参数被初始化后通过梯度下降法向训练误差 loss 减小方向调整。通过所有网络层的灵敏度建立总误差对所有网络参数的偏导数,进而得到使训练误差减小的方向。训练流程图如图 4 所示。在这里插入图片描述
在这里插入图片描述

4 实验

针对 4 层卷积神经网络的结构,进一步修改网络参数,对比不同卷积层卷积核的个数对测试精度的影响,对卷积网络训练过程中收敛速度,测试精度进行对比试验。
表 1 是我们设计出的几组卷积核对比组,前面 6组按每个池化层分界组,按比例增加卷积核的个数,后面 3 组对比不同层卷积核的排列顺序,由少到多、由多到少的顺序和均匀分布顺序对实验结果的影响, 由于选取的初始化方式可能导致的出现拟合现象,每个数量经过多次的对比,可能存在实验上的读取数据出现误差,以下网络数量的选择提供出了网络收敛及稳定性的比较。上表显示了上述网络经过迭代以后最终趋于稳定时我们用测试集测出的精度结果,由于迭代到后期训练 loss 损失很小接近于 0,所以我们选取
的是迭代次数在25000次以内的测试精度趋于不变时的网络的转折点作为网络的稳定时测试精度,其中网络随着迭代次数的增加测试精度增加,逐渐趋于不变。
由上述实验对比发现,1-6 类的对比中随着网络中卷积核的增加收敛速度变慢,由于计算量的增加以及深度的增加网络中参数的更新变得缓慢卷积核个
数为 80 个时可见针对本数据集大小与特征,网络存在最优值如图 4 所示。其中网络结构为均匀分布总数为 68 个的卷积核排列得到最快的收敛,倒叙排列的网络在 25000 次迭代次数内,没有收敛,而且网络的个数增加的过程中,需要迭代次数增大才能达到相同收敛结果,同时前期训练过程中网络训练精度波动增大,多次训练同一网络出现过拟合现象次数增多,表
明网络损失未能按梯度进行下降。在这里插入图片描述
在这里插入图片描述
第 7 类卷积核个数按照增序变化,网络训练过程中前期训练中损失下降较少,中期过程时,有一阶跃变化如图 4,后期 loss 接近于 0。第 8 类时卷积核个数按照降序变化,网络训练过程中损失下降较快,在4400 轮迭代次数时,网络陷入局部最优,此时损失已经接近于0,网络的测试精度在25000次时徘徊在0.5,可知网络训练采用降序影响网络收敛较大,较难得到较高的测试精度。第 9 类卷积核选择的是均匀顺序,网络收敛速度较为理想在 2500 轮迭代时已经达到了0.89 的测试精度,并在 25000 轮时测试精度达到0.9324。由于卷积网络层数多、训练数据较少、训练模型结构复杂及 Overtraining 拟合训练数据中噪声和训练样例没有代表性特征等原因,导致网络易出现过拟合现象。为更好的避免这种现象,可在原数据集基础上
进行图像锐化、明暗度调整等操作随机加入噪声;可采用合适的卷积模型卷积预处理后的数据集;也可添加正则项将权值大小加入损失函数以减少过度拟合。

5 结语

本文建立卷积神经网络对铁路信号色灯图片进行神经网络训练,使用卷积神经网络提取铁路信号色灯特征,通过目标特征提取池化,最终在信号灯样本
图片集下经过对比试验,在最优范围内的 4 层卷积神经网络,卷积核个数为 80 时,按照增序排布、分布较均匀的方式测试最高识别率为 99.16%,可通过在小范围内进一步优化得到更高的识别率。CNN 网络在铁路信号色灯识别上的应用将为铁路司机提供信号灯信息参考,同时更大程度的保障铁路行车安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/972247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ctfhub ssrf(3关)

文章目录 内网访问伪协议读取文件扫描端口 内网访问 根据该题目,是让我们访问127.0.0.1/falg.php,访问给出的链接后用bp抓包,修改URL,发送后得到flag: 伪协议读取文件 这题的让我们用伪协议,而网站的目录…

【算法】树上倍增 LCA

文章目录 相关链接模板题目1483. 树节点的第 K 个祖先最近公共祖先LCA的求法 练习题目2836. 在传球游戏中最大化函数值2846. 边权重均等查询 扩展题目 相关链接 把相关链接放在最前面是因为,周赛遇到了几次,不会做。这才想起来学一下这个算法。 【力扣…

快讯 | ALVA 荣获首届“格物杯”联通物联网应用创新大赛复赛一等奖!

8 月 7 日,“物聚龙江 智联百业”物联网创新发展合作交流暨首届“格物杯”联通物联网应用创新大赛企业赛道复赛 (赛区四)在哈尔滨举办。 ALVA Systems 凭借智能远程协助平台—— ALVA Rainbow 在近 50 家企业中脱颖而出,荣获首届“格物杯”联通物联网应…

Docker的数据管理(持久化存储)

文章目录 一、概述二、数据卷三、数据卷容器四、端口映射五、容器互联(使用centos镜像)总结 一、概述 管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers&a…

Hadoop的概述与安装

Hadoop的概述与安装 一、Hadoop内部的三个核心组件1、HDFS:分布式文件存储系统2、YARN:分布式资源调度系统3、MapReduce:分布式离线计算框架4、Hadoop Common(了解即可) 二、Hadoop技术诞生的一个生态圈数据采集存储数…

Ext Direct 全解密

Ext Direct 相关的类 Ext Direct旨在通过提供单一接口来简化客户端和服务器之间的通信,从而减少验证数据和处理返回数据包(读取数据、错误条件等)通常需要的公共代码量。 Ext Direct 相关的类基本位于 Ext.direct 包中, 除此之外, 还有Direct类型的数据代码 Ext.data.pr…

linux复习笔记01(小滴课堂)

1.安装CentOs7系统 点击下一步在自定义硬件中: 我们可以删除我们不使用的,后续如果需要再加上即可。 然后我们就可以开启这台虚拟机了。 我们可以进行下载cetos7. 这里选择简体中文就可以。 时间的设置。 可以开启下网络。 在这里选择设置root密码&#…

MybatisPlus 核心功能 条件构造器 自定义SQL Service接口 静态工具

MybatisPlus 快速入门 常见注解 配置_软工菜鸡的博客-CSDN博客 2.核心功能 刚才的案例中都是以id为条件的简单CRUD,一些复杂条件的SQL语句就要用到一些更高级的功能了。 2.1.条件构造器 除了新增以外,修改、删除、查询的SQL语句都需要指定where条件。因此…

Nginx启动时提示nginx: [emerg] still could not bind()

启动Nginx报这个nginx: [emerg] still could not bind()。 问题原因 nginx启动要使用的端口被占用了 解决方法: 1、根据Nginx配置文件查看配置的端口默认的是80端口,然后我们输出指令查看端口占用情况。 输入命令: netstat -ntlp|grep 8…

Milvus以及Web UI 安装

向量数据库懂的都懂 版本数据 [rootiZ7xv7q4im4c48qen2do2bZ project]# cat /etc/redhat-release CentOS Stream release 9 [rootiZ7xv7q4im4c48qen2do2bZ project]# docker version Client: Docker Engine - CommunityVersion: 24.0.5API version: 1.43Go v…

使用Puppeteer进行游戏数据可视化

导语 Puppeteer是一个基于Node.js的库,可以用来控制Chrome或Chromium浏览器,实现网页操作、截图、测试、爬虫等功能。本文将介绍如何使用Puppeteer进行游戏数据的爬取和可视化,以《英雄联盟》为例。 概述 《英雄联盟》是一款由Riot Games开…

Axure RP PC电商平台Web端交互原型模板

Axure RP PC电商平台Web端交互原型模板。原型图内容齐全,包含了用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 在设计尺寸方面,本套模板按照主流的…

Qt中布局管理使用总结

目录 1. 五大布局 1.1 QVBoxLayout垂直布局 1.2 QHBoxLayout水平布局 1.3 QGridLayout网格布局 1.4 QFormLayout表单布局 1.5 QStackedLayout分组布局 1.6 五大布局综合应用 2. 分割窗口 3. 滚动区域 4. 停靠区域 1. 五大布局 1.1 QVBoxLayout垂直布局 #include <…

关于el-input和el-select宽度不一致问题解决

1. 情景一 单列布局 对于上图这种情况&#xff0c;只需要给el-select加上style"width: 100%"即可&#xff0c;如下&#xff1a; <el-select v-model"fjForm.region" placeholder"请选择阀门类型" style"width: 100%"><el-o…

Ubuntu 20.04 网卡命名规则

Ubuntu 系统中网卡的命名规则是&#xff1a;Consistent Network Device Naming&#xff08;一致网络设备命名&#xff09;规范。这个规范的原理是根据固件、拓扑和位置信息分配固定名称。其中&#xff0c;设备类型 en 代表 Ethernet (以太网)&#xff0c;wl 代表 WLAN&#xff…

FPGA实现电机转速PID控制

通过纯RTL实现电机转速PID控制&#xff0c;包括电机编码器值读取&#xff0c;电机速度、正反转控制&#xff0c;PID算法&#xff0c;卡尔曼滤波&#xff0c;最终实现对电机速度进行控制&#xff0c;使其能够渐近设定的编码器目标值。 一、设计思路 前面通过SOPC之NIOS Ⅱ实现电…

Python 快速输出接下来几个月的月末日期

# pip install arrow 安装库&#xff08;若已安装 可忽略&#xff09; import arrowEnd_of_month_date [] # 月末日期 for i in range(100):if arrow.now().shift(daysi).format(YYYY-MM-DD)[-2:] 01: # 若日期为 1 号 则返回前一天的日期End_of_month_date.append(arrow.now…

C# winform控件和对象双向数据绑定

实现目的&#xff1a; 控件和对象双向数据绑定 实现结果&#xff1a; 1. 对象值 -> 控件值 2. 控件值 -> 对象值 using System; using System.Windows.Forms;namespace ControlDataBind {public partial class MainForm : Form{People people new People();public Mai…

尚硅谷大数据项目《在线教育之离线数仓》笔记006

视频地址&#xff1a;尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第11章 数仓开发之ADS层 P087 P088 P089 P090 P091 P092 P093 P094 P095 P096 P097 P098 P099 P100 P101 P102 P103 P104 P105 P106 P107 P108 P109 P110 P111 …

RK开发板的USB连接(Ubuntu)

一、安装连接工具 sudo apt-get install putty 二、启动putty工具 sudo putty 三、连接usb&#xff0c;并查看相关的信息 # 查看接入的是否有usb ls /dev/tty* 显示如下&#xff1a;&#xff08;含有usb接口&#xff1a; /dev/ttyUSB0&#xff09; /dev/tty /dev/tty23 /d…