城市道路病害检测是最近比较热门的一个任务领域,核心就是迁移深度学习目前已有的研究成果来实现实时城市道路路面病害的检测识别分析,在我之前的很多博文中都有做过类似桥梁、大坝、基建、隧道等水泥设施裂缝裂痕等目标检测相关的项目,除此之外还有开发过相关城市路面病害检测的实践项目,链接如下,感兴趣的话可以自行移步阅读即可。
《水泥路面、桥梁基建、隧道裂痕裂缝检测数据集》
《助力交通出行,基于目标检测模型实现路面裂痕缺陷智能识别》
《基于DeepLabV3实践路面、桥梁、基建裂缝裂痕分割》
《助力路面智能巡检养护,基于YOLOv5开发轻量级路面缺陷智能检测系统》
《python基于融合SPD-Conv改进yolov5与原生yolov5模型实践路面裂痕裂缝检测》
《融合注意力模块SE基于轻量级yolov5s实践路面坑洼目标检测系统》
《基于yolov5s+bifpn实践隧道裂缝裂痕检测》
《基于YOLOV7的桥梁基建裂缝检测》
《python基于DeeplabV3Plus开发构建裂缝分割识别系统,并实现裂缝宽度计算测量》
本文的核心目的就是想要基于捷克、印度、日本三国的城市道路路面实况场景的数据来分别开发路面病害检测识别模型并以此来分析实际的检测识别性能,首先来看效果:
接下来依次看下三国对应的不同的数据集情况。
首先是捷克的:
可以看到是有不少空图的存在的。
接下来是印度:
明显三哥的路上尘土比较多。。。
同样也是包含很多背景空图的。
最后来看日本的道路数据:
这里的基准模型都是yolov5s,如下:
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# Parameters
nc: 20 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
#Backbone
backbone:
# [from, number, module, args]
[[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3, [128]],
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 6, C3, [256]],
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, C3, [1024]],
[-1, 1, SPPF, [1024, 5]], # 9
]
#Head
head:
[[-1, 1, Conv, [512, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 6], 1, Concat, [1]], # cat backbone P4
[-1, 3, C3, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 4], 1, Concat, [1]], # cat backbone P3
[-1, 3, C3, [256, False]], # 17 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
[[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
在早期的一篇文章中我是将三个不同的城市道路场景实况数据合并在一起进行的建模训练的,这里我采用的方式是将其分开独立构建模型,想要对比不同场景下模型的性能。
首先来看捷克的:
接下来是印度的:
最后是日本的:
当然了不同国家数据集种道路路面的病害种类也是不同的,如下:
捷克
names_list = ["D00","D10","D20","D40"]
印度
names_list = ["D00","D01","D10","D11","D20","D40","D43","D44","D50"]
日本
names_list = ["D00","D10","D20","D40","D43","D44","D50"]
从整体结果上来看,印度的效果是最好的,不过印度数据集中的类别数量也是最多的。
接下来我整体对比可视化了三个国家数据集上面的效果指标如下所示:
【F1值曲线】
【loss曲线】
【精确率曲线】
【召回率曲线】
感兴趣的话也都可以自行实践一下!
后面有时间基于yolov7、yolov8来汇总三个国家的数据集来开发构建整体的路面病害检测识别模型来整体对比分析下。