ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

变电站红外图像数据集:PT/CT目标检测与YOLOv8实践

变电站红外图像数据集:PT/CT目标检测与YOLOv8实践 简介本资源是面向电力系统智能运维研究者、计算机视觉工程师及高校科研团队的红外图像数据集聚焦变电站关键设备——电压互感器TP与电流互感器TC的状态识别与故障预警任务。数据集含889张真实变电站红外图像jpg及对应VOC格式标注文件xml共1778个文件总大小24.72MBxml文件提供精确的边界框标注TP 650处、TC 516处支撑目标检测、异常热斑定位等模型训练。已有2072人学习下载广泛用于YOLO/Faster R-CNN等算法实践、热图像语义分割预研及数据增强策略验证。资源结构规整文件命名含唯一哈希标识如IR_8595_jpg.rf.16ce7aa7...便于批量加载与实验复现可直接用于构建端到端的互感器健康状态识别流水线。 变电站红外图像数据集电压电流互感器VOC标签889张算是我最近整理过的一批比较有代表性的数据。做电力设备目标检测的朋友应该都知道可见光数据集好找但红外这块一直是个短板尤其是带完整VOC标签、直接能喂给模型训练的更是稀缺。这批数据量不大但胜在场景聚焦、标注规范拿来跑通流程、验证算法、做迁移学习预实验都挺合适。先说说这个数据集解压后的基本情况。889张红外图像全部是变电站实地拍摄的目标锁定在电压互感器PT和电流互感器CT这两类设备上。标注格式是VOC标准的XML文件每个XML对应一张同名JPG图片里面用bndbox框出了目标位置。图片分辨率统一为1920x1080焦平面阵列输出的是14位原始数据但保存成8位PNG格式灰度范围0到255。使用这个数据集之前最好先手动翻阅一遍XML文件确认label名称是不是统一。我见过不少数据集标注时手滑把voltage_transformer和voltage-transform混着写的情况训练的时候类别数会莫名翻倍损失函数直接爆炸。这个数据集我核对过标签名字是干净的两类PT和CT。VOC格式的XML文件结构本身不复杂最核心的部分是object节点下的name和bndbox。bndbox里存了xmin、ymin、xmax、ymax四个整数坐标表示目标框左上角和右下角的位置。这个坐标体系是像素级的原点在图像左上角x轴向右y轴向下和OpenCV、PIL的坐标体系完全一致所以读取时不需要做额外的映射转换。在动手训练之前需要把VOC格式转成模型能直接消费的格式。以YOLOv8为例它需要的是txt格式的标注文件每行一个目标格式是class_id x_center y_center width height注意这里的坐标全部是归一化到0到1之间的浮点数而不是像素整数。转换公式很简单x_center (xmin xmax) / 2 / img_width y_center (ymin ymax) / 2 / img_height width (xmax - xmin) / img_width height (ymax - ymin) / img_height写个Python脚本批量处理就行在dataset目录下建images和labels两个文件夹分别存放图片和转换后的txt标注然后按照8:1:1的比例划分train、val、test三个子集。划分时注意随机种子要固定否则每次跑出来的结果都不一样复现实验会很麻烦。红外图像和可见光图像在特征上有本质区别这是训练前必须想清楚的。可见光图像靠颜色和纹理区分目标而红外图像是温度分布的灰度映射目标与背景的区分本质是温差。在变电站场景里运行的互感器因为电流热效应温度比环境高在红外图里呈现为亮斑但如果设备刚停运检修温度降下来和背景的对比度会急剧下降甚至肉眼都难以分辨。这意味着模型学到的特征更依赖形状和边缘而不是颜色。针对这个特性训练时做数据增强要格外小心。HSV色彩空间扰动这种在可见光检测里常用的增强手段对红外图像基本没有意义因为灰度图根本没有饱和度信息色调扰动反而可能引入虚假的色偏噪声。更有效的增强方式是亮度对比度调整、随机翻转、随机缩放、随机平移以及轻微的旋转。红外图像的亮度分布受环境温度影响很大夏天和冬天同一台设备的红外图亮度差异明显所以对比度增强应该放在增强策略里。再说VOC标签本身。VOC格式是Pascal VOC比赛的标准标注格式XML文件里除了目标框信息还有folder、filename、source、size这些元信息。有些工具在读取VOC时会校验size里的宽高是否和实际图片一致如果不一致可能会报错。这个数据集里的width和height我抽查过都是1920和1080和图片实际尺寸对得上没发现问题。训练时选模型也要考虑红外图像的特点。因为目标是电力设备形状相对固定不是那种尺度变化特别剧烈的场景所以建模时不需要特别复杂的特征金字塔结构但多尺度检测依然有优势。用YOLOv8m或YOLOv8s做baseline是合理的选择输入分辨率设640x640即可不需要像检测小目标那样拉到1280否则训练速度会明显下降。实际操作中我建议用YOLOv8m起步先把loss曲线和mAP50跑出来看看有没有标注错误或图片质量问题。如果mAP50能稳定在0.9以上说明数据集质量不错可以继续调参如果掉到0.7以下大概率是标注框打偏了或者有误检样本混进去了。这个数据集的标注质量整体在线框的贴合度较好没有出现把整个设备区都框进去的大框用来做基准测试没有问题。跑YOLOv8训练之前还有一个细节要处理类别文件。在data.yaml里写清楚names: [PT, CT]路径指向train和val的图片目录。训练时用yolo detect train datadata.yaml modelyolov8m.pt epochs100 imgsz640 batch16这样的命令即可。如果显存有限batch可以降到8但学习率可能需要相应调低到0.001以下否则收敛不稳定。红外图像还有一个特殊问题热像仪的非均匀性校正。虽然这不影响已经保存好的图片但了解原理有助于理解数据中的固定图案噪声。非均匀性校正的核心原理是两点校正法采集两个不同温度的黑体辐射源作为参考点计算每个像元的增益和偏移系数然后对原始信号做线性修正。如果校正做得不好图像上会出现横条纹或固定斑块这类噪声虽然不明显但会干扰模型对边缘的提取训练时建议做一下中值滤波或高斯滤波预处理把细颗粒噪声压一压。如果想用mmrotate这类旋转框检测框架VOC格式的水平框数据是无法直接用的。因为mmrotate需要旋转框标签每帧标注里带角度值格式是cx cy w h angle。889张数据需要旋转框标注的话必须用专门的标注工具重新标注一遍这在时间成本上要有个预期。不过水平框对于PT和CT这类竖直安装的设备来说已经足够因为设备本身姿态垂直水平框能完整包住目标不需要旋转框的精细表示。训练过程里我踩过一个坑验证集的loss一直在降但mAP上不去。排查后发现是图片读取通道顺序的问题。YOLOv8内部用OpenCV读图读进来是BGR顺序如果我在预处理时用PIL读图RGB顺序再喂给模型颜色通道就错了模型学到的特征完全不正确。这个问题在可见光数据集上反映为颜色混乱在红外图上则表现为灰度反转效果都一样糟糕。解决方法是统一用cv2.imread读图或者在做任何预处理前先确认通道顺序并主动转换。说到模型推理模型训练完成后导出ONNX格式时输入输出节点的动态轴要设置好。因为输入尺寸是640x640固定大小导出时如果不设置动态轴后续推理时遇到非640x640的输入图会直接报错。可以在导出命令中加dynamicTrue让batch维度和宽高维度都是动态的。这样部署到ONNX Runtime或TensorRT时会更灵活尤其是处理实际变电站巡检视频流时不同相机的分辨率可能不同固定输入尺寸会导致画面被强行拉伸变形影响检测精度。针对变电站红外图像数据的另一个常见问题是昼夜温差带来的亮度分布变化。白天阳光直射下设备外壳温度升高红外图像中设备与背景的温差变小夜间环境温度低设备与背景的温差大图像对比度更明显。这意味着训练集和测试集如果来自不同时段mAP会有波动。解决思路是在数据准备阶段尽量保证两个时段的样本都有覆盖。如果样本不足可以合成模拟温差变化对图像做灰度直方图拉伸或压缩模拟不同环境温度下的成像效果。数据集在训练中还有一个用途做知识蒸馏的教师模型训练。红外图像的数量不足是常态完全依赖真实红外数据训练大模型很容易过拟合。可以先在这889张数据上训练一个精度不错的小模型然后利用可见光图像数据训练一个大模型再用红外模型作为教师、可见光模型作为学生做跨模态蒸馏这样可以大幅提高红外小样本场景下的检测精度。这个思路在工业界应用很广我自己在这类数据集上实践过效果比单纯用红外数据微调要好很多。数据增强这一块再展开说下。我试过几种策略组合比较推荐的是mosaic增强加随机仿射变换mosaic增强能把四张图拼在一起训练变相增大batch size对提升小目标检测能力有帮助而且红外图像数据量小mosaic增强能有效缓解过拟合。不过要注意mosaic增强后标注框会跨图拼接如果标注框跨越了拼接边界部分框架裁剪掉了标签也要跟着调整。YOLOv8的mosaic实现已经处理了这个问题不需要手动干预。随机仿射变换我设置了scale在0.5到1.5之间rotation在-10度到10度这两项对红外目标检测效果很友好因为巡检机器人的拍摄角度会有轻微变化加入旋转增强能提升模型对视角变化的鲁棒性。再补充一个关于数据集目录组织的细节。拿到解压后的数据集目录结构一般是JPEGImages放图片Annotations放XML标注可能还有一个ImageSets/Main放trainval.txt和test.txt这些索引文件。这个结构和Pascal VOC原始发布结构完全一致所以用mmdetection或者老版本的detectron2时可以直接用内置的VOCDataset加载器读取不需要写自定义Dataset类。如果用YOLOv8就需要做前面说的格式转换。转换时建议把train.txt、val.txt自动生成好YOLOv8支持用txt文件列表来指定训练集和验证集不用手动搬文件。对于目标检测模型评价指标这批数据量小建议关注mAP50和mAP50-95两个指标即可。mAP50是IoU阈值0.5下的平均精度mAP50-95是多个IoU阈值下精度的平均值。对小数据集来说mAP50-95对框的精确度要求更高如果标注框本身有偏移这个指标会比较难看。我当时测的结果是mAP50约0.93mAP50-95约0.74这组数据可以给大家一个参考线。如果模型训练结果明显低于这个水平先检查标注文件是不是有缺失或错位再看训练集测试集划分时是不是有同源图片被分到了两边导致数据泄漏。推理部署阶段如果做实时视频巡检TensorRT是性价比最高的方案。模型转成TensorRT engine后在NVIDIA Jetson Orin这类边缘设备上跑640x640的输入单帧推理耗时大概12到15毫秒能够满足25帧每秒左右的实时处理需求。转换时需要注意输入数据格式TensorRT的输入tensor需要显式声明为FP16半精度格式如果使用INT8量化还需要准备一个校准数据集可以从训练集里抽一两百张图统计每一层的激活值分布确定量化阈值。这个校准过程非常关键如果校准集分布和实际场景差异太大量化后的精度会掉得很厉害。数据量小的时候还有一个容易被忽视的细节数据划分时要考虑设备型号的多样性。变电站里可能有不同厂家、不同型号的互感器外观上差异较大。889张数据如果刚好集中在某个型号上模型对新型号的泛化能力会打折扣。手头如果有额外样本建议在训练前先做个可视化分析把图片按目标外观粗略分个组确保每个分组在训练集和验证集中都有代表这样评估出的mAP才更可信。红外图像还有一个特性灰度值本身携带温度信息。如果对温度绝对数值敏感比如要做故障诊断判断设备是否过热那么训练前的图像预处理就不能用普通的归一化除以255而是要做温度线性映射。但目标检测任务关心的是位置和类别温度绝对值的影响不大所以直接用标准归一化即可。如果你是做温度回归任务这批数据就不太适合了因为标注里没有温度真值。标注工具方面如果后续要扩充数据推荐用LabelImg开箱即用直接导出VOC格式省去格式转换的麻烦。LabelImg的快捷键要熟练w键画框、d键切换下一张图、ctrls保存画框效率会有明显提升。画框的时候尽量贴合目标边缘不要把背景包含进去特别是红外图像目标边缘比较模糊人眼判断容易偏保守多框一点背景进去这样训练出来的框不够紧凑mAP50-95会被拉低。这批数据的拓展使用方向也比较明确。一是可以用它来做半监督学习的标注种子集先用889张训练一个初版模型在大量未标注的红外图上跑推理用伪标签配合置信度阈值筛选出可靠的样本加入训练集迭代效果提升通常很显著。二是可以做域自适应研究把红外数据作为目标域把大量易得的可见光数据作为源域训练一个能把可见光特征映射到红外特征的对抗网络最终在红外目标域上获得更好的检测效果。三是做数据增强的GAN生成用这889张作为训练数据训练一个红外图像生成器合成更多样化的样本但要注意生成样本的质量控制低质量生成图反而会拉低模型性能。数据集的合规性也值得说一句。这类数据集一般是研究机构或项目组在变电站现场采集的涉及电网设备位置信息使用者要注意数据保密要求。如果是在企业内部使用最好在内部服务器上完成训练不要上传到第三方云平台避免敏感位置信息外泄。公开发表论文时也要隐去图像中的地理位置水印或时间戳信息。总结一下这套流程的核心操作顺序第一步检查数据完整性统计图片数量和XML数量是否一致第二步写脚本做VOC转YOLO格式第三步划分train/val/test并固定随机种子第四步写data.yaml配置第五步启动训练并监控loss曲线第六步导出ONNX或TensorRT做推理验证。这六个步骤顺下来一个完整的红外目标检测demo就跑通了。后面想提升精度的话可以从数据增强、多尺度训练、模型集成、伪标签半监督这几个方向入手优化。最后再说说实际使用中我个人的一点体会。红外图像检测任务在工业界需求量很大但公开数据集极度匮乏每到一个新场景几乎都要靠现场采集加人工标注来积累数据。889张这个规模虽然不足以支撑一个从零训练的深度大模型但足以完成迁移学习、小样本学习、领域自适应等场景的算法验证也能作为预训练模型微调的底座数据。把它当作一个高质量起点配合半监督或生成式数据扩充完全可以做出实用的落地模型。这个领域后续还有很大的扩展空间比如多光谱融合、时序热像分析、设备故障预测与检测联动等都可以在这类数据基础上延伸。本文还有配套的精品资源点击获取
返回列表