基于StyleGAN2-ADA和FNW YOLOv8的玉米害虫智能检测

news2024/11/19 19:58:00

基于StyleGAN2-ADA和FNW YOLOv8的玉米害虫智能检测

刘浏¹, 薛凯¹, 姬琪琪¹,*
¹ 马来西亚吉隆坡泰莱大学应用计算硕士(MAC)

电子邮箱: 0369721@sd.taylors.edu.my

接收日期:2024年8月9日
发布日期:2024年11月14日

Measurement Science and Technology

https://iopscience.iop.org/article/10.1088/1361-6501/ad8cf4

摘要

玉米害虫的早期快速精准检测对于减少作物经济损失至关重要。针对实际生产环境中玉米害虫识别效果差、效率低的问题,本研究提出了一种基于StyleGAN2和FNW YOLOv8方法的玉米害虫智能检测方法。通过StyleGAN2-ADA扩充玉米害虫数据。在特征提取网络中,替换了Fasternet轻量级网络以降低模型复杂性并加速检测。在特征融合网络的后端集成了基于归一化的注意力模块(NAM),以抑制冗余的非显著特征表示。优化损失函数为Wise Intersection of Union v3(WIoU v3)后,引入了FNW YOLOv8算法。研究结果表明,与基线模型相比,该算法在精度和F1评分方面分别提高了3.77%和5.95%。尤其是,FNW YOLOv8模型实现了实时检测速度达289.1 fps。与常规模型相比,FNW YOLOv8模型有效解决了标准模型中存在的冗余权重问题。FNW YOLOv8的参数量被减少至仅1.74百万,模型大小仅为2.36 MB。同时,FNW YOLOv8的GFLOPS运算量显著降低。因此,为保证玉米害虫识别的精度和时效性,建立其在移动设备上的识别和检测的理论基础至关重要。

关键词: 智慧农业、玉米害虫、深度学习、注意力机制

1. 引言

玉米作为一种重要的经济作物,在世界各地广泛种植【1】。然而,各种害虫的存在导致了玉米产量的大幅减少,进而影响农业活动的经济效益。及时检测害虫对于成功管理和减少玉米害虫的侵害至关重要【2】。
目前,玉米害虫的识别方法通常依赖于知识渊博的专家进行筛查,这需要较高的专业水平以及大量的时间和精力【3】。然而,这些方法可能无法准确区分早期害虫,特别是具有相似物候特征的害虫,从而可能延误控制措施的实施【4-6】。
人工智能、深度学习和计算机视觉技术的快速发展,催生了诸如实时检测变换器(RT-DETR)【7】、单次多框检测器(SSD)【8】、“你只看一次”(YOLO)【9-11】以及快速区域卷积神经网络(Faster R-CNN)【12】等经典框架,这些已成为作物检测的重要工具。这些技术能够在害虫检测过程中自动识别和分析作物(如玉米)的信息。近年来,国内外许多学者利用深度学习和目标检测技术识别作物中的虫害区域,并用于害虫管理目的【13】。
害虫识别对于利用智能技术开展精准农业的预警系统至关重要。Tian【14】提出了一种改进的YOLO模型,用于检测三种典型的小目标鳞翅目害虫,旨在解决害虫区域多尺度密度问题。通过在特征提取过程中引入自适应注意力模块,该模型增强了对特征表示的有效利用能力。然而,模型的F1值为79.1%,表明仍有改进空间。
现有基于深度学习的害虫检测算法通常需要大量的计算资源和内存。Xu【15】通过重新构建骨干网络(使用Stem和ShuffleNet V2)并调整颈部网络宽度,开发了一种基于YOLOv5的轻量级害虫模型。与其他模型相比,该模型显著降低了模型复杂性,例如参数量减少了95.1%,模型大小减少了92.5%,浮点运算数减少了81.6%,但其精度并不高。在害虫区域检测中平衡精度和轻量化仍是极具挑战性的任务。
此外,数据集也影响了害虫检测的进展。Zhang【16】利用StyleGAN2扩展并生成了一个公共数据集,随后使用改进的YOLOv7模型检测葡萄叶片上的早期害虫。通过在目标检测前对图像进行增强,可以改善光照环境并突出害虫特征。
Zhang【17】在检测小麦枯萎病时,使用了一种具有旋转配置的YOLO小麦检测网络,并结合了简单的空间注意力网络,能够检测任意方向的麦穗图像,效率得到了提高。Ali【18】基于YOLOv5提出了一种茶叶害虫检测模型YOLO-Tea,旨在利用卷积神经网络自动提取茶叶害虫特征并进一步进行害虫检测。尽管该模型能够有效表达局部特征,但无法捕获长距离像素之间的全局相关信息。Zhuang【19】采用改进的Faster R-CNN检测图像中的玉米害虫区域。然而,该模型实时检测能力较差,不利于后期硬件部署。
上述研究表明,利用目标检测技术检测作物害虫是可行的,但很少有研究聚焦于大规模采集玉米目标害虫图像数据的难点【20】。此外,现有模型的检测精度低且检测速度慢。为解决上述问题,本研究提出了FNW YOLOv8(FasterNet-NAM-WIoUv3 YOLOv8)模型。

