☰
房屋桥梁表观缺陷YOLO数据集:裂缝霉斑渗水识别训练指南
2026/10/19 8:02:14 网站建设 项目流程

做建筑工程视觉检测这些年,手里最缺的往往不是模型,而是干净、规范、能直接喂给YOLO的训练数据。今天把自己整理并持续迭代的一套“房屋与桥梁表观缺陷识别数据集”(编号10167)完整梳理一遍,这套数据覆盖墙面裂缝、霉斑、渗水水渍、污渍以及桥梁渗水这几类高频病害,全部以YOLO格式归档,目标检测、实例分割都能直接用。文章会从数据采集思路、标注规范、目录结构、训练实测到踩坑记录逐一展开,既有可直接复用的配置细节,也有不少只有自己跑过才懂的教训。

1. 数据集立项思路与目标定位

1.1 为什么要把裂缝、霉斑、渗水做成一套数据

接触过建筑外观检测项目的人都有同感:真实场景里的墙面问题从来不是单一出现的。一面老旧墙体上可能同时存在细长的收缩裂缝、墙角霉斑、雨水渗漏留下的黄褐色水渍,甚至还有涂料剥落和灰尘污渍。早期做项目时,我们为了省事,分别找单类数据集,结果模型在单一背景上表现尚可,一到现场就频繁漏检——原因很简单,单类数据集无法模拟真实场景中多病害共存的复杂背景。后来决定做一套多类别复合数据集,把同一面墙、同一座桥上的多种缺陷统一标注、统一训练,这才让模型的泛化能力真正提上来。

这套数据的设计目标很明确:

  • 覆盖建筑检测项目中最常见的五类表观缺陷(裂缝、霉斑、渗水、水渍、污渍),以及桥梁场景下的渗水识别;
  • 统一采用YOLO格式,做到解压即用,兼容YOLOv5、YOLOv8、YOLOv11以及MMDetection等主流框架;
  • 图像来源多样化,包括手持拍摄、无人机航拍、手机随拍,尽量还原检测人员的真实视角;
  • 标注粒度细化到单处病害,而不是一张图一个标签,避免模型学到“整面墙有问题”这种错误的语义。

1.2 数据类别的取舍逻辑

最初规划时,团队内部对类别划分有不同意见。有人建议把“水渍”和“渗水”合并成一个大类,理由是二者在视觉特征上相似;也有人建议把“裂缝”细分为“横向裂缝”“纵向裂缝”“网状裂缝”。经过两轮标注试验和模型验证,最终保留了标题中列出的六个核心类别:

类别名检测目标典型场景
墙面裂缝线状开裂,粗细不一,走向随机住宅外墙、室内承重墙、抹灰层
建筑物霉斑点状或片状霉变,颜色偏黑绿卫生间周边、地下室、潮湿墙角
墙面污渍灰尘沉积、涂料污染、人为涂鸦楼道、厂房墙面、临街立面
潮湿水渍墙面返潮造成的边界模糊色斑卫生间外墙、厨房烟道周围
渗水痕迹水流路径状痕迹,伴随泛碱发白窗户下沿、屋顶檐口、桥墩
桥梁渗水桥体表面长期渗流形成的钟乳状或条带状析出桥梁底板、伸缩缝附近、桥墩

文本略作压缩,并未丢失这六个类别的主次关系。六类之间确实存在视觉混淆的可能,尤其是“潮湿水渍”和“渗水痕迹”在早期样本中常常边界模糊。但经过训练对比,保留这两个独立类别后,模型的平均精度反而提升了约4个百分点。原因在于,水渍通常边界不清、灰度分布均匀,而渗水痕迹往往有明确的重力流向纹理,这种差异在特征提取阶段是能学到的。

1.3 处理洼地数据的整体解决路径

数据集编号10167并不是随意取的编号,它对应的是这一版本在第10次迭代后的累计样本索引区间。每次新增数据都会同步更新版本记录,这是推荐大家养成的习惯。

2. 数据采集与预处理全流程

2.1 图像来源与采集要点

