# 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` 合并后训练: ```bash python dataset.py merge --src pcb HRIPCB --dst merged ``` 合并后共 **9,357 张图、约 21,038 个缺陷实例**,数据量足够支撑 YOLOv8n/s 的训练。 ### 4.2 进阶用法:重新划分 如果担心 PCB 占比过高(85%)导致模型过度偏向 PCB 的数据风格,可以打乱后重新按 8:1:1 划分: ```bash python dataset.py merge --src pcb HRIPCB --dst merged --rebalance --train 0.8 --val 0.1 --test 0.1 ``` ### 4.3 训练参数建议 针对两个数据集的分辨率差异,建议: ```yaml # 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`