news 2026/2/5 7:20:41

深度学习框架 基于深度学习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/2/3 12:21:46

救命神器2026最新!9款AI论文写作软件测评:本科生毕业论文必备

救命神器2026最新!9款AI论文写作软件测评:本科生毕业论文必备 2026年AI论文写作工具测评:为何值得一看? 随着人工智能技术的不断进步,AI写作工具在学术领域的应用愈发广泛。对于本科生而言,撰写毕业论文不仅…

作者头像 李华
网站建设 2026/2/3 3:17:17

AI测试用例生成的数据驱动革命:从真实行为到精准覆盖

1. 数据驱动的核心价值重构 传统测试用例设计依赖测试人员经验,难以应对现代系统的复杂性。数据驱动模式通过采集真实用户行为数据(如操作序列、输入分布、异常路径),构建动态测试模型。某电商平台实践显示,采用用户行…

作者头像 李华
网站建设 2026/2/3 8:17:20

2026年8款降AI率工具亲测推荐:知网维普双平台实测通过

2026年8款降AI率工具亲测推荐:知网维普双平台实测通过 67%。 这是知网给我论文的AI检测结果,但那篇论文是我熬了整整一周,查了四十多篇文献,一个字一个字敲出来的。看到这个数字的时候,离答辩只剩五天。 后来我用嘎…

作者头像 李华
网站建设 2026/2/3 18:23:26

程序员必备:3款软著材料生成工具实测,最快30分钟出稿

上个月帮朋友的创业公司申请软著,光是整理60页源代码就花了我一个周末。代码从各个文件复制过来,调格式、加页眉页码、删注释、凑行数,整个人都麻了。 后来发现有专门生成软著材料的工具,30分钟就能搞定我折腾两天的活。试了三款…

作者头像 李华
网站建设 2026/2/3 11:06:05

知网AIGC检测不通过?3招搞定,附避坑清单

知网AIGC检测不通过?3招搞定,附避坑清单 我改了三遍,AI率从45%涨到了62%。 是的,越改越高。因为我用豆包帮忙改写,结果AI改AI,换了种AI味道,知网照样能识别出来。 后来我换了个思路&#xff…

作者头像 李华