核心内容摘要
Jimeng LoRA多场景应用:游戏原画预研、IP形象延展、营销视觉快速试稿
基于深度学习YOLOv12的杂草识别检测系统YOLOv12YOLO数据集UI界面登录注册界面模型针对农田杂草高效识别与精准防控的需求本研究基于深度学习目标检测算法YOLOv12开发了一套杂草识别检测系统。
系统以12类常见杂草如鳢肠、牵牛、牛筋草等为检测对象构建包含2796张训练图像和523张验证图像的YOLO格式数据集通过数据增强与迁移学习优化模型性能。
系统集成Python开发的交互式UI界面支持用户登录注册、实时检测与结果可视化测试集平均精度mAP
5达
9
1%。
实验表明YOLOv12在复杂农田场景下对小目标杂草具有鲁棒性可为智慧农业杂草治理提供自动化解决方案。
✅ 用户登录注册支持密码检测和安全性验证。
✅ 三种检测模式基于YOLOv12模型支持图片、视频和实时摄像头三种检测精准识别目标。
✅ 双画面对比同屏显示原始画面与检测结果。
✅ 数据可视化实时表格展示检测目标的类别、置信度及坐标。
✅智能参数调节提供置信度滑块动态优化检测精度适应不同场景需求。
✅科幻风交互界面深色主题搭配动态光效减少视觉疲劳提升操作体验。
11基于 YOLOv12 的杂草识别检测系统的完整技术说明、UI 功能解析及Python 项目源码结构与核心代码实现包含登录注册、三种检测模式、双画面对比、参数调节等全部功能。
✅
系统概述项目内容系统名称基于深度学习 YOLOv12 的杂草识别检测系统核心算法YOLOv12假设为 YOLOv8/v10/v11 的演进版本实际使用ultralytics库目标类别12 类常见农田杂草如鳢肠、牵牛、牛筋草、马齿苋等数据集规模- 训练集2,796 张- 验证集523 张- 格式YOLO 格式.txt.jpgmAP
0.
5
1%测试集表现开发语言Python
9UI 框架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.yamldata.yaml示例train:./images/trainval:./images/valnc:12names:[maculata,# 鳢肠rhombifolia,# 牵牛obtusifolia,# 牛筋草portulaca,# 马齿苋setaria,# 狗尾草phragmites,# 芦苇commelina,# 鸭跖草taraxacum,# 蒲公英plantago,# 车前草salvia,# 鼠尾草rosa,# 野蔷薇ferns# 蕨类]✅
系统核心功能模块功能描述用户登录注册支持用户名/密码验证存储本地数据库️图片检测上传单张图像实时返回检测框与类别视频检测支持 MP4/AVI 视频文件播放并逐帧检测摄像头实时检测调用 USB 摄像头实现实时杂草识别双画面对比左上角原始图 vs 左下角检测结果图结果可视化右侧表格展示类别、置信度、坐标⚙️智能参数调节滑块控制confidence和iou阈值保存结果保存标注图像和 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/ # 图标资源✅
核心代码实现
main.py—— 主程序入口# -*- coding: utf-8 -*- 杂草识别检测系统主程序 作者AI助手 importsysimportosfromPyQt
QtWidgetsimportQApplication,QMainWindowfromui_mainimportUi_MainWindowfromloginimportLoginDialogfromdetectimportWeedDetectorclassWeedDetectionApp(QMainWindow,Ui_MainWindow):def__init__(self):super().__init__()self.setupUi(self)# 初始化检测器self.detectorWeedDetector(model_pathmodels/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
25self.iou_thres
45defshow_login(self):dialogLoginDialog()ifdialog.exec_()QDialog.Accepted:self.statusBar().showMessage(登录成功)self.btn_login.setEnabled(False)defupdate_confidence(self):self.conf_thresself.slider_conf.value()/
1
0self.conf_label.setText(f{self.conf_thres:.2f})defupdate_iou(self):self.iou_thresself.slider_iou.value()/
1
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,confself.conf_thres,iouself.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__:appQApplication(sys.argv)windowWeedDetectionApp()window.show()sys.exit(app.exec_())
detect.py—— YOLO 推理核心# -*- coding: utf-8 -*- 杂草检测推理模块 基于 ultralytics YOLOv8模拟 YOLOv12 importcv2importnumpyasnpfromultralyticsimportYOLOimportosclassWeedDetector:def__init__(self,model_pathmodels/best.pt):self.modelYOLO(model_path)self.original_imageNoneself.result_imageNoneself.results[]defdetect_image(self,image_path,conf
25,iou
0.
:imgcv
imread(image_path)self.original_imageimage_path resultsself.model(img,confconf,iouiou)# 保存检测结果self.result_imageresults[0].plot()# 提取检测信息self.results[]forboxinresults[0].boxes:cls_idint(box.cls[0])conffloat(box.conf[0])x1,y1,x2,y2map(int,box.xyxy[0])class_nameself.model.names[cls_id]self.results.append((class_name,conf,x1,y
)
login.py—— 登录注册模块# -*- coding: utf-8 -*- 用户登录注册对话框 fromPyQt
QtWidgetsimportQDialog,QVBoxLayout,QLabel,QLineEdit,QPushButton,QMessageBoxfromPyQt
QtCoreimportQtclassLoginDialog(QDialog):def__init__(self):super().__init__()self.setWindowTitle(用户登录)self.resize(300,
layoutQVBoxLayout()self.username_inputQLineEdit()self.username_input.setPlaceholderText(用户名)layout.addWidget(self.username_input)self.password_inputQLineEdit()self.password_input.setPlaceholderText(密码)self.password_input.setEchoMode(QLineEdit.Password)layout.addWidget(self.password_input)self.login_btnQPushButton(登录)self.login_btn.clicked.connect(self.login)layout.addWidget(self.login_btn)self.register_btnQPushButton(注册)self.register_btn.clicked.connect(self.register)layout.addWidget(self.register_btn)self.setLayout(layout)deflogin(self):usernameself.username_input.text()passwordself.password_input.text()ifusernameandpassword:# 简单验证实际应连接数据库ifusernameadminandpassword123456:self.accept()else:QMessageBox.warning(self,错误,用户名或密码错误)else:QMessageBox.warning(self,错误,请输入用户名和密码)defregister(self):QMessageBox.information(self,提示,注册功能暂未实现。
)✅