基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的安全锥检测系统(DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
摘要
随着道路交通施工、临时交通管制等场景的日益频繁,安全锥作为重要的道路安全警示设施,其部署的规范性、完整性直接关系到现场作业人员与过往车辆的安全。传统的人工巡检方式存在效率低下、成本高昂、难以实现全天候监控等弊端。为此,本研究设计并实现了一套集先进深度学习目标检测算法与现代化Web技术于一体的智能安全锥检测系统。
本系统的核心检测模块采用目前性能领先的YOLO系列算法的最新版本(YOLOv8, YOLOv10, YOLOv11及YOLOv12),构建了一个包含5960张训练图像、341张验证图像和170张测试图像的高质量、针对性安全锥数据集,并完成了模型训练与优化。通过对比实验,系统允许用户根据实际场景对精度和速度的需求,灵活切换不同版本的YOLO模型,实现了检测性能的动态适配。此外,系统创新性地集成了DeepSeek大型语言模型的智能分析功能,能够对检测结果进行上下文理解与语义化描述,生成更丰富、更具洞察力的分析报告。
在工程架构上,系统采用前后端分离的设计模式。后端基于SpringBoot框架构建,提供稳定高效的RESTful API服务,并利用MySQL数据库进行用户信息、检测记录等结构化数据的持久化存储与管理。前端则使用现代化的Web技术构建了交互友好的用户界面。系统功能完备,涵盖了用户登录注册、多模态检测(支持图像、视频文件及摄像头实时流检测)、全面的记录管理(图片、视频、摄像头记录分模块管理)、多维度的数据可视化、用户管理模块(管理员可进行增删改查操作)以及个人中心(支持个人信息、头像、密码修改) 等核心功能。
实际应用表明,本系统不仅能够实现高精度、高效率的安全锥自动检测与告警,其可扩展的架构设计和丰富的交互功能也为智慧交通、施工现场安全管理等领域提供了一个可靠、易用且功能强大的综合性解决方案。
关键词: 安全锥检测;YOLO;深度学习;SpringBoot;前后端分离;DeepSeek智能分析;智慧交通;目标检测
详细功能展示视频
基于深度学习和千问|DeepSeek的安全锥检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+前后端分离+python)_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1QjcszrE4U/

