PCB表面缺陷检测数据集 含有xml标签文件 可用于yolov3 yolov4 yolov5 yolov6 yolov7 yolov8目标检测

工业自动化时代,PCB板缺陷检测是计算机视觉领域的重要应用之一。今天,我将带大家从零开始,探索如何利用公开的PCB缺陷检测数据集,结合YOLO系列模型,打造一个高效实用的缺陷检测系统。

一、PCB缺陷检测数据集初探

我们使用的数据集包含大量PCB板图像,每张图像都配有XML格式的标注文件。XML文件记录了每个缺陷的位置和类型,如下所示:

<annotation>
    <filename>pcb_001.jpg</filename>
    <size>
        <width>1920</width>
        <height>1280</height>
    </size>
    <object>
        <name>missing_pad</name>
        <bndbox>
            <xmin>123</xmin>
            <ymin>45</ymin>
            <xmax>156</xmax>
            <ymax>87</ymax>
        </bndbox>
    </object>
</annotation>

这个结构化的标注信息,为我们后续的数据处理和模型训练提供了良好的基础。

二、数据加载与可视化

我们可以用Python加载这些数据。以下是一个简单的数据加载脚本:

import cv2
import xml.etree.ElementTree as ET

def load_pcb_dataset(xml_path, img_path):
    root = ET.parse(xml_path).getroot()
    img = cv2.imread(img_path)
    
    for obj in root.findall('object'):
        name = obj.find('name').text
        bbox = obj.find('bndbox')
        xmin = int(bbox.find('xmin').text)
        ymin = int(bbox.find('ymin').text)
        xmax = int(bbox.find('xmax').text)
        ymax = int(bbox.find('ymax').text)
        
        # Draw bounding box
        cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0,255,0), 2)
        cv2.putText(img, name, (xmin, ymin-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 2)
    
    cv2.imshow('PCB Defect', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
# 使用方法
load_pcb_dataset('annotations/pcb_001.xml', 'images/pcb_001.jpg')

这段代码能帮我们直观看到PCB板上的各种缺陷类型及其位置。

三、基于YOLO的目标检测实战

以YOLOv5为例,我们来展示如何训练一个缺陷检测模型:

  1. 先安装必要的库:
pip install -U git+https://github.com/ultralytics/yolov5
  1. 创建数据配置文件:
train: ../train/images/
val: ../val/images/
nc: 10  # 缺陷类别数量
names: ['missing_pad', 'extra_pad', 'broken_trace', ...]
  1. 开始训练:
from yolov5 import train

# 开始训练
train.run(
    data='pcb.yaml',
    imgsz=640,
    batch_size=16,
    epochs=50,
    weights='yolov5s.pt'  # 使用预训练权重
)

这样就能训练一个基础的缺陷检测模型了。

四、结果可视化

训练完成后,我们可以测试一下模型效果:

from yolov5 import detect

detect.run(
    weights='runs/train/exp/weights/best.pt',
    source='test_images/pcb_002.jpg'
)

通过以上步骤,我们就能完成一个完整的PCB缺陷检测系统的搭建。这个过程不仅让我们熟悉了数据处理的流程,还亲身体验了现代目标检测模型的威力。

PCB表面缺陷检测数据集 含有xml标签文件 可用于yolov3 yolov4 yolov5 yolov6 yolov7 yolov8目标检测

希望这篇博文能为你的实践之路提供一些启发,如果你有其他创新的想法或遇到有趣的问题,欢迎随时交流!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