基于YOLO11实现明厨亮灶系统实时检测【多场景数据+模型训练、推理、导出】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、简介
  • 二、数据集构建与处理
    • 2.1 数据集概况
    • 2.2 数据集结构
    • 2.3 数据集示例分布
  • 三、环境搭建、验证
    • 3.1 环境搭建
    • 3.2 验证
  • 四、模型训练、评估及推理
  • 4.1 配置文件dataset.yaml
  • 4.2 模型训练
  • 4.3 性能评估
  • 4.4 模型推理
  • 五、模型部署
  • 5.1 onnx模型
  • 5.2 安卓模型部署

一、简介

在“明厨亮灶”食品安全监管体系下,后厨环境的实时监控已成为行业标准。然而,传统人工巡检方式存在检测效率低、实时性差、易漏检等痛点。对于厨师安全着装,以及老鼠,蟑螂等害虫,实现快速精准检测,以保证食品安全至关重要。
本文基于最新的YOLOv11算法,结合大规模高质量标注数据集,提供一套完整的厨房鼠患智能检测解决方案。

二、数据集构建与处理

2.1 数据集概况

数据规模:35953张高质量图像
标注格式:YOLO TXT
类别设置:14类别 [‘cockroach’,‘hairnet’, ‘no_gloves’, ‘no_hat’,‘rat’,‘with_mask’,‘without_mask’,‘smoke’,‘phone’,‘overflow’,‘garbage’,‘garbage_bin’,‘chef_uniform’,‘chef_hat’]
场景覆盖:监控视角、手机摄像头视角、多光照条件
数据划分:训练集/验证集/测试集 = 7:2:1

2.2 数据集结构

kitchen_dataset/ ├── train/ │ ├── images/ # 训练集图像 │ └── labels/ # YOLO格式标注 ├── val/ │ ├── images/ # 验证集图像 │ └── labels/ # YOLO格式标注 ├── test/ │ ├── images/ # 测试集图像 │ └── labels/ # YOLO格式标注 └── dataset.yaml # 数据集配置文件

2.3 数据集示例分布

根据统计本数据集共包含14个目标检测类别,总计超6W个标注实例。各类别实例分布呈现出显著的不均衡特征

三、环境搭建、验证

3.1 环境搭建

#1. 安装Anaconda Prompt、Pycharm#2. 创建python环境conda create -n YOLOv11python=3.8.20 -y#3. 激活环境conda activate YOLOv11#4. 安装ultralytics和pytorchpipinstalltorch==1.13.1+cu116torchvision==0.14.1+cu116torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116 -i https://pypi.tuna.tsinghua.edu.cn/simple/ pipinstallultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple#5. 预训练权重下载wgethttps://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s.pt

3.2 验证

使用指令或者创建infer.py进行推理

yolo predictmodel=yolo11s.ptsources=“https://ultralytics.com/images/bus.jpg”
fromultralyticsimportYOLO#加载预训练模型(会自动下载 yolov8n.pt)model=YOLO("yolov8s.pt")#预测图片results=model.predict(source="bus.jpg",# 输入源:图片/视频/目录/摄像头(0)conf=0.5,# 置信度阈值save=True,# 保存结果show=True,# 显示结果(适用于Jupyter Notebook)device="cuda:0"# 使用GPU(改为 "cpu" 则用CPU))#打印结果forresultinresults:print(result.boxes)# 检测到的边界框信息

以下结果确认环境是没有问题

四、模型训练、评估及推理

4.1 配置文件dataset.yaml

path:/path/kitchen_datasettrain:train/imagesval:val/imagestest:test/imagesnc:14# 类别数量# 类别名称names:['cockroach','hairnet','no_gloves','no_hat','rat','with_mask','without_mask','smoke','phone','overflow','garbage','garbage_bin','chef_uniform','chef_hat']# 类别名称

4.2 模型训练

数据准备完成后,通过一下指令或者创建train.py文件进行模型训练,data参数用于加载数据集的配置文件,epochs参数用于调整训练的轮数,batch参数用于调整训练的批次大小(根据个人配置,进行调整)

