基於YOLOv8的可回收瓶類垃圾快速識別與自動化分揀|完整源碼數據集+PyQt5界面+完整訓練流程+開箱即用!
源碼包含:完整YOLOv8訓練代碼+數據集(帶標註)+權重文件+直接可允許檢測的yolo檢測程序+直接部署教程/訓練教程‘
源碼在文末嗶哩嗶哩視頻簡介處獲取。
本系統支持在多種場景下進行實時瓶類識別與分類:
• 圖片識別
• 文件夾批量檢測
• 視頻流檢測
• 攝像頭實時檢測
• 支持模型切換與置信度可調
• 可用於流水線自動分揀、機械臂抓取等部署場景
支持一鍵運行:運行後即可看到實時識別框與分類名稱、置信度顯示,同時可進行截圖保存與檢測數據輸出。
可檢測一下瓶子
# 類別名稱(中文版本)
names: [
'藍色瓶子',
'綠色瓶子',
'深色瓶子',
'牛奶瓶',
'透明瓶子',
'多彩瓶子',
'酸奶瓶',
'食用油瓶',
'易拉罐',
'果汁紙盒',
'牛奶紙盒',
'彩色洗滌劑瓶',
'透明洗滌劑瓶',
'洗滌劑紙盒',
'大桶/油壺',
'藍色瓶子-滿',
'透明瓶子-滿',
'深色瓶子-滿',
'綠色瓶子-滿',
'多彩瓶子-滿',
'牛奶瓶-滿',
'食用油瓶-滿',
'白色洗滌劑瓶',
'藍色5L瓶',
'藍色5L瓶-滿',
'透明玻璃瓶',
'深色玻璃瓶',
'綠色玻璃瓶'
]
項目摘要
本項目圍繞可回收物智能分揀領域展開,結合 YOLOv8 目標檢測算法 與 PyQt5 圖形化界面,實現了瓶類垃圾的自動識別與分類。
項目提供了可直接使用的預訓練模型,識別精度高,且具備良好的速度表現,可用於:
- 社區/園區垃圾分類回收站
- 環衞垃圾中轉站自動回收設備
- 產線瓶類包裝檢測和自動分揀設備
- 輕量級嵌入式邊緣設備(如 Jetson / 工控機)
系統開箱即用,適合科研學習與工程落地兩類場景。
前言
隨着可回收垃圾分類政策在各地落地,瓶類垃圾作為回收價值較高的一類,在實際分類中佔比極大。但人工分揀存在效率低、成本高、工作環境惡劣等問題。
而瓶類種類繁多,外觀近似,傳統規則算法無法處理“同形不同材質 / 同形不同裝液狀態”的情況。
因此,基於深度學習的視覺識別成為行業主流方案。
本項目從 數據構建 → 模型訓練 → GUI應用部署 全鏈路進行實現,具有較強可複用性和可擴展性。
一、軟件核心功能介紹及效果演示
本系統主要提供以下功能:
| 模塊 | 功能説明 |
|---|---|
| YOLOv8識別引擎 | 支持圖片、視頻、攝像頭、批量文件識別 |
| PyQt5圖形界面 | 無需命令行,一鍵加載模型與開始檢測 |
| 模型訓練模塊 | 支持自定義數據繼續訓練 / 再訓練 / 類別增補 |
| 可視化輸出 | 顯示檢測框、標籤與置信度,支持截圖保存 |
| 設備部署 | 支持 Windows / Linux / Jetson / 工控機 |
二、軟件效果演示
為了直觀展示本系統基於 YOLOv8 模型的檢測能力,我們設計了多種操作場景,涵蓋靜態圖片、批量圖片、視頻以及實時攝像頭流的檢測演示。
(1)單圖片檢測演示
用户點擊“選擇圖片”,即可加載本地圖像並執行檢測:
(2)多文件夾圖片檢測演示
用户可選擇包含多張圖像的文件夾,系統會批量檢測並生成結果圖。
(3)視頻檢測演示
支持上傳視頻文件,系統會逐幀處理並生成目標檢測結果,可選保存輸出視頻:
(4)攝像頭檢測演示
實時檢測是系統中的核心應用之一,系統可直接調用攝像頭進行檢測。由於原理和視頻檢測相同,就不重複演示了。
(5)保存圖片與視頻檢測結果
用户可通過按鈕勾選是否保存檢測結果,所有檢測圖像自動加框標註並保存至指定文件夾,支持後續數據分析與複審。
三、模型的訓練、評估與推理
YOLOv8是Ultralytics公司發佈的新一代目標檢測模型,採用更輕量的架構、更先進的損失函數(如CIoU、TaskAlignedAssigner)與Anchor-Free策略,在COCO等數據集上表現優異。
其核心優勢如下:
- 高速推理,適合實時檢測任務
- 支持Anchor-Free檢測
- 支持可擴展的Backbone和Neck結構
- 原生支持ONNX導出與部署
3.1 YOLOv8的基本原理
YOLOv8 是 Ultralytics 發佈的新一代實時目標檢測模型,具備如下優勢:
- 速度快:推理速度提升明顯;
- 準確率高:支持 Anchor-Free 架構;
- 支持分類/檢測/分割/姿態多任務;
- 本項目使用 YOLOv8 的 Detection 分支,訓練時每類表情均標註為獨立目標。
YOLOv8 由Ultralytics 於 2023 年 1 月 10 日發佈,在準確性和速度方面具有尖端性能。在以往YOLO 版本的基礎上,YOLOv8 引入了新的功能和優化,使其成為廣泛應用中各種物體檢測任務的理想選擇。
YOLOv8原理圖如下:
3.2 數據集準備與訓練
採用 YOLO 格式的數據集結構如下:
dataset/
├── images/
│ ├── train/
│ └── val/
├── labels/
│ ├── train/
│ └── val/
每張圖像有對應的 .txt 文件,內容格式為:
4 0.5096721233576642 0.352838390077821 0.3947600423357664 0.31825755058365757
分類包括(可自定義):
3.3. 訓練結果評估
訓練完成後,將在 runs/detect/train 目錄生成結果文件,包括:
results.png:損失曲線和 mAP 曲線;weights/best.pt:最佳模型權重;confusion_matrix.png:混淆矩陣分析圖。
若 mAP@0.5 達到 90% 以上,即可用於部署。
在深度學習領域,我們通常通過觀察損失函數下降的曲線來評估模型的訓練狀態。YOLOv8訓練過程中,主要包含三種損失:定位損失(box_loss)、分類損失(cls_loss)和動態特徵損失(dfl_loss)。訓練完成後,相關的訓練記錄和結果文件會保存在runs/目錄下,具體內容如下:
3.4檢測結果識別
使用 PyTorch 推理接口加載模型:
import cv2
from ultralytics import YOLO
import torch
from torch.serialization import safe_globals
from ultralytics.nn.tasks import DetectionModel
# 加入可信模型結構
safe_globals().add(DetectionModel)
# 加載模型並推理
model = YOLO('runs/detect/train/weights/best.pt')
results = model('test.jpg', save=True, conf=0.25)
# 獲取保存後的圖像路徑
# 默認保存到 runs/detect/predict/ 目錄
save_path = results[0].save_dir / results[0].path.name
# 使用 OpenCV 加載並顯示圖像
img = cv2.imread(str(save_path))
cv2.imshow('Detection Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
預測結果包含類別、置信度、邊框座標等信息。
四.YOLOV8+YOLOUI完整源碼打包
本文涉及到的完整全部程序文件:包括python源碼、數據集、訓練代碼、UI文件、測試圖片視頻等(見下圖),獲取方式見【4.2 完整源碼下載】:
4.1 項目開箱即用
作者已將整個工程打包。包含已訓練完成的權重,讀者可不用自行訓練直接運行檢測。
運行項目只需輸入下面命令。
python main.py
讀者也可自行配置訓練集,或使用打包好的數據集直接訓練。
自行訓練項目只需輸入下面命令。
yolo detect train data=datasets/expression/loopy.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 batch=16 lr0=0.001
4.2 完整源碼
至項目實錄視頻下方獲取:
嗶哩嗶哩演示視頻:https://www.bilibili.com/video/BV15JkiBeESd
包含:
📦完整項目源碼
📦 預訓練模型權重
🗂️ 數據集地址(含標註腳本)
總結
本項目基於 YOLOv8 構建了一套可回收瓶類垃圾的實時識別與自動化分揀系統,從數據集構建、模型訓練到 PyQt5 可視化界面部署,形成了完整的工程化閉環。系統能夠對多種瓶類廢棄物進行高精度識別,並支持圖片、視頻、攝像頭流等多場景實時處理,適用於垃圾回收站、環衞中轉站、產線分揀系統等實際應用場景。
通過引入更先進的 YOLOv8 模型,本系統在識別精度、實時性能、可擴展性與部署友好度上均表現優異,同時支持繼續訓練和模型更新,便於後續擴展新的瓶類品種或適配不同環境。隨着垃圾分類和回收體系建設不斷推進,基於視覺識別的瓶類自動分揀方案將在降本增效與綠色環保中發揮更重要的作用。
本項目提供的源碼與完整工程結構可即開即用,適合作為科研課題、畢業設計、智能製造項目落地方案,同時也為後續優化多目標分揀、機械臂抓取控制、邊緣端輕量化部署等方向奠定了良好的基礎。