- 新增 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>
9.1 KiB
9.1 KiB
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 训练超参数(起步版)
# 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 阶段聚焦"算法精度 + 产品闭环 + 本地客户意向"三板斧即可。