基于YOLOv8的多端车流检测系统(用于毕设+开源)

目录

✨基于YOLOv8🚀的多端车流检测系统-MTAS (Multi-Platform Traffic Analysis System)

一、基本功能介绍

1、客户端 (pyside6+yolov8+pytorch)

 2、网页端(Vue3+Typestript+Python3+MySQL)

 3、创新点(毕设需要)

4、项目包(前端-游客端)

5、项目包(前端-管理端)

6、项目包(客户端+后端)

二、客户端环境配置⚒️

第一步 配置python环境🚀

第二步 下载库🚀

第三步 运行项目(如果不需要(开启网页端) 或 (对接RTSP))

三、配置前端环境(使用网页端)⚒️

四、使用开源项目+自定义功能借鉴📚

1、开源项目

2、自定义功能借鉴

附页:小白(小丑)开发历程【从入坑到放弃】

第一阶段

第二阶段(思路摸索)

第三阶段(动力满满的开始)

第四阶段(找前端项目)

第五阶段(乱改前端)

第六阶段(摆烂到放弃)

第七阶段(项目快写完时)

第八阶段(记录踩坑)

第九阶段(感谢大佬们与开源项目)

📝其他


✨基于YOLOv8🚀的多端车流检测系统-MTAS (Multi-Platform Traffic Analysis System)

一、基本功能介绍

👉系统可大体分为两大模块(客户端、网页端)

👉演示视频:

基于yolov8的多端检测系统_哔哩哔哩_bilibili基于yolov8的多端检测系统——客户端 & 网页端很感谢大佬们的悉心教导,有猫鱼大佬,邓晓楠大佬,北小菜大佬等等大佬们!大佬们,都是有问必答,并且十分有耐心,呜呜呜,太感动了!还有很多优秀的开源项目,太赞了!, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 电石QwQ, 作者简介 不甘寂寞,相关视频:YOLOv8-PySide-GUI调用摄像头(比PPT还卡!),若依vue前后端分离版——服务器使用docker快速部署(后端部分),pyqt-auto-tool自己乱改的自动化小工具,Dijkstra算法[用处+代码讲解],若依vue前后端分离版——服务器使用docker快速部署(前端部分——有域名版),KMP算法动画(next数组求值),若依vue前后端分离版——服务器快速部署(https),YOLOv8+LPRNet车牌定位与识别,线索二叉树[第二部分:代码讲解],校园生活记录——猫咪图鉴小程序颜色变量统一icon-default.png?t=N7T8https://www.bilibili.com/video/BV1iM4y1H78F

1、客户端 (pyside6+yolov8+pytorch)

  1. 可接受多方视频数据流进行车流分析(调用RTSP摄像头、本地摄像头、上传本地视频)

  2. 可对车辆进行单目追踪🚖

  3. 动态调节检测参数(交互比、置信度、延时、报警阈值)

  4. 检测的视频和数据可保存在本地

 2、网页端(Vue3+Typestript+Python3+MySQL)

  1. 多模式分析(用户上传+摄像头拍摄)

  2. 数据保存在数据库中(用户数据+检测数据)

  3. 可查看触发的警报记录🔔

  4. 响应式

 3、创新点(毕设需要)

  1. 结合了客户端+网页端(可多端操作)

  2. 动态调整检测参数(交互比、置信度、延时、报警阈值)

  3. 可检测出是否超出车流阈值(可对接报警模块)

  4. 检测可通过多种方式进行(视频流 / 照片)

  5. 系统等数据可进行保存(本地文件 / 数据库)

  6. 可视化车流(光流绘制)显示、可进行单目追踪、多目标跟踪(使用集成在yolov8中的bytetrack)

  7. 车流量可数据可视化(动态显示车流量)

4、项目包(前端-游客端)

MTAS-guest.zip - 蓝奏云文件大小:8.2 M|icon-default.png?t=N7T8https://wwwf.lanzout.com/iyzac14rlzed

5、项目包(前端-管理端)

MTSP-admin.zip - 蓝奏云文件大小:8.1 M|icon-default.png?t=N7T8https://wwwf.lanzout.com/ijbf014rlzva

6、项目包(客户端+后端)

MTSP-main.zip - 蓝奏云文件大小:16.9 M|icon-default.png?t=N7T8https://wwwf.lanzout.com/iAFRb14rm0kf

二、客户端环境配置⚒️

