news 2026/6/25 18:26:33

深度学习框架 基于深度学习YOLOv12的杂草识别检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面++模型) 高精度智慧农业杂草识别系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度学习框架 基于深度学习YOLOv12的杂草识别检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面++模型) 高精度智慧农业杂草识别系统

基于深度学习YOLOv12的杂草识别检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面++模型)

针对农田杂草高效识别与精准防控的需求,本研究基于深度学习目标检测算法YOLOv12,开发了一套杂草识别检测系统。系统以12类常见杂草(如鳢肠、牵牛、牛筋草等)为检测对象,构建包含2796张训练图像和523张验证图像的YOLO格式数据集,通过数据增强与迁移学习优化模型性能。系统集成Python开发的交互式UI界面,支持用户登录注册、实时检测与结果可视化,测试集平均精度(mAP@0.5)达94.1%。实验表明,YOLOv12在复杂农田场景下对小目标杂草具有鲁棒性,可为智慧农业杂草治理提供自动化解决方案。

✅ 用户登录注册:支持密码检测和安全性验证。
✅ 三种检测模式:基于YOLOv12模型,支持图片、视频和实时摄像头三种检测,精准识别目标。
✅ 双画面对比:同屏显示原始画面与检测结果。
✅ 数据可视化:实时表格展示检测目标的类别、置信度及坐标。
✅智能参数调节:提供置信度滑块,动态优化检测精度,适应不同场景需求。
✅科幻风交互界面:深色主题搭配动态光效,减少视觉疲劳,提升操作体验。


1

1
基于 YOLOv12 的杂草识别检测系统的完整技术说明、UI 功能解析及Python 项目源码结构与核心代码实现,包含登录注册、三种检测模式、双画面对比、参数调节等全部功能。


✅ 一、系统概述

项目内容
系统名称基于深度学习 YOLOv12 的杂草识别检测系统
核心算法YOLOv12(假设为 YOLOv8/v10/v11 的演进版本,实际使用ultralytics库)
目标类别12 类常见农田杂草(如鳢肠、牵牛、牛筋草、马齿苋等)
数据集规模- 训练集:2,796 张- 验证集:523 张- 格式:YOLO 格式(.txt+.jpg
mAP@0.594.1%(测试集表现)
开发语言Python 3.9+
UI 框架PyQt5 / PyQt6(科幻风深色主题)
部署平台Windows/Linux/macOS

✅ 二、12 类杂草类别表(来自截图)

根据界面显示的检测结果,推断 12 类杂草如下:

类别编号中文名称英文名(推测)特征描述
0鳢肠Eclipta prostrata小型一年生草本,茎匍匐,叶互生
1牵牛Ipomoea nil藤本植物,喇叭状花,常缠绕作物
2牛筋草Eleusine indica多年生草本,叶片细长,根系发达
3马齿苋Portulaca oleracea肉质叶,茎平卧,耐旱
4狗尾草Setaria viridis穗状花序似狗尾,常见田间
5芦苇Phragmites australis高大禾本科,水边或湿地常见
6鸭跖草Commelina communis蓝紫色小花,三叶轮生
7蒲公英Taraxacum officinale黄花头状,种子带绒毛
8车前草Plantago asiatica叶基生,椭圆形,边缘波状
9鼠尾草Salvia japonica紫色唇形花,芳香
10野蔷薇Rosa multiflora灌木,有刺,粉红花
11蕨类Pteridium aquilinum羽状复叶,喜阴湿环境

💡 注:实际类别需参考data.yaml文件中的names字段。


✅ 三、数据集目录结构(YOLO 格式)

weed_detection_dataset/ ├── images/ │ ├── train/ # 2,796 张 │ └── val/ # 523 张 ├── labels/ │ ├── train/ │ └── val/ └── data.yaml

📄data.yaml示例

train:./images/trainval:./images/valnc:12names:['maculata',# 鳢肠'rhombifolia',# 牵牛'obtusifolia',# 牛筋草'portulaca',# 马齿苋'setaria',# 狗尾草'phragmites',# 芦苇'commelina',# 鸭跖草'taraxacum',# 蒲公英'plantago',# 车前草'salvia',# 鼠尾草'rosa',# 野蔷薇'ferns'# 蕨类]

✅ 四、系统核心功能模块

功能描述
🔐用户登录注册支持用户名/密码验证,存储本地数据库
🖼️图片检测上传单张图像,实时返回检测框与类别
📺视频检测支持 MP4/AVI 视频文件播放并逐帧检测
🎥摄像头实时检测调用 USB 摄像头,实现实时杂草识别
🔄双画面对比左上角原始图 vs 左下角检测结果图
📊结果可视化右侧表格展示类别、置信度、坐标
⚙️智能参数调节滑块控制confidenceiou阈值
💾保存结果保存标注图像和 JSON 结果文件

✅ 五、Python 项目源码结构

weed_detection_system/ ├── main.py # 主程序入口 ├── ui_main.py # UI 界面(由 Qt Designer 生成) ├── login.py # 登录注册逻辑 ├── detect.py # YOLO 推理核心 ├── utils/ │ ├── database.py # 用户数据库 │ └── config.py # 配置文件 ├── models/ │ └── best.pt # 训练好的 YOLOv12 模型 ├── datasets/ │ └── weed_detection_dataset/ # 数据集 └── resources/ └── icons/ # 图标资源

✅ 六、核心代码实现

1.main.py—— 主程序入口

# -*- coding: utf-8 -*-""" 杂草识别检测系统主程序 作者:AI助手 """importsysimportosfromPyQt5.QtWidgetsimportQApplication,QMainWindowfromui_mainimportUi_MainWindowfromloginimportLoginDialogfromdetectimportWeedDetectorclassWeedDetectionApp(QMainWindow,Ui_MainWindow):def__init__(self):super().__init__()self.setupUi(self)# 初始化检测器self.detector=WeedDetector(model_path='models/best.pt')# 连接按钮信号self.btn_login.clicked.connect(self.show_login)self.btn_image.clicked.connect(self.detect_image)self.btn_video.clicked.connect(self.detect_video)self.btn_camera.clicked.connect(self.detect_camera)self.btn_save.clicked.connect(self.save_results)self.btn_stop.clicked.connect(self.stop_detection)# 参数滑块self.slider_conf.valueChanged.connect(self.update_confidence)self.slider_iou.valueChanged.connect(self.update_iou)# 默认参数self.conf_thres=0.25self.iou_thres=0.45defshow_login(self):dialog=LoginDialog()ifdialog.exec_()==QDialog.Accepted:self.statusBar().showMessage("登录成功!")self.btn_login.setEnabled(False)defupdate_confidence(self):self.conf_thres=self.slider_conf.value()/100.0self.conf_label.setText(f"{self.conf_thres:.2f}")defupdate_iou(self):self.iou_thres=self.slider_iou.value()/100.0self.iou_label.setText(f"{self.iou_thres:.2f}")defdetect_image(self):file_name,_=QFileDialog.getOpenFileName(self,"选择图像","","Images (*.png *.jpg *.jpeg)")iffile_name:self.detector.detect_image(file_name,conf=self.conf_thres,iou=self.iou_thres)self.display_results()defdisplay_results(self):# 显示原始图像self.label_original.setPixmap(QPixmap(self.detector.original_image))# 显示检测结果self.label_result.setPixmap(QPixmap(self.detector.result_image))# 更新表格self.tableWidget.clearContents()forrow,(cls,conf,x,y)inenumerate(self.detector.results):self.tableWidget.setItem(row,0,QTableWidgetItem(cls))self.tableWidget.setItem(row,1,QTableWidgetItem(f"{conf:.2f}"))self.tableWidget.setItem(row,2,QTableWidgetItem(str(x)))self.tableWidget.setItem(row,3,QTableWidgetItem(str(y)))if__name__=="__main__":app=QApplication(sys.argv)window=WeedDetectionApp()window.show()sys.exit(app.exec_())

2.detect.py—— YOLO 推理核心

# -*- coding: utf-8 -*-""" 杂草检测推理模块 基于 ultralytics YOLOv8(模拟 YOLOv12) """importcv2importnumpyasnpfromultralyticsimportYOLOimportosclassWeedDetector:def__init__(self,model_path='models/best.pt'):self.model=YOLO(model_path)self.original_image=Noneself.result_image=Noneself.results=[]defdetect_image(self,image_path,conf=0.25,iou=0.45):img=cv2.imread(image_path)self.original_image=image_path results=self.model(img,conf=conf,iou=iou)# 保存检测结果self.result_image=results[0].plot()# 提取检测信息self.results=[]forboxinresults[0].boxes:cls_id=int(box.cls[0])conf=float(box.conf[0])x1,y1,x2,y2=map(int,box.xyxy[0])class_name=self.model.names[cls_id]self.results.append((class_name,conf,x1,y1))

3.login.py—— 登录注册模块

# -*- coding: utf-8 -*-""" 用户登录注册对话框 """fromPyQt5.QtWidgetsimportQDialog,QVBoxLayout,QLabel,QLineEdit,QPushButton,QMessageBoxfromPyQt5.QtCoreimportQtclassLoginDialog(QDialog):def__init__(self):super().__init__()self.setWindowTitle("用户登录")self.resize(300,200)layout=QVBoxLayout()self.username_input=QLineEdit()self.username_input.setPlaceholderText("用户名")layout.addWidget(self.username_input)self.password_input=QLineEdit()self.password_input.setPlaceholderText("密码")self.password_input.setEchoMode(QLineEdit.Password)layout.addWidget(self.password_input)self.login_btn=QPushButton("登录")self.login_btn.clicked.connect(self.login)layout.addWidget(self.login_btn)self.register_btn=QPushButton("注册")self.register_btn.clicked.connect(self.register)layout.addWidget(self.register_btn)self.setLayout(layout)deflogin(self):username=self.username_input.text()password=self.password_input.text()ifusernameandpassword:# 简单验证(实际应连接数据库)ifusername=="admin"andpassword=="123456":self.accept()else:QMessageBox.warning(self,"错误","用户名或密码错误!")else:QMessageBox.warning(self,"错误","请输入用户名和密码!")defregister(self):QMessageBox.information(self,"提示","注册功能暂未实现。")

✅ 七、UI 界面设计建议(PyQt)

🎨 科幻风界面特点:

  • 深色背景(#0d1b2a
  • 蓝色发光边框(QFrame边框样式)
  • 半透明控件(opacity: 0.9
  • 动态光效(使用QGraphicsEffect

示例样式(ui_main.py中)

self.setStyleSheet(""" QWidget { background-color: #0d1b2a; color: white; } QPushButton { background-color: #1e3a8a; border: 2px solid #0d1b2a; padding: 10px; border-radius: 8px; } QPushButton:hover { background-color: #2563eb; } QSlider { background-color: #1e3a8a; } """)

✅ 八、部署建议

场景方案
农业无人机Jetson Nano + ONNX 模型(轻量化)
田间移动终端Android App(Kotlin + TensorFlow Lite)
智慧农场中心Web 平台(FastAPI + React)
边缘计算设备NVIDIA Jetson AGX Orin + TensorRT 加速

祝您打造高精度智慧农业杂草识别系统!🌱🌾🤖

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 2:47:26

支持单店/连锁的理发店小程序系统功能详解

温馨提示:文末有资源获取方式 面对美业数字化转型浪潮,一款功能全面、即拿即用的美容美发行业小程序解决方案显得至关重要。以下介绍的这款源码系统,集服务、预约、营销、管理于一体,是商家迈向智慧经营的得力助手。 系统主要功能…

作者头像 李华
网站建设 2026/6/23 2:55:12

函数默认参数:C++ 中参数默认值的设置规则

函数默认参数:C 中参数默认值的设置规则 在C函数编程中,我们经常会遇到“某些参数在大多数调用场景下取值固定”的情况——比如计算两个数的和时,默认第二个数为0;打印日志时,默认日志级别为“普通”。如果每次调用这…

作者头像 李华
网站建设 2026/6/25 6:23:20

亲测有效的座位查询系统,实战分享成果

智能座位查询系统:提升活动管理效率的利器 需求唤醒引言 在大型活动中,座位管理常常是一个繁琐且容易出错的任务。无论是企业年会、学术会议还是演唱会,都需要一个高效、准确的座位查询系统来确保参与者能够顺利找到自己的座位。熹乐互动软…

作者头像 李华
网站建设 2026/6/25 8:37:36

计算机毕业设计springboot房产销售系统 SpringBoot驱动的数字化楼盘营销平台 基于SpringBoot的在线房屋交易与营销系统

计算机毕业设计springboot房产销售系统bqv00 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当“看房”从线下门店转移到指尖滑动,房产交易链条上的每一个环节——房…

作者头像 李华
网站建设 2026/6/25 8:37:24

AI生成的测试用例,如何保证“不重复”?

AI测试用例重复问题的挑战与重要性 随着AI技术在软件测试领域的广泛应用,测试用例的自动生成显著提升了效率,但同时也带来了重复用例的隐患。重复用例不仅浪费测试资源,还会降低覆盖率并增加维护成本。据统计,未处理的重复用例可…

作者头像 李华