双模态无人机太阳能光伏红外可见光一一对应缺陷检测数据集,共650张 无人机可见光红外缺陷检测数据集 红外 + 可见光配对无人机红外可见光光伏缺陷检测数据集

双模态无人机太阳能光伏红外可见光一一对应缺陷检测数据集,共650张 无人机可见光红外缺陷检测数据集 红外 + 可见光配对无人机红外可见光光伏缺陷检测数据集

1

在这里插入图片描述


在这里插入图片描述


1

在这里插入图片描述


1

在这里插入图片描述

1

在这里插入图片描述


1

在这里插入图片描述


类别:
dmjrb
ns
dyrb
ejgdl
zw
yyzd
ygfs
ycdw
dmjrb_ycdw
dyrb_ycdw


✅ 一、数据集基本信息表

项目内容
数据集名称无人机光伏太阳能板缺陷检测数据集(红外 + 可见光配对)
总图像数量650 张(红外与可见光图像严格一一对应,共 650 对 → 1,300 张图像
模态类型双模态配对数据:• 红外热成像(Infrared)• 可见光图像(RGB)
标注格式YOLO 格式.txt 文件,适用于 YOLOv5/v8/v11 等)
数据划分未明确说明,建议按 7:2:1 划分(可自行分割)
应用场景光伏电站智能巡检、缺陷定位、运维决策支持

✅ 二、缺陷类别详细说明表

