无人机电力设备类数据集 通过yolov8输电线配网缺陷检测无人机航拍图像数据集的权重 推理识别检测 (不规范绑扎,螺栓销钉缺失)输电线不规范绑扎 输电线螺栓销钉缺失数据集的训练及应用
无人机电力设备类数据集 通过yolov8输电线配网缺陷检测无人机航拍图像数据集的权重 推理识别检测 不规范绑扎螺栓销钉缺失输电线不规范绑扎 输电线螺栓销钉缺失数据集的训练及应用文章目录配网缺陷检测数据集 YOLOv8 训练与部署代码示例仅供参考一、环境搭建1. 安装CUDA驱动2. 安装Anaconda3. 创建Python虚拟环境二、数据准备1. 数据集结构2. VOC格式标注转YOLO格式3. 创建 data.yaml 文件三、模型训练1. 下载YOLOv8预训练权重2. 训练脚本四、模型验证五、模型推理与部署1. 单张图片推理2. 视频流实时检测六、配网缺陷检测系统开发建议1. 系统设计思路a. 图像采集模块b. 缺陷检测模块c. 结果分析模块d. 报告生成模块e. 数据管理系统2. 系统实现示例输电线配网缺陷检测无人机航拍图像数据集不规范绑扎螺栓销钉缺失数据集总共3000多张voc格式标注配网缺陷检测数据集 YOLOv8 训练与部署代码示例仅供参考一、环境搭建1. 安装CUDA驱动# 检查当前CUDA版本nvidia-smi# 如果需要安装特定版本以Ubuntu为例sudoapt-getinstallcuda-12-12. 安装Anaconda# 下载Anaconda安装包curl-O https://repo.anaconda.com/archive/Anaconda3-2023.07-Linux-x86_64.sh# 安装AnacondabashAnaconda3-2023.07-Linux-x86_64.sh# 初始化conda环境source~/.bashrc3. 创建Python虚拟环境# 创建新环境conda create -n power_defectpython3.9conda activate power_defect# 安装PyTorch和YOLOv8依赖pipinstalltorch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 pipinstallultralytics opencv-python pycocotools matplotlib numpy pandas openpyxl二、数据准备1. 数据集结构建议将你的配网缺陷数据集组织成以下结构power_defect_dataset/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/2. VOC格式标注转YOLO格式数据是VOC格式其转换为YOLO所需的txt格式importosimportxml.etree.ElementTreeasETdefconvert_voc_to_yolo(voc_dir,output_dir,class_mapping): 将VOC格式的标注文件转换为YOLO格式 参数: voc_dir: VOC标注文件所在的目录 output_dir: 输出YOLO格式标注文件的目录 class_mapping: 类别名称到类别ID的映射字典 # 创建输出目录os.makedirs(output_dir,exist_okTrue)# 处理每个XML文件forxml_fileinos.listdir(voc_dir):ifnotxml_file.endswith(.xml):continuetreeET.parse(os.path.join(voc_dir,xml_file))roottree.getroot()image_widthint(root.find(size/width).text)image_heightint(root.find(size/height).text)output_pathos.path.join(output_dir,os.path.splitext(xml_file)[0].txt)withopen(output_path,w)asf:forobjinroot.findall(object):class_nameobj.find(name).textifclass_namenotinclass_mapping:print(f警告: 未知类别{class_name}在文件{xml_file}中)continueclass_idclass_mapping[class_name]bboxobj.find(bndbox)xminint(bbox.find(xmin).text)yminint(bbox.find(ymin).text)xmaxint(bbox.find(xmax).text)ymaxint(bbox.find(ymax).text)# 转换为YOLO格式 (xc, yc, w, h)并进行归一化xc(xminxmax)/(2*image_width)yc(yminymax)/(2*image_height)w(xmax-xmin)/image_width h(ymax-ymin)/image_height# 写入文件f.write(f{class_id}{xc:.6f}{yc:.6f}{w:.6f}{h:.6f}\n)# 定义类别映射class_mapping{不规范绑扎:0,螺栓销钉缺失:1}# 转换训练集标注convert_voc_to_yolo(voc_dirpower_defect_dataset/annotations/train,output_dirpower_defect_dataset/labels/train,class_mappingclass_mapping)# 转换验证集标注convert_voc_to_yolo(voc_dirpower_defect_dataset/annotations/val,output_dirpower_defect_dataset/labels/val,class_mappingclass_mapping)3. 创建 data.yaml 文件train:./power_defect_dataset/images/trainval:./power_defect_dataset/images/valnc:2names:[不规范绑扎,螺栓销钉缺失]三、模型训练1. 下载YOLOv8预训练权重# 下载YOLOv8n模型轻量级wgethttps://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt2. 训练脚本fromultralyticsimportYOLOimportdatetime# 加载预训练模型modelYOLO(yolov8n.pt)# 获取当前时间作为训练标识current_timedatetime.datetime.now().strftime(%Y%m%d_%H%M%S)# 开始训练resultsmodel.train(datadata.yaml,epochs100,imgsz640,batch16,namefpower_defect_{current_time},projectruns/power_defect,pretrainedTrue,optimizerAdamW,# 使用AdamW优化器更适合小目标检测lr00.01,# 初始学习率lrf0.01,# 最终学习率momentum0.937,# 动量参数weight_decay0.0005,# 权重衰减warmup_epochs3,# 预热期box0.05,# box损失权重cls0.5,# 分类损失权重dfl1.5,# DFL损失权重hsv_h0.015,# 色彩增强参数hsv_s0.7,hsv_v0.4,degrees0,# 不使用旋转增强translate0.1,# 平移增强scale0.5,# 缩放增强shear0,# 剪切增强perspective0.0001,# 透视变换flipud0.5,# 上下翻转fliplr0.5,# 左右翻转mosaic1.0,# 马赛克增强mixup0.2,# MixUp增强copy_paste0.3,# Copy-Paste增强close_mosaic10,# 关闭马赛克增强的epoch数verboseTrue)四、模型验证# 加载最佳模型进行验证best_modelYOLO(runs/power_defect/power_defect_20230815_143045/best.pt)# 在验证集上评估模型性能metricsbest_model.val()# 打印主要指标print(fmAP0.5-0.95:{metrics.box.map:.4f})print(fmAP0.5:{metrics.box.map50:.4f})print(fRecallmax1:{metrics.box.recall[0]:.4f})print(fPrecisionmax1:{metrics.box.precision[0]:.4f})# 可视化一些验证结果resultsbest_model(power_defect_dataset/images/val/,streamTrue)fori,rinenumerate(results):ifi5:# 显示前5个验证结果r.plot()plt.show()五、模型推理与部署1. 单张图片推理# 对单张图片进行推理resultsbest_model(power_defect_dataset/images/val/example.jpg)# 显示结果results[0].plot()plt.show()2. 视频流实时检测importcv2# 打开视频文件或摄像头capcv2.VideoCapture(video.mp4)# 或使用0表示默认摄像头whilecap.isOpened():ret,framecap.read()ifnotret:break# 对当前帧进行推理resultsbest_model(frame)# 绘制检测结果annotated_frameresults[0].plot()# 显示结果cv2.imshow(YOLOv8 Detection,annotated_frame)# 按q键退出ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()六、配网缺陷检测系统开发建议1. 系统设计思路构建一个完整的配网缺陷检测系统包括以下几个核心模块a. 图像采集模块支持无人机航拍图像和视频输入支持多种图像格式JPG、PNG等支持RTSP流实时传输b. 缺陷检测模块使用训练好的YOLOv8模型进行推理支持批量处理和实时检测支持检测结果可视化c. 结果分析模块统计不同类型缺陷的数量记录缺陷位置信息提供缺陷严重程度评估d. 报告生成模块自动生成PDF格式的检测报告包含检测统计图表附带原始图像和标注结果e. 数据管理系统存储历史检测记录支持数据查询和导出用户权限管理2. 系统实现示例importosimportcv2importpandasaspdfromdatetimeimportdatetimefromreportlab.lib.pagesizesimportletterfromreportlab.pdfgenimportcanvasclassPowerDefectDetectionSystem:def__init__(self,model_path):self.modelYOLO(model_path)self.defect_types[不规范绑扎,螺栓销钉缺失]self.report_data[]defdetect_defects(self,input_path,output_dirNone):对图像或视频进行缺陷检测ifos.path.isdir(input_path):# 处理目录中的所有图像self._process_image_folder(input_path,output_dir)elifinput_path.lower().endswith((.mp4,.avi)):# 处理视频文件self._process_video(input_path,output_dir)else:# 处理单张图像self._process_single_image(input_path,output_dir)def_process_image_folder(self,folder_path,output_dir):处理文件夹中的所有图像forfilenameinos.listdir(folder_path):iffilename.lower().endswith((.png,.jpg,.jpeg)):image_pathos.path.join(folder_path,filename)self._process_single_image(image_path,output_dir)def_process_single_image(self,image_path,output_dir):处理单张图像resultsself.model(image_path)resultresults[0]# 保存检测结果ifoutput_dir:save_pathos.path.join(output_dir,os.path.basename(image_path))result.save(save_path)# 记录检测结果forbox,cls,confinzip(result.boxes.xyxy,result.boxes.cls,result.boxes.conf):self.report_data.append({timestamp:datetime.now().strftime(%Y-%m-%d %H:%M:%S),filename:os.path.basename(image_path),defect_type:self.defect_types[int(cls)],confidence:float(conf),x_min:float(box[0]),y_min:float(box[1]),x_max:float(box[2]),y_max:float(box[3])})def_process_video(self,video_path,output_dir):处理视频文件capcv2.VideoCapture(video_path)frame_count0whilecap.isOpened():ret,framecap.read()ifnotret:break# 每5帧处理一次ifframe_count%50:resultsself.model(frame)resultresults[0]# 保存检测结果ifoutput_dir:output_pathos.path.join(output_dir,fframe_{frame_count}.jpg)result.save(output_path)# 记录检测结果forbox,cls,confinzip(result.boxes.xyxy,result.boxes.cls,result.boxes.conf):self.report_data.append({timestamp:datetime.now().strftime(%Y-%m-%d %H:%M:%S),filename:fframe_{frame_count}.jpg,defect_type:self.defect_types[int(cls)],confidence:float(conf),x_min:float(box[0]),y_min:float(box[1]),x_max:float(box[2]),y_max:float(box[3])})frame_count1cap.release()defgenerate_report(self,report_path):生成检测报告# 创建DataFramedfpd.DataFrame(self.report_data)# 生成Excel报告excel_pathreport_path.replace(.pdf,.xlsx)df.to_excel(excel_path,indexFalse)# 生成PDF报告ccanvas.Canvas(report_path,pagesizeletter)width,heightletter# 标题c.setFont(Helvetica-Bold,16)c.drawString(50,height-50,配网缺陷检测报告)# 日期c.setFont(Helvetica,12)c.drawString(50,height-70,f生成时间:{datetime.now().strftime(%Y-%m-%d %H:%M:%S)})# 总览统计c.setFont(Helvetica-Bold,14)c.drawString(50,height-100,缺陷统计:)# 统计每种缺陷数量defect_countsdf[defect_type].value_counts()y_positionheight-120c.setFont(Helvetica,12)fordefect_type,countindefect_counts.items():c.drawString(70,y_position,f{defect_type}:{count}处)y_position-20# 添加详细列表c.setFont(Helvetica-Bold,14)c.drawString(50,y_position-20,缺陷详情:)y_position-40c.setFont(Helvetica,10)for_,rowindf.iterrows():textf[{row[timestamp]}] 文件:{row[filename]}| 类型:{row[defect_type]}| 置信度:{row[confidence]:.2%}ify_position50:c.showPage()y_positionheight-50c.drawString(70,y_position,text)y_position-15# 保存PDFc.save()returnexcel_path,report_path# 使用示例systemPowerDefectDetectionSystem(runs/power_defect/power_defect_20230815_143045/best.pt)system.detect_defects(test_images,output_results)excel_report,pdf_reportsystem.generate_report(defect_report.pdf)print(f检测完成报告已生成{excel_report},{pdf_report})

