☰
变电站变压器检测实战:基于YOLOv26的自训练与部署全解析
2026/10/18 14:43:04 网站建设 项目流程

去年接手了一个电力设备巡检项目,核心任务只有一个:用视觉模型识别变电站里的变压器及其关键组件。一开始我并没有多想,直接用通用的目标检测权重跑了一轮,结果在真实站端图像上一塌糊涂——反光、绝缘子遮挡、复杂背景把边界框打得乱七八糟。后来我们整个链路改成自训练、自标注、自部署,把模型换到YOLOv26这条最新迭代的检测框架上,才真正把识别准确率拉到了能进运维流程的水平。这篇文章就把这套方案从数据到部署完完整整拆开讲,适合刚接触工业视觉检测、或者正在为变电站/电力设备项目选型的人参考。

很多人一听到“变电站设备检测”,第一反应是直接下载个通用检测模型,调一调阈值就上线。真这么做的人,大概率会在现场被真实图像教做人。变电站的场景太特殊了:变压器器身反光严重,套管纹理复杂,油枕、散热器、避雷器这些部件长得极其相似,再加上杆塔阴影、角钢边缘、植被遮挡,通用模型根本没有见过足够多的工业样本。这也是为什么我们必须基于YOLOv26重新走一整套“数据采集-标注-训练-部署-误报治理”的闭环。

1. 变电站变压器检测,为什么非要自己训练模型

先说结论:通用目标检测模型可以检测“人、车、猫、狗”这种类别,但对“变压器本体”“散热片”“油位计”这类工业部件几乎没有感知。原因很简单,公开数据集的类别分布和电力设备几乎毫无交集,模型学到的纹理、形状、语义特征根本不匹配。

变电站巡检的真正需求也不是“框出变压器”这么宽泛。运维人员需要的是:变压器有没有渗漏油、散热器是否堵塞、套管是否存在放电痕迹、油枕油位是否正常。这些判断的基础,是先精确地从画面里找到对应的组件位置,然后才能做后续的缺陷分类或状态判断。

1.1 可见光之外的另一路:与红外检测的分工

变电站现场通常有两路视觉数据:可见光摄像头和红外热像仪。红外适合找发热异常,比如接头过热、套管局部放电升温;可见光则适合判断结构性问题,比如渗漏油、锈蚀、异物搭挂。我们做的YOLOv26识别模型只负责可见光通道,重点解决“目标在哪、是什么”的问题,缺陷判别的部分留给后处理和人工复核。

这个分工很重要。不要在目标检测模型里强行塞入“过热”“渗油”这种状态分类,一来样本极难收集,二来检测头的设计逻辑并不适合。正确做法是:检测模型输出精确定位的部件框,后端再配合形态学处理、颜色分析、历史图像比对来判断状态。这种分层设计在实际运维中要稳健得多。

1.2 后端方案的取舍:为什么优先选单阶段检测器

变电站设备的识别不能只看公开数据集上的benchmark。我们在选型时要考虑三个工程问题:一是模型要能跑在低算力边缘设备上,二是推理时延要满足视频流轮巡要求,三是方便针对特定场景快速微调。YOLO系这种单阶段检测器天然适合这类需求,而到了v26这个版本,虽然版本号听起来很新,底层的C2f结构、特征金字塔、检测头机制仍然是沿着YOLO的演进脉络来的,主干的特征复用和颈部融合都比前代更高效,在同样精度下对算力的占用明显更友好。

我一直的观点是:工业场景不要追最重的模型,要追“精度能达标、部署能跑动、迭代能跟上”的组合。YOLOv26这种从数据标注到训练再到导出部署一条龙都齐全的框架,才是最省心的路线。

2. 数据准备:变电站场景最耗时间的不是训练,是采集和标注

在真实项目里,训练只占整个工期的两成,六成以上时间都在和图像数据搏斗。变电站又不是马路上到处都有变压器,数据必须靠人工采集、整理、清洗,还要面临各类天气、光照、拍摄角度的覆盖问题。

我们当时的数据来源主要有三条路:轨道机器人巡检视频截图、无人机例行巡检的视频帧、站端固定摄像头的历史录像。每条路的图像质量差异非常大,轨道机器人视角固定、距离稳定,适合训练主模型;无人机视角变化大、背景杂,适合做泛化补充;固定摄像头则是唯一能覆盖夜间和雨雾场景的数据源。