第一步 配置python环境🚀

  • 下载python(版本:python>=3.8)(建议使用访问Anaconda官网配置虚拟环境,具体步骤如下)

  • 1)访问Anaconda官网:Free Download | Anaconda

  • 2)选择相应的操作系统版本并下载对应的安装包(推荐下载64位版本)

  • 3)打开下载的安装包,按照提示进行安装即可

  • 4)创建一个虚拟环境:

  • conda create --name 自命名 python=3.9.16

第二步 下载库🚀

注意:下载库前,如果想要更好的帧数体验请安装cuda版本哦

(因为一般默认会安装cpu的版本)

  • pip换源:

  • pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  • 切换到项目文件夹下,下载依赖:

  • pip install -r requirements.txt
  • 我自己使用的环境:python3.9+CPU

第三步 运行项目(如果不需要(开启网页端) 或 (对接RTSP))

  • 可直接运行项目:python main.py

🚀如果需要使用RTSP:

  • 推荐手机安装app——IP摄像头

  • 如果要用电脑进行推流,可以采用zlm

🚀如果需要使用网页端:

  • 可参考下面的配置说明

注意

环境配置好后,如果无法正常启动,请用debug开启

ps:具体原因,俺也不知道为什么,有大佬知道的,可以留个言(感谢)


网页端(为响应式的),需要修改方面说明之类的,后面再说吧~


🚀配置后端(如果你需要使用网页端的话):

1、导入数据表


2、修改配置文件

3、启动后端

python app.py

🔔 注意:配置文件都在config文件夹下啦

 config.txt里面的注释是config.json的(因为json文件不能写注释)

这里也算是踩坑点,下次使用env或者yaml作为项目的配置文件格式!

  • config.json:

{"iou": 0.35,    // 交互比"conf": 0.59,   // 置信度"rate": 0.01,   // 延时"save_res": true,    // 是否保存 结果"save_txt": true,    // 是否保存 标签"save_res_path": "pre_result",    // 保存路径"save_txt_path": "pre_labels",    // 保存路径"models_path": "models",    // 模型存放路径"open_fold": "D:/",         // 打开文件夹路径"show_trace": false,        // 是否显示轨迹"show_labels": true,        // 是否显示标签"rtsp_ip": "rtsp://127.0.0.1:554/live/test",      // RTSP路径"car_id": "1",              // 追踪 id"car_threshold": 8          // 车辆阈值
}
  • endback.env:
#---------------------------------------------------服务器配置HOST_NAME=127.0.0.1        # 主机名
PORT=5500                  # HTTP服务端口
TOLERANT_TIME_ERROR=60     # 调用接口时附带的时间戳参数与服务器时间之间的最大允许误差(单位:s)BEFORE_IMG_PATH=before_img        # 图片存储命名 ※※※
AFTER_IMG_PATH=after_img#---------------------------------------------------数据库配置MYSQL_HOST=127.0.0.1          # SQL主机
MYSQL_PORT=3306               # 连接端口
MYSQL_user=root               # 用户名
MYSQL_password=123456         # 密码
MYSQL_db=yolo                 # 数据库名
MYSQL_charset=utf8            # utf8

三、配置前端环境(使用网页端)⚒️

🚀第一步 配置npm与下载依赖

  • 下载node.js(我使用的是v16.16.0版本的)

  • 注意:如果后面前端无法正常发出请求,那么可能是版本问题,可以尝试换成和我一样的版本,尤其是v18.0.0以上node,容易出现这种问题

  • npm换源:

  • npm config set registry https://registry.npm.taobao.org
  • 切换到项目文件夹下,下载依赖:

  •  npm install

🚀第二步 运行前端

  •  npm run dev

🔔 注意:两个前端都是这样启动的哟~

四、使用开源项目+自定义功能借鉴📚+关于项目的问题

1、开源项目

💎客户端:https://github.com/CatfishW/MOT & https://github.com/Jai-wei/YOLOv8-PySide6-GUI

💎前后端:https://github.com/Dovahkiin-Ming/Personnel-Flow-Monitoring-System-based-on-YoloV5

💎 摄像头视频流直接在浏览器播放:实现浏览器播放HLS和HTTP-FLV视频流,并实现摄像头视频流直接在浏览器播放_哔哩哔哩_bilibili

💎开源视频行为分析系统,系统实现了实时分析视频流,实时产生报警视频,实时推流:开源视频行为分析系统,系统实现了实时分析视频流,实时产生报警视频,实时推流_哔哩哔哩_bilibili

💎前端:风神的博客(链接未找到)

2、自定义功能借鉴

👍动态车流量图美化:4个Python库来美化你的Matplotlib图表! - 知乎

👍网页端摄像头拍照:VUE实现调用摄像头和拍照功能_vue.js_南京李市民先生-华为云开发者联盟

