一手项目对接app平台,seo如何选择网站标题,jeecms做企业网站,代理网页游戏需要什么条件啊PCB缺陷检测数据集#xff08;yolov5,v7,v8#xff09; 数据集总共有两个文件夹#xff0c;一个是pcb整体标注#xff0c;一个是pcb部分截图。 整体标注有6个分类#xff0c;开路#xff0c;短路等都已经标注#xff0c;标注格式为xml#xff0c;每个文件夹下有100多张… 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类
使用说明 环境准备 确保安装了Python及其相关库如torch、opencv-python、matplotlib等。下载并解压数据集到本地目录。安装YOLOv5、YOLOv7或YOLOv8所需的依赖项 git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt 加载数据集 可以使用常见的编程语言如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(fNumber of training images (full boards): {len(full_boards_train_dataset)})# 示例加载部分截图和增强后的训练集
partial_and_augmented_train_dataset load_partial_and_augmented(train)
print(fNumber of training images (partial and augmented): {len(partial_and_augmented_train_dataset)})
模型训练 使用预训练的YOLOv5、YOLOv7或YOLOv8模型进行微调或者从头开始训练。示例代码如下以YOLOv5为例
# 设置设备
device select_device()# 加载预训练模型或从头开始训练
model attempt_load(yolov5s.pt, map_locationdevice) # 或者 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
模型推理 使用训练好的模型进行推理并在图像上绘制检测结果。示例代码如下
def detect(image_path, model, device, img_size640):img0 cv2.imread(image_path)img letterbox(img0, new_shapeimg_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, augmentFalse)[0]# NMSpred non_max_suppression(pred, 0.4, 0.5, classesNone, agnosticFalse)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, labellabel, color(0, 255, 0), line_thickness3)return img0# 示例检测单张图像
result_img detect(path/to/image.jpg, model, device)
cv2.imshow(Detection Result, result_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
性能评估 使用测试集进行性能评估计算mAP、召回率、精确率等指标。可以使用YOLOv5自带的评估脚本 bash 深色版本 python val.py --data PCB_Defect_Detection_Dataset/data.yaml --weights best.pt --img 640
注意事项
数据格式确保图像文件和标注文件的命名一致以便正确匹配。硬件要求建议使用GPU进行训练和推理以加快处理速度。如果没有足够的计算资源可以考虑使用云服务提供商的GPU实例。超参数调整根据实际情况调整网络架构、学习率、批次大小等超参数以获得更好的性能。
应用场景
PCB制造自动检测PCB上的缺陷提高生产效率和产品质量。智能监控结合自动化生产线实现对PCB的实时监控和预警。科研教育用于PCB缺陷检测研究和教学提高学生和工程师的专业技能。