AI赋能道路巡检开启智慧养护新纪元,基于YOLOv11全系列【n/s/m/l/x】参数模型开发构建道路交通场景下水泥路面坑洼开裂缺陷智能检测识别系统

在现代社会,每日通勤道路交通构成了城市与社会运转的重要脉络。无数车辆在道路上川流不息,承载着人们的出行需求与经济活动的活力。而这一切平稳安全运行的基础,便是安全平稳的路面。然而,传统道路路面的日常巡检、养护与维修工作面临着诸多挑战,亟待借助新兴技术实现突破。长期以来,道路养护工作主要依赖专业的施工团队进行例行巡护。他们肩负着检查路面状况、及时发现并处理问题的重任。但专业化的运行模式存在明显的局限性。一方面,专业化运行成本相对较高,需要投入大量的人力、物力和时间成本来维持日常巡检工作。专业的养护人员需要定期对道路进行巡查,这不仅耗费人力,还受到诸多因素的制约。例如,恶劣的气象条件如暴雨、暴雪、大雾等,会严重影响巡检工作的开展,导致无法做到实时高效全天候的作业。在这样的情况下,路面出现的潜在安全隐患可能无法及时被发现并处理,从而给道路交通安全带来威胁。

随着 AI 智能化技术的快速发展和普及,传统道路交通养护行业迎来了变革的契机。越来越多的传统行业开始引入 AI 智能化技术来赋能生产作业,道路交通养护也不例外。我们可以充分利用道路两侧已经安装好的大量摄像头设备,这些摄像头原本用于交通监控等用途,如今可以发挥更大的价值。通过这些摄像头采集路面图像数据,为后续的智能化处理提供基础数据支持。接下来,由专业的标注团队对采集到的路面图像数据进行标注处理。标注工作是智能化检测识别模型开发的关键环节,标注团队需要对图像中的各种路面状况进行精准标注,例如坑洞、裂缝等常见问题。这些标注好的数据将作为训练素材,用于开发构建智能化的检测识别模型。通过深度学习等先进算法,模型能够学习到不同路面问题的特征,从而具备对路面状况进行智能检测分析的能力。当模型开发完成后,将其部署在边缘端算力设备上面。边缘端算力设备能够实时处理来自路面两侧摄像头传入的画面,对当前路面进行智能检测分析。这一过程实现了对路面状况的实时监测,一旦发现路面出现坑洞、裂缝等问题,系统能够迅速做出反应,及时发出隐患预警信息。这些预警信息会被发送到中央端,由中央端根据预警情况发送作业指令到专业的运营团队。运营团队接到指令后,可以迅速采取后续处理措施,如安排维修人员前往现场进行修复等。

本文正是在这样的思考背景下,想要从实验的角度来探索构建道路交通场景下的路面坑洼开裂等病害缺陷智能化检测识别系统,在前文中我们已经进行了相关的开发实践,感兴趣的话可以自行移步阅读即可:

《AI赋能道路巡检开启智慧养护新纪元,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建道路交通场景下水泥路面坑洼开裂缺陷智能检测识别系统》

《AI赋能道路巡检开启智慧养护新纪元,基于YOLOv7全系列【tiny/l/x】参数模型开发构建道路交通场景下水泥路面坑洼开裂缺陷智能检测识别系统》

《AI赋能道路巡检开启智慧养护新纪元,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建道路交通场景下水泥路面坑洼开裂缺陷智能检测识别系统》

《AI赋能道路巡检开启智慧养护新纪元,基于YOLOv9全系列【yolov9/t/s/m/c/e】参数模型开发构建道路交通场景下水泥路面坑洼开裂缺陷智能检测识别系统》

《AI赋能道路巡检开启智慧养护新纪元,基于YOLOv10全系列【n/s/m/b/l/x】参数模型开发构建道路交通场景下水泥路面坑洼开裂缺陷智能检测识别系统》

本文主要是想要基于YOLOv11系列的模型来进行相应的开发实践,首先看下实例效果:

接下来看下实例数据:

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: 3    # 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曲线】

【训练可视化】

感兴趣的话也都可以自行动手尝试下!本文仅作为抛砖引玉,从实验的角度进行基础的实践开发尝试,距离真正落地应用还有很长的路要走,不过科技发展的趋势就应该是赋能作业生产,提质增效的同时降低安全隐患。借助这一智能化的道路交通养护模式,能够显著提升人工作业精度。以往依赖人工巡检时,由于受到多种因素影响,可能存在漏检、误检等情况,而智能化检测识别模型能够以更高的精度和稳定性进行检测。同时,这一模式还能有效降低庞大作业队伍的用人成本。传统养护工作中需要大量人力进行日常巡检,现在通过智能化手段,部分巡检工作可以由系统自动完成,从而减少了对人力的依赖,降低了人力成本。智能化赋能道路交通养护,不仅提升了养护工作的效率和质量,更为道路交通安全提供了有力保障。未来,随着 AI 技术的进一步发展和应用深化,道路交通养护行业有望实现更加智能化、高效化和安全化的运行模式,为人们的出行创造更加优质的道路环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值