👍网页端拉取多个视频流:(http-mp4,http-flv等,这种基于http传输,最多只支持6个;本项目采用ws-mp4,即可实现多个分屏)

ps:链接写的不全,总之,衷心感谢大佬们的开源🌹🌹🌹

3、项目问题(必看)🌟🌟🌟

关于配置:

  1. 配置环境中,有一个lap,在pip安装时,需要下载一个东西,根据报错提示中的链接,去下载就好了:【python】安装模块lap出错: error: Microsoft Visual C++ 14.0 or greater is required._lap库安装失败-CSDN博客
  2. 如果你预测失败,多半是yolo版本问题,需要你自己根据报错修改一下,还有关于其他库,就是opencv版本(或者其他库,比如sv等)不一样,根据报错的库名,卸载重新安装对应版本
  3. 此项目的main_window的ui文件是没有的,用猫鱼老哥的开源改的,他当时就没有用ui文件。直接手写了,然后我也只好手写ui了。

关于训练模型+预测:(如何训练模型——我之前写过一篇文章,可以翻翻前面的看看)

  1. 如果训练版本使用的是和预测版本一样的话,就可以直接用
  2. 要用自己训练的那个yolo版本的话,那么预测项目里面yolo版本就换为你训练的那个版本(不过可能有api改了,但是一般改动不大,自行根据报错修改就好了)

关于使用CUDA

  1. cuda版本的pytorch,需要自己根据项目的注释和报错修改就好了
  2. 因为使用了CUDA,他预测返回的数据格式和之前的不一样,建议自行打印出来,根据数据找到自己需要数据,就可以啦~

附页:小白(小丑)开发历程【从入坑到放弃】

第一阶段(初始阶段)

1、最先开始,我去修改好了大佬的开源项目(客户端),其实就差不多

2、然后看见了网上有个好兄弟开源了网页版的,我就想再加一个网页端(花了1天差不多实现了)借鉴大佬们的开源

3、其实这样,差不多也可以混一个毕设了(滑稽.jpg)

  • 客户端是:Python+PySide+yolov8
  • 网页端的前端是:vue3+TS
  • 后端是:Python+Flask

第二阶段(思路摸索)

2.1、又在b站上看见了一个大佬搞的网页端的识别网站,并且也开源了,还可以从网页端拉流播放等等,俺大受启发(心里就一直构思实现方案)

大佬主页:北小菜的个人空间-北小菜个人主页-哔哩哔哩视频

然后写了如下思路:

  1. 工作人员通过前端配置rtps来进行拉流,展示到前端
  2. 他可以选择开启服务,或者关闭服务,如果开启服务,就发送请求给服务器,让后端拉流,进行处理,并且把结果返还给前端(但是这个有延时,俺目前想法是,用前端轮寻,或者长轮训,或websocket,但是俺觉得轮训简单,其他的没有搞过,轮训只需要给请求设置一个定时器就好了,这里想请教大佬,用什么比较好)
  3. 开启之后,工作人员就可以来监视面板中看见所有设置的画面,每个画面下面配上对应的信息(服务器定时返回的信息)【类似多种卡片在一个屏幕的效果】
  4. 大致页面有二个——①配置页面(可以配置视频+是否开启检测)——②监视面板(每个卡片里面有对应信息,点击则跳出弹窗,可调整对应的信息,比如:预测关闭与开启,删除,停止拉流等)

第三阶段(动力满满的开始)

  • 反正,就是不去搞搞的话,手就十分的痒
  • 于是就火急火燎的开始找相关的开源项目,着急想去实现心里所想的功能(那个时候,后端就想的是继续沿用Python的Flask)
  • 虽然我对音视频方面的开发一窍不通,但是有大佬已经跑通的示例,我也没有太多担心的
  • 反正有抱着学习的心态,觉得搞不懂了,再去请教大佬,然后看视频学习,也可以继续搞,所以那个时候动力满满!

第四阶段(找前端项目)

  • 对我来说,首先要去实现前端的拉流,然而我也没有搞过什么前端,所以前端是个重任
  • 虽然,之前我已经改好了一个前端,对接好了Flask,可以进行简单的图片识别,但是本着学习和提升的心态,想找几个好的前端项目,学习学习
  • 第一想法就是把若依vue3的后端管理系统页面搬到原来的图片识别项目里面,集成到一起
  • 但我没有搞过若依的vue3,以为不难,但是当我搬的时候,才发现是真滴麻烦(搬了一个多小时,呜呜呜)
  • 于是,我开始寻找其他的前端项目(主要是想用vue3+TS)我当时非常搞笑的是,我对TS还是完全一个小白,但就是非常想用TS写,头是真滴铁(结果后面给自己挖坑,唉)
  • 找了差不多一个早上,没有找到,于是乎,自己就想着改造若依vue3,所以,我就开始大刀阔斧的开始魔改起来

