尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
PCB目标检测3——验证集推理
接上文《PCB目标检测2——数据继续分析》3.2 验证集推理1代码import ultralytics.data as yolo_data from pcb_yolo_dataset import PCB_YOLODataset from ultralytics import YOLO # 1. 应用验证专用补丁 _original_build yolo_data.build_yolo_dataset def _patched_build_val(opt, img_path, batch_size, augmentFalse, hypNone, rectFalse, cacheFalse, stride32, pad0.5, prefix): return PCB_YOLODataset( img_pathimg_path, img_sizeopt.imgsz, # ← 从配置对象中安全获取尺寸 batch_sizebatch_size, augmentaugment, # val模式下YOLO会自动传False hyphyp, rectrect, # val模式下YOLO会自动传True cachecache, stridestride, padpad, prefixprefix, dataopt.data if hasattr(opt, data) else {}, ) yolo_data.build_yolo_dataset _patched_build_val print(验证补丁已应用) # 2. 运行验证 model YOLO(rD:\我的\5.机器视觉\PCB缺陷检测系统\runs\detect\train-8\weights\best.pt) results model.val( datarD:\pcb\PCB_DATASET\yolo11_data\pcb.yaml, imgsz960, # 必须与训练时的960严格一致 batch4, # 与训练batch一致避免padding策略差异 cacheram, # 与训练一致 workers0, # 与训练一致 devicecpu, # 与训练一致 conf0.001, # 默认阈值除非训练时改过 iou0.7, # 默认阈值除非训练时改过 plotsTrue, verboseTrue, ) print(f\nmAP50:95 {results.box.map:.4f})2结果评估总的来看mAP50-95精度较低与mAP50差距达0.395说明当预测框和真实框的重叠度IoU≥0.5时就算检测对了的精度较高能确定大概位置但是当IoU 阈值从0.5到0.95每隔0.05取一个值共10个阈值分别计算mAP后取平均值的结果较低模型不能精准地框住缺陷之前在训练集上这个指标就不太好怀疑是标注太松。epoch不用增加了3优化方向换yolov8s、重新标注4. 进一步优化4.1 换yolov8s1有提升但不多。训练集验证集4.2 重新标注1下载X-AnyLabeling软件可以先通过best.pt进行自动标注然后再人为去修改下载网址Releases · CVHub520/X-AnyLabeling · GitHub2软件需要导入best.onnx格式的数据和yaml文件这个yaml文件需要根据官方案例去修改X-AnyLabeling/docs/zh_cn/model_zoo.md at main · CVHub520/X-AnyLabeling · GitHub我选的是yolov8s对应的yaml文件。from ultralytics import YOLO model YOLO(rC:\D\我的\5.机器视觉\PCB缺陷检测系统\runs\detect\train-9\weights\best.pt) model.export(formatonnx)3软件左侧垂直工具栏里点自动标注的按钮中间左上角界面 no model的按钮点击后选自定义模型导入上面做的那个yaml文件。然后左上角打开文件夹选中训练集与验证集在一起的文件夹右下角就可以自由选图片显示了。4出来图片后点击上面蓝色的运行按钮就会自动标注了然后自己放大缩小去调整边框就行挺好用的就是图太多了...开干~~~5导出的时候要保证界面右侧的修改之后的标注框对象都勾选上了工具箱里有标签管理器选上visible就能自动默认是勾选的然后自己生成一个类别文件比如classes.txt这样才能知道每个类别对应的编号第一行就是0依次类推的然后点击菜单栏的导出选第一个YOLO HBB方形框选择calsses.txt文件新建一个文件夹保存好标注框信息就是之前json转换好的那种txt文件。再去用之前的代码将新的标注画出来看了看效果是好了紧致了。标注的时候开着原始标注框的图片对应看因为自动标注可能会少标或者错标。6重新标注思路仅个人感觉missing_hole没有紧贴金属外框留了一点阴影的区域mouse_bite尽量贴合留一点点点的缓冲区open_circuit和mouse_bite一样的也是尽量贴合了留了一点缓冲区short蓝色框区域内感觉要把拐角显示出来多留一些缓冲区spur和short一样的思路spurious_copper尽量贴合留一点点缓冲区。4.3 重新训练与推理1根据新的数据标注重训的各指标结果2根据新的数据标注重推理的各指标结果3大模型给的解释确实重新标注的框更贴合了精细定位能力应该提升了至于之前的是不是虚高不是很确定。5. 可下载新标注http://通过网盘分享的文件labels.rar 链接: https://pan.baidu.com/s/1MPQgsxTe44ZTNcReKSu0Bw 提取码: e3a66. 感想1数据标注感觉就是ai时代农民工太累了这个数据集的检测先告一段落前几天在阿里云天池上又找到了新的pcb数据集后面可以再把流程走一遍看看有没有其他问题然后再工程化一下。
RELATED

