news 2026/8/31 4:58:30

【计算机毕业设计】基于深度学习的智能交通流量预测 Web 系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【计算机毕业设计】基于深度学习的智能交通流量预测 Web 系统

基于深度学习的智能交通流量预测 Web 系统

一、项目简介

基于 PDFormer(Transformer 架构)的多元时间序列交通流量预测系统,提供完整的 Web 管理界面,支持历史数据查询、流量预测、统计分析及系统管理功能。

二、技术栈

层级技术
后端框架Python FastAPI
数据库 ORMSQLAlchemy 2.x
数据库MySQL 8.x(utf8mb4)
身份认证JWT(python-jose) + bcrypt
预测模型PDFormer(PyTorch)
前端原生 HTML / CSS / JavaScript
图表ECharts 5

三、项目结构

web_app/ ├── .env# 本地环境变量(数据库密码等)├── requirements.txt# Python 依赖├── import_dyna.py# 历史交通数据批量导入工具├── database/ │ └── init.sql# 数据库建表 + 初始化数据脚本├── backend/ │ ├── main.py# FastAPI 入口,路由挂载,静态文件服务│ ├── config.py# 全局配置(读取 .env)│ ├── database.py# SQLAlchemy 引擎与会话│ ├── core/ │ │ ├── security.py# 密码哈希、JWT 生成/解析│ │ └── deps.py# FastAPI 依赖注入(DB会话、当前用户)│ ├── models/# SQLAlchemy ORM 模型│ │ ├── user.py# 用户表│ │ ├── traffic.py# 数据集、传感器、历史流量表│ │ └── prediction.py# 预测记录、预测结果表│ ├── schemas/# Pydantic 请求/响应模型│ │ ├── user.py │ │ ├── traffic.py │ │ └── prediction.py │ ├── services/# 业务逻辑层│ │ ├── auth_service.py# 注册、登录、初始化管理员│ │ ├── traffic_service.py# 数据集、传感器、历史查询、统计│ │ └── prediction_service.py# 模型推理(含模拟模式回退)│ └── routers/# API 路由层│ ├── auth.py# /api/auth/*│ ├── users.py# /api/users/*│ ├── traffic.py# /api/traffic/*│ ├── models.py# /api/models/*│ └── predictions.py# /api/predictions/*└── frontend/ ├── login.html# 登录 / 注册页├── index.html# 首页 Dashboard├── pages/ │ ├── history.html# 历史交通数据查询│ ├── prediction.html# 交通流量预测│ ├── stats.html# 道路未来车流量统计│ └── admin/ │ ├── users.html# 用户管理(管理员)│ ├── data.html# 数据管理(管理员)│ ├── models.html# 模型管理(管理员)│ └── pred_records.html# 预测记录管理(管理员)└── static/ ├── css/style.css# 全局样式└── js/ ├── api.js# 前端 API 请求封装└── utils.js# 工具函数(认证、格式化、省略号分页等)

四、环境要求

  • Python 3.8 及以上
  • MySQL 8.0 及以上
  • 已训练好的 PDFormer 模型权重文件(可选,无则自动使用模拟模式)

五、快速启动

第一步:初始化数据库

使用任意 MySQL 客户端执行:

sourceweb_app/database/init.sql

该脚本会自动创建traffic_predict数据库及所有表,并写入数据集、传感器节点、模型的初始数据。

第二步:配置环境变量

web_app/目录下创建.env文件:

DB_HOST=localhostDB_PORT=3306DB_USER=rootDB_PASSWORD=你的MySQL密码DB_NAME=traffic_predictSECRET_KEY=traffic-predict-secret-key-2026-jayADMIN_PASSWORD=Admin@2026

ADMIN_PASSWORD是系统首次启动时自动创建的管理员密码,用户名固定为admin

第三步:安装 Python 依赖

pipinstall-rrequirements.txt

第四步:导入历史交通数据

系统自带 **批量导入工具 **import_dyna.py,支持将原始数据文件导入 MySQL,需在web_app/目录下执行:

# 导入 PeMS04(307个传感器,约521万条,2~3分钟)python import_dyna.py PeMS04# 快速演示:只导入前30个传感器(约51万条,~20秒)python import_dyna.py PeMS0430# 导入 CHIBike(270个网格节点,约119万条,~1分钟)python import_dyna.py CHIBike# 导入 PeMS07 / PeMS08python import_dyna.py PeMS07 python import_dyna.py PeMS08

支持的原始数据文件位于MTFormer/raw_data/下,CHIBike 使用.grid网格格式,其余数据集使用.dyna点传感器格式。

