AI助力农作物自动采摘,基于YOLOv3全系列【yolov3tiny/yolov3/yolov3spp】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物,专家设计出来了很多用于采摘不同农作物的大型机械,看着非常震撼,但是我们国内农业的发展还是相对比较滞后的,小的时候拔草是一个人一列蹲在地里就在那埋头拔草,不知道什么时候才能走到地的尽头,小块的分散的土地太多基本上都是只能人工手工来取收割,大点的连片的土地可以用收割机来收割,不过收割机基本都是用来收割小麦的,最近几年好像老家也能看到用于收割玉米的机器了不过相对还是比较少的,玉米的收割我们基本上还是人工来收割的,不仅累效率还低遇上对玉米叶片过敏的就更要命了。。。。闲话就扯到这里了。

有时候经常在想我们的农业机械化自动化什么时候能再向前迈进一大步,回顾德国的工业机械,在视频展示的效果中,其实很关键的主要是两部分,一部分是机器视觉定位检测识别,另一部分是机械臂传动轴,两部分相互配合才能完成采摘工作,本文的主要想法是想要基于YOLOv3开发构建用于番茄采摘场景下的目标检测系统,前文实践如下:

《AI助力农作物自动采摘,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建作物生产场景下番茄采摘检测计数分析系统》

《AI助力农作物自动采摘,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统》

《AI助力农作物自动采摘,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统》

首先看下实例效果:

简单看下实例数据情况:

本文是选择的比较经典的也是比较古老的YOLOv3来进行模型的开发,YOLOv3(You Only Look Once v3)是一种目标检测算法模型,它是YOLO系列算法的第三个版本。该算法通过将目标检测任务转化为单个神经网络的回归问题,实现了实时目标检测的能力。

YOLOv3的主要优点如下:

实时性能:YOLOv3采用了一种单阶段的检测方法,将目标检测任务转化为一个端到端的回归问题,因此具有较快的检测速度。相比于传统的两阶段方法(如Faster R-CNN),YOLOv3能够在保持较高准确率的情况下实现实时检测。

多尺度特征融合:YOLOv3引入了多尺度特征融合的机制,通过在不同层级的特征图上进行检测,能够有效地检测不同尺度的目标。这使得YOLOv3在处理尺度变化较大的场景时表现出较好的性能。

全局上下文信息:YOLOv3在网络结构中引入了全局上下文信息,通过使用较大感受野的卷积核,能够更好地理解整张图像的语义信息,提高了模型对目标的识别能力。

简洁的网络结构:YOLOv3的网络结构相对简洁,只有75个卷积层和5个池化层,使得模型较易于训练和部署,并且具有较小的模型体积。

YOLOv3也存在一些缺点:

较低的小目标检测能力:由于YOLOv3采用了较大的感受野和下采样操作,对于小目标的检测能力相对较弱。当场景中存在大量小目标时,YOLOv3可能会出现漏检或误检的情况。

较高的定位误差:由于YOLOv3将目标检测任务转化为回归问题,较粗糙的特征图和较大的感受野可能导致较高的定位误差。这意味着YOLOv3在需要较高精度的目标定位时可能会受到一定的限制。

YOLOv3是YOLO系列里程碑性质的模型,随着不断地演变和发展,目前虽然已经在性能上难以与YOLOv5之类的模型对比但是不可否认其做出的突出贡献。

训练数据配置文件如下:

# path
train: ./dataset/images/train/
val: ./dataset/images/test/


# number of classes
nc: 1

 
# class names
names: ['tomato']

我们开发构建了yolov3全系列的参数模型,包含:yolov3-tiny、yolov3和yolov3-spp,实验阶段保持完全相同的参数设置,等待训练完成我们来整体对比可视化。

【F1值曲线】
F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)、召回率(Recall)和F1分数的关系图来帮助我们理解模型的整体性能.F1分数是精确率和召回率的调和平均值,它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点,以选择最佳的阈值。

【loss曲线】

【Recall曲线】
召回率曲线(Recall Curve)是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度(Sensitivity)或真正例率(True Positive Rate)。

【Precision曲线】
精确率曲线(Precision-Recall Curve)是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。精确率(Precision)是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。

【mAP0.5】

【mAP0.5:0.95】

从实验结果综合对比来看不难看出:tiny系列的模型效果最差,被其他系列的模型拉开了明显的差距,yolov3狠人yolov3-spp两款模型达到了相近的性能,且参数量相近。我们考虑最终选择使用yolov3系列的模型来作为最终的推理模型。

离线推理实例如下所示:

训练可视化如下所示:

Batch实例如下:

感兴趣的话也都可以自行动手尝试下!

如果自己不具备开发训练的资源条件或者是没有时间自己去训练的话这里我提供出来对应的训练结果可供自行按需索取。

单个模型的训练结果默认YOLOv3-tiny

 全系列三个模型的训练结果总集

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8S之Namespace的介绍和使用

Namespace的理论和实操 Namespace理论说明Namespace实操创建、查看命名空间使用ResouceQuota 对Namespace做资源限额更多ResouceQuota 的使用 Namespace理论说明 命名空间定义 K8s支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间&…

教授LLM思考和行动:ReAct提示词工程

ReAct:论文主页 原文链接:Teaching LLMs to Think and Act: ReAct Prompt Engineering 在人类从事一项需要多个步骤的任务时,而步骤和步骤之间,或者说动作和动作之间,往往会有一个推理过程。让LLM把内心独白说出来&am…

