博客 / 詳情

返回

從人工目檢到 AI 質檢-YOLOv8 驅動的 PCB 缺陷檢測系統【完整源碼】

從人工目檢到 AI 質檢-YOLOv8 驅動的 PCB 缺陷檢測系統【完整源碼】


一、項目背景與研究意義

在電子製造領域,PCB(Printed Circuit Board,印製電路板)缺陷檢測是保障產品質量的核心環節之一。傳統的人工目檢或規則算法存在以下問題:

  • 效率低:人工檢測難以滿足大規模流水線需求
  • 一致性差:不同檢測人員經驗差異明顯
  • 規則泛化能力弱:傳統圖像算法難以應對複雜缺陷形態
  • 自動化程度低:難以與現代工業系統深度集成

隨着深度學習和計算機視覺技術的發展,基於目標檢測模型的 PCB 缺陷自動識別方案逐漸成為工業視覺的主流方向。

本項目基於 Ultralytics YOLOv8 構建了一套完整的 PCB 缺陷檢測系統,並通過 PyQt5 桌面界面 實現“非算法人員也能直接使用”的工業級應用形態。
在這裏插入圖片描述


源碼下載與效果演示

嗶哩嗶哩視頻下方觀看:
https://www.bilibili.com/video/BV1tiTLzbEfr

包含:

📦完整項目源碼

📦 預訓練模型權重

🗂️ 數據集地址(含標註腳本

在這裏插入圖片描述

二、系統整體架構設計

2.1 技術選型説明

模塊 技術選型 説明
檢測模型 YOLOv8 Anchor-Free,高精度,高速度
深度學習框架 PyTorch 靈活、社區成熟
GUI 界面 PyQt5 跨平台、桌面級應用
圖像處理 OpenCV 視頻流與圖像讀寫
數據格式 YOLO 標準 通用、易擴展

2.2 系統功能模塊劃分

整體系統採用 “模型層 + 推理層 + 應用層” 三層結構:

├── 數據層
│   ├── PCB 圖像數據集
│   ├── YOLO 標註文件
│
├── 模型層
│   ├── YOLOv8 網絡結構
│   ├── 訓練腳本
│   ├── 權重文件
│
├── 推理層
│   ├── 圖片檢測
│   ├── 批量檢測
│   ├── 視頻檢測
│   ├── 攝像頭檢測
│
├── 應用層
│   ├── PyQt5 主界面
│   ├── 參數配置
│   ├── 結果可視化
│   └── 文件保存管理

在這裏插入圖片描述

三、PCB 缺陷類型定義與數據集構建

3.1 缺陷類別説明

本項目針對常見 PCB 工業缺陷,定義了 6 大類目標:

類別 中文名稱 工業含義
missing_hole 缺孔 鑽孔缺失
mouse_bite 鼠咬缺口 板邊損壞
open_circuit 開路 線路斷裂
short 短路 線路粘連
spur 飛線 多餘金屬線
spurious_copper 雜銅 非預期銅殘留

這些缺陷在實際生產中對 PCB 功能可靠性影響極大,具有明確的檢測價值。


3.2 數據集組織結構

採用 YOLO 官方推薦格式:

dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/

單條標註示例:

4 0.5096 0.3528 0.3947 0.3182

含義為:

[class_id, x_center, y_center, width, height]
座標均為 歸一化比例值,與分辨率無關,利於模型泛化。

在這裏插入圖片描述
在這裏插入圖片描述

四、YOLOv8 模型原理與工程優勢

4.1 YOLOv8 核心改進點

相比 YOLOv5 / YOLOv7,YOLOv8 具備以下優勢:

  • 🚀 Anchor-Free 架構:減少超參數設計
  • 🎯 TaskAlignedAssigner:正負樣本分配更合理
  • 📉 CIoU + DFL Loss:定位精度更高
  • 推理速度更快:適合實時工業檢測

YOLOv8 網絡結構整體分為:

  • Backbone:特徵提取
  • Neck:FPN + PAN 融合
  • Head:目標分類與迴歸

4.2 工業缺陷檢測的適配性分析

PCB 缺陷檢測具有以下特點:

  • 小目標密集
  • 紋理複雜
  • 對誤檢容忍度低

YOLOv8 在 小目標檢測能力 + 實時性 上表現尤為突出,非常適合該類工業場景。


五、模型訓練流程與參數配置

5.1 訓練命令示例

yolo detect train \
  data=pcb.yaml \
  model=yolov8n.pt \
  epochs=100 \
  batch=16 \
  imgsz=640 \
  lr0=0.001

關鍵參數説明:

  • epochs:訓練輪次
  • batch:批大小
  • imgsz:輸入尺寸
  • lr0:初始學習率

5.2 訓練結果評估指標

訓練完成後生成以下關鍵文件:

  • results.png:Loss / mAP 曲線
  • confusion_matrix.png:類別混淆分析
  • weights/best.pt:最優權重

mAP@0.5 ≥ 90% 時,即具備工程部署價值。


六、模型推理與結果解析

6.1 Python 推理示例代碼

from ultralytics import YOLO

model = YOLO("best.pt")
results = model("test.jpg", conf=0.25, save=True)

for box in results[0].boxes:
    cls = int(box.cls)
    conf = float(box.conf)
    print(cls, conf)

輸出信息包含:

  • 缺陷類別
  • 置信度
  • 邊框座標

在這裏插入圖片描述

6.2 檢測結果可視化

系統自動生成帶有 類別 + 置信度 + 邊框 的結果圖像,便於人工複核和質量追溯。


七、PyQt5 桌面應用系統設計

7.1 GUI 功能概覽

桌面系統支持:

  • 📷 單圖片檢測
  • 📁 文件夾批量檢測
  • 🎥 視頻檢測
  • 📡 攝像頭實時檢測

界面與算法解耦,用户無需理解深度學習即可完成檢測。


7.2 主程序運行方式

python main.py

系統將自動加載模型權重並進入主界面。


八、工程落地價值分析

8.1 適用場景

  • PCB 生產線自動質檢
  • 工業視覺教學實驗
  • 計算機視覺畢業設計
  • 企業原型系統驗證

8.2 項目優勢總結

  • 從 0 到 1 的完整工程閉環
  • 模型 + GUI + 數據集 一體化
  • 高可復現性與可擴展性
  • 適合科研與工業雙場景

在這裏插入圖片描述

九、可拓展方向與未來優化

  1. 模型輕量化

    • ONNX / TensorRT
    • Jetson / 邊緣端部署
  2. 缺陷統計與報表

    • 自動生成 CSV / Excel
    • 質量趨勢分析
  3. 多模型對比

    • YOLOv8 vs RT-DETR
    • Transformer-based Detector
  4. 工業系統對接

    • MES / PLC 接口
    • Web 可視化平台

在這裏插入圖片描述

十、結語

本項目不僅是一個 YOLOv8 目標檢測示例,更是一套真正可用於工業場景的 PCB 缺陷檢測解決方案
通過模型訓練、推理封裝與桌面應用整合,實現了從算法到工程的完整落地路徑。

如果你正在做計算機視覺項目 / 工業視覺系統 / 畢業設計,這套方案可以直接作為模板使用。
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.