人工智能AI+YOLO安全帽智能检测系统 YOLO+DeepSeek+Pytorch+SpringBoot+Flask+Vue Python AI 微服务 + Java 业务主服务 利用了 Sprin
人工智能AIYOLO**安全帽智能检测系统YOLODeepSeekPytorchSpringBootFlaskVue可使用YOLOV11进行目标检测检测图片、视频、摄像头三种方式检测完成后并使用DeepSeek、Qwen等大模型对检测结果给出相关建议并可将检测报告导出为PDF文件。另外添加可视化界面对检测结果进行可视化显示。使用YOLO、DeepSeek、Qwen、Pytorch、SpringBoot、MyBatis-Plus、Vue3、Echarts、Ts、element-plus、Flask、Axios、MySQL等技术。附1.整理好的yolo格式的数据集2.详细的系统部署教程3.实时视频摄像头图片检测4.代码简洁有注释5.提供训练好的yolo权重**采用“Python AI 微服务 Java 业务主服务”的架构模式既保证了深度学习推理的高效性又利用了 SpringBoot 在企业级业务处理上的优势。️ 系统架构设计前端层 (Vue3 Element-Plus)负责视频流展示、检测结果可视化Echarts、用户交互及报告预览。业务后端层 (SpringBoot MyBatis-Plus)处理用户请求、文件管理、数据库操作、调用 AI 服务、生成 PDF 报告。AI 推理服务层 (Flask PyTorch)独立部署 YOLOv11 模型提供 HTTP 接口供后端调用负责图像/视频帧推理。大模型服务层 (DeepSeek/Qwen API)接收后端发送的检测统计数据生成安全建议文本。数据层 (MySQL)存储用户信息、检测记录、报告路径等。 项目目录结构SafetyHelmet-System/ ├── 01_Dataset/ # 数据集文件夹 │ ├── train/ # 训练集 │ ├── val/ # 验证集 │ └── classes.txt # 类别标签 (helmet, worker) ├── 02_AI_Service/ # Python Flask AI 服务 │ ├── weights/ # 存放训练好的 best.pt │ ├── app.py # Flask 启动入口 │ ├── detector.py # YOLOv11 推理逻辑封装 │ └── requirements.txt ├── 03_Backend/ # Java SpringBoot 后端 │ ├── src/main/java/com/safety/ │ │ ├── controller/ # 控制层 (接口) │ │ ├── service/ # 业务逻辑层 (调用 AI, 调用大模型, PDF生成) │ │ ├── entity/ # 实体类 │ │ └── mapper/ # 数据库映射 │ └── pom.xml ├── 04_Frontend/ # Vue3 前端 │ ├── src/ │ │ ├── views/ # 页面 (检测台, 报表页) │ │ ├── components/ # 组件 (视频播放器, 统计图表) │ │ └── api/ # Axios 接口封装 │ └── package.json └── 05_Docs/ # 文档 ├── 部署教程.md └── 数据库脚本.sql 核心代码模块实现1. AI 推理服务 (Python Flask YOLOv11)该服务负责“看”图返回 JSON 格式的结果。# 02_AI_Service/app.pyfromflaskimportFlask,request,jsonifyfromultralyticsimportYOLOimportcv2importnumpyasnpimportbase64 appFlask(__name__)# 加载训练好的权重# 假设你的类别是: 0: helmet, 1: workermodelYOLO(weights/best.pt)defdecode_image(image_data):# 解码 Base64 图片img_bytesbase64.b64decode(image_data)np_arrnp.frombuffer(img_bytes,np.uint8)returncv2.imdecode(np_arr,cv2.IMREAD_COLOR)app.route(/detect,methods[POST])defdetect():datarequest.json image_datadata.get(image)# 接收 Base64 图片ifnotimage_data:returnjsonify({error:No image provided}),400imgdecode_image(image_data)# YOLOv11 推理resultsmodel(img)detections[]forresultinresults:boxesresult.boxesforboxinboxes:# 获取坐标和类别x1,y1,x2,y2box.xyxy[0].tolist()clsint(box.cls[0])conffloat(box.conf[0])labelresult.names[cls]detections.append({class:label,confidence:round(conf,2),bbox:[int(x1),int(y1),int(x2),int(y2)]})returnjsonify({status:success,data:detections,image_shape:img.shape})if__name____main__:# 启动在 5000 端口app.run(host0.0.0.0,port5000)2. 业务后端 (SpringBoot - 核心逻辑)负责协调 AI 服务和 DeepSeek/Qwen。// 03_Backend/src/main/java/com/safety/service/DetectionService.javaServicepublicclassDetectionService{AutowiredprivateRestTemplaterestTemplate;// 用于调用 Flask// 1. 调用 AI 服务进行检测publicDetectionResultanalyzeImage(Stringbase64Image){StringaiUrlhttp://localhost:5000/detect;MapString,StringrequestMap.of(image,base64Image);// 调用 Python 服务ResponseEntityMapresponserestTemplate.postForEntity(aiUrl,request,Map.class);// 解析返回的检测结果...returnparseResult(response.getBody());}// 2. 调用 DeepSeek/Qwen 生成建议publicStringgetSafetyAdvice(DetectionResultresult){// 统计违规数量inthelmetCountresult.getHelmetCount();intworkerCountresult.getWorkerCount();// 构建提示词StringpromptString.format(当前场景检测到 %d 名工人%d 个安全帽。请根据建筑安全规范分析是否存在未佩戴安全帽的风险并给出3条简短的安全建议。,workerCount,helmetCount);// 调用大模型 API (伪代码)returnLlmClient.call(prompt);}// 3. 导出 PDF (使用 iText 或 OpenPDF)publicvoidexportPdf(DetectionResultresult,Stringadvice){// 生成 PDF 逻辑...}}3. 前端可视化 (Vue3 Echarts)!-- 04_Frontend/src/views/Dashboard.vue --templatedivclassdashboard!-- 视频/图片展示区 --divclassvideo-containerimgv-ifcurrentImage:srccurrentImagealt检测结果/canvasrefcanvasRefclassoverlay-canvas/canvas/div!-- 统计图表 --divclassstats-panelh3实时统计/h3divrefchartRefstylewidth:100%;height:300px;/div/div!-- 大模型建议区 --divclassai-adviceh3DeepSeek 安全建议/h3p{{ safetyAdvice }}/p/div/div/templatescriptsetupimport{ref,onMounted}fromvue;import*asechartsfromecharts;importaxiosfromaxios;constchartRefref(null);constsafetyAdviceref();// 绘制检测框的函数constdrawBoxes(detections){constctxcanvasRef.value.getContext(2d);// 清除画布并重绘...detections.forEach(det{ctx.strokeStyledet.classhelmet?green:red;ctx.strokeRect(...det.bbox);});}// 上传图片并检测constuploadAndDetectasync(file){// 1. 转 Base64// 2. 发送给 SpringBootconstresawaitaxios.post(/api/detect,{image:base64});// 3. 更新图表和建议updateChart(res.data);safetyAdvice.valueres.data.advice;}/script 部署与使用教程第一步准备数据集与训练将整理好的 YOLO 格式数据集放入01_Dataset目录。在02_AI_Service目录下安装依赖pip install ultralytics flask opencv-python。运行训练代码参考上一轮对话中的训练脚本将生成的best.pt放入02_AI_Service/weights/。第二步启动 AI 服务进入02_AI_Service目录。运行命令python app.py。确保终端显示Running on http://0.0.0.0:5000。第三步配置数据库与后端在 MySQL 中创建数据库safety_db并运行05_Docs/数据库脚本.sql。修改03_Backend的application.yml配置数据库账号密码。启动 SpringBoot 项目。第四步启动前端进入04_Frontend目录。运行npm install安装依赖。运行npm run dev启动前端服务。访问http://localhost:5173即可看到可视化界面。✨ 系统亮点总结全栈闭环从数据采集、模型训练、推理检测到业务展示、报告生成流程完整。AI 赋能不仅检测“是什么”YOLO还能分析“怎么办”DeepSeek/Qwen提升了系统的智能化水平。解耦设计Python 和 Java 分离互不干扰方便后续单独升级模型或业务逻辑。可视化强Echarts 图表结合 Canvas 绘图直观展示工地安全状况。以上文字及代码仅供参考学习使用。