行业网站建设策划方案茶叶设计网站建设
2026/5/21 17:28:14 网站建设 项目流程
行业网站建设策划方案,茶叶设计网站建设,中国黄金集团j建设公司网站,宣传海报用什么软件做11111类别#xff1a; dmjrb ns dyrb ejgdl zw yyzd ygfs ycdw dmjrb_ycdw dyrb_ycdw✅ 一、数据集基本信息表项目内容数据集名称无人机光伏太阳能板缺陷检测数据集#xff08;红外 可见光配对#xff09;总图像数量650 张#xff08;红外与可见光图像严格一一对应#x…11111类别dmjrbnsdyrbejgdlzwyyzdygfsycdwdmjrb_ycdwdyrb_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/trainval:./images/visible/valnc:10names:[dmjrb,# 电池片隐裂ns,# 热斑dyrb,# 二极管故障ejgdl,# 二极管过电流zw,# 遮挡yyzd,# 引线短路ygfs,# 玻璃破碎ycdw,# 异常低温dmjrb_ycdw,# 隐裂低温dyrb_ycdw# 二极管故障低温]✅ 五、主要应用领域应用场景说明1. 光伏电站智能巡检无人机自动飞行采集红外可见光图像AI 实时识别缺陷替代人工2. 缺陷精准定位与分类区分热斑、隐裂、遮挡等指导运维优先级如热斑需紧急处理3. 发电量损失评估结合缺陷类型与面积估算发电效率损失4. 预防性维护早期发现隐裂、接线松动避免故障扩大5. 保险定损与质保索赔提供客观、可追溯的缺陷证据链6. 数字孪生电站建设构建光伏组件健康状态数字档案✅ 六、技术优势红外 可见光融合红外 → 检测热异常热斑、二极管故障可见光 → 检测物理损伤破碎、遮挡、隐裂复合缺陷标注提升模型对复杂故障的理解能力小样本高效学习650 对图像在工业场景已具备实用价值以下是针对无人机光伏缺陷检测场景的两个核心工具红外-可见光图像配准脚本基于 SIFT RANSAC双模态 YOLO 融合模型代码YOLOv8 双流 CNN所有代码均附详细注释可直接运行。✅ 一、红外-可见光图像配准脚本目标将红外图Infrared对齐到可见光图Visible实现像素级对齐方法SIFT 特征提取 RANSAC 单应性变换适用于无人机视角变化 依赖安装pipinstallopencv-python numpy matplotlib scikit-imageimage_registration.py# -*- coding: utf-8 -*- 红外-可见光图像配准脚本 输入一对红外图 可见光图同一场景 输出配准后的红外图与可见光对齐 作者AI助手 importcv2importnumpyasnpimportosfromskimageimportexposuredefpreprocess_images(ir_img,vis_img): 预处理增强对比度便于特征匹配 # 红外图直方图均衡化ir_eqexposure.equalize_adapthist(ir_img.astype(np.uint8),clip_limit0.03)ir_eq(ir_eq*255).astype(np.uint8)# 可见光图转换为灰度iflen(vis_img.shape)3:vis_graycv2.cvtColor(vis_img,cv2.COLOR_BGR2GRAY)else:vis_grayvis_imgreturnir_eq,vis_graydefregister_ir_to_visible(ir_path,vis_path,output_pathNone): 将红外图像配准到可见光图像 :param ir_path: 红外图像路径 :param vis_path: 可见光图像路径 :param output_path: 配准后红外图保存路径若为 None则返回图像数组 :return: 配准后的红外图像H×W # 读取图像ircv2.imread(ir_path,cv2.IMREAD_GRAYSCALE)viscv2.imread(vis_path,cv2.IMREAD_COLOR)ifirisNoneorvisisNone:raiseFileNotFoundError(f图像未找到:{ir_path}或{vis_path})# 预处理ir_proc,vis_graypreprocess_images(ir,vis)# 初始化 SIFT 检测器OpenCV 4.5 支持siftcv2.SIFT_create()# 提取特征点和描述子kp1,des1sift.detectAndCompute(ir_proc,None)kp2,des2sift.detectAndCompute(vis_gray,None)ifdes1isNoneordes2isNoneorlen(kp1)4orlen(kp2)4:print(⚠️ 特征点不足跳过配准直接返回原图)returnir# FLANN 匹配器FLANN_INDEX_KDTREE1index_paramsdict(algorithmFLANN_INDEX_KDTREE,trees5)search_paramsdict(checks50)flanncv2.FlannBasedMatcher(index_params,search_params)matchesflann.knnMatch(des1,des2,k2)# Lowes ratio testgood_matches[]form,ninmatches:ifm.distance0.7*n.distance:good_matches.append(m)iflen(good_matches)4:print(⚠️ 有效匹配点不足跳过配准)returnir# 提取匹配点坐标src_ptsnp.float32([kp1[m.queryIdx].ptformingood_matches]).reshape(-1,1,2)dst_ptsnp.float32([kp2[m.trainIdx].ptformingood_matches]).reshape(-1,1,2)# 计算单应性矩阵RANSACH,maskcv2.findHomography(src_pts,dst_pts,cv2.RANSAC,5.0)ifHisNone:print(⚠️ 单应性矩阵计算失败返回原图)returnir# 应用变换将红外图 warp 到可见光视角h,wvis.shape[:2]ir_registeredcv2.warpPerspective(ir,H,(w,h))# 保存结果ifoutput_path:cv2.imwrite(output_path,ir_registered)print(f✅ 配准完成:{output_path})returnir_registered# -----------------------------# 批量配准示例# -----------------------------if__name____main__:# 示例配准单对图像ir_filesample/ir_001.jpgvis_filesample/vis_001.jpgout_filesample/ir_registered_001.jpgregisteredregister_ir_to_visible(ir_file,vis_file,out_file)# 可视化对比可选importmatplotlib.pyplotasplt viscv2.imread(vis_file)plt.figure(figsize(12,4))plt.subplot(1,3,1);plt.imshow(cv2.imread(ir_file),cmapgray);plt.title(原始红外)plt.subplot(1,3,2);plt.imshow(vis[:,:,::-1]);plt.title(可见光)plt.subplot(1,3,3);plt.imshow(registered,cmapgray);plt.title(配准后红外)plt.tight_layout()plt.savefig(registration_comparison.png,dpi200)plt.show()✅ 二、双模态 YOLO 融合模型代码YOLOv8 双流 CNN思路分别用 CNN 提取红外和可见光特征在特征层融合concat 1x1 conv接入 YOLOv8 Head 进行检测 依赖安装pipinstallultralytics torch torchvisiondual_modal_yolo.py# -*- coding: utf-8 -*- 双模态 YOLO 模型融合红外 可见光进行光伏缺陷检测 基于 YOLOv8 架构改造 作者AI助手 importtorchimporttorch.nnasnnfromultralytics.nn.tasksimportDetectionModelfromultralyticsimportYOLOfrompathlibimportPathclassDualModalYOLO(nn.Module): 双模态 YOLO 模型 输入[B, 1, H, W] 红外 [B, 3, H, W] 可见光 输出YOLO 检测头输出 def__init__(self,num_classes10,model_sizes):super().__init__()self.num_classesnum_classes# 加载预训练 YOLOv8 backbone仅用于特征提取base_modelYOLO(fyolov8{model_size}.pt).model self.backbone_visbase_model.model[:6]# 取前6层作为可见光主干self.backbone_irself._copy_backbone()# 红外主干独立权重# 融合层将红外1通道特征映射到3通道再融合self.ir_projnn.Conv2d(1,3,kernel_size1)self.fusion_convnn.Conv2d(6,3,kernel_size1)# concat 后 336 → 3# 共享后续 YOLO 层self.shared_layersbase_model.model[6:]self.detection_headbase_model.model[-1]def_copy_backbone(self):复制可见光主干结构但不共享权重base_modelYOLO(yolov8s.pt).modelreturnnn.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_irself.backbone_ir(self.ir_proj(x_ir))# [B, C, H/8, W/8]feat_visself.backbone_vis(x_vis)# [B, C, H/8, W/8]# 特征融合fusedtorch.cat([feat_ir,feat_vis],dim1)# [B, 2C, ...]fusedself.fusion_conv(fused)# [B, C, ...]# 后续检测outself.shared_layers(fused)returnout# -----------------------------# 训练数据加载器自定义# -----------------------------fromtorch.utils.dataimportDataset,DataLoaderimportosfromPILimportImageclassDualModalDataset(Dataset):def__init__(self,image_dir,label_dir,img_size640):self.img_sizeimg_size self.image_pairs[]# 假设文件名一致ir_001.jpg, vis_001.jpg, label_001.txtvis_diros.path.join(image_dir,visible)ir_diros.path.join(image_dir,infrared)forfinos.listdir(vis_dir):iff.endswith(.jpg):namef.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):pairself.image_pairs[idx]# 读取图像visImage.open(pair[vis]).convert(RGB)irImage.open(pair[ir]).convert(L)# 灰度# 调整尺寸visvis.resize((self.img_size,self.img_size))irir.resize((self.img_size,self.img_size))# 转 tensorvistorch.from_numpy(np.array(vis)).permute(2,0,1).float()/255.0irtorch.from_numpy(np.array(ir)).unsqueeze(0).float()/255.0# 读取标签YOLO格式boxes,classes[],[]ifos.path.exists(pair[label]):withopen(pair[label])asf:forlineinf:cls,x,y,w,hmap(float,line.strip().split())boxes.append([x,y,w,h])classes.append(int(cls))returnir,vis,torch.tensor(boxes),torch.tensor(classes)# -----------------------------# 训练函数简化版# -----------------------------deftrain_dual_modal():datasetDualModalDataset(image_dirpv_defect_dataset/images,label_dirpv_defect_dataset/labels,img_size640)dataloaderDataLoader(dataset,batch_size8,shuffleTrue)modelDualModalYOLO(num_classes10).to(cudaiftorch.cuda.is_available()elsecpu)optimizertorch.optim.Adam(model.parameters(),lr0.001)# 注意此处省略了完整的 YOLO 损失计算需集成 YOLOv8 Loss# 实际项目建议使用 Ultralytics 的 Trainer 并替换 modelprint( 提示完整训练需继承 YOLOv8 Trainer此处为概念验证)print( 建议先用单模态可见光训练 baseline再扩展双模态)if__name____main__:# 配准示例已在上一部分# 此处仅展示模型结构modelDualModalYOLO(num_classes10)dummy_irtorch.randn(1,1,640,640)dummy_vistorch.randn(1,3,640,640)outputmodel(dummy_ir,dummy_vis)print(✅ 双模态模型构建成功输出形状:,[o.shapeforoinoutput])✅ 三、使用建议任务推荐方案快速上线先用可见光单模态 YOLOv8训练650 张已足够高精度需求使用配准后红外可见光训练双模态模型部署优化导出 ONNX/TensorRT红外可见光拼接为 4 通道输入R,G,B,IR

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

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

立即咨询