各数据集原始数据量:

数据集格式节点数采样间隔数据量
PeMS04.dyna(点传感器)3075 分钟约 521 万条
PeMS07.dyna(点传感器)8835 分钟约 1500 万条
PeMS08.dyna(点传感器)1705 分钟约 290 万条
CHIBike.grid(网格)270(15×18)30 分钟约 119 万条

第五步:启动服务

web_app/目录下执行:

uvicorn backend.main:app--host0.0.0.0--port8000--reload

启动成功后访问:http://localhost:8000

六、默认账号

用户名密码角色
adminAdmin@2026管理员

七、功能说明

登录 / 注册

  • 支持新用户自主注册,填写用户名、邮箱、密码即可
  • 登录后系统签发 JWT Token,存储于浏览器 localStorage,后续所有请求自动携带
  • Token 有效期 24 小时,过期后自动跳转回登录页
  • 管理员账号由系统启动时自动创建,普通用户注册后默认角色为"用户"

首页 Dashboard

  • 顶部展示四项核心统计指标:注册用户数、已接入数据集数、历史流量记录总条数、累计预测次数
  • 展示当前激活模型的名称、训练数据集、MAE / RMSE / MAPE 等关键性能指标
  • 流量趋势折线图:展示近 7 天的交通流量走势
  • 交通流量等级分布饼图:按"畅通 / 一般 / 拥堵"三级分类统计历史数据占比

历史交通数据查询

用户可按以下条件筛选历史交通记录:

  • 数据集:选择 PeMS04 / CHIBike 等已接入的数据集
  • 传感器节点:选择具体的道路传感器或网格节点
  • 时间范围:设置查询的开始时间与结束时间,支持精确到分钟

查询结果以表格形式呈现(记录时间、流量、车速、占有率、星期等),支持省略号分页浏览。点击"绘制流量曲线"可将结果渲染为 ECharts 折线图。

交通流量预测

参数说明
道路(传感器节点)选择需要预测的具体路段
预测起始时间预测从哪个时间点开始
预测步数每步 5 分钟,最多 12 步(60 分钟)
星期影响交通规律(工作日 vs 周末)
天气晴天 / 阴天 / 雨天 / 雪天
是否节假日节假日与工作日车流规律不同

点击"开始预测"后,后端调用当前激活的 PDFormer 模型进行推理(或自动回退模拟模式),返回每步预测流量值,以数据表格 + 折线图双视图展示,本次预测记录自动入库。

道路未来车流量统计

在预测基础上进一步提供综合统计分析:

  • KPI 指标卡:平均流量、最大流量、车流总量、预计高峰时段、车流趋势
  • 未来交通流量折线图:各时间节点的预测车流量曲线
  • 历史与未来对比图:预测数据与近期历史数据叠加对比
  • 交通等级分析饼图:畅通( 250辆)

用户管理(管理员)

  • 查看所有注册用户,支持按用户名、邮箱关键词搜索
  • 创建新用户、编辑用户信息(姓名、邮箱、角色)
  • 禁用 / 启用账号、永久删除用户

数据管理(管理员)

  • 展示已接入的所有交通数据集(名称、来源、节点数、采样间隔、记录总数)
  • 选择数据集后可查看传感器节点列表
  • 选择传感器后可预览该节点的近期历史流量数据(省略号分页)

若数据未导入,记录总数显示"未导入",页面提示通过import_dyna.py导入数据。

模型管理(管理员)

  • 展示所有已录入的预测模型,含模型类型、训练数据集、实验编号、训练轮次、耗时等信息
  • 每个模型展示完整评估指标:Masked MAE / MAPE / RMSE
  • 模型性能对比图:柱状图+折线图同时对比各模型表现,无指标数据的模型以灰色占位
  • 激活操作:将指定模型设为系统当前预测模型

预测记录管理(管理员)

  • 查看所有用户发起的历史预测记录(发起用户、路段、时间、步数、使用模型、平均流量)
  • 点击"查看详情":弹窗展示该次预测的逐步结果(时间点 + 流量值 + 折线图)
  • 支持删除预测记录(同步删除关联的结果详情)

八、预测模型说明

系统集成两个已训练的 PDFormer 模型:

模型训练数据集节点数Masked MAEMasked RMSE
PDFormer-PeMS04加州 PeMS04(307个传感器)30716.5126.82
PDFormer-CHIBike芝加哥共享单车(270个网格)2702.153.87

