【深度学习】基于卷积神经网络的铁路信号灯识别方法
基于卷积神经网络的铁路信号灯识别方法
- 摘 要:
- 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 网络在铁路信号色灯识别上的应用将为铁路司机提供信号灯信息参考,同时更大程度的保障铁路行车安全。
相关文章:
【深度学习】基于卷积神经网络的铁路信号灯识别方法
基于卷积神经网络的铁路信号灯识别方法 摘 要:1 引言2 卷积神经网络模型2.1 卷积神经网络结构2.2.1 卷积层2.2.2 池化层2.2.3 全连接层 3 卷积神经网络算法实现3.1 数据集制作3.2 卷积神经网络的训练过程3.2.1 前向传播过程 4 实验5 结语 摘 要: 目前中…...
DR IP-SoC China 2023 Day演讲预告 | 龙智Perforce专家解析芯片开发中的数字资产管理
2023年9月6日(周三),龙智即将亮相于上海举行的D&R IP-SoC China 2023 Day,呈现集成了Perforce与Atlassian产品的芯片开发解决方案,助力企业更好、更快地进行芯片开发。 D&R IP-SoC China 2023 Day 是中国首个…...
解决github连接不上的问题
改 hosts 我们在浏览器输入 GitHub 的网址时,会向 DNS 服务器发送一个请求,获取到 GitHub 网站所在的服务器 IP 地址,从而进行访问。 就像你是一名快递员,在送快递前要先找中间人询问收件人的地址。而 DNS 就是这个告诉你目标地址…...
# DevOps名词定义梳理
DevOps名词定义梳理 极限编程座右铭:如果它令你很受伤,那么就做更多的练习(If it hurts, do it more often) 经常人们会把这些名词用错: 构建:就是把源代码制成成品的过程,这个过程一般会有单元…...
Redis Cluster
文章目录 一、集群搭建1 节点规划2 集群启动 二、配置一致性1 基本分工2 更新规则 三、Sharding1 数据分片分片实现分片特点 2 slot迁移迁移原因迁移支持集群扩容迁移错误背景现象问题分析验证猜想 集群缩容 3. 请求路由client端server端migrating节点的读写importing节点的读写…...
Pandas常用指令
astype astype的作用是转换数据类型,astype是没办法直接在原df上进行修改的,只能通过赋值的形式将原有的df进行覆盖,即df df.astype(dtype) astype的基本语法 DataFrame.astype(dtype, copyTrue, errorsraise) dtype参数指定将数据类型转换…...
FPGA实战小项目3
基于FPGA的波形发生器 基于FPGA的波形发生器 基于FPGA的beep音乐播放器设计 基于FPGA的beep音乐播放器设计 基于FPGA的cordic算法实现DDS sin和cosine波形的产生 基于FPGA的cordic算法实现DDS sin和cosine波形的产生...
mysql创建用户
创建用户 创建 -- 创建用户 itcast , localhost只能够在当前主机localhost访问, 密码123456; create user test01localhost identified by 123456;使用命令show databases;命令,只显示一个数据库,因为没有权限 -- 创建用户 test02, 可以在任意主机访问…...
程序员写好简历的5个关键点
程序员就业竞争大?找不到工作?也许,从简历开始你就被淘汰了.... 在很多的公司中,HR的招聘压力是很大的,浏览每个人的简历的时间可能只有20几秒,所以即使你的工作能力十分的强,但如果你没有在简…...
Vue:关于如何配置一级路由和二级路由的方法
路由的嵌套配置 文章目录 路由的嵌套配置配置一级路由 配置一级路由 创建router文件夹,里面添加index.js文件配置以下代码: import Vue from vue import VueRouter from "vue-router"; import Layout from /views/Layout import ArticleDeta…...
【论文绘图】seaborn分类数据绘图
参考:https://seaborn.pydata.org/tutorial/categorical.html 分类变量关系图中的catplot类似于连续变量中的relplot,默认是stripplot。 分类变量图种类 分类散点图 stripplotswarmplot (kind‘swarm’) 类别分布图 boxplotviolinplotboxenplot …...
KubeSphere Namespace 数据删除事故分析与解决全记录
作者:宇轩辞白,运维研发工程师,目前专注于云原生、Kubernetes、容器、Linux、运维自动化等领域。 前言 2023 年 7 月 23 日在项目上线前夕,K8s 生产环境出现故障,经过紧急修复之后,K8s 环境恢复正常&#…...
mysql场景题:最近7天连续3天登陆用户,字段,id,date(已去重)
1.最近7天连续3天登陆用户,字段,id,date(已去重) 思路: lag对时间开窗(注意时间得转换为时间戳(int类型才可以添加后续条件),跳行为2(连续3天&am…...
华为OD机试 - 最差产品奖 - 双端队列 deque(Java 2023 B卷 200分)
目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…...
【校招VIP】前端算法考察之链表算法
考点介绍: 链表是一种物理存储结构上非连续的数据结构,数据的逻辑顺序是通过链表中的指针链接次序实现相互勾连。链表相对数组而言有很多不同之处,在特定场景下能发挥独特的优势。例如链表的插入和删除操作比数组效率高,数组需要改变其他元素的位置,而链表只需要改变…...
uni-app之android离线自定义基座
一 为什么要自定义基座 1,基座其实就是一个app,然后新开发的页面可以直接在手机上面显示,查看效果。 2,默认的基座就是uniapp帮我们打包好的基座app,然后我们可以进行页面的调试。 3,自定义基座主要用来…...
【AWS】实操-保护 Amazon S3 VPC 终端节点通信
文章目录 实验概览目标实验环境任务 1:探索并启动实验环境任务 1.1:探索 Amazon VPC 资源任务 1.2:探索 Amazon EC2 资源任务 1.3:创建 Amazon VPC 终端节点任务 1.4:连接私有 EC2 实例任务 1.5:探索 Amazo…...
C# Color颜色RGB对照表
序号Color色系颜色RGB图例1Color.AliceBlue蓝色艾丽丝蓝240,248,2552Color.AntiqueWhite白色古典白色250,235,2153Color.Aqua,Color.Cyan青色浅蓝色,蓝绿色,青色0,255,255 C# Color颜色RGB对照表_旭东怪的博客-CSDN博客 C#颜色和名称样式对照…...
Thread中几个常用的api详解join,interrupt
1.join() join方法可以在多线程中帮我们实现调用线程的同步效果,比如,现在有三个线程,a,b,c a中启动了b和c线程异步去执行一件事,但是a希望他们做完以后再继续往下执行,那么就可以在调用b和c启…...
Golang项目实战(三)
Golang项目实战(三) 该项目是使用grpcgin来构建的一个电商微服务项目,使用consul来注册和发现微服务。 项目简介创建项目架构创建货币服务创建货币微服务处理器将货币微服务注册到consul下载安装consul并发布服务创建商品微服务准备商品数据…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