yolo trainmodel=yolo11s.ptdata=dataset.yamlepochs=300imgsz=640batch=32
fromultralyticsimportYOLO# 加载模型model=YOLO('yolo11s.pt')# 从头开始或使用预训练权重# 训练results=model.train(data='dataset.yaml',# 数据集配置文件epochs=300,# 训练轮数imgsz=640,# 图像大小batch=32,# 批量大小device=0,# GPU设备 (0,1,2,3 或 'cpu')workers=8,# 数据加载线程数optimizer='AdamW',# 优化器 (SGD, Adam, AdamW, etc.)lr0=0.01,# 初始学习率lrf=0.01,# 最终学习率系数momentum=0.937,# SGD动量weight_decay=0.0005,# 权重衰减warmup_epochs=3.0,# 热身轮数warmup_momentum=0.8,# 热身动量box=7.5,# 框损失权重cls=0.5,# 分类损失权重dfl=1.5,# DFL损失权重pose=12.0,# 姿态损失权重(仅姿态模型)kobj=1.0,# 关键点对象损失权重label_smoothing=0.0,# 标签平滑dropout=0.0,# Dropout(分类任务)verbose=True,# 打印详细信息seed=0,# 随机种子deterministic=True,# 确定性训练single_cls=False,# 单类别训练rect=False,# 矩形训练cos_lr=False,# 余弦学习率调度close_mosaic=10,# 最后N轮关闭马赛克增强resume=False,# 恢复训练amp=True,# 自动混合精度fraction=1.0# 数据集比例)

4.3 性能评估

在深度学习中,我们通常用损失函数下降的曲线来观察模型训练的情况,避免过拟合和欠拟合现象。在训练结束后我们可以在run/detect中进行查看,结果如下所示:

4.4 模型推理

我们可以利用以上3.2章节创建的infer.py来进行推理,更换两个地方,将model=“我们训练好的模型”,通常在run/detect/exp/weights/best.pt,以及 source=“需要推理的图片路径”,source可以指定单张图片/图片文件夹
例如:

yolo predictmodel=run/detect/exp1/weights/best.ptsources=/data/Imgs



五、模型部署

5.1 onnx模型

  1. onnx模型量化
fromultralyticsimportYOLOimportonnx# 加载预训练模型model=YOLO('yolo11s.pt')# 可以是 yolov8s.pt, yolov8m.pt 等# 导出为ONNX格式success=model.export(format='onnx',imgsz=640,# 输入图像尺寸dynamic=True,# 支持动态batch sizesimplify=True,# 简化模型opset=12,# ONNX opset版本half=False,# 是否导出FP16,量化时建议False)
  1. onnx模型推理
importcv2importnumpyasnpimportonnxruntimeasort#1. 加载ONNX模型model_path="yolo11s.onnx"session=ort.InferenceSession(model_path)#2. 加载并预处理图像img_path="test.jpg"# 改为你的测试图片路径img=cv2.imread(img_path)# 调整到640x640input_img=cv2.resize(img,(640,640))input_img=input_img.transpose(2,0,1)# HWC -> CHWinput_img=input_img.astype(np.float32)/255.0# 归一化input_img=np.expand_dims(input_img,axis=0)# 添加batch维度# 3. 执行推理input_name=session.get_inputs()[0].name outputs=session.run(None,{input_name:input_img})[0]# 获取第一个输出# 4. 解析检测结果detections=outputs[0]# shape: (84, 8400)boxes=[]confidences=[]class_ids=[]# 遍历所有8400个预测foriinrange(detections.shape[1]):# 获取类别分数scores=detections[4:,i]class_id=np.argmax(scores)confidence=scores[class_id]# 过滤低置信度ifconfidence>0.5:# 获取边界框 (cx, cy, w, h 格式)cx,cy,w,h=detections[0:4,i]# 转换为角点格式x1=int((cx-w/2)*img.shape[1]/640)# 缩放回原始尺寸y1=int((cy-h/2)*img.shape[0]/640)x2=int((cx+w/2)*img.shape[1]/640)y2=int((cy+h/2)*img.shape[0]/640)boxes.append([x1,y1,x2,y2])confidences.append(float(confidence))class_ids.append(class_id)# 5. 应用NMS (简化版)indices=cv2.dnn.NMSBoxes(boxes,confidences,0.5,0.4)# 6. 绘制检测框foriinindices:ifhasattr(i,'__len__'):# 处理不同版本的返回格式i=i[0]box=boxes[i]conf=confidences[i]class_id=class_ids[i]# 绘制矩形框cv2.rectangle(img,(box[0],box[1]),(box[2],box[3]),(0,255,0),2)# 添加标签label=f"{class_id}:{conf:.2f}"cv2.putText(img,label,(box[0],box[1]-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)# 7. 保存并显示结果cv2.imwrite("result.jpg",img)print(f"检测到{len(indices)}个目标")# 显示图像(可选)cv2.imshow("Detection Result",img)cv2.waitKey(0)cv2.destroyAllWindows()