应用带自适应鉴别器增强的StyleGAN2扩充玉米害虫数据,有助于提高模型稳定性并避免过拟合问题,从而有效提升模型精度。
模型采用轻量化的FasterNet网络模型,降低了网络复杂性,实现算法轻量化。
引入NAM注意力机制,有效消除冗余特征信息,增强特征提取过程,从而提高模型的精度和检测速度。
模型损失函数采用WIoU v3,通过减少与距离和横纵比相关的惩罚项的干扰,有效提升了玉米害虫检测的定位性能。

2. 数据与方法

2.1 数据准备
数据集采集于重庆市农业科学院黄田玉米研究基地(东经106°20′,北纬29°29′)的田间。数据使用高清Canon EOS 6D相机拍摄,分辨率为6960×4640。相机设置为M档自动格式,从叶片上方20-30厘米的多个角度进行拍摄,确保每片害虫叶片都能被完整捕获,并保持图像清晰可见。在采集数据时,考虑了光照条件等环境因素。数据分别在晴天、阴天、阴雨天等不同天气下采集,并在一天中的早晨、上午、正午和下午拍摄,覆盖不同区域受害的玉米害虫情况。

2.1.1 StyleGAN2-ADA
数据扩展是害虫检测中的关键环节。利用StyleGAN2-ADA【21】生成多种高质量图像,能够有效扩展原始数据集,增强机器学习模型的泛化能力,并降低过拟合风险。这种方法不仅提高了模型应对未见或稀有害虫样本的能力,还提升了检测精度,同时节省了采集大量图像数据的时间和资源。StyleGAN2-ADA以640 × 640像素的分辨率生成玉米害虫图像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2243592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python 数据类型----可变数据类型

一、list列表类型: 一种有序集合,里面有多个数据用逗号隔开,可以对数据进行追加、插入、删除和替换;使用[]标识,可以包含任意数据类型 登录后复制 # 字符串类型列表 names[bill,may,jack]#整数型列表 numbers [1,2,34…

