摘要

随着城市电动自行车与摩托车的普及,骑手交通安全问题日益凸显。正确佩戴安全头盔是降低交通事故伤亡率的关键措施,然而,依赖人工进行大规模、全天候的监管存在效率低、成本高、覆盖难等瓶颈。为此,本研究设计并实现了一套高效、智能、可扩展的“骑手佩戴头盔检测系统”。本系统深度融合了前沿的计算机视觉技术与现代Web开发框架,旨在为交通管理部门提供一套自动化、可视化的智能监管解决方案。

系统的核心检测模块采用了目前性能领先的YOLO系列目标检测算法。为进行充分的性能评估与技术选型,本系统创新性地集成了YOLOv8、YOLOv10、YOLOv11及YOLOv12四种模型版本,支持用户在后端根据实际场景对精度与速度的需求进行动态切换和比较。我们构建了包含 helmet(头盔)、license_plate(车牌)、motorcyclist(骑手)三个类别的专用数据集,共计1803张图像(训练集1563张,验证集140张,测试集100张),为模型的精准训练提供了数据基础。

系统后端采用SpringBoot框架构建,前端与后端完全分离,确保了系统架构的清晰性、可维护性与高并发处理能力。数据持久化使用MySQL数据库,可靠地存储用户信息、模型配置以及所有的检测记录。系统的突出亮点在于引入了DeepSeek大型语言模型的智能分析功能,能够对检测结果进行上下文理解与文本摘要,生成易于理解的违规描述报告,极大提升了监管信息的可读性与决策支持价值。

系统提供完整的Web交互界面,功能模块全面:1) 用户体系:包含安全的登录注册、个人中心(信息修改)及管理员主导的用户管理模块;2) 多模态检测:支持图片上传检测、视频文件分析以及摄像头实时流检测,满足多种应用场景;3) 记录管理:对图片、视频、实时摄像头的所有识别记录进行集中化、可视化的管理、查询与回溯;4) 信息可视化:通过图表等形式直观展示检测统计数据。

实验表明,本系统不仅实现了高精度、实时的头盔佩戴检测,更通过其灵活的多模型支持、智能化的DeepSeek分析以及友好的全功能Web界面,为智慧交通监管提供了一个功能完备、技术先进、实用性强的综合性平台,具有显著的社会应用价值与推广前景。

关键词: 头盔检测;YOLO系列;SpringBoot;DeepSeek智能分析;前后端分离;智慧交通;Web系统

详细功能展示视频

基于YOLO和千问|DeepSeek的骑手佩戴头盔检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+深度学习+python)_哔哩哔哩_bilibili

基于YOLO和千问|DeepSeek的骑手佩戴头盔检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+深度学习+python)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1yjctzuEj2/?spm_id_from=333.999.0.0&vd_source=549d0b4e2b8999929a61a037fcce3b0f

https://www.bilibili.com/video/BV1yjctzuEj2/


目录

 摘要

详细功能展示视频

基于YOLO和千问|DeepSeek的骑手佩戴头盔检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+深度学习+python)_哔哩哔哩_bilibili

引言

1. 研究背景与意义

2. 国内外研究现状

3. 本项目研究内容与创新点

二、 系统核心特性概述

功能模块

登录注册模块

可视化模块

图像检测模块

视频检测模块

实时检测模块

图片识别记录管理

视频识别记录管理

摄像头识别记录管理

用户管理模块

数据管理模块(MySQL表设计)

模型训练结果

YOLO概述

YOLOv8

YOLOv10

YOLOv11

YOLOv12

前端代码展示

后端代码展示

 详细功能展示视频

基于YOLO和千问|DeepSeek的骑手佩戴头盔检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+深度学习+python)_哔哩哔哩_bilibili


引言

1. 研究背景与意义

在全球城市化进程加速的背景下,电动自行车与摩托车因其灵活、便捷的特性,已成为短途出行的重要交通工具。然而,随之而来的是日益严峻的交通安全问题。据统计,在涉及摩托车、电动自行车的交通事故中,骑手头部受伤是导致死亡和重伤的主要原因。国内外大量研究与实践证明,正确佩戴安全头盔能将交通事故中的死亡风险降低约40%,重伤风险降低约70%。因此,强制并确保骑手佩戴头盔已成为交通管理部门的执法重点。

传统的人工路面执法或视频监控抽查方式,存在人力资源消耗大、监管时间与空间存在盲区、效率低下且难以实现全天候常态化监管等问题。随着人工智能,特别是深度学习与计算机视觉技术的飞速发展,利用自动化视觉检测技术对骑手头盔佩戴情况进行智能识别与预警,成为了突破现有管理瓶颈的必然趋势。开发一套能够自动识别、记录、分析并管理骑手头盔佩戴情况的智能化系统,对于提升交通管理现代化水平、保障人民生命财产安全、构建智慧城市具有重大的现实意义与社会价值。