5.2 安卓模型部署

可参考一下博客,完成yolo11安卓部署
【ultralytics最新版本】Android部署算法(含yolo11)万字完结篇


送你们一条美丽的--分割线--

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1152306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商多语言客服实战:用HY-MT1.5-1.8B快速搭建翻译系统

电商多语言客服实战:用HY-MT1.5-1.8B快速搭建翻译系统 1. 背景与业务痛点 随着跨境电商的迅猛发展,企业面临的客户语言多样性问题日益突出。传统人工翻译成本高、响应慢,而通用机器翻译API在专业术语处理、上下文连贯性和格式保留方面表现不…

HY-MT1.5-1.8B功能测评:小模型如何吊打商业API

HY-MT1.5-1.8B功能测评:小模型如何吊打商业API 1. 引言 在多语言交流日益频繁的今天,高质量、低延迟的翻译服务已成为刚需。然而,主流商业翻译API(如Google Translate、DeepL、Azure Translator)虽然效果稳定&#x…

MediaPipe Pose指南:33点

MediaPipe Pose指南:33点 1. 章节概述 随着AI在视觉领域的深入发展,人体姿态估计(Human Pose Estimation)已成为智能健身、动作捕捉、虚拟现实和人机交互等场景的核心技术之一。其中,Google推出的 MediaPipe Pose 模…

零基础掌握AD画PCB的物理规则设置与布线约束

从零开始掌握AD画PCB的物理规则与布线约束:新手避坑指南你有没有遇到过这种情况——辛辛苦苦把板子布完了,结果一跑DRC(设计规则检查),弹出几十甚至上百条错误?短路、间距不够、差分不对称、长度不匹配………

AI人体骨骼检测自动标注:为训练集生成关键点标签教程

AI人体骨骼检测自动标注:为训练集生成关键点标签教程 1. 引言:AI 人体骨骼关键点检测的工程价值 在计算机视觉领域,人体姿态估计(Human Pose Estimation)是构建智能健身、动作识别、虚拟试衣和人机交互系统的核心技术…

人体骨骼检测新选择:MediaPipe高精度轻量模型实战推荐

人体骨骼检测新选择:MediaPipe高精度轻量模型实战推荐 1. 引言:AI 人体骨骼关键点检测的现实需求 在智能健身、动作捕捉、虚拟试衣和人机交互等前沿应用中,人体骨骼关键点检测(Human Pose Estimation)正成为核心技术…

AI骨骼关键点数据加密传输:HTTPS部署与证书配置

AI骨骼关键点数据加密传输:HTTPS部署与证书配置 1. 引言:AI人体骨骼关键点检测的隐私挑战 随着AI在健身指导、动作识别、虚拟试衣等场景中的广泛应用,人体骨骼关键点检测技术正逐步从实验室走向真实业务环境。基于Google MediaPipe Pose模型…

AI隐私卫士部署案例:电商用户保护

AI隐私卫士部署案例:电商用户保护 1. 背景与挑战:电商场景下的用户隐私风险 在电商平台的日常运营中,用户生成内容(UGC)如商品评价、晒单图片、直播截图等,常常包含大量真实人脸信息。这些图像一旦未经处…

MediaPipe自动化测试脚本:CI/CD集成部署案例

MediaPipe自动化测试脚本:CI/CD集成部署案例 1. 引言:AI人体骨骼关键点检测的工程化挑战 随着AI视觉技术在健身指导、动作纠正、虚拟试衣等场景中的广泛应用,人体骨骼关键点检测已成为计算机视觉领域的重要基础能力。Google推出的MediaPipe…

