基於YOLOv8的罌粟檢測識別項目(違法作物巡查檢測)|完整源碼數據集+PyQt5界面+完整訓練流程+開箱即用!
覆蓋不同生長階段、光照條件和拍攝角度,旨在幫助研究者識別植物特徵、開展自動化識別與分類研究。
⚠️ 重要説明:
僅用於科研、教育與植物識別用途,嚴禁用於非法種植、打擊或其他與毒品執法相關的場景。
請遵守相關法律法規,合理、合規地使用數據。
任務目標:識別圖像中的罌粟植物
類別數量(nc):1
0: 罌粟
源碼包含:完整YOLOv8訓練代碼+數據集(帶標註)+權重文件+直接可允許檢測的yolo檢測程序+直接部署教程/訓練教程
源碼在文末嗶哩嗶哩視頻簡介處獲取。
基本功能演示
嗶哩嗶哩: https://www.bilibili.com/video/BV1LtUVBHEZQ
項目摘要
本項目集成了 YOLOv8 XX檢測模型 與 PyQt5 圖形界面工具,實現了包括圖片、文件夾、視頻與攝像頭等多種輸入方式的罌粟植物識別功能。配套完整源碼與訓練流程説明,讓你開箱即用、快速部署自己的罌粟識別系統,源碼打包在文末提供。
主要特點:
- 使用 YOLOv8 進行高效、精準的物體檢測
- 提供 PyQt5 圖形界面,讓操作更加直觀
- 支持多種輸入方式,包括單張圖像、批量圖像、視頻流和實時攝像頭監控
- 完整的訓練流程和部署教程,用户無需擔心技術細節,快速上手
@[toc]
前言
隨着人工智能技術的快速發展,計算機視覺領域也迎來了革命性的突破。YOLO系列作為物體檢測領域的領先技術,因其高效性和實時性,廣泛應用於各種實際場景。本文將詳細介紹如何利用 YOLOv8 進行罌粟植物的檢測,並集成 PyQt5 構建一個用户友好的圖形界面,便於快速部署和使用。
該項目的應用場景廣泛,特別適合農業科研、植物保護與違法作物巡查等任務,能夠為農業科研提供技術支持,協助執法部門打擊非法種植活動。
一、軟件核心功能介紹及效果演示
本項目支持多種輸入方式,能夠滿足不同場景的需求:
- 圖像輸入:適合單張圖像的檢測,用户可以快速查看單個圖像中的檢測結果。
- 文件夾輸入:用户可以批量選擇文件夾,系統會自動檢測文件夾中的所有圖像。
- 視頻輸入:對於長時間的監控任務,視頻輸入提供了更為實用的解決方案。
- 攝像頭輸入:實時監控輸入,適用於現場執法和農業巡查場景。
二、軟件效果演示
為了直觀展示本系統基於 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/BV1LtUVBHEZQ
包含:
📦完整項目源碼
📦 預訓練模型權重
🗂️ 數據集地址(含標註腳本)
總結
基於YOLOv8的罌粟檢測識別項目,結合了先進的物體檢測技術和用户友好的圖形界面,提供了一種高效且直觀的解決方案,適用於農業科研、植物保護及違法作物巡查等領域。通過YOLOv8模型的強大檢測能力,結合PyQt5構建的圖形界面,用户可以輕鬆實現從圖像、視頻到實時攝像頭輸入的罌粟植物自動識別與定位。
主要特點:
- 高效檢測:YOLOv8作為先進的目標檢測算法,能夠快速且準確地識別圖像中的罌粟植物,並且支持多輸入方式(單圖、批量圖、視頻流和實時監控)。
- 簡便操作:PyQt5圖形界面讓操作更加直觀,用户無需編程經驗,通過簡單的界面即可完成檢測任務。
- 開箱即用:提供完整的源碼、數據集、訓練腳本和部署教程,用户只需按照步驟即可快速搭建並部署系統。
- 科研與執法雙重應用:本項目不僅能夠服務於植物識別領域的科研工作,還能為執法人員提供快速檢測工具,有助於打擊非法種植活動。
本項目的成功實施,不僅展示了YOLOv8在農業與執法場景中的強大應用潛力,也為相關領域的科研工作者提供了一個高效、便捷的檢測平台。隨着技術的進一步優化和發展,未來可以通過更多的數據和更精細的模型訓練,提升檢測的精度與泛化能力,使該系統在更復雜環境中的表現更加出色。
通過這套完整的解決方案,用户可以輕鬆實現罌粟植物的檢測與識別,快速部署並投入實際應用。希望本項目能為相關行業帶來技術創新與效率提升,推動智能農業與植物保護領域的發展。