2. 国内外研究现状

目前,基于深度学习的目标检测技术已在车辆、行人、交通标志识别等领域取得广泛应用。对于头盔检测,主流方法多采用Faster R-CNN、SSD、YOLO等系列算法。其中,YOLO系列因其在速度与精度间取得的优异平衡,成为实时检测任务的首选。从YOLOv5到最新的YOLOv12,每一代都在网络结构、损失函数和训练策略上进行了优化,为高性能检测提供了多样化的模型选择。然而,现有的大多数研究或开源项目往往聚焦于单一模型的检测算法本身,缺乏将先进检测算法与完整的企业级应用系统相结合的实践。具体表现在:

  1. 系统化不足:多为脚本或简易演示,缺少用户管理、数据持久化、历史记录查询等完整的业务功能。

  2. 交互性薄弱:缺乏友好、稳定的Web图形用户界面,不便于非技术人员操作与管理。

  3. 智能化层级低:通常只完成“检测-框选”的初级任务,缺乏对检测结果的深度分析与语义化解读。

  4. 灵活性欠缺:极少支持多种前沿模型的快速切换与对比,无法适应不同硬件环境或性能需求的场景。

3. 本项目研究内容与创新点

针对上述不足,本研究致力于开发一个集“尖端算法”、“智能分析”、“专业应用”与“卓越体验”于一体的综合性骑手头盔佩戴检测系统。本项目的核心研究内容与主要创新点如下:

  • 多版本YOLO模型集成与可配置化:同时集成YOLOv8, v10, v11, v12四个最新版本,构建统一的模型调用接口。用户可根据实际部署环境的算力条件和对精度/速度的偏好,在Web界面上一键切换模型,实现了检测引擎的“即插即用”和性能横向对比。

  • DeepSeek大模型驱动的智能分析增强:突破传统检测系统仅输出检测框和类别的局限,创新性地接入DeepSeek大型语言模型API。系统能够将视觉检测结果转化为结构化的文本描述,生成简要报告,使机器感知升级为认知辅助。

  • 基于SpringBoot的全功能、高可用Web系统:采用前后端分离架构,后端SpringBoot提供稳健的服务,负责核心业务逻辑、模型调度与数据库交互;前端提供直观的Vue界面。系统囊括了从用户认证授权多模态检测任务提交(图片/视频/实时流)、全流程记录管理数据可视化看板的完整闭环功能,达到了企业级应用的标准。

  • 精细化数据集与多目标协同检测:构建了针对性的数据集,不仅标注“头盔”,还同步标注“骑手”和“车牌”。这种多目标检测能力为后续可能的违规主体关联、身份追溯(结合车牌)等扩展功能奠定了数据基础,提升了系统的实用深度。

二、 系统核心特性概述

功能模块


✅ 用户登录注册:支持密码检测,保存到MySQL数据库。

✅ 支持四种YOLO模型切换,YOLOv8、YOLOv10、YOLOv11、YOLOv12。

✅ 信息可视化,数据可视化。

✅ 图片检测支持AI分析功能,deepseek

✅ 支持图像检测、视频检测和摄像头实时检测,检测结果保存到MySQL数据库。

✅ 图片识别记录管理、视频识别记录管理和摄像头识别记录管理。

✅ 用户管理模块,管理员可以对用户进行增删改查。

✅ 个人中心,可以修改自己的信息,密码姓名头像等等。


 

登录注册模块

可视化模块

图像检测模块

  • YOLO模型集成 (v8/v10/v11/v12)

  • DeepSeek多模态分析

  • 支持格式:JPG/PNG/MP4/RTSP

视频检测模块

实时检测模块

图片识别记录管理

视频识别记录管理

摄像头识别记录管理

用户管理模块

数据管理模块(MySQL表设计)

  • users - 用户信息表

  • imgrecords- 图片检测记录表

  • videorecords- 视频检测记录表

  • camerarecords- 摄像头检测记录表

模型训练结果

#coding:utf-8
#根据实际情况更换模型
# yolon.yaml (nano):轻量化模型,适合嵌入式设备,速度快但精度略低。
# yolos.yaml (small):小模型,适合实时任务。
# yolom.yaml (medium):中等大小模型,兼顾速度和精度。
# yolob.yaml (base):基本版模型,适合大部分应用场景。
# yolol.yaml (large):大型模型,适合对精度要求高的任务。
 
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',
                          )
 
 
 
 
 
 
 
 