第五阶段(乱改前端)

  • 因为若依vue3是对接的java后端,很多东西我都不需要,我就开始使劲删东西
  • 删着删着,发现这个玩意嵌套的东西和关联的东西还挺多,动不动就报错!
  • 这些报错,有点搞俺的心态(不过,究其根本,是俺学艺不精,唉!)
  • 于是乎,俺就懒得删了,直接凑合着用,反正可以实现我的功能就行了
  • 然后,我就开始写死路由,乱改页面
  • 不过,让我这个强迫症难受的是,编译器会给你爆红,因为TS,他需要像java,C++那样定义类型
  • 但我就是不管,直接开摆,虽然你到处爆红,不过还是可以跑的嘛,毕竟到最后都是变成js运行的嘛(心态值-10)

第六阶段(摆烂到放弃)

  • 我就在前端写一个页面,写好之后就开始用python写后端做数据处理,然后再把数据返还回去
  • 按照这个流程,当我写完登录接口的时候还好(刚刚开始搞,动力还行)
  • 当我写完视频流的表单接口时
  • 我就发现这个好像不太对劲唉,和Java比起来有点麻烦呀(准确的说,是十分麻烦!)
  • 当时就有点后悔,但觉得麻烦一点也无所谓了,我反正就写一个简单的功能而已(这时候已经开摆了)
  • 但是我越写,我心里就越想着JAVA那个叫一个方便,用着多么的舒服
  • 因为若依框架太香了,直接一键生成代码,操作熟练的话,几分钟不到,前端+后端的增删改查,完美搞定!
  • 再回头来,看看Python,增删改查,一个个手写,呜呜呜,好难受!(心态值-100)
  • 完了,写着写着心态炸了,我就开始疯狂摆烂
  • 增删改查的接口都不写全,只要能完成我的整个业务演示就行了

第七阶段(项目快写完时)

  • 结果,昨天看见了一个Java对接FFmpeg的开源项目,我心态爆炸!(心态值-1000)
  • 我恍然大悟,我完全可以Java搞业务流程,实现数据的增删改查,网页端单独拉流预览
  • 再用Python单独查询数据库,然后根据数据库的表单信息,进行拉流,处理视频流
  • 这样不就可以了么??

第八阶段(记录踩坑)

  • 写到这里,我太阳穴好痛,我感觉的低血压都要治好了!
  • 记录时间:2023年8月1日19:57:17
  • 我今天下午大概4点完成的,唉,虽然心里挺快活,但是遇到了这些坑,俺还是有点无语唉(在此记录,引以为戒!)

第九阶段(感谢大佬们与开源项目)

  • 很感谢大佬们的悉心教导,有猫鱼大佬,邓晓楠大佬,北小菜大佬等等大佬们!
  • 大佬们,都是有问必答,并且十分有耐心,呜呜呜,太感动了!
  • 还有很多优秀的开源项目,太赞了!

猫鱼:猫鱼CatfishW的个人空间-猫鱼CatfishW个人主页-哔哩哔哩视频

邓晓楠:邓晓楠的个人空间-邓晓楠个人主页-哔哩哔哩视频

北小菜:北小菜的个人空间-北小菜个人主页-哔哩哔哩视频


🏠 B站主页:电石QwQ的个人空间-电石QwQ个人主页-哔哩哔哩视频

🔖CSDN:Pan_peter_Python,数据库,Java-CSDN博客

📌更多毕设:毕设项目 · 网址汇总 · 看云

📝其他

  • 本项目后面可能要对接数据库,后面再修改就比较麻烦了📦

🔰系统方面的拓展:

  • 商场人流检测 🏃

  • 道路路障检测 🚧

  • 疲劳驾驶检测 🚖

🔔系统的问题:

  • 预测速度慢,部署问题(fps、cuda、onnx)

  • 调用摄像头后无法释放控制权

  • 单目标追踪有问题(开启与关闭)

  • 用户交互

  • 未对接报警模块(比如:加语音提示 or 邮件 or 数据库记录)

  • 未加入数据分析(比如:收集每天时间段,各种车辆的流量,分析出哪些时间段,哪种车型的流量比较大)

  • 拉流存在延迟(延迟较大)

  • 多线程有问题(数据可视化线程)

  • 前后端接口不全

  • 拉流有问题(时不时会断)

  • 前端一堆问题(不提了,自己挖的坑)

