每天一篇《目标检测》文献(三)

server/2025/3/18 17:50:50/

今天看的是《基于改进 YOLOv8 的被遮挡柑橘果实检测算法研究》。


目录

一、摘要

二、背景介绍

三、改进结构

四、空间定位算法

五、定位实验


一、摘要

为了获取柑橘果实的准确特征信息,实现被遮挡柑橘的准确识别和定位,达到精确采  摘的目的,提出了一种改进的被遮挡柑橘果实识别模型构建。该模型在 YOLOv8 目标检测模  型中引入了 BAM 注意力机制,解决了被遮挡柑橘识别效果较差的问题,并采用支持向量机  (SVM)实例分割模型提取被遮挡柑橘的精确轮廓,实现被遮挡柑橘果实的精确识别。仿真  试验结果表明,与 YOLOv8 目标检测模型相比,该改进定位模型在被遮挡柑橘果实的平均定  位误差和果径误差率分别降低了16.29mm和8.03%。

二、背景介绍

我国是柑橘原产地之一,传统检测通过采集果实纹理、形状及颜色等特征信息,提取过程相对繁琐,基于机器学习目标检测仅在单一场景下果实识别率较高,基于深度卷积神经网络的果实检测依靠其强大的特征提取能力,在单一和遮挡的环境下检测率均较高。

目前,柑橘智能化采摘面临的主要问题就是柑橘果实被遮挡严重,难以实现精确识别,针对上述问题,本文提出在传统yolov8模型中引入BAM注意力机制。通过将输入图像进行数据增强,图像预处理、特征提取、回归预测和非极大值抑制,得到图像中柑橘的置信度和坐标信息,之后使用BAM对被遮挡柑橘果实特征信息进行重构,有效抑制背景特征,提高遮挡柑橘果实的识别效率和准确率。

YOLOv8的网络结构如下:

单阶段yolov8的检测模块主要包括:输入模块、主干网络、颈部检测头模块和输出模块。

Yolov8的工作原理如下:

  1. 输入图像首先通过图像增强、自适应处理进行预处理
  2. 主干网络特征提取时融合大部分背景信息,目标信息较少。C2f模块用以解决特征提取位置信息多、、目标特征弱的问题
  3. 颈部模块将分类和检测头分离,采用自底向上和自顶向下的双塔结构传递特征信息,将提取的信息对坐标和类别进行回归预测
  4. 输出模块将特征信息进行非极大值抑制,得到果实的置信度和坐标信息

C2f的结构如下:

三、改进结构

本文引入BAM注意力机制,注意力重构被忽略的信息,抑制被遮挡的背景信息,聚焦柑橘果实特征。BAM模块如下所示:

在yolov8的C2f模块后引入BAM模块,通过channel和spatial两个分离路径得到新的Attention Map,获得更加精确的柑橘果实特征。

结合通道和空间注意力模块,可以获得更好的重叠和被遮挡果实的轮廓锡信息,计算公式如下:

M(F)=\sigma (M_c(F)+M_s(F))

M_{c}(F)\epsilon R^{C}为通道注意力,M_{s}(F)\epsilon R^{R\times W}为空间注意力,F为输入特征图,R为激活函数,C为输入特征图通道数,H×W为高度×宽度。

 M_{c}(F)=BN(W_{1}(W_{0}Avgpool(F)+b_{0})+b_{1})

BN为批量归一化,W_{0}\epsilon R^{\frac{C}{r\times C}}为对输入特征图进行线性变换的权重矩阵,W _{1}\epsilon R^{\frac{C\times C}{r}}为1×1卷积核的权重矩阵,C/r为多层感知机第一层的神经元个数,C为多层感知机第二层神经元的个数,AVGPool为平均池化,b1、b0为偏置项,b_{1}\epsilon R^{C},b_{0}\epsilon R^{\frac{C}{r}}

M_{s}(F)=BN(f^{1\times 1}_{3}(f^{2\times 2}_{2}(f^{3\times 3}_{1}(f^{1\times 1}_{0}(F)))))

f为卷积操作,上标为卷积核大小,1×1为filter size为1,3×3是空洞卷积。

改进的模块结构如下图所示:

四、空间定位算法

果实与背景类间方差较大,通常采用最大类间方差法(Otsu’s Method,Ostu法),该方法按被遮挡果实灰度特性,将果实和背景区分,方法简单,噪声干扰较大,难以区分果实的精准轮廓。本文应用SVM分割模型对柑橘果实进行轮廓提取。

SVM主要包括提示编码器,图像编码器、掩码编码器,结构如下所示:

工作原理如下:

图像编码器首先通过卷积层和池化层,提取被遮挡柑橘果实的抽象特征,提示编码器将预测图像信息与图像编码器信息融合,掩码编码器将图像、提示两个编码器输出转换成像素的分割掩码。改进yolo检测模型后获得的目标区域内,应用SVM分割后,采用Canny算子对其轮廓提取。