相关新闻

我做了个 AI 文档阅读神器,免费开源!

我做了个 AI 文档阅读神器,免费开源!

诔士写镣一、关于RabbitMQ回调机制知识点补充: https://www.cnblogs.com/Mr-Keep/p/19140274 在 RabbitMQ 中,生产者发送消息后,有可能遇到以下几种情况: 消息成功投递到交换机(Exchange) 消息未能成功投递到交换机&am…

2026/5/17 8:16:01 阅读更多 →
这份榜单够用!10个AI论文工具测评:本科生毕业论文写作必备指南

这份榜单够用!10个AI论文工具测评:本科生毕业论文写作必备指南

在当前学术写作日益依赖AI工具的背景下,本科生在毕业论文写作过程中常常面临选题困难、文献整理繁琐、格式规范不熟等挑战。为了帮助学生更高效地完成论文,我们基于2026年的实测数据与真实用户反馈,对市面上主流的10款AI论文工具进行了全面测…

2026/7/6 5:48:40 阅读更多 →
. LangChainj + 整合 Spring Boot

. LangChainj + 整合 Spring Boot

邑蚊劣僦在深度学习中,优化器(Optimizer)是连接模型与数据的桥梁,它负责根据损失函数的梯度来更新模型的参数,以期找到一组能最小化损失的“最优解”。优化器的选择和调优,直接关系到模型的训练速度、收敛性…

