(全套源碼+數(shù)據(jù)集))
基于 YOLOv8 目標(biāo)檢測模型 PyQt6 桌面端應(yīng)用的垃圾分類識別系統(tǒng)覆蓋數(shù)據(jù)集構(gòu)建、模型訓(xùn)練調(diào)優(yōu)、系統(tǒng)集成開發(fā)的完整深度學(xué)習(xí)工程流程。開發(fā)日期2026年目錄項(xiàng)目概述數(shù)據(jù)集說明深度學(xué)習(xí)開發(fā)流程訓(xùn)練參數(shù)訓(xùn)練指標(biāo)與結(jié)果可視化圖表說明系統(tǒng)功能技術(shù)棧項(xiàng)目結(jié)構(gòu)啟動(dòng)教程項(xiàng)目概述本項(xiàng)目針對城市生活垃圾分類場景構(gòu)建了一套端到端的 AI 識別系統(tǒng)目標(biāo)檢測模型基于 YOLOv8n 預(yù)訓(xùn)練權(quán)重進(jìn)行遷移學(xué)習(xí)識別 44 種常見垃圾細(xì)類分類規(guī)則引擎將 44 個(gè)細(xì)類自動(dòng)映射到「可回收物 / 廚余垃圾 / 有害垃圾 / 其他垃圾」四大類桌面端應(yīng)用PyQt6 多功能檢測界面支持圖片、視頻、攝像頭三種輸入源實(shí)時(shí)檢測數(shù)據(jù)集說明基本信息項(xiàng)目內(nèi)容標(biāo)注格式Y(jié)OLO TXT由 Pascal VOC XML 轉(zhuǎn)換圖像總數(shù)14,761張有效圖像原始 14,964 張去除無圖樣本大類數(shù)量4類可回收物、廚余垃圾、有害垃圾、其他垃圾細(xì)類數(shù)量44類圖像格式JPEG.jpg數(shù)據(jù)集劃分train / val / test 7 : 1 : 2子集分布子集圖片數(shù)量用途train10,319 張模型訓(xùn)練val1,478 張訓(xùn)練過程中的驗(yàn)證評估test2,964 張最終性能測試?yán)诸愺w系大類細(xì)類數(shù)代表細(xì)類可回收物26 類飲料瓶、易拉罐、紙盒紙箱、玻璃器皿、舊衣服、充電寶…廚余垃圾7 類剩飯剩菜、果皮果肉、菜幫菜葉、魚骨、蛋殼…有害垃圾3 類干電池、過期藥物、軟膏其他垃圾8 類一次性快餐盒、煙蒂、陶瓷器皿、污損塑料…標(biāo)注格式示例每張圖片對應(yīng)一個(gè)同名.txt文件每行一個(gè)目標(biāo)框坐標(biāo)均歸一化到[0, 1]class_id x_center y_center width height 6 0.4106 0.4219 0.5962 0.3379深度學(xué)習(xí)開發(fā)流程第一階段數(shù)據(jù)集構(gòu)建與處理原始數(shù)據(jù)收集整合公開垃圾分類數(shù)據(jù)集原始標(biāo)注格式為 Pascal VOC XML格式轉(zhuǎn)換將 XML 標(biāo)注批量轉(zhuǎn)換為 YOLO TXT 格式class_id x_center y_center w h歸一化坐標(biāo)數(shù)據(jù)清洗剔除無有效標(biāo)注框的樣本14,964 → 14,761 張數(shù)據(jù)集劃分按 7:1:2 比例隨機(jī)劃分訓(xùn)練/驗(yàn)證/測試集確保類別分布均衡分類規(guī)則構(gòu)建編寫classify_rule.json建立細(xì)類 → 大類的映射規(guī)則支持推理后的大類歸并第二階段模型訓(xùn)練與調(diào)優(yōu)模型選型選擇 YOLOv8nNano 版本作為基礎(chǔ)架構(gòu)參數(shù)量小、推理速度快適合桌面端部署遷移學(xué)習(xí)加載 COCO 預(yù)訓(xùn)練權(quán)重yolov8n.pt在垃圾數(shù)據(jù)集上進(jìn)行微調(diào)加速收斂數(shù)據(jù)增強(qiáng)啟用 Mosaic 拼接mosaic1.0、隨機(jī)水平翻轉(zhuǎn)fliplr0.5、HSV 色彩擾動(dòng)、隨機(jī)縮放等多種增強(qiáng)策略訓(xùn)練策略前 3 個(gè) epoch 進(jìn)行學(xué)習(xí)率 Warmup逐步從warmup_bias_lr0.1過渡到lr00.01后期采用余弦退火式線性衰減lrf0.01避免學(xué)習(xí)率過高導(dǎo)致振蕩最后 10 個(gè) epoch 關(guān)閉 Mosaic 增強(qiáng)close_mosaic10提升模型對真實(shí)樣本的擬合能力混合精度訓(xùn)練啟用 AMPampTrue降低顯存占用提升訓(xùn)練吞吐結(jié)果保存自動(dòng)保存最優(yōu)權(quán)重best.pt和最終權(quán)重last.pt并記錄完整訓(xùn)練日志results.csv第三階段系統(tǒng)集成與功能開發(fā)檢測器封裝將 Ultralytics YOLO 推理接口封裝為Detector類統(tǒng)一管理模型加載、參數(shù)配置和推理調(diào)用多線程架構(gòu)視頻和攝像頭檢測采用QThread異步處理檢測線程與 UI 線程分離保證界面流暢歷史記錄持久化使用 SQLite 存儲(chǔ)每次檢測的結(jié)果支持按類型篩選和關(guān)鍵詞搜索訓(xùn)練結(jié)果可視化讀取results.csv使用 Matplotlib 繪制多維度分析圖表嵌入 PyQt6 界面訓(xùn)練參數(shù)參數(shù)值說明基礎(chǔ)模型yolov8n.ptCOCO 預(yù)訓(xùn)練 Nano 版本訓(xùn)練輪次100 epochs—批次大小16—輸入尺寸640×640—初始學(xué)習(xí)率0.01lr0最終學(xué)習(xí)率0.01 × lrf 0.0001線性衰減至 lr0×lrfWarmup 輪次3.0—優(yōu)化器autoSGD—?jiǎng)恿?.937—權(quán)重衰減0.0005—Box Loss 權(quán)重7.5—Cls Loss 權(quán)重0.5—DFL Loss 權(quán)重1.5—IoU 閾值NMS0.7—混合精度AMP 開啟—Mosaic 增強(qiáng)1.0后 10 epoch 關(guān)閉—水平翻轉(zhuǎn)0.5—HSV 色調(diào)擾動(dòng)0.015—HSV 飽和度擾動(dòng)0.7—隨機(jī)縮放0.5—自動(dòng)增強(qiáng)randaugment—隨機(jī)擦除0.4—總訓(xùn)練時(shí)長≈ 2.54 小時(shí)9,161 秒訓(xùn)練指標(biāo)與結(jié)果核心指標(biāo)基于驗(yàn)證集指標(biāo)最優(yōu)值Best Epoch最終值Epoch 100mAP0.50.6991Epoch 810.6971mAP0.5:0.950.5954Epoch 890.5981Precision0.7997Epoch 530.7564Recall0.6455Epoch 660.6270F1 Score≈ 0.714≈ 0.681損失曲線趨勢損失項(xiàng)初始值Epoch 1最終值Epoch 100說明train/box_loss0.7600.419邊界框回歸損失下降 ≈ 45%train/cls_loss3.8710.562分類損失下降 ≈ 85.5%train/dfl_loss1.2941.032分布焦點(diǎn)損失val/box_loss0.8930.599驗(yàn)證集邊界框損失val/cls_loss2.7171.090驗(yàn)證集分類損失訓(xùn)練集與驗(yàn)證集損失同步下降無明顯過擬合現(xiàn)象模型具備良好的泛化能力??梢暬瘓D表說明系統(tǒng)內(nèi)置兩套可視化工具指標(biāo)展示頁內(nèi)置圖表圖表名稱含義訓(xùn)練/驗(yàn)證 Box Loss模型預(yù)測邊界框與真實(shí)框之間的位置偏差值越低說明定位越準(zhǔn)確訓(xùn)練/驗(yàn)證 Cls Loss類別分類的交叉熵?fù)p失值越低說明分類越準(zhǔn)確訓(xùn)練/驗(yàn)證 DFL Loss分布焦點(diǎn)損失輔助邊界框精細(xì)化回歸mAP0.5** 曲線**IoU 閾值為 0.5 時(shí)的平均精度均值衡量整體檢測性能mAP0.5:0.95 曲線在多個(gè) IoU 閾值0.5~0.95下的綜合性能要求更嚴(yán)格Precision 曲線精確率 正確檢測數(shù) / 總預(yù)測數(shù)反映誤報(bào)率Recall 曲線召回率 正確檢測數(shù) / 真實(shí)目標(biāo)數(shù)反映漏報(bào)率F1 分?jǐn)?shù)曲線Precision 與 Recall 的調(diào)和平均綜合衡量兩者均衡性學(xué)習(xí)率衰減曲線展示 Warmup → 線性衰減的學(xué)習(xí)率變化過程綜合性能雷達(dá)圖將 mAP、Precision、Recall、F1、損失收斂度等多維指標(biāo)以雷達(dá)形式可視化各指標(biāo)對比柱狀圖匯總最優(yōu) epoch 的四項(xiàng)核心指標(biāo)便于橫向比較獨(dú)立可視化腳本plot_results.py運(yùn)行python plot_results.py后自動(dòng)為每個(gè)訓(xùn)練指標(biāo)生成獨(dú)立 PNG 圖片保存至runs/detect/train/charts/包含最優(yōu)值標(biāo)注。系統(tǒng)功能 登錄注冊用戶名 密碼登錄支持注冊新賬號賬號信息持久化存儲(chǔ)于users.json? 圖片識別支持點(diǎn)擊打開或拖拽導(dǎo)入圖片JPG / PNG / BMP / WebP一鍵開始檢測實(shí)時(shí)展示標(biāo)注結(jié)果圖統(tǒng)計(jì)摘要總檢測數(shù)、類別數(shù)、平均 / 最高置信度類別分布表、詳細(xì)檢測數(shù)據(jù)表坐標(biāo) 置信度置信度直方圖分布支持導(dǎo)出標(biāo)注圖片、導(dǎo)出 CSV 結(jié)果文件 視頻識別打開本地視頻文件按幀間隔檢測實(shí)時(shí)展示帶標(biāo)注的視頻幀當(dāng)前幀 / 累計(jì)檢測統(tǒng)計(jì)可隨時(shí)停止檢測 攝像頭識別支持多路攝像頭切換索引 0~10檢測開關(guān)分離可僅預(yù)覽不檢測實(shí)時(shí)統(tǒng)計(jì)目標(biāo)數(shù)量、類別、置信度一鍵截圖保存會(huì)話結(jié)果寫入歷史 檢測歷史圖片 / 視頻 / 攝像頭檢測記錄自動(dòng)入庫SQLite支持按檢測類型篩選、關(guān)鍵詞搜索點(diǎn)擊記錄查看完整詳情支持導(dǎo)出歷史 CSV、一鍵清空?? 模型管理自動(dòng)加載默認(rèn)權(quán)重runs/detect/train/weights/best.pt支持手動(dòng)瀏覽指定任意.pt / .onnx模型文件可視化調(diào)節(jié)置信度閾值、IoU 閾值、最大檢測數(shù)展示模型信息與 44 類別說明 指標(biāo)展示訓(xùn)練曲線損失、mAP、Precision、Recall 全程變化指標(biāo)匯總核心指標(biāo)大字展示 柱狀對比圖綜合分析7 維雷達(dá)圖 學(xué)習(xí)率曲線 P/R/F1 三線對比技術(shù)棧類別技術(shù) / 庫深度學(xué)習(xí)框架PyTorch目標(biāo)檢測Ultralytics YOLOv8圖像處理OpenCVcv2數(shù)值計(jì)算NumPy可視化MatplotlibQtAgg 后端桌面 UIPyQt6數(shù)據(jù)庫SQLite3Python 內(nèi)置開發(fā)語言Python 3.9項(xiàng)目結(jié)構(gòu)垃圾分類檢測/ ├── main.py # 程序入口 ├── plot_results.py # 獨(dú)立指標(biāo)可視化腳本 ├── requirements.txt # 依賴清單 ├── users.json # 用戶賬號自動(dòng)生成 ├── detection_history.db # 檢測歷史數(shù)據(jù)庫自動(dòng)生成 │ ├── datasets/ # 數(shù)據(jù)集 │ ├── images/ │ │ ├── train/ # 訓(xùn)練圖片10,319 張 │ │ ├── val/ # 驗(yàn)證圖片1,478 張 │ │ └── test/ # 測試圖片2,964 張 │ ├── labels/ │ │ ├── train/ # 訓(xùn)練標(biāo)注YOLO TXT │ │ ├── val/ │ │ └── test/ │ ├── garbage.yaml # YOLO 訓(xùn)練配置 │ ├── classify_rule.json # 細(xì)類 → 大類映射規(guī)則 │ ├── train_classes.txt # 44 類名稱列表 │ └── README.md # 數(shù)據(jù)集說明 │ ├── runs/ │ └── detect/ │ └── train/ │ ├── weights/ │ │ ├── best.pt # 最優(yōu)模型權(quán)重系統(tǒng)默認(rèn)加載 │ │ └── last.pt # 最終輪次權(quán)重 │ ├── results.csv # 訓(xùn)練指標(biāo)日志100 輪 │ ├── args.yaml # 訓(xùn)練參數(shù)記錄 │ └── charts/ # plot_results.py 輸出圖表 │ ├── utils/ # 工具層 │ ├── styles.py # 全局 QSS 樣式 │ ├── db.py # SQLite 歷史數(shù)據(jù)庫操作 │ └── detector.py # YOLO 檢測器封裝 │ └── ui/ # 界面層 ├── widgets.py # 共享組件卡片、統(tǒng)計(jì)塊、標(biāo)題 ├── login_window.py # 登錄 / 注冊窗口 ├── main_window.py # 主窗口頂部導(dǎo)航欄 └── pages/ ├── image_page.py # 圖片識別頁 ├── video_page.py # 視頻識別頁 ├── camera_page.py # 攝像頭識別頁 ├── history_page.py # 檢測歷史頁 ├── model_page.py # 模型管理頁 └── metrics_page.py # 指標(biāo)展示頁啟動(dòng)教程環(huán)境準(zhǔn)備Python 版本要求Python 3.9安裝所有依賴pipinstall-rrequirements.txt如需 GPU 加速推理請?zhí)崆鞍惭b與 CUDA 版本匹配的 PyTorch詳見 pytorch.org準(zhǔn)備模型權(quán)重將訓(xùn)練好的模型權(quán)重放置于runs/detect/train/weights/best.pt系統(tǒng)啟動(dòng)時(shí)將自動(dòng)加載該路徑的權(quán)重。也可以在運(yùn)行后于「模型管理」頁面手動(dòng)指定其他權(quán)重文件。啟動(dòng)系統(tǒng)在項(xiàng)目根目錄執(zhí)行python main.py登錄界面默認(rèn)賬號賬號密碼adminadmin123重新訓(xùn)練模型可選如需在自有數(shù)據(jù)集上重新訓(xùn)練在項(xiàng)目根目錄執(zhí)行yolo traindatadatasets/garbage.yamlmodelyolov8n.ptepochs100imgsz640batch16訓(xùn)練完成后將新權(quán)重路徑在「模型管理」頁面重新加載即可。生成獨(dú)立指標(biāo)圖表python plot_results.py圖表將保存至runs/detect/train/charts/每個(gè)指標(biāo)對應(yīng)一張 PNG 文件。本項(xiàng)目為個(gè)人原創(chuàng)結(jié)構(gòu)清晰功能完整適合計(jì)算機(jī)視覺方向課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)和項(xiàng)目演示使用。有定制化需求可以評論或私信作者。作者原創(chuàng)項(xiàng)目地址michael-jay.pages.dev/projects.html