目录
一、引言
1.1 研究背景与意义
在现代化城市建设和交通运营中,道路施工、事故处理、临时交通管制等动态场景不可避免。安全锥(又称锥形交通路标)作为这些场景中划定危险区域、引导车流、保护人员的关键设施,其正确布设与完好状态是现场安全的第一道防线。然而,当前对安全锥的监管主要依赖人工定时巡检或简单的视频监控,前者耗费大量人力且存在监管盲区,后者则缺乏智能分析能力,无法主动识别安全锥的缺失、倾倒、移位等异常状态。
近年来,以深度学习为代表的计算机视觉技术取得了突破性进展,尤其是以YOLO系列为代表的一阶段目标检测算法,因其在精度与速度间的优异平衡,已在工业检测、自动驾驶、安防监控等领域得到广泛应用。同时,随着Web开发技术的演进,前后端分离、微服务等架构模式已成为构建复杂、高性能、易维护业务系统的主流选择。将先进的AI检测能力与成熟的软件工程体系相结合,开发出集智能感知、数据管理和友好交互于一体的综合系统,具有重要的现实意义和应用价值。
1.2 国内外研究现状
在目标检测领域,YOLO系列算法自问世以来不断迭代更新。从YOLOv1到YOLOv5,其社区驱动的发展模式已证明了其强大生命力。而YOLOv8在保持高速的同时进一步提升了精度,并提供了更完善的工程支持。随后,YOLOv10在模型结构上进行了去NMS等创新,YOLOv11和YOLOv12也持续在效率、轻量化或多任务学习上进行探索。目前,已有大量研究将YOLO应用于交通场景下的车辆、行人、交通标志检测,但专门针对安全锥这一特定目标,并系统性地对比集成多个最新版本YOLO模型的研究与实践相对较少。
在系统实现层面,基于SpringBoot的后端服务因其快速开发、简化配置和生态丰富等优点,已成为企业级应用的首选。结合Vue.js前端框架实现前后端分离,能够有效提升开发效率、系统可维护性和用户体验。然而,将多种YOLO模型封装为可切换的在线服务,并与大型语言模型的智能分析能力、完整的业务管理功能进行深度集成,构成一个闭环的行业解决方案,仍是一个值得深入研究和实现的课题。
1.3 本文主要研究内容与贡献
本文围绕“智能安全锥检测”这一核心需求,开展了一系列研究与实践工作,主要贡献如下:
-
构建与训练专用检测模型: 收集并标注了大规模的安全锥图像数据集,并基于此数据集分别训练了YOLOv8、YOLOv10、YOLOv11及YOLOv12四个版本的检测模型,对比分析了它们在安全锥检测任务上的性能差异,为模型选择提供了依据。
-
设计并实现可切换的多模型检测引擎: 开发了一个统一的模型加载与推理接口,使后端系统能够动态加载用户选择的YOLO版本进行检测,提高了系统的灵活性和适应性。
-
集成DeepSeek智能分析功能: 突破传统检测系统仅输出边界框和类别的局限,将检测结果送入DeepSeek大语言模型进行深度分析与语义生成,为用户提供如“场景描述”、“潜在风险提示”等更高级的智能报告。
-
开发全功能的Web交互系统: 采用SpringBoot + MySQL + 现代前端技术的栈,构建了一个功能完备、用户体验良好的Web应用。系统不仅支持核心的图片、视频、实时摄像头检测,还提供了完整的用户体系、多维度的检测记录管理、数据可视化看板以及管理员后台。
-
实现前后端分离的工程化架构: 通过清晰的API契约将前端展示与后端算法逻辑解耦,确保了系统的高内聚、低耦合,便于后续的功能扩展、模型升级和团队协作开发。
二、 系统核心特性概述
功能模块
✅ 用户登录注册:支持密码检测,保存到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 模型优势的基础上,同时引入了几项关键创新。该模型架构由以下组件组成:
- 骨干网络:负责特征提取,YOLOv10 中的骨干网络使用增强版的 CSPNet (Cross Stage Partial Network),以改善梯度流并减少计算冗余。
- Neck:Neck 的设计目的是聚合来自不同尺度的特征,并将它们传递到 Head。它包括 PAN(路径聚合网络)层,用于有效的多尺度特征融合。
- One-to-Many Head:在训练期间为每个对象生成多个预测,以提供丰富的监督信号并提高学习准确性。
- 一对一头部:在推理时为每个对象生成一个最佳预测,以消除对NMS的需求,从而降低延迟并提高效率。
主要功能
- 免NMS训练:利用一致的双重分配来消除对NMS的需求,从而降低推理延迟。
- 整体模型设计:从效率和准确性的角度对各种组件进行全面优化,包括轻量级分类 Head、空间通道解耦下采样和秩引导块设计。
- 增强的模型功能: 结合了大内核卷积和部分自注意力模块,以提高性能,而无需显着的计算成本。
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)。
- 增强的效率: 与许多先前的模型相比,以更少的参数实现了更高的准确率,从而证明了速度和准确率之间更好的平衡。
- 灵活部署: 专为跨各种平台部署而设计,从边缘设备到云基础设施。
主要改进
-
增强的 特征提取:
- 区域注意力: 有效处理大型感受野,降低计算成本。
- 优化平衡: 改进了注意力和前馈网络计算之间的平衡。
- R-ELAN:使用 R-ELAN 架构增强特征聚合。
-
优化创新:
- 残差连接:引入具有缩放的残差连接以稳定训练,尤其是在较大的模型中。
- 改进的特征集成:在 R-ELAN 中实现了一种改进的特征集成方法。
- FlashAttention: 整合 FlashAttention 以减少内存访问开销。
-
架构效率:
- 减少参数:与之前的许多模型相比,在保持或提高准确性的同时,实现了更低的参数计数。
- 简化的注意力机制:使用简化的注意力实现,避免了位置编码。
- 优化的 MLP 比率:调整 MLP 比率以更有效地分配计算资源。
前端代码展示