2026/5/17 8:16:00 阅读更多 →

最新新闻

Excel ROUND函数底层原理与财务工程级避坑指南

Excel ROUND函数底层原理与财务工程级避坑指南

1. 项目概述:为什么一个“四舍五入”函数值得写上万字?Excel里敲下ROUND(A1,2),结果立刻出来——看起来简单得不能再简单。但如果你在财务报表里用它算过增值税、在工程预算中处理过材料损耗率、在科研数据里校验过有效数字,你大概…

2026/7/6 10:46:37 阅读更多 →
Plone电商基建加固:GetPaid Recipe Release 1.4.1深度解析

Plone电商基建加固:GetPaid Recipe Release 1.4.1深度解析

1. 项目概述:一个被低估的 Plone 电商基建工具包更新 Plone 是个老派但极其扎实的内容管理系统,尤其在政府、教育、科研类机构里扎根很深。它不像 WordPress 那样靠主题和插件堆出花哨界面,而是靠严格的权限模型、内容生命周期管理和可审计性…

2026/7/6 10:46:37 阅读更多 →
ZODB对象数据库原理与Zope内容管理实战

ZODB对象数据库原理与Zope内容管理实战

1. 项目概述:当应用服务器与数据库在对象层面“无缝焊接”我第一次接触 Zope 是在 1998 年,那会儿连“Web 应用框架”这个词都还没被广泛使用。打开文档,第一反应不是兴奋,而是皱眉——“这玩意儿默认不让我连 MySQL?”…

