跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 YOLOv8 的无人机红外可见光光伏缺陷检测数据集与训练指南

综述由AI生成光伏无人机巡检常面临复杂环境下的缺陷识别难题。本数据集提供 650 对红外与可见光图像,涵盖脱膜积热、热斑等 10 类典型故障,标注格式为 PASCAL VOC XML。文章详细解析了数据预处理流程,包括如何将 XML 转换为 YOLO 格式,并给出了 dataset.yaml 配置示例及训练建议。通过双模态融合策略,可有效提升小目标缺陷的检测精度,适用于电站智能运维场景。

嘘发布于 2026/4/9更新于 2026/6/1114 浏览
基于 YOLOv8 的无人机红外可见光光伏缺陷检测数据集与训练指南

基于 YOLOv8 的无人机红外可见光光伏缺陷检测数据集与训练指南

在光伏电站的智能运维中,利用无人机搭载红外相机进行自动巡检已成为主流趋势。然而,面对复杂的光照、阴影以及细微的组件缺陷,单一模态往往难以达到理想的识别精度。为此,我们整理了一套包含 650 张图像的双模态数据集,旨在辅助开发者构建高精度的缺陷检测模型。

一、数据集概览

本数据集的核心优势在于红外热成像与可见光图像的严格对应。每张有效样本都包含一对图像(红外 + 可见光),并配有 PASCAL VOC XML 格式的标注文件。

项目详情
总图像数量650 对(每对含红外与可见光各一张)
标注格式PASCAL VOC (.xml)
图像分辨率工业级拍摄,通常为 1024×1024 或更高
应用场景光伏板故障诊断、AI 辅助运维

💡 提示:虽然原始数据未明确划分比例,建议在实际使用前按 7:2:1 的比例自行划分为训练集、验证集和测试集。

二、数据结构设计

为了便于后续加载与训练,建议按照以下目录结构组织文件:

photovoltaic_defect_dataset/
├── images/
│   ├── infrared/      # 存放红外图像 (如 0001_ir.jpg)
│   └── visible/       # 存放可见光图像 (如 0001_vis.jpg)
├── annotations/       # 存放对应的 XML 标注文件
│   ├── 0001.xml
│   └── ...
└── labels.txt         # 类别名称映射表

命名规范上,请确保同一场景下的红外图、可见光图和 XML 文件名保持一致(例如 0001),仅后缀不同,这样在编写数据加载器时会更加高效。

三、缺陷类别定义

数据集中涵盖了 10 种典型的光伏组件缺陷,部分为复合缺陷。以下是详细的类别对照表:

ID标签中文名称英文名称说明
0dmjrb脱膜积热Delamination with hot spot绝缘层脱落导致局部过热
1ns热斑Hot spot单元异常发热,常见于老化或遮挡
2dyrb断栅Broken grid line电极断裂,影响导电性
3ejgl裂纹Crack硅片或玻璃表面裂痕
4zw阻焊Soldering blockage焊接不良,阻断电流路径
5yyzd电池异质Cell heterogeneity电池片内部材料不均
6ygfs隐裂Hidden crack不可见但可由红外发现的微裂纹
7ycdw电容焊点Capacitive solder point焊点异常,可能短路
8dmjrb_ycdw脱膜积热 + 电容焊点Delamination + Capacitive solder复合缺陷
9dyrb_ycdw断栅 + 电容焊点Broken grid + Capacitive solder复合缺陷

⚠️ 注意:ID 8 和 9 属于复合缺陷。在标注时,应分别框出每个缺陷区域并标记其对应的类别 ID,不要合并为一个框。

四、数据预处理实战

YOLOv8 原生支持 YOLO 格式的 txt 标注,而我们的原始数据是 XML 格式。这里分享一个实用的转换脚本思路,无需依赖第三方库即可快速完成迁移。

1. XML 转 YOLO 格式

我们需要解析 XML 中的边界框坐标,并将其归一化到 [0, 1] 区间。下面是一个基础的 Python 处理逻辑示例:

import xml.etree.ElementTree as ET
import os

