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

144 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`