# 基于云边协同的车流量分析系统 **Repository Path**: smalling56345/cloud-edge_cooperative_vehicle_flow_analytics_system ## Basic Information - **Project Name**: 基于云边协同的车流量分析系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 17 - **Created**: 2025-12-16 - **Last Updated**: 2025-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于云边协同的车流量分析系统 ## 项目简介 随着城市化进程加速与智能交通系统发展,传统交通监控系统面临信息获取成本高、数据处理效率低、实时性不足等问题。本项目设计并实现了一套基于云边协同架构的车流量分析系统,充分融合边缘计算的低延迟特性与云计算的强算力优势,实现对车流量的高效、精准分析,为交通管理、城市规划及道路安全提供数据支撑,同时响应国家信创战略,采用国产化硬件设备保障数据安全与技术自主可控。 **系统核心实现算法层协同与系统层协同:** - **算法层:** 边缘端完成车辆检测与跟踪,云端专注车牌识别与数据分析,两端分工协作提升处理效率; - **系统层:** 云边两端均提供可视化操作界面,支持用户灵活操作与实时监控,适配不同使用场景需求。 ## 项目架构 ### 总体架构 系统围绕边端、云端及云边交互三大核心模块构建,整体架构如下: ``` 摄像头 → 边端(华为Atlas设备)→ 数据传输(Socket/FTP)→ 云端(本地电脑)→ 数据库存储与分析 ``` #### 1. 边端模块 - **硬件载体:** 华为 Atlas 300I 推理卡(基于昇腾 310 芯片,8TOPS INT8 算力,支持 80 路高清视频解码); - **核心功能:** 视频流实时获取、车辆检测(Yolov8)、目标跟踪(SORT)、车流量计数、关键数据本地缓存; - **数据输出:** 车辆图片、车辆类别、车辆 ID、检测时间等核心信息。 #### 2. 云端模块 - **硬件载体:** 本地电脑(模拟云端服务器); - **核心功能:** 接收边端数据、车牌检测(Yolov8 训练模型)、字符识别(PaddleOCR)、数据库存储与管理、数据查询与可视化分析; - **数据输出:** 车牌号码、识别置信度、车流量统计图表、历史数据查询结果。 #### 3. 云边交互模块 - **传输协议:** 支持 Socket(TCP 协议)与 FTP 两种传输方式,根据网络环境灵活选择(FTP 在网络不稳定时鲁棒性更优); - **传输内容:** 边端缓存的车辆图片及相关元数据(类别、ID、检测时间等); - **核心保障:** 确保数据传输的实时性、完整性与安全性,避免数据丢失或泄露。 ## 核心技术栈 ### 硬件设备 | 设备名称 | 型号 | 核心参数与优势 | | :----------- | :-------------- | :----------------------------------------------------------- | | 边缘计算设备 | 华为 Atlas 300I | 昇腾 310 芯片,8TOPS 算力,32GB LPDDR4 显存,支持 80 路高清视频解码,国产化自主可控 | | 云端服务器 | 本地电脑 | 提供充足算力支持车牌识别、数据库运算与可视化展示 | | 数据采集设备 | 网络摄像头 | 支持 RTSP 协议,实时输出视频流 | ### 软件与算法 | 技术类别 | 核心技术 / 工具 | 应用场景与作用 | | :----------- | :----------------------------- | :---------------------------------------------- | | 开发语言 | Python 3.6 | 系统核心开发语言,适配边缘端环境 | | 开发工具 | PyCharm、Navicat、Qt Designer | 代码开发、数据库管理、界面设计 | | 边缘计算框架 | 华为 CANN、PyACL | 昇腾芯片适配,实现模型转换与推理 | | 目标检测算法 | Yolov8 | 边端车辆检测、云端车牌检测,高精度与高效率兼顾 | | 目标跟踪算法 | SORT | 视频流中车辆持续跟踪,分配唯一 ID,避免重复计数 | | 字符识别工具 | PaddleOCR(PaddlePaddle 平台) | 车牌字符提取与识别,支持中文车牌精准识别 | | 数据库技术 | MySQL | 存储车辆检测数据、车牌识别结果等核心信息 | | 可视化框架 | PyQt5 | 云边两端可视化界面开发,支持交互操作 | | 数据传输协议 | Socket(TCP)、FTP | 云边数据交互,保障传输可靠性 | | 系统环境 | Windows 11、麒麟系统 | 云端 Windows 环境,边端适配麒麟国产系统 | ## 功能说明 ### 边端功能 1. **视频流接入:** 支持通过 RTSP 协议接入网络摄像头视频流,实时获取道路画面; 2. **车辆检测与跟踪:** - 基于 Yolov8 算法检测车辆,支持识别 5 类车型(汽车、卡车、公交车、自行车、摩托车); - SORT 算法实现车辆连续跟踪,分配唯一 ID,避免跨帧重复计数; 3. **车流量计数:** 统计指定区域内通行车辆总数,实时显示在界面上; 4. **数据缓存与上传:** 检测结果(图片 + 元数据)本地缓存,通过 Socket/FTP 上传至云端; 5. **可视化操作:** 支持模型初始化、开始 / 暂停 / 结束检测、RTSP 地址配置等操作。 ### 云端功能 1. **数据接收:** 兼容 Socket 与 FTP 两种传输协议,自动接收边端上传的数据; 2. **车牌识别:** - 基于 Yolov8 训练的车牌检测模型,精准定位车牌位置(支持蓝牌、黄牌、绿牌); - PaddleOCR 字符识别,提取车牌号码,输出识别置信度; 3. **数据库管理:** - 存储字段:车辆 ID、车辆类型、车牌号码、识别置信度、检测时间、车辆图片路径; - 核心操作:数据插入、全量导出、按时间查询、按车牌地区筛选(如晋 A 开头车辆); 4. **数据可视化:** - 支持生成指定时间段内车流量趋势折线图(每半小时统计一次); - 检测结果实时展示(车牌号码、置信度、目标位置坐标); - 扩展功能:支持单张图片检测、批量文件夹检测、视频流车牌检测三种模式。 ## 环境搭建 ### 边端环境搭建 1. **硬件准备** - 华为 Atlas 300I 推理卡及配套开发者套件; - 网络摄像头(支持 RTSP 协议,配置固定 IP 地址)。 2. **系统与依赖安装** - 操作系统:安装麒麟国产系统; - Python 环境:编译安装 Python 3.6(适配 Atlas 设备生态,避免 Python 3.8+ 的兼容性问题); - 核心依赖库: bash ``` # 基础依赖 pip install opencv-python numpy pyqt5 # 昇腾芯片适配依赖 pip install pyacl # 华为CANN平台Python API # 算法依赖 pip install ultralytics # Yolov8官方库 ``` - 模型转换工具:使用 Atlas 设备自带的 ATC(Ascend Tensor Compiler)工具,用于将 ONNX 模型转换为 OM 模型(适配昇腾芯片推理)。 3. **模型准备** - 下载 Yolov8 预训练模型(.pt 格式),通过 PyTorch 转换为 ONNX 格式: python ``` from ultralytics import YOLO model = YOLO('yolov8n.pt') model.export(format='onnx', input_shape=(1,3,640,640)) # 导出ONNX模型 ``` - 通过 ATC 工具将 ONNX 模型转换为 OM 模型(在 Atlas 设备 root 用户下执行): bash ``` atc --model=./yolov8.onnx --framework=5 --input_format=NCHW --input_shape="images:1,3,640,640" --output=./yolov8 --soc_version=Ascend310 ``` ### 云端环境搭建 1. **系统与依赖安装** - 操作系统:Windows 11; - Python 环境:Python 3.8+; - 核心依赖库: bash ``` # 基础依赖 pip install opencv-python numpy pyqt5 pandas matplotlib # 算法依赖 pip install ultralytics paddlepaddle paddleocr # 数据库依赖 pip install mysql-connector-python ``` 2. **模型准备** - 车牌检测模型:基于 Yolov8 训练自定义车牌数据集(16770 张图片,含蓝牌、黄牌、绿牌),生成车牌检测模型(.pt 格式); - 字符识别模型:从 PaddleOCR 官方仓库下载预训练中文识别模型(方向分类器 + 文本识别模型),直接加载使用。 3. **数据库配置** - 安装 MySQL 数据库(推荐 8.0 版本),通过 Navicat 创建数据库 `traffic_flow`; - 创建数据表 `cardect`,字段设计如下: sql ``` CREATE TABLE cardect ( id INT AUTO_INCREMENT PRIMARY KEY, car_type VARCHAR(20) NOT NULL COMMENT '车辆类型', conf FLOAT NOT NULL COMMENT '识别置信度', plate_num VARCHAR(20) COMMENT '车牌号码', gather_time DATETIME NOT NULL COMMENT '检测时间' ); ``` - 配置数据库连接信息(在云端代码中修改): python ``` db_config = { 'user': 'root', 'password': 'your_password', 'host': 'localhost', 'database': 'traffic_flow' } ``` ## 使用教程 ### 边端操作步骤 1. **启动设备:** 开启华为 Atlas 300I 设备,确保网络与摄像头正常连接; 2. **启动边端程序:** ``` python main_track.py ``` 3. **界面操作:** - 输入 RTSP 地址:在弹出的输入框中填写网络摄像头的 RTSP 流地址(格式:`rtsp://username:password@ip:port`); - 初始化模型:点击「初始化模型」按钮,加载 OM 格式的 Yolov8 检测模型; - 开始检测:点击「摄像头检测」按钮,实时显示视频流、车辆检测框、车辆 ID 及车流量计数; - 暂停 / 结束:根据需求点击「暂停 / 继续」或「结束检测」,结束后自动缓存数据至本地。 4. **数据上传:** 检测过程中,系统自动通过配置的传输协议(Socket/FTP)将数据上传至云端,可在界面查看上传状态。 ### 云端操作步骤 1. **启动云端程序:** ``` # 启动云端主程序 python main.py ``` 2. **界面操作:** - **数据接收:** 自动接收边端上传的数据,无需手动操作; - **车牌检测:** - 单张图片检测:点击「请选择图片文件」,选择本地车辆图片,自动输出车牌识别结果; - 批量检测:点击「图片文件夹检测」,选择边端上传的图片文件夹,批量完成车牌识别; - **数据存储:** 点击「保存」按钮,将检测结果存入 MySQL 数据库; - **数据查询:** - 按时间查询:点击「按时间查询」,选择起始时间与结束时间,查询指定时段的车流量数据; - 按车牌地区查询:在查询框中输入车牌前缀(如「晋 A」),结合时间范围筛选特定地区车辆; - **可视化分析:** 点击「车流统计」,生成指定时段内的车流量趋势折线图,支持直观查看车流波动。 ## 关键技术细节 ### 1. 边端模型部署优化 - **模型转换:** 通过 ATC 工具完成 PT→ONNX→OM 的格式转换,适配昇腾芯片的 NPU 加速; - **多线程处理:** 采用 ThreadedCamera 类单独处理视频流读取,避免单线程卡顿; - **目标跟踪:** 基于 SORT 算法(卡尔曼滤波 + 匈牙利算法),为每个车辆分配唯一 ID,解决跨帧关联问题。 ### 2. 车牌识别优化 - **数据集增强:** 训练集包含不同天气(晴、雨、雾)、不同角度的车牌图片,提升模型鲁棒性; - **损失函数:** 采用 DFL(分布式焦点损失)+ BCE(分类损失)+ CIoU(回归损失),提升车牌定位精度; - **字符识别:** 使用 PaddleOCR v4中文模型,支持车牌字符(含省份简称、字母、数字)的精准识别,识别准确率达 98% 以上。 ### 3. 数据传输选择 | 传输方式 | 优势 | 劣势 | 适用场景 | | :--------- | :--------------------- | :----------------- | :--------------------- | | **Socket** | 传输延迟低,实时性强 | 网络不稳定时易丢包 | 网络带宽充足、稳定环境 | | **FTP** | 鲁棒性强,支持断点续传 | 延迟略高于 Socket | 网络波动较大的环境 | ## 常见问题排查 - **边端模型初始化失败:** 1. 检查 OM 模型文件是否存在,ATC 转换命令是否正确; 2. 确认 PyACL 库安装成功,昇腾驱动版本与设备兼容。 - **数据传输失败:** 1. 检查网络连接,确认云端服务已启动; 2. 排查防火墙是否拦截端口,Socket/FTP 端口是否被占用。 - **车牌识别准确率低:** 1. 检查输入图片是否清晰,避免遮挡、模糊等情况; 2. 重新训练车牌检测模型,扩大数据集覆盖范围。 - **数据库连接失败:** 1. 验证数据库配置(用户名、密码、地址)是否正确; 2. 确认 MySQL 服务已启动,远程访问权限已开启。 ## 项目成果 - **功能完整性:** 实现车流量检测、跟踪、车牌识别、数据存储、查询与可视化全流程; - **国产化适配:** 基于华为 Atlas 设备实现核心算法部署,摆脱对国外硬件依赖,保障数据安全; - **实用性:** 提供友好的可视化界面,支持交通管理部门快速上手,适配实时监控与离线分析场景。 ## 边端结果展示 ![a0ff17ef64add7dcfff034628513e108](F:\xwechat_files\wxid_usemmv0xqcm522_2144\temp\RWTemp\2025-12\a0ff17ef64add7dcfff034628513e108.png) ## 云端结果展示 ![image-20251215230039729](C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20251215230039729.png) ![image-20251215230047857](C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20251215230047857.png) ![image-20251215230056146](C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20251215230056146.png) ## 未来展望 1. **功能扩展:** - 边端增加车辆违规检测(如闯红灯、逆行)、事故识别功能; - 云端引入车流预测算法(如 LSTM、Transformer),支持未来时段车流趋势预测; 2. **性能优化:** - 优化边端模型推理延迟,提升实时性; - 引入 5G 传输技术,解决带宽限制导致的数据传输瓶颈; 3. **生态适配:** - 适配更多国产化边缘设备,扩展硬件支持范围; - 完善开发者生态,提供模型训练、部署的标准化工具链; 4. **场景延伸:** - 与智能交通信号系统对接,实现车流自适应调度; - 融入智慧城市生态,与智能停车、公共交通调度系统协同工作。