☰
基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的护目镜佩戴检测系统(DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
2026/10/14 18:23:48 网站建设 项目流程

摘要

工业安全是生产过程中的首要考量,其中眼部防护是预防职业伤害的关键环节。传统的人工巡检方式存在效率低、实时性差、成本高昂且易漏检等固有缺陷。为解决这一问题,本项目设计并实现了一套智能化、一体化的护目镜佩戴检测与管理系统。

系统核心技术采用当前目标检测领域前沿的YOLO系列算法,并创新性地集成了YOLOv8、YOLOv10、YOLOv11及YOLOv12四种模型,为用户提供了性能与精度选择的灵活性,便于在实际部署中进行模型对比与择优。系统后端基于SpringBoot框架构建,实现了高效的业务逻辑处理;前端采用现代化的Web技术,提供了友好的交互界面;整体架构遵循前后端分离原则,确保了系统的可维护性、可扩展性与高性能。

系统功能全面,覆盖了从数据输入到分析管理的全流程。支持图像检测、视频流分析及摄像头实时检测三种模式,能够满足不同场景下的应用需求。检测过程融合了DeepSeek智能分析能力,增强了系统的解释性与智能化水平。所有检测结果与操作日志均持久化存储于MySQL数据库中,确保了数据的可追溯性。系统还具备完善的用户体系,包括用户登录注册、个人中心信息管理以及管理员对用户与识别记录(图片、视频、摄像头)的全面管理功能。此外,通过丰富的数据可视化图表,直观地展示了检测统计与系统运行状态,为安全管理决策提供了数据支持。

本项目所构建的系统,不仅实现了护目镜佩戴状态的精准、实时自动检测,更通过一体化的Web管理平台,将人工智能算法与信息化管理无缝结合,为工业安全生产管理提供了一套高效、可靠、可落地的智能化解决方案。

详细功能展示视频

基于深度学习和千问|DeepSeek的护目镜佩戴检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+前后端分离+python)_哔哩哔哩_bilibili

基于深度学习和千问|DeepSeek的护目镜佩戴检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+前后端分离+python)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1hEcsz3Eek/?vd_source=549d0b4e2b8999929a61a037fcce3b0fhttps://www.bilibili.com/video/BV1hEcsz3Eek/

目录

摘要

引言

1. 研究背景与意义

2. 国内外研究现状

3. 本项目主要内容与创新点

二、 系统核心特性概述

功能模块

登录注册模块

可视化模块

图像检测模块

视频检测模块

实时检测模块

图片识别记录管理

视频识别记录管理

摄像头识别记录管理

用户管理模块

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

模型训练结果

YOLO概述

YOLOv8

YOLOv10

YOLOv11

YOLOv12

前端代码展示

后端代码展示

项目源码+数据集链接

项目安装教程


引言

1. 研究背景与意义

在制造业、化工业、建筑业等高危行业,飞溅物、粉尘、化学喷溅等是导致眼部工伤的主要原因。正确佩戴护目镜是预防此类伤害最直接、最有效的措施。然而,依赖安全员现场监督或事后查看录像的传统监管方式,难以实现全天候、无死角的覆盖,且人力资源消耗巨大,响应存在滞后性。随着计算机视觉与深度学习技术的飞速发展,利用人工智能实现自动化安全规范检查已成为必然趋势。基于深度学习的目标检测技术,特别是以YOLO系列为代表的单阶段检测算法,因其在速度与精度上的卓越平衡,为实时视觉检测任务提供了强有力的技术支撑。

2. 国内外研究现状

目前,基于计算机视觉的安全防护检测已成为学术界和工业界的研究热点。早期研究多基于传统图像处理技术(如边缘检测、模板匹配),但其在复杂环境、光照变化及遮挡情况下的鲁棒性较差。近年来,基于卷积神经网络的目标检测方法占据主导地位,Faster R-CNN、SSD和YOLO系列算法被广泛研究与应用。YOLO算法因其“一步到位”的检测理念,在实时性要求高的场景中优势尤为明显。从YOLOv1到最新的YOLOv12,该系列在检测精度、速度和网络架构上持续优化。然而,现有应用大多聚焦于单一模型部署,缺乏多模型对比与切换的平台化支持;同时,许多研究仅停留在算法层面,未能将检测能力与一个完整的、具备用户管理、数据持久化和可视化功能的信息系统相结合,限制了其在实际生产环境中的部署与管理效能。