YOLO概述

YOLOv8

YOLOv8 由 Ultralytics 于 2023 年 1 月 10 日发布,在准确性和速度方面提供了尖端性能。基于先前 YOLO 版本的进步,YOLOv8 引入了新功能和优化,使其成为各种应用中目标检测任务的理想选择。

YOLOv8 的主要特性

  • 高级骨干和颈部架构: YOLOv8 采用最先进的骨干和颈部架构,从而改进了特征提取和目标检测性能。
  • 无锚点分离式 Ultralytics Head: YOLOv8 采用无锚点分离式 Ultralytics head,与基于锚点的方法相比,这有助于提高准确性并提高检测效率。
  • 优化的准确性-速度权衡: YOLOv8 专注于在准确性和速度之间保持最佳平衡,适用于各种应用领域中的实时对象检测任务。
  • 丰富的预训练模型: YOLOv8提供了一系列预训练模型,以满足各种任务和性能要求,使您更容易为特定用例找到合适的模型。

YOLOv10

YOLOv10 由 清华大学研究人员基于 Ultralytics Python构建,引入了一种新的实时目标检测方法,解决了先前 YOLO 版本中存在的后处理和模型架构缺陷。通过消除非极大值抑制 (NMS) 并优化各种模型组件,YOLOv10 以显著降低的计算开销实现了最先进的性能。大量实验表明,它在多个模型尺度上都具有卓越的精度-延迟权衡。

概述

实时目标检测旨在以低延迟准确预测图像中的对象类别和位置。YOLO 系列因其在性能和效率之间的平衡而一直处于这项研究的前沿。然而,对 NMS 的依赖和架构效率低下阻碍了最佳性能。YOLOv10 通过引入用于无 NMS 训练的一致双重分配和整体效率-准确性驱动的模型设计策略来解决这些问题。

架构

YOLOv10 的架构建立在之前 YOLO 模型优势的基础上,同时引入了几项关键创新。该模型架构由以下组件组成:

  1.  骨干网络:负责特征提取,YOLOv10 中的骨干网络使用增强版的 CSPNet (Cross Stage Partial Network),以改善梯度流并减少计算冗余。
  2. Neck:Neck 的设计目的是聚合来自不同尺度的特征,并将它们传递到 Head。它包括 PAN(路径聚合网络)层,用于有效的多尺度特征融合。
  3. One-to-Many Head:在训练期间为每个对象生成多个预测,以提供丰富的监督信号并提高学习准确性。
  4. 一对一头部:在推理时为每个对象生成一个最佳预测,以消除对NMS的需求,从而降低延迟并提高效率。

主要功能

  1. 免NMS训练:利用一致的双重分配来消除对NMS的需求,从而降低推理延迟。
  2. 整体模型设计:从效率和准确性的角度对各种组件进行全面优化,包括轻量级分类 Head、空间通道解耦下采样和秩引导块设计。
  3. 增强的模型功能: 结合了大内核卷积和部分自注意力模块,以提高性能,而无需显着的计算成本。

YOLOv11

YOLO11 是 Ultralytics YOLO 系列实时目标检测器的最新迭代版本,它以前沿的精度、速度和效率重新定义了可能性。YOLO11 在之前 YOLO 版本的显著进步基础上,在架构和训练方法上进行了重大改进,使其成为各种计算机视觉任务的多功能选择。

主要功能

  • 增强的特征提取: YOLO11 采用改进的 backbone 和 neck 架构,从而增强了特征提取能力,以实现更精确的目标检测和复杂的任务性能。
  • 优化效率和速度: YOLO11 引入了改进的架构设计和优化的训练流程,从而提供更快的处理速度,并在精度和性能之间保持最佳平衡。
  • 更高精度,更少参数: 随着模型设计的进步,YOLO11m 在 COCO 数据集上实现了更高的 平均精度均值(mAP),同时比 YOLOv8m 少用 22% 的参数,在不牺牲精度的情况下提高了计算效率。
  • 跨环境的适应性: YOLO11 可以无缝部署在各种环境中,包括边缘设备、云平台和支持 NVIDIA GPU 的系统,从而确保最大的灵活性。
  • 广泛支持的任务范围: 无论是目标检测、实例分割、图像分类、姿势估计还是旋转框检测 (OBB),YOLO11 都旨在满足各种计算机视觉挑战。

