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

YOLOWeeds: 用于棉花生产系统中多类杂草检测的 YOLO 目标检测器的新基准

YOLOWeeds: A novel benchmark of YOLO object detectors for multi-class weed detection in cotton production systems

  • 摘要
  • 1、介绍
  • 2、总结

摘要

过度依赖除草剂控制杂草,加速了杂草的抗除草剂进化,引起了对环境、食品安全和人类健康的日益关注。自动化/机器人除草的机器视觉系统在实现综合的、可持续的除草管理方面得到了越来越多的关注。然而,在非结构化的田间环境和杂草生物多样性显著的情况下,开发可靠的杂草识别和检测系统仍然是一个严峻的挑战。解决这一挑战的一个很有前途的解决方案是,开发适合于种植系统的大规模、带有注释的杂草图像数据集,以及用于杂草检测的数据驱动AI(人工智能)模型。在各种深度学习架构中,各种各样的YOLO (You Only Look Once)检测器非常适合于实时应用,并且在通用目标检测方面非常流行。这项研究提供了一个新的数据集(CottoWeedDet12),其中包括对美国南部棉花生产至关重要的杂草。它包括12个杂草类的5648幅图像,共9370个边界框注释,收集了自然光条件下和棉花田不同杂草生长阶段的图像。所有的YOLO模型,特别是YOLOv5n和YOLOv5s,在杂草实时检测方面显示了巨大的潜力,数据增强可以提高杂草检测的准确性。

1、介绍

影响杂草识别性能的主要因素有两个,即用于模型训练的图像数据的大小和质量,以及杂草识别算法。
大规模标注图像数据是保证计算机视觉算法性能的关键。在精准农业中,缺乏大规模、高质量的标注数据集仍然是充分利用深度学习算法(Lu和Young, 2020)开发鲁棒机器视觉系统的关键瓶颈。对于杂草识别,良好的数据集应该提供有关杂草物种、环境条件(如光照条件、土壤类型)和与生长阶段相关的形态或生理变化的充分表征。除了需要杂草识别领域的专业知识外,准备这样的数据集是出了名的耗时和昂贵。
最近开展了一些研究,开发用于杂草控制的图像数据集(Lu和Young, 2020),如DeepWeeds (Olsen等人,2019)、早期作物杂草数据集(espejoo - garcia等人,2020)、Hedge bindweed (Gao等人,2020)、CottonWeedID15 (Chen等人,2022)、Eden图书馆(Mylonas等人,2019)、2022年)和杂草人工智能(https://weed-ai.sydney.edu.au/)。到目前为止,据我们所知,只有CottonWeedID15 (Chen et al., 2022)致力于识别棉花生产系统特有的杂草。
同时,在杂草检测的图像处理/分析技术上已经做了大量的研究(Wang等人,2019;Meyer和Neto, 2008年;Wu等人,2021)。人们提出了各种强调植物绿色的颜色指数,以增强对土壤背景杂草的描述和分割(Meyer和Neto, 2008;Woebbecke等人,1995)。其中大多数算法虽然易于计算,但对各种成像条件并不鲁棒,特别是在处理可变自然场光条件下获得的图像时(Hamuda等,2016;Bawden等人,2017;陆等,2022)。最近,基于深度学习(DL)算法的数据驱动方法,特别是卷积神经网络(CNNs),已被用于杂草检测(Hasan et al., 2021)。在大规模数据集的支持下,训练有素的DL模型可以对生物变异和成像条件具有鲁棒性,同时实现令人满意的分类或检测精度(Chen等人,2022;Olsen等人,2019年;Suh等人,2018)。经过训练的DL模型可以部署在专用的计算硬件上(如NVIDIA Jetson AGX Xavier模块),并与机器人平台相结合,实现实时杂草识别(Du等人,2021;奥尔森等人,2019)。
杂草识别的任务,分为三个基本类别:1)将图像归类为作物/杂草,2)在图像中检测或定位杂草,3)将图像分割成语义杂草特征图,分别对应计算机视觉中的三个基本问题,即图像分类、目标检测和语义分割。DL方法最常用于训练杂草分类模型(Olsen等,2019;埃斯佩霍-加西亚等人,2020年;Chen et al.,
2022;Dyr - mann等人,2016;Suh等人,2018),给定图像级别的标记数据集。然而,生成的模型没有提供关于图像中特定杂草位置的信息,因此对于提供精确的杂草控制来说是次优的。相比之下,目标检测需要在图像中定位感兴趣的对象(Girshick et al., 2015),可以预测图像中杂草的位置,更有利于高精度的杂草去除。
本研究是在前人杂草分类研究(Chen et al., 2022)的基础上,首次对美国棉花生产中最先进的多类杂草YOLO目标检测器进行综合性能评价。杂草数据集和本研究开发的软件程序均可公开访问。这项研究有望对未来开发基于机器视觉的棉花和其他作物除草系统产生积极影响。本文的主要贡献如下:
1、一个多样化的杂草数据集,包括12个杂草类别的5648张图像,以及9370个对美国南部棉花重要的杂草包围框;
2、对25台最先进的YOLO目标探测器进行了多类杂草检测的综合评价和基准测试;
3、研究了数据增加对YOLO模型性能的影响。