2026/7/6 10:46:37 阅读更多 →
Linux防火墙端口管理:firewalld、iptables、ufw 3种方案深度对比与选择指南

Linux防火墙端口管理:firewalld、iptables、ufw 3种方案深度对比与选择指南

Linux防火墙端口管理:firewalld、iptables、ufw 3种方案深度对比与选择指南在Linux服务器管理中,防火墙配置是确保系统安全的关键环节。面对不同的发行版和业务需求,系统管理员常常需要在firewalld、iptables和ufw这三种主流防火墙工具之间做…

2026/7/6 10:44:32 阅读更多 →
可视化指挥闭环:城市安防视频孪生时空感知技术详解

可视化指挥闭环:城市安防视频孪生时空感知技术详解

可视化指挥闭环:城市安防视频孪生时空感知技术详解摘要传统城市安防指挥体系存在视频孤岛、时空基准割裂、预警处置脱节、调度无空间量化支撑、事后复盘证据碎片化五大核心痛点,指挥链路停留在“看画面、接警情、人工派单”的线性被动模式,无…

2026/7/6 10:44:32 阅读更多 →
如何快速上手eulerfs-test:从配置到执行的完整教程

如何快速上手eulerfs-test:从配置到执行的完整教程

如何快速上手eulerfs-test:从配置到执行的完整教程 【免费下载链接】eulerfs-test test scripts for eulerfs 项目地址: https://gitcode.com/openeuler/eulerfs-test 前往项目官网免费下载:https://ar.openeuler.org/ar/ eulerfs-test是openEul…

2026/7/6 10:42:30 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