电力配网、主网绝缘子缺陷检测数据集 4904张提供yolovoccoco三种标注方式图像尺寸:640*640类别数量:7类训练集图像数量:4777; 验证集图像数量:114 测试集图像数量:13类别名称: 每一类图像数 每一类标注数Dirty_Su22kV - 22kV 绝缘子污秽772, 1019Su_22kV - 22kV 绝缘子正常1016, 3783Broken_Su22kV - 22kV 绝缘子破损1029, 1565DirtyGlass_Su110kV - 110kV 玻璃绝缘子污秽274, 574Su_110kV - 110kV 绝缘子正常1250, 2640LossGlass_Su110kV - 110kV 玻璃绝缘子缺失自爆347, 553DirtyPolyme_Su110kV - 110kV 复合绝缘子污秽243, 285image num: 4904模型代码提供全部训练及测试源代码模型训练使用yolov11n训练50个epoch训练结果map如描述图所示。qt界面运行界面采用pyqt5编写 提供全部源代码支持图片、视频及摄像头进行检测: 界面可实时显示目标位置、目标总数、置信度等信息: 支持检测结果保存;本项目已经训练好模型配置好环境后可直接使用运行效果见描述图像、、系统环境python3.8 opencv-python PyQt5 torch文件1.完整的数据集文件包括图像yolo格式的txt文件、yaml文件voc格式的xml文件等2.模型代码完整程序文件.py .pt等)3.qt界面源文件、图标.ui、.qrc、.py等、一、绝缘子缺陷检测数据集信息表项目详情数据集名称电力配网、主网绝缘子缺陷检测数据集总图片数量4904张图像尺寸统一为640×640标注格式YOLO (.txt) VOC (.xml) COCO (.json) 三种格式类别数量7类数据划分训练集4777张验证集114张测试集13张适用场景电力线路绝缘子缺陷检测、主网/配网安全监测、目标检测项目、课程实验类别详情表类别ID类别名称中文说明图像数标注数0Dirty_Su22kV22kV 绝缘子污秽77210191Su_22kV22kV 绝缘子正常101637832Broken_Su22kV22kV 绝缘子破损102915653DirtyGlass_Su110kV110kV 玻璃绝缘子污秽2745744Su_110kV110kV 绝缘子正常125026405LossGlass_Su110kV110kV 玻璃绝缘子缺失自爆3475536DirtyPolyme_Su110kV110kV 复合绝缘子污秽243285二、数据集目录结构insulator_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ # YOLO格式 │ ├── train/ │ ├── val/ │ └── test/ ├── Annotations/ # VOC格式 (.xml) ├── coco_annotations/ # COCO格式 (.json) └── insulator.yaml # YOLO配置文件insulator.yaml配置文件path:./insulator_datasettrain:images/trainval:images/valtest:images/testnc:7names:0:Dirty_Su22kV1:Su_22kV2:Broken_Su22kV3:DirtyGlass_Su110kV4:Su_110kV5:LossGlass_Su110kV6:DirtyPolyme_Su110kV三、水印去除脚本批量处理importosimportcv2importnumpyasnpdefremove_watermark(input_dir,output_dir):ifnotos.path.exists(output_dir):os.makedirs(output_dir)forimg_nameinos.listdir(input_dir):ifimg_name.endswith((.jpg,.png)):img_pathos.path.join(input_dir,img_name)imgcv2.imread(img_path)ifimgisNone:continue# 针对黄色水印去除hsvcv2.cvtColor(img,cv2.COLOR_BGR2HSV)lower_yellownp.array([20,100,100])upper_yellownp.array([30,255,255])maskcv2.inRange(hsv,lower_yellow,upper_yellow)# 修复填充kernelnp.ones((5,5),np.uint8)maskcv2.dilate(mask,kernel,iterations1)img_cleancv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)cv2.imwrite(os.path.join(output_dir,img_name),img_clean)print(水印去除完成)if__name____main__:remove_watermark(./insulator_dataset/images,./insulator_dataset/images_clean)四、YOLOv11 训练代码50 epochfromultralyticsimportYOLOdeftrain_insulator():# 加载YOLOv11n模型modelYOLO(yolov11n.pt)resultsmodel.train(data./insulator_dataset/insulator.yaml,epochs50,imgsz640,batch16,device0,# 无GPU改为 devicecpuworkers4,patience10,pretrainedTrue,optimizerAdam,lr00.001,warmup_epochs3,mosaic0.8,mixup0.1,projectruns/insulator_train,nameyolov11n_insulator,exist_okTrue)print(训练完成最优模型路径,results.save_dir/weights/best.pt)if__name____main__:train_insulator()五、PyQt5 检测界面完整代码importsysimportcv2importosfromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QWidget,QVBoxLayout,QHBoxLayout,QPushButton,QLabel,QFileDialog,QTableWidget,QTableWidgetItem,QComboBox)fromPyQt5.QtCoreimportQt,QThread,pyqtSignalfromPyQt5.QtGuiimportQPixmap,QImagefromultralyticsimportYOLOclassDetectThread(QThread):result_readypyqtSignal(object)def__init__(self,model,source):super().__init__()self.modelmodel self.sourcesource self.runningTruedefrun(self):capcv2.VideoCapture(self.source)whileself.runningandcap.isOpened():ret,framecap.read()ifnotret:breakresself.model.predict(frame,conf0.3)self.result_ready.emit(res[0])cap.release()defstop(self):self.runningFalseclassInsulatorDetectUI(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于YOLOv11的电力绝缘子缺陷检测系统)self.setGeometry(100,100,1200,700)self.modelYOLO(./runs/insulator_train/yolov11n_insulator/weights/best.pt)self.detect_threadNoneself.init_ui()definit_ui(self):centralQWidget()self.setCentralWidget(central)main_layoutQHBoxLayout(central)# 左侧显示区left_layoutQVBoxLayout()self.label_viewQLabel(图像显示区)self.label_view.setFixedSize(640,480)left_layout.addWidget(self.label_view)# 右侧控制区right_layoutQVBoxLayout()self.btn_imgQPushButton(图片检测)self.btn_videoQPushButton(视频检测)self.btn_cameraQPushButton(摄像头检测)self.btn_saveQPushButton(保存结果)self.btn_exitQPushButton(退出)self.table_resultQTableWidget()self.table_result.setColumnCount(5)self.table_result.setHorizontalHeaderLabels([序号,文件路径,类别,置信度,坐标位置])right_layout.addWidget(QLabel(文件导入))right_layout.addWidget(self.btn_img)right_layout.addWidget(self.btn_video)right_layout.addWidget(self.btn_camera)right_layout.addWidget(QLabel(检测结果))right_layout.addWidget(self.table_result)right_layout.addWidget(self.btn_save)right_layout.addWidget(self.btn_exit)main_layout.addLayout(left_layout)main_layout.addLayout(right_layout)# 绑定信号self.btn_img.clicked.connect(self.detect_image)self.btn_video.clicked.connect(self.detect_video)self.btn_camera.clicked.connect(self.detect_camera)self.btn_exit.clicked.connect(self.close)defdetect_image(self):path,_QFileDialog.getOpenFileName(self,选择图片,,Images (*.jpg *.png))ifnotpath:returnimgcv2.imread(path)resself.model.predict(img,conf0.3)[0]self.show_result(res,path)defdetect_video(self):path,_QFileDialog.getOpenFileName(self,选择视频,,Videos (*.mp4 *.avi))ifnotpath:returnself.start_thread(path)defdetect_camera(self):self.start_thread(0)defstart_thread(self,source):ifself.detect_thread:self.detect_thread.stop()self.detect_thread.quit()self.detect_threadDetectThread(self.model,source)self.detect_thread.result_ready.connect(lambdares:self.show_result(res,实时流))self.detect_thread.start()defshow_result(self,res,path):imgres.plot()imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)h,w,cimg.shape qimgQImage(img.data,w,h,w*c,QImage.Format_RGB888)self.label_view.setPixmap(QPixmap.fromImage(qimg).scaled(640,480,Qt.KeepAspectRatio))# 更新表格self.table_result.setRowCount(len(res.boxes))fori,boxinenumerate(res.boxes):clsres.names[int(box.cls[0])]conffloat(box.conf[0])x1,y1,x2,y2map(int,box.xyxy[0])self.table_result.setItem(i,0,QTableWidgetItem(str(i1)))self.table_result.setItem(i,1,QTableWidgetItem(path))self.table_result.setItem(i,2,QTableWidgetItem(cls))self.table_result.setItem(i,3,QTableWidgetItem(f{conf:.2%}))self.table_result.setItem(i,4,QTableWidgetItem(f[{x1},{y1},{x2},{y2}]))if__name____main__:appQApplication(sys.argv)winInsulatorDetectUI()win.show()sys.exit(app.exec_())六、环境依赖清单requirements.txtpython3.8 ultralytics8.3.40 opencv-python PyQt5 torch torchvision numpy
电力配网、主网绝缘子缺陷检测数据集深度学习基于YOLOV11电无人机力配网绝缘子缺陷检测数据集 无人机电力主网缺陷检测数据集的训练及英语
发布时间:2026/7/13 21:56:32
电力配网、主网绝缘子缺陷检测数据集 4904张提供yolovoccoco三种标注方式图像尺寸:640*640类别数量:7类训练集图像数量:4777; 验证集图像数量:114 测试集图像数量:13类别名称: 每一类图像数 每一类标注数Dirty_Su22kV - 22kV 绝缘子污秽772, 1019Su_22kV - 22kV 绝缘子正常1016, 3783Broken_Su22kV - 22kV 绝缘子破损1029, 1565DirtyGlass_Su110kV - 110kV 玻璃绝缘子污秽274, 574Su_110kV - 110kV 绝缘子正常1250, 2640LossGlass_Su110kV - 110kV 玻璃绝缘子缺失自爆347, 553DirtyPolyme_Su110kV - 110kV 复合绝缘子污秽243, 285image num: 4904模型代码提供全部训练及测试源代码模型训练使用yolov11n训练50个epoch训练结果map如描述图所示。qt界面运行界面采用pyqt5编写 提供全部源代码支持图片、视频及摄像头进行检测: 界面可实时显示目标位置、目标总数、置信度等信息: 支持检测结果保存;本项目已经训练好模型配置好环境后可直接使用运行效果见描述图像、、系统环境python3.8 opencv-python PyQt5 torch文件1.完整的数据集文件包括图像yolo格式的txt文件、yaml文件voc格式的xml文件等2.模型代码完整程序文件.py .pt等)3.qt界面源文件、图标.ui、.qrc、.py等、一、绝缘子缺陷检测数据集信息表项目详情数据集名称电力配网、主网绝缘子缺陷检测数据集总图片数量4904张图像尺寸统一为640×640标注格式YOLO (.txt) VOC (.xml) COCO (.json) 三种格式类别数量7类数据划分训练集4777张验证集114张测试集13张适用场景电力线路绝缘子缺陷检测、主网/配网安全监测、目标检测项目、课程实验类别详情表类别ID类别名称中文说明图像数标注数0Dirty_Su22kV22kV 绝缘子污秽77210191Su_22kV22kV 绝缘子正常101637832Broken_Su22kV22kV 绝缘子破损102915653DirtyGlass_Su110kV110kV 玻璃绝缘子污秽2745744Su_110kV110kV 绝缘子正常125026405LossGlass_Su110kV110kV 玻璃绝缘子缺失自爆3475536DirtyPolyme_Su110kV110kV 复合绝缘子污秽243285二、数据集目录结构insulator_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ # YOLO格式 │ ├── train/ │ ├── val/ │ └── test/ ├── Annotations/ # VOC格式 (.xml) ├── coco_annotations/ # COCO格式 (.json) └── insulator.yaml # YOLO配置文件insulator.yaml配置文件path:./insulator_datasettrain:images/trainval:images/valtest:images/testnc:7names:0:Dirty_Su22kV1:Su_22kV2:Broken_Su22kV3:DirtyGlass_Su110kV4:Su_110kV5:LossGlass_Su110kV6:DirtyPolyme_Su110kV三、水印去除脚本批量处理importosimportcv2importnumpyasnpdefremove_watermark(input_dir,output_dir):ifnotos.path.exists(output_dir):os.makedirs(output_dir)forimg_nameinos.listdir(input_dir):ifimg_name.endswith((.jpg,.png)):img_pathos.path.join(input_dir,img_name)imgcv2.imread(img_path)ifimgisNone:continue# 针对黄色水印去除hsvcv2.cvtColor(img,cv2.COLOR_BGR2HSV)lower_yellownp.array([20,100,100])upper_yellownp.array([30,255,255])maskcv2.inRange(hsv,lower_yellow,upper_yellow)# 修复填充kernelnp.ones((5,5),np.uint8)maskcv2.dilate(mask,kernel,iterations1)img_cleancv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)cv2.imwrite(os.path.join(output_dir,img_name),img_clean)print(水印去除完成)if__name____main__:remove_watermark(./insulator_dataset/images,./insulator_dataset/images_clean)四、YOLOv11 训练代码50 epochfromultralyticsimportYOLOdeftrain_insulator():# 加载YOLOv11n模型modelYOLO(yolov11n.pt)resultsmodel.train(data./insulator_dataset/insulator.yaml,epochs50,imgsz640,batch16,device0,# 无GPU改为 devicecpuworkers4,patience10,pretrainedTrue,optimizerAdam,lr00.001,warmup_epochs3,mosaic0.8,mixup0.1,projectruns/insulator_train,nameyolov11n_insulator,exist_okTrue)print(训练完成最优模型路径,results.save_dir/weights/best.pt)if__name____main__:train_insulator()五、PyQt5 检测界面完整代码importsysimportcv2importosfromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QWidget,QVBoxLayout,QHBoxLayout,QPushButton,QLabel,QFileDialog,QTableWidget,QTableWidgetItem,QComboBox)fromPyQt5.QtCoreimportQt,QThread,pyqtSignalfromPyQt5.QtGuiimportQPixmap,QImagefromultralyticsimportYOLOclassDetectThread(QThread):result_readypyqtSignal(object)def__init__(self,model,source):super().__init__()self.modelmodel self.sourcesource self.runningTruedefrun(self):capcv2.VideoCapture(self.source)whileself.runningandcap.isOpened():ret,framecap.read()ifnotret:breakresself.model.predict(frame,conf0.3)self.result_ready.emit(res[0])cap.release()defstop(self):self.runningFalseclassInsulatorDetectUI(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于YOLOv11的电力绝缘子缺陷检测系统)self.setGeometry(100,100,1200,700)self.modelYOLO(./runs/insulator_train/yolov11n_insulator/weights/best.pt)self.detect_threadNoneself.init_ui()definit_ui(self):centralQWidget()self.setCentralWidget(central)main_layoutQHBoxLayout(central)# 左侧显示区left_layoutQVBoxLayout()self.label_viewQLabel(图像显示区)self.label_view.setFixedSize(640,480)left_layout.addWidget(self.label_view)# 右侧控制区right_layoutQVBoxLayout()self.btn_imgQPushButton(图片检测)self.btn_videoQPushButton(视频检测)self.btn_cameraQPushButton(摄像头检测)self.btn_saveQPushButton(保存结果)self.btn_exitQPushButton(退出)self.table_resultQTableWidget()self.table_result.setColumnCount(5)self.table_result.setHorizontalHeaderLabels([序号,文件路径,类别,置信度,坐标位置])right_layout.addWidget(QLabel(文件导入))right_layout.addWidget(self.btn_img)right_layout.addWidget(self.btn_video)right_layout.addWidget(self.btn_camera)right_layout.addWidget(QLabel(检测结果))right_layout.addWidget(self.table_result)right_layout.addWidget(self.btn_save)right_layout.addWidget(self.btn_exit)main_layout.addLayout(left_layout)main_layout.addLayout(right_layout)# 绑定信号self.btn_img.clicked.connect(self.detect_image)self.btn_video.clicked.connect(self.detect_video)self.btn_camera.clicked.connect(self.detect_camera)self.btn_exit.clicked.connect(self.close)defdetect_image(self):path,_QFileDialog.getOpenFileName(self,选择图片,,Images (*.jpg *.png))ifnotpath:returnimgcv2.imread(path)resself.model.predict(img,conf0.3)[0]self.show_result(res,path)defdetect_video(self):path,_QFileDialog.getOpenFileName(self,选择视频,,Videos (*.mp4 *.avi))ifnotpath:returnself.start_thread(path)defdetect_camera(self):self.start_thread(0)defstart_thread(self,source):ifself.detect_thread:self.detect_thread.stop()self.detect_thread.quit()self.detect_threadDetectThread(self.model,source)self.detect_thread.result_ready.connect(lambdares:self.show_result(res,实时流))self.detect_thread.start()defshow_result(self,res,path):imgres.plot()imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)h,w,cimg.shape qimgQImage(img.data,w,h,w*c,QImage.Format_RGB888)self.label_view.setPixmap(QPixmap.fromImage(qimg).scaled(640,480,Qt.KeepAspectRatio))# 更新表格self.table_result.setRowCount(len(res.boxes))fori,boxinenumerate(res.boxes):clsres.names[int(box.cls[0])]conffloat(box.conf[0])x1,y1,x2,y2map(int,box.xyxy[0])self.table_result.setItem(i,0,QTableWidgetItem(str(i1)))self.table_result.setItem(i,1,QTableWidgetItem(path))self.table_result.setItem(i,2,QTableWidgetItem(cls))self.table_result.setItem(i,3,QTableWidgetItem(f{conf:.2%}))self.table_result.setItem(i,4,QTableWidgetItem(f[{x1},{y1},{x2},{y2}]))if__name____main__:appQApplication(sys.argv)winInsulatorDetectUI()win.show()sys.exit(app.exec_())六、环境依赖清单requirements.txtpython3.8 ultralytics8.3.40 opencv-python PyQt5 torch torchvision numpy