2、总结

杂草检测是利用机器视觉系统对杂草进行精确定位的重要环节。在有效杂草检测的核心是一个大规模的,精确标记的杂草数据集的管理,从而开发监督学习模型。
本文展示了迄今为止与美国棉花生产系统相关的最大的杂草检测数据集,包括12个杂草类别的5648张图像,共9370个边界框注释,收集于各种自然光照条件下。通过多类杂草检测的转移学习,建立了一套由25个选定的YOLO目标检测器组成的综合基准测试集,并从检测快速性、模型复杂度和推理时间三个方面进行了评估。
YOLO检测模型获得了mAP@0.5分数,从YOLOv3tiny的88.14%到YOLOv4的95.22%不等。总体而言,基于yolov4的模型比YOLOv3和YOLOv5的模型具有更高的准确率,而YOLOv5n和YOLOv5s在实现相似检测精度的同时,在快速推理时间上具有优势。数据增强对YOLO探测器尤其是YOLOv3tiny的性能有积极的影响。该性能基准有望为选择合适的YOLO目标检测器进行杂草检测提供参考,也可用于精准农业的目标检测任务。杂草检测数据集和用于模型开发和评估的源代码都对研究社区开放。

相关文章:

YOLOWeeds: 用于棉花生产系统中多类杂草检测的 YOLO 目标检测器的新基准

YOLOWeeds: A novel benchmark of YOLO object detectors for multi-class weed detection in cotton production systems 摘要1、介绍2、总结 摘要 过度依赖除草剂控制杂草,加速了杂草的抗除草剂进化,引起了对环境、食品安全和人类健康的日益关注。自动…...

Vue3:自定义图标选择器(包含 SVG 图标封装)

文章目录 一、准备工作(在 Vue3 中使用 SVG)二、封装 SVG三、封装图标选择器四、Demo 效果预览: 一、准备工作(在 Vue3 中使用 SVG) 本文参考:https://blog.csdn.net/houtengyang/article/details/1290431…...

NIO讲解

一:什么是NIO? 二:NIO三大组件 1. channel channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入…...

react中jest配置,解决node_modules报错esm无法解析的问题