首页界面一小部分代码:
<template>
<div class="home-container layout-pd">
<el-row :gutter="15" class="home-card-two mb15">
<el-col :xs="24" :sm="14" :md="14" :lg="16" :xl="16">
<div class="home-card-item">
<div style="height: 100%" ref="homeLineRef"></div>
</div>
</el-col>
<el-col :xs="24" :sm="10" :md="10" :lg="8" :xl="8" class="home-media">
<div class="home-card-item">
<div style="height: 100%" ref="homePieRef"></div>
</div>
</el-col>
</el-row>
<el-row :gutter="15" class="home-card-three">
<el-col :xs="24" :sm="14" :md="14" :lg="8" :xl="8" class="home-media">
<div class="home-card-item">
<div style="height: 100%" ref="homeradarRef"></div>
</div>
</el-col>
<el-col :xs="24" :sm="10" :md="10" :lg="16" :xl="16">
<div class="home-card-item">
<div class="home-card-item-title">实时检测记录</div>
<div class="home-monitor">
<div class="flex-warp">
<el-table :data="state.paginatedData" style="width: 100%" height="360" v-loading="state.loading">
<el-table-column prop="username" label="操作员" align="center" width="120" />
<el-table-column prop="label" label="检测结果" align="center" width="120">
<template #default="scope">
<el-tag
:type="getResultType(scope.row.label)"
effect="light"
>
{{ formatLabel(scope.row.label) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="confidence" label="置信度" align="center" width="120">
<template #default="scope">
{{ formatConfidence(scope.row.confidence) }}
</template>
</el-table-column>
<el-table-column prop="weight" label="模型权重" align="center" width="120" />
<el-table-column prop="conf" label="检测阈值" align="center" width="120" />
<el-table-column prop="startTime" label="检测时间" align="center" width="180" />
<el-table-column label="操作" align="center" width="100">
<template #default="scope">
<el-button link type="primary" size="small" @click="handleViewDetail(scope.row)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination-container">
<el-pagination
v-model:current-page="state.currentPage"
v-model:page-size="state.pageSize"
:page-sizes="[10, 20, 50, 100]"
:small="true"
:layout="layout"
:total="state.total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<!-- 详情弹窗 -->
<el-dialog
v-model="state.detailDialogVisible"
:title="`检测记录详情 - ${state.selectedRecord?.username || ''}`"
width="80%"
:close-on-click-modal="false"
:close-on-press-escape="false"
center
>
<div class="detail-container" v-loading="state.detailLoading">
<el-row :gutter="20">
<!-- 检测图片 -->
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
<div class="detail-section">
<h3 class="detail-title">原始图片</h3>
<div class="image-container">
<div class="img-wrapper" @click="previewImage(getImageUrl(state.selectedRecord?.inputImg), '原始图片')">
<img
:src="getImageUrl(state.selectedRecord?.inputImg)"
alt="原始图片"
class="detection-image"
v-if="state.selectedRecord?.inputImg"
/>
<div class="img-overlay" v-if="state.selectedRecord?.inputImg">
<el-icon><View /></el-icon>
</div>
<div v-else class="image-placeholder">
<el-icon><Picture /></el-icon>
<span>暂无原始图片</span>
</div>
</div>
</div>
</div>
</el-col>
<!-- 检测信息 -->
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
<div class="detail-section">
<h3 class="detail-title">检测信息</h3>
<el-descriptions :column="1" border>
<el-descriptions-item label="操作员">
{{ state.selectedRecord?.username || '未知' }}
</el-descriptions-item>
<el-descriptions-item label="检测结果">
<el-tag
:type="getResultType(state.selectedRecord?.label || '')"
effect="light"
>
{{ formatLabel(state.selectedRecord?.label || '') }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="置信度">
{{ formatConfidence(state.selectedRecord?.confidence || '') }}
</el-descriptions-item>
<el-descriptions-item label="模型权重">
{{ state.selectedRecord?.weight || '未知' }}
</el-descriptions-item>
<el-descriptions-item label="检测阈值">
{{ state.selectedRecord?.conf || '未知' }}
</el-descriptions-item>
<el-descriptions-item label="检测时间">
{{ state.selectedRecord?.startTime || '未知' }}
</el-descriptions-item>
<el-descriptions-item label="检测详情" v-if="hasDetectionDetails">
<div class="detection-details">
<div
v-for="(item, index) in getDetectionDetails()"
:key="index"
class="detail-item"
>
<span class="detail-label">{{ item.label }}:</span>
<span class="detail-value">{{ item.confidence }}</span>
</div>
</div>
</el-descriptions-item>
</el-descriptions>
</div>
</el-col>
</el-row>
<!-- 原图与检测结果对比 -->
<el-row :gutter="20" v-if="state.selectedRecord?.inputImg || state.selectedRecord?.outImg">
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
<div class="detail-section">
<h3 class="detail-title">原始图片</h3>
<div class="image-container">
<div class="img-wrapper" @click="previewImage(getImageUrl(state.selectedRecord.inputImg), '原始图片')">
<img
:src="getImageUrl(state.selectedRecord.inputImg)"
alt="原始图片"
class="detection-image"
v-if="state.selectedRecord?.inputImg"
/>
<div class="img-overlay" v-if="state.selectedRecord?.inputImg">
<el-icon><View /></el-icon>
</div>
<div v-else class="image-placeholder">
<el-icon><Picture /></el-icon>
<span>暂无原始图片</span>
</div>
</div>
</div>
</div>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
<div class="detail-section">
<h3 class="detail-title">预测图片</h3>
<div class="image-container">
<div class="img-wrapper" @click="previewImage(getImageUrl(state.selectedRecord.outImg), '预测图片')">
<img
:src="getImageUrl(state.selectedRecord.outImg)"
alt="预测图片"
class="detection-image"
v-if="state.selectedRecord?.outImg"
/>
<div class="img-overlay" v-if="state.selectedRecord?.outImg">
<el-icon><View /></el-icon>
</div>
<div v-else class="image-placeholder">
<el-icon><Picture /></el-icon>
<span>暂无预测图片</span>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="state.detailDialogVisible = false">关闭</el-button>
<el-button type="primary" @click="handleDownloadImage" :disabled="!state.selectedRecord?.inputImg">
<el-icon><Download /></el-icon>
下载检测图片
</el-button>
</span>
</template>
</el-dialog>
<!-- 图片预览弹窗 -->
<el-dialog
v-model="state.previewDialog.visible"
:title="state.previewDialog.title"
width="60%"
align-center
class="image-preview-dialog">
<div class="preview-content">
<img :src="state.previewDialog.imageUrl" :alt="state.previewDialog.title" class="preview-image" />
</div>
</el-dialog>
</div>
</template>
后端代码展示

详细功能展示视频
基于深度学习和千问|DeepSeek的安全锥检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+前后端分离+python)_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1QjcszrE4U/

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



所有评论(0)