YOLOv5至YOLOv12升级:路面裂缝检测系统的设计与实现(完整代码+界面+数据集项目)
摘要:面向道路养护巡检中裂缝目标细长、对比度低、背景纹理复杂以及多尺度形态并存等问题,本文设计并实现了一套基于深度学习的路面裂缝检测系统。系统以卷积神经网络为核心,采用轻量化主干网络与多尺度特征融合结构,对细粒度裂缝边缘与弱纹理区域进行增强表征,并结合针对类别不均衡与细长目标的损失设计以提升召回与边界一致性。数据层面构建并清洗路面裂缝数据集,完成统一分辨率处理、数据增强与训练/验证/测试划分,在 mAP、F1、IoU 等指标上对模型性能进行量化评估。工程实现方面,系统提供图像、视频与摄像头多源输入,支持置信度阈值与 NMS 参数调节、可视化叠加显示与结果统计,并将检测记录与关键元数据持久化存储,便于后续追溯与质量分析。实验与部署结果表明,该系统能够在保证检测精度的同时满足现场巡检的实时性需求,为道路病害快速筛查与养护决策提供可复用的技术路径与实现参考。
文章目录
1.前言综述
路面裂缝作为最常见的早期路面病害之一,具有形态细长、纹理弱、跨尺度变化显著等特点,若不能在养护窗口期内被稳定识别与量化,将直接放大路面结构劣化风险并推高全寿命周期维护成本,因此,面向工程巡检场景构建“可部署、可量化、可追溯”的智能裂缝检测系统已成为道路运维数字化的重要环节1。在深度学习普及之前,研究者通常依赖阈值分割、形态学与手工特征等传统视觉流程,或进一步引入随机结构森林等浅层学习器以提升对裂缝“细线结构”的判别能力,但这类方法对光照、纹理噪声与拍摄尺度较为敏感,跨场景泛化受限2。随着卷积神经网络在特征表示上的优势被验证,面向路面裂缝的端到端检测开始从“特征工程驱动”转向“数据驱动”,早期工作已经证明深层特征可在复杂背景中显著提升裂缝定位的稳定性3。 (Zgglxb)
围绕裂缝“细而长、易断裂、易与接缝/标线混淆”的本体特征,像素级语义分割逐渐成为主流建模路径之一,代表性方法通过层级卷积特征学习在细粒度边界刻画与连通性保持方面取得改进,为后续裂缝长度与宽度等量化任务奠定了可用的掩膜基础4。针对裂缝跨尺度形态变化与局部对比度不足的问题,多尺度金字塔与层级增强结构被用于提升小裂缝可检出性与结构完整性,并在公开基准上展现出更强的鲁棒性5。与此同时,针对裂缝标注“像素级成本高、边界不确定性强”的现实瓶颈,生成对抗学习被用于在部分不精确标注条件下训练模型,以缓解训练数据质量对性能上限的约束[6]。在特征表达层面,注意力机制与多特征融合进一步被引入,以强化对细线目标的显著性编码并降低背景纹理的干扰,从而改善复杂路况下的误检与漏检[7]。 (CoLab)
面向真实道路影像,阴影与裂缝在灰度与纹理上高度相似,已被证明是导致模型不稳定的关键干扰源之一,因此有研究提出“阴影—裂缝”联合数据集并设计先去阴影再检测的两阶段框架,以系统化降低阴影对检测性能的破坏[8]。在网络结构演进上,改进型 U 形编码器—解码器仍被频繁采用,并通过非对称双解码与注意力模块同时兼顾粗裂缝与微细裂缝的分割质量,从而更贴近工程场景的尺度分布[9]。另一方面,面向鲁棒分割的研究开始更多引入可变形卷积、多尺度注意力与加权损失等机制,以提升对噪声、纹理扰动与断裂结构的适应能力,并在多套数据集上体现出更稳定的泛化趋势[10]。随着全局依赖建模需求增强,Transformer 结构被用于加强长程上下文表达,并结合双分支解码与多尺度池化以在精度与推理效率之间取得更可部署的折中[11]。 (IEEE/CAA Journal of Automatica Sinica)
从更宏观的研究脉络看,近期综述工作系统梳理了路面裂缝分割模型的有效感受野、特征融合与注意力等关键设计因素,并指出在高标注成本约束下发展半监督与弱监督策略是提升工程可用性的必由路径[12]。进一步地,视觉基础模型的引入正在重塑裂缝分割的泛化范式,通过参数高效微调将“可迁移的通用视觉先验”引入裂缝任务,在跨数据集与强干扰条件下展现出更突出的零样本与鲁棒性能,为系统落地提供了新的技术选项[13]。 (ScienceDirect)
为便于对上述研究现状形成更直观的对照,表1给出若干代表性路线的任务范式、数据依赖与典型优缺点对比(侧重“路面裂缝”场景)。
| 路线类别 | 代表工作 | 任务建模 | 数据/标注依赖 | 主要优势 | 主要局限 |
|---|---|---|---|---|---|
| 传统视觉/浅层学习 | 随机结构森林裂缝检测2 | 检测/分割(依赖手工特征) | 中等(特征设计成本高) | 实现简单、可解释性较强 | 对光照与纹理噪声敏感、跨场景泛化弱 |
| 早期 CNN 检测 | 深度 CNN 裂缝检测3 | 目标检测 | 较高(需较多标注框) | 端到端特征学习、鲁棒性优于传统 | 小目标与细线结构仍易漏检 |
| CNN 分割(层级特征) | DeepCrack4 | 语义分割 | 很高(像素级标注) | 边界刻画与连通性更好,利于量化 | 标注成本高、类不平衡显著 |
| 多尺度增强 | FPHBN5 | 检测/分割(多尺度) | 高 | 改善小裂缝与弱纹理可检出性 | 结构复杂、算力与部署成本上升 |
| 阴影鲁棒 | SROCD[8] | 两阶段(去阴影→检测) | 高(需阴影/裂缝标注) | 直面阴影干扰,工程针对性强 | 数据采集与标注体系更复杂 |
| 大模型迁移 | CrackSAM[13] | 语义分割(基础模型微调) | 中等到高(依赖微调策略) | 跨数据集泛化更强、抗干扰能力突出 | 推理资源需求高、边缘部署需蒸馏/裁剪 |
在国内工程应用研究中,基于 YOLO 的单阶段检测路线因其端侧部署与实时性优势被广泛采用,相关工作给出了从数据标注到输入尺度设定再到模型训练的工程化流程,并在一定程度上验证了其在实时裂缝识别中的可行性[14]。同时,面向路面病害尺度差异与小目标占比高等问题,已有研究在自建数据集上对 YOLOv8 多版本进行了对比与调参,呈现出精度、召回与计算量之间的典型工程权衡,但也侧面说明“算法性能”之外仍需要系统层面的数据治理、可视化交互与结果追溯机制来支撑实际运维闭环[15]。 (Zwgl)
基于上述背景,博主在后续内容中将以深度学习为核心,面向“巡检拍摄—裂缝检测/分割—结果量化与存储—可视化交互”的真实业务链路,构建一套可落地的路面裂缝检测系统:一方面以 YOLO 系列模型为主线对不同版本的检测能力与速度进行对比,并结合裂缝细线结构的特点引入针对性的改进思路;另一方面完成面向道路场景的数据集构建、标注与划分,并以 PySide6 设计可交互界面、以 SQLite 实现结果持久化与检索导出,从而将算法验证推进到可复现、可部署的系统形态。
主要功能演示:
登录注册部分的交互从“身份校验—配置加载—结果空间隔离”三件事展开:用户打开系统后进入登录界面,已注册用户输入账号与密码完成校验;未注册用户可在注册页填写基本信息并写入 SQLite 用户表,系统为其初始化默认主题、推理阈值与历史记录空间。登录成功后,主界面会自动载入该用户的个性化配置与历史检测索引,后续的检测结果(图片路径、时间戳、模型版本、阈值、统计信息等)均以用户维度持久化存储,保证多用户场景下的数据隔离与追溯一致性。