这套数据集的图像来源主要分三块:自有采集、公开数据整理、合成数据补充。其中自有采集占比最大,约六成,公开整理占三成,其余为合成与增广产生。采集设备包括普通智能手机、单反相机、无人机和工业相机,分辨率从720P到4K不等,统一在标注前缩放到适合模型输入的尺寸。

实际采集过程中,有几个细节直接影响了最终训练效果:

  • 光照条件刻意保留多样性。同一面墙分别拍摄顺光、逆光、阴天、夜晚闪光灯下的照片,避免模型对光照产生过拟合。
  • 拍摄距离从近到远全覆盖。裂缝在30厘米距离下纹理清晰,但检测系统实际部署时往往在1到3米外识别,因此中远景样本必须占足够比例。
  • 同一病害拍摄多角度。以裂缝为例,正面拍、侧面斜拍、局部特写都要有,才能让模型学会裂缝在不同透视下的不变性特征。
  • 无人机图像单独标注。无人机拍摄距离远、视角俯仰变化大,病害在画面中占比较小,这一类样本对桥梁渗水识别尤其重要。

2.2 图像清洗与筛选标准

原始图像不能直接进入标注环节,清洗这一步非常关键。我们的筛选标准按优先级排序:

  1. 剔除严重模糊图像。运动模糊和失焦导致裂缝边缘无法辨认的,直接丢弃。判断方法很简单:把图像放大到100%,如果裂缝边缘的锯齿超过3个像素,这张图就不适合标注。
  2. 剔除曝光严重过曝或欠曝的图像。一面墙完全泛白或者一片漆黑,即使能隐约看到病害,标注出来的框也会不准确,强行保留只会污染数据。
  3. 剔除重复或近似重复的图像。连拍模式下往往产生大量构图几乎相同的照片,用感知哈希去重后,同一场景保留不超过两张。
  4. 剔除标注争议大的图像。这块在下一节展开。

清洗后得有效图像的总量比原始采集量缩减了大约15%到20%,这个比例属于正常范围,不用心疼。

2.3 数据增广策略与注意事项

增广不是无脑堆数量。如果增广方式与真实部署场景不符,反而会让模型学到错误特征。我们在这套数据集上做了以下增广组合:

  • 水平翻转(概率0.5),用于裂缝、水渍这类的方向不敏感目标;
  • 亮度调整(正负25%),模拟不同光照环境;
  • 对比度调整(正负20%),突出霉斑与水渍与墙面的灰度差异;
  • 随机旋转(最大15度),防止模型对水平或垂直裂缝产生方向偏好;
  • 高斯噪声注入(轻微级别),提升模型在低画质场景下的鲁棒性。

注意:桥梁渗水图像没有做垂直翻转。钟乳状渗水痕迹有明确的重力方向,垂直翻转后产生的样本不符合物理规律,会让模型在真实场景中产生混乱。

2.4 数据划分策略

训练集、验证集、测试集的划分并非随机抽样那么简单,核心原则是防止图像泄露。这里所谓的泄露,指的是同一面墙在不同角度下的照片同时出现在训练集和验证集中,导致验证集分数虚高。

我们按“场景”而不是按“图像”来做划分:先将所有图像按拍摄场景分组,再将整个场景分配到训练集或验证集。这样至少能保证验证集中的场景在训练集中没有出现过,得出的mAP才具有参考价值。

最终划分比例是训练集78%、验证集12%、测试集10%。测试集单独存放,只在全部训练结束后用于最终评估,不在调参过程中访问。

3. 标注规范与YOLO格式落地

3.1 标注类别定义与标签体系

标注前最重要的工作是写出细致的标注手册。没有手册,两个标注员对同一张图的标注结果可能相差巨大。手册中对每个类别的定义都做了几何与语义两个层面的明确:

以“墙面裂缝”为例:

  • 几何层面:宽度小于2毫米的线状开裂视为裂缝;宽度大于2毫米且伴随明显边缘剥落的,标注为裂缝,但不单独建“剥落”类;
  • 语义层面:抹灰层开裂、腻子层开裂都属于裂缝;预制板接缝处的规则线条不是裂缝,不标。

“建筑物霉斑”的规则:

  • 霉斑以片状感染区域为标注对象,一个连通区域标一个框;
  • 散落型霉点若密集分布在同一区域,用一个框框住整体;
  • 霉斑与污渍重叠时,以主要视觉特征归类,不做双层标注。