3. 本项目主要内容与创新点

本项目旨在弥合先进算法与实际应用之间的鸿沟,构建一个集“智能检测、数据管理、用户交互”于一体的综合性护目镜佩戴检测系统。其主要内容与创新点如下:

  1. 多模型集成与可配置检测引擎:系统核心集成YOLOv8至YOLOv12共四个版本的先进检测模型。用户可根据实际场景对速度或精度的不同需求,灵活选择并切换模型,实现了检测策略的定制化,提升了系统的适应性与技术前瞻性。

  2. 全栈式Web应用系统:采用SpringBoot + 前端框架的前后端分离架构,开发了功能完备的Web交互平台。这不仅提供了一个便捷的操作界面,更将深度学习模型封装成可调用的后端服务,实现了AI能力的“即开即用”。

  3. DeepSeek增强智能分析:在标准目标检测的基础上,引入DeepSeek等大型语言模型的推理与解释能力,对检测场景或结果进行更深层次的智能分析,提升了系统的智能化水平与应用价值。

  4. 多源输入与全流程数据管理:系统支持图片上传、视频文件解析、摄像头实时流三种输入方式,全面覆盖了静态抽查与动态监控的需求。所有检测任务的结果均结构化存储于MySQL数据库,并设计了专门的模块对图片、视频、摄像头的识别记录进行分类管理,实现了检测历史的高效查询与审计。

  5. 完善的用户体系与可视化看板:构建了包含普通用户与管理员的多角色权限体系。普通用户可进行检测操作、管理个人识别记录、在个人中心更新信息;管理员拥有用户管理、全平台记录查看与删除等高级权限。同时,系统通过图表等形式对检测数据(如每日违规次数、模型使用统计)进行可视化展示,助力安全态势研判。

二、 系统核心特性概述

功能模块