2.1 类别设计:从“变压器”拆出更多子部件

很多人问,为什么不把类别只设成“transformer”?

说实话,分类越粗,模型越容易糊涂。变压器的整体外观主要由本体、散热器、套管、油枕、有载开关、基座等部件拼接而成。如果只用一个框把整台变压器框住,模型需要学习的特征就太复杂了——它既包括了金属箱体的反光纹理,又包括了散热片的栅格形状,还包括了瓷套管的圆柱结构。这些视觉特征彼此差异太大,单个类别很难形成稳定的特征聚类,模型训练时损失很难收敛。

我们最终把类别拆成了五类,实测效果立刻不一样:

类别标注目标典型视觉特征
transformer_body变压器主箱体大块金属平面、油浸式箱体反光、常被遮挡
radiator散热器片组密集栅格条纹、垂直排列的片状结构
bushing瓷套管/高压套管白色或棕色的瓷柱、有明显伞裙纹理
oil_preserver油枕/储油柜圆筒形凸起、位于箱体顶部一侧
nameplate设备铭牌矩形区域、白底黑字/蓝底白字、文字密集

拆类之后,模型的每个检测头只需要关注局部特征,精度上升非常显著。同时这种细粒度识别对下游缺陷判断也有直接帮助,比如散热器渗漏油,就可以只在散热器框内做颜色分析,避免了全局误判。

2.2 标注时的边界框规范和困难样本

标注工作看着简单,实际坑很多。我们的规范是:边界框务必紧贴目标本体,不包含背景;如果目标被遮挡超过四成,不标;如果反光导致部件轮廓完全无法辨认,不标;铭牌这类小目标,宁可漏标也不要瞎标。

这里有个经验:变压器的套管和油枕经常被导线、横担遮挡,如果标注框把遮挡物也算进去了,模型就会把导线的特征也学进去,形成“影子特征”。别小看这个,等到上线运行时,任何一根类似的线缆都可能激活这个检测头,误报率直接翻倍。

我还建议每个类别单独抽查标注质量。做法很简单,把标注结果可视化后按类别过滤,逐张翻看边界框是否贴合。不要只看总体mAP,分类别查看Precision差异,能最快定位标注问题。

2.3 数据增强:别把肉眼增强全套搬过来

工业场景的数据增强和通用检测不一样。Mosaic拼接、随机旋转这类增强确实能提升泛化能力,但有些增强会带来副作用。比如把变压器图像旋转90度,会让套管从竖直变成水平,现实中变电站几乎不可能出现这种角度,模型反而学会了不真实的空间分布。我们最终只保留了轻微亮度扰动、噪声扰动、尺度扰动,放弃了强旋转和随机裁剪,因为强裁剪容易把大目标截得只剩一小块,破坏边界框的语义完整性。

夜间和雨雾这一块,单纯靠增强补不齐。我后来用了一个笨办法:把白天图像的亮度压暗到不同档位,模拟黄昏和夜间照度,配合pytorch里简单的线性变换就行了,不需要上复杂的域迁移。实测下来夜间的识别率确实提升了不少,代价几乎为零。

3. YOLOv26训练链路:超参数、验证集切分与曲线判读

训练过程本身没什么神秘的,但很多人会在细节上翻车。我按我们项目实际跑通的路子,把整套链路捋一遍。

3.1 数据集的目录结构和配置文件

数据集的目录必须严格按YOLO的约定来组织:

datasets/ transformer_data/ images/ train/ val/ labels/ train/ val/ data.yaml

对应的data.yaml长这样:

path: ./datasets/transformer_data train: images/train val: images/val nc: 5 names: 0: transformer_body 1: radiator 2: bushing 3: oil_preserver 4: nameplate

验证集切分这里要特别说一句。不能随机切分。变电站巡检视频的相邻帧高度相似,如果随机切分验证集,模型用第100帧做训练,第101帧做验证,等于考试题目几乎和练习册一样,验证集损失虚低、mAP虚高,一到现场就露馅。正确做法是按时间间隔抽帧,比如每10帧抽1帧做验证,或者按不同日期、不同天气段的视频独立切分。我见过太多团队在这上面吃暗亏,所以反复提醒。

