- 新增 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>
5.3 KiB
5.3 KiB
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 如果精度不够
可考虑以下策略:
- 分阶段训练:先用 PCB 预训练,再用 HRIPCB fine-tune(HRIPCB 密度高、标注更"干净")。
- 调整样本权重:在 Ultralytics 中通过
sample_weights或自定义 dataloader 提升 HRIPCB 样本的采样概率。 - 数据清洗:检查 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