def convert_xml_to_yolo(xml_path, img_path, output_dir):
    """
    将 PASCAL VOC XML 标注转换为 YOLO 格式
    """
    tree = ET.parse(xml_path)
    root = tree.getroot()
    
    # 获取图片尺寸用于归一化
    size = root.find('size')
    w = int(size.find('width').text)
    h = int(size.find('height').text)
    
    # 准备输出文件名
    out_name = os.path.basename(img_path).replace('.jpg', '.txt')
    out_path = os.path.join(output_dir, out_name)
    
    with open(out_path, 'w') as f:
        for obj in root.findall('object'):
            cls_name = obj.find('name').text
            bbox = obj.find('bndbox')
            
            # 提取坐标
            x_min = float(bbox.find('xmin').text)
            y_min = float(bbox.find('ymin').text)
            x_max = float(bbox.find('xmax').text)
            y_max = float(bbox.find('ymax').text)
            
            # 计算中心点和宽高(归一化)
            x_center = (x_min + x_max) / 2.0 / w
            y_center = (y_min + y_max) / 2.0 / h
            width = (x_max - x_min) / w
            height = (y_max - y_min) / h
            
            # 写入一行:class_id x_center y_center width height
            # 实际使用时需建立 cls_name 到 id 的映射字典
            cls_id = class_map.get(cls_name, 0)
            f.write(f"{cls_id} {x_center:.6f} {y_center:.6f} {width:.6f} {height:.6f}\n")

这段代码的关键在于坐标归一化。YOLO 算法不关心绝对像素值,它需要的是相对于图片宽高的比例,这样模型才能适应不同分辨率的输入。

2. 配置 dataset.yaml

转换完成后,我们需要告诉 YOLOv8 我们的类别数量和名称。创建一个 dataset.yaml 文件至关重要:

train: ../data/images/train
val: ../data/images/val
test: ../data/images/test
nc: 10
names: ['dmjrb', 'ns', 'dyrb', 'ejgl', 'zw', 'yyzd', 'ygfs', 'ycdw', 'dmjrb_ycdw', 'dyrb_ycdw']

这里 nc 代表类别数量,必须与 names 列表长度一致。使用缩写作为名称可以保持文件名的简洁,但在推理结果展示时,建议配合一个翻译字典以便阅读。

五、应用与展望

这套数据不仅适用于学术研究,在工业界也有明确的落地场景:

  • 智能巡检:无人机自动巡航,实时回传缺陷位置。
  • 故障定位:AI 精准定位问题组件,减少人工排查时间。
  • 效率评估:通过缺陷面积估算功率损失,辅助运维决策。

双模态融合能有效解决单一可见光无法发现'热斑'或'隐裂'的问题。当然,实际部署中也面临小目标密集、类别不平衡等挑战,建议在训练时结合 Mosaic 增强和 Focal Loss 来优化模型表现。

目录

  1. 基于 YOLOv8 的无人机红外可见光光伏缺陷检测数据集与训练指南
  2. 一、数据集概览
  3. 二、数据结构设计
  4. 三、缺陷类别定义
  5. 四、数据预处理实战
  6. 1. XML 转 YOLO 格式
  7. 2. 配置 dataset.yaml
  8. 五、应用与展望
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Linux (Kali) 部署 OpenClaw 指南
  • Pixel Shuffle 与 Unshuffle 原理及算法流程
  • 使用 Python 和 ChromaDB 构建简易 RAG 应用
  • Neo4j Desktop 安装与使用指南
  • SD-WebUI模型下载器:国内用户免代理高速下载Civitai模型完整指南
  • Windows 11 下 Docker Desktop 安装与部署指南
  • Linux 安装 Claude Code 及 VS Code SSH 远程集成配置
  • Flutter serial 库鸿蒙化适配:Web 串口通信与硬件连接指南
  • Linux OpenEuler 部署 Qwen3-32B 大模型华为昇腾 Arm 服务器 MindIE Docker Dify 方案
  • H5-Dooring 低代码可视化编辑器使用指南
  • JavaScript 前端开发基础入门与 DOM 操作详解
  • Redis IO 多路复用模型详解
  • 网络安全:新手如何从零开始学习漏洞挖掘
  • Flutter wasm_interop 鸿蒙 Web 端适配与高性能计算实战
  • C++中 memcpy 和赋值拷贝的核心区别
  • 利用 AI 快速开发 MCP 服务插件并实现本地与线上部署
  • MinIO 开源版本部署实战:避开许可证陷阱
  • 利用 AI 快速开发 Microsoft Visual C++ 应用
  • 构建与 GitHub 深度集成的自动化工作流实战指南
  • Dify 工作流发布为 MCP Server 实践指南
  • 相关免费在线工具

    • 加密/解密文本

      使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

    • RSA密钥对生成器

      生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

    • Mermaid 预览与可视化编辑

      基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

    • 随机西班牙地址生成器

      随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

    • Gemini 图片去水印

      基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

    • curl 转代码

      解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online