当前位置: 首页 > article >正文

深度学习基于YOLOV11罂粟识别检测系统 YOLOV11框架如何训练无人机罂粟识别检测数据集 航拍罂粟数据集的训练及应用

深度学习基于YOLOV11罂粟识别检测系统 YOLOV11框架如何训练无人机罂粟识别检测数据集 航拍罂粟数据集的训练及应用1以下是构建该系统的详细步骤和完整代码。第一步环境准备首先你需要安装最新的 Ultralytics 库支持 YOLOv11以及处理图像和界面的库。pipinstallultralytics opencv-python pandas PySide6 lxml第二步数据集预处理 (XML 转 YOLO)3160 张 XML 格式。转换为 YOLO 训练所需的.txt格式并划分训练集和验证集。脚本convert_data.pyimportosimportxml.etree.ElementTreeasETfromsklearn.model_selectionimporttrain_test_splitimportshutil# 配置路径XML_DIRdataset/xmls# 存放xml文件的文件夹IMAGE_DIRdataset/images# 存放图片文件的文件夹OUTPUT_DIRdataset/yolo# 输出转换后txt的文件夹CLASSES[poppy]# 类别列表这里只有罂粟os.makedirs(os.path.join(OUTPUT_DIR,labels,train),exist_okTrue)os.makedirs(os.path.join(OUTPUT_DIR,labels,val),exist_okTrue)os.makedirs(os.path.join(OUTPUT_DIR,images,train),exist_okTrue)os.makedirs(os.path.join(OUTPUT_DIR,images,val),exist_okTrue)defconvert(size,box):dw1./size[0]dh1./size[1]x(box[0]box[1])/2.0-1y(box[2]box[3])/2.0-1wbox[1]-box[0]hbox[3]-box[2]x*dw w*dw y*dh h*dhreturn(x,y,w,h)defconvert_annotation(xml_id):in_fileopen(os.path.join(XML_DIR,f{xml_id}.xml),encodingutf-8)out_fileopen(os.path.join(OUTPUT_DIR,labels,temp,f{xml_id}.txt),w,encodingutf-8)treeET.parse(in_file)roottree.getroot()sizeroot.find(size)wint(size.find(width).text)hint(size.find(height).text)forobjinroot.iter(object):difficultobj.find(difficult).text clsobj.find(name).textifclsnotinCLASSESorint(difficult)1:continuecls_idCLASSES.index(cls)xmlboxobj.find(bndbox)b(float(xmlbox.find(xmin).text),float(xmlbox.find(xmax).text),float(xmlbox.find(ymin).text),float(xmlbox.find(ymax).text))bbconvert((w,h),b)out_file.write(str(cls_id) .join([str(a)forainbb])\n)# 1. 转换所有XMLos.makedirs(os.path.join(OUTPUT_DIR,labels,temp),exist_okTrue)xml_files[os.path.splitext(f)[0]forfinos.listdir(XML_DIR)iff.endswith(.xml)]print(f正在转换{len(xml_files)}个标注文件...)forxml_idinxml_files:convert_annotation(xml_id)# 2. 划分训练集和验证集 (80% 训练, 20% 验证)train_files,val_filestrain_test_split(xml_files,test_size0.2,random_state42)defmove_files(file_list,img_set):forfile_idinfile_list:# 移动图片src_imgos.path.join(IMAGE_DIR,f{file_id}.jpg)# 假设图片是jpg格式dst_imgos.path.join(OUTPUT_DIR,images,img_set,f{file_id}.jpg)ifos.path.exists(src_img):shutil.copy(src_img,dst_img)# 移动标签src_lblos.path.join(OUTPUT_DIR,labels,temp,f{file_id}.txt)dst_lblos.path.join(OUTPUT_DIR,labels,img_set,f{file_id}.txt)ifos.path.exists(src_lbl):shutil.copy(src_lbl,dst_lbl)move_files(train_files,train)move_files(val_files,val)# 3. 生成 data.yaml 供 YOLO 使用yaml_contentf path:{os.path.abspath(OUTPUT_DIR)}train: images/train val: images/val names: 0: poppy withopen(poppy_data.yaml,w)asf:f.write(yaml_content)print(数据预处理完成请检查 poppy_data.yaml)第三步训练 YOLOv11 模型数据处理完成后使用以下代码进行模型训练。脚本train.pyfromultralyticsimportYOLOdeftrain_model():# 加载 YOLOv11 预训练模型 (你可以选择 n, s, m, l, x 不同大小)# 这里使用 yolov11s.pt 作为平衡点modelYOLO(yolov11s.pt)# 开始训练resultsmodel.train(datapoppy_data.yaml,# 上一步生成的配置文件epochs100,# 训练轮数imgsz640,# 输入图像大小batch16,# 批大小根据显存调整namepoppy_v11_exp,# 实验名称device0# 使用 GPU (0号显卡)如果没有GPU则设为 cpu)if__name____main__:train_model()第四步构建可视化系统 (PySide6)这是最终用户看到的界面模仿了你提供的截图。它包含文件导入、摄像头检测、结果显示和表格列表。脚本app.pyimportsysimportcv2importtimeimporttorchimportpandasaspdfromPySide6.QtWidgetsimport(QApplication,QMainWindow,QWidget,QVBoxLayout,QHBoxLayout,QLabel,QPushButton,QTableWidget,QTableWidgetItem,QHeaderView,QFileDialog,QMessageBox)fromPySide6.QtGuiimportQPixmap,QImage,QFontfromPySide6.QtCoreimportQt,QThread,Signal,QTimer# 加载训练好的模型 (确保路径正确)# 训练完成后权重通常在 runs/detect/poppy_v11_exp/weights/best.ptMODEL_PATHruns/detect/poppy_v11_exp/weights/best.ptmodelYOLO(MODEL_PATH)classVideoThread(QThread):change_pixmap_signalSignal(np.ndarray)update_stats_signalSignal(int,float)# 数量, 耗时def__init__(self):super().__init__()self._run_flagTrueself.source0# 默认摄像头defrun(self):capcv2.VideoCapture(self.source)whileself._run_flag:ret,cv_imgcap.read()ifret:# YOLO 推理start_timetime.time()resultsmodel(cv_img)[0]infer_timetime.time()-start_time# 绘制结果annotated_frameresults.plot()# 统计数量countlen(results.boxes)self.change_pixmap_signal.emit(annotated_frame)self.update_stats_signal.emit(count,infer_time)else:breakcap.release()defstop(self):self._run_flagFalseself.wait()class罂粟识别系统(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(罂粟无人机识别系统)self.setGeometry(100,100,1200,800)self.init_ui()self.threadNonedefinit_ui(self):# 主布局central_widgetQWidget()self.setCentralWidget(central_widget)main_layoutQHBoxLayout(central_widget)# 左侧视频显示区left_layoutQVBoxLayout()self.image_labelQLabel(请点击右侧开启摄像头或导入视频)self.image_label.setAlignment(Qt.AlignCenter)self.image_label.setFixedSize(800,600)self.image_label.setStyleSheet(background-color: #222; color: white;)left_layout.addWidget(self.image_label)# 右侧控制面板right_layoutQVBoxLayout()right_layout.setAlignment(Qt.AlignTop)# 标题titleQLabel(检测控制面板)title.setFont(QFont(Microsoft YaHei,16,QFont.Bold))right_layout.addWidget(title)# 按钮组self.btn_videoQPushButton( 摄像头开启)self.btn_video.clicked.connect(self.toggle_camera)right_layout.addWidget(self.btn_video)self.btn_fileQPushButton( 导入视频文件)self.btn_file.clicked.connect(self.load_video)right_layout.addWidget(self.btn_file)# 统计信息self.lbl_countQLabel(检测数量: 0)self.lbl_timeQLabel(推理耗时: 0.00s)right_layout.addWidget(self.lbl_count)right_layout.addWidget(self.lbl_time)# 表格self.tableQTableWidget()self.table.setColumnCount(4)self.table.setHorizontalHeaderLabels([序号,类别,置信度,坐标])self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)right_layout.addWidget(self.table)main_layout.addLayout(left_layout)main_layout.addLayout(right_layout)deftoggle_camera(self):ifself.threadisNone:self.threadVideoThread()self.thread.change_pixmap_signal.connect(self.update_image)self.thread.update_stats_signal.connect(self.update_info)self.thread.start()self.btn_video.setText(⏹️ 停止检测)else:self.thread.stop()self.threadNoneself.btn_video.setText( 摄像头开启)self.image_label.clear()self.image_label.setText(已停止)defload_video(self):# 这里仅演示摄像头视频文件逻辑类似只需在 Thread 中传入文件路径QMessageBox.information(self,提示,此功能逻辑与摄像头相同请选择文件路径传入 VideoThread)defupdate_image(self,cv_img):将 OpenCV 图像转换为 Qt 图像并显示rgb_imagecv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB)h,w,chrgb_image.shape bytes_per_linech*w convert_to_Qt_formatQImage(rgb_image.data,w,h,bytes_per_line,QImage.Format_RGB888)pconvert_to_Qt_format.scaled(800,600,Qt.KeepAspectRatio)self.image_label.setPixmap(QPixmap.fromImage(p))defupdate_info(self,count,infer_time):self.lbl_count.setText(f检测数量:{count})self.lbl_time.setText(f推理耗时:{infer_time:.3f}s)# 简单的表格更新逻辑实际项目中建议传入详细结果列表# 这里仅做演示每次清空重填self.table.setRowCount(count)# 注意这里需要修改 Thread 将 results.boxes.data 传出来才能填充具体表格if__name____main__:appQApplication(sys.argv)window罂粟识别系统()window.show()sys.exit(app.exec())系统运行流程准备数据将你的 3160 张图片放入dataset/imagesXML 文件放入dataset/xmls。转换数据运行python convert_data.py生成 YOLO 格式数据。训练模型运行python train.py等待训练完成获得best.pt权重文件。运行系统修改app.py中的MODEL_PATH指向你的权重文件然后运行python app.py。功能需求支持实时检测、显示置信度、坐标以及统计数量。