Flink 动态表 (Dynamic Table) 解读

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

Linux服务器安装Jenkins

1、安装Jenkins前必须先安装jdk与maven 2、下载Jenkins 安装包地址 linux jenkins 链接: 百度网盘 请输入提取码 提取码: zfyq 3、解压压缩包 rpm -ivh jenkins-2.174-1.1.noarch.rpm 4、解压完成后查看Jenkins安装路径 whereis jenkins 5、启动报错 ,这是因为Jenki…

Oracle数据表ID自增操作

一、Oracle ID自增长功能介绍 Oracle数据库默认不支持像 SQLServer、MySQL中的自增长(auto increment)功能,即自动为每一行记录的自增长字段生成下一个值。 二、Oracle ID自增长方法 第一种,通过序列(sequence&#…

linux k8s 源码编译及单集群测试

目录 概述实践安装插件docker 在线安装containerd安装二进制安装yum安装修改containder配置文件 cnietcdrsyncgo设置golang代理 安装CFSSL下载kubernetes代码编译启动本地单节点集群问题k8s没有被正常启动该如何k8s正常启动日志测试 结束 概述 此文详细说明在 centos 7上编译 k…

Linux 服务器安装maven

1、压缩文件下载Maven – Download Apache Maven 2、解压 tar -xvf apache-maven-3.8.4-bin.tar.gz 3、配置环境变量 在/etc/profile中保存Maven的环境变量: export M2_HOME/opt/server/apache-maven-3.5.4 export PATH$PATH:$M2_HOME/bin 4、通过source生效文件 so…

紫光展锐M6780丨一语即达,“声”临其境

在前面四期,紫光展锐针对M6780的显示技术进行了系列揭秘。虽名为“智能显示芯片”,但M6780的魅力远不止于超高清智能显示,更有智能语音交互功能,助力打造数字世界的交互新体验。 智能语音技术是一种基于人工智能和语音识别技术的创…

阅读笔记——《RapidFuzz: Accelerating fuzzing via Generative Adversarial Networks》

【参考文献】Ye A, Wang L, Zhao L, et al. Rapidfuzz: Accelerating fuzzing via generative adversarial networks[J]. Neurocomputing, 2021, 460: 195-204.【注】本文仅为作者个人学习笔记,如有冒犯,请联系作者删除。 目录 摘要 一、介绍 二、相关…

LangChain 82 LangGraph 从入门到精通四

LangChain系列文章 LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 62 深入理解Lang…

大数据可视化/算法推荐/情感分析——基于Django电影评论数据可视化分析推荐系统(完整系统源码+数据库+详细文档+论文+部署教程)

文章目录 大数据可视化/算法推荐/情感分析——基于Django电影评论数据情感分析可视化分析推荐系统源码资料获取方式在文章末尾 一、 选题背景二、研究目的三、开发技术介绍1、Django框架2、LDA3、机器学习推荐算法4、大数据爬虫5、大数据Echarts可视化 四、系统设计思想五、部分…

【数据结构】排序之冒泡排序和快速排序

简单不先于复杂,而是在复杂之后。 文章目录 1. 交换排序1.1 冒泡排序1.2 快速排序1.3 快速排序优化1.4 快速排序非递归 1. 交换排序 基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换…

Python __file__属性:查看模块的源文件路径

除可以查看模块的帮助信息之外,还可以直接阅读模块的源代码来掌握模块功能,提升 Python 编程能力。 不管学习哪种编程语言,认真阅读那些优秀的框架、库的源代码都是非常好的学习方法。 通过模块的 __file__ 属性即可查看到指定模块的源文件…

如何基于 ESP 系列产品进行 BLE OTA 测试?

软件 esp-iot-solution\examples\bluetooth\ble_ota 例程BLE OTA 组件库:espressif/ble_ota 默认组件库支持 ESP32、ESP32C3、ESP32H2、ESP32S3 系列产品的测试。 硬件 ESP board 用于 BLE OTA 测试的手机 APP 安卓版本:esp-ble-ota-android IOS 版本…

第三篇:SQL数据模型、通用语法和语法分类

一,SQL数据模型 (一)关系型数据库(RDBMS) 1.概念 (百度百科)指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这…

如何在Linux中安装新版的Python软件

一、引言 Python是目前世界上最为流行的编程语言,其在人工智能领域表现尤为出色。通常,我们为了测试github上面的一些项目,比如:chat-on-wechat, 我们就可以在vps上的Linux系统中安装Python,从而实现各种人…

Kafka零拷贝技术与传统数据复制次数比较

读Kafka技术书遇到困惑: "对比传统的数据复制和“零拷贝技术”这两种方案。假设有10个消费者,传统复制方式的数据复制次数是41040次,而“零拷贝技术”只需110 11次(一次表示从磁盘复制到页面缓存,另外10次表示10个消费者各自…

基于若依的ruoyi-nbcio流程管理系统自定义业务实现一种简单的动态任务标题需求

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…

代码随想录day18--二叉树的应用6

LeetCode530.二叉搜索树的最小绝对差值 题目描述: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,2,6,1,3] …

WPF控件-ItemsControl

介绍 ItemsControl是用于展示一组项的控件。我们常见的列表&#xff08;ListBox&#xff09;、数据表格&#xff08;DataGrid&#xff09;等都是继承自ItemsControl。可用于自定义样式展示各种批量的数据集合。 常见使用示例&#xff1a; <ItemsControl ItemsSource"…