“桥梁渗水”的专项规则:

  • 标注区域覆盖渗水路径及渗水析出物,如钟乳石状碳酸钙沉积;
  • 桥面滴落造成的路面污染不算桥梁渗水,不标。

3.2 矩形框标注方法与边界规则

所有图像采用矩形框标注,这是YOLO格式的原生要求。标注时统一使用多边形勾勒出目标轮廓后,再取外接矩形。这条两步流程比直接拉矩形框更准确,特别是对不规则形状的霉斑和水渍。

边界规则的要点:

  • 对于裂缝这类长条形目标,矩形框必须完整包含整段裂缝,不允许截断标注;
  • 对于贯穿整幅画面的裂缝,框边与图像边缘对齐即可,不需要留出背景边距;
  • 对于紧邻的两个独立病害区域,若间隔小于3个像素则合并为一个框,否则分开标注;
  • 目标遮挡超过50%的非关键部位病害,不标注,避免引入错误的学习信号。

标注工具方面,我们用的是LabelImg和X-AnyLabeling。前者胜在轻量,后者支持直接导出多种格式。整个标注流程经历了初标、复检、终审三个环节。初标由标注员完成,复检由有建筑背景的工程师执行,终审由算法工程师随机抽检,抽检比例不低于10%。

3.3 YOLO格式目录结构与标签文件内容

YOLO格式的核心是:每张图像对应一个同名txt文件,文件每行记录一个目标的类别编号和归一化坐标。

目录结构如下:

dataset_10167/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ ├── data.yaml ├── README.md └── classes.txt

标签文件示例:

0 0.453125 0.284722 0.015625 0.131944 2 0.732031 0.451389 0.021094 0.086111

第一列是类别编号,对应classes.txt中的顺序;后面四列是中心点x、中心点y、宽度、高度,全部除以图像宽高归一化到0到1之间。类别编号顺序在训练开始前必须固定,中途修改会直接导致标签错乱。我们的类别顺序固定为:

0: wall_crack 1: wall_mold 2: wall_stain 3: damp_spot 4: water_seepage 5: bridge_seepage

data.yaml的完整配置:

path: /path/to/dataset_10167 train: images/train val: images/val test: images/test nc: 6 names: 0: wall_crack 1: wall_mold 2: wall_stain 3: damp_spot 4: water_seepage 5: bridge_seepage

3.4 标注质量验证的量化方法

标注完成后不能直接开训,建议先做一轮质量验证。具体做法:统计每个类别的标注框数量、框面积分布、长宽比分布。比如,墙面裂缝的框通常呈长条形,长宽比集中在5到30之间。如果发现某一类别的长宽比分布出现大量接近1的数据,就要怀疑是否框住了整面墙,需要回到原图复核。

另一个有用的验证方式是把标注结果可视化输出。YOLO自身提供了plot标签分布的功能,也可以写一个小脚本把框画回原图上,目视检查框与目标边界的贴合度。这一步虽然耗时,但值得执行。

4. 模型训练实测与参数调优记录

4.1 基线与实验环境配置

训练环境用的是单张消费级显卡,显存24GB,操作系统是Ubuntu 22.04,深度学习框架选择PyTorch 2.x,模型结构选用YOLOv8m作为基线。

这组配置有一定的参考意义但不建议照抄,显存更小的设备可以改用YOLOv8s,或者下调batch size与输入分辨率。关键是理解每个参数的含义,能根据自己设备做调整。

数据加载阶段采用YOLO原生的数据增强策略,包括马赛克增强、随机透视、色彩抖动等。在训练初期,这些增强手段对提升泛化能力帮助很大;但在训练后期,如果发现验证集损失不再下降,可以考虑降低增强强度,或者直接关闭马赛克增强。马赛克增强在目标较小的情况下,容易让模型在拼接缝隙处产生幻觉目标。

4.2 超参数配置清单

经过多轮网格搜索和实际验证,最终采用的超参数组合如下:

参数名取值说明
imgsz1280输入图像尺寸,对裂缝这类细长目标非常重要
batch16根据显存容量调整,梯度累积可以弥补显存不足
epochs300使用早停机制,避免过拟合
lr00.01初始学习率
lrf0.01最终学习率因子,使用余弦退火调度
optimizerSGD比Adam更稳,最终精度略高
momentum0.937默认值,无需过度调整
weight_decay0.0005默认值,配合SGD使用
warmup_epochs3让训练更稳定

输入尺寸这一项单独说一下。很多检测任务用640分辨率就够,但建筑病害检测不一样。裂缝的宽度在整幅图像中往往只占几个像素,放大输入分辨率是提升小目标检测能力的性价比最高的方式。1280分辨率下,训练耗时大约是640的两倍,但mAP提升明显,特别是对墙面裂缝这个类别。

4.3 训练过程与损失曲线分析

训练过程中重点关注三个指标:训练损失、验证损失、验证mAP。前50轮是损失快速下降阶段,此时模型在快速学习颜色和纹理特征。100轮之后,损失下降变得平缓。150轮左右,验证mAP趋于稳定,但验证损失仍有轻微波动,这时需要观察是否出现过拟合的信号——验证损失开始上升,而训练损失继续下降,说明模型开始死记硬背训练样本,此时早停机制会终止训练。

在最终版本中,模型在约230轮处触发早停,恢复了验证分数最高的权重。实测数据是:

  • 墙面裂缝的mAP@0.5达到了0.834;
  • 霉斑的mAP@0.5达到了0.879;
  • 潮湿水渍的mAP@0.5为0.716,仍然最低,原因是水渍边界模糊,与墙面本身的明暗变化难以区分;
  • 墙面污渍的mAP@0.5为0.802;
  • 渗水痕迹mAP@0.5为0.765;
  • 桥梁渗水的mAP@0.5为0.811。

整体mAP@0.5在0.80左右,mAP@0.5:0.95在0.52左右。

4.4 置信度阈值与NMS参数部署调优

训练完成后部署时,置信度阈值和NMS参数对实际表现影响非常大。训练时使用的默认conf=0.001只是为了尽可能多地保留候选框,部署时绝对不能照搬。

经过在真实墙面上测试,推荐参数为:

  • conf_thres=0.35:低于这个值的检测结果基本是误检;
  • iou_thres=0.45:这个值在抑制重叠框和保留相近目标之间取平衡;
  • max_det=100:单张图检测目标数量上限,对墙面场景足够。

如果发现漏检多于误检,把conf下调到0.25同时调高iou到0.5可以找回一些召回率,代价是可能多出少量虚警。具体数值需要根据自己的业务场景权衡。

5. 模型训练常见问题与排查实录

5.1 裂缝细小目标难召回

用640分辨率训练时,墙面裂缝可以说是重灾区。输入图像1280×1280,实际墙面上1毫米宽的裂缝在图像里大约只占4×40像素,经过网络的下采样后,到检测头所在特征层可能只剩1个像素左右的宽度,特征基本丢失。

解决思路主要有三条:

  • 把输入分辨率从640提到1280,这是最直接有效的做法;
  • 在YOLOv8中启用多尺度训练,尺度范围设为0.5到1.5,让模型在不同缩放比下都能学到裂缝;
  • 检查是否存在大量“标注框面积占比过小”的样本。这个数据集里确实有部分样本的标注框面积只占整图的0.1%以下,过少会造成模型认为这类目标不重要。可对这类样本做切片增强(SAHI),将大图切成小块训练,实测对裂缝小目标提升明显。

5.2 水渍霉斑误检率偏高

水渍和霉斑的误检高发在建筑外墙的纹理区域,尤其是水磨石墙面、仿石材瓷砖和木纹饰面。这类材料本身的纹理与水渍在灰度上很相似,模型容易把有纹理变化的墙面区域识别成水渍。

排查后发现:训练集中这类新型装饰材料的样本占比极低,场景覆盖不足导致过拟合。解决办法是专门补充了瓷砖墙面、清水混凝土、真石漆、旧涂料墙面等不同材质背景的图像重新标注并加入训练集,误检率下降了约40%。

另外,霉斑早期往往呈现很浅的灰绿色,对比度很低,肉眼都要仔细看才能发现。对此在标注时补充了一批“早期霉斑”样本,即颜色浅淡、面积较小的霉变区域,并注意将其与正常墙面颜色做区分。