MediaPipe Pose性能测试:CPU推理速度对比分析

MediaPipe Pose性能测试:CPU推理速度对比分析 1. 引言:AI人体骨骼关键点检测的工程挑战 随着计算机视觉技术的发展,人体姿态估计(Human Pose Estimation)已成为智能健身、动作捕捉、虚拟现实和安防监控等场景的核心能…

小白必看:用HY-MT1.5-1.8B零代码实现网页翻译插件

小白必看:用HY-MT1.5-1.8B零代码实现网页翻译插件 在多语言交流日益频繁的今天,一个高效、准确且易于部署的翻译工具已成为开发者和普通用户共同的需求。腾讯混元于2025年12月开源的轻量级多语神经翻译模型 HY-MT1.5-1.8B,凭借“手机端1GB内…

AI人脸隐私卫士应用实战:多场景隐私保护方案

AI人脸隐私卫士应用实战:多场景隐私保护方案 1. 引言 1.1 业务背景与隐私挑战 在社交媒体、公共监控、医疗影像和企业协作等场景中,图像数据的广泛使用带来了巨大的便利,但同时也引发了严重的个人隐私泄露风险。尤其在多人合照、会议记录或…

MediaPipe开源模型优势分析:轻量稳定适合边缘设备部署

MediaPipe开源模型优势分析:轻量稳定适合边缘设备部署 1. 技术背景与问题提出 随着计算机视觉技术的快速发展,人体姿态估计(Human Pose Estimation)已成为智能健身、动作捕捉、人机交互和安防监控等场景中的核心技术之一。传统深…

一文说清AXI DMA与普通DMA性能差异

AXI DMA为何碾压普通DMA?一文讲透高性能数据搬运的底层逻辑 你有没有遇到过这样的场景:ADC采样速率明明高达100Msps,结果系统只能稳定读出30MB/s的数据;或者视频处理时CPU占用飙升到80%,却只是在做内存拷贝&#xff1f…

MediaPipe Pose部署教程:智能体育裁判辅助系统

MediaPipe Pose部署教程:智能体育裁判辅助系统 1. 引言 1.1 AI 人体骨骼关键点检测的现实需求 在现代体育训练与竞赛中,动作规范性评估已成为提升运动员表现和预防运动损伤的关键环节。传统依赖人工观察的方式存在主观性强、反馈滞后等问题。随着人工…

HY-MT1.5-1.8B性能优化:让边缘设备翻译速度提升3倍

HY-MT1.5-1.8B性能优化:让边缘设备翻译速度提升3倍 1. 引言 在全球化交流日益频繁的背景下,实时、高质量的多语言翻译已成为智能终端和边缘计算场景的核心能力。然而,传统大模型往往受限于高显存占用与长延迟,难以在手机、IoT设…

工业环境下LCD1602液晶显示屏程序稳定性优化指南

工业环境下,如何让LCD1602“死不了”?——一个被低估的显示模块的极限抗压实战你有没有遇到过这样的场景:一台部署在配电柜里的温控仪,明明程序跑得好好的,可一到现场开机,LCD1602屏幕要么黑着,…

新手教程:AUTOSAR网络管理通信机制一文说清

AUTOSAR网络管理:一文搞懂车载ECU如何“集体睡觉”和“协同醒来” 你有没有想过,当你熄火锁车后,一辆现代智能汽车里成百上千个电子控制单元(ECU)是如何默契地进入低功耗模式的?又为什么轻轻一拉车门把手&a…

AI人体骨骼检测实际项目应用:舞蹈教学反馈系统搭建案例

AI人体骨骼检测实际项目应用:舞蹈教学反馈系统搭建案例 1. 引言:AI赋能舞蹈教学的创新实践 1.1 舞蹈教学中的痛点与技术机遇 传统舞蹈教学高度依赖人工观察和经验判断,教师难以对每位学员的动作进行实时、精准的量化评估。尤其在远程教学或…

Keil找不到自定义头文件?零基础也能懂的解决方案

Keil找不到头文件?别急,99%的问题出在这一步!你有没有遇到过这样的场景:代码写得好好的,信心满满地点下“编译”,结果编译器冷冰冰地甩出一句:fatal error: my_driver.h file not found#include…