模型加载机制:

  • 系统启动时自动尝试加载 MTFormer/libcity/cache/9056/model_cache/PDFormer_PeMS04.m
  • 若文件存在且环境完整,使用真实 PDFormer 推理
  • 若加载失败,自动切换为模拟预测模式(基于早晚高峰规律、节假日系数生成预测,功能完全正常)

九、数据库表结构

表名说明
users用户账号信息
traffic_datasets交通数据集元信息(含记录总数、时间范围)
sensors传感器/网格节点信息(含经纬度)
traffic_records历史交通流量数据
ml_models机器学习模型信息及评估指标
prediction_records用户发起的预测记录
prediction_results每次预测的逐步结果详情

十、API 接口概览

路径说明
POST /api/auth/register用户注册
POST /api/auth/login用户登录,返回 JWT Token
GET /api/traffic/dashboard获取首页统计数据
GET /api/traffic/datasets获取数据集列表
GET /api/traffic/sensors获取传感器节点列表
GET /api/traffic/history查询历史流量数据(分页)
GET /api/traffic/chart获取图表数据
GET /api/models/获取模型列表
POST /api/models/{id}/activate激活指定模型(管理员)
POST /api/predictions/发起流量预测
GET /api/predictions/获取预测记录列表
GET /api/users/获取用户列表(管理员)

完整接口文档访问:http://localhost:8000/docs

十一、注意事项

  1. .env 文件包含数据库密码等敏感信息,请勿提交到版本仓库。
  2. 数据库编码必须为 utf8mb4,否则中文字段可能出现乱码。
  3. 模型权重文件较大,需确保 MTFormer/libcity/cache/ 目录完整存在。
  4. CHIBike 数据集字段映射:traffic_flow 对应 inflow(流入量),traffic_occupancy 借用字段存储 outflow(流出量),traffic_speed 为 NULL。
  5. 路径中含有中文,部分旧版 Python 环境需确保系统编码为 UTF-8。

本项目为个人原创,结构清晰,功能完整,适合课程设计、毕业设计和个人学习使用。如需购买项目成品或定制化需求可以联系作者。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 4:56:59

《易学・姤䷫|道影子新解 044》

摘要姤卦(䷫)承接夬卦 “刚决柔、君子决小人” 之后,揭示当小人被清除、正气伸张之后,一阴始生、阴阳相遇,系统便进入 “天下有风、姤遇合” 的姤遇力场。其本质是天下有风、一阴初生,下巽上乾,…

作者头像 李华
网站建设 2026/8/31 4:56:53

游戏NPC接入大语言模型为何难?从确定性、实时性到成本解析

为什么至今仍没有任何主流游戏为NPC接入大语言模型LLM?这个问题经常在玩家社区和技术群里被讨论。我也看过不少令人兴奋的Demo:NPC能自由对话、会根据玩家历史做反应、能生成支线剧情。但理性说一句:公开能看到的产品里,确实还没有…

作者头像 李华
网站建设 2026/8/31 4:56:44

QCA7000/7005 SPI驱动开发指南:MCU与电力线通信芯片的通信实现

简介:本资源是面向嵌入式工程师与物联网设备开发者的轻量级电力线通信(PLC)协议实现方案,专为资源受限的MCU集成QCA7000/7005芯片而设计,解决复杂电网环境下稳定、低开销数据传输的核心难题。压缩包共4个文件&#xff…

作者头像 李华
网站建设 2026/8/31 4:56:11

GFS-VL:融合3D VLM稠密知识与少样本校准的点云分割

三维点云分割在自动驾驶、机器人操作和遥感分析中都很关键,但实际项目里经常面临标注样本少、类别分布不均的问题。GFS-VL 这类广义少样本三维点云分割框架,正是为了把 3D 视觉语言模型(3D VLM)中已经学到的大量稠密知识迁移到只有…

作者头像 李华
网站建设 2026/8/31 4:55:41

AI蜂群逃逸与多智能体系统安全:沙箱防护实践指南

先说结论:这并非真实发生在 OpenAI 内部的安全事件,而是一个非常有代表性的 AI 安全推演场景。把“AI 蜂群”理解为多智能体系统(Multi-Agent System),把“逃出 OpenAI”理解为突破系统沙箱边界、越过权限管控、绕过监…

作者头像 李华
网站建设 2026/8/31 4:53:10

从单片机到ROS2:机器人嵌入式物联网自学路线全攻略

不少想进入机器人、嵌入式、物联网方向的朋友,都动过“报个培训班速成”的念头。网上随便一搜,铺天盖地都是“2万学费包就业”“实战项目带你飞”的广告。但很多培训班把宣传做得很丰满,课程内容却很骨感:理论东拼西凑&#xff0c…

作者头像 李华