引言
随着智慧城市的发展,交通管理与公共安全对实时视觉感知的需求日益增长。传统的人工监控方式难以满足 7x24 小时、高精度的检测要求。本项目旨在构建一个集深度学习算法与 Web 技术于一体的行人车辆检测平台,通过集成多种 YOLO 模型与业务系统,实现从数据采集到智能分析的全流程闭环。
系统架构与技术选型
系统采用前后端分离架构。后端基于 SpringBoot 框架构建 RESTful API,负责业务逻辑处理与模型调度;前端使用 Vue.js 提供直观的交互界面,支持多模态数据输入。核心检测引擎集成了 YOLOv8、YOLOv10、YOLOv11 及 YOLOv12 四种主流目标检测算法,用户可根据场景需求灵活切换。此外,创新性地引入 DeepSeek 大模型进行语义分析,为检测结果提供自然语言报告,增强系统的可解释性。
核心功能模块
多源检测能力
系统支持三种检测模式:
- 图像检测:上传本地图片进行离线分析。
- 视频检测:解析 MP4 等格式视频流逐帧处理。
- 实时检测:对接 RTSP 摄像头流,实现实时监控。
所有检测结果均持久化存储至 MySQL 数据库,包含图片路径、识别类别、置信度及时间戳等信息,便于后续追溯与统计。
智能分析与可视化
除了基础的边界框绘制,系统还集成了可视化看板,展示检测统计结果。结合 DeepSeek API,系统能生成包含场景描述、潜在风险提示的文本报告,让机器不仅能'看到',还能'理解'场景。
用户与权限管理
完善的用户体系支持注册登录、密码修改及头像更新。管理员拥有后台权限,可对普通用户的检测记录进行增删改查,确保数据安全与合规。
关键技术与实现细节
模型集成与切换
在工程实践中,不同版本的 YOLO 模型各有优劣。YOLOv8 成熟稳定,适合大多数场景;YOLOv10 去除了 NMS 后处理,推理速度更快;YOLOv11 在精度与参数量之间取得了更好平衡;YOLOv12 则引入了注意力机制,适合高精度需求但资源消耗较大。
我们在后端设计了统一的模型加载接口,通过配置文件动态指定当前使用的模型权重(如 yolo12s.pt)。训练脚本示例如下,注意根据实际硬件调整 batch size 和 device:
from ultralytics import YOLO
model_path = 'pt/yolo12s.pt'
data_path = 'data.yaml'
if __name__ == '__main__':
model = YOLO(model_path)
# 训练参数需根据显存大小调整
results = model.train(data=data_path, epochs=500, batch=64, device='0', workers=0, project='runs', name='exp')
这里有个注意点,workers=0 在某些 Windows 环境下可能更稳定,但在 Linux 服务器上建议设为 CPU 核心数以提升效率。
前端交互设计
前端登录页采用了粒子背景动画增强科技感,但核心在于表单验证与路由守卫。我们使用了 Element Plus 组件库快速搭建表单,并配合 Pinia 管理全局状态。
以下是登录组件的核心逻辑,重点展示了如何结合 Token 存储与路由跳转:
<template>
<div class="login-container">
<el-form :model="ruleForm" ref="ruleFormRef">
<el-form-item prop="username">
<el-input v-model="ruleForm.username" placeholder="请输入系统访问 ID" />
</el-form-item>
<el-form-item prop="password">
<el-input v-model="ruleForm.password" type="password" show-password />
</el-form-item>
<el-button @click="submitForm">启动交通检测</el-button>
</el-form>
</div>
</template>
<script setup>
import { reactive, ref } from 'vue';
import Cookies from 'js-cookie';
import request from '/@/utils/request';
const ruleForm = reactive({ username: '', password: '' });
const submitForm = (formEl) => {
if (!formEl) return;
formEl.validate((valid) => {
if (valid) {
request.post('/api/user/login', ruleForm).then((res) => {
if (res.code === 0) {
Cookies.set('token', res.data.token);
// 登录成功后的路由跳转逻辑
}
});
}
});
};
</script>