重点关注: transformIgnorePatterns: [ "/node_modules/(?!(?:jmfe)/)", ], moduleNameMapper: { "\\.(css|less|scss|sss|styl)$": "jest-css-modules" } 并安装jest-css-modules(npm i --save-dev jest-css-mo…...

Qt6,使用 UI 界面完成命令执行自动化的设计

一、需要完成的功能 在子对话框(CmdChildQt)中,点击 “执行” 按钮,将多个命令行指令,依次输入到父对话框(CmdQt)的编辑框中并且执行,要求如下: 在前一个命令执行完成后&…...

Apache Maven;会话技术

Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。 Maven模型有: 项目对象模型、依赖管理模型、插件 会话技术: 会话&#xff1a…...

Azure - 机器学习:使用自动化机器学习训练计算机视觉模型的数据架构

目录 一、用于训练的数据架构图像分类(二进制/多类)多标签图像分类对象检测实例分段 二、用于推理的数据格式输入格式输出格式图像分类多标签图像分类对象检测实例分段 了解如何设置Azure中 JSONL 文件格式,以便在训练和推理期间在计算机视觉…...

【C++】stack | queue | priority_queue | deque

一、stack栈 介绍 1.栈是一种特殊的线性表,其元素遵循“后进先出”的原则,即仅允许在在表的一端进行插入、删除操作,这一模式被称为“后进先出”或LIFO(last in fisrt out)。 2.从底层实现来看,stack是作…...

华为gre带验证key案例

配置FW_A。 a.配置接口的IP地址,并将接口加入安全区域。 system-view [sysname] sysname FW_A [FW_A] interface GigabitEthernet 1/0/1 [FW_A-GigabitEthernet1/0/1] ip address 1.1.1.1 24 [FW_A-GigabitEthernet1/0/1] quit [FW_A] interface GigabitEthernet 1/…...

Java算法(三): 判断两个数组是否为相等 → (要求:长度、顺序、元素)相等

Java算法(三) 需求: 1. 定义一个方法,用于比较两个数组是否相同2. 需求:长度,内容,顺序完全相同package com.liujintao.compare;public class SameArray {public static void main (String[] a…...

基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)

一、前言 基于STM32+OneNet设计的智慧超市管理系统(2023升级版) 1.1 项目背景 随着IoT技术的不断发展,智能无人超市也越来越受到人们的关注。智能无人超市是指在无人值守的情况下,通过物联网、大数据等技术手段实现自助选购、结算和配送的新型商场。当前设计了一种基于STM32…...

深入浅出理解ResNet网络模型+PyTorch实现

温故而知新,可以为师矣! 一、参考资料 原始论文:Identity Mappings in Deep Residual Networks 原论文地址:Deep Residual Learning for Image Recognition ResNet详解PyTorch实现 PyTorch官方实现ResNet 【pytorch】ResNet18、…...

【C++】万字一文全解【继承】及其特性__[剖析底层化繁为简](20)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.继承&复用&组合的区别1&…...

微信小程序之自定义组件开发

1、前言 从小程序基础库版本 1.6.3 开始,小程序支持简洁的组件化编程。所有自定义组件相关特性都需要基础库版本 1.6.3 或更高。开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦…...

MCU系统的调试技巧

MCU系统的调试技巧对于确保系统稳定性和性能至关重要。无论是在嵌入式系统开发的初期阶段还是在产品维护和优化的过程中,有效的调试技巧可以帮助开发人员快速发现和解决问题,本文将讨论一些MCU系统调试的技巧。 首先,使用调试工具是非常重要…...

【机器学习基础】机器学习概述

目录 前言 一、机器学习概念 二、机器学习分类 三、机器学习术语 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。 &#x…...

Python Selenium 执行 JavaScript

简介 Selenium是一个用于自动化浏览器操作的工具,可以模拟人工操作,执行各种浏览器操作,包括点击、输入文字、提交表单等。而JavaScript是一种常用的脚本语言,用于在网页上添加交互性和动态性。在Python中使用Selenium执行JavaSc…...

HTML的表单标签和无语义标签的讲解

HTML的表单标签 表单是让用户输入信息的重要途径, 分成两个部分: 表单域: 包含表单元素的区域. 重点是 form 标签. 表单控件: 输入框, 提交按钮等. 重点是 input 标签 form 标签 使用form进行前后端交互.把页面上,用户进行的操作/输入提交到服务器上 input 标签 有很多形态,能…...

8.spark自适应查询-AQE之自适应调整Shuffle分区数量

目录 概述主要功能自适应调整Shuffle分区数量原理默认环境配置修改配置 结束 概述 自适应查询执行(AQE)是 Spark SQL中的一种优化技术,它利用运行时统计信息来选择最高效的查询执行计划,自Apache Spark 3.2.0以来默认启用该计划。…...

【Java 进阶篇】Java Filter 快速入门

欢迎来到这篇有关 Java Filter 的快速入门指南!如果你是一名 Java 开发者或者正在学习 Java Web 开发,Filter 是一个强大的工具,可以帮助你管理和控制 Web 应用程序中的请求和响应。本文将向你解释 Filter 的基本概念,如何创建和配…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...