柑橘近似椭圆,采用最小二乘法进行椭圆拟合,设果实中心坐标(x0,y0),半长轴、半短轴、长轴偏角分别为a、b、θ,其一般方程为:

x^{2}+Axy+By^{2}+Cx+Dy+E=0

\left\{\begin{matrix} x_{0}=\frac{2BC-AD}{A^{2}-4B}\\ y_{0}=\frac{2D-AD}{A^{2}-4B}\\ a=\sqrt{\frac{2(ACD-BC^{2}-D^{2})}{(A^{2}-4B)(B+\sqrt{A^{2}+(1-B)^{2}+1})}}\\ \theta =acrtan(\sqrt{\frac{a^{2}-b^{2}B}{a^{2}B-b})}\\ \end{matrix}\right.

ABCDE均为常数,多个采集点坐标,所得目标函数为:

F(A,B,C,D,E)=\sum_{i=1}^{n}(x^{2}_{i}A+Bx_{i}y_{i}+Cx_{i}+Dy_{i}+E)^{2}

对上式求偏导F对每一个变量的偏导都应该等于零。

五、定位实验

柑橘果实拟合轮廓内部像素为Qi,人工标被遮挡柑橘果实轮廓区域内部像素Q,两者重合度为C,评价指标为

C=\frac{\left | Q\cap Q_{i} \right |}{Q}\times 100%

由于果实形心难以精确定位,不适合用空间位置误差评价算法定位精度,故定位误差为:

\Delta =\sqrt{(x_{i}-x_{j})^{2}+(y_{i}-y_{j})^{2}+(z_{i}-z_{j})^{2}}

下标i和j分别代表未遮挡和被遮挡的果实推断空间坐标。

采用改进yolov8识别图像,得到的定位结果如下:

从左至右分别是原图像、改进后识别图像、特征提取后图像、补充后图像和人工拟合图像。

和原yolov8算法计算被遮挡的形心坐标和果实直径,定位和果经误差对比如下:

被遮挡和果实重叠情况下,平均定位误差减少16.29mm,平均果经误差降低了8.03%。


http://www.ppmy.cn/server/176014.html

相关文章

TCP/IP 协议精讲-精华总结版本

序言 本文旨在介绍一下TCP/IP涉及得所有基础知识,为大家从宏观上俯瞰TCP/IP提供一个基石,文档属于《TCP/IP图解(第五版)》的精简版本。 专业术语 缩写 全称 WAN Wide area network广域网 LAN Local area network局域网 TC…

AI第一天 自我理解笔记--微调大模型

目录 1. 确定目标:明确任务和数据 2. 选择预训练模型 3. 数据预处理 (1) 数据清洗与格式化 (2) 划分数据集 (3) 数据加载与批处理 4. 构建微调模型架构 (1) 加载预训练模型 (2) 修改模型尾部(适配任务) (3) 冻结部分层(可…

【从零开始学习计算机科学】软件工程(一)软件工程中的过程模型

【从零开始学习计算机科学】软件工程(一)软件工程中的过程模型 软件与软件工程软件工程具有以下核心要素软件工程中的过程模型惯用过程模型瀑布模型V模型增量过程模型演化过程模型原型模型螺旋模型协同开发模型喷泉模型专用过程模型构件组装模型统一过程模型(RUP)统一过程模…

3.2 二分查找专题:LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置

1. 题目链接 LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 2. 题目描述 给定一个升序排列的整数数组 nums 和一个目标值 target,返回目标值在数组中的起始位置和结束位置。若不存在,返回 [-1, -1]。 要求:时间复杂度为 O(log …

SpringBoot + Mybatis Plus 整合 Redis

Redis 在用户管理系统中的典型应用场景 结合你的用户增删改查接口,以下是 Redis 的实用场景和具体实现方案: 场景作用实现方案用户信息缓存减少数据库压力,加速查询响应使用 Spring Cache Redis 注解缓存登录 Token 存储分布式 Session 或…

Unity小框架之单例模式基类

单例模式(Singleton Pattern)是一种常用的创建型设计模式,其核心目标是确保一个类只有一个实例,并提供一个全局访问点。它常用于需要控制资源访问、共享配置或管理全局状态的场景(如数据库连接池、日志管理器、应用配置…

(vue)elementUi中el-upload上传附件之后 点击附件可下载

(vue)elementUi中el-upload上传附件之后 点击附件可下载 handlePreview(file) {console.log(file)const fileUrl https://.../zzy/ file.urlconst a document.createElement(a)a.href fileUrla.download file.namea.style.display none// a.setAttribute(download, file.…

【k8s003】k8s与docker的依赖关系

‌一、早期版本对应关系(Kubernetes 1.20 之前)‌ ‌Kubernetes 1.13–1.19‌ ‌支持的 Docker 版本范围‌:1.13.1 至 19.03.x‌ ‌说明‌:此阶段 Kubernetes 直接依赖 Docker 作为默认容器运行时,需严格匹配版本以避免…