页面布局部分以“操作区—展示区—信息区”的经典结构组织,降低推理过程的认知成本:左侧或上侧为输入与控制面板,负责导入图片/视频、开启摄像头、启动/停止推理与结果保存;中央为可视化展示区,支持原图与叠加检测框结果的切换显示,便于观察细长裂缝在弱纹理区域的检出效果;右侧或下侧为信息区,实时显示当前模型名称、置信度阈值、NMS/IOU 等关键参数,以及裂缝类别统计、推理耗时与帧率等性能指标,使用户能在同一视图内完成“看结果—看指标—调参数”的闭环。
模型选择部分强调“权重可插拔、推理链路一致”:系统在启动阶段扫描预置权重目录,并在界面提供模型下拉框或列表,允许在 YOLO 系列(如轻量化 n/tiny 版本)与自训练权重之间快速切换。切换时由控制层统一触发 Detector 重载权重并同步更新输入尺寸、类别映射与后处理策略,确保相同输入源下不同模型的推理结果可直接对比;同时在信息区记录当前模型与参数快照,为后续导出与复现实验结果提供依据。
主题修改部分服务于长时间巡检与多环境展示需求:系统提供浅色/深色等主题方案,并允许对主色、背景图、图标与字号做有限范围的个性化调整;主题切换通过 Qt 样式表与资源管理统一实现,保证控件间的对比度与可读性不被破坏。主题配置会随账号写入本地数据库或配置文件,用户下次登录后自动恢复,避免反复设置;对于夜间或强反光环境,深色主题可降低视觉疲劳并提升叠加框与文本信息的辨识度。
2.数据集介绍
本系统面向单类路面裂缝(crack)目标检测任务构建数据集,图像主要来自道路巡检与实景拍摄场景,包含桥面、城市道路与乡道路段等多种路况,覆盖晴天直射、阴影遮挡、反光与低对比度等常见干扰;同一图像中裂缝往往呈现细长、断续与纹理弱等特征,且容易与路面接缝、修补痕迹和颗粒噪声混淆。为保证训练过程的工程可用性,数据采用矩形框形式标注裂缝区域,并使用 YOLO 规范的归一化坐标写入 TXT 标签文件( x , y , w , h ∈ [ 0 , 1 ] x,y,w,h \in [0,1] x,y,w,h∈[0,1],分别为框中心点与宽高的相对比例),使其可直接接入 YOLO 系列训练与推理管线;老思在标注时以“尽量覆盖裂缝主干纹理、兼顾断裂处连贯性”为原则,从而让模型学习到更稳定的裂缝外观与尺度先验。
从标签统计分布来看(见所给的 labels 与 correlogram 图),本数据集属于典型的“小目标占比高、尺度长尾明显”的检测场景:裂缝框的宽度与高度分布呈现显著偏斜,小尺寸实例占据多数,同时存在少量大范围破损或成片裂缝导致的长尾样本;目标中心点在图像平面上呈现一定聚集性,尤其在 y y y 方向更集中于中上区域,这与车载或手持拍摄的透视构图有关。该分布特征意味着模型训练中需要更关注小尺度特征表达与高分辨率输入下的定位稳定性,同时在数据预处理中保持等比缩放与合理填充(如 letterbox)以避免裂缝形状被非均匀拉伸;在增强策略上,适度的随机裁剪、尺度扰动与亮度/对比度扰动有助于提升跨路况鲁棒性,但过强的几何形变可能破坏裂缝的细线结构,需在精度与泛化之间做平衡。按照检测任务的通用做法,数据集划分为训练集 1934 张、验证集 500 张、测试集 500 张,总计 2934 张,其中训练集约占 65.9%,验证与测试各占约 17.0%,保证了训练拟合、参数选择与最终泛化评估的相对独立性。
📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 1,934 张 (65.9%) |
| 验证集 (Val) | 500 张 (17.0%) | |
| 测试集 (Test) | 500 张 (17.0%) | |
| 总计 (Total) | 2,934 张 | |
| 类别清单 | Class ID: 0 | crack |
| 图像规格 | 输入尺寸 | 640 * 640 |
| 数据来源 | 实地拍摄(道路巡检场景,含不同路况与光照条件) |
3. 模型设计与实现
针对路面裂缝“细长、弱纹理、易与接缝/补丁混淆且尺度跨度大”的视觉属性,老思在模型侧优先采用单阶段目标检测框架,将裂缝定位问题表述为“在多尺度特征图上回归边界框并进行类别判别”的端到端学习任务。与两阶段检测相比,YOLO 系列在推理路径上更短,便于在巡检视频流中实现稳定的实时处理;同时其多尺度检测头能够覆盖裂缝从细小龟裂到大范围破损的尺度变化,适合本数据集中“小目标占比高、长尾尺度明显”的分布特征。本文默认以 Ultralytics 提供的 YOLO12n 作为基线模型,在保证可部署性的前提下,利用其注意力驱动的表征能力增强对复杂路面背景的判别鲁棒性。(Ultralytics Docs)
从网络拓扑上看,本文采用的 YOLO 检测模型仍遵循“Backbone—Neck—Head”的经典分层:Backbone 负责从输入图像中提取语义逐步增强、分辨率逐步下降的特征表征;Neck 通过自顶向下与自底向上的特征融合,将高层语义与低层细节进行多尺度对齐;Head 在多个尺度上输出边界框回归与类别得分,并在后处理阶段得到最终检测结果。该结构的示意可参考 Ultralytics 给出的 YOLOv5 架构图(作为“YOLO 系列通用骨架”的概念图),其中 P3/P4/P5 等检测层对应不同步长的特征图,对小尺度裂缝的召回往往更依赖高分辨率的浅层检测分支。(Ultralytics Docs)
在上述通用骨架之上,YOLO12 的关键变化在于其“注意力为中心”的网络设计:官方文档指出其引入 Area Attention 以区域化方式近似大感受野自注意力,从而在保持实时性的同时提升上下文建模能力;同时采用 R-ELAN 作为更易优化的特征聚合模块,并通过精简位置编码、引入“position perceiver”(7×7 可分离卷积)等策略在表达力与计算开销之间取得平衡;在具备合适 GPU 条件时,还可选用 FlashAttention 进一步降低注意力计算的访存开销。(Ultralytics Docs) 这些机制对裂缝检测的直接价值在于:裂缝往往呈长程连续结构且与背景纹理的局部对比度不足,强化全局上下文有助于减少“将粗糙纹理误判为裂缝”或“裂缝被阴影/反光割裂导致漏检”的情况;不过注意力块也可能带来显存占用上升与 CPU 推理变慢等工程代价,因此本文在模型规模上优先选择 n/s 等轻量版本,并将更大模型作为离线精度上限对照。(Ultralytics Docs)
检测头的实现沿用 Ultralytics 主线模型常见的“分类与回归分离”的预测范式;在实现上,Ultralytics 对 YOLOv8 明确采用了 anchor-free split head,以更直接的边界回归方式替代传统 anchor 依赖的参数化回归。本文在 Ultralytics 框架内训练 YOLO12 时复用同一套训练/推理接口,因此在工程实现层面可将其理解为与 YOLOv8/YOLO11 相近的解耦检测头使用方式(此处属于实现接口层面的归纳,而非逐层结构等价)。(Ultralytics Docs) 由于本任务为单类检测(crack),模型的类别输出通道数设置为 C = 1 C=1 C=1,并在数据集 YAML 中同步 nc=1 与 names=['crack'],从而保证训练阶段的类别对齐与推理阶段的可视化一致。
在任务建模与损失函数方面,YOLO 系列训练通常将目标检测误差拆解为分类项与定位项,并用加权和进行联合优化。结合 Ultralytics 的损失实现(含 DFL、Focal/Varifocal 等组件),本文采用如下形式的总损失(符号为便于表述的概括写法):
L = λ b o x L I o U + λ c l s L c l s + λ d f l L D F L . L = \lambda_{\mathrm{box}} L_{\mathrm{IoU}} + \lambda_{\mathrm{cls}} L_{\mathrm{cls}} + \lambda_{\mathrm{dfl}} L_{\mathrm{DFL}} . L=λboxLIoU+λclsLcls+λdflLDFL.
其中, L I o U L_{\mathrm{IoU}} LIoU 用于约束预测框与真值框的几何一致性(工程上常用 CIoU/GIoU 等变体以兼顾重叠、中心距离与长宽比); L D F L L_{\mathrm{DFL}} LDFL 将边界回归建模为离散分布的学习问题,通过分布式监督提升回归的细粒度表达能力; L c l s L_{\mathrm{cls}} Lcls 则以对数似然类损失为基础,并可叠加 Focal/Varifocal 的调制项以缓解样本不均衡与易样本主导的问题。(Ultralytics Docs) 对裂缝这种细线目标而言,定位误差对视觉观感与统计量(长度、面积近似)影响更敏感,因此训练中通常需要关注 L b o x L_{\mathrm{box}} Lbox 与 L D F L L_{\mathrm{DFL}} LDFL 的收敛状态,并通过输入尺寸、特征融合深度与正负样本分配策略共同稳定小目标的梯度信号。
实现层面,本文基于 Ultralytics Python 接口完成模型构建、训练与导出:模型可以直接加载官方预训练权重进行迁移学习,再在自建裂缝数据集上微调;如果需要进一步适配边缘端算力,Backbone 也可以替换为 MobileNetV3、EfficientNet-Lite 等轻量网络,并在 Neck 侧保留必要的多尺度融合以降低小裂缝漏检风险(具体替换可通过 model YAML 进行结构定义与缩放系数配置)。(Ultralytics Docs) 下面给出与本文工程一致的最小化代码范式(以检测任务为例):
from ultralytics import YOLO
# 1) 加载预训练权重(或加载自训练权重)
model = YOLO("yolo12n.pt") # 也可替换为 yolov8n.pt / yolo11n.pt 等用于对比
# 2) 训练:数据集 YAML 内需包含 train/val 路径、nc 与 names
model.train(
data="crack.yaml",
imgsz=640,
epochs=120,
batch=16,
device=0, # GPU:0
pretrained=True
)
# 3) 推理:支持图片/视频/摄像头流
model.predict(source="test.jpg", conf=0.25, iou=0.7, save=True)
4. 训练策略与模型优化
路面裂缝检测的训练难点不在于类别复杂度(本文为单类 crack),而在于目标形态的“细长与断续”、纹理对比度的“弱”、以及小目标占比高所导致的正负样本极不均衡。老思在训练阶段的总体思路是:先用大规模通用数据上预训练的 YOLO 权重提供稳定的低层边缘与纹理先验,再在裂缝数据上进行端到端微调;同时把训练过程中的随机增强控制在“提升鲁棒性但不破坏细线几何结构”的范围内,并通过学习率预热与余弦衰减保证收敛过程平滑,避免在训练早期出现定位震荡而导致的小目标漏检。
在环境与训练流程配置上,本文采用 Python 3.12 与 Ultralytics 训练框架,硬件以 RTX 4090 为主,默认启用 AMP 混合精度以提升吞吐并降低显存压力;数据加载侧保持 letterbox 等比缩放以避免非均匀拉伸破坏裂缝形态,并对输入分辨率固定为 640 × 640 640\times640 640×640 作为精度与速度的折中。由于裂缝目标对定位误差敏感,训练时建议开启 EMA(指数滑动平均)以获得更平滑、更稳健的权重版本;验证阶段严格使用验证集,避免将测试集参与任何阈值选择或策略调整,从而保证最终泛化评估的可信度。对小数据集而言,合理的早停策略也很关键:当验证指标长时间无提升时及时终止训练,有助于降低过拟合风险并节约迭代成本。
数据增强策略需要“克制”。Mosaic 与随机仿射对提升跨场景鲁棒性有效,但过强的几何扰动可能把细线裂缝扭曲成不符合物理形态的纹理,从而在后期导致边界回归不稳定。因此本文采用“前期增强强、后期增强弱”的调度:训练前段允许 Mosaic 充分增加样本多样性,训练后段在收敛阶段关闭 Mosaic(close_mosaic=10),让网络在更接近真实分布的样本上细化边界框回归;同时使用适度的亮度/对比度扰动以覆盖阴影、反光与低照等典型路况变化。若实际测试中仍存在“细裂缝漏检”问题,通常优先从数据角度补充小裂缝与弱纹理样本,并在训练侧适当提高输入尺度或开启多尺度训练,而不是一味加大仿射变换幅度。
学习率与优化器方面,本文保持与 YOLO 系列经验一致的“预热 + 余弦退火”调度:预热阶段逐步提升学习率以稳定 BN 与回归头的梯度,随后按余弦规律平滑衰减以获得更好的收敛终点。其典型形式可写为
η ( t ) = η min + 1 2 ( η 0 − η min ) ( 1 + cos ( π t T ) ) , \eta(t)=\eta_{\min}+\frac{1}{2}(\eta_0-\eta_{\min})\left(1+\cos\left(\pi\frac{t}{T}\right)\right), η(t)=ηmin+21(η0−ηmin)(1+cos(πTt)),
其中 η 0 \eta_0 η0 为初始学习率、 η min \eta_{\min} ηmin 为末端学习率下界、 T T T 为总训练步数。对裂缝单类任务而言,分类分支的学习难度相对更低,训练表现往往由“定位项是否稳定下降、验证集是否持续提升”主导;因此在调参顺序上通常先保证 box/DFL 的收敛曲线平滑,再微调置信度阈值与 NMS IOU 以改善误检与漏检的平衡。
下面给出本文默认采用的一组训练配置(可直接对应到 Ultralytics 的 train() 参数),这组配置在 4090 上能够在收敛速度、显存占用与泛化表现之间取得较稳妥的折中:
| 名称 | 作用(简述) | 数值 |
|---|---|---|
| epochs | 最多训练轮数 | 120 |
| patience | 早停耐心 | 50 |
| batch | 批大小 | 16 |
| imgsz | 输入分辨率 | 640 |
| pretrained | 预训练权重 | true |
| optimizer | 优化器 | auto |
| lr0 | 初始学习率 | 0.01 |
| lrf | 最终学习率占比 | 0.01 |
| momentum | 动量 | 0.937 |
| weight_decay | 权重衰减 | 0.0005 |
| warmup_epochs | 预热轮数 | 3.0 |
| mosaic | Mosaic 强度/概率 | 1.0 |
| close_mosaic | 关闭 Mosaic 的轮数 | 10 |
在模型部署层面的优化,老思更建议把“结构不变的工程加速”放在首位:训练完成后优先导出 ONNX,再用 TensorRT 进行 FP16(必要时 INT8)加速,以满足巡检视频流的实时性需求;推理阶段可结合置信度阈值与 NMS IOU 的联动调参,控制误检数量并提升裂缝框的稳定性。对于边缘设备,进一步的优化路径包括算子融合(Conv+BN 融合)、批量推理与异步流水线(采集/推理/渲染解耦),这些方法不改变模型表达能力,但能显著改善端侧时延与吞吐,属于更可控、更工程化的优化方向。
最后给出一段与本文配置一致的训练与导出示例,便于直接复现训练策略与部署流程:
from ultralytics import YOLO
model = YOLO("yolo12n.pt") # 或替换为 yolov8n/yolo11n 等用于对比
model.train(
data="crack.yaml",
imgsz=640,
epochs=120,
batch=16,
patience=50,
optimizer="auto",
lr0=0.01,
lrf=0.01,
momentum=0.937,
weight_decay=5e-4,
warmup_epochs=3.0,
mosaic=1.0,
close_mosaic=10,
device=0,
pretrained=True
)
# 导出:优先 ONNX,再按需走 TensorRT FP16/INT8
model.export(format="onnx", opset=12, simplify=True)
如果你后面要写第 5 节“实验与结果分析”,把各模型(yolov5nu…yolo12n)的 mAP、F1、推理速度或训练曲线截图给老思,我可以直接按你的数据生成对比图(柱状图/PR 曲线解读)并写出对应的学术化分析段落。
5. 实验与结果分析
5.1 实验设计与对比设置
本节在同一 CrackRoad 数据集划分(Train/Val/Test=1934/500/500)与一致训练策略(输入尺寸 640 × 640 640\times640 640×640、epochs=120、同类增强与优化器配置)下,对 YOLO 系列多版本进行对比,以检验不同代际结构与不同模型规模在“细长裂缝、小目标占比高、背景纹理复杂”的场景中的精度上限与速度代价。对比对象覆盖轻量级 n-type(YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n)与中等规模 s-type(YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s)两组,推理耗时拆分为预处理(PreTime)、模型前向(InfTime)与后处理(PostTime),并在同一硬件平台 NVIDIA GeForce RTX 3070 Laptop GPU(8GB 显存)上统计,确保速度对比具有可复现性。
5.2 度量指标
检测性能采用 Precision、Recall、F1 以及 COCO 风格的 mAP 指标,其中 P P P 与 R R R 定义为
P = T P T P + F P , R = T P T P + F N , P=\frac{TP}{TP+FP},\quad R=\frac{TP}{TP+FN}, P=TP+FPTP,R=TP+FNTP,
综合指标 F1 为
F 1 = 2 P R P + R . F1=\frac{2PR}{P+R}. F1=P+R2PR.
同时报告 mAP @ 0.5 \text{mAP}@0.5 mAP@0.5(本文记为 mAP50)与 mAP @ 0.5 : 0.95 \text{mAP}@0.5:0.95 mAP@0.5:0.95(本文记为 mAP50-95),后者对定位误差更敏感,能更真实反映“裂缝框边界贴合程度”的上限。由于裂缝属于细线结构且标注框存在天然不确定性,mAP50 与 mAP50-95 的差距通常会被放大,因此两者需要结合解读,而不能只看单一指标。
5.3 结果对比与可视化分析
(1)n-type 轻量模型:精度与速度权衡呈现“稳定但差异有限”的格局。 从整体指标看(表5-1),YOLOv11n 在 Recall(0.6465)、F1(0.6766)、mAP50(0.6827)与 mAP50-95(0.3180)上均取得该组最优,说明其在裂缝这类“低对比度、小目标、多噪声”的任务中更能兼顾检出与误检控制;这一点在你提供的柱状对比图中表现为 F1 与 mAP50 的同步领先(如下图所示,CrackRoad-n_type: F1 & mAP50 Comparison)。相对地,YOLOv9t 的 Precision 达到 0.7563,为该组最高,但 Recall 仅 0.5965,表明其更偏向“保守输出”,对背景纹理的误检抑制较强,但在阴影遮挡、裂缝断裂或细小裂缝场景下更容易漏检。YOLOv10n 的各项指标明显落后(F1=0.6209,mAP50=0.6221),并且其推理时间(InfTime=11.24ms)也未呈现出优势,因此在本任务的数据分布下并非优选。
在速度层面,n-type 中 YOLOv6n(InfTime=6.78ms)与 YOLOv8n(6.83ms)前向推理最快,但它们的 mAP50-95 分别为 0.2812 与 0.3108,表现为“速度占优、严格定位指标不占优”;如果系统部署更强调检测框质量与后续病害量化(例如裂缝长度/面积近似统计),则 YOLOv11n 是更稳妥的默认选择。结合训练曲线(results.png)可见,Precision、Recall、mAP50 与 mAP50-95 均随 epoch 持续上升并在后半程趋于平台,训练/验证损失同步下降且未出现明显分叉,说明当前增强与正则设置对过拟合具有一定抑制作用。
表5-1 n-type 模型性能与耗时对比(RTX 3070 Laptop, 640 × 640 640\times640 640×640)
| Model | Params(M) | FLOPs(G) | Pre(ms) | Inf(ms) | Post(ms) | Precision | Recall | F1 | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 1.90 | 7.73 | 1.31 | 0.7075 | 0.6284 | 0.6656 | 0.6640 | 0.3075 |
| YOLOv6n | 4.3 | 11.1 | 2.17 | 6.78 | 1.39 | 0.7050 | 0.6038 | 0.6505 | 0.6513 | 0.2812 |
| YOLOv7-tiny | 6.2 | 13.8 | 2.28 | 14.74 | 4.06 | 0.7049 | 0.6299 | 0.6653 | 0.6469 | 0.2719 |
| YOLOv8n | 3.2 | 8.7 | 1.95 | 6.83 | 1.39 | 0.6976 | 0.6268 | 0.6603 | 0.6776 | 0.3108 |
| YOLOv9t | 2.0 | 7.7 | 1.87 | 16.51 | 1.29 | 0.7563 | 0.5965 | 0.6670 | 0.6764 | 0.3111 |
| YOLOv10n | 2.3 | 6.7 | 2.08 | 11.24 | 0.63 | 0.6792 | 0.5718 | 0.6209 | 0.6221 | 0.2847 |
| YOLOv11n | 2.6 | 6.5 | 2.11 | 9.44 | 1.42 | 0.7096 | 0.6465 | 0.6766 | 0.6827 | 0.3180 |
| YOLOv12n | 2.6 | 6.5 | 1.91 | 12.47 | 1.37 | 0.7386 | 0.5932 | 0.6580 | 0.6593 | 0.3040 |
(2)s-type 中等规模模型:YOLOv7 在精度上形成明显优势,但代价是推理速度大幅下降。 表5-2 显示,YOLOv7 的 Precision(0.7572)、Recall(0.6808)、F1(0.7170)、mAP50(0.7164)与 mAP50-95(0.3275)均为该组最高,与柱状图结论一致(如下图所示,CrackRoad-s_type: F1 & mAP50 Comparison)。这说明在该数据集上,适度增大模型容量确实能改善裂缝目标的表达质量,尤其是对“细裂缝断裂、阴影干扰、粗糙纹理误检”的综合抑制能力会更强。然而,其 InfTime 达到 23.62ms,显著慢于 YOLOv8s(7.66ms)与 YOLOv5su(8.45ms),在视频流实时检测场景下可能需要更激进的加速策略(如 TensorRT FP16/INT8)才能满足帧率要求。
如果以“实时性优先、精度尽量不掉队”为目标,YOLOv8s 的平衡性更突出:其 F1=0.6843、mAP50=0.7028、mAP50-95=0.3260,且 InfTime=7.66ms,为该组最快;与 YOLOv7 相比,mAP50-95 只小幅下降,但速度优势极其明显。YOLOv9s 在精度上接近(mAP50=0.6983),但 InfTime=18.66ms 的代价较高;YOLOv10s 的精度与 F1 均处于组内较低水平(F1=0.6417,mAP50=0.6538),表现为“速度并未显著领先但精度下降明显”,因此同样不建议作为默认部署模型。
表5-2 s-type 模型性能与耗时对比(RTX 3070 Laptop, 640 × 640 640\times640 640×640)
| Model | Params(M) | FLOPs(G) | Pre(ms) | Inf(ms) | Post(ms) | Precision | Recall | F1 | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 2.28 | 8.45 | 1.51 | 0.7004 | 0.6240 | 0.6600 | 0.6626 | 0.3119 |
| YOLOv6s | 17.2 | 44.2 | 2.22 | 8.59 | 1.45 | 0.7391 | 0.6346 | 0.6829 | 0.6875 | 0.2979 |
| YOLOv7 | 36.9 | 104.7 | 2.44 | 23.62 | 3.46 | 0.7572 | 0.6808 | 0.7170 | 0.7164 | 0.3275 |
| YOLOv8s | 11.2 | 28.6 | 2.31 | 7.66 | 1.42 | 0.7344 | 0.6406 | 0.6843 | 0.7028 | 0.3260 |
| YOLOv9s | 7.2 | 26.7 | 2.12 | 18.66 | 1.39 | 0.7563 | 0.6275 | 0.6859 | 0.6983 | 0.3196 |
| YOLOv10s | 7.2 | 21.6 | 2.21 | 11.38 | 0.60 | 0.6832 | 0.6050 | 0.6417 | 0.6538 | 0.3051 |
| YOLOv11s | 9.4 | 21.5 | 2.37 | 9.74 | 1.36 | 0.7278 | 0.6240 | 0.6719 | 0.6829 | 0.3180 |
| YOLOv12s | 9.3 | 21.4 | 2.09 | 13.23 | 1.42 | 0.7331 | 0.6085 | 0.6651 | 0.6708 | 0.3066 |

