Files
mingxi_platform/docs/pcb缺陷检测初步方案.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

219 lines
9.1 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缺陷检测初步方案(单机开发版)
> 硬件约束修正:仅有一台联想 Y7000P 笔记本(Intel i7-14650HX 16核 @2.20GHz,16GB RAM,预计 RTX 4060 Laptop 8GB 独显)。
> 本方案在 v1.1 和"pcb缺陷识别开源项目.md"基础上,针对"无 Jetson、无独立服务器、仅一台笔记本"做完整重构。
> 对齐 CLAUDE.md:Python3.8 + YOLOv8 + Vue3.0 + Django4.0。
> 起始日期:2026-05-07
---
## 1. 硬件盘点与能力边界
| 组件 | 规格 | 训练能力 | 推理能力 |
|---|---|---|---|
| CPU | i7-14650HX 16C/24T @2.20GHz,睿频5.2GHz | 数据预处理 / 标注 / 辅助 | OpenVINO CPU推理可行 |
| GPU | RTX 4060 Laptop 8GB GDDR6(Y7000P 2024标配,需核实) | **YOLOv8n/s 可训练,batch≤16** | FP16 实时推理 60+ FPS |
| RAM | 16GB DDR5 | **瓶颈**,大数据集需分批加载 | 推理无压力 |
| 存储 | 1TB NVMe(标配) | 够用,注意清理缓存 | — |
| 散热 | 笔记本主动散热 | **持续满载训练时需外接散热器** | 推理负载低 |
**结论**:这台笔记本可以**完成训练 + Demo推理 + Web开发全流程**,但 Jetson / TensorRT / DeepStream 路线需要**降级替代**。
### 首要动作:确认 GPU 型号
开机执行 `nvidia-smi`(或设备管理器)确认:
- 若为 **RTX 4060 8GB**:方案按本文执行
- 若为 **RTX 4050 6GB**:把 `imgsz` 从 640 降到 416,`batch` 从 16 降到 8
- 若为**核显/无独显**:只能用 CPU 训练,YOLOv8n 一轮要数小时,建议立即借/租算力
---
## 2. 方案修正总览(对比原方案)
| 环节 | 原方案 | 修正后(单笔记本) | 修正理由 |
|---|---|---|---|
| 训练硬件 | Jetson Orin Nano | **Y7000P RTX 4060** | 无 Jetson |
| 训练模型 | YOLOv8n/s 随意 | **固定 YOLOv8n**(s 作备选) | 8GB 显存 + 16GB 内存限制 |
| 边缘部署演示 | Jetson + DeepStream + TensorRT | **笔记本 + USB工业相机 + ONNX Runtime GPU** | 节省硬件预算,聚焦算法 |
| Demo 形态 | 边缘盒子现场演示 | **笔记本直接演示 + 预录视频兜底** | 现场网络/电源风险可控 |
| 实时推理 | TensorRT FP16 | **ONNX Runtime DirectML 或 CUDA EP** | Windows 原生支持,无需交叉编译 |
| 数据标注 | 标注团队 | **本机 Label Studio / labelme** | 5人团队自标注即可 |
| 产品部署 | 云服务器 | **本机 Docker + ngrok 内网穿透** 临时演示 | 省服务器钱 |
| 生产边缘盒 | Jetson 自购 | **MVP 阶段客户采购 / 租用** | 获奖后再投硬件 |
---
## 3. GitHub 项目选型(按硬件修正)
### 主选:aaravomega/pcb-defect-detection
https://github.com/aaravomega/pcb-defect-detection
- YOLOv8 + Ultralytics 标准流程,与 Python3.8 技术栈一致
- Windows 原生支持,不需 Linux / Docker
- fork 后直接改 `data.yaml` 和 `train.py`
### 数据:HRIPCB(主)+ DeepPCB(备)
- **HRIPCB**(Roboflow 一键导出 YOLO 格式):https://universe.roboflow.com/ma007/hripcb/dataset/3
- **DeepPCB**(含模板图,后期差分增强用):https://github.com/tangsanli5201/DeepPCB
### 演示方案:放弃 Deepstream,改用 ONNX Runtime + OpenCV
- 原因:NVIDIA DeepStream 主要面向 Jetson 和 Tesla 服务器卡,笔记本 4060 用起来收益小、坑多
- 替代:训练后的 `best.pt` → 导出 ONNX → **ONNX Runtime GPU (CUDA Execution Provider)** → OpenCV 读 USB 相机 → Vue 看板展示
- 备选:**OpenVINO**(Intel CPU 推理,i7-14650HX 上 YOLOv8n 可跑 20-30 FPS,作为 GPU 挂掉时的兜底)
### 挠性板扩展:Flexible-PCB-Defect-Detection
https://github.com/Pranshuk29/Flexible-PCB-Defect-Detection
- 仅在 MVP 阶段、成功对接梅州智科后启用
- 不在 Demo 阶段占用训练资源
---
## 4. 训练配置(针对 8GB 显存 + 16GB 内存)
### 4.1 环境清单(Windows 11 + WSL2 可选)
```
Python 3.8.x
PyTorch 2.0.1 + CUDA 11.8(Y7000P 驱动原生支持)
Ultralytics 8.x
onnxruntime-gpu 1.16+
opencv-python 4.8+
label-studio 或 labelme
```
> 不建议用 WSL2 训练:Windows 下 PyTorch CUDA 性能已够,WSL 多一层开销且调试麻烦。
### 4.2 训练超参数(起步版)
```yaml
# train.yaml(Y7000P 实测可行)
model: yolov8n.pt
data: hripcb.yaml
imgsz: 640
batch: 16 # 8GB 显存极限,若 OOM 降到 8
epochs: 100
device: 0 # 单 GPU
workers: 4 # 16GB 内存下别超 4,否则卡死
amp: True # 混合精度必开,省显存
cache: ram # 数据集 <2GB 时开 RAM 缓存加速
patience: 20 # 早停,省电省时间
```
### 4.3 训练时间预估(HRIPCB 1386 张)
| 模型 | 单轮时间 | 100轮总时 | 显存占用 |
|---|---|---|---|
| YOLOv8n | ~45s | **约 1.5 小时** | ~4GB |
| YOLOv8s | ~80s | 约 2.5 小时 | ~6GB |
| YOLOv8m | OOM 风险 | 不推荐 | >8GB |
**建议**:先 n 后 s,n 版本达到 mAP@0.5 > 0.9 即可上路演,s 作为备选。
### 4.4 散热与稳定性
- 训练时**外接散热底座**,温度控制在 85℃ 以内
- 关闭 Windows 自动更新,避免训练中断
- 每晚跑训练、白天做产品开发,错峰使用笔记本资源
---
## 5. Demo 现场展示方案(替代 Jetson)
### 5.1 硬件清单(总预算 ≤ 2000 元)
| 设备 | 型号建议 | 价格 | 用途 |
|---|---|---|---|
| USB 工业相机 | 海康威视 MV-CU013-A0UC 或 海康 USB 摄像头 | ~800-1500 | 实拍 PCB 样品 |
| LED 环形光源 | 工业白光环形灯 | ~200 | 保证光照一致 |
| 简易光箱 / 黑色背景板 | 自制 | ~100 | 降低杂光干扰 |
| PCB 样品 | 向本地厂讨要废板 | 0 | 演示素材 |
| 外接散热底座 | 联想/酷冷至尊 | ~200 | 训练稳定性 |
### 5.2 演示流程
```
笔记本(Y7000P)
├─ USB 相机 → OpenCV 取流
├─ ONNX Runtime GPU 推理
├─ Django 后端写入事件
├─ Vue 看板实时展示(localhost)
└─ 投屏到决赛现场大屏
```
### 5.3 三重兜底
- **A 计划**:现场实时相机 + PCB 样品演示(最理想)
- **B 计划**:预录 90 秒场景视频 + Vue 看板重放(现场网络/相机故障时启用)
- **C 计划**:纯截图 PPT(极端情况,笔记本挂掉时)
**每个计划必须提前演练 3 次以上**。
---
## 6. 开发环境(单机全栈)
```
Y7000P 上同时跑:
├─ 终端1:Django runserver (8000)
├─ 终端2:Vue dev server (5173)
├─ 终端3:YOLOv8 推理服务(FastAPI 独立进程,8001)
├─ 终端4:Label Studio(8080,标注用)
└─ 后台:PostgreSQL 或 SQLite(MVP 阶段 SQLite 足够)
```
**资源分配**:
- 训练时段:关掉 Django/Vue/Label Studio,独占 GPU 和内存
- 开发时段:关掉训练,16GB 内存跑全栈无压力
- **不要同时训练和开发**,16GB 必 OOM
---
## 7. 三个月执行计划(对齐 Y7000P 节奏)
| 周 | 工作内容 | 是否占用 GPU |
|---|---|---|
| W1 | 确认 GPU 型号;装环境;fork aaravomega;下载 HRIPCB | 轻度(跑通推理) |
| W2 | YOLOv8n 在 HRIPCB 上训练完成;拿到 mAP 基准 | **整夜占用** |
| W3 | Django 后端框架 + Vue 看板骨架;接 SQLite | 否 |
| W4 | YOLOv8 导出 ONNX;FastAPI 推理服务;OpenCV 取相机流 | 轻度 |
| W5 | 买 USB 工业相机 + 环形光;搭建演示光箱;拍测试素材 | 否 |
| W6 | Demo 版 v1:相机 → 推理 → 看板 全链路打通 | 轻度 |
| W7 | 联系丰顺威达 / 梅州超捷 / 智科,签 NDA 收样本 | 否 |
| W8 | 真实样本标注(Label Studio)+ 迁移学习微调 | **整夜占用** |
| W9 | 规则引擎(批次缺陷率/追溯)+ 事件管理 + 告警 | 否 |
| W10 | 挠性板扩展(若智科签约)+ 录 90s 场景视频 | 轻度 |
| W11 | 软著申请;客户 MOU 签署;BP 定稿 | 否 |
| W12 | 决赛 Demo 联调;三重兜底演练;路演彩排 | 否 |
---
## 8. 风险清单(硬件层)
| 风险 | 概率 | 影响 | 对策 |
|---|---|---|---|
| 笔记本训练过热降频 | 高 | 训练慢 | 外接散热底座 + 限制房间温度 |
| 8GB 显存 OOM | 中 | 训练中断 | batch 降到 8;imgsz 降到 416 |
| 16GB 内存爆满 | 中 | 系统卡死 | workers 降到 2;关闭浏览器等 |
| 决赛现场笔记本故障 | 低 | **灾难** | 二号机备份(团队另一人的笔记本同步工程)+ B/C 计划 |
| GPU 驱动更新导致 CUDA 挂掉 | 低 | 训练中断 | 关闭 NVIDIA 自动更新;锁定驱动版本 |
| 真实 PCB 样本获取失败 | 中 | 只能用公开数据集 | 提前 2 周对接 2 家以上厂商分散风险 |
---
## 9. 后续升级路径(晋级后)
- **初赛通过后**:考虑租云 GPU(AutoDL / 腾讯云 GN7 一周 ~300 元)加速 YOLOv8s / m 训练
- **获奖后**:用奖金采购 1 台 **Jetson Orin Nano 8GB**(约 3500 元)做客户演示边缘盒子,切回原方案的 DeepStream 部署路线
- **MVP 阶段**:客户侧硬件由客户采购或租用,我方只交付**软件 + 配置服务**
---
## 10. 一句话结论
**用好 Y7000P 这一台机器,完全够支撑 Demo 版晋级**——关键是**把训练和开发错峰安排,显存内存资源专用**。Jetson / 云服务器留到 MVP 阶段和获奖后再投入,Demo 阶段聚焦"算法精度 + 产品闭环 + 本地客户意向"三板斧即可。