3.2 训练命令与参数选型

以当时跑的配置为例,训练命令大致是:

yolo detect train \ data=data.yaml \ model=yolo26n.pt \ epochs=300 \ imgsz=960 \ batch=16 \ optimizer=AdamW \ lr0=0.005 \ patience=50 \ device=0 \ project=./runs/transformer

两个参数我想单独解释。第一,imgsz用960而不是默认640。变电站的目标特点是大目标多、小目标少,但铭牌和套管顶端属于中偏小目标,输入尺寸提升之后,这些小目标的检测精度提升非常明显。代价是训练速度慢一些,但对精度优先的项目来说值得。第二,patience设50,意思是如果连续50个epoch验证集指标没提升就提前停止。我在前几个版本里没设这个参数,结果模型在第200个epoch后开始严重过拟合,loss曲线漂亮得吓人,但验证集P、R全部下行,白耗了大量算力。

3.3 loss/PR曲线读数:哪些信号说明模型在“死记硬背”

训练完一定要看两个东西:一个是验证集P/R曲线,另一个是混淆矩阵。

P(精确率)高但R(召回率)低的组合,说明模型“谨慎过头”,很多变压器组件没框出来,这种模型上线之后运维人员会疯狂漏检;R高但P低,说明模型“乱框”,变电站里到处都是“疑似套管”,这种模型误报率能让人崩溃。理想状态是P、R曲线在0.9附近同时保持,并且随着阈值变化的曲线面积饱满。

混淆矩阵则直接看出类间混淆。比如我们的模型早期把radiator和transformer_body搞混,这其实不奇怪,散热片紧贴在箱体上,边界本来就有重叠。针对这个,我们做了两步:一是把靠近箱体边缘的散热器标注框稍微内缩,不让框把箱体纹理带进去;二是增加散热器和箱体同时出现且边缘清晰的样本,帮模型学会区分。

还有一个关键指标,不是官方指标,而是我在实际中总结的:“组件数量合理性”。变压器本体一台站里通常只有一到几台,套管一般三到六只,油枕一只。如果某帧图像网络输出12个buship框,不用看曲线,肯定是误检了。把这种业务先验做成后置规则,比疯狂调模型参数快得多。

4. 部署环节的硬经验:从训练机到现场边缘盒子

训练完了只是开始。变电站现场不可能摆一台训练服务器推理,我们用的边缘设备是一类支持GPU推理的嵌入式板卡,功耗低、体积小,能直接挂在站端机柜里。

4.1 模型导出与加速:ONNX到TensorRT

YOLOv26的导出链路很成熟,先导出ONNX再转TensorRT:

yolo export model=best.pt format=onnx imgsz=960 half=True

拿到ONNX后,在边缘盒子侧用TensorRT的trtexec工具转引擎文件。这一步有一个精度掉点问题必须提一下:INT8量化能大幅提速,但变压器图像里套管、瓷瓶这类细纹理目标,量化后特征信息损失严重,框的置信度会明显漂移。我当时实测,INT8的准确率掉了将近4个点,后来老老实实改用FP16,速度和精度平衡最好,推理一帧960分辨率图像大概耗时50ms左右,完全满足巡检机器人低速巡航的实时性。

4.2 前处理细节:Resize模式不能乱选

推理时有个很容易被忽略的细节:图像Resize方式。

YOLO的推理默认是letterbox,即等比缩放并补灰边。但在工业接流场景里,有些二次开发人员图省事,直接把图像resize到指定尺寸,导致目标变形。变压器箱体本来是个矩形,一旦被压扁或拉长,模型的边界框输出就会整体偏移。我们在线推理时强制保留letterbox参数,同时记录原始图像尺寸与缩放比例,在输出坐标映射回原图时统一校准。这个细节不处理,坐标偏差可能在十几个像素,框线和实际目标错位看上去特别业余。

4.3 与视频流的对接:抽帧策略

现场摄像头过来的RTSP流,不能每一帧都送模型推理。我们采用的策略是:轮巡模式下每秒钟取2帧做检测;当检测到变压器区域出现明显变化(比如边界框数量变化、置信度跳变),再临时提高到10帧/秒做持续追踪。