(3)收敛过程、阈值选择与误差结构:给 UI 端默认参数提供依据。 从 mAP50 随 epoch 的曲线看,无论 n-type 还是 s-type,模型在前 20 个 epoch 内提升最快,随后进入平缓爬升阶段,并在约 80 个 epoch 后逐步趋于平台,这与“预训练权重快速适配裂缝外观、后期主要细化定位与抑制误检”的训练规律一致。
F1-Confidence 曲线给出了阈值选取的直接依据:如图所示,当置信度阈值约为 0.424 时达到全类别最优 F1(约 0.67),低于该阈值会因误检增加导致 Precision 下滑,高于该阈值则 Recall 迅速坍塌,表现为细裂缝与断裂裂缝的大量漏检;因此在系统界面中将默认 conf 设置在 0.40–0.45 区间通常更稳健,并允许用户根据“保守告警/敏感告警”的业务偏好进行微调。
PR 曲线(mAP@0.5=0.671)显示在召回逐步提升时精度下降较缓,说明模型对显著裂缝具有较强把握,但在高召回区间仍会受到路面粗糙纹理、补丁边缘与阴影的干扰。
混淆矩阵可进一步佐证误差来源:当前主要问题集中在“裂缝被判为背景”的漏检与“背景纹理被判为裂缝”的误检两类,这也是细线目标检测在真实路况中最常见的两种失败模式,后续优化应优先从补充弱纹理小裂缝样本、增强阴影/反光条件覆盖,以及在后处理阶段引入更稳健的阈值策略与筛选规则入手。
综合以上结果,若系统部署强调实时性与可用性,老思更建议以 YOLOv11n(轻量端精度最优)或 YOLOv8s(中等规模速度优势极强且 mAP50-95 接近上限)作为默认模型;若场景允许较高推理延迟并追求精度上限,则 YOLOv7(s-type) 在本数据集上给出了最强的 F1 与 mAP 表现,但需要配合更强的部署加速手段来满足视频巡检的实时要求。
6.系统设计与实现
6.1 系统设计思路
本系统以“界面交互与推理解耦”为核心设计原则,将路面裂缝检测的采集、推理、可视化与结果管理组织为可复用的闭环流程。整体采用 Python 3.12 + PySide6 构建桌面端应用,界面层负责输入源选择、参数调节与结果展示,处理层负责模型加载、推理与后处理,数据层以 SQLite 持久化用户配置与检测记录,使系统在多次启动与多用户切换场景下仍能保持一致的行为与可追溯性。由于视频与摄像头输入属于连续流任务,推理过程通过 Qt 信号—槽机制与(可选)QThread 线程隔离,避免长耗时前向计算阻塞 UI 主线程,从而保证界面响应性与交互稳定性。
在典型实现中,MainWindow 作为控制中枢,维护全局状态(当前输入源、模型名称、conf/IOU、运行/暂停状态等),并负责把界面事件(按钮点击、滑块变化、模型切换)映射为处理层调用;Ui_MainWindow 仅聚焦控件布局与视觉呈现(按钮、标签、表格、日志区、画布等),通过信号把用户意图上送到 MainWindow;Detector 作为处理层封装,完成权重加载、预处理(Letterbox、归一化、张量构建)、YOLO 前向推理、NMS 与坐标反变换,并输出结构化结果(框坐标、类别、置信度、耗时统计)。为便于工程扩展,模型权重采用“可插拔”管理:系统启动时扫描权重目录并填充模型列表,运行时可热切换不同 YOLO 版本,用统一的推理与后处理接口保证对比实验与上线部署的一致性。
在数据管理方面,SQLite 以“用户维度”隔离配置与结果:登录后加载该用户的主题、默认阈值、最近使用模型与历史记录索引;检测结果按时间戳入库,保存输入源路径、模型版本、阈值参数、统计信息与导出文件位置,支撑后续筛选、复核与报表生成。由此,系统不仅能完成裂缝检测的即时可视化,也能把“检测—存储—复盘”串联成可落地的运维闭环。
图 系统流程图
图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。
6.2 登录与账户管理 — 流程图