🎉系统的简单技术脑图

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABAP - SALV教程08 列设置热点及绑定点击事件

实现思路:将列设置成热点,热点列是可点击的,再给SALV实例对象注册点击事件即可,一般作用于点击单号跳转到前台等功能 "设置热点方法METHODS:set_hotspot CHANGING co_alv TYPE REF TO cl_salv_table...."事件处理方法M…

python 使用curl_cffi 绕过jax3指纹-Cloudflare 5s盾

现在越来越多的网站已经能够通过JA3或者其他指纹信息,来识别你是不是爬虫了。传统的方式比如换UA,加代理是没有任何意义了,所以这个时候我们就需要使用到curl_cffi 了。 1.TLS 指纹是啥? 在绝大多数的网站都已经使用了 HTTPS&am…

微信小程序触屏事件_上划下划事件

一、微信小程序触屏事件 bindtouchstart:手指触摸动作开始 bindtouchmove:手指触摸后移动 bindend:手指触摸动作结束 属性类型说明touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组 Touch 对象 属性类型说明identi…

【Excel】【正则】判断手机号是否正确

发现导出的手机号,有部分存在问题,故想直接通过excel做正则的判断 先说结论:通过VBA实现了正则函数的嵌入,但实际效率非常低下,80万的数据跑了半小时(T14 十代i7) 参考文章:正则表…

点云数据结构化与体素化理论学习

一、PCD点云数据存储格式的进一步认识 (一)PCD点云存储格式相较于其它存储格式(如PLY、STL、OBJ、X3D等)的优势[1] (1)具有存储和处理有组织的点云数据集的能力,这对于实时应用和增强现实及机器…

主网NFT的发布合约

1.什么是nft? NFT:Non-fungible-token 非同质化货币 2.新建suimove项目 使用sui move new 项目名命令新建sui move项目 sui move new nft_qyx项目结构如下: 3.写nft合约 module qyx123::nft{use sui::object::{Self, UID};use sui::transfer;use sui::tx_context::{Sel…

Elasticsearch搜索引擎

目录 初识elasticsearch 了解ES 什么是elasticsearch elasticsearch的发展 搜索引擎技术排名: 总结 倒排索引 正向索引和倒排索引 正向索引 倒排索引 总结 es的一些概念 文档 索引 概念对比 架构 总结 安装es,kibana 安装es 安装kiba…

Javaweb之SpringBootWeb案例之自动配置的原理分析的详细解析

3.2.3 原理分析 3.2.3.1 源码跟踪 前面我们讲解了在项目当中引入第三方依赖之后,如何加载第三方依赖中定义好的bean对象以及配置类,从而完成自动配置操作。那下面我们通过源码跟踪的形式来剖析下SpringBoot底层到底是如何完成自动配置的。 源码跟踪技巧…

技术阅读周刊第十四期:常用的 Git 配置

技术阅读周刊,每周更新。 历史更新 20231122:第十一期20231129:第十二期20240105:第十三期:一些提高生产力的终端命令20240112:第十四期:Golang 作者 Rob Pike 在 GopherConAU 上的分享 How I w…

第19章-IPv6基础

1. IPv4的缺陷 2. IPv6的优势 3. 地址格式 3.1 格式 3.2 长度 4. 地址书写压缩 4.1 段内前导0压缩 4.2 全0段压缩 4.3 例子1 4.4 例子 5. 网段划分 5.1 前缀 5.2 接口标识符 5.3 前缀长度 5.4 地址规模分类 6. 地址分类 6.1 单播地址 6.2 组播地址 6.3 任播地址 6.4 例子 …

计算机网络(4)----局域网与广域网

目录 1.局域网 (1)局域网拓扑结构 (2)局域网的传输介质 (3)局域网介质访问控制方法 (4)局域网的分类 (5)IEEE 802标准 (6)MAC子层与LLC子层 (7)常用的局域网技术---以太网 (8)以太网传输介质与拓扑结构的发展 (9)常用的以太网---10BASE-T以太网 (10)适配器与MAC地址…

SMBGhost漏洞技术分析与防御方案

事件分析 最近国内外各安全厂商都发布了SMBGhost(CVE-2020-0796)漏洞的预警报告和分析报告,笔者利用周末休息时间也研究了一下,就算是做一个笔记了,分享给大家一起学习下,目前外面研究的POC大部分是通过SMB压缩数据包长度整数溢出…