PCB缺陷检测数据集 xml 可转yolo格式 ,共10688张图片

PCB缺陷检测数据集(yolov5,v7,v8) 数据集总共有两个文件夹,一个是pcb整体标注,一个是pcb部分截图。 整体标注有6个分类,开路,短路等都已经标注,标注格式为xml,每个文件夹下有100多张的图片,可转yolo格式,跑过效果很好,北京大学PCB数据集。 第二个是第一个的部分和增强,共10688张图片,多篇pcb论文用的是这个数据集(共6类),训练集和检测集总共有10688张,看最后一张图。标注格式为txt,可直接yolov5,v7,v8检测。

项目概述

本数据集是一个专门用于印刷电路板(PCB)缺陷检测的数据集,包含两个主要部分:一个是整体标注的PCB图像,另一个是部分截图和增强后的图像。整体标注部分有6个分类,包括开路、短路等常见缺陷,并且已经使用XML格式进行了标注。第二个部分是对第一个部分的部分截图和增强处理,共有10688张图像,标注格式为YOLO格式(txt文件),可以直接用于YOLOv5、YOLOv7和YOLOv8模型的训练和检测。

数据集特点

  • 高质量标注:所有标注数据经过处理,确保了标注质量。
  • 多样化类别:涵盖六类常见的PCB缺陷。
  • 多用途:适用于多种目标检测任务,特别是涉及PCB缺陷检测的应用。
  • 易于使用:提供了详细的说明文档和预处理好的标注文件,方便用户快速上手。
  • 学术认可:多篇PCB相关论文使用了该数据集,具有较高的学术价值和实际应用价值。

数据集结构

PCB_Defect_Detection_Dataset/
├── full_boards/                         # 整体标注的PCB图像
│   ├── images/                          # 图像文件夹
│   │   ├── train/                       # 训练集图像
│   │   ├── val/                         # 验证集图像
│   │   └── test/                        # 测试集图像
│   ├── annotations/                     # 标注文件夹 (XML格式)
│   │   ├── train/                       # 训练集标注
│   │   ├── val/                         # 验证集标注
│   │   └── test/                        # 测试集标注
├── partial_and_augmented/               # 部分截图和增强后的图像
│   ├── images/                          # 图像文件夹
│   │   ├── train/                       # 训练集图像
│   │   ├── val/                         # 验证集图像
│   │   └── test/                        # 测试集图像
│   ├── labels/                          # 标注文件夹 (YOLO格式)
│   │   ├── train/                       # 训练集标注
│   │   ├── val/                         # 验证集标注
│   │   └── test/                        # 测试集标注
├── README.md                            # 项目说明文档
└── data.yaml                            # 数据集配置文件

数据集内容

  • 总数据量
    • 整体标注的PCB图像:每个文件夹下约100多张图像。
    • 部分截图和增强后的图像:共10688张图像。
  • 标注格式
    • 整体标注:XML格式。
    • 部分截图和增强:YOLO格式(txt文件)。
  • 标注对象:各类PCB缺陷的位置。
  • 类别及数量
类别名标注个数
开路 (Open Circuit)具体数量
短路 (Short Circuit)具体数量
缺失元件 (Missing Component)具体数量
错误元件 (Wrong Component)具体数量
裂纹 (Crack)具体数量
污染 (Contamination)具体数量
  • 总计
    • 图像总数:整体标注约600张,部分截图和增强10688张
    • 标注总数:具体数量根据实际情况而定
    • 总类别数 (nc):6类

使用说明

  1. 环境准备

    • 确保安装了Python及其相关库(如torchopencv-pythonmatplotlib等)。
    • 下载并解压数据集到本地目录。
    • 安装YOLOv5、YOLOv7或YOLOv8所需的依赖项:
       
      git clone https://github.com/ultralytics/yolov5
      cd yolov5
      pip install -r requirements.txt
  2. 加载数据集

    • 可以使用常见的编程语言(如Python)来加载和处理数据集。
    • 示例代码如下:
import os
import xml.etree.ElementTree as ET
import pandas as pd
from pathlib import Path
from yolov5.utils.datasets import LoadImages, LoadImagesAndLabels
from yolov5.models.experimental import attempt_load
from yolov5.utils.general import non_max_suppression, scale_coords
from yolov5.utils.torch_utils import select_device
import cv2
import numpy as np# 定义数据集路径
dataset_path = 'PCB_Defect_Detection_Dataset'# 加载整体标注的图像和标注
def load_full_boards(folder):images_folder = os.path.join(dataset_path, 'full_boards', 'images', folder)annotations_folder = os.path.join(dataset_path, 'full_boards', 'annotations', folder)dataset = []for image_file in os.listdir(images_folder):if image_file.endswith('.jpg') or image_file.endswith('.png'):image_path = os.path.join(images_folder, image_file)annotation_path = os.path.join(annotations_folder, image_file.replace('.jpg', '.xml').replace('.png', '.xml'))tree = ET.parse(annotation_path)root = tree.getroot()labels = []for obj in root.findall('object'):name = obj.find('name').textbndbox = obj.find('bndbox')xmin = int(bndbox.find('xmin').text)ymin = int(bndbox.find('ymin').text)xmax = int(bndbox.find('xmax').text)ymax = int(bndbox.find('ymax').text)labels.append([name, xmin, ymin, xmax, ymax])dataset.append({'image_path': image_path,'labels': labels})return dataset# 加载部分截图和增强后的图像和标注
def load_partial_and_augmented(folder):images_folder = os.path.join(dataset_path, 'partial_and_augmented', 'images', folder)labels_folder = os.path.join(dataset_path, 'partial_and_augmented', 'labels', folder)dataset = []for image_file in os.listdir(images_folder):if image_file.endswith('.jpg') or image_file.endswith('.png'):image_path = os.path.join(images_folder, image_file)label_path = os.path.join(labels_folder, image_file.replace('.jpg', '.txt').replace('.png', '.txt'))with open(label_path, 'r') as f:labels = [line.strip().split() for line in f.readlines()]dataset.append({'image_path': image_path,'labels': labels})return dataset# 示例:加载整体标注的训练集
full_boards_train_dataset = load_full_boards('train')
print(f"Number of training images (full boards): {len(full_boards_train_dataset)}")# 示例:加载部分截图和增强后的训练集
partial_and_augmented_train_dataset = load_partial_and_augmented('train')
print(f"Number of training images (partial and augmented): {len(partial_and_augmented_train_dataset)}")
  1. 模型训练
    • 使用预训练的YOLOv5、YOLOv7或YOLOv8模型进行微调,或者从头开始训练。
    • 示例代码如下(以YOLOv5为例):
# 设置设备
device = select_device('')# 加载预训练模型或从头开始训练
model = attempt_load('yolov5s.pt', map_location=device)  # 或者 'path/to/custom_model.pt'
model.train()# 数据集配置文件
data_yaml = 'PCB_Defect_Detection_Dataset/data.yaml'# 训练参数
hyp = 'yolov5/data/hyps/hyp.scratch.yaml'  # 超参数配置文件
epochs = 100
batch_size = 16
img_size = 640# 开始训练
%cd yolov5
!python train.py --img {img_size} --batch {batch_size} --epochs {epochs} --data {data_yaml} --weights yolov5s.pt
  1. 模型推理
    • 使用训练好的模型进行推理,并在图像上绘制检测结果。
    • 示例代码如下:
def detect(image_path, model, device, img_size=640):img0 = cv2.imread(image_path)img = letterbox(img0, new_shape=img_size)[0]img = img[:, :, ::-1].transpose(2, 0, 1)  # BGR to RGB, to 3x416x416img = np.ascontiguousarray(img)img = torch.from_numpy(img).to(device)img = img.half() if half else img.float()  # uint8 to fp16/32img /= 255.0  # 0 - 255 to 0.0 - 1.0if img.ndimension() == 3:img = img.unsqueeze(0)# 推理with torch.no_grad():pred = model(img, augment=False)[0]# NMSpred = non_max_suppression(pred, 0.4, 0.5, classes=None, agnostic=False)for i, det in enumerate(pred):  # 每个图像的检测结果if det is not None and len(det):det[:, :4] = scale_coords(img.shape[2:], det[:, :4], img0.shape).round()for *xyxy, conf, cls in reversed(det):label = f'{model.names[int(cls)]} {conf:.2f}'plot_one_box(xyxy, img0, label=label, color=(0, 255, 0), line_thickness=3)return img0# 示例:检测单张图像
result_img = detect('path/to/image.jpg', model, device)
cv2.imshow('Detection Result', result_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
  1. 性能评估
    • 使用测试集进行性能评估,计算mAP、召回率、精确率等指标。
    • 可以使用YOLOv5自带的评估脚本:
       bash 

      深色版本

      python val.py --data PCB_Defect_Detection_Dataset/data.yaml --weights best.pt --img 640

注意事项

  • 数据格式:确保图像文件和标注文件的命名一致,以便正确匹配。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 超参数调整:根据实际情况调整网络架构、学习率、批次大小等超参数,以获得更好的性能。

应用场景

  • PCB制造:自动检测PCB上的缺陷,提高生产效率和产品质量。
  • 智能监控:结合自动化生产线,实现对PCB的实时监控和预警。
  • 科研教育:用于PCB缺陷检测研究和教学,提高学生和工程师的专业技能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1558311.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【实时计算 Flink】SQL作业大状态导致反压的调优原理与方法

状态管理不仅影响应用的性能,还关系到系统的稳定性和资源的有效利用。如果状态管理不当,可能会导致性能下降、资源耗尽,甚至系统崩溃。本文为您介绍SQL作业大状态导致反压的调优原理与方法。 运行原理:状态算子的产生 作为一种特…

【Python】Twisted:让自定义网络应用开发变得简单

Twisted 是 Python 中一个成熟、功能强大的事件驱动网络编程框架。它支持多种协议,如 HTTP、FTP、SMTP 等,可以用于构建高性能的网络应用,包括网络服务器、客户端、代理服务器等。Twisted 的核心是基于事件驱动模型,能够有效处理大…

基于方块编码的图像压缩matlab仿真,带GUI界面

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 编码单元的表示 4.2编码单元的编码 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 下图是随着方块大小的变化,图像的压缩率以及对应的图像质量指标PSN…

Python OpenCV精讲系列 - 三维重建深入理解(十七)

💖💖⚡️⚡️专栏:Python OpenCV精讲⚡️⚡️💖💖 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计,从基础概念入手,逐步深入到图像处理、特征检测、物体识…

SpringBoot项目-Thymeleaf安装

SpringBoot项目-Thymeleaf安装 参考文章:SpringBoot 整合Thymeleaf教程及使用方法 参考视频:模板引擎Thymeleaf快速入门 其实,参考的文章和视频,他们丢失了一些细节,我搞的时候还是有错 第1步:pom.xml增加依赖 <!-- SpringBoot集成thymeleaf模板 --><depe

QD1-P6 HTML常用标签:列表

本节视频 https://www.bilibili.com/video/BV1n64y1U7oj?p6 ‍ 本节学习HTML列表标签。HTML 列表有多种形式&#xff0c;最重要的有两种&#xff1a; 有序列表无序列表 一、有序列表 1.1 写法 <ol><li>首先</li><li>其次</li><li>最…

Window11 安装Java21教程

随着Java版本的迭代&#xff0c;最新的长期支持版本已经更新到Java21了&#xff0c;虽然笔者许多代码还是当年用Java8写的&#xff0c;但抱残守缺从来不适合IT人员&#xff0c;该来的我们始终要欣然面对。 其实随着各项技术的发展&#xff0c;Java许多组件现在其实都不需要或者…

Linux shell编程学习笔记86:sensors命令——硬件体温计

0 引言 同事们使用的Windows系统电脑&#xff0c;经常莫名其妙地装上了鲁大师&#xff0c;鲁大师的一项功能是显示系统cpu等硬件的温度。 在Linux系统中&#xff0c;sensors命令可以提供类似的功能。 1 sensors命令 的安装和配置 1.1 sensors命令 的安装 要使用sensors命…

华为OD机试 - 单向链表中间节点(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

使用Spring Security实现用户-角色-资源的权限控制

文章目录 一、基于角色的请求控制二、加载用户角色信息三、角色与资源的关联四、测试角色权限控制1. 未登录用户访问受保护资源2. 登录用户访问受保护资源3. 角色不足的用户访问受保护资源&#xff08;把前面改成.roles("USER")&#xff09; 五、自定义异常处理1. 自…

数学建模算法与应用 第3章 非线性规划及其求解方法

目录 3.1 非线性规划概述 3.2 约束优化问题 3.3 无约束优化问题的Matlab求解 3.4 牛顿法与梯度下降法 Matlab代码示例&#xff1a;梯度下降法求解简单非线性问题 3.5 非线性规划在机器学习中的应用 习题 3 总结 非线性规划&#xff08;Nonlinear Programming, NLP&…

华为OD机试 - 人数最多的站点(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…

A2P云短信,是什么意思?

中国联通国际公司产品之 A2P 云短信 一站式国际通信服务&#xff0c;助力企业拓展国际业务&#xff0c;轻松触达全球客户 在全球化日益加深的今天&#xff0c;企业要想在竞争激烈的国际市场中脱颖而出&#xff0c;不仅需要优质的产品和服务&#xff0c;更需要高效的沟通渠道来…

系统架构设计师 - 案例特训专题 - 架构设计篇

案例特训专题 - 架构设计篇 架构设计篇软件架构风格 ★★★★质量属性与架构评估 ★★★★★Web 架构综合考查 ★★★★★单台机器到数据库与Web服务器分离应用服务器集群负载均衡技术Session共享机制持久化技术 ORM数据库读写分离化缓存常见缓存技术Redis 集群切片的常见方式R…

DAMA数据管理知识体系(第5章 数据建模和设计)

课本内容 5.1 引言 概要 常见6种数据模式 关系模式多维模式面向对象模式事实模式时间序列模式NoSQL模式按照描述详细程度不同分类 概念模型逻辑模型物理模型包含组件 实体、关系、事实、键、属性业务驱动因素 1&#xff09;提供有关数据的通用词汇表。2&#xff09;获取、记录组…

SQL Server 2022 RTM Cumulative Update #15 发布下载

SQL Server 2022 RTM Cumulative Update #15 发布下载 最新的累积更新 (CU) 下载&#xff0c;包含自 SQL Server 2022 RTM 发布以来的所有更新。 请访问原文链接&#xff1a;https://sysin.org/blog/sql-server-2022/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留…

职称申报材料整理需要注意哪些方面呢?

相信不少小伙伴都想评完职称&#xff0c;最后可以升职加薪领补贴等等&#xff0c;但是不知道申请具体需要哪些材料❓❗ 今天甘建二给大家整理出20个工程专业职称评审的必备材料&#xff0c;必须码住&#xff0c;千万别错过啦 &#xfffd;&#xfffd;01、业绩材料 ⭕反应任现…

PCL 计算点云AABB包围盒

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 计算AABB 2.1.2 可视化AABB 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff09;…

ChatGPT国内中文版镜像网站整理合集(2024/9/30)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1&#xff0c;支持MJ绘画 ② chat.lify.vip 支持通用全模型&#xff0c;支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4&#xff0c;4o以及MJ绘画 1. 什么是镜像站 镜像站&#xff08;Mirror Site&#xff…

如何实现不同VLAN间互通?

问题描述 客户要求不同VLAN的PC机互通&#xff0c;如下图拓扑所示。 此外&#xff0c;仅允许在设备 LSW3 上进行配置修改。 分析 由于所有的PC都在同一个网段&#xff0c;当任何一个设备想要和另一个设备通信时&#xff0c;它会首先根据数据交互的流程广播一个ARP请求报文来获…