✅ 用户登录注册:支持密码检测,保存到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="brain-detection-container" id="id" v-loading="state.loading"> <!-- 顶部导航栏 --> <div class="top-nav"> <div class="logo"> <i class="icon-brain"></i> <span>Computer Vision</span> </div> <div class="user-info"> <el-avatar :size="32" :src="userInfos.avatar" /> <span class="username">{{ userInfos.userName }}</span> </div> </div> <div class="main-content"> <!-- 左侧功能区 --> <div class="left-panel"> <div class="panel-section"> <h3 class="section-title">模型配置</h3> <div class="config-item"> <label>选择模型</label> <el-select v-model="weight" placeholder="请选择模型" size="large"> <el-option v-for="item in state.weight_items" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </div> <div class="config-item"> <label>AI助手</label> <el-select v-model="ai" placeholder="请选择AI助手" size="large" @change="getData"> <el-option v-for="item in state.ai_items" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </div> <div class="config-item"> <label>置信度阈值: {{ (conf/100).toFixed(2) }}</label> <el-slider v-model="conf" :format-tooltip="formatTooltip" show-stops :max="100" :step="5" /> </div> <div class="action-buttons"> <el-button type="primary" @click="upData" class="predict-btn"> <i class="icon-scan"></i> 开始检测 </el-button> <el-button @click="resetForm" class="reset-btn"> <i class="icon-reset"></i> 重置 </el-button> </div> </div> <div class="panel-section"> <h3 class="section-title">历史记录</h3> <div class="history-list"> <div v-for="(item, index) in state.history" :key="index" class="history-item"> <div class="history-time">{{ item.time }}</div> <div class="history-result">{{ item.result }}</div> </div> <div v-if="state.history.length === 0" class="empty-history"> 暂无历史记录 </div> </div> </div> </div> <!-- 中间内容区 --> <div class="center-panel"> <div class="upload-section"> <el-card class="upload-card"> <template #header> <div class="card-header"> <span>上传图片</span> <el-button type="text" @click="showExample">查看示例</el-button> </div> </template> <el-upload v-model="state.img" ref="uploadFile" class="avatar-uploader" action="http://localhost:9999/files/upload" :show-file-list="false" :on-success="handleAvatarSuccessone" drag> <div class="upload-area"> <el-icon v-if="!imageUrl" class="upload-icon"> <Plus /> </el-icon> <img v-else :src="imageUrl" class="uploaded-image" /> <div v-if="!imageUrl" class="upload-text"> <p>将图片拖拽到此处,或<em>点击上传</em></p> <p class="upload-tip">支持 JPG、PNG 格式,大小不超过 10MB</p> </div> </div> </el-upload> </el-card> </div> <div class="result-section" v-if="state.predictionResult.label"> <el-card class="result-card"> <template #header> <div class="card-header"> <span>检测结果</span> <el-button type="primary" @click="() => htmlToPDF('id', '检测报告')" size="small"> <i class="icon-download"></i> 导出报告 </el-button> </div> </template> <div class="result-content"> <div class="result-overview"> <div class="result-item"> <div class="result-icon diagnosis"></div> <div class="result-info"> <div class="result-label">诊断结果</div> <div class="result-value highlight">{{ state.predictionResult.label || '-' }}</div> </div> </div> <div class="result-item"> <div class="result-icon confidence"></div> <div class="result-info"> <div class="result-label">置信度</div> <div class="result-value accent">{{ state.predictionResult.confidence || '-' }}</div> </div> </div> <div class="result-item"> <div class="result-icon time"></div> <div class="result-info"> <div class="result-label">分析用时</div> <div class="result-value">{{ state.predictionResult.allTime ? `${state.predictionResult.allTime}` : '-' }}</div> </div> </div> </div> <div class="detailed-results"> <h4>详细分析</h4> <el-table :data="state.data" style="width: 100%"> <el-table-column prop="label" label="预测结果" align="center" /> <el-table-column prop="confidence" label="置信度" align="center" /> <el-table-column prop="allTime" label="用时(秒)" align="center" /> </el-table> </div> </div> </el-card> </div> </div> <!-- 右侧AI建议区 --> <div class="right-panel" v-if="state.predictionResult.suggestion"> <div class="panel-section"> <h3 class="section-title">AI建议</h3> <div class="ai-suggestion"> <div v-html="state.predictionResult.suggestion" class="markdown-body"></div> </div> <div class="suggestion-actions"> <el-button type="text" @click="copySuggestion"> <i class="icon-copy"></i> 复制建议 </el-button> <el-button type="text" @click="saveSuggestion"> <i class="icon-save"></i> 保存建议 </el-button> </div> </div> </div> </div> <!-- 底部状态栏 --> <div class="status-bar"> <div class="status-item"> <i class="icon-status"></i> <span>系统状态: 正常</span> </div> <div class="status-item"> <i class="icon-time"></i> <span>最后更新: {{ currentTime }}</span> </div> </div> </div> </template> <script setup lang="ts" name="brainDetection"> import { reactive, ref, onMounted, computed } from 'vue'; import type { UploadInstance, UploadProps } from 'element-plus'; import { ElMessage } from 'element-plus'; import request from '/@/utils/request'; import { Plus } from '@element-plus/icons-vue'; import { useUserInfo } from '/@/stores/userInfo'; import { storeToRefs } from 'pinia'; import { formatDate } from '/@/utils/formatTime'; import { htmlToPDF } from '/@/utils/pdf' import { marked } from "marked"; import { SocketService } from '/@/utils/socket'; const imageUrl = ref(''); const ai = ref(''); const conf = ref(60); const weight = ref(''); const uploadFile = ref<UploadInstance>(); const stores = useUserInfo(); const { userInfos } = storeToRefs(stores); // 新增功能:当前时间显示 const currentTime = computed(() => { return formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS'); }); const state = reactive({ loading: false, weight_items: [] as any, img: '', data: [] as any, history: [] as any, // 新增历史记录功能 predictionResult: { label: '', confidence: '', allTime: '', suggestion: '' as any }, ai_items: [ { value: 'DeepSeek', label: 'DeepSeek', }, { value: 'Qwen', label: 'Qwen', }, { value: '不使用AI', label: '不使用AI', }, ], form: { username: '', inputImg: null as any, weight: '', conf: null as any, ai: '', startTime: '' }, }); // 新增功能:格式化工具提示 const formatTooltip = (val: number) => { return val / 100 } // 新增功能:重置表单 const resetForm = () => { imageUrl.value = ''; state.img = ''; state.predictionResult = { label: '', confidence: '', allTime: '', suggestion: '' }; state.data = []; ai.value = ''; conf.value = 60; weight.value = ''; ElMessage.success('已重置表单'); }; // 新增功能:显示示例图片 const showExample = () => { ElMessage.info('示例功能开发中...'); }; // 新增功能:复制AI建议 const copySuggestion = () => { const suggestionText = state.predictionResult.suggestion.replace(/<[^>]*>/g, ''); navigator.clipboard.writeText(suggestionText).then(() => { ElMessage.success('建议已复制到剪贴板'); }); }; // 新增功能:保存AI建议 const saveSuggestion = () => { ElMessage.info('保存功能开发中...'); }; const socketService = new SocketService(); socketService.on('message', (data) => { console.log('Received message:', data); ElMessage({ message: data, type: 'success', duration: 3000 }) }); const handleAvatarSuccessone: UploadProps['onSuccess'] = (response, uploadFile) => { imageUrl.value = URL.createObjectURL(uploadFile.raw!); state.img = response.data; }; const getData = () => { request.get('/api/flask/file_names').then((res) => { if (res.code == 0) { res.data = JSON.parse(res.data); state.weight_items = res.data.weight_items; } else { ElMessage.error(res.msg); } }); }; const transformData = (rawData: any): any => { return rawData.label.map((label, index) => ({ allTime: rawData.allTime, confidence: rawData.confidence[index], label: label, })); } const upData = () => { state.loading = true; state.form.weight = weight.value; state.form.conf = (parseFloat(conf.value.toString()) / 100); state.form.username = userInfos.value.userName; state.form.inputImg = state.img; state.form.ai = ai.value; state.form.startTime = formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS'); request.post('/api/flask/predict', state.form).then((res) => { if (res.code == 0) { try { state.loading = false; res.data = JSON.parse(res.data); state.predictionResult.label = JSON.parse(res.data.label); state.predictionResult.confidence = JSON.parse(res.data.confidence); state.predictionResult.allTime = res.data.allTime; state.predictionResult.suggestion = marked(res.data.suggestion); state.data = transformData(state.predictionResult); // 新增功能:添加到历史记录 state.history.unshift({ time: currentTime.value, result: state.predictionResult.label }); // 限制历史记录数量 if (state.history.length > 5) { state.history.pop(); } // 覆盖原图片 if (res.data.outImg) { imageUrl.value = res.data.outImg; } } catch (error) { console.error('解析 JSON 时出错:', error); } ElMessage.success('检测完成!'); } else { state.loading = false; ElMessage.error(res.msg); } }); }; onMounted(() => { getData(); }); </script>

后端代码展示

详细功能展示视频

基于深度学习和千问|DeepSeek的护目镜佩戴检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+前后端分离+python)_哔哩哔哩_bilibili

基于深度学习和千问|DeepSeek的护目镜佩戴检测系统(web界面+YOLOv8/YOLOv10/YOLOv11/YOLOv12+前后端分离+python)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1hEcsz3Eek/?vd_source=549d0b4e2b8999929a61a037fcce3b0fhttps://www.bilibili.com/video/BV1hEcsz3Eek/

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询