Ultralytics YOLO11 在其前代产品的基础上进行了多项重大改进。主要改进包括:

  • 增强的特征提取: YOLO11 采用了改进的骨干网络和颈部架构,增强了特征提取能力,从而实现更精确的目标检测。
  • 优化的效率和速度: 改进的架构设计和优化的训练流程提供了更快的处理速度,同时保持了准确性和性能之间的平衡。
  • 更高精度,更少参数: YOLO11m 在 COCO 数据集上实现了更高的平均 精度均值 (mAP),同时比 YOLOv8m 少用 22% 的参数,在不牺牲精度的情况下提高了计算效率。
  • 跨环境的适应性: YOLO11 可以部署在各种环境中,包括边缘设备、云平台和支持 NVIDIA GPU 的系统。
  • 广泛支持的任务范围: YOLO11 支持各种计算机视觉任务,例如目标检测、实例分割、图像分类、姿势估计和旋转框检测 (OBB)。

YOLOv12

YOLO12引入了一种以注意力为中心的架构,它不同于之前YOLO模型中使用的传统基于CNN的方法,但仍保持了许多应用所需的实时推理速度。该模型通过在注意力机制和整体网络架构方面的新颖方法创新,实现了最先进的目标检测精度,同时保持了实时性能。尽管有这些优势,YOLO12仍然是一个社区驱动的版本,由于其沉重的注意力模块,可能表现出训练不稳定、内存消耗增加和CPU吞吐量较慢的问题,因此Ultralytics仍然建议将YOLO11用于大多数生产工作负载。

主要功能

  • 区域注意力机制: 一种新的自注意力方法,可以有效地处理大型感受野。它将 特征图 分成 l 个大小相等的区域(默认为 4 个),水平或垂直,避免复杂的运算并保持较大的有效感受野。与标准自注意力相比,这大大降低了计算成本。
  • 残差高效层聚合网络(R-ELAN):一种基于 ELAN 的改进的特征聚合模块,旨在解决优化挑战,尤其是在更大规模的以注意力为中心的模型中。R-ELAN 引入:
    • 具有缩放的块级残差连接(类似于层缩放)。
    • 一种重新设计的特征聚合方法,创建了一个类似瓶颈的结构。
  • 优化的注意力机制架构:YOLO12 精简了标准注意力机制,以提高效率并与 YOLO 框架兼容。这包括:
    • 使用 FlashAttention 来最大限度地减少内存访问开销。
    • 移除位置编码,以获得更简洁、更快速的模型。
    • 调整 MLP 比率(从典型的 4 调整到 1.2 或 2),以更好地平衡注意力和前馈层之间的计算。
    • 减少堆叠块的深度以改进优化。
    • 利用卷积运算(在适当的情况下)以提高其计算效率。
    • 在注意力机制中添加一个7x7可分离卷积(“位置感知器”),以隐式地编码位置信息。
  • 全面的任务支持: YOLO12 支持一系列核心计算机视觉任务:目标检测、实例分割、图像分类、姿势估计和旋转框检测 (OBB)。
  • 增强的效率: 与许多先前的模型相比,以更少的参数实现了更高的准确率,从而证明了速度和准确率之间更好的平衡。
  • 灵活部署: 专为跨各种平台部署而设计,从边缘设备到云基础设施。

主要改进

  1. 增强的 特征提取:

    • 区域注意力: 有效处理大型感受野,降低计算成本。
    • 优化平衡: 改进了注意力和前馈网络计算之间的平衡。
    • R-ELAN:使用 R-ELAN 架构增强特征聚合。
  2. 优化创新:

    • 残差连接:引入具有缩放的残差连接以稳定训练,尤其是在较大的模型中。
    • 改进的特征集成:在 R-ELAN 中实现了一种改进的特征集成方法。
    • FlashAttention: 整合 FlashAttention 以减少内存访问开销。
  3. 架构效率:

    • 减少参数:与之前的许多模型相比,在保持或提高准确性的同时,实现了更低的参数计数。
    • 简化的注意力机制:使用简化的注意力实现,避免了位置编码。
    • 优化的 MLP 比率:调整 MLP 比率以更有效地分配计算资源。

前端代码展示

视频检测界面一小部分代码:

<template>
	<div class="predict-container">
		<div class="predict-content">
			<div class="control-panel">
				<div class="panel-header">
					<h3 class="panel-title">视频分析控制台</h3>
					<div class="panel-subtitle">配置参数并开始处理</div>
				</div>
				
				<div class="control-group">
					<div class="control-item">
						<label class="control-label">模型选择</label>
						<el-select v-model="weight" placeholder="选择分析模型" size="large" class="model-select">
							<el-option v-for="item in state.weight_items" :key="item.value" :label="item.label"
								:value="item.value" />
						</el-select>
					</div>

					<div class="control-item">
						<label class="control-label">置信度阈值</label>
						<div class="confidence-control">
							<span class="confidence-value">{{ (conf / 100).toFixed(2) }}</span>
							<el-slider v-model="conf" :format-tooltip="formatTooltip" class="confidence-slider" />
						</div>
					</div>
				</div>

				<div class="action-group">
					<el-upload v-model="state.form.inputVideo" ref="uploadFile" class="video-upload"
						action="http://localhost:9999/files/upload" :show-file-list="false"
						:on-success="handleAvatarSuccessone">
						<el-button type="primary" class="upload-btn">
							<i class="upload-icon"></i>
							上传视频文件
						</el-button>
					</el-upload>

					<el-button type="success" @click="upData" class="process-btn">
						<i class="process-icon"></i>
						开始分析处理
					</el-button>
				</div>

				<div class="progress-section" v-if="state.isShow">
					<div class="progress-info">
						<span class="progress-text">{{ state.type_text }}中...</span>
						<span class="progress-percent">{{ state.percentage }}%</span>
					</div>
					<el-progress :text-inside="true" :stroke-width="16" :percentage=state.percentage 
						:stroke-color="progressColor" class="custom-progress" />
				</div>
			</div>

			<div class="preview-section" ref="cardsContainer">
				<div class="preview-header">
					<h4>分析结果预览</h4>
					<div class="preview-tips">处理后的视频将在此显示</div>
				</div>
				<div class="video-container">
					<img v-if="state.video_path" class="result-video" :src="state.video_path" alt="分析结果">
					<div v-else class="empty-preview">
						<div class="empty-icon">📹</div>
						<div class="empty-text">等待视频处理结果</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</template>

<script setup lang="ts">
import { reactive, ref, onMounted, computed } from 'vue';
import { ElMessage } from 'element-plus';
import request from '/@/utils/request';
import { useUserInfo } from '/@/stores/userInfo';
import { storeToRefs } from 'pinia';
import type { UploadInstance, UploadProps } from 'element-plus';
import { SocketService } from '/@/utils/socket';
import { formatDate } from '/@/utils/formatTime';

const uploadFile = ref<UploadInstance>();
const stores = useUserInfo();
const conf = ref('');
const weight = ref('');
const { userInfos } = storeToRefs(stores);

const handleAvatarSuccessone: UploadProps['onSuccess'] = (response, uploadFile) => {
	ElMessage.success('视频上传成功!');
	state.form.inputVideo = response.data;
};

const state = reactive({
	weight_items: [] as any,
	data: {} as any,
	video_path: '',
	type_text: "正在保存",
	percentage: 50,
	isShow: false,
	form: {
		username: '',
		inputVideo: null as any,
		weight: '',
		conf: null as any,
		startTime: ''
	},
});

const progressColor = computed(() => {
	if (state.percentage < 30) return '#e6a23c';
	if (state.percentage < 70) return '#409eff';
	return '#67c23a';
});

const socketService = new SocketService();

socketService.on('message', (data) => {
	console.log('Received message:', data);
	ElMessage.success(data);
});

const formatTooltip = (val: number) => {
	return val / 100
}

socketService.on('progress', (data) => {
	state.percentage = parseInt(data);
	if (parseInt(data) < 100) {
		state.isShow = true;
	} else {
		ElMessage.success("处理完成!");
		setTimeout(() => {
			state.isShow = false;
			state.percentage = 0;
		}, 2000);
	}
	console.log('Received message:', data);
});

const getData = () => {
	request.get('/api/flask/file_names').then((res) => {
		if (res.code == 0) {
			res.data = JSON.parse(res.data);
			console.log(res.data);
			state.weight_items = res.data.weight_items;
		} else {
			ElMessage.error(res.msg);
		}
	});
};

const upData = () => {
	state.form.weight = weight.value;
	state.form.conf = (parseFloat(conf.value)/100);
	state.form.username = userInfos.value.userName;
	state.form.startTime = formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS');
	console.log(state.form);
	const queryParams = new URLSearchParams(state.form).toString();
	state.video_path = `http://127.0.0.1:5000/predictVideo?${queryParams}`;
	ElMessage.success('开始处理视频...');
};

后端代码展示

 详细功能展示视频

基于YOLO和千问|DeepSeek的骑手佩戴头盔检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+深度学习+python)_哔哩哔哩_bilibili

基于YOLO和千问|DeepSeek的骑手佩戴头盔检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+深度学习+python)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1yjctzuEj2/?spm_id_from=333.999.0.0&vd_source=549d0b4e2b8999929a61a037fcce3b0f

https://www.bilibili.com/video/BV1yjctzuEj2/

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