# 1.研究背景:
在传统城市道路交通信号灯的应用过程中,存在专业技术人员较缺乏、项目投入资金少、信号灯故障抢修较困难等问题,为城市居民生活与出行带来极大不便。对此,文章进行深入研究,分析了城市道路智慧交通信号灯系统的基本结构,并充分结合实际情况进行设计与应用,旨在缓解城市交通堵塞问题,提升居民幸福感。
# 2.研究内容&目标:
用python基于opencv实现对车辆流量的识别,然后通过yolov7算法计算南北和东西车道车数的比值,根据南北车道实时的车流量比值来对交通灯切换的时间比例进行实时指导,从而最大程度的保证城市交通的畅通,减少早晚高峰车辆拥堵的时间,实现智慧交通的设计目标。
# 3.解决的关键问题:
1.理解交通灯切换的原理;
2.建立车辆检测、追踪和统计的模型;
3.根据假设建立实际问题优化模型。
# 4.图片展示
![1.png](d71134333984cc4b85e2072201ca308e.png)
![2.png](28b589519f46fb619e634083b64003f4.png)
# 5.视频展示
[Python基于OpenCV的智能交通灯系统(南北车流量比例)[源码&部署教程]](https://www.bilibili.com/video/BV1pd4y1X7AC?spm_id_from=333.999.0.0&vd_source=bc9aec86d164b67a7004b996143742dc)
# 6.Deepsort目标追踪
(1)获取原始视频帧
(2)利用目标检测器对视频帧中的目标进行检测
(3)将检测到的目标的框中的特征提取出来,该特征包括表观特征(方便特征对比避免ID switch)和运动特征(运动特征方
便卡尔曼滤波对其进行预测)
(4)计算前后两帧目标之前的匹配程度(利用匈牙利算法和级联匹配),为每个追踪到的目标分配ID。
Deepsort的前身是sort算法,sort算法的核心是卡尔曼滤波算法和匈牙利算法。
卡尔曼滤波算法作用:该算法的主要作用就是当前的一系列运动变量去预测下一时刻的运动变量,但是第一次的检测结果用来初始化卡尔曼滤波的运动变量。
匈牙利算法的作用:简单来讲就是解决分配问题,就是把一群检测框和卡尔曼预测的框做分配,让卡尔曼预测的框找到和自己最匹配的检测框,达到追踪的效果。
#### sort工作流程如下图所示:
![4.png](a9453f738b534a27cad4bee2f631a8dc.png)
Detections是通过目标检测到的框框。Tracks是轨迹信息。
#### 整个算法的工作流程如下:
(1)将第一帧检测到的结果创建其对应的Tracks。将卡尔曼滤波的运动变量初始化,通过卡尔曼滤波预测其对应的框框。
(2)将该帧目标检测的框框和上一帧通过Tracks预测的框框一一进行IOU匹配,再通过IOU匹配的结果计算其代价矩阵(cost matrix,其计算方式是1-IOU)。
(3)将(2)中得到的所有的代价矩阵作为匈牙利算法的输入,得到线性的匹配的结果,这时候我们得到的结果有三种,第一种是Tracks失配(Unmatched Tracks),我们直接将失配的Tracks删除;第二种是Detections失配(Unmatched Detections),我们将这样的Detections初始化为一个新的Tracks(new Tracks);第三种是检测框和预测的框框配对成功,这说明我们前一帧和后一帧追踪成功,将其对应的Detections通过卡尔曼滤波更新其对应的Tracks变量。
(4)反复循环(2)-(3)步骤,直到视频帧结束。
#### Deepsort算法流程
由于sort算法还是比较粗糙的追踪算法,当物体发生遮挡的时候,特别容易丢失自己的ID。[该博客提出的方法在sort算法的基础上增加了级联匹配(Matching Cascade)和新轨迹的确认(confirmed)](https://afdian.net/item?plan_id=5db2f89862fd11eda8aa52540025c377)。Tracks分为确认态(confirmed),和不确认态(unconfirmed),新产生的Tracks是不确认态的;不确认态的Tracks必须要和Detections连续匹配一定的次数(默认是3)才可以转化成确认态。确认态的Tracks必须和Detections连续失配一定次数(默认30次),才会被删除。
Deepsort算法的工作流程如下图所示:
![5.png](c279a9fe26b6c3c735afe5b344dda0d1.png)
整个算法的工作流程如下:
(1)将第一帧次检测到的结果创建其对应的Tracks。将卡尔曼滤波的运动变量初始化,通过卡尔曼滤波预测其对应的框框。这时候的Tracks一定是unconfirmed的。
(2)将该帧目标检测的框框和第上一帧通过Tracks预测的框框一一进行IOU匹配,再通过IOU匹配的结果计算其代价矩阵(cost matrix,其计算方式是1-IOU)。
(3)将(2)中得到的所有的代价矩阵作为匈牙利算法的输入,得到线性的匹配的结果,这时候我们得到的结果有三种,第一种是Tracks失配(Unmatched Tracks),我们直接将失配的Tracks(因为这个Tracks是不确定态了,如果是确定态的话则要连续达到一定的次数(默认30次)才可以删除)删除;第二种是Detections失配(Unmatched Detections),我们将这样的Detections初始化为一个新的Tracks(new Tracks);第三种是检测框和预测的框框配对成功,这说明我们前一帧和后一帧追踪成功,将其对应的Detections通过卡尔曼滤波更新其对应的Tracks变量。
(4)反复循环(2)-(3)步骤,直到出现确认态(confirmed)的Tracks或者视频帧结束。
(5)通过卡尔曼滤波预测其确认态的Tracks和不确认态的Tracks对应的框框。将确认态的Tracks的框框和是Detections进行级联匹配(之前每次只要Tracks匹配上都会保存Detections其的外观特征和运动信息,默认保存前100帧,利用外观特征和运动信息和Detections进行级联匹配,这么做是因为确认态(confirmed)的Tracks和Detections匹配的可能性更大)。
(6)进行级联匹配后有三种可能的结果。第一种,Tracks匹配,这样的Tracks通过卡尔曼滤波更新其对应的Tracks变量。第二第三种是Detections和Tracks失配,这时将之前的不确认状态的Tracks和失配的Tracks一起和Unmatched Detections一一进行IOU匹配,再通过IOU匹配的结果计算其代价矩阵(cost matrix,其计算方式是1-IOU)。
(7)将(6)中得到的所有的代价矩阵作为匈牙利算法的输入,得到线性的匹配的结果,这时候我们得到的结果有三种,第一种是Tracks失配(Unmatched Tracks),我们直接将失配的Tracks(因为这个Tracks是不确定态了,如果是确定态的话则要连续达到一定的次数(默认30次)才可以删除)删除;第二种是Detections失配(Unmatched Detections),我们将这样的Detections初始化为一个新的Tracks(new Tracks);第三种是检测框和预测的框框配对成功,这说明我们前一帧和后一帧追踪成功,将其对应的Detections通过卡尔曼滤波更新其对应的Tracks变量。
(8)反复循环(5)-(7)步骤,直到视频帧结束。
# 7.准备YOLOv7格式数据集
[如果不懂yolo格式数据集是什么样子的,建议先学习一下该博客](https://mbd.pub/o/bread/Y5Wbm5Zw)。大部分CVer都会推荐用labelImg进行数据的标注,我也不例外,推荐大家用labelImg进行数据标注。不过这里我不再详细介绍如何使用labelImg,网上有很多的教程。同时,标注数据需要用到图形交互界面,远程服务器就不太方便了,因此建议在本地电脑上标注好后再上传到服务器上。
这里假设我们已经得到标注好的yolo格式数据集,那么这个数据集将会按照如下的格式进行存放。
![n.png](b5a81f82f8d6af35a8f284346b527a5f.png)
不过在这里面,train_list.txt和val_list.
没有合适的资源?快使用搜索试试~ 我知道了~
Python基于OpenCV的智能交通灯系统(南北车流量比例).zip
共11个文件
png:8个
py:2个
md:1个
0 下载量 85 浏览量
2024-08-28
13:08:15
上传
评论
收藏 5.51MB ZIP 举报
温馨提示
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:项目具体内容可查看/点击本页面下方的*资源详情*,包含完整源码+工程文件+说明(若有)等。【若无VIP,此资源可私信获取】 【本人专注IT领域】:有任何使用问题欢迎随时与我联系,我会及时解答,第一时间为您提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【适合场景】:相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可基于此项目来扩展开发出更多功能 #注 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担 2. 部分字体及插图等来自网络,若是侵权请联系删除,本人不对所涉及的版权问题或内容负法律责任。收取的费用仅用于整理和收集资料耗费时间的酬劳 3. 积分资源不提供使用问题指导/解答
资源推荐
资源详情
资源评论
收起资源包目录
Python基于OpenCV的智能交通灯系统(南北车流量比例).zip (11个子文件)
PythonDS937
28b589519f46fb619e634083b64003f4.png 2.15MB
c279a9fe26b6c3c735afe5b344dda0d1.png 185KB
Thread_1.py 6KB
8aeca50f5a27ea09a2314486f8c82306.png 130KB
a9453f738b534a27cad4bee2f631a8dc.png 122KB
9efd1dc903859a31c7a750ba5c460347.png 447KB
d71134333984cc4b85e2072201ca308e.png 2.13MB
train.py 38KB
d9f36647fe3652388980467ef1939ac4.png 269KB
README.md 56KB
b5a81f82f8d6af35a8f284346b527a5f.png 140KB
共 11 条
- 1
资源评论
热爱技术。
- 粉丝: 2633
- 资源: 7860
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功