当前位置: 首页 > news >正文

AI助力商清感知智能化,基于YOLOv11全系列【n/s/m/l/x】参数模型开发构建商清厕所马桶场景下的智能化污渍、异物检测识别预警系统

借助于智能化的检测识别模型来构建办商清景下的智能化检测识别分析,这里主要是想要从实验性质的角度出发,来构建智能化的检测识别系统,接下来看下实例效果:

ultralytics项目自发布以来目前已经逐步迭代至YOLOv11了,不可谓不快速,官方的项目在这里,如下所示:

YOLO11是Ultralytics YOLO系列实时目标检测器的次新版本,以其尖端的准确性、速度和效率重新定义了可能性。基于之前YOLO版本的显著进步,YOLO11在架构和训练方法上引入了重大改进,使其成为广泛计算机视觉任务的多功能选择。

【主要特点】

增强的特征提取:YOLO11采用了改进的骨干和颈部架构,增强了特征提取能力,以实现更精确的目标检测和复杂任务的性能。
优化的效率和速度:YOLO11引入了精炼的架构设计和优化的训练管道,提供更快的处理速度,并在准确性和性能之间保持最佳平衡。
更少的参数实现更高的准确性:通过模型设计的进步,YOLO11m在COCO数据集上实现了更高的平均精度(mAP),同时比YOLOv8m减少了22%的参数,使其在不影响准确性的情况下计算效率更高。
跨环境的适应性:YOLO11可以无缝部署在各种环境中,包括边缘设备、云平台和支持NVIDIA GPU的系统,确保最大的灵活性。
广泛支持的任务:无论是目标检测、实例分割、图像分类、姿态估计还是定向目标检测(OBB),YOLO11都设计用于应对多样化的计算机视觉挑战。

Ultralytics YOLO11在其前身的基础上引入了多项重大进步。关键改进包括:

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

YOLO11模型具有多功能性,支持广泛的计算机视觉任务,包括:

目标检测:识别和定位图像中的物体。
实例分割:检测物体并描绘其边界。
图像分类:将图像分类为预定义的类别。
姿态估计:检测和跟踪人体上的关键点。
定向目标检测(OBB):检测具有旋转的物体以提高精度。

YOLO11通过模型设计和优化技术的进步,实现了更少的参数实现更高的准确性。改进的架构允许高效的特征提取和处理,从而在COCO等数据集上实现更高的平均精度(mAP),同时比YOLOv8m减少了22%的参数。这使得YOLO11在不影响准确性的情况下计算效率更高,适合部署在资源受限的设备上,YOLO11设计用于适应各种环境,包括边缘设备。其优化的架构和高效的处理能力使其适合部署在边缘设备、云平台和支持NVIDIA GPU的系统上。这种灵活性确保了YOLO11可以在多样化的应用中使用,从移动设备上的实时检测到云环境中的复杂分割任务。

基础实例实现如下:

from ultralytics import YOLO #n model = YOLO("weights/yolo11n.pt") results = model.train(data='data/self.yaml', epochs=100, device=0,batch=32,workers=0,name="yolov11n") print("results: ", results) #s model = YOLO("weights/yolo11s.pt") results = model.train(data='data/self.yaml', epochs=100, device=0,batch=32,workers=0,name="yolov11s") print("results: ", results) #m model = YOLO("weights/yolo11m.pt") results = model.train(data='data/self.yaml', epochs=100, device=0,batch=32,workers=0,name="yolov11m") print("results: ", results) #l model = YOLO("weights/yolo11l.pt") results = model.train(data='data/self.yaml', epochs=100, device=0,batch=32,workers=0,name="yolov11l") print("results: ", results) #x model = YOLO("weights/yolo11x.pt") results = model.train(data='data/self.yaml', epochs=100, device=0,batch=32,workers=0,name="yolov11x") print("results: ", results)

这里我们依次选择n、s、m、l和x五款不同参数量级的模型来进行开发。

这里给出yolov11的模型文件如下:

# Parameters nc: 6 # number of classes scales: # model compound scaling constants, i.e. 'model=yolo11n.yaml' will call yolo11.yaml with scale 'n' # [depth, width, max_channels] n: [0.50, 0.25, 1024] # summary: 319 layers, 2624080 parameters, 2624064 gradients, 6.6 GFLOPs s: [0.50, 0.50, 1024] # summary: 319 layers, 9458752 parameters, 9458736 gradients, 21.7 GFLOPs m: [0.50, 1.00, 512] # summary: 409 layers, 20114688 parameters, 20114672 gradients, 68.5 GFLOPs l: [1.00, 1.00, 512] # summary: 631 layers, 25372160 parameters, 25372144 gradients, 87.6 GFLOPs x: [1.00, 1.50, 512] # summary: 631 layers, 56966176 parameters, 56966160 gradients, 196.0 GFLOPs # YOLO11n backbone backbone: # [from, repeats, module, args] - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2 - [-1, 1, Conv, [128, 3, 2]] # 1-P2/4 - [-1, 2, C3k2, [256, False, 0.25]] - [-1, 1, Conv, [256, 3, 2]] # 3-P3/8 - [-1, 2, C3k2, [512, False, 0.25]] - [-1, 1, Conv, [512, 3, 2]] # 5-P4/16 - [-1, 2, C3k2, [512, True]] - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 - [-1, 2, C3k2, [1024, True]] - [-1, 1, SPPF, [1024, 5]] # 9 - [-1, 2, C2PSA, [1024]] # 10 # YOLO11n head head: - [-1, 1, nn.Upsample, [None, 2, "nearest"]] - [[-1, 6], 1, Concat, [1]] # cat backbone P4 - [-1, 2, C3k2, [512, False]] # 13 - [-1, 1, nn.Upsample, [None, 2, "nearest"]] - [[-1, 4], 1, Concat, [1]] # cat backbone P3 - [-1, 2, C3k2, [256, False]] # 16 (P3/8-small) - [-1, 1, Conv, [256, 3, 2]] - [[-1, 13], 1, Concat, [1]] # cat head P4 - [-1, 2, C3k2, [512, False]] # 19 (P4/16-medium) - [-1, 1, Conv, [512, 3, 2]] - [[-1, 10], 1, Concat, [1]] # cat head P5 - [-1, 2, C3k2, [1024, True]] # 22 (P5/32-large) - [[16, 19, 22], 1, Detect, [nc]] # Detect(P3, P4, P5)

实验阶段我们保持了相同的参数设置,等待长时期的训练过程结束之后我们来对以上六款不同参数量级的模型进行纵向的对比分析,如下:

【Precision曲线】
精确率曲线(Precision Curve)是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。
精确率(Precision)是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。
绘制精确率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率和召回率。
将每个阈值下的精确率和召回率绘制在同一个图表上,形成精确率曲线。
根据精确率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察精确率曲线,我们可以根据需求确定最佳的阈值,以平衡精确率和召回率。较高的精确率意味着较少的误报,而较高的召回率则表示较少的漏报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
精确率曲线通常与召回率曲线(Recall Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

【Recall曲线】
召回率曲线(Recall Curve)是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。
召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度(Sensitivity)或真正例率(True Positive Rate)。
绘制召回率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的召回率和对应的精确率。
将每个阈值下的召回率和精确率绘制在同一个图表上,形成召回率曲线。
根据召回率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察召回率曲线,我们可以根据需求确定最佳的阈值,以平衡召回率和精确率。较高的召回率表示较少的漏报,而较高的精确率意味着较少的误报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
召回率曲线通常与精确率曲线(Precision Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

【mAP0.5】
mAP0.5,也被称为mAP@0.5或AP50,指的是当Intersection over Union(IoU)阈值为0.5时的平均精度(mean Average Precision)。IoU是一个用于衡量预测边界框与真实边界框之间重叠程度的指标,其值范围在0到1之间。当IoU值为0.5时,意味着预测框与真实框至少有50%的重叠部分。
在计算mAP0.5时,首先会为每个类别计算所有图片的AP(Average Precision),然后将所有类别的AP值求平均,得到mAP0.5。AP是Precision-Recall Curve曲线下面的面积,这个面积越大,说明AP的值越大,类别的检测精度就越高。
mAP0.5主要关注模型在IoU阈值为0.5时的性能,当mAP0.5的值很高时,说明算法能够准确检测到物体的位置,并且将其与真实标注框的IoU值超过了阈值0.5。

【mAP0.5:0.95】
mAP0.5:0.95,也被称为mAP@[0.5:0.95]或AP@[0.5:0.95],表示在IoU阈值从0.5到0.95变化时,取各个阈值对应的mAP的平均值。具体来说,它会在IoU阈值从0.5开始,以0.05为步长,逐步增加到0.95,并在每个阈值下计算mAP,然后将这些mAP值求平均。
这个指标考虑了多个IoU阈值下的平均精度,从而更全面、更准确地评估模型性能。当mAP0.5:0.95的值很高时,说明算法在不同阈值下的检测结果均非常准确,覆盖面广,可以适应不同的场景和应用需求。
对于一些需求比较高的场合,比如安全监控等领域,需要保证高的准确率和召回率,这时mAP0.5:0.95可能更适合作为模型的评价标准。
综上所述,mAP0.5和mAP0.5:0.95都是用于评估目标检测模型性能的重要指标,但它们的关注点有所不同。mAP0.5主要关注模型在IoU阈值为0.5时的性能,而mAP0.5:0.95则考虑了多个IoU阈值下的平均精度,从而更全面、更准确地评估模型性能。

【loss曲线】
在深度学习的训练过程中,loss函数用于衡量模型预测结果与实际标签之间的差异。loss曲线则是通过记录每个epoch(或者迭代步数)的loss值,并将其以图形化的方式展现出来,以便我们更好地理解和分析模型的训练过程。

【F1值曲线】
F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)、召回率(Recall)和F1分数的关系图来帮助我们理解模型的整体性能。
F1分数是精确率和召回率的调和平均值,它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点,以选择最佳的阈值。
绘制F1值曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率、召回率和F1分数。
将每个阈值下的精确率、召回率和F1分数绘制在同一个图表上,形成F1值曲线。
根据F1值曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
F1值曲线通常与接收者操作特征曲线(ROC曲线)一起使用,以帮助评估和比较不同模型的性能。它们提供了更全面的分类器性能分析,可以根据具体应用场景来选择合适的模型和阈值设置。

综合五款不同参数量级模型的开发实验对比结果来看:5款模型没有拉开较为明显的差距,综合对比考虑最终选择使用yolov11s来作为线上推理模型。

接下来看下yolov11s模型的详细情况。

【离线推理实例】

【Batch实例】

【混淆矩阵】

【F1值曲线】

【Precision曲线】

【PR曲线】

【Recall曲线】

【训练可视化】

http://www.jsqmd.com/news/1058151/

相关文章:

  • Debian 10 系统级部署 Jupyter Notebook 最佳实践
  • Selenium自动化测试入门:彻底解决ChromeDriver配置与版本匹配难题
  • 快马平台与Playwright结合:打造高效电商E2E自动化测试方案
  • 多模态大模型在食品感官评估中的应用:从技术原理到工程实践
  • 恒力机械五金集团统率 ERP、统率 WMS、统率 MES - 品牌发掘
  • Ubuntu 18.04 安装 Jekyll 的系统级兼容性问题与解决方案
  • 讲真的2026年潍坊劳动律师推荐 这5位律师各有专长信得过 - 本地品牌推荐
  • 2025级Java面向对象课程 NCHU_数字电路模拟程序4~6作业总结 - 25201638
  • 坐标系统详解
  • 终极Nintendo Switch注入工具:TegraRcmGUI完整指南
  • 2026中山AI搜索排名优化公司实力榜单发布!本土直营、技术自研、效果实测权威排名 - Guangdong1
  • 恒泰五金统率 ERP、统率 WMS、统率 MES - 品牌发掘
  • 2026潍坊漏水检测维修本地口碑防水商家榜单:厨卫/阳台/屋面/地下室渗漏水维修,持证施工+明码实价,防水补漏公司TOP5推荐 - 即刻修防水
  • 从PowerPC到Power ISA:e600与e500嵌入式处理器架构迁移实战指南
  • 2026漳州漏水检测维修本地口碑防水商家榜单:厨卫/阳台/屋面/地下室渗漏水维修,持证施工+明码实价,防水补漏公司TOP5推荐 - 即刻修防水
  • 2026年南京厂房漏水修缮技术指南及合规服务商甄选 - 奔跑123
  • 2026漳州防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • Pytest测试类实战:从函数到类的工程化测试组织
  • 2026湛江漏水检测维修本地口碑防水商家榜单:厨卫/阳台/屋面/地下室渗漏水维修,持证施工+明码实价,防水补漏公司TOP5推荐 - 即刻修防水
  • 解放性能枷锁:OmenSuperHub带你深度掌控惠普OMEN游戏本
  • 空间计算操作
  • 2026年更新聚焦:菏泽市诚信小区道路灯品牌厂商甄选与奥广新能源解析 - 品牌鉴赏官2026
  • 让Windows文件管理器焕然一新:ExplorerBlurMica透明背景美化全攻略
  • 2026年当下湖南集训画室机构怎么选择:聚焦成果与体系的双重考量 - 品牌鉴赏官2026
  • 力拓紧固件统率 ERP、统率 WMS、统率 MES - 品牌发掘
  • incus切换清华镜像站
  • 基于NXQ1TXH5/101的5W Qi无线充电发射器设计全解析
  • 中山GEO优化咨询电话|融景科技中山本土直营对接方式与服务介绍 - Guangdong1
  • XUnity自动翻译器:5分钟快速上手,轻松实现Unity游戏多语言本地化
  • 德诚紧固件统率 ERP、统率 WMS、统率 MES委外加工全流程管控 - 品牌发掘