在现代化城市建设的宏伟蓝图中,公路、隧道、桥梁、大坝等水泥类基础设施如同城市的血脉,支撑着社会的正常运转与经济的蓬勃发展。然而,时间的侵蚀与自然的考验使得这些建筑不可避免地面临老化与损坏的问题,裂缝作为其中最为常见的病害之一,其及时发现与有效修复对于保障基础设施安全、延长使用寿命至关重要。传统的人工巡检模式,虽依赖经验丰富的工程师,却受限于效率、成本及环境因素的制约,难以实现高效、全面的监测。随着人工智能(AI)技术的飞速崛起,一场巡检模式的革命正在悄然发生。AI技术的引入,为基础设施巡检带来了前所未有的变革机遇,不仅极大地提升了检测效率与精度,还实现了巡检作业的智能化、自动化与全天候覆盖。AI巡检系统的核心在于大数据与深度学习技术的应用。首先,通过遍布基础设施周边的摄像头网络及无人机航拍,我们能够获取海量、高清、多角度的裂缝缺陷图像数据。这些数据是AI学习的宝贵资源,它们记录了裂缝的形态、位置、发展趋势等关键信息。随后,专业的众包团队对这些数据进行精准标注,为AI模型提供了高质量的训练样本。这一过程虽然繁琐,但确保了模型学习的准确性和可靠性。经过反复训练与优化,AI模型能够学会从复杂的图像中自动识别并分割出裂缝区域,甚至能够进一步分析裂缝的宽度、面积、长度等量化指标,为后续的修复工作提供详尽的数据支持,让工程作业团队能够更加科学有效地进行资源配置,避免人力资源等浪费。
本文正是基于这样的背景考虑,想要尝试从实验的角度来开发构建水泥类基础建筑裂缝识别分析系统,探索技术落地的可行性,分析实际的效果体验,首先看下实例效果:
YOLOv8官方项目地址在这里,如下所示:
目前已经超过了2.6w的star量, 可见非常受欢迎。
官方提供的预训练模型如下所示:
Model | size (pixels) | mAPbox 50-95 | mAPmask 50-95 | Speed CPU ONNX (ms) | Speed A100 TensorRT (ms) | params (M) | FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
可以根据自己的需求进行选择使用即可。
训练数据配置文件如下:
# Dataset
path: ./dataset
train:
- /data/dataset/images/train
val:
- /data/dataset/images/test
test:
- /data/dataset/images/test
# Classes
names:
0: crack
这里我们选择的是最为轻量级的n系列的模型来做初步阶段的实验,后续会完整开发训练全系列的参数模型,到时候会进行全方位指标的对比分析。
模型训练完成之后我们来看下最为轻量级的模型的效果表现。
【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曲线)一起使用,以帮助评估和比较不同模型的性能。它们提供了更全面的分类器性能分析,可以根据具体应用场景来选择合适的模型和阈值设置。
【PR曲线】
精确率-召回率曲线(Precision-Recall Curve)是一种用于评估二分类模型性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)和召回率(Recall)之间的关系图来帮助我们了解模型在不同阈值下的表现。
精确率是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。
绘制精确率-召回率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率和召回率。
将每个阈值下的精确率和召回率绘制在同一个图表上,形成精确率-召回率曲线。
根据曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
精确率-召回率曲线提供了更全面的模型性能分析,特别适用于处理不平衡数据集和关注正例预测的场景。曲线下面积(Area Under the Curve, AUC)可以作为评估模型性能的指标,AUC值越高表示模型的性能越好。
通过观察精确率-召回率曲线,我们可以根据需求选择合适的阈值来权衡精确率和召回率之间的平衡点。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
【整体训练可视化】
【混淆矩阵】
完成模型训练后,我们来看下实际表现:
【分割检测】
【mask生成】
【边界提取】
{"crack": [[[0, 129, 415, 248], [[382, 130], [381, 130], [376, 130], [375, 131], [371, 131], [371, 131], [369, 131], [369, 132], [368, 132], [367, 133], [367, 133], [366, 133], [365, 133], [365, 134], [364, 134], [364, 135], [362, 135], [362, 135], [360, 135], [360, 136], [359, 136], [358, 137], [356, 137], [356, 137], [354, 137], [354, 138], [352, 138], [351, 139], [350, 139], [349, 139], [347, 139], [347, 140], [346, 140], [344, 142], [343, 142], [343, 143], [342, 143], [341, 143], [341, 143], [340, 144], [340, 146], [339, 146], [339, 147], [338, 149], [337, 149], [337, 150], [336, 151], [336, 152], [334, 153], [334, 154], [332, 156], [332, 156], [330, 157], [330, 157], [330, 157], [328, 159], [327, 159], [326, 160], [322, 160], [321, 161], [320, 161], [319, 160], [315, 160], [315, 159], [314, 159], [313, 158], [312, 158], [308, 154], [307, 154], [306, 153], [306, 153], [305, 152], [304, 152], [304, 152], [302, 152], [302, 151], [301, 151], [300, 150], [300, 150], [298, 148], [297, 148], [293, 144], [293, 144], [291, 142], [291, 142], [289, 141], [289, 141], [287, 139], [287, 139], [286, 139], [285, 139], [284, 138], [283, 138], [282, 137], [280, 137], [279, 137], [276, 137], [275, 136], [273, 136], [273, 135], [270, 135], [269, 135], [264, 135], [263, 134], [258, 134], [257, 135], [253, 135], [252, 135], [250, 135], [250, 136], [247, 136], [246, 137], [245, 137], [245, 138], [244, 138], [243, 139], [243, 139], [242, 139], [241, 139], [241, 140], [240, 140], [239, 141], [239, 141], [238, 141], [237, 141], [237, 142], [235, 142], [235, 143], [234, 143], [234, 143], [232, 143], [232, 144], [231, 144], [230, 144], [229, 144], [228, 145], [227, 145], [226, 146], [226, 146], [225, 146], [224, 146], [224, 147], [222, 147], [222, 148], [221, 148], [221, 148], [220, 148], [219, 149], [219, 149], [218, 150], [217, 150], [216, 151], [215, 151], [207, 159], [206, 159], [204, 161], [204, 161], [202, 163], [202, 163], [201, 163], [200, 163], [199, 165], [198, 165], [197, 165], [196, 165], [195, 166], [192, 166], [191, 167], [189, 167], [188, 167], [187, 167], [186, 168], [185, 168], [184, 169], [183, 169], [183, 169], [182, 169], [182, 170], [181, 170], [180, 171], [180, 172], [178, 173], [178, 174], [178, 174], [178, 175], [176, 177], [176, 178], [174, 179], [174, 180], [172, 182], [171, 182], [170, 183], [170, 183], [169, 183], [169, 183], [168, 184], [167, 184], [166, 185], [165, 185], [164, 185], [163, 185], [163, 186], [161, 186], [160, 187], [159, 187], [158, 187], [157, 187], [156, 188], [155, 188], [154, 189], [152, 189], [152, 189], [150, 189], [149, 190], [148, 190], [147, 191], [143, 191], [143, 191], [137, 191], [137, 191], [136, 191], [135, 190], [134, 190], [132, 188], [131, 188], [130, 187], [130, 187], [129, 186], [128, 186], [127, 185], [126, 185], [125, 185], [122, 185], [122, 184], [112, 184], [111, 185], [109, 185], [109, 185], [107, 185], [106, 187], [105, 187], [105, 187], [104, 187], [104, 188], [103, 188], [102, 189], [100, 189], [100, 190], [99, 190], [98, 191], [97, 191], [96, 191], [96, 191], [95, 192], [94, 192], [93, 193], [92, 193], [91, 193], [90, 193], [89, 194], [88, 194], [87, 195], [86, 195], [85, 195], [85, 195], [84, 196], [83, 196], [82, 196], [81, 196], [80, 197], [79, 197], [79, 198], [78, 198], [77, 198], [75, 198], [74, 199], [71, 199], [70, 200], [70, 200], [69, 200], [68, 200], [68, 201], [66, 201], [66, 202], [65, 202], [64, 202], [63, 202], [62, 203], [61, 203], [60, 204], [59, 204], [59, 204], [58, 204], [57, 205], [56, 205], [55, 206], [54, 206], [53, 206], [52, 206], [52, 207], [50, 207], [48, 209], [46, 209], [46, 210], [45, 210], [44, 211], [44, 211], [43, 211], [42, 211], [42, 212], [41, 212], [40, 213], [40, 213], [39, 213], [39, 213], [37, 215], [37, 215], [36, 215], [35, 215], [35, 216], [34, 216], [33, 217], [33, 217], [32, 217], [30, 217], [29, 218], [28, 218], [27, 219], [26, 219], [25, 219], [22, 219], [22, 220], [19, 220], [18, 221], [16, 221], [16, 221], [14, 221], [13, 222], [12, 222], [11, 222], [9, 222], [9, 223], [7, 223], [6, 224], [5, 224], [4, 224], [3, 224], [3, 225], [3, 226], [2, 227], [2, 246], [3, 247], [3, 248], [5, 248], [5, 247], [6, 247], [9, 244], [9, 243], [11, 242], [11, 241], [12, 240], [12, 239], [13, 238], [13, 237], [15, 235], [15, 235], [16, 234], [16, 234], [18, 233], [18, 233], [19, 232], [20, 232], [20, 232], [21, 232], [22, 231], [23, 231], [24, 230], [25, 230], [26, 230], [27, 230], [28, 229], [31, 229], [31, 228], [39, 228], [39, 229], [44, 229], [45, 230], [49, 230], [50, 229], [52, 229], [53, 228], [53, 228], [54, 228], [55, 228], [55, 227], [56, 227], [58, 225], [59, 225], [63, 221], [64, 221], [65, 219], [66, 219], [66, 219], [67, 219], [68, 218], [68, 218], [69, 217], [70, 217], [71, 217], [74, 217], [75, 216], [77, 216], [78, 217], [85, 217], [85, 216], [87, 216], [88, 215], [89, 215], [90, 213], [91, 213], [92, 211], [93, 211], [95, 209], [96, 209], [96, 209], [97, 209], [98, 208], [98, 208], [99, 208], [100, 208], [101, 207], [103, 207], [104, 206], [105, 206], [105, 207], [109, 207], [110, 208], [113, 208], [114, 208], [115, 208], [115, 209], [117, 209], [117, 209], [118, 209], [119, 210], [126, 210], [127, 211], [128, 211], [128, 211], [130, 211], [131, 212], [131, 212], [132, 213], [150, 213], [151, 212], [156, 212], [156, 211], [157, 211], [158, 211], [159, 211], [160, 210], [161, 210], [162, 209], [164, 209], [165, 209], [167, 209], [168, 208], [169, 208], [170, 208], [171, 208], [172, 207], [173, 207], [174, 206], [174, 206], [175, 206], [176, 206], [177, 205], [178, 205], [178, 204], [179, 204], [180, 204], [180, 204], [182, 202], [183, 202], [185, 199], [186, 199], [189, 196], [189, 195], [196, 189], [196, 189], [198, 187], [199, 187], [200, 185], [201, 185], [202, 184], [204, 184], [204, 183], [206, 183], [206, 183], [208, 183], [208, 182], [209, 182], [209, 182], [211, 182], [211, 181], [213, 181], [213, 180], [214, 180], [215, 179], [217, 179], [217, 178], [218, 178], [219, 178], [219, 178], [221, 176], [221, 176], [222, 176], [222, 176], [224, 174], [225, 174], [226, 173], [226, 173], [228, 171], [229, 171], [232, 169], [232, 169], [234, 167], [234, 167], [235, 167], [235, 167], [237, 165], [238, 165], [239, 165], [241, 165], [241, 164], [250, 164], [250, 163], [252, 163], [252, 163], [253, 163], [254, 162], [254, 162], [255, 161], [256, 161], [257, 160], [258, 160], [258, 159], [259, 159], [260, 159], [260, 159], [261, 158], [261, 158], [262, 157], [263, 157], [264, 157], [272, 157], [273, 157], [276, 157], [277, 158], [282, 158], [282, 159], [284, 159], [284, 159], [286, 159], [287, 160], [287, 160], [288, 161], [289, 161], [290, 161], [291, 161], [291, 162], [292, 162], [293, 163], [294, 163], [296, 165], [297, 165], [297, 166], [298, 166], [299, 167], [300, 167], [301, 169], [302, 169], [302, 169], [303, 169], [304, 170], [304, 170], [305, 170], [306, 170], [307, 171], [308, 171], [309, 172], [312, 172], [313, 172], [325, 172], [325, 172], [326, 172], [327, 171], [330, 171], [331, 170], [334, 170], [335, 169], [336, 169], [337, 168], [337, 167], [338, 166], [339, 166], [340, 165], [341, 165], [341, 164], [341, 163], [347, 158], [347, 157], [352, 152], [353, 152], [355, 150], [356, 150], [357, 148], [358, 148], [359, 147], [360, 147], [361, 146], [362, 146], [362, 146], [363, 146], [364, 145], [365, 145], [365, 144], [367, 144], [368, 144], [374, 144], [375, 144], [377, 144], [378, 145], [390, 145], [391, 144], [393, 144], [394, 144], [395, 144], [396, 143], [397, 143], [398, 143], [400, 143], [401, 142], [404, 142], [404, 141], [406, 141], [406, 141], [408, 141], [408, 140], [410, 140], [411, 139], [413, 139], [414, 139], [415, 139], [415, 130]]]]}
【智能分析】
从n系列最为轻量级的模型表现来看,还是不错的,后面会额外找时间开发构建其余四款不同参数量级的模型来作为对比分析使用,从实验目的角度来讲我们已经达到了自己预期的目的了。
感兴趣的话也都可以自行动手尝试一下吧!