【YOLOv8改进 - 特征融合NECK】 HS-FPN :用于处理多尺度特征融合的网络结构,降低参数

news/2024/9/24 18:02:25

摘要

在标准的医院血液检测中,传统过程需要医生使用显微镜从患者的血液显微图像中手动分离白细胞。然后,这些分离出的白细胞通过自动白细胞分类器进行分类,以确定血液样本中不同类型白细胞的比例和数量,从而辅助疾病诊断。这种方法不仅耗时费力,而且由于图像质量和环境条件等因素,容易出现错误,从而可能导致后续分类不正确和误诊。现代白细胞检测方法在处理具有较少白细胞特征的图像和不同白细胞规模差异方面存在局限性,导致大多数情况下结果不尽如人意。

为了解决这些问题,本文提出了一种创新的白细胞检测方法:多层次特征融合和可变形自注意力 DETR(MFDS-DETR)。为了解决白细胞规模差异问题,我们设计了高层次筛选特征融合金字塔(HS-FPN),实现多层次融合。该模型使用高层次特征作为权重,通过通道注意力模块过滤低层次特征信息,然后将筛选后的信息与高层次特征融合,从而增强模型的特征表达能力。此外,我们通过在编码器中引入多尺度可变形自注意模块,并在解码器中使用自注意和交叉可变形注意机制,解决了白细胞特征稀缺问题,这有助于提取白细胞特征图的全局特征。

通过与其他尖端白细胞检测模型在私有 WBCDD、公共 LISC 和 BCCD 数据集上的比较,验证了所提出的 MFDS-DETR 方法的有效性、优越性和通用性。我们的源代码和私有 WBCCD 数据集可在以下地址获得:https://github.com/JustlfC03/MFDS-DETR。

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

image-20240622094143702

HS-FPN(Hierarchical Scale-based Feature Pyramid Network)是一种用于多尺度特征融合的网络结构,旨在解决白细胞图像中的多尺度挑战,从而提高模型对白细胞的准确识别能力。HS-FPN包括两个主要组件:特征选择模块和特征融合模块。

  1. 特征选择模块:在特征选择模块中,不同尺度的特征图经过筛选过程。这个过程有助于选择高级和低级特征图中的信息。

  2. 特征融合模块:在特征融合模块中,经过筛选的特征与高级语义特征进行逐点相加。这种融合方式能够有效地将高级语义信息与低级特征属性相结合,从而提高对白细胞图像的特征表达能力。

HS-FPN利用通道注意(Channel Attention,CA)模块来利用高级语义特征作为权重,以过滤低级特征。这种筛选后的特征与高级语义特征相加,实现了多尺度特征融合,从而提高了模型的特征表达能力。通过这种方式,HS-FPN能够更好地捕获白细胞图像的全面特征信息,从而提高白细胞检测的准确性和效率。

yolov8 代码引入

# 定义HSFPN通道注意力机制类
class HSFPNChannelAttention(nn.Module):def __init__(self, in_planes, ratio=4, flag=True):super(HSFPNChannelAttention, self).__init__()# 自适应平均池化,将输入特征图变为1x1self.avg_pool = nn.AdaptiveAvgPool2d(1)# 自适应最大池化,将输入特征图变为1x1self.max_pool = nn.AdaptiveMaxPool2d(1)# 卷积层1,将输入通道数降维self.conv1 = nn.Conv2d(in_planes, in_planes // ratio, 1, bias=False)# ReLU激活函数self.relu = nn.ReLU()# 卷积层2,将通道数恢复self.conv2 = nn.Conv2d(in_planes // ratio, in_planes, 1, bias=False)# 标志位,决定输出是否与输入相乘self.flag = flag# Sigmoid激活函数self.sigmoid = nn.Sigmoid()# 初始化卷积层权重nn.init.xavier_uniform_(self.conv1.weight)nn.init.xavier_uniform_(self.conv2.weight)def forward(self, x):# 通过平均池化和两层卷积计算通道注意力avg_out = self.conv2(self.relu(self.conv1(self.avg_pool(x))))# 通过最大池化和两层卷积计算通道注意力max_out = self.conv2(self.relu(self.conv1(self.max_pool(x))))# 将平均池化和最大池化的结果相加out = avg_out + max_out# 根据flag决定是否与输入相乘并返回结果return self.sigmoid(out) * x if self.flag else self.sigmoid(out)

task与yaml配置

详见:hhttps://blog.csdn.net/shangyanaf/article/details/139877859

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

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

相关文章

VM Ware虚拟机设置静态IP(NAT模式)

设置VM Ware虚拟机静态IP 解决步骤 1. 确保VM Ware相关服务正常启用 “此电脑”-->右击“管理”,在服务中看VM Ware的相关服务是否已经开启,确保已开启。2. 设置VM Ware虚拟网络编辑器 在VM Ware 顶部菜单栏 --> “编辑” --> “虚拟网络编辑器”3. 编辑虚拟机设置4…

dotnet 6 破坏性改动 仅引用程序集输出路径变更

在 dotnet 5 开始,可以设置 ProduceReferenceAssembly 为 true 让项目构建时输出仅引用程序集。仅引用程序集是仅导出项目的公开成员定义,而不包含具体的实现的代码逻辑。只用来被其他项目引用,体积很小,但不用来作为最终发布文件在此前的如下博客里面已经告诉大家如何创建…

又跳槽!3年java经验offer收割机的面试心得

中厂->阿里->字节,成都->杭州->成都 系列文章目录和关于我 0.前言 笔者在不足两年经验的时候从成都一家金融科技中厂跳槽到杭州阿里淘天集团,又于今年5月份从杭州淘天跳槽到成都字节。自认为自己在面试这方面有一点心得,处于记录和分享的目的便有了此文,此文纯…

Git的安装及使用

官网:Git for Windows 点击下载安装。右击鼠标会出现GUI和Bash 选择git bash here 配置全局用户名和邮箱(gitee)git config --global user.name "你的名字" git config --global user.email 你的邮箱 查看配置git config user.name git config –list 配置 SSH…

【YOLOv8改进】 ODConv(Omni-Dimensional Dynamic Convolution):全维度动态卷积

摘要 在现代卷积神经网络(CNN)中,每个卷积层中学习单个静态卷积核是常见的训练范式。然而,最近在动态卷积的研究中表明,通过学习 n 个卷积核的线性组合,并且这些卷积核的权重取决于它们的输入相关注意力,可以显著提高轻量级 CNN 的准确性,同时保持高效的推理。但是,我…

使用mongodb、Kafka保存mqtt消息

一、引言 随着物联网技术的迅猛发展,大量的设备和传感器产生了海量的数据。本文利用了 MQTT、Kafka 和 MongoDB 各自的优点,满足实时数据处理和大规模数据存储的需求。 如图:二、总结 优点:1. 可靠和解耦: Kafka的复制机制和持久化存储确保了数据在传输过程中的可靠性,即…

【C#】WPF 类库项目 无法创建 “资源字典” 文件

解决办法 打开项目工程文件 ( project.csproj) 在 标签添加 下面红色的三句话<Deterministic>true</Deterministic><ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <…

视频通话源码,使用线程池的两大要点分析

视频通话源码,使用线程池的两大要点分析:1、实现动态调整线程池参数2、对线程池运行情况进行监控一,线程池可调整的参数1、核心线程数2、超时时间3、最大线程数4、拒绝策略 而队列BlockingQueue因为是final类型,所以没有对外修改入口。但可以通过重写LinkedBlockingQueue并…