登录与账户管理模块在系统中承担“身份校验、个性化配置加载与结果空间隔离”的基础职责:用户通过登录/注册完成身份建立后,系统从 SQLite 读取其主题样式、默认 conf/IOU、最近使用模型与历史检测索引,并将后续导出文件路径、检测统计与参数快照以用户维度写入数据库,从而保证不同操作者之间的设置与结果互不干扰;在主界面运行过程中,资料修改(头像、密码与偏好)可即时写回并在下次启动自动恢复,注销/切换账号则把系统状态安全回收并重新回到登录入口,使账户体系与检测主流程形成自然衔接,既满足实验复现所需的“参数可追溯”,也满足工程落地场景对“多用户、长期运行、结果可管理”的稳定性要求。
7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
详细介绍文档博客:YOLOv5至YOLOv12升级:路面裂缝检测系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8.参考文献
1 邓露, 褚鸿鹄, 龙砺芝, 王维, 孔烜, 曹然. 基于深度学习的土木基础设施裂缝检测综述[J]. 中国公路学报, 2023, 36(2): 1-21.
2 Shi Y, Cui L M, Qi Z Q, Meng F, Chen Z S. Automatic road crack detection using random structured forests[J]. IEEE Transactions on Intelligent Transportation Systems, 2016, 17(12): 3434-3445.
3 Zhang L, Yang F, Zhang Y D, Zhu Y J. Road crack detection using deep convolutional neural network[C]//2016 IEEE International Conference on Image Processing (ICIP). Phoenix: IEEE, 2016: 3708-3712.
4 Zou Q, Zhang Z, Li Q, Qi X, Wang Q, Wang S. DeepCrack: Learning hierarchical convolutional features for crack detection[J]. IEEE Transactions on Image Processing, 2019, 28(3): 1498-1512.
5 Yang F, Zhang L, Yu S, Prokhorov D V, Mei X, Ling H. Feature Pyramid and Hierarchical Boosting Network for Pavement Crack Detection[J]. IEEE Transactions on Intelligent Transportation Systems, 2020, 21(4): 1525-1535.
[6] Zhang K G, Zhang Y T, Cheng H D. CrackGAN: Pavement crack detection using partially accurate ground truths based on generative adversarial learning[J]. IEEE Transactions on Intelligent Transportation Systems, 2021, 22(2): 1306-1319.
[7] Qu Z, Chen W, Wang S Y, Yi T M, Liu L. A Crack Detection Algorithm for Concrete Pavement Based on Attention Mechanism and Multi-Features Fusion[J]. IEEE Transactions on Intelligent Transportation Systems, 2022, 23(8): 11710-11719.
[8] Fan L, Li S, Zhang L, et al. Pavement Cracks Coupled With Shadows: A New Shadow-Crack Dataset and A Shadow-Removal-Oriented Crack Detection Approach[J]. IEEE/CAA Journal of Automatica Sinica, 2023, 10(7): 1593-1607.
[9] Al-Huda Z, Peng B, Algburi R N A, Al-antari M A, Zhai D. Asymmetric dual-decoder-U-Net for pavement crack semantic segmentation[J]. Automation in Construction, 2023, 156: 105138.
[10] Zhang Y, Liu C. Network for robust and high-accuracy pavement crack segmentation[J]. Automation in Construction, 2024, 162: 105375.
[11] Yu Z W, Chen Q Y, Shen Y G, Zhang Y P. Robust pavement crack segmentation network based on transformer and dual-branch decoder[J]. Construction and Building Materials, 2024, 453: 139026.
[12] Gong H R, Liu L M, Liang H M, Zhou Y H, Cong L. A state-of-the-art survey of deep learning models for automated pavement crack segmentation[J]. International Journal of Transportation Science and Technology, 2024, 13: 44-57.
[13] Ge K, Wang C, Guo Y T, Tang Y S, Hu Z Z, Chen H B. Fine-tuning vision foundation model for crack segmentation in civil infrastructures[J]. Construction and Building Materials, 2024, 431: 136573.
[14] 苏卫国, 王景霄. 基于YOLO v3深度学习算法的道路裂缝识别模型研究[J]. 中外公路, 2023(2): 58-63.
[15] 彭建忠, 李琛琛, 刘李彦, 等. 基于YOLOv8的道路路面裂缝智能检测[J]. 公路与汽运, 2024, 40(5): 89-94+163.
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)