基于多任务融合的圣女果采摘识别算法研究
基于多任务融合的圣女果采摘识别算法研究
1、简介
本文主要解决圣女果生产销售环节中,现有的流程是采摘成熟的圣女果,再对采摘下的果实进行单独的品质分级,不仅费时费力,而且多增加一个环节,也增加了对果实的二次伤害。如何在采摘环节中就对圣女果果实进行品质分级是本文研究的核心内容。
1.1 国内外研究现状
国内外目前对“采摘果实的同时对品质进行分级”这一课题研究的并不多。主要集中在采摘识别算法上,大致分为两类:传统算法与人工智能算法。
1.1.1 传统算法采摘识别
传统的采摘识别算法有1⃣️基于HIS颜色特征的识别;2⃣️红外成像识别;3⃣️光谱成像识别等方法;如下图所示,但是可以发现对果实的边缘信息检测误差较大,并且对于重叠的果实并不能有效区分开来,而圣女果/番茄的果实往往是成簇/串生长,因此传统算法的检测效果并不佳。
1.1.2 人工智能算法采摘识别
目前采用的人工智能算法主要以1⃣️目标检测识别;2⃣️语义分割识别为主.
较少采用实例分割实现,分析主要原因有:实例分割算法的研究还有许多难题需要解决,如推理速度较低,不如目标检测的迅速,可以达到实时性的任务要求。
- 目标检测算法:目标检测虽然检测速度很快,检测精度也很高,但是目标检测只能识别出果实的边界框,而无法识别出果实的精准边界信息,对于采摘任务而言并不友好;
- 语义分割算法:语义可以精准的实现果实的边界信息,但是对于同一类别的交集果实无法区分,对于采摘而言,无法精确计算实例的采摘点;
1.2 研究目的与意义
通过将品质分级、实例分割任务融合在一个模型中,从而实现对圣女果的采摘识别与品质分级同时进行。即可以精准识别到果实的边缘信息又可以区分不同实例,并同时进行果实的品质分级任务。将实现采摘的同时进行品质分级,极大的缩短的加工时间,提高了生产效率,同时降低了对果实的损伤。
2、自建多品质圣女果数据集
前往山东省寿光县进行数据采集,拍摄了5k+原图数据,通过1->2/1->3数据增广扩增至14K张数据,人工标注图像3K,共13K个样本实例;
数据标注过程中,采用的更加精细的实例分割标注,可以衍生出单圣女果的采摘识别数据集、单成熟度的圣女果采摘识别数据集、多品质的圣女果采摘数据集等不同任务需求的下游数据集;
标注过程中,我们将圣女果按照成熟度、是否遮挡、品质进行品质划分,共划为为13个品级,其中包含开裂状态的损伤果。
通过对13K+个实例的分布情况统计,发现不同品类的数据分布是极度不均衡的,为了缓解此情况对模型训练的影响,我们尝试了对样本数据少的类别进行数据增强,但是发现此方法行不通,因为圣女果果实高度重叠同生,单纯增强数据量少的类别难度极大;
出了进行数据增强方法,采用Focal Loss的损失函数可以缓解对模型的影响,本文采用采用Focal Loss的方法进行调节不同类别的在损失中的权重。
2.1 数据增强
数据增强主要采用原图的像素维度的数据增强和空间维度的数据增强。
像素维度的数据增强包含:像素化处理、运动模糊、高斯模糊、油画处理、磨砂玻璃处理、超像素化处理、缩放模糊处理、灰度处理、添加噪点、随机阴影处理;
空间维度的数据增强包含:随机裁剪、中心裁剪、水平翻转、垂直翻转、平移、随机旋转;其中数据增强方法采用基于Albumentations库进行,但是在进行空间维度的数据增强时发现,BBox的数据增强与Mask的数据增强无法做到一一匹配的问题,为了解决此问题,本文通过只进行mask进行空间维度的数据增强,通过计算每个通道mask的边界信息从而获得对应的BBox,实现BBox与Mask的同步数据增强。
3、SOLO Evolution 模型设计与优化
3.1 算法架构设计
SOLO-E基于SOLOv2模型改进而来,我们删减了SOLOv2模型中的低效cate层与mask层。将SOLO有限的注意力集中于各分支的核心。
深层次的特征图更加有利于cate分支提取信息,因此保留2-4层多尺度特征图;
受限于mask复原影响,舍弃3、4层多尺度特征图;
从而将5层特征图精简至3层特征图,即保留了SOLOv2的核心部分,又在一定程度上提升了模型运算速度;
3.2 Matrix NMS算法优化
在使用Matrix NMS算法的时候,发现其对cate阈值依赖较大,阈值设置较大导致部分实例无法检测出,阈值较小导致部分实例存在冗余预测情况发生;(图左上角数字表示检测实例个数)
为了降低对阈值的依赖性,我们提出了圆函数替换原有的高斯函数作为递减函数。在IoU>0.8时,圆函数对置信度低的预测结果抑制更加强烈;对于0.1<IoU<0.4的时候,圆函数依旧有将近0.6的抑制,此情况可以抑制如下图2情况。对于同一目标,可能存在缩小型的目标预测,此时与最佳目标的IoU是较低的,此种情况依旧需要对其进行抑制,高斯函数在此情景下的抑制情况较差。
优化前后的对比效果图(每个小图的左上角数字表示为此图中检测到的实例数量)
4、各模型检测结果对比
改进后的SOLO-E在mAP指标相当的情况下,在FPS方面较SOLOv2提升了39.8%,训练时间较SOLOv2降低了33%,且模型参数量略有降低。
5、圣女果采摘识别系统设计
为了更加直观的展示,我们基于PyQt5设计了一套系统,如下所示。
《基于实例分割实现圣女果采摘识别算法研究》系统演示
相关文章:

基于多任务融合的圣女果采摘识别算法研究
基于多任务融合的圣女果采摘识别算法研究 1、简介 本文主要解决圣女果生产销售环节中,现有的流程是采摘成熟的圣女果,再对采摘下的果实进行单独的品质分级,不仅费时费力,而且多增加一个环节,也增加了对果实的二次伤害…...

又一个开源第一!飞桨联合百舸,Stable Diffusion推理速度遥遥领先
AIGC(AI Generated Content),即通过人工智能方法生成内容,是当前深度学习最热门的方向之一。其在绘画、写作等场景的应用也一直层出不穷,其中,AI绘画是大家关注和体验较多的方向。 Diffusion系列文生图模型可以实现AI绘画应用&…...

数据链路层及交换机工作原理
目录 一,帧格式 1.1 帧头类型字段的作用 1.2 MAC地址 1.3 MTU值 二,交换机工作原理 2.1 交换机的端口 2.2 端口状态 三,交换机基本工作模式及命令 3.1 交换机的工作模式: 3.2 命令 一,帧格式 其中类型是指&am…...

VSCode 开发配置,一文搞定(持续更新中...)
一、快速生成页面骨架 文件 > 首选项 > 配置用户代码片段 选择需要的代码片段或者创建一个新的,这里以 vue.json 举例: 下面为我配置的代码片段,仅供参考: {"Print to console": {"prefix": "…...

全网最详细的(CentOS7)MySQL安装
一、环境介绍 操作系统:CentOS 7 MySQL:5.7 二、MySQL卸载 查看软件 rpm -qa|grep mysql 卸载MySQL yum remove -y mysql mysql-libs mysql-common rm -rf /var/lib/mysql rm /etc/my.cnf 查看是否还有 MySQL 软件,有的话继续删除。 软件卸…...

基于LSTM的文本情感分析(Keras版)
一、前言 文本情感分析是自然语言处理中非常基本的任务,我们生活中有很多都是属于这一任务。比如购物网站的好评、差评,垃圾邮件过滤、垃圾短信过滤等。文本情感分析的实现方法也是多种多样的,可以使用传统的朴素贝叶斯、决策树,…...
2023年全国最新机动车签字授权人精选真题及答案17
百分百题库提供机动车签字授权人考试试题、机动车签字授权人考试预测题、机动车签字授权人考试真题、机动车签字授权人证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 三、多选题 1.注册登记安全检验时,送检乘用…...

PowerShell远程代码执行漏洞(CVE-2022-41076)分析与复现
漏洞概述PowerShell(包括Windows PowerShell和PowerShell Core)是微软公司开发的任务自动化和配置管理程序,最初只是一个 Windows 组件,由命令行 shell 和相关的脚本语言组成。后于2016年8月18日开源并提供跨平台支持。PowerShell…...

Mybatis中的一级缓存和二级缓存
Mybatis作为一款强大的ORM框架,其中也用到了缓存来加速查询,今天我们一起来探讨下。 Mybatis可以使用懒加载来提高查询的效率,并且可以通过缓存来提高查询的效率。其中包括有一级缓存和二级缓存。 一级缓存是sqlSession级别的缓存,…...

【Java】SpringBoot中实现异步编程
前言 首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题? 什么是异步? 首先我们先来看看一个同步的用户注册例子,流程如下: 异步的方式如下: 在用户注册后将成功结果返回,…...
ASCII 文件与 TIFF 文件互转(Python 实现)(2023/03/09)
ASCII 文件与 TIFF 文件互转(Python 实现) 文章目录ASCII 文件与 TIFF 文件互转(Python 实现)1. 环境1.1 Linux1.2 Windows2. 代码1. 环境 1.1 Linux $ pip3 install --index-url https://mirrors.aliyun.com/pypi/simple --tru…...

思科模拟器 | 交换机与路由器的配置汇总【收藏备用】
文章目录一、vlan配置【实现同一vlan的主机通信】1、基本配置和接线2、vlan配置与端口连接3、测试连接二、truck配置【实现连接在不同交换机上的同一vlan的主机通信】1、基本配置和接线2、vlan配置与端口连接3、打truck做连接3、测试连接三、静态路由配置1、自定义IP地址2、基本…...
电子台账:软件运行环境要求与功能特点
1 运行环境要求为满足大部分应用环境,软件开发时综合考虑各种各种不同因素影星,包括:操作系统、硬件、辅助软件、安装、运行、补丁、数据库、网络、人员等因素。目前台账软件需求为:操作系统:目前能运行的任意版本wind…...

计算机科学导论笔记(六)
目录 八、算法 8.1 概念 8.1.1 非正式定义 8.1.2 示例 8.1.3 定义动作 8.1.4 细化 8.1.5 泛化 8.2 三种结构 8.2.1 顺序 8.2.2 判断 8.2.3 循环 8.3 算法的表示 8.3.1 UML 8.3.2 伪代码 8.4 更正式的定义 8.5 基本算法 8.5.1 求和 8.5.2 求积 8.5.3 最大和最…...

嵌入式从业10年,聊聊我对工业互联网和消费物联网的看法 | 文末赠书4本
嵌入式从业10年,聊聊我对工业互联网和消费物联网的看法 工业互联网和消费物联网,有何异常点?本文,博主将结合自己的亲身经历,现身说法,聊聊博主对工业互联网和消费物联网的看法。 文章目录1 写在前面2 我眼…...
python的django框架从入门到熟练【保姆式教学】第一篇
当今,Python已成为最受欢迎的编程语言之一。而Django是一个基于Python的Web框架,它能够帮助你快速、高效地开发Web应用程序。如果你是一名初学者,学习Django框架可能会让你感到有些困惑。不过,不用担心,我们将为你提供…...
浏览记录或者购物车的去重处理
saveHistory(){// 获取缓存数据let historyArr uni.getStorageSync(historyArr) || []//需要添加的数据let item{id:this.detail.id,classid:this.detail.classid,title:this.detail.title,picurl:this.detail.picurl,looktime:parseTime(Date.now())};// forEach和findIndex的…...

Ubantu docker学习笔记(二)拉取构建,属于你的容器
文章目录一、拉取启动容器二、本地镜像初解三、构建镜像3.1使用docker commit构建镜像切换阿里镜像3.2使用dockerfile构建镜像四、总个结吧这里的话,就详细说说小唐对于容器的配置,对了!小唐参考的书籍是Linux容器云实战!…...

指针数组 数组指针 常量指针 指针常量 函数指针 指针函数
一、指针常量与常量指针 1、指针常量 本质上是一个常量,常量的类型是指针,表示该常量是一个指针类型的常量。在指针常量中,指针本身的值是一个常量,不可以改变,始终指向同一个地址。在定义的时候,必须要初…...

前端js学习
1. js入门 1.1 js是弱类型语言 1.2 js使用方式 1.2.1 在script中写 1.2.2 引入js文件 1.2.3 优先级 1.3 js查错方式 1.4 js变量定义 1.4 js数据类型 数据类型英文表示示例数值类型number1.1 1字符串类型string‘a’ ‘abc’ “abc”对象类型object布尔类型booleannumber函数…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...