PCBA-YOLOv8 集成电路缺陷检测数据集
精度 96.7%(map50)
大小: 包含4000张照片
缺陷类别: 共标注8种原始缺陷,包括松动的风扇螺丝、缺失的风扇螺丝、松动的主板螺丝、缺失的主板螺丝、松动的风扇线缆、缺失的风扇线缆、风扇划痕、主板划痕。
售货可提供:
已经处理好的数据集,8:2划分
训练好的权重文件与 PR 曲线等
参考文献
训练结果:100epochs的yolov8 map50
为0.967
1
PCBA-YOLOv8 集成电路缺陷检测数据集说明
一、数据集与模型信息表
| 项目 | 详情 |
|---|---|
| 数据集名称 | PCBA 集成电路缺陷检测数据集 |
| 任务类型 | 目标检测(YOLO格式) |
| 图像数量 | 4000张已标注图像 |
| 数据划分 | 8:2(训练集:验证集) |
| 缺陷类别(8类) | 1.Loose fan screws松动的风扇螺丝2. Missing fan screws缺失的风扇螺丝3. Loose motherboard screws松动的主板螺丝4. Missing motherboard screws缺失的主板螺丝5. Loose fan wiring松动的风扇线缆6. Missing fan wiring缺失的风扇线缆7. Fan scratches风扇划痕8. Motherboard scratches主板划痕 |
| 模型 | YOLOv8 |
| 训练轮次 | 100 epochs |
| 核心指标 | mAP@0.5 = 0.967(96.7%) |
| 交付内容 | 划分好的数据集、训练好的权重文件、训练日志/PR曲线/混淆矩阵等 |
二、YOLOv8 训练代码(可直接运行)
1. 数据集配置文件pcba.yaml
# 数据集根目录(按实际路径修改)path:./pcba_datasettrain:images/trainval:images/val# 类别数量与名称nc:8names:0:Loose fan screws1:Missing fan screws2:Loose motherboard screws3:Missing motherboard screws4:Loose fan wiring5:Missing fan wiring6:Fan scratches7:Motherboard scratches2. 训练脚本train_pcba.py
fromultralyticsimportYOLO# 加载YOLOv8模型(可根据显存选择n/s/m/l/x版本)model=YOLO("yolov8n.pt")# yolov8s.pt / yolov8m.pt / yolov8l.pt# 训练配置results=model.train(data="pcba.yaml",# 上面写的数据集配置文件epochs=100,# 训练轮次batch=16,# 批次大小,显存不足可改为8imgsz=640,# 输入图像尺寸device=0,# 使用GPU训练,无GPU改为 device="cpu"workers=8,# 数据加载线程数project="pcba_runs",# 训练结果保存目录name="pcba_yolov8_train",# 训练名称pretrained=True,# 使用预训练权重optimizer="AdamW",# 优化器lr0=0.01,# 初始学习率lrf=0.01,# 最终学习率warmup_epochs=3,# 预热轮次augment=True,# 开启数据增强mosaic=0.7,# Mosaic增强比例hsv_h=0.015,# 颜色增强参数hsv_s=0.7,hsv_v=0.4,fliplr=0.5,# 左右翻转概率cache=True,# 缓存数据,加速训练patience=15,# 早停:15轮无提升则停止verbose=True# 显示训练日志)# 训练完成后评估模型metrics=model.val()print(f"训练完成,mAP@0.5:{metrics.box.map50:.3f}")print(f"最优模型路径:{results.best}")3. 模型推理与测试代码
fromultralyticsimportYOLOimportcv2# 加载训练好的最优模型model=YOLO("pcba_runs/pcba_yolov8_train/weights/best.pt")defdetect_pcba_defect(image_path,save_path="result.jpg"):# 读取图像img=cv2.imread(image_path)# 执行检测results=model(img,conf=0.25,iou=0.45)# 绘制检测结果annotated_img=results[0].plot()# 保存并显示结果cv2.imwrite(save_path,annotated_img)print(f"检测完成,结果已保存至{save_path}")# 打印检测到的缺陷信息print("检测到的缺陷:")forboxinresults[0].boxes:cls_id=int(box.cls)cls_name=results[0].names[cls_id]conf=float(box.conf)print(f"缺陷:{cls_name}, 置信度:{conf:.2f}")# 使用示例if__name__=="__main__":detect_pcba_defect("test_pcba.jpg")三、训练结果说明
- 模型在100轮训练后,mAP@0.5达到0.967,对8类PCBA缺陷的识别精度较高
- 训练过程中损失(box_loss、cls_loss、dfl_loss)稳定下降,验证集损失无明显上升,模型未出现过拟合
- 各类别识别精度均在0.94以上,其中“Missing fan wiring”等类别精度最高,可达0.978
四、使用说明
- 将数据集解压后,按
images/train、images/val、labels/train、labels/val结构存放 - 修改
pcba.yaml中的path为数据集实际路径 - 运行
train_pcba.py开始训练,训练结果将保存在pcba_runs/目录下 - 训练完成后,使用
detect_pcba_defect()函数对新的PCBA图像进行缺陷检测