5.3 标注不一致问题

多个标注员之间很容易出现标注分歧。裂缝框是紧贴裂缝边缘还是留出背景余量?霉斑聚合区域是分几个框还是一个框?这些细节不统一,模型在训练时会学到摇摆不定的边界。

我们做了三件事解决:

  • 在标注手册中加入大量正例和反例图,明确每一种情况的标注方式;
  • 执行两轮复检,第一轮按图复检,第二轮跨标注员交换复检,明显减少个人标注习惯带来的偏差;
  • 编写脚本统计每个标注框的宽高比、面积、类别分布。若发现某个标注员的框普遍比其他人大一圈,就需要针对性调优。

5.4 桥梁渗水与墙面渗水的混淆问题

桥梁渗水和墙面渗水在标签上是两个独立的类别,但是早期训练时模型经常把墙面渗水错分为桥梁渗水,或者反过来。原因很清楚:单看局部图像,桥梁与墙面的背景信息不足,模型无法区分两个场景。

解决办法有两个方向。一个是在训练时加入更多含桥梁结构的上下文信息,让模型看到桥墩、桥体线条等整体特征;另一个是在损失函数中适当提高这类易混淆类别的权重。实测发现增加上下文背景信息的效果更直接,模型分类准确率提升了约12%。

5.5 数据泄露导致的指标虚高

前面提到按场景划分数据的做法,在实际操作中曾出过一个隐蔽问题。用无人机环绕建筑拍摄时,各张图像之间的重叠率很高,即使按场景划分,训练集和验证集中仍有大量相似的图像内容。模型看起来验证mAP很高,但到全新的建筑上测试,性能下降明显。

最终排查发现是图像相似度太高。用感知哈希计算图像相似度,把相似度超过0.9的图像归入同一“超级场景”,再按超级场景划分数据,才解决了这个问题。这一轮清洗之后,验证mAP下降了大约6%,但新场景测试精度反而提高了约9%。

6. 数据集的扩展方向与实际运用

6.1 从目标检测到实例分割的扩展

这套数据集的标注信息虽然以矩形框为主,但矩形框之外的大量有效信息完全可以二次利用。霉斑和水渍的形状不规则,矩形框内通常包含大量墙面背景。如果想做更精细的病害面积计算,可以把矩形框标注作为初始标注,辅以分割模型的预标注,再人工修正轮廓,快速生成实例分割数据集。

6.2 针对结构健康监测的定制应用

在桥梁监测场景中,渗水位置往往伴随钢筋锈蚀风险,因此渗水识别的输出不应仅仅是“有没有渗水”,还要输出位置、面积、扩散趋势。基于这套数据集训练的模型可以进一步对接图像拼接与结构表面坐标映射系统,将检测结果投影到桥梁三维模型上,辅助定期巡检决策。

6.3 面向移动端的轻量化部署方案

建筑检测有大量应用在手持设备甚至手机端。这时模型体积和推理速度就很重要。YOLOv8n版本参数量只有约3.2M,在移动端推理帧率能达到实时。用蒸馏方法把较大模型的知识迁移到小模型上,或者直接用小模型训练再使用训练好的较大模型权重做初始化,都是可行的简化路线。

实际测试下来,YOLOv8n在墙面场景下的mAP比YOLOv8m低约7到9个百分点,但推理速度提升接近5倍。对于外墙巡检这类手机抓拍场景,YOLOv8n的漏检率在可接受范围内,可作为首选方案。

6.4 与原题主经验相照应的小结

最终想回头呼应一下数据集的编号:10167不只是存储目录的名字,它代表的是“版本迭代”加上“累计样本规模”的组合信息。每一次模型更新或数据扩充,都对应着编号体系的一次推进。数据集整理和维护往往比模型训练还要耗时,但质量稳定的数据集是检测系统可靠的根基。对后续要做类似工作的人,最重要的几点总结是:采集阶段保留复杂场景和多样光照,标注阶段规范先于数量,训练阶段小目标优先提高输入分辨率,评估阶段按场景切分数据防止泄露。把握住这几个环节,训练出的模型在真实墙面上会稳得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询