Files
mingxi_platform/docs/PCB 与 HRIPCB 数据集差异分析.md
ilaandClaude Sonnet 4.6 37a4c13799 chore: 初始化四个子项目骨架目录结构
- 新增 mingxi-capture(PyQt5桌面程序)目录骨架
- 新增 mingxi-vision(FastAPI推理服务)目录骨架
- 新增 mingxi-backend(Django业务后端)目录骨架
- 新增 mingxi-frontend(Vue3管理后台)目录骨架
- 迁入 docs/(技术设计文档和PCB调研资料)
- 补充 .gitignore(模型文件、Node.js依赖、运行时数据库)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 17:21:17 +08:00

5.3 KiB
Raw Permalink Blame History

PCB 与 HRIPCB 数据集差异分析

分析时间:2026-05-07 分析对象:pcb/(TCC PCB Dataset)与 HRIPCB/(HRIPCB Dataset)


1. 核心差异一览

维度 PCB (TCC) HRIPCB
来源 Roboflow tcc-r4j2r/pcb-la0tj Roboflow ma007/hripcb
发布时间 2025-12-11 2023-04-16
规模 7,971 张 1,386 张
导出预处理 Resize to 240×240 (Fit within) Resize to 640×640 (Stretch)
缺陷密度 ~2.0 框/张图 ~4.2 框/张图
同图变体数 每张原始图 3~6 个变体 每张原始图 2 个变体
License CC BY 4.0 CC BY 4.0

2. 关键差异详解

2.1 图像分辨率与预处理策略不同

这是两个数据集最本质的区别。

  • PCB:被 Roboflow 预处理为 240×240(Fit within,保持比例 + 填充)。文件名中虽带有 _600 字样(暗示原始采集分辨率为 600×600),但实际导出图已缩放至 240×240。
  • HRIPCB:被预处理为 640×640(Stretch,直接拉伸)。原始图被强制拉成 640×640,可能存在轻微形变。

训练影响:YOLOv8 训练时会统一 imgsz=640,两者标签均为归一化坐标(0~1),可直接混用。但 PCB 从 240 放大到 640 时细节损失会比 HRIPCB 更明显,小目标特征可能更模糊。

2.2 缺陷密度不同

数据集 Split 图片数 缺陷框数 平均框/图
PCB train 6,346 12,964 2.04
PCB valid 798 1,588 1.99
PCB test 827 1,660 2.01
HRIPCB train 1,108 4,667 4.21
HRIPCB valid 139 583 4.19
HRIPCB test 139 576 4.14
  • PCB:平均每张图约 2.0 个缺陷框,整体相对稀疏。
  • HRIPCB:平均每张图约 4.2 个缺陷框,缺陷更密集,有些图可能包含同一类型的多个缺陷实例。

结论:HRIPCB 的缺陷密度约为 PCB 的 2 倍。这在训练时意味着 HRIPCB 样本对模型学习"密集小目标共存"场景的贡献更大。

2.3 数据构成方式不同

PCB 文件名特征:

l_light_01_missing_hole_01_1_600_jpg.rf.xxx.jpg
l_light_01_missing_hole_01_2_600_jpg.rf.xxx.jpg
l_light_01_missing_hole_01_3_600_jpg.rf.xxx.jpg
  • 前缀 l_light_ 表明采集时控制了光照条件(left light / 左侧光源)。
  • _1_、_2_、_3_ 后缀表明同一张缺陷样本有多个变体(可能是不同光照、角度或采集参数)。
  • 数据冗余度更高,同类缺陷的重复样本多。

HRIPCB 文件名特征:

01_missing_hole_01_jpg.rf.xxx.jpg
01_missing_hole_01_jpg.rf.yyy.jpg
  • 命名更简洁,每张原始图仅有 2 个 Roboflow 自动变体(后缀 hash 不同)。
  • 样本独立性更强,重复度低。

2.4 总标注实例数

数据集 图片数 总缺陷实例数
PCB 7,971 ~16,212
HRIPCB 1,386 ~4,826
合并后 9,357 ~21,038

3. 对模型训练的影响

影响项 说明
分辨率差距 PCB 从 240 上采样到 640 会丢失细节,小目标检测可能受一定影响;HRIPCB 原生 640,细节保留更完整
密度差异 HRIPCB 更密集的标注有助于模型学习"多缺陷共存"场景,对实际产线更有价值
重复样本 PCB 中同一缺陷的多个变体相当于轻度数据增强,有助于提升光照/角度鲁棒性
来源互补 PCB 偏"受控光照实验"风格,HRIPCB 偏"标准工业样本"风格,合并后泛化能力更强
类别分布 两者类别定义完全一致(6 类缺陷),标签格式均为标准 YOLOv8 归一化坐标,可直接合并

4. 使用建议

4.1 基础用法

直接使用 dataset.py 合并后训练:

python dataset.py merge --src pcb HRIPCB --dst merged

合并后共 9,357 张图、约 21,038 个缺陷实例,数据量足够支撑 YOLOv8n/s 的训练。

4.2 进阶用法:重新划分

如果担心 PCB 占比过高(85%)导致模型过度偏向 PCB 的数据风格,可以打乱后重新按 8:1:1 划分:

python dataset.py merge --src pcb HRIPCB --dst merged --rebalance --train 0.8 --val 0.1 --test 0.1

4.3 训练参数建议

针对两个数据集的分辨率差异,建议:

# train.yaml
model: yolov8n.pt
data: D:/github2026/pcb-defect-detection/merged/data.yaml
imgsz: 640        # 统一统一到 640,补偿 PCB 的 240 上采样损失
batch: 16         # RTX 4060 8GB 安全值
epochs: 100
amp: True         # 混合精度必开
patience: 20      # 早停

4.4 如果精度不够

可考虑以下策略:

  1. 分阶段训练:先用 PCB 预训练,再用 HRIPCB fine-tune(HRIPCB 密度高、标注更"干净")。
  2. 调整样本权重:在 Ultralytics 中通过 sample_weights 或自定义 dataloader 提升 HRIPCB 样本的采样概率。
  3. 数据清洗:检查 PCB 中 240×240 上采样后是否出现模糊/不可辨认的样本,必要时剔除低质量数据。

5. 附:数据来源链接

  • PCB (TCC):https://universe.roboflow.com/tcc-r4j2r/pcb-la0tj/dataset/1
  • HRIPCB:https://universe.roboflow.com/ma007/hripcb/dataset/1