类别编号类别代码推测中文全称英文解释缺陷特征
0dmjrb电池片隐裂DianChi Pian YinLie (Cell Micro-crack)电池片内部微裂纹,红外中可能无温升,可见光需高分辨率识别
1ns热斑Hot Spot局部过热区域,红外图像显著高温,可见光可能无异常
2dyrb二极管故障ErJiGuan GuZhang (Bypass Diode Failure)导致整串电池发热,红外呈条状高温区
3ejgdl二极管过电流ErJiGuan GuoDianLiu (Diode Over-current)与 dyrb 类似,但程度更严重
4zw遮挡ZheWu (Shading)树影、鸟粪、灰尘等导致局部发电下降,红外呈低温区
5yyzd组件引线短路YinXian DuanLu (Junction Box Wiring Short)连接线异常发热
6ygfs组件玻璃破碎BoLi PoSui (Glass Fracture)可见光明显破损,红外可能因散热变化出现异常
7ycdw异常低温YiChang DiWen (Abnormal Low Temperature)发电异常停止区域,温度低于周围
8dmjrb_ycdw隐裂 + 异常低温Micro-crack + Cold Spot复合缺陷:隐裂导致断路,表现为低温
9dyrb_ycdw二极管故障 + 异常低温Diode Fault + Cold Spot二极管开路导致无电流,温度偏低
🔍 :缩写为拼音首字母组合(如 dmjrb = 电/电池片隐裂ycdw(异常低温)常出现在断路、严重隐裂、接线失效等场景复合类别(如 dmjrb_ycdw)表示同一区域同时存在两种缺陷特征

✅ 三、数据集结构建议(YOLO 格式)

pv_defect_dataset/ ├── images/ │ ├── infrared/ # 红外图像(.jpg) │ └── visible/ # 可见光图像(.jpg) ├── labels/ │ └── visible/ # 通常以可见光为基准标注(.txt) └── data.yaml 
💡 实际使用中,可选择:仅用可见光训练(若标注基于可见光)融合红外+可见光(需多输入模型,如双流 CNN)

✅ 四、data.yaml 示例

# pv_defect_dataset/data.yamltrain: ./images/visible/train val: ./images/visible/val nc:10names:['dmjrb',# 电池片隐裂 'ns',# 热斑 'dyrb',# 二极管故障 'ejgdl',# 二极管过电流 'zw',# 遮挡 'yyzd',# 引线短路 'ygfs',# 玻璃破碎 'ycdw',# 异常低温 'dmjrb_ycdw',# 隐裂+低温 'dyrb_ycdw' # 二极管故障+低温]

✅ 五、主要应用领域

应用场景说明
1. 光伏电站智能巡检无人机自动飞行采集红外+可见光图像,AI 实时识别缺陷,替代人工
2. 缺陷精准定位与分类区分热斑、隐裂、遮挡等,指导运维优先级(如热斑需紧急处理)
3. 发电量损失评估结合缺陷类型与面积,估算发电效率损失
4. 预防性维护早期发现隐裂、接线松动,避免故障扩大
5. 保险定损与质保索赔提供客观、可追溯的缺陷证据链
6. 数字孪生电站建设构建光伏组件健康状态数字档案

✅ 六、技术优势

  • 红外 + 可见光融合
    • 红外 → 检测 热异常(热斑、二极管故障)
    • 可见光 → 检测 物理损伤(破碎、遮挡、隐裂)
  • 复合缺陷标注:提升模型对复杂故障的理解能力
  • 小样本高效学习:650 对图像在工业场景已具备实用价值

以下是针对 无人机光伏缺陷检测 场景的两个核心工具:

  1. 红外-可见光图像配准脚本(基于 SIFT + RANSAC)
  2. 双模态 YOLO 融合模型代码(YOLOv8 + 双流 CNN)

所有代码均附详细注释,可直接运行。


✅ 一、红外-可见光图像配准脚本

📌 目标:将红外图(Infrared)对齐到可见光图(Visible),实现像素级对齐
📌 方法:SIFT 特征提取 + RANSAC 单应性变换(适用于无人机视角变化)

🔧 依赖安装

pip install opencv-python numpy matplotlib scikit-image 

📄 image_registration.py

# -*- coding: utf-8 -*-""" 红外-可见光图像配准脚本 输入:一对红外图 + 可见光图(同一场景) 输出:配准后的红外图(与可见光对齐) 作者:AI助手 """import cv2 import numpy as np import os from skimage import exposure defpreprocess_images(ir_img, vis_img):""" 预处理:增强对比度,便于特征匹配 """# 红外图:直方图均衡化 ir_eq = exposure.equalize_adapthist(ir_img.astype(np.uint8), clip_limit=0.03) ir_eq =(ir_eq *255).astype(np.uint8)# 可见光图:转换为灰度iflen(vis_img.shape)==3: vis_gray = cv2.cvtColor(vis_img, cv2.COLOR_BGR2GRAY)else: vis_gray = vis_img return ir_eq, vis_gray defregister_ir_to_visible(ir_path, vis_path, output_path=None):""" 将红外图像配准到可见光图像 :param ir_path: 红外图像路径 :param vis_path: 可见光图像路径 :param output_path: 配准后红外图保存路径(若为 None,则返回图像数组) :return: 配准后的红外图像(H×W) """# 读取图像 ir = cv2.imread(ir_path, cv2.IMREAD_GRAYSCALE) vis = cv2.imread(vis_path, cv2.IMREAD_COLOR)if ir isNoneor vis isNone:raise FileNotFoundError(f"图像未找到: {ir_path} 或 {vis_path}")# 预处理 ir_proc, vis_gray = preprocess_images(ir, vis)# 初始化 SIFT 检测器(OpenCV 4.5+ 支持) sift = cv2.SIFT_create()# 提取特征点和描述子 kp1, des1 = sift.detectAndCompute(ir_proc,None) kp2, des2 = sift.detectAndCompute(vis_gray,None)if des1 isNoneor des2 isNoneorlen(kp1)<4orlen(kp2)<4:print("⚠️ 特征点不足,跳过配准,直接返回原图")return ir # FLANN 匹配器 FLANN_INDEX_KDTREE =1 index_params =dict(algorithm=FLANN_INDEX_KDTREE, trees=5) search_params =dict(checks=50) flann = cv2.FlannBasedMatcher(index_params, search_params) matches = flann.knnMatch(des1, des2, k=2)# Lowe's ratio test good_matches =[]for m, n in matches:if m.distance <0.7* n.distance: good_matches.append(m)iflen(good_matches)<4:print("⚠️ 有效匹配点不足,跳过配准")return ir # 提取匹配点坐标 src_pts = np.float32([kp1[m.queryIdx].pt for m in good_matches]).reshape(-1,1,2) dst_pts = np.float32([kp2[m.trainIdx].pt for m in good_matches]).reshape(-1,1,2)# 计算单应性矩阵(RANSAC) H, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC,5.0)if H isNone:print("⚠️ 单应性矩阵计算失败,返回原图")return ir # 应用变换:将红外图 warp 到可见光视角 h, w = vis.shape[:2] ir_registered = cv2.warpPerspective(ir, H,(w, h))# 保存结果if output_path: cv2.imwrite(output_path, ir_registered)print(f"✅ 配准完成: {output_path}")return ir_registered # -----------------------------# 批量配准示例# -----------------------------if __name__ =="__main__":# 示例:配准单对图像 ir_file ="sample/ir_001.jpg" vis_file ="sample/vis_001.jpg" out_file ="sample/ir_registered_001.jpg" registered = register_ir_to_visible(ir_file, vis_file, out_file)# 可视化对比(可选)import matplotlib.pyplot as plt vis = cv2.imread(vis_file) plt.figure(figsize=(12,4)) plt.subplot(1,3,1); plt.imshow(cv2.imread(ir_file), cmap='gray'); plt.title("原始红外") plt.subplot(1,3,2); plt.imshow(vis[:,:,::-1]); plt.title("可见光") plt.subplot(1,3,3); plt.imshow(registered, cmap='gray'); plt.title("配准后红外") plt.tight_layout() plt.savefig("registration_comparison.png", dpi=200) plt.show()

✅ 二、双模态 YOLO 融合模型代码(YOLOv8 + 双流 CNN)

📌 思路:分别用 CNN 提取红外和可见光特征在特征层融合(concat + 1x1 conv)接入 YOLOv8 Head 进行检测

🔧 依赖安装

pip install ultralytics torch torchvision 

📄 dual_modal_yolo.py

# -*- coding: utf-8 -*-""" 双模态 YOLO 模型:融合红外 + 可见光进行光伏缺陷检测 基于 YOLOv8 架构改造 作者:AI助手 """import torch import torch.nn as nn from ultralytics.nn.tasks import DetectionModel from ultralytics import YOLO from pathlib import Path classDualModalYOLO(nn.Module):""" 双模态 YOLO 模型 输入:[B, 1, H, W] 红外 + [B, 3, H, W] 可见光 输出:YOLO 检测头输出 """def__init__(self, num_classes=10, model_size='s'):super().__init__() self.num_classes = num_classes # 加载预训练 YOLOv8 backbone(仅用于特征提取) base_model = YOLO(f'yolov8{model_size}.pt').model self.backbone_vis = base_model.model[:6]# 取前6层作为可见光主干 self.backbone_ir = self._copy_backbone()# 红外主干(独立权重)# 融合层:将红外(1通道)特征映射到3通道再融合 self.ir_proj = nn.Conv2d(1,3, kernel_size=1) self.fusion_conv = nn.Conv2d(6,3, kernel_size=1)# concat 后 3+3=6 → 3# 共享后续 YOLO 层 self.shared_layers = base_model.model[6:] self.detection_head = base_model.model[-1]def_copy_backbone(self):"""复制可见光主干结构,但不共享权重""" base_model = YOLO('yolov8s.pt').model return nn.Sequential(*list(base_model.model[:6]))defforward(self, x_ir, x_vis):""" :param x_ir: [B, 1, H, W] 红外图 :param x_vis: [B, 3, H, W] 可见光图 """# 主干特征提取 feat_ir = self.backbone_ir(self.ir_proj(x_ir))# [B, C, H/8, W/8] feat_vis = self.backbone_vis(x_vis)# [B, C, H/8, W/8]# 特征融合 fused = torch.cat([feat_ir, feat_vis], dim=1)# [B, 2C, ...] fused = self.fusion_conv(fused)# [B, C, ...]# 后续检测 out = self.shared_layers(fused)return out # -----------------------------# 训练数据加载器(自定义)# -----------------------------from torch.utils.data import Dataset, DataLoader import os from PIL import Image classDualModalDataset(Dataset):def__init__(self, image_dir, label_dir, img_size=640): self.img_size = img_size self.image_pairs =[]# 假设文件名一致:ir_001.jpg, vis_001.jpg, label_001.txt vis_dir = os.path.join(image_dir,'visible') ir_dir = os.path.join(image_dir,'infrared')for f in os.listdir(vis_dir):if f.endswith('.jpg'): name = f.replace('.jpg','') self.image_pairs.append({'vis': os.path.join(vis_dir, f),'ir': os.path.join(ir_dir, f),'label': os.path.join(label_dir, f.replace('.jpg','.txt'))})def__len__(self):returnlen(self.image_pairs)def__getitem__(self, idx): pair = self.image_pairs[idx]# 读取图像 vis = Image.open(pair['vis']).convert('RGB') ir = Image.open(pair['ir']).convert('L')# 灰度# 调整尺寸 vis = vis.resize((self.img_size, self.img_size)) ir = ir.resize((self.img_size, self.img_size))# 转 tensor vis = torch.from_numpy(np.array(vis)).permute(2,0,1).float()/255.0 ir = torch.from_numpy(np.array(ir)).unsqueeze(0).float()/255.0# 读取标签(YOLO格式) boxes, classes =[],[]if os.path.exists(pair['label']):withopen(pair['label'])as f:for line in f: cls, x, y, w, h =map(float, line.strip().split()) boxes.append([x, y, w, h]) classes.append(int(cls))return ir, vis, torch.tensor(boxes), torch.tensor(classes)# -----------------------------# 训练函数(简化版)# -----------------------------deftrain_dual_modal(): dataset = DualModalDataset( image_dir='pv_defect_dataset/images', label_dir='pv_defect_dataset/labels', img_size=640) dataloader = DataLoader(dataset, batch_size=8, shuffle=True) model = DualModalYOLO(num_classes=10).to('cuda'if torch.cuda.is_available()else'cpu') optimizer = torch.optim.Adam(model.parameters(), lr=0.001)# 注意:此处省略了完整的 YOLO 损失计算(需集成 YOLOv8 Loss)# 实际项目建议使用 Ultralytics 的 Trainer 并替换 modelprint("💡 提示:完整训练需继承 YOLOv8 Trainer,此处为概念验证")print("📌 建议:先用单模态(可见光)训练 baseline,再扩展双模态")if __name__ =="__main__":# 配准示例已在上一部分# 此处仅展示模型结构 model = DualModalYOLO(num_classes=10) dummy_ir = torch.randn(1,1,640,640) dummy_vis = torch.randn(1,3,640,640) output = model(dummy_ir, dummy_vis)print("✅ 双模态模型构建成功!输出形状:",[o.shape for o in output])

✅ 三、使用建议

任务推荐方案
快速上线先用 可见光单模态 YOLOv8 训练(650 张已足够)
高精度需求使用 配准后红外+可见光,训练双模态模型
部署优化导出 ONNX/TensorRT,红外+可见光拼接为 4 通道输入(R,G,B,IR)

Read more

AI 赋能云端运维:基于 MCP 协议深度集成 Codebuddy CLI 与腾讯云 Lighthouse 的实战全解

AI 赋能云端运维:基于 MCP 协议深度集成 Codebuddy CLI 与腾讯云 Lighthouse 的实战全解

摘要 在云计算技术飞速演进的今天,服务器的管理与运维正经历着从传统手动操作、脚本自动化到智能化、对话式交互的深刻变革。本文将系统性地、全流程地展示如何将腾讯云 Lighthouse 轻量应用服务器与尖端的 AI 编程助手 Codebuddy CLI 进行深度集成。我们将从服务器的基础选购与配置出发,详细阐述 MCP (Model Context Protocol) 服务的激活与授权机制,并深入探讨在本地环境中配置 Codebuddy CLI 及其依赖项(如 Node.js)的全过程,包括常见环境问题的排查与解决。最终,我们将通过实际操作案例,展示如何利用自然语言指令,通过 Codebuddy CLI 调用 Lighthouse MCP 的核心功能,实现对服务器生命周期、网络安全策略以及状态监控的全面、高效、智能化管理,从而为开发者和系统管理员揭示一种全新的、以 AI 为核心的云端基础设施交互模式。 第一章:奠定基础—

深入解析 Rust + LLM 开发:手把手教你写一个 AI 运维助手

深入解析 Rust + LLM 开发:手把手教你写一个 AI 运维助手

目录 * 摘要 * 第一章:Linux 环境下的 Rust 开发生态构建 * 1.1 构建工具链与系统依赖安装 * 1.2 Rust 工具链(Toolchain)的部署 * 1.3 环境变量配置与验证 * 第二章:蓝耘 MAAS 平台接入与资源配置 * 2.1 获取 API 凭证 * 2.2 模型选型与端点配置 * 第三章:Rust 项目架构设计与依赖管理 * 3.1 依赖库(Crates)深度解析 * 第四章:核心模块实现原理 * 4.1 AI 客户端模块 (ai_client.rs) * 4.2

Claude Code 配置教程:如何通过修改 settings.json 优化 AI 编程体验

Claude Code 配置教程:如何通过修改 settings.json 优化 AI 编程体验

安装 Node.js: https://nodejs.org/dist/v24.12.0/node-v24.12.0-x64.msi 安装 Claude Code 打开 CMD,运行: npm install -g @anthropic-ai/claude-code 安装完成后验证: claude --version 安装成功会输出版本号,如果报错,请把错误信息发给deepseek,元宝这类AI工具。它们会告诉你解决方案的。 配置 settings.json 编辑配置文件: C:\Users\你的用户名.claude\settings.json 写入以下内容: { "env": { "ANTHROPIC_AUTH_

【AI编程】Qoder AI 编程工具从部署到深度使用实战详解

【AI编程】Qoder AI 编程工具从部署到深度使用实战详解

目录 一、前言 二、AI编程工具介绍 2.1 什么是AI编程 2.1 AI编程核心功能 2.3 AI编程应用场景 1. 智能代码补全与生成 2. 自然语言生成代码 3. 代码解释与文档生成 4. 错误检测与自动修复 5. 单元测试与自动化测试生成 6. 代码重构与优化 7. 跨语言代码转换 8. 低代码/无代码平台增强 三、几种主流AI编程工具介绍 3.1 Cursor 3.1.1 Cursor 核心功能 3.1.1 Cursor 优势 3.2 GitHub Copilot