资讯详情

资讯详情

基于YOLO的建筑物剥落与裂缝分割识别实战

裂缝、剥落、脱空这些词在建筑检测行业里基本就是“天敌”。我们当时拿到这个“基于yolov13的建筑物剥落裂缝分割识别”项目时第一感受就是这个场景没有想象中那么简单。墙面裂缝识别、混凝土裂缝分割识别、内墙剥落检测表面上是三种病害本质上是同一套视觉问题——在复杂背景中把“非正常表面”逐像素找出来。项目代号yolov13是我们内部迭代了多个版本后的叫法实际工程上是在YOLO系列框架上做分割任务的定制版本。这篇文章就围绕这个项目讲讲我从数据集搭建、模型训练到部署落地踩过的坑以及一套可以直接复用的技术方案。无论你是刚接触结构病害视觉检测还是已经在跑目标检测想转到分割这篇内容都会给你一些参考。我不会只堆理论更多是记录实际操作里的参数、问题和解决思路。1. 项目概述与需求拆解1.1 标题里的每个关键词到底在要求什么“建筑物剥落裂缝分割识别”这个短语看着长拆开就是四件事剥落检测、裂缝检测、分割识别、建筑物场景。剥落是表皮成块掉落裂缝是线性开裂分割识别是输出像素级轮廓建筑物场景限制了拍摄距离和背景复杂度。后面跟的“墙面裂缝识别”“混凝土裂缝分割识别”“内墙剥落检测”本质是在补充不同部位和不同材质的细节。墙面裂缝可能在砖墙、抹灰层、腻子层上混凝土裂缝多出现在结构梁柱、桥墩、道路板内墙剥落则以腻子起壳、涂料鼓包为主。这些病害在视觉特征上差异很大。我们用一句话概括项目目标输入一张墙面或混凝土表面的照片模型输出三类病害的像素级掩码每个掩码附带类别、置信度、面积和轮廓坐标最终服务于建筑、道路等结构病害检测场景。1.2 为什么必须用分割而不是普通目标检测做项目之前我们做过对比实验。纯目标检测输出的是矩形边界框对于裂缝这种狭长扭曲的目标边界框会把大量正常墙面框进来计算裂缝面积时偏差巨大。剥落虽然近似块状但边界极不规则矩形框无法表达真实损伤范围。分割识别输出的掩码可以做到像素级贴合。裂缝的宽度、长度、走向剥落的面积和形状都能从掩码里直接计算出来。这在实际工程中非常重要因为结构病害评级往往要参考裂缝宽度和剥落面积而不是“有个框”。经验如果项目只要求“有没有病害”目标检测够用一旦需要量化损伤程度就必须上分割模型。这个需求在项目启动前就要想清楚不然后期返工代价很高。2. 模型选型与数据集构建2.1 yolov13项目代号背后的模型方案标题里的yolov13并不是某个官方发布的新版本而是我们团队基于YOLO系列分割框架魔改迭代后的内部代号。第13版时的骨干网络和分割头组合已经稳定所以直接拿项目代号来命名模型。这套模型整体结构包含三部分CSPNet风格的骨干网络负责提取特征PANet结构做多尺度特征融合解耦检测头加上一个额外的分割头负责输出像素级掩码。分割头和检测头共享骨干可以在推理时同时给出边界框和掩码非常贴合病害检测场景。我们试过同时期的几个分割模型最终选这个路线是因为它在速度和精度之间的平衡最好而且工程生态成熟训练、部署都有现成工具链。对于建筑检测这种需要频繁迭代数据的场景模型的可复现性和部署便利性非常重要。关键配置参考这张表模块配置输入分辨率训练640x640精调960x960骨干网络CSPDarknet结构含注意力模块特征融合PANet多尺度特征金字塔输出头解耦检测头 分割掩码头损失函数检测损失(CIoUBCE) 分割损失(DiceBCE)预训练权重使用COCO预训练权重初始化2.2 数据采集与标注裂缝和剥落的规范怎么定数据是这类项目的命门。我们花了项目一半时间在数据上。采集设备主要有三样单反拍近景细节无人机拍高层外墙巡检机器人拍道路板。无人机视角大多是斜拍墙体变形严重需要后续做矫正或者直接在训练数据里加入透视增强。标注工具用的LabelMe格式是JSON多边形。标注类别我们最终定成三个crack、spalling、background。没有把内墙剥落单独设类因为实验发现内墙剥落和混凝土剥落在外观上高度相似分开反而让模型混淆。标注规范里有几个关键点裂缝用多边形紧贴两侧边缘勾画每个点之间的距离要足够密避免锯齿。剥落区域用闭合多边形包含所有脱落、起鼓区域但要排除明显的水渍和青苔。单个目标太小比如宽度小于3像素的裂缝允许跳过避免标注噪声过大。每张图必须保证正负样本比例合理不能全是病害也要有正常墙面。建议每类病害最少准备800张已标注图像。如果条件有限先凑够每类300张跑通基线再持续补充困难样本效果会好很多。2.3 数据增强与样本均衡的实操技巧病害数据增强跟常规目标检测不太一样不能盲目用力。裂缝是线性纹理旋转增强要控制在正负45度以内否则模型会学到错误的方向先验。亮度对比度扰动需要特别加强因为实际巡检中光线变化剧烈阴影和强反光都会出现。我们启用的增强组合是Mosaic、随机仿射变换、HSV扰动、随机遮挡和模糊模拟。其中Mosaic对提升小裂缝召回率帮助很大因为它把多张图缩放到同一张画布等于变相增加了小目标数量。类别不平衡问题在初期非常明显。混凝土裂缝最多内墙剥落最少。我们不是简单复制少样本图像而是对少样本类别做额外的离线增强生成更多变体。同时损失函数中提高分割损失的权重让模型更关注掩码质量。负样本清单一定要单独准备。没有病害的墙面、道路、桥梁照片都要收集用来压误检。模型如果没见过大量负样本很容易把施工痕迹、管线阴影当成裂缝。3. 模型训练与调优实战3.1 环境配置与训练参数选择训练环境直接用PyTorch框架GPU至少要有11G显存我们用的RTX 4090。数据集结构按YOLO分割格式组织分为训练集和验证集。数据配置文件如下# building_defect.yaml path: F:/structure_detection/dataset train: images/train val: images/val names: 0: crack 1: spalling训练启动命令是这种形式python train.py \ --model yolov13-seg.pt \ --data building_defect.yaml \ --batch 8 \ --imgsz 960 \ --epochs 300 \ --optimizer AdamW \ --lr0 0.001 \ --cosine几个参数值得细说。输入分辨率我们先用640跑通流程精修阶段拉到960。分辨率越高细小裂缝的分割效果越好但显存占用增加明显。批量大小受显存限制实测8是一个比较稳的平衡点。学习率用了AdamW配合余弦衰减初始学习率0.001300个epoch最终降到接近0。优化器试过SGD收敛结果偏保守换AdamW后剥落边界明显更干净。3.2 损失函数设计与评估指标选择这个项目的训练损失包含三部分框回归损失、分类损失和分割掩码损失。框回归用CIoU分类用BCE分割掩码损失用Dice加BCE的组合。Dice损失擅长处理前景背景像素不平衡刚好适合裂缝这种像素占比极低的目标。训练时三个损失的权重需要手动调节。我们的经验是分割损失的权重略微提高比如总损失按0.5框损失、0.3分类损失、0.8分割损失设置。裂缝检测场景里掩码质量比框准度更重要。评估指标不能只看mAP。裂缝分割里mIoU和Dice系数更能反映掩码贴合度。mAP偏重检测框的召回和定位但两个框可能重叠度很高掩码却差很远。所以模型验证时我们会同时看mAP0.5、mAP0.5:0.95、mIoU三个指标取综合结果最优的epoch权重。3.3 训练过程监控与过拟合处理训练过程中我习惯每5个epoch跑一次验证集观察loss和指标变化。如果训练loss持续下降但验证mIoU停滞甚至下降说明过拟合了第一反应不是加数据而是冻结骨干网络再用小学习率微调。我们的处理策略是分两个阶段训练。第一阶段冻结骨干网络只训练检测头和分割头学习率0.001跑30个epoch。第二阶段解冻全部参数学习率降到0.0001再训练270个epoch。这种方式对中小规模数据集很有效能避免模型在初始化阶段就过拟合。EMA机制默认开启它会把历史权重的均值作为最终权重实测能提升1到2个点的mIoU。早停法也要启用patience设50个epoch这样可以留下验证集最优的best.pt避免后期过拟合权重覆盖最优结果。注意冻结训练时一定要把BatchNorm层同步冻结否则统计量会在前向传播中被错误更新导致解冻后性能崩掉。4. 推理部署与业务落地4.1 推理后处理与病害量化计算训练好的模型必须转成可用的推理服务。后处理这一步很多人轻视实际却直接决定了业务指标能不能算准。加载模型推理后拿到的掩码是概率图需要经过阈值过滤一般取0.25到0.35。先做连通域分析去掉面积小于阈值的噪声区域。再取每个连通域的轮廓点集转换成坐标JSON后返回给前端。关键代码如下import cv2 import numpy as np def mask_to_contours(mask_prob, conf_thres0.25, min_area50): # mask_prob: 模型输出的概率图 0~1 binary (mask_prob conf_thres).astype(np.uint8) contours, _ cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) result [] area_pixel 0.0 for cnt in contours: area cv2.contourArea(cnt) if area min_area: continue approx cv2.approxPolyDP(cnt, epsilon2, closedTrue) result.append(approx.reshape(-1, 2).tolist()) area_pixel area return result, area_pixel距离换算也要提前标定。无人机巡检时我们会在航线里放一个已知尺寸的标定板通过像素宽度和实际宽度的比例把像素面积转换成平方厘米。没有标定板时可以用裂缝宽度做近似比例但误差较大。裂缝长度计算我们用的是骨架化方法。先对裂缝掩码做细化抽取出单像素中心线再统计中心线的像素数量乘上分辨率系数。这样计算出来的长度比外接矩形对角线准确得多。4.2 应用场景扩展从建筑外墙到道路桥梁这个模型天然适配多种结构病害场景。建筑外墙巡检主要用无人机拍摄距离远图像视野大裂缝在图像中占比小。推理时采用滑窗裁剪将大图切成640或960的patch推理后再把重叠区域合并能有效避免小裂缝被下采样吃掉。道路裂缝检测则是另一种情况。相机装在检测车上视角贴近地面裂缝呈斜向透视图。我们在训练时额外加入了透视变换增强模拟车辆前进时裂缝在图像中的形变。桥墩和隧道场景光照差经常需要补光模型要针对低照度图像做亮度归一化预处理才能在夜晚隧道正常工作。目前这套方案已经在模拟环境里集成到巡检机器人流程中。机器人沿预定轨道拍摄结构表面推理端实时输出病害类别、面积估算和位置坐标操作人员只需要复核模型标出的区域不用再一帧一帧翻视频。4.3 硬件选型与性能优化训练阶段用一张高端GPU就能应付。推理部署要考虑实际算力成本。墙面检测场景我们推荐Jetson Orin或同级别的边缘设备带摄像头实时处理。模型导出这一步很关键PyTorch模型要先转ONNX再转TensorRT进行加速。导出命令参考# 导出ONNX python export.py --weights best.pt --include onnx --opset 12 # 转TensorRTFP16精度 trtexec --onnxbest.onnx --saveEnginebest.engine --fp16转换后模型可以在边缘设备上以15到20毫秒每帧的速度跑完640x640输入比原始PyTorch快两倍以上。如果对速度要求更高还可以尝试INT8量化但裂缝分割对这种低对比度像素敏感量化后mIoU可能下降3到5个点需要谨慎评估。推理格式平均耗时(ms)相对精度变化PyTorch FP3248基准ONNX FP3235基本无差异TensorRT FP1618下降约1%TensorRT INT810下降约3%-5%5. 常见问题与避坑指南5.1 数据标注不一致导致模型预测抖动多人标注同一个项目时A标注员把裂纹边缘画宽了B标注员画窄了模型学到的边界就飘。症状是同一张图换一个输入尺度预测结果边界变化很大。解决办法是标注规范里写清楚裂缝边界以“颜色突变处的外边缘”为准并在标注后安排专人抽检。我们还用预训练模型做了半自动预标注人工只负责修正标注结果这样不同人的标注口径能统一不少。5.2 细小裂缝分割不连续中间总断掉细裂缝在图像中只有2到4像素宽模型很容易把中间低对比度的部分漏掉导致掩码断成好几段。我们做了三件事。第一把精调分辨率从640升到960效果最直接。第二调低分割置信度阈值从0.35降到0.25能让更多弱响应区域保留下来。第三后处理时对掩码做闭运算用3x3或5x5的核把断裂处连接起来。闭运算对剥落这类块状目标影响不大但对裂缝连续性改善明显。5.3 墙面反光、阴影多次误检为裂缝建筑外墙经常有管道阴影、窗框阴影模型一开始把大量阴影边缘当成了裂缝。这是因为阴影和裂缝在局部特征上有相似性尤其都是暗色线条。应对策略分两条路。一是数据侧专门采集不同时间的墙面阴影图加入训练集模型见过这些负样本后误检明显下降。二是推理侧在模型输出后加一个梯度方向校验裂缝通常有明确的灰度突变方向而阴影边缘是渐变的计算掩码区域的梯度强度分布方差过小的区域直接过滤掉。5.4 大图推理速度和精度的最终平衡技巧测试过单张大图整体送入模型会出现速度慢和小目标漏检。采用滑窗推理后速度基本满足要求但窗口边界处裂缝会被截断。我们在窗口之间设置20%到30%的重叠度推理后合并同一连通域时把交叠部分的掩码取并集。这样既保留了小裂缝召回率也没有显著增加计算量。实际部署时还有一个技巧先用输入分辨率640的模型做快速筛查只对置信度在0.3到0.6之间的可疑区域用960分辨率重新推理。高置信度的直接输出低置信度的丢弃这种级联策略可以在保持精度的同时把整体吞吐提升一倍。最后再分享一点个人体会做这个项目最深的感受是结构病害识别难的不是模型而是对病害本身的理解。第一次跑通模型时准确率看着还行但放到真实建筑图上阴影误检、污渍误检接踵而来。后来我把更多精力放在了数据分布和标注规范上而不是反复调模型结构效果反而突飞猛进。另外建议你从一个小目标开始先只做裂缝分割或者只做剥落检测跑通后再合并。我们一开始就想三管齐下结果数据和训练都乱了很久。如果你正要开始类似的建筑病害检测项目一定先把类别定义清楚、数据分布摸透再动手训练这会让你少走很多弯路。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →