助力农作物病虫害检测识别,基于yolov3—yolov8开发构建马铃薯作物甲虫检测识别系统

news2024/11/26 5:59:31

AI加持的智慧农业也是一个比较有前景的赛道,近些年来已经有很多不错的方向做出来成绩,基于AI的激光除草、灭虫等也是其中的一个热门,杂草相关的检测识别在我们之前的项目实例中已经有相关的实践了,这里本文的主要目的就是以农作物马铃薯为切入场景,开发构建害虫检测识别系统,有别于以往单个项目文章中主要是纵向对比单个系列比如YOLOv5系列下n、s、m、l和x不同参数量级的模型的性能,这里主要是 想要横向来进行YOLO不同版本模型的性能差异,这里我们主要选取了:YOLOv3、YOLOv4、YOLOv5、YOLOv7以及最新的YOLOv8这五个经典的版本。

最终是选择了YOLOv5模型来开发构建了最终的可视化系统界面,实例效果如下所示:

YOLOv3、YOLOv4、YOLOv5、YOLOv7以及最新的YOLOv8都是直接使用的官方开源的项目,详情如下:

YOLOv3

目前累积已有将近1w的star量了。

YOLOv4

YOLOv5

不愧是集大成者,目前已有超过42k的star量了。

YOLOv7

YOLOv8

最新版的YOLOv8已经变成了一个可以直接pip进行安装的安装包ultralytics了,目前也已经有超过1.3w的star量,还是不错的。

每个项目都有非常详细的README操作指南,按照对应的操作来进行构建即可,这里节省时间我就不再一一展开了,我就以最为经典的YOLOv5为例来看下模型的构建。

首先这里选择的是s系列的模型,配置文件如下:

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 10  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

#Backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

#Head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

数据实例如下所示:

实例标注内容如下所示:

1 0.497135 0.49213 0.018229 0.032407
0 0.580729 0.549074 0.028125 0.035185
1 0.764844 0.4875 0.020313 0.032407
0 0.517969 0.903241 0.017188 0.037963

默认100次epoch的迭代计算,等待全部训练完成后,直接来看下结果:
【Precision曲线】
精确率曲线(Precision-Recall Curve)是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。
精确率(Precision)是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。
绘制精确率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率和召回率。
将每个阈值下的精确率和召回率绘制在同一个图表上,形成精确率曲线。
根据精确率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察精确率曲线,我们可以根据需求确定最佳的阈值,以平衡精确率和召回率。较高的精确率意味着较少的误报,而较高的召回率则表示较少的漏报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
精确率曲线通常与召回率曲线(Recall Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

【Recall曲线】
召回率曲线(Recall Curve)是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。
召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度(Sensitivity)或真正例率(True Positive Rate)。
绘制召回率曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的召回率和对应的精确率。
将每个阈值下的召回率和精确率绘制在同一个图表上,形成召回率曲线。
根据召回率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
通过观察召回率曲线,我们可以根据需求确定最佳的阈值,以平衡召回率和精确率。较高的召回率表示较少的漏报,而较高的精确率意味着较少的误报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
召回率曲线通常与精确率曲线(Precision Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

【F1值曲线】
F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)、召回率(Recall)和F1分数的关系图来帮助我们理解模型的整体性能。
F1分数是精确率和召回率的调和平均值,它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点,以选择最佳的阈值。
绘制F1值曲线的步骤如下:
使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
对于每个阈值,计算相应的精确率、召回率和F1分数。
将每个阈值下的精确率、召回率和F1分数绘制在同一个图表上,形成F1值曲线。
根据F1值曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
F1值曲线通常与接收者操作特征曲线(ROC曲线)一起使用,以帮助评估和比较不同模型的性能。它们提供了更全面的分类器性能分析,可以根据具体应用场景来选择合适的模型和阈值设置。

除此之外我们对YOLO系列模型整体训练过程中的loss曲线进行对比可视化如下所示:

综合多个观测指标来对比分析不难看出,随着版本的迭代更新,算法的精度也有明显的提升。当然了,计算量和参数量也有了一定程度上的提升,这个可能要在实际应用的时候进行选择。

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

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

相关文章

最短路径专题8 交通枢纽 (Floyd求最短路 )

题目: 样例: 输入 4 5 2 0 1 1 0 2 5 0 3 3 1 2 2 2 3 4 0 2 输出 0 7 思路: 由题意,绘制了该城市的地图之后,由给出的 k 个编号作为起点,求该点到各个点之间的最短距离之和最小的点是哪个,并…

分布式数据库(林子雨慕课课程)

文章目录 4. 分布式数据库HBase4.1 HBase简介4.2 HBase数据模型4.3 HBase的实现原理4.4 HBase运行机制4.5 HBase的应用方案4.6 HBase安装和编程实战 4. 分布式数据库HBase 4.1 HBase简介 HBase是BigTable的开源实现 对于网页搜索主要分为两个阶段 1.建立整个网页索引&#xf…

第八章 排序 十四、最佳归并树

目录 一、定义 二、多路最佳归并树 三、多路最佳归并树少了一个归并段 四、总结 一、定义 最佳归并树是指将若干个有序序列合并成一个有序序列的一种方式,使得所有合并操作的总代价最小的一棵二叉树。其中,代价通常指合并两个有序序列的操作次数或比…

挑选出优秀的项目管理软件,满足您的需求

Zoho Projects是很好的一个项目管理软件,不管是web端还是APP没有那些乱七八糟的广告,光是这一点,就让人用着很舒服。除此之外还有更多让人意想不到的惊喜,软件界面设置的井井有条,关键是软件有完全免费版的&#xff0c…

mp4视频太大怎么压缩变小?

mp4视频太大怎么压缩变小?确实,很多培训和教学都转向了线上模式,这使得我们需要下载或分享大量的在线教学视频。然而,由于MP4视频文件通常较大,可能会遇到无法打开或发送的问题。为了解决这个问题,我们可以…

WMS仓储管理系统在快消品生产企业中有哪些应用

随着企业规模的扩大和市场竞争的加剧,仓库管理在企业管理中的地位越来越重要。对于快消品生产企业来说,仓库管理更是关系到产品的质量和市场竞争力。为了提高仓库管理的效率和准确性,许多企业开始引入WMS仓储管理系统解决方案。 中小企业WMS系…

网络安全(黑客)——自学

前言: 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“…

山东济南建筑模板厂家批发之桉木芯建筑模板

济南建筑模板厂家是建筑行业中非常重要的供应商之一。建筑模板是建筑施工中必不可少的一种材料,用于支撑混凝土浇筑和模板安装。在选择建筑模板材料时,我们需要考虑各类材料的特点和优缺点,以及与传统的建筑木模板相比的价格、耐用性和经济效…

软件测试/测试开发丨Python文件操作 学习笔记

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27721 文件操作 在程序中操作文件和使用图形界面操作文件的过程基本一致,都要进行找到文件位置,打开文件,读写文件&am…

架构方法、模型、范式、治理

从架构方法、模型、范式、治理等四个方面介绍架构的概念和方法论、典型业务场景下的架构范式、不同架构的治理特点这3个方面的内容

ChatGPT 背后包含了哪些技术?

ChatGPT 是由OpenAI开发的一款基于GPT-3(Generative Pre-trained Transformer 3)的人工智能语言模型。这个模型是使用多种编程语言和技术组合编写的。 首先,ChatGPT 使用了 Python 作为主要的编程语言。Python 是一种流行的高级编程语言&…

Vue3+TypeScript

一、Vue3带来的变化(源码) 源码通过monorepo的形式来管理源代码 口Mono:单个 口Repo : repository仓库 口主要是将许多项目的代码存储在同一个repository中; 口这样做的目的是多个包本身相互独立,可以有自己的功能逻辑、单元测试等,同时又在…

绘制长时间尺度的古地理图(海岸线)——获取海岸线数据

绘制长尺度的古地理图(海岸线) 2. 重建海岸线2.1. 功能描述2.2. 功能接口2.3. 功能参数2.4. 返回值2.5. 功能示例2.5.1. 使用SETON2012模型将海岸线重建至140Ma。2.5.2. 返回一个PNG地图。2.5.3. 返回指定范围内的 png 地图 分析 本文接续计算古坐标点—…

【Java 进阶篇】HTML 语义化标签详解

HTML(HyperText Markup Language)是构建Web页面的标准语言。在HTML中,标签(tag)是用于定义页面结构和内容的关键元素。在构建网页时,了解如何正确使用HTML标签是非常重要的,因为它们不仅影响页面…

地磁查询网站

百度搜索经纬度查询定位,找到位置点坐标, 登录如下网站 https://www.ngdc.noaa.gov/geomag/calculators/magcalc.shtml#igrfwmm

ADuM1250 ADuM1251 模块 I2C IIC总线2500V电磁隔离 接口保护

功能说明: 1,2500V电磁隔离,2通道双向I2C; 2,支持电压在3到5.5V,最大时钟频率可达1000KHz; 3,将该隔离模块接入总线,可以保护主MCU引脚,降低I2C总线上的干…

BUUCTF [MRCTF2020]Ez_bypass1

这道题全程我都是用bp做的 拿到题目 我们查看页面源代码得到 代码审计 我们要用get传入id和gg两个参数,id和gg的值要求不能相等,但是id和gg的md5强比较必须相等 if(isset($_GET[gg])&&isset($_GET[id])) {$id$_GET[id];$gg$_GET[gg];if (md5($…

PUPANVR-UI主菜单及设置窗体框架(9)

PUPA NVR UI主菜单及设置窗体框架 在设计UI时,竟量把数据、控制、显示,分开,即MVC的一个模式吧!使用MVC这样的模式思想,会让代码简洁不少,逻辑也很清析! 具体的代码见: PUPANVR这个…

聊聊分布式架构05——[NIO基础]BIO到NIO的演进

目录 I/O I/O模型 BIO示例 BIO与NIO比较 NIO的三大核心 NIO核心之缓冲区 Buffer常用子类: Buffer常用API Buffer中的重要概念 NIO核心之通道 FileChannel 类 FileChannel常用方法 NIO核心之选择器 概述 应用 NIO非阻塞原理分析 服务端流程 客户端…

前端—— 分层模型和应用协议

1 分层模型 MAC地址 可以认为计算机专属,可以认为每台计算机的 MAC地址 固定不变; IP地址 可以认为是计算机当前的【家庭地址】,动态唯一,家庭地址变化,IP地址 也跟着变化; 举个例子,A 给 B 发…