# 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 阶段聚焦"算法精度 + 产品闭环 + 本地客户意向"三板斧即可。