繁体商城网站模板,网站程序开发要点,学习软件免费,网站快照怎么更新摘要#xff1a;
随着21世纪机动车保有量的持续增加#xff0c;城市交通拥堵已成为一个日益严重的问题。传统的固定绿灯时长方案导致了大量的时间浪费和交通拥堵。为解决这一问题#xff0c;本文设计了一款智能交通灯系统#xff0c;利用车流量检测功能和先进的算法实现了…
摘要
随着21世纪机动车保有量的持续增加城市交通拥堵已成为一个日益严重的问题。传统的固定绿灯时长方案导致了大量的时间浪费和交通拥堵。为解决这一问题本文设计了一款智能交通灯系统利用车流量检测功能和先进的算法实现了动态绿灯时长的分配。
该系统采用面向对象设计基于嵌入式系统使用 Python 编程语言开发。我们使用了YOLOv5-Lite深度学习算法通过对UA-DETRAC数据集的训练得到了高效的目标检测模型。在树莓派4B硬件平台上进行前向推理实现了对交叉路口图像中车辆的准确识别。此外我们采用了SORT算法进行车流视频的目标追踪并结合掩膜实现了不同方向上的车流量检测。
通过实时检测和分析交通流量我们设计了三阶段绿灯调整算法结合车辆通行时的加速模型计算出了合理的绿灯时长并动态调整了交叉路口各个方向的交通信号。实验结果表明该智能交通灯系统能够有效缓解交通拥堵减少司机和乘客的等待时间。
综上所述本研究提出的智能交通灯系统为解决城市交通拥堵问题提供了一种创新的解决方案并具有广阔的应用前景。未来的研究可以进一步优化算法和模型以提高系统的性能和稳定性。 关键词
智能交通灯车流量检测YOLOv5-Lite; SORT树莓派 4B 1 绪论
1.1 研究背景及意义
21世纪以来机动车保有量不断攀升截至2023年9月底全国驾驶人达5.2亿人机动车达4.3亿辆。此外新能源汽车保有量达1821万辆。在我国685个城市中其中90个城市汽车保有量超过100万辆更有成都、北京、重庆等25个一二线城市超过300万辆。\cite{公安部交通管理局2023} 如图~\ref{fig:fig1}所示,与2022年相比全国50个主要城市中有2\%的城市路网高峰行程延时指数有所下降14\%的城市基本持平而84\%的城市则出现了拥堵上升的情况~\cite{gaode2024}。在这些拥堵上升的城市中乌鲁木齐的涨幅最大其次是兰州、哈尔滨和北京. 不难看出城市的交通堵塞问题日益凸显。然而目前很多城市的交通信号灯包括一些主要道路上的都是固定的。它们不能根据路口车流量的变化来调整通行时间。这种交通信号灯只能按照预设的模式工作不够灵活。结果是在交通高峰期如果某个方向的车流量很大这些信号灯无法有效地调整通行时间来缓解交通拥堵导致交通堵塞的情况比较严重。而在交通低峰期如果某个方向的车流量很少这些信号灯却浪费了大量的车辆通行时间导致交通管理效率低下。改善该问题的关键在于判断道路的拥堵程度并以此动态调整各路口红绿灯时长来实现更高效的路口交通。 1.2 国内外研究现状
不难看出城市的交通堵塞问题日益凸显。然而目前很多城市的交通信号灯包括一些主要道路上的都是固定的。它们不能根据路口车流量的变化来调整通行时间。这种交通信号灯只能按照预设的模式工作不够灵活。结果是在交通高峰期如果某个方向的车流量很大这些信号灯无法有效地调整通行时间来缓解交通拥堵导致交通堵塞的情况比较严重。而在交通低峰期如果某个方向的车流量很少这些信号灯却浪费了大量的车辆通行时间导致交通管理效率低下。改善该问题的关键在于判断道路的拥堵程度并以此动态调整各路口红绿灯时长来实现更高效的路口交通。
1.2.1 基于传感器的车流量检测技术
一种广泛采用的传统方法是磁感应车辆检测器\cite{QCWS201804003}\cite{KJSJ202026047}它主要依赖于埋设在道路下的线圈来探测车辆通行时的电磁变化。这种方式的优点在于即使车辆通行速度较快也可以准确地感知到。然而安装这种检测器需要对道路进行刨开或者挖掘这可能导致一些不良影响。
红外线车辆检测器\cite{QCWS201804003}\cite{ZDHT202310031}\cite{HBGY201002007}利用被检测的物体对光束的反射或遮挡实现对车辆数据的综合检测。其优点在于可以实现多车道检测而且某些特定的红外线传感器经过组合计算还可测量车速。然而当雨雾天气能见度低于6m或其他恶劣天气时检测性能和灵敏度会下降。
此外还有超声波检测器它的原理是超声波在传播的过程中遇到障碍物波形会改变反射来实现车辆检测。检测器配备一个探头可以同时发送、接收超声波。它的优点在于安装和维修比较简单并且可以实现对多车道的检测。但是环境因素如温度变化和强风可能会影响传感器的性能。
虽然传统方法的维护成本高但对于已经有相关传感器的道路有很强的实用价值。文献\cite{QCWS201804003}提出了成本较低、功能实用、安装方便、具有实际推广应用价值的基于磁感应和红外线感应器的车流量检测红绿灯。 1.2.2 基于视频图像检测的车流量检测技术
为了提高检测的准确性和效率研究者们还提出了多种基于视频的车辆检测算法。这些方法包括灰度比较法、路面标记法、边缘检测法、光流法、帧差法等。
灰度比较法是最基本也是应用最为广泛的检测方法它通过比较一系列图像中的车辆部分与未车辆部分的差异来识别车辆。然而这种方法在复杂环境下可能不如路面标记法或边缘检测法那样可靠。路面标记法利用地面标线或其他视觉线索对车辆进行分类而边缘检测法则依赖于图像的边缘特征进行检测。
光流法\cite{JSJC200615065}是一种更为高级的检测技术它通过分析视频流中的动态光流来识别移动车辆并提供一个相对准确的速度估计。不过由于需要高精度的视频捕捉技术光流法的实现成本较高而且算法本身也较为复杂。
帧差法是另一种常用的方法它将两帧图像相减如果在这两帧之间存在运动车辆的信息那么就可以检测出这个目标。例如文献\cite{FIVE200405009}中提到的改进版帧差法通过在检测带内生成数据流来检测车流量。
此外深度学习也逐渐应用于该领域。大部分涉及到多个阶段从简单的图像预处理到特征提取再到目标检测、跟踪和计数。例如文献\cite{9130874}提出了一种结合卡尔曼滤波器和Faster-RCNN的车流量检测方法但其无法达到实时检测的要求。
文献\cite{8026312}采用改进的SSD算法来检测车辆并使用核相关滤波器来跟踪车辆及计数其中引入了类Inception块来替换原SSD中的额外特征层以处理多尺度车辆检测任务。这样做虽然增强了对较小车辆的检测但模型参数庞大计算复杂度高。
文献\cite{8990708}提出了一种改进的YOLOv4-tiny算法对车辆进行跟踪并利用卡尔曼滤波器跟踪车辆来计算交通流量。然而模型的运算量巨大需要较高算力的GPU。
为了解决上述问题文献\cite{DBSZ202303009}\cite{BJHK20240308001}提出了一种基于改进YOLOv5s的轻量化车流量检测算法。该算法的主要创新点为1使用ShuffleNetV2。2引入了CBAM。 除此之外文献\cite{DSSS202305010}还提出了一种基于模糊车流量的拥堵程度估计方法算法简单轻量且有较高的检测精度。
综上所述尽管目前的车流量检测技术取得了显著进展但仍面临着诸多挑战。
1.3 本文章节安排
本篇论文结构如下 1. 摘要Abstract对文章全文内容的总结和提要。 2. 绪论描述课题研究背景及意义国内外现状以及文章总体结构。 3. 可行性分析分析目前系统功能及不足并进一步归纳问题推导出几个 合理方案加以多维度可行性分析选定最终方案。 4. 需求分析描述系统的功能需求性能需求并合理规划出目标系统的层 次架构图。进一步抽象出逻辑模型构建出数据流图。 5. 总体设计划分系统模块及接口。 6. 详细设计填充模块细节分为软硬件两个部分。 软件部分确定各外设控制算法以及目标检测目标跟踪车流统计、绿 灯时间分配四个核心算法的细节。 硬件部分具体电路模块的选定电路原理图的设计。 7. 搭建编码 软件部分选定合适的编程语言进行环境的配置以及代码的编写。 硬件部分根据详细设计的电路原理图进行电路搭建并进行相关的焊 接。 8. 系统测试该阶段与搭建编码阶段同步进行内容包括模块测试、集成测 试等多维度的测试结果。 9. 总结与展望在整个开发设计过程中的心得与困惑。以及对系统的进一 步维护完善的思路和展望。
2 可行性分析 可行性阶段的目的并不是解决问题本身而是评估问题的解决性和解决的 价值。通过可行性研究可以评估问题的复杂程度、解决的技术难度、所需资源 以及可能的风险从而确定是否值得继续投入资源和精力来解决这个问题。[15]
2.1 目前正在使用的系统 现代的红绿灯系统通常由三种颜色的灯组成红色、黄色和绿色。每种颜色都代表着不同的交通指示。红灯停当红灯亮起时表示车辆需要停下来等待。这是交叉路口的其他某一方向的车辆或行人通行的信号。黄灯准备黄灯通常在红灯和绿灯之间的过渡期间亮起表示红灯即将亮起。绿灯行当绿灯亮起时表示车辆可以通行。也是交叉路口其他方向的车辆需要停下等待的信号。这些信号灯通常根据预设的时间间隔进行切换例如红灯持续一定时间然后切换为绿灯最后切换为黄灯然后再回到红灯状态。红绿灯作为常见的交通控制设施在十字路口最为常见。目前市场上主要采用两种常见的红绿灯控制方式。直行和左转同时通行这种控制方式允许车辆在绿灯亮起时同时进行直行和左转。1直行车辆可以沿着道路的正常行驶方向前行而左转车辆则在交叉口时进行左转动作。2双向直行/左转通行这种控制方式将交叉口分为两组车流分别是双向直行车流和双向左转车流。在绿灯时双向直行车流可以同时通过交叉口而双向左转车流则在相应的信号灯亮起时进行左转。无论是采用何种方式其系统流程都可以由图 2-1表示。 无论以何种顺序分配绿灯各个方向的绿灯时长为多少采取何种方式进行控制均可以抽象为图 2-2所示的环形模型。为方便后文描述起名交通环模型。其中交通环的周长代表红绿灯循环的周期四个箭头代表了四个方向各个箭头的长度代表了各个方向绿灯的时长。黑色指针的指示代表当前交通灯中绿灯的状态交通环会随着时间做旋转运动。这种模型的引入将可以极大地方便之 后的分析。 2.2 建立预选方案
经过调查给出以下几种可行方案。
2.2.1 GPS定位
GPS定位,是一种很好的方法。而且高德地图公司因用户数量多掌握着大量有效数据。该公司经商务合作可以提供以下六种数据 路口延误指数提供城市/区域信控路口延误指数对车辆运行效率量化评价为管理者路口问题定位、诊断、优化提供支撑。路口服务水平提供城市/区域信控路口服务水平等级识别判定划分A-F6个层级为管理者路口诊断优化提供数据支撑。路口失衡诊断提供城市/区域信控灯失衡路口识别及诊断为管理者对延误路口识别、诊断、优化提供数据支撑。路口溢出诊断提供城市/区域信控灯失衡路口识别及诊断为管理者对延误路口识别、诊断、优化提供数据支撑。路口排队长度提供城市/区域路口排队长度为管理者对延误路口识别、诊断、优化提供数据支撑。路口停车次数提供城市/区域路口停车次数为管理者对延误路口识别、诊断、优化提供数据支撑。
这六种数据经过算法融合计算可以有效的为调整红绿灯等待时间做出可靠数据支撑。此外经过调整的红绿灯还可以对比参数获得改善效果的反馈从而进一步优化模型。但是因为数据的获取需要与高德公司进行商务合作所以会带来更多的成本以及可能出现的法律纠纷等。
2.2.2 OpenMV可编程摄像头
OpenMV是一款低成本机器视觉模块集开源精神与强大功能于一身旨在提供灵活、可靠且易于扩展的硬件平台。模块搭载STM32F427CPU处理器和OV7725摄像头芯片作为核心计算单元以实现高性能的机器视觉处理。它提供Python编程接口并允许通过简单配置控制摄像头输出简化开发流程,符合本设计要求\cite{WXDY202311006}。然而尽管OpenMV具备诸多优点但其相对较低的计算能力限制了其在需要更高计算性能的场景中的应用如深度学习模型的训练和部署。
2.2.3 树莓派4B
如图~\ref{fig:fig4}树莓派4B是一款微型电脑其主板基于ARM架构轻巧、高效吸引技术爱好者。SD卡作为内部存储介质增强了扩展性。网络接口便于数据传输和远程控制。此外还提供视频模拟信号、HDMI输出接口、CSI摄像头接口Type-C供电接口。网卡用于连接互联网还有XRDPVNC等服务提供远程桌面访问无需外接显示屏节省成本。此外还有两个USB3.0接口和两个USB2.0接口方便连接鼠标、键盘等外设广泛适用于教育、DIY和专业软件开发。 树莓派可通过有线或无线方式连接摄像头获取摄像头的数据进行车流检测。\cite{DZZZ202402022}其与OpenMV的性能参数对比可见表~\ref{tab:table1}。 2.2.4 传感器
如绪论中的国内外技术研究现状所言各种类型的传感器包括红外传感器超声波传感器等等也可以起到车辆计数的功能和效果。
上述几种方案的优势劣势\cite{CCSS201408016}可通过表~\ref{tab:table2}进行详细对比。
通过性能成本对比可以看出树莓派有线摄像头视频检测技术 相比其他几种方案更佳契合本课题。
2.3 可行性分析
2.3.1 经济可行性 本课题主要的花费成本如表 2-3所示主要是由树莓派造成的。实际上使 用简单易学、使用广泛的树莓派进行开发可以提高效率。在日后部署阶段可以使 用达到性能要求的其他芯片代替比如香橙派等。此外在实际的十字路口中 其他基础设备已经存在不需要太多额外的花销。相较于人工手动调节十字路口 绿灯分配时间本系统更具有经济可行性。 2.3.2 技术可行性 车流量检测技术算法上有先进成熟的目标检测目标跟踪技术可供选择。 硬件上有多种高像素摄像头可供选择。 数据处理和分析树莓派可以进行处理和分析车流量数据并设置相关外 设。 2.3.3 操作可行性 系统稳定能够在各种交通情况下正常运行。 易于操作系统操作简洁直观方便交通管理人员对系统进行监控和调整。 实时系统能够实时响应交通情况的变化并及时调整红绿灯信号以确保 交通畅通和安全。 2.3.4 法律可行性 法律合规性系统设计和操作符合当地的交通法规和法律法规。 数据隐私保护在车流量检测和数据处理过程中可以保护个人隐私和车辆 信息避免信息泄露。 责任与风险在使用基于车流量检测的红绿灯系统时将会明确各方的责任 和风险包括交通管理部门以及驾驶员等。 3 需求分析
3.1 功能需求
1. 按照正确的逻辑精准地显示交通灯、倒计时和进度条。进度条要求有和交 通灯颜色一致的三种变化。 2. 综合经检测得到的车辆数目和车流量数据实现红绿灯时间的合理调整。 分为多个状态拥堵时候用拥堵状态的算法常规阶段用常规算法尽可 能的低功耗。需要通过当前等红灯车辆的数目调整出这些车辆绿灯的时 间长度即精准控制。 3. 确保系统稳定性防止出现倒计时跳变现象以确保交通安全。 4. 提供多种模式选择包括智能模式、紧急模式、夜间模式和简单模式。 5. 支持夜间模式定时开启以适应不同时间段的交通需求。 6. 在智能模式下允许人工调整动态配时的灵敏度以满足不同交通场景的 需求。 7. 在各种模式下提供人工设置功能包括红绿灯顺序和时间默认值以满 足特定交通管理要求。 功能需求可用图 3-1 系统层次结构图所示的层次结构图表示 3.2 性能需求 红绿灯数码管进度条不可出现肉眼可识别的闪烁。摄像头目标检测算 法要求帧率 1, 识别准确率达 80%。车流量检测算法要求误差不大于 10%。
3.3 建立逻辑模型 数据流图是表示逻辑模型的一种有力工具。图 3-2就是根据需求提炼出的数 据流图它通过简洁的图形展示了系统中交通信息的传递以及相应的处理。 从图中可以看出摄像头得到的图像数据将流经车辆数目检测算法车流检 测算法并根据两个算法得到的数据、配置信息计算出合理的绿灯时间最后 更新到红绿灯数码管进度条模块上。 4 总体设计 总体设计阶段旨在概述系统的实现方式确定系统的物理组成但并不涉及 具体的内部细节。这一阶段的成果是一个初步的设计方案为后续的详细设计提 供了基础。 4.1 硬件部分 • 树莓派 4B作为系统的主控单元负责整体的控制和协调。 • 四个摄像头用于采集环境信息和图像数据提供给系统进行分析和处 理。 • 四组红绿灯用于模拟交通信号灯控制交通流量和指示行车状态。 • 四组数码管用于显示交通灯的倒计时等。 • 四组进度条用于显示交通灯变色的大致时间主要是为了避免数码管突 变带来的不安全因素以及没有数码管显示时候缓解司机焦虑情绪。 在总体设计阶段我们关注的是系统的整体架构和功能因此描述的重点在 于列出系统所需的各种硬件组件并指明它们在系统中的作用和功能。具体的连 接方式、通信协议、电源供应等细节将在详细设计阶段进行进一步考虑和确定。 4.2 软件部分 采用面向对象的设计方法设计各个模块。 1. 模型类 • 属性尺寸、锚框数目、锚框规格、模型名、跟踪器... • 方法 目标检测图片- 标注框数组置信度数组类别标签 目标跟踪标注框数组置信度数组类别标签- 标注框数组置信度 数组类别标签ID 数组 识别车辆数目 (图片- 车辆数目 识别车流量视频- 平均车流量 2. 红绿灯类 • 属性当前灯色、控制信号 • 方法 更新灯色颜色 3. 数码管类 • 属性控制信号、倒计时时间 • 方法 显示倒计时 消失倒计时 开启定时更新显示 4. 进度条类 • 属性灯色、控制信号、灯数、时间、熄灭频率 • 方法 填满进度条颜色 更新熄灭频率倒计时时间 开启定时更新 5. 显示类 • 属性灯色、倒计时时间、规定时间、红绿灯、数码管、进度条 • 方法 定时更新路口显示 修改路口显示灯色时间 6. 摄像头类 • 属性状态、控制信号 • 方法 开启摄像头 读取当前帧- 图片 录制视频保存路径帧率时长 关闭摄像头
5 详细设计 5.1 硬件选定 硬件部分在详细设计阶段的主要任务是选择合适型号的芯片和模块。下文 将依次介绍。 5.1.1 摄像头 OV5647 摄像头模组的标准尺寸是 8.5x8.55 毫米。它可以拍摄 500 万像素的 照片或者高清视频。当它以 720p1280x720 像素的分辨率和每秒 60 帧的速度 拍摄视频时它可以通过一种叫做 2x2 binning 的技术来提高感光度从而改善 图像质量。 这个摄像头使用了 OmniBSI 技术这是一种前沿的光学技术。它可以减少图 像中的干扰和不均匀性。此外摄像头还采用了一些 CMOS 传感器技术, 产生更 清晰的彩色图像。相比直接使用数字信号容易受到外部干扰其接口协议 CSI-2 使用差分信号稳定性更好。
5.1.2 树莓派 4B 图 5-2是树莓派 4B 的 GPIO 管脚图共 40pin。此外GPIO 引脚还可用于多 种替代功能如 PWM、SPI、I2C 和串行通信。PWM 功能对所有引脚均可用但 是硬件 PWM 只可用于 GPIO12、GPIO13、GPIO18、GPIO19。SPI 包括 SPI0 和 SPI1而 I2C 包括数据和时钟引脚。串行通信由 TX(GPIO14) 和 RX(GPIO15) 实 现。 5.1.3 交通灯
如图 5-3三色交通灯模块最大电压 5V, 满足系统要求。 5.1.4 数码管
数码管可分为 7 段和 8 段8 段数码管比 7 段多一个小数点 (DP)。共阴数码 管, 有一个公共的阴极应用时将其接地。根据想要输出的数字设置对应段的 阳极为高电平。我们选择 2 位 8 段共阴数码管 5621AS-1 403 可以满足系统要求。 5.1.5 进度条
进度条要求可以呈现红黄绿三种颜色并且引脚不能太多且为了实现进度 条的变化要求灯条可以实现逐点控制。WS2812B 是一种集成了 RGB-LED 和控 制电路的像素点组成的灯条其实物图如图 5-5所示。它具有串行级联接口只 需要一根控制线即可实现逐点控制。每点光色由 24bit 数据决定结构如图 5-6 按顺序分别为 G、R、B高位先发。此外它内置了信号整形电路确保输出的 信号不会因线路波形畸变而受到影响。 5.1.6 视频复用器
要想实现 CSI 摄像头的有线连接首先需要考虑的是树莓派 4B 只有一个 CSI 接口。其 CSI 接口管脚图如下 5-7所示。 有以下几种方案可以解决该问题现分析如下。 1. 使用 SN74153 SN74153 是双四选一芯片其管脚如下图5-8所示。 通过 CSI 转接口与 OV5647 连接。由于连线过多具体电路较为复杂在焊 接到洞洞板之前先在洞洞板布局软件 lochmaster 上进行布线如图 5-9、5-10所 示。 由于 CSI 接口由 15p 1.0mm FPC 软排线引出还需要通过转接板转接为可 以焊接在洞洞板上的排针形式转接板的焊接效果如图 5-11。 然而经过测试发现此方案并不能行得通经查找资料请教老师发现问题 出在了频率、数据传输方向和差分信号上。CSI 的 15 条线路中有的是作为输 出端有的是作为输入端有的管脚信号带宽达 400khz经过 74153 芯片会出 现频率的衰减信号中存在着差分信号图 5-9、图 5-10并没有保证差分信号组 线长一致这将导致差分信号不能对齐产生错误。
2. 使用 TMUX646 TMUX646 是专为高速通信设计的解决方案提升电子设备的数据传输速率。 它拥有 10 通道单极双投双向开关其中 5 个是差分通道适用于连接多个兼容 MIPI 接口的器件到单一 CSI/DSI 或 C-PHY/D-PHY 模块上。支持各种接口包括 传统的串行存储系统和新兴的数字视频广播技术。具备 6GHz 最高带宽和极低通 道间偏差保证数据传输的高效性和稳定性。 其原理图及管脚如下图 5-12、图 5-13所示。 理论上本系统使用三片该芯片即可既可以简化方案 1 的连线布局还可 以保证信号频率不衰减是一个完美的方法。经查询官网该芯片论坛涉及到该 类芯片串联的问题官方人员的回答是TS5MP646(TMUX646 Pin-to-pin upgrade supporting 6-GHz bandwidth available) 器件是一个无源场效应管开关对级联数 量的唯一限制是发送器和接收器在信号路径中的灵敏度以及信号链需要支持的 数据速率或带宽。无源 FET 开关没有任何驱动能力串行放置的每个开关都 会将这些寄生值添加到信号路径中。在下面的仿真 5-14中可以看到如果两个 TS5MP646 器件级联则插入损耗将增加两倍 ( -0.5 dB 至 1.0dB)。还可以看到级 联交换机从 4GHz 到 2GHz 的带宽减少。由于本系统所使用的 CSI 摄像头频带 在 400kHZ 左右对信号影响可以忽略。 只是由于其只有 BGA 封装故不能焊接在洞洞板需要进行 PCB 设计。 3. 使用 CH484M CH484M作为一款双向模拟开关芯片集成了两个差分通道每个差分通 道均采用 4:1 的四通道多路转换器MUX模拟开关机制可以用于不超过 1.7V 电压及 5Gbps 的差分信号的四选一切换。SSAX 和 SSAY 构成超速差分通道 SSA SSBX 和 SSBY 构成超速差分通道 SSB。差分信号 X 和 Y 可以根据 PCB 设计优 化的需要设定为 /-p/n或反之通道 SSA 和 SSB 可以根据 PCB 设计优化的 需要设定为 TX/RX 或反之。 其原理图及功能示意图如图 5-15、图 5-16所示。 综上上述方案 2方案 3 均可以作为预选方案。 5.1.7 其他元件 由于树莓派的管脚有限为了尽可能减少树莓派的管脚使用方便日后扩 展使用译码器、数据分配器数据分配器等元件。 1. 74LS139 74LS139 为两个 2 线 4 线译码器。其符号图与原理图如图 5-17、 5-18所 示。利用该芯片可以实现 4 个信号控制使能四个数码管、四组交通灯、4 组 进度条。 2. 74LS138 74LS138 为一个 3 线-8 线译码器其原理与 74LS139 类似。 3. 74LS47 7 段数码管原本需要 7 个管脚进行控制也很占用 GPIO 口。74LS47 是七 段显示译码器其逻辑图如下图所示译码器有四个二进制码输入端a g 七个 输出端输出状态为高阻和低电平两种。除此之外为了使用方便增加了灭灯 控制灭零控制以及灯测试等附加功能的控制端。图 5-20所示为其符号图与管脚 图图 5-21为其真值表根据对应关系可以方便地连线设计程序实现倒计 时显示。 4. 74LS373 数码管更新频率的问题需要综合考虑 CPU 资源占用和闪烁情况。传统轮询 方式频率高占用 CPU频率低则容易闪烁。因数码管更新定时规律可利用树莓 派的定时器。但译码器每次只能点亮一个数码管可采用 74LS373 锁存器解决 此问题。 74LS373 锁存器的管脚如下图 5-22所示。 5.2 电路设计 经过合理设计可得到电路原理图如图 5-23所示。 5.3 算法部分 5.3.1 目标检测算法 1. YOLOv5 该网络模型是 YOLO 系列迭代后的经典之作[19]可视为对之前 YOLO 系列 的综合总结和突破是一种非常杰出的网络模型框架。 YOLOv5 有多个版本其中 YOLOv5n 网络是 YOLOv5 系列中深度和特征图 宽度最小的网络准确率虽不及其他版本但模型参数少适合部署在计算能力弱 的机器上。YOLOv5 的网络结构图如图 5-24所示分为四个主要部分分别是 输入端、Backbone、Neck 以及 Prediction。 图 5-25是 YOLOv5 不同版本的的算法性能测试对比图。截至目前YOLOv5 已经更新至 v9.0 版本科研学术界以 YOLOv5 为基础框架进行了大量的改进研 究。 2. YOLOv5-Lite 考虑到实际情况部署于树莓派的计算能力通常不如 PC 端强大。因此为 了保证目标检测系统的稳定运行往往需要牺牲网络模型的精度以换取足够快 的检测速度。因此还需要更加轻量化的部署。YOLOv5-Lite 网络模型便是轻量 化部署网络的典范之一。 YOLOv5-Lite 算法是 YOLOv5 算法的一种轻量级版本其模型结构如下图 5- 26所示经过了一些优化和简化去除了 Focus 结构层去除了 4 次 slice 操作 避免反复使用 C3 Leyer 模块。这三个主要的改进使得模型更加轻量化。 在主干网络结构Backbone与检测头Head之间的过渡区域内一个关 键的组成部分—特征增强融合网络层Neck—逐渐成为了研究的焦点。这一层 不仅仅是为了增强特征的表达能力更重要的是它能够有效地融合不同层次上 提取的信息从而达到更为精确和高效的图像识别效果。YOLOv5-Lite 算法采纳 了 FPNPANFeature Pyramid Pooling Panning结构并针对输出端Head 部分进行了精心设计的通道剪枝处理。具体表现在两个方面[20]。1通道数量 相同的优化。2PANet 结构改进。 YOLOv5-Lite 借鉴了 YOLOv5 的许多思想和结构使得两者在一定程度上 有所关联。然而YOLOv5-Lite 并非简单地复制了 YOLOv5 的结构而是针对移 植部署的需求进行了一系列的改进和优化专注于快速推理和网络模型的轻量 化以便在移动设备或资源受限的环境中进行部署和应用。 5.3.2 目标跟踪算法 车流量是指在单位时间内通过某一路段的车辆数量。YOLOv5-Lite 模型只 能实现目标检测也就是只能识别车辆但是并不能追踪车辆。想要检测车流量 必须先实现目标跟踪。然后计算按照特定顺序经过两个掩码的汽车数量除以总 时间就可以知道某一行驶方向上的平均车流量。由于树莓派的计算能力相对 PC, 服务器还是较低YOLOv5-Lite 模型的帧率经过部署检测也不是很高。所以我 们要找尽可能简单速度较快较轻量的算法。 1. Deep SORT 车辆追踪算法中应用较为广泛的是 Deep SORT[21],Deep SORT 是一种用于目 标跟踪的算法[22]它是由 SORT(Simple Online and Realtime Tracking) 发展而来 的。Deep SORT 在 SORT 的基础上引入了一个深度学习模块旨在改进目标遮挡 和长时间不见目标时的跟踪性能。 首先Deep SORT 先进行目标检测获得每个目标的位置信息检测框。 接下来针对每个检测到的目标Deep SORT 利用一个深度学习模块提取其特征 信息。然后Deep SORT 将每个检测到的目标的特征与已经跟踪的目标的特征进 行比较。通过比较特征Deep SORT 可以确定新检测到的目标是否与已跟踪的目 标匹配, 确保系统能够处理目标出现、消失、遮挡等情况实现对目标的持续稳 定跟踪。 Deep SORT 的一个主要优点是它可以处理目标遮挡和目标暂时消失的情况。 但是正如他的名字Deep 表示其运用了深度学习算法这将导致算法由目标检 测目标跟踪两个很大的模型组成将会使得视频检测的帧率进一步下降尽管 可以先录制再检测其检测效率也远不能满足要求。 2. Sort 相比于 Deep Sort, SORTSimple Online and Realtime Tracking是一种简单 易懂、实时操作的目标跟踪技术[23]。它非常的轻量源代码只有 300 多行不涉 及深度学习。其目标在于为计算边缘设备提供一种高效的方式进行目标跟踪。 该技术的核心思想是结合目标检测和目标运动预测来实现跟踪。它利用目标检 测获取目标物体的边界框的坐标。然后利用卡尔曼滤波器来预测该目标的可能 位置并对原先的检测结果进行一个修正。 SORT 技术还引入了一种基于匈牙利算法的数据关联方法。其核心在于处理 和分析数据之间的关联性以实现对物体或目标位置的精确定位。匈牙利算法需 要解决的问题是找到两帧之间当前帧与上一帧的边界框的最佳匹配项。找匹 配项的准则是损失最小。损失代表的是在匹配两个集合元素时所花费资源的度 量。损失矩阵是一个特殊的数学结构用来表示匹配过程中的成本。通过不断地 计算矩阵中每个匹配项的相对损失算法可以逐步缩小候选匹配集的范围直到 找到最优解。 我们只需要找到 Sort 源代码中的输入检测框接口即可进行检测。找到输 出 ID 标号接口即可进行锁定对应坐标的 ID 标号然后根据不同的 ID 标号给 他们画出不同颜色的标注框进行测试。 5.3.3 绿灯时间调整算法 绿灯时间的调整算法要从之前建立的交通环模型来考虑。任一时刻一个方 向为绿灯/黄灯另外三个方向为红灯。为了简化模型不妨将黄灯归在绿灯中 进行考虑。 路口时间的分配取决于两个因素一是单位时间有效通行量。其计算方法 为一个周期内四个路口通行车辆总数/路口通行周期二是各路口司机等待最 大时长。前者数值越高表明交通越高效后者数值越低表明司机等待出现焦 虑烦躁的情绪的可能性越低。两个因素是相互矛盾和制约的在设计绿灯时间调 整算法时候要尽可能的兼顾两者。 以前文所述交通环模型进行分析路口时间的分配取决于两个因素交通环 周长、交通环各方向比例。这两个因素的确定可以确定唯一的交通环模型也 即确定了实际路口绿灯时间的分配方案。 假设各方向路口司机等待红绿灯时间的最大耐心时间为 t. 则交通环最大周 长为T t t/3。假设某一方向路口长度 l1, 车辆正常通行时速度为 v, 车身平均 车长为 l2, 由停止到正常通行加速度不变加速路程长度为 l3。 那么 n 辆汽车通过该路口所花费的时间为: 每次切换路口绿灯会带来时间损耗为 因此在保证乘客最大等待时间内应该尽可能增大每次绿灯时间减少绿灯次 数从而避免带来较多的时间损耗。在此基础上检测车流量根据车流量来分 配时间避免出现空等尽一步提高了单位时间有效通行量降低了司机等待时 长。
假设路口绿灯方向依次为 a,b,c,d, 检测算法分三阶段进行如图 5-27。常规 阶段a 黄灯时b 红灯 3s 时检测 b 路口车辆数目假设 n 辆则由公式 5-1 计算得接下来的绿灯时长。若路口因为车辆数过多超出摄像头检测范围将会提 高拥堵指数拥堵指数达到一定阈值进入拥堵阶段。 拥堵阶段首轮各路口均匀分配绿灯时间为最大值检测绿灯时期车流量。 在之后轮中按照该车流量比例进行分配时间。进入调整阶段。 调整阶段按照拥堵阶段中车流量比例进行分配时间。并在绿灯结束时检 测路口车辆数目若各个路口车辆数目相差达到较小的阈值按照相差数目调整 时间若各个路口车辆数目相差达到较大的阈值重新进入拥堵阶段。红灯结束 时检测路口车辆数目若各个路口车辆数目均小于摄像头检测范围回到常规 阶段。 需要注意的是由于树莓派检测时速度较慢拥堵阶段的调整需要录制视频 后进行统计否则可能因为车辆行驶过快出现漏帧等现象因此可能需要 2˜3轮 时间进行录制 检测。由于现实中拥堵阶段往往发生在上下班高峰期故只需 要进入几次拥堵阶段之后由调整阶段进行低计算量的调整即可。
5.4 数据集 为了保证目标检测模型的识别准确性使用多个符合应用场景的交通类数 据集进行模型训练并挑选在模型车上识别率较高的模型进行后续开发。本文共 训练以下 3 个数据集。 5.4.1 UA-DETRAC 该数据集拍摄于天津和北京的 24 个不同道路总时长为 24 小时帧率为 25 帧。共有超过 14 万张的图片和 121 万个标记的对象边界框分为训练集和测试 集两大部分。训练集约 82085 张图片测试集约 56167 张图片。车辆分为四个类 别小汽车、货车、公共汽车和其他。 下图 5-29展示了 DETRAC 数据集中带注释的帧。其中不同的边界框颜色 代表了不同的遮挡程度 5.4.2 BIT-Vehicle BIT-Vehicle 数据集是由北京理工大学发布的国内车辆检测数据集共包含 9850 幅汽车图像。数据集中的所有车辆分为 6 类轿车 (Sedan)、SUV(SUV)、公 共汽车 (Bus)、微型客车 (Microbus)、小型货车 (Minivan)、和卡车 (Truck)。该数 据集部分图片如图 5-30所示。 5.4.3 自制模型车数据集 由于汽车模型和现实中汽车还是存在着不少差距所以考虑自制一个较小 的数据集进行训练。通过代码编写一段定时拍照的程序定时截取不同的车辆照 片并保存至相应路径下。之后将保存好的文件通过 SFTP 协议传输到具有显卡 的 NVIDIA GeForce RTX 4090 服务器。首先通过 CONDA 创建 labelmen 的虚拟 环境并进行相关包安装、Labelme 项目 clone。之后打开 labelme 软件进行标签 的标注如图 5-31所示。最后保存自动生成的 json 文件。 6 电路搭建和算法实现 6.1 电路搭建 6.2 模型训练 采 用 三 个 数 据 集 UA-DETRAC, BIT-Vehicle 自 制 模 型 车 数 据 集 分 别 进 行 训 练。 训 练 环 境 为 WSL2(windows subsystem of linux): Ubuntu 22.02LTS, GPU:NVIDIA GeForce RTX 4090, CUDA:12.3, Anaconda 虚拟环境, Python:3.8。训 练版本YOLOv5-Lite-v1.4。 训练开始前首先要处理数据集将其转化为 YOLO 格式。之后配置相关 的 yaml 文件指定数据集路径配置相应的预训练模型 YOLOv5-s以及 num- workers2否则 GPU 会报超出内存。最后使用命令 python train.py –weights data/UA-DETRAC.yaml –img-size 320, 进行训练即可。训练结果默认保存在 runs/- exp 文件夹下自制数据集由于数据太少经检验训练效果太差放弃使用。其 他两个数据集的训练结果分别如下图 6-3, 图 6-4所示。 两个模型的测试预览如图 6-5, 图 6-6所示 6.3 模型部署 ONNX 是一个开放的生态系统它支持不同框架之间的相互操作使得从 研究到生产的过程更加简化。通过 ONNX来自各种框架如 PyTorch、Keras、 TensorFlow、MxNet、MATLAB 等的模型都可以导出或转换为标准的 ONNX 格 式。转化为 ONNX 模型后就可以实现在任意平台上部署。 YOLOv5-Lite 作者已在其项目中预留了导出接口。使用 export.py 文件指 定对应的训练好的 best.pt 模型即可导出为 best.onnx 模型。 要使用导出的模型进行预测还需要配置树莓派的 opencvnumpy 等库要特 别注意版本问题。包括树莓派操作系统版本系统类型python 版本等等。最 后调用模型编写前向推理程序即可。 6.4 目标检测 在有了 best.onnx 模型后只需要在树莓派中调用该模型进行前向推理, 即 可实现检测输出对应的坐标框。其核心代码片段及注释如下所示。 判断该函数返回值的大小即可判断静态照片中的车辆数目。 6.5 目标追踪 目标追踪基于 Sort 源码但其对应的输入接口只有坐标值输出接口只有 坐标值和 ID 标号且输入输出顺序不同。这将导致经过目标追踪丢失目标的 置信度所属类别。故修改接口使输入接口为坐标值置信度类别。使输 出接口为坐标框、置信度、类别、ID 标号。将模型检测的结果输入更新追踪 器将可以获得对应目标的所有信息调用方法如下所示。 6.6 车流量检测 有了目标追踪划分掩码判断车辆某点经过掩码的顺序即可进行某一方向 上车辆总数统计其流程如图 6-7所示。 有了车辆总数除以对应时间即可计算得到平均车流量。 6.7 其他算法 其他算法的编写有相应工具包neopixel、gpiozero、threading.Timer 等等较 为简单不再赘述。严格按照总体设计中类的划分和定义进行即可。需要注意 进度条的代码编写不能使用 rpi_ws281x因为其只能在命令行运行且与 opencv 不兼容。使用该包将导致无法观察检测结果。 7 测试 测试环境如图 7-1所示 首先进行模块测试。 7.1 连接树莓派 首先利用树莓派官方镜像安装软件 imager 在 sd 卡进行系统下载并配置 WIFI 及 SSH。安装 SD 卡后通过局域网 IP 扫描器找到树莓派 IP 地址后。使 用 XShell, 通过 SSH 连接后在设置中开启 VNC 服务。之后使用 VNC-Viewer 进 行连接。如图 7-2所示连接成功。 7.2 红绿灯数码管模块测试 红绿灯模块数码管模块可以正常显示。如图 7-3, 7-4, 7-5所示。 7.3 进度条测试 经过测试灯条可以实现红绿黄三种灯色并根据系统需求按照一定速度 进行依次熄灭对应像素点实现进度条的提示功能如图 7-6、 7-7所示。 7.4 摄像头-目标检测测试 最开始的时候只训练了 UA-DETRAC 数据集和 BitVehicle 数据集其中表 现较好的是 UA-DETRAC。但其测试准确率依然较低只有 60% 左右如图 7- 8, 7-9所示。此外开启计数模式后有很多边界框也计数在内。说明 IOU 阈值 设置较高。经过调整阈值后边界框计数准确程度有所提升。但车辆设别精度还 是较低考虑是现实车辆数据集和模型车数据集不匹配造成的。 之后制作了该玩具车的数据集但由于数据较少且只有玩具车一种模型 泛化程度很低而且识别率更低了。后来经过认真分析了 UA-DETRAC 数据集发 现了问题所在角度。 7.5 摄像头-车辆静态计数测试
调整角度后模型识别准确率就提升至 80% 了且能精准计数。根据测试技 术中边界值分析法测试 0 辆和 6 辆结果如图 7-10、 7-11所示。 经合理调整阈值对于部分挨着的模型车也能正确识别并计数如图 7-12。 7.6 目标跟踪测试 经过测试车辆移动的时候Sort 算法依然可以追踪对应目标保持相同 ID 标号不同的 ID 标号在图中用标注框的颜色表示。如图 7-13 7-14对比所示 黄色的车的位置发生了变化依然可以识别到它原来的 id故其标注框依然是原 来的颜色。 7.7 车辆动态计数测试 绘制的掩码如图 7-15所示。 由于模型没办法动起来导致动态计数测试很难实现。所以采用在天桥录制 好的一段视频进行检验测试。测试结果如下图 7-16、 7-17、 7-18所示。 帧率虽然有所下降但是经测试对于该视频每 5 帧检测 1 帧时不会出 现误差。在检测图像展示的情况下原视频时长为 23s, 检测时长为 60s。如果不 展示检测图像则检测时长为 50s共计检测 146 帧平均帧率为 4.0228最大 瞬时帧率为5.04。只有在维护时期才需要对检测结果进行展示且实际应用 场景中可以根据车辆速度来调整跳帧数IOU 等参数在保证模型准确率的基 础上进一步提高跳帧数。此外拥堵阶段往往只有几个连续时间段该动态检测 只需要在进入拥堵阶段时使用一次之后进入调整阶段进行静态检测即可。并且 由于动态检测时采取边录制边检测未在本轮检测完的部分将在下轮中继续检 测。因此不用担心因为检测较慢导致错过信息。 7.8 集成测试 经过测试系统可以在红灯最后一秒准确识别静态照片中车辆数目并根据 该数目决定进入哪个阶段。在常规阶段如图 7-19可以根据静态数目计算出绿 灯时间并进行调整。在拥堵阶段可以录制车流量视频并根据车流视频在之 后几个周期中检测车流量如图 7-20。根据检测到的结果调整下个周期绿灯时 间如图 7-21。在调整阶段可以综合判断红灯最后车辆数与绿灯最后车辆数 来实现微调或进入其他状态如图 7-22。测试图中为了显示模型实时的检测结 果下轮绿灯时间在输出窗口可见要等到下轮绿灯才会显示到数码管上。本系 统功能较为完善可以显著减少等红灯平均时间提高单位时间通行量缓解了 城市十字路口拥堵问题。 8 总结与展望 8.1 总结 在进行需求分析阶段可以查到的公开数据很少很难定量说明现实生活中 交通灯情况最后找到了高德地图部分公开数据才侧面印证了十字路口交通堵 塞问题的日益凸显。 树莓派的计算能力相对较低平均帧率只有 4 左右。虽能完成需求但进一 步优化模型也有着很大价值。 此外摄像头接口一接四尝试了多种方案从最开始的想当然去用 SN74153 而懒于查找 CSI 协议的细节树莓派 CSI 接口的各个引脚作用导致了战略上的 轻视。尽管战术上勤勤恳恳的购买元件设计电路焊接板子最后到头来却 是一场空。懒于查找资料的一大原因便是不想去看官方文档既怕专业术语晦涩 难懂又怕英文理解不了。只想看现成的 csdn 等博客。当博客内容充足时不妨 为好的选择但是当博客内容不足以支撑实验时候就必须要克服畏难清晰积 极查阅官方文档。 训练模型的时候最开始使用的是 Windows 操作系统问题频出但是双系 统又不能满足日常生活需要。经查阅资料发现有 Linux 子系统的存在即 WSL, 成功安装后配置好 CUDA、CUDNN、Anaconda、PyTorch 包等花费了大量时间。 好在磨刀不误砍柴工后边训练模型的时候很快。 部署的时候各种包版本匹配问题以及使用的 64 位树莓派最新系统对其的 兼容问题。最后实在找不到合适匹配的包只好降低树莓派系统。之后几乎一路 顺风。给我的启发是最新版本的系统未必是最好的可能会有很多 bug 还没有 解决其次是使用他的人还较少网络上的教程也很少但相对旧一些的稳定版 本就没有这类问题。选择版本时如果没有硬性要求现阶段使用人数最多的版 本不妨为一种好的选择。 8.2 展望 核心算法上可以进一步优化模型适配更符合应用场景的数据集使用形 式上可以使用 PYQT 画出 GUI, 方便交警同志以及相关部门的使用。此外可 以做出机械外壳方便模型的展示测试维护上要在更多不同环境不同车流 情况下进行测试保证算法的鲁棒性、稳定性硬件电路上可以适配算法在其 他性能更高或性价比更高的芯片上进行测试便于大范围部署。 参考文献 [1] 公安部交通管理局. 全国机动车达 4.3 亿辆驾驶人达 5.2 亿人新能源汽车保有量达 1821 万辆 [J/OL], 2023. https://mp.weixin.qq.com/s/VfeDkgvdv1XhsC_xhFu6XQ5. [2] 高德公司. 2023 年度中国主要城市交通分析报告. 2 2024. https://report.amap.com/ share.do?ida1be56248c8cccc9018d68e8010a6c1a. [3] 黄慧喜. 基于车流量监测的智能交通灯控制设计 [J]. 汽车维修, 2018 (04): 6–8. [4] 马勇平. 车流量检测技术及相关专利分析 [J]. 科技视界, 2020 (26): 118–119. [5] 陈青霞. 基于车流量监测技术的智能交通灯控制系统的开发 [J]. 自动化应用, 2023, 64 (10): 91–9396. [6] 姜文东, 贾辉然, 折志伟, et al. 基于热释电红外传感的智能交通系统研究 [J]. 河北工业科 技, 2010, 27 (02): 94–96117. [7] 杨国亮, 王志良, 牟世堂, et al. 一种改进的光流算法 [J]. 计算机工程, 2006 (15): 187– 188226. [8] 张玲 , 陈丽敏. 基于视频的改进帧差法在车流量检测中的应用 [J]. 重庆大学学报 (自然科 学版), 2004 (05): 31–3373. [9] Liu C, Huynh D Q, Sun Y, et al. A Vision-Based Pipeline for Vehicle Counting, Speed Esti- mation, and Classification [J]. IEEE Transactions on Intelligent Transportation Systems, 2021, 22 (12): 7547–7560. [10] Ning C, Zhou H, Song Y, et al. Inception Single Shot MultiBox Detector for object detec- tion [C]. In 2017 IEEE International Conference on Multimedia Expo Workshops (ICMEW), 2017: 549–554. [11] Oltean G, Florea C, Orghidan R, et al. Towards Real Time Vehicle Counting using YOLO-Tiny and Fast Motion Estimation [C]. In 2019 IEEE 25th International Symposium for Design and Technology in Electronic Packaging (SIITME), 2019: 240–243. [12] 王晨曦, 鲍泓, 梁天骄. 基于改进 YOLOv5s 的轻量化车流量检测算法 [J]. 东北师大学报 (自然科学版), 2023, 55: 56–63. [13] 王坤, 冯康威. 基于改进 YOLOv5 的交通场景小目标检测算法 [J]. 北京航空航天大学学 报: 1–16. [14] 苏德福, 陈彬晖, 林诗雨, et al. 基于模糊车流量估计的智能交通系统 SOPC 设计 [J]. 电视 技术, 2023, 47 (05): 41–4450. [15] 齐治昌, 谭庆平, 宁洪. 软件工程 [M]. 高等教育出版社, 2019. [16] 韩立立, 刘晓然, 刘文杰, et al. 基于 OpenMV 的智能交通灯系统设计 [J]. 微型电脑应用, 2023, 39 (11): 22–26. [17] 尹延龙, 丁瑞好, 董铮. 基于树莓派的交通灯实时控制系统设计 [J]. 电子制作, 2024, 32 (02): 89–93. [18] 谢金生, 官飞. 基于云计算的智能交通信号灯控制系统设计与实现 [J]. 长春师范大学学 报, 2014, 33 (08): 57–60. [19] Redmon J, Divvala S, Girshick R, et al. You Only Look Once: Unified, Real-Time Object Detection [C]. In 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016: 779–788. [20] Huang R, Pedoeem J, Chen C. YOLO-LITE: A Real-Time Object Detection Algorithm Opti- mized for Non-GPU Computers [C]. In 2018 IEEE International Conference on Big Data (Big Data), 2018: 2503–2510. [21] 张宇豪, 肖新宇, 李欣雪, et al. 一种可移动的车流量实时检测系统设计 [J]. 现代信息科技, 2023, 7 (21): 131–135. [22] Wojke N, Bewley A, Paulus D. Simple online and realtime tracking with a deep association metric [C]. In 2017 IEEE International Conference on Image Processing (ICIP), 2017: 3645– 3649. [23] Bewley A, Ge Z, Ott L, et al. Simple online and realtime tracking [C]. In 2016 IEEE Interna- tional Conference on Image Processing (ICIP), 2016: 3464–3468.