这个调度逻辑很简单,但在嵌入式设备上省下的算力非常可观。检测不是越频繁越好,尤其是在低算力设备上,过高的推理频率会导致温度升高,CPU降频,反而影响稳定性。

5. 最磨人的误报问题:排查链路与针对性优化

模型上线跑了一周,漏检问题反而不多,最让人头疼的是误报。特别是某些场景下,模型会把铁塔的斜撑角钢识别成bushing,把草地栅栏识别成radiator,把雨后反光的地面积水识别成transformer_body。这些问题不是调个阈值就能解决的,必须走完整的排查链路。

5.1 一次典型误报的完整排查过程

我举一个印象很深的例子:某个下午,固定摄像头频繁报“散热器渗漏油”,我们点开告警截图一看,画面里是变压器散热器和旁边围栏的交界处,因为太阳西晒,金属围栏的反光纹路和散热片栅格极度相似。

第一步,我们先把所有误报截图导出,按时间、视角、天气聚类,发现90%的误报都集中在下午2点到4点的顺光时段,本质是反光导致的纹理伪造。

第二步,回到模型侧看特征图。这个阶段的网络结构里,浅层特征对边缘和纹理高度敏感,围栏的等高线纹理把散热器的响应激活了。所以单纯的P、R指标看不出问题,得用误报图跑一遍特征响应热力图,才能定位是哪个层级的特征被误激。

第三步,我们没有立刻重新训练,而是先在后处理里加规则:散热器区域只能出现在变压器箱体的两侧,如果检测框的长宽比异常(围栏是细长条,散热器是接近正方形的片组),直接过滤。这一条规则立刻干掉了70%的同类误报。

第四步,把剩余误报图回灌训练集,按负样本的方式标注空标签,重新微调了40个epoch。此后这类顺光误报不再复现。

5.2 后处理规则:模型不是唯一的一道闸门

在做完这次排查后,我把后处理规则写成了一个独立的过滤模块,专门处理业务先验:

  • 位置约束:套管必须出现在变压器箱体顶部区域,且呈竖直方向;油枕位置在箱体顶部一侧。
  • 尺度约束:铭牌的面积不能超过整图面积的15%,散热器的最大宽度不能超过箱体宽度的一半。
  • 共现约束:同一帧里,radiator数量多于10个的情况直接丢弃,变压器站不可能出现这么多散热片组。
  • 时序稳定性:连续3帧都检测到同一个位置的组件才生成告警事件,单帧偶发检测不计入。

这些规则的代码量不大,但效果立竿见影。很多人不愿意写规则,觉得“模型万能”,但工程问题从来都是组合拳。模型负责视觉感知,规则负责业务逻辑,两者结合才能稳定上线。

5.3 误报样本回灌:让模型自己打败自己

回灌机制是我们后期迭代的核心。具体流程是:每周五导出本周所有误报截图,按站点、时段、气象条件归类,剔除重复后人工确认;确认后的图片归入训练集,并按“空标签”处理——即图片没有任何目标框,模型需要学会在这些图上输出空结果。

这里有一个小注意点:空标签图不要一股脑全塞进去。如果误报图占训练集比例超过15%,模型会因为过度压制检测头导致召回率下降。控制节奏很重要,每周增量不超过50张,微调epoch控制在30到60之间,观察验证集P、R、mAP三个指标的平衡。

实测下来,三轮回灌之后,误报率下降了约六成,而召回率几乎没掉。这比单纯调置信度阈值有用得多,因为调阈值是“把门堵上”,样本回灌是“让模型自己知道哪些不是目标”,泛化能力完全不一样。

回到最开始的问题,变电站变压器检测为什么难?难在工程场景的复杂,难在数据获取的辛苦,也难在误报治理需要耐心。但只要你愿意把数据规范做到位、把训练细节抓起来、把部署和规则配合好,YOLOv26这套链路是完全能够稳定跑的。我自己最深的体会是,这类项目别追求一上来就跑个大模型,先把一个类目的小模型从数据到部署完整跑通,比什么都重要。那个“小闭环”里踩过的坑,就是你后面扩展所有类目的底气。

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

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

立即咨询