STARTS:一种用于自动脑电/脑磁(E/MEG)源成像的自适应时空框架|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 STARTS: A Self-adapted Spatio-temporal Framework for Automatic E/MEG SourceImaging STARTS:一种用于自动脑电/脑磁(E/MEG)源成像的自适应时空框架 01 文献速递介绍 电生理源成像(Electrophysiological Source Imaging,E…

海康威视和大华视频设备对接方案

目录 一、海康威视 【老版本】 【新版本】 二、大华 一、海康威视 【老版本】 URL规定: rtsp://username:password[ipaddress]/[videotype]/ch[number]/[streamtype] 注:VLC可以支持解析URL里的用户名密码,实际发给设备的RTSP请求不支…

20.UE5UI预构造,开始菜单,事件分发器

2-22 开始菜单、事件分发器、UI预构造_哔哩哔哩_bilibili 目录 1.UI预构造 2.开始菜单和开始关卡 2.1开始菜单 2.2开始关卡 2.3将开始菜单展示到开始关卡 3.事件分发器 1.UI预构造 如果我们直接再画布上设计我们的按钮,我们需要为每一个按钮进行编辑&#x…

手搓神经网络(MLP)解决MNIST手写数字识别问题 | 数学推导+代码实现 | 仅用numpy,tensor和torch基本计算 | 含正反向传播数学推导

手写数字识别(神经网络入门) 文章目录 手写数字识别(神经网络入门)实验概述实验过程数据准备模型实现线性变换层前向传播反向传播更新参数整体实现 激活函数层(ReLU)前向传播反向传播整体实现 Softmax层&am…

极速入门数模电路

一. 认识数模元器件 1.1 面包板 1.2 导线 一般使用红色导线表示正极,黑色导线表示负极。 1.3 纽扣电池 1.4 电池座 1.4 LED灯 1.5 数码管 1.6 有源蜂鸣器 1.7 扬声器 1.8 电容 电容接电池之后可以充电,充完电后电容接LED灯可以放电。 1.9 电阻 1.1…

Windows docker下载minio出现“Using default tag: latestError response from daemon”

Windows docker下载minio出现 Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded 此类情况,一般为镜像地址问题。 {"registry-mirrors": ["https://docker.re…

使用MaxKB搭建知识库问答系统并接入个人网站(halo)

首发地址(欢迎大家访问):使用MaxKB搭建知识库问答系统并接入个人网站 前言 从OpenAI推出ChatGPT到现在,大模型已经渗透到各行各业,大模型也逐渐趋于平民化;从最开始对其理解、生成、强大的知识积累的惊叹&…

数据库练习:查询操作

1. 查询出部门编号为D2019060011的所有员工 2. 所有财务总监的姓名、编号和部门编号。 3. 找出奖金高于工资的员工。 4. 找出奖金高于工资40%的员工。 5 找出部门编号为D2019090011中所有财务总监,和部门编号为D2019060011中所有财务专员的详细资料。 6. 找出部门编…

css数据不固定情况下,循环加不同背景颜色

<template><div><p v-for"(item, index) in items" :key"index" :class"getBackgroundClass(index)">{{ item }}</p></div> </template><script> export default {data() {return {items: [学不会1, …

【Python绘图】两种绘制混淆矩阵的方式 (ConfusionMatrixDisplay(), imshow()) 以及两种好看的colorbar

在机器学习领域&#xff0c;混淆矩阵是一个评估分类模型性能的重要工具。它不仅展示了模型预测的准确性&#xff0c;还揭示了模型在不同类别上的表现。本文介绍两种在Python中绘制混淆矩阵的方法&#xff1a;ConfusionMatrixDisplay() 和 imshow()&#xff0c;以及两种好看的co…

el-table 数据去重后合并表尾合计行,金额千分位分割并保留两位小数,表尾合计行表格合并

问题背景 最近在做后台管理项目el-table 时候需要进行表尾合计&#xff0c;修改合计后文字的样式&#xff0c;合并单元格。 想实现的效果 合并表尾单元格前三列为1格&#xff1b;对某些指定的单元格进行表尾合计&#xff1b;合计后的文本样式加粗&#xff1b;涉及到金额需要千…

Shell脚本2 -- 永久环境变量与字符串操作

声明&#xff1a; 本文的学习内容来源于B站up主“泷羽sec”视频【shell编程&#xff08;2&#xff09;永久环境变量和字符串显位】的公开分享&#xff0c;所有内容仅限于网络安全技术的交流学习&#xff0c;不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题&#xff0c;请联…

红日靶场-1详细解析(适合小白版)

红日靶场涉及内网知识&#xff0c;和前期靶场不太一样&#xff0c;前期靶场大部分都是单个靶机获得root权限&#xff0c;而这一次更综合&#xff0c;后期也会继续学习内网知识&#xff0c;继续打红日靶场&#xff0c;提高自己的综合技能。 环境搭建 首先本题的网络拓扑结构如…

从零到一:利用 AI 开发 iOS App 《震感》的编程之旅

在网上看到一篇关于使用AI开发的编程经历&#xff0c;分享给大家 作者是如何在没有 iOS 开发经验的情况下&#xff0c;借助 AI&#xff08;如 Claude 3 模型&#xff09;成功开发并发布《震感》iOS 应用。 正文开始 2022 年 11 月&#xff0c;ChatGPT 诞生并迅速引发全球关注。…

【环境配置】macOS配置jdk与maven

配置jdk与maven 配置jdk与切换java版本命令 maven安装与配置国内镜像源 用到的命令 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls ➜ jdk-1.8.jdk jdk-11.jdk# 查看路径 pwd ➜ /Library/Java/JavaVirtualMachines# 打开环境变量配置文件 vi &…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

<项目代码>YOLOv8 草莓成熟识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

【SpringBoot】发送简单邮件

在Spring Boot中发送邮件是一个常见的需求&#xff0c;通常使用JavaMail API结合Spring的邮件抽象来实现。Spring Boot提供了一个简单的配置和使用邮件发送的方法。 简单使用 添加依赖 首先&#xff0c;你需要在你的pom.xml文件中添加Spring Boot Starter Mail依赖。 <d…

Python模块、迭代器与正则表达式day10

1、Python模块 1.1模块的简介 在编写代码的时候&#xff0c;创建的.py文件就被称为一个模块 1.2模块的使用 想要在a文件里使用b文件的时候&#xff0c;只要在a文件中使用关键字import导入即可 1.2.2 from ...import...语句 导入模块可以使用import&#xff0c;如果只导入模…