相关文章:

深度学习基于YOLOV11罂粟识别检测系统 YOLOV11框架如何训练无人机罂粟识别检测数据集 航拍罂粟数据集的训练及应用

深度学习基于YOLOV11罂粟识别检测系统 YOLOV11框架如何训练无人机罂粟识别检测数据集 航拍罂粟数据集的训练及应用 1以下是构建该系统的详细步骤和完整代码。第一步:环境准备 首先,你需要安装最新的 Ultralytics 库(支持 YOLOv11&#xff09…...

Rust 内存分配与所有权管理

Rust 内存分配与所有权管理:安全与性能的完美平衡 在编程语言的世界中,内存管理一直是开发者面临的核心挑战之一。传统语言如 C/C 依赖手动管理内存,容易引发内存泄漏或悬垂指针;而 Java 等语言采用垃圾回收机制(GC&a…...

为什么你的微信聊天记录值得永久珍藏?探索WeChatMsg的深度解析

为什么你的微信聊天记录值得永久珍藏?探索WeChatMsg的深度解析 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...

3分钟快速上手:WorkshopDL终极跨平台Steam创意工坊下载器完全指南

3分钟快速上手:WorkshopDL终极跨平台Steam创意工坊下载器完全指南 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否拥有Epic或GOG平台的游戏,却眼馋…...

安卓加固被破解怎么办?揭秘性能下降与源码泄露风险的真实原因

在选择安卓加固服务时,企业决策者最担心的几个问题往往是:花了钱,方案会不会很快被绕过?加固后,APP会不会变得又卡又慢甚至崩溃?把源码上传到云端加固,数据安全如何保障?这些并非杞人…...

GitLab Graph图实战:从分支合并到问题追踪(持续更新)

1. GitLab Graph图功能入门指南 刚接触GitLab的开发者可能对这个内置的Graph图功能感到陌生。简单来说,它就像是你代码仓库的"时光机",能够用可视化的方式展示所有分支、提交和合并的历史轨迹。我第一次使用这个功能时,发现它比传统…...

毕业季论文双重“安检”:如何用自研大模型实现降重与AI痕迹同步消除?

一次处理,双重保障,让您的论文在传统查重与AI检测中安全过关。 2025年的毕业季,图书馆的灯光依旧通宵达旦,但学生电脑屏幕上闪烁的不再只是Word文档和知网页面。一项调查显示,超过67%的毕业生在论文写作中使用了AI辅助…...

告别熬夜与焦虑:AI辅助下的毕业论文全周期指南

深夜,宿舍灯还亮着,键盘敲击声里夹杂着叹息——这或许是许多毕业季学子共同的记忆。面对开题、查重、数据分析、答辩等一系列任务,你是否也曾在文献海洋中迷失,在重复率红线前焦虑? 夜深了,宿舍的灯还亮着。…...

毕业季求生指南:如何用AI告别论文写作的“至暗时刻”?

凌晨三点的图书馆,咖啡杯堆成小山,屏幕前双眼通红的你还在为第三章的实验数据发愁——这或许是许多人学生时代最深刻的记忆。而今天,一个名叫“百考通AI”的工具正在悄然改变这一切。 深夜十二点,计算机专业的李明仍在实验室里对着…...

毕业季求生指南:AI如何重塑你的论文写作全流程

论文不是靠灵感涌现,而是一套可拆解、可优化的系统工程 深夜两点,图书馆的灯光下,键盘敲击声与偶尔的叹息交织。眼前的文档已经打开六小时,字数统计仍然停留在三位数。这是每年数百万毕业生共同经历的困境——毕业论文&#xff0c…...

毕业季求生指南:如何用智能工具搞定论文全流程?百考通AI深度体验

又到一年毕业季,图书馆的灯光彻夜长明,键盘敲击声与无声的焦虑交织。你是否也正在为堆砌如山的文献、难以降低的查重率、晦涩的数据分析,或是严苛的期刊投稿格式而焦头烂额?从开题到答辩,论文写作堪称一场对心力、脑力…...

Loop窗口管理工具终极指南:3分钟掌握macOS高效工作流

Loop窗口管理工具终极指南:3分钟掌握macOS高效工作流 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 如果你正在寻找一款能够彻底改变macOS窗口管理体验的开源免费工具,那么Loop…...

终极Rufus使用指南:从零开始创建可启动USB的完整教程

终极Rufus使用指南:从零开始创建可启动USB的完整教程 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus Rufus是一款功能强大的USB格式化工具,专为创建可启动USB驱动器而设计…...

MediaCrawler:多平台数据采集引擎的技术架构与实战应用

MediaCrawler:多平台数据采集引擎的技术架构与实战应用 【免费下载链接】MediaCrawler-new 项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new MediaCrawler是一款面向企业级应用的多平台数据采集解决方案,通过创新的浏览器上…...

3分钟解锁网易云音乐NCM文件:ncmdumpGUI完整使用指南

3分钟解锁网易云音乐NCM文件:ncmdumpGUI完整使用指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 对于网易云音乐用户来说,NCM格式文…...

别让AI代码,变成明天的技术债此

如果有多个供应商,你也可以使用 [[CC-Switch]] 来可视化管理这些API key,以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...

3步精通ImStudio:Dear ImGui开发者的实时布局设计神器

3步精通ImStudio:Dear ImGui开发者的实时布局设计神器 【免费下载链接】ImStudio GUI layout designer for Dear ImGui 项目地址: https://gitcode.com/gh_mirrors/im/ImStudio ImStudio是一款专为Dear ImGui框架设计的实时GUI布局创建与编辑工具&#xff0c…...

5分钟快速上手:使用Buzz实现高效离线音频转录与翻译的完整指南

5分钟快速上手:使用Buzz实现高效离线音频转录与翻译的完整指南 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 你…...

前端表单安全兵法:一个 textarea、一个 select,也能被黑?这份避坑指南请收好

多行文本域 textarea 和下拉框 select 看起来平平无奇,却是前端表单里最容易被攻击、最容易出事故的两个点。 本文从实战的角度讲清楚:怎么写、哪里坑、如何防注入、防越权,并送上可跑的代码与运行结果。 面向开发和测试同学,强烈建议收藏转发。 一、textarea 的正确打开方…...

Python @overload 装饰器深度解析

一、引言:Python中的"伪重载"机制 在传统静态类型语言如Java、C中,函数重载(Function Overloading)是指允许定义多个同名函数,通过参数的数量、类型或顺序区分调用方式,实现不同输入对应不同处理…...

终极指南:5分钟掌握H5P互动视频制作技巧 [特殊字符]

终极指南:5分钟掌握H5P互动视频制作技巧 🎬 【免费下载链接】h5p-interactive-video 项目地址: https://gitcode.com/gh_mirrors/h5/h5p-interactive-video 想要让枯燥的教学视频变得生动有趣吗?H5P互动视频项目正是您需要的解决方案…...

大卫小东(Sheldon)艺

Issue 概述 先来看看提交这个 Issue 的作者是为什么想到这个点子的,以及他初步的核心设计概念。?? 本 PR 实现了 Apache Gravitino 与 SeaTunnel 的集成,将其作为非关系型连接器的外部元数据服务。通过 Gravitino 的 REST API 自动获取表结构和元数据&…...

LaTeX文档编写的AI助手:集成Qwen3-0.6B-FP8自动生成与校对技术文档

LaTeX文档编写的AI助手:集成Qwen3-0.6B-FP8自动生成与校对技术文档 写技术文档,尤其是用LaTeX来写,对很多人来说是个又爱又恨的活儿。爱的是它排版精美,学术范儿十足;恨的是那些复杂的语法、繁琐的公式代码&#xff0…...

集成AI 的 Redis 客户端 Rudist发布新版了诩

Qt是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...

WuliArt Qwen-Image Turbo快速体验:输入提示词,几秒获得1024高清大作

WuliArt Qwen-Image Turbo快速体验:输入提示词,几秒获得1024高清大作 1. 引言:从想法到画面的极速通道 你有没有过这样的经历?脑子里突然冒出一个绝妙的画面,想把它变成一张图片,结果要么被复杂的AI绘画工…...

如何在ComfyUI中实现专业级AI动作迁移:从零开始的完整指南

如何在ComfyUI中实现专业级AI动作迁移:从零开始的完整指南 【免费下载链接】ComfyUI-MimicMotionWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-MimicMotionWrapper 想要让静态图片中的人物"动起来"吗?想为你的虚拟角…...

微信小程序集成实时口罩检测:前端+云开发全栈方案

微信小程序集成实时口罩检测:前端云开发全栈方案 1. 引言 你有没有遇到过这样的场景:商场入口需要人工检查口罩佩戴情况,效率低下还容易漏检;企业办公区需要确保员工规范佩戴口罩,但人工巡查成本太高;学校…...

OpCore-Simplify革命性指南:5步智能配置黑苹果的完整方案

OpCore-Simplify革命性指南:5步智能配置黑苹果的完整方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置而头疼…...

Windows下通过MSYS2快速部署CMake与MinGW开发环境

1. 为什么选择MSYS2搭建开发环境 在Windows下开发C/C项目时,环境配置往往是第一个拦路虎。传统方法需要单独安装MinGW、CMake等工具,手动配置环境变量,过程繁琐且容易出错。而MSYS2提供了一个开箱即用的解决方案,它集成了Pacman包…...

南北阁Nanbeige 4.1-3B入门必看:纯本地运行、无网依赖、4GB显存友好部署指南

南北阁Nanbeige 4.1-3B入门必看:纯本地运行、无网依赖、4GB显存友好部署指南 想体验一个能流畅对话、还能“看见”它思考过程的AI助手吗?今天要介绍的南北阁Nanbeige 4.1-3B,就是一个让你在普通电脑上就能跑起来的国产小模型。它只有30亿参数…...