相关推荐

lakeFS Rust SDK CommitsApi 实战指南:用 Rust 提交与读取数据湖 Commit

lakeFS Rust SDK CommitsApi 实战指南:用 Rust 提交与读取数据湖 Commit

数据工程数据湖大数据对象存储后端 【免费下载链接】lakeFS lakeFS - Data version control for your data lake | Git for data 项目地址: https://gitcode.com/gh_mirrors/la/lakeFS 点击查看 免费下载 导读 本文围绕 lakeFS 官方 Rust 客户端(lakef…

📅 2026/10/13 9:12:43
TinyBase 架构选项全解析:从独立内存 Store 到云端同步的七种数据架构方案

TinyBase 架构选项全解析:从独立内存 Store 到云端同步的七种数据架构方案

数据库后端前端 【免费下载链接】tinybase A reactive data store & sync engine. 项目地址: https://gitcode.com/gh_mirrors/ti/tinybase 点击查看 免费下载 TinyBase 是一个运行在 JavaScript 环境(浏览器、Worker、Node 等)中的内存…

📅 2026/10/13 9:12:43
C语言深拷贝实现:从链表复制理解内存安全与算法鲁棒性

C语言深拷贝实现:从链表复制理解内存安全与算法鲁棒性

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/13 9:07:41
MORE NEWS

更多资讯

📰

psql-srv 深入解析:用 Rust 模拟 PostgreSQL 服务器,让现有应用零改动接入你的缓存层

缓存后端数据库 【免费下载链接】readyset Readyset is a MySQL and Postgres wire-compatible caching layer that sits in front of existing databases to speed up queries and horizontally scale read throughput. Under the hood, ReadySet caches the results of cache…

📰

医学图像格式转换全指南:RGB、灰度与索引的底层逻辑

1. 医学图像常见格式与转换价值在做医学图像处理的时候,RGB、灰度、索引这三种图像格式的相互转换,几乎属于“躲都躲不开”的基础操作。很多刚接触这个方向的同学会觉得这有什么可讲的,不就是几个转换函数调用一下吗。但实际上,医…

📰

NSL-KDD联邦入侵检测工程落地避坑指南

简介:本资源是一套面向计算机、电子信息等专业本科生的高分毕业设计项目,聚焦联邦学习框架下的网络入侵检测实战,基于经典NSL-KDD数据集构建可运行系统,特别适合作为毕设选题、课程设计或期末大作业参考。项目完整集成Python源码、…

📰

Linux终端复用工具 screen 详解:SSH断线任务不丢失

1. 没有screen之前,远程任务是怎么丢的 1.1 一次断网事故的复盘 先交代一个我自己的翻车现场。前几年有一次在服务器上跑一个数据迁移任务,大概要跑两三个小时,文件数量几十万个,我直接用SSH连着服务器,前台执行脚本&…

📰

相交链表详解:从暴力到双指针,彻底吃透链表算法面试题

前阵子在给几个朋友讲链表题的时候,我发现“相交链表”这道题几乎每次都会被拎出来讨论。它看起来就是一个简单的双指针问题,代码不过十行。但当你真正把它讲透,从暴力解法一步步走到最优解,再去想边界条件和各种变体的时候&#…

📰

Scrapy Shell调试技巧:提升爬虫开发效率的交互式工具

1. 为什么Scrapy Shell值得你花时间掌握刚接触Scrapy那会儿,我最烦的就是改一行代码跑一次爬虫。每次调试XPath或者CSS选择器,都要重新发起请求、重新解析页面,一个简单的选择器调半天,效率低得让人抓狂。后来被一位做数据采集的老…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