AI赋能基础设施巡检,技术革新助力水泥建筑缺陷检测分析,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建水泥建筑场景下裂缝缺陷分割检测识别系统

在现代化城市建设的宏伟蓝图中,公路、隧道、桥梁、大坝等水泥类基础设施如同城市的血脉,支撑着社会的正常运转与经济的蓬勃发展。然而,时间的侵蚀与自然的考验使得这些建筑不可避免地面临老化与损坏的问题,裂缝作为其中最为常见的病害之一,其及时发现与有效修复对于保障基础设施安全、延长使用寿命至关重要。传统的人工巡检模式,虽依赖经验丰富的工程师,却受限于效率、成本及环境因素的制约,难以实现高效、全面的监测。随着人工智能(AI)技术的飞速崛起,一场巡检模式的革命正在悄然发生。AI技术的引入,为基础设施巡检带来了前所未有的变革机遇,不仅极大地提升了检测效率与精度,还实现了巡检作业的智能化、自动化与全天候覆盖。AI巡检系统的核心在于大数据与深度学习技术的应用。首先,通过遍布基础设施周边的摄像头网络及无人机航拍,我们能够获取海量、高清、多角度的裂缝缺陷图像数据。这些数据是AI学习的宝贵资源,它们记录了裂缝的形态、位置、发展趋势等关键信息。随后,专业的众包团队对这些数据进行精准标注,为AI模型提供了高质量的训练样本。这一过程虽然繁琐,但确保了模型学习的准确性和可靠性。经过反复训练与优化,AI模型能够学会从复杂的图像中自动识别并分割出裂缝区域,甚至能够进一步分析裂缝的宽度、面积、长度等量化指标,为后续的修复工作提供详尽的数据支持,让工程作业团队能够更加科学有效地进行资源配置,避免人力资源等浪费。

本文正是基于这样的背景考虑,想要尝试从实验的角度来开发构建水泥类基础建筑裂缝识别分析系统,探索技术落地的可行性,分析实际的效果体验,本文是前文的延续:

《AI赋能基础设施巡检,技术革新助力水泥建筑缺陷检测分析,基于YOLOv8模型开发构建水泥建筑场景下裂缝缺陷分割检测识别系统》

在前文中,我们受限于时间和算力的限制,仅开发构建实验了最为轻量级的n系列的模型,本文中我们陆续完成了其余四款不同参数量级模型的开发实验。

YOLOv8官方项目地址在这里,如下所示:

目前已经超过了2.6w的star量, 可见非常受欢迎。

官方提供的预训练模型如下所示:

Modelsize
(pixels)
mAPbox
50-95
mAPmask
50-95
Speed
CPU ONNX
(ms)
Speed
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n-seg64036.730.596.11.213.412.6
YOLOv8s-seg64044.636.8155.71.4711.842.6
YOLOv8m-seg64049.940.8317.02.1827.3110.2
YOLOv8l-seg64052.342.6572.42.7946.0220.5
YOLOv8x-seg64053.443.4712.14.0271.8344.1

这里我们一次性给出来整个系列五款不同参数量级的模型文件

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8-seg instance segmentation model. For Usage examples see https://docs.ultralytics.com/tasks/segment

# Parameters
nc: 1  # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n-seg.yaml' will call yolov8-seg.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.33, 0.25, 1024]
  s: [0.33, 0.50, 1024]
  m: [0.67, 0.75, 768]
  l: [1.00, 1.00, 512]
  x: [1.00, 1.25, 512]

# YOLOv8.0n 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, 3, C2f, [128, True]]
  - [-1, 1, Conv, [256, 3, 2]]  # 3-P3/8
  - [-1, 6, C2f, [256, True]]
  - [-1, 1, Conv, [512, 3, 2]]  # 5-P4/16
  - [-1, 6, C2f, [512, True]]
  - [-1, 1, Conv, [1024, 3, 2]]  # 7-P5/32
  - [-1, 3, C2f, [1024, True]]
  - [-1, 1, SPPF, [1024, 5]]  # 9

# YOLOv8.0n head
head:
  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 6], 1, Concat, [1]]  # cat backbone P4
  - [-1, 3, C2f, [512]]  # 12

  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 4], 1, Concat, [1]]  # cat backbone P3
  - [-1, 3, C2f, [256]]  # 15 (P3/8-small)

  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 12], 1, Concat, [1]]  # cat head P4
  - [-1, 3, C2f, [512]]  # 18 (P4/16-medium)

  - [-1, 1, Conv, [512, 3, 2]]
  - [[-1, 9], 1, Concat, [1]]  # cat head P5
  - [-1, 3, C2f, [1024]]  # 21 (P5/32-large)

  - [[15, 18, 21], 1, Segment, [nc, 32, 256]]  # Segment(P3, P4, P5)

我们这里的目标只有1个类别就是crack。

实验阶段我们保持完全相同的参数设置,等待五款参数量级的模型全部开发训练完成后来对其进行全方位各指标的对比分析。

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

因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

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

同样因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

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

同样因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

【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值,并将其以图形化的方式展现出来,以便我们更好地理解和分析模型的训练过程。

同样因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

整体对比分析来看:不难看出来基本上五款不同参数量级的模型之间没有拉开明显的差距,如果综合考虑参数量来说,n和s系列的模型更具性价比一些。

完成上述单独指标的对比分析后,我们依次了整体指标结果与单独每个模型的对比分析结果,如下所示:

【Precision曲线】

同样因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

【Recall曲线】

同样因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

【F1曲线】

同样因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

【mAP0.5曲线】

同样因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

【mAP0.5:0.95曲线】

同样因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

【loss曲线】

同样因为数量较多这里显得比较拥挤,这里我们单独绘制了训练阶段的对比曲线,如下所示:

五款不同参数量级的模型在整个训练阶段指标的走势变化还是非常相似的。感兴趣的话也可以基于自己的自建数据集开发对比分析尝试下!

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Together_CZ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值