红外光伏缺陷检测数据集2232张yolo和voc两种标注方式4类标注数量Cell Fault: 电池故障3060Bypass Diode: 旁路二极管1472Hotspot:热斑 3207Defects: 损伤5image num: 2232.模型代码模型训练使用yolov11n训练30个epoch训练结果map如描述图所示提供全套代码和训练好的权重文件。qt界面可视化运行界面采用pyqt编写可视化界面简单友好本项目已经训练好模型配置好环境后可直接使用运行效果见描述图像一、数据集参数表项目详情数据集名称红外光伏缺陷检测数据集图像总数2232张标注格式YOLO、VOC 双格式标注类别数量4类类别名称Cell Fault电池故障、Bypass Diode旁路二极管、Hotspot热斑、Defects损伤Cell Fault标注数量3060个Bypass Diode标注数量1472个Hotspot标注数量3207个Defects标注数量5个image num图像数量2232张训练模型YOLOv11n训练轮次30个epoch配套内容完整数据集、YOLO标注、VOC标注、数据集配置文件、训练代码、测试代码、训练好的权重文件、PyQt可视化界面源码、运行说明文档运行环境Python、OpenCV、PyQt5、PyTorch、Ultralytics支持系统Windows、Linux二、YOLOv11 训练代码1. 安装依赖pipinstallultralytics opencv-python torch2. 数据集配置文件 文件名pv_defects.yaml yaml path: ./pv_defects_dataset train: images/train val: images/val test: images/test nc:4names:[Cell Fault,Bypass Diode,Hotspot,Defects]3. 训练代码 python 运行 from ultralyticsimportYOLOif__name____main__:modelYOLO(yolov11n.pt)resultsmodel.train(datapv_defects.yaml,epochs30,imgsz640,batch8,device0,workers4,projectpv_defect_detection,nameyolov11n_pv,patience10,augmentTrue,hsv_h0.015,hsv_s0.7,hsv_v0.4,flipud0.1,fliplr0.5,mosaic1.0)metricsmodel.val()print(fmAP0.5: {metrics.box.map50:.3f})print(fmAP0.5-0.95: {metrics.box.map:.3f})model.predict(test.jpg,saveTrue,conf0.25)4. 图片推理代码 python 运行 from ultralyticsimportYOLO modelYOLO(best.pt)resultsmodel.predict(test.jpg,saveTrue,conf0.25)forresultinresults:forboxinresult.boxes: cls_idint(box.cls[0])conffloat(box.conf[0])x1, y1, x2, y2map(int, box.xyxy[0])labelmodel.names[cls_id]print(f类别{label}置信度{conf:.2f}位置({x1}, {y1}, {x2}, {y2}))5. 视频推理代码 python 运行 from ultralyticsimportYOLOimportcv2 modelYOLO(best.pt)capcv2.VideoCapture(test_video.mp4)whilecap.isOpened(): ret, framecap.read()ifnot ret:breakresultsmodel(frame,conf0.25)forresultinresults:forboxinresult.boxes: x1, y1, x2, y2map(int, box.xyxy[0])cls_idint(box.cls[0])conffloat(box.conf[0])labelmodel.names[cls_id]cv2.rectangle(frame,(x1, y1),(x2, y2),(0,255,0),2)cv2.putText(frame, f{label} {conf:.2f},(x1, y1 -10), cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)cv2.imshow(PV Defect Detection, frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()三、PyQt5 可视化界面代码 python 运行 from PyQt5.QtWidgetsimportQApplication, QMainWindow, QFileDialog from PyQt5.uicimportloadUi from ultralyticsimportYOLOimportcv2importsys class PVDefectDetectUI(QMainWindow): def __init__(self): super().__init__()loadUi(pv_defect_detect.ui, self)self.modelYOLO(best.pt)self.btn_img.clicked.connect(self.detect_image)self.btn_video.clicked.connect(self.detect_video)self.btn_cam.clicked.connect(self.detect_camera)def detect_image(self): path, _QFileDialog.getOpenFileName()ifpath: resultsself.model(path,conf0.25)self.display_results(results)def detect_video(self): path, _QFileDialog.getOpenFileName()ifpath: capcv2.VideoCapture(path)whilecap.isOpened(): ret, framecap.read()ifnot ret:breakresultsself.model(frame,conf0.25)self.display_results(results)cv2.waitKey(1)def detect_camera(self): capcv2.VideoCapture(0)whilecap.isOpened(): ret, framecap.read()ifnot ret:breakresultsself.model(frame,conf0.25)self.display_results(results)cv2.waitKey(1)def display_results(self, results):forresultinresults:forboxinresult.boxes: x1, y1, x2, y2map(int, box.xyxy[0])cls_idint(box.cls[0])conffloat(box.conf[0])labelself.model.names[cls_id]print(f目标{label}置信度{conf:.2f}位置{x1}, {y1}, {x2}, {y2})if__name____main__:appQApplication(sys.argv)winPVDefectDetectUI()win.show()sys.exit(app.exec_())四、应用场景 光伏电站红外巡检 太阳能电池板缺陷检测 光伏组件热斑识别 电池故障自动标注 旁路二极管状态检测 光伏板损伤检测 无人机光伏巡检 电站运维自动化检测 红外图像缺陷分析 光伏发电站智能监控