YOLO26改进 - 特征融合 | HS-FPN高效特征金字塔网络,通过选择性特征交互实现参数优化与性能提升
前言本文介绍 MFDS-DETR 中的高层筛选特征金字塔 HS-FPN 在 YOLO26 中的接入方法。HS-FPN 利用高层语义特征生成通道权重对低层特征进行选择再通过逐点相加完成跨尺度融合。本文保留 YOLO26 主干及检测头在 Neck 中构建 P5 → P4 → P3 的选择性特征交互提供与当前项目一致的模块实现、注册步骤、YAML 和训练脚本。具体精度与速度变化需要通过目标数据集上的完整训练及基线对比评估。文章目录 YOLO26改进大全卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总专栏链接: 最新YOLO26改进专栏文章目录前言介绍摘要文章链接基本原理核心代码YOLO26引入代码tasks注册步骤1步骤2配置yolo26-HSFPN.yaml实验脚本结果介绍以下摘要和基本原理对应原 MFDS-DETR 论文本项目的接入范围为 HS-FPN 特征选择与融合模块。摘要本文提出了一种突破性的白细胞检测方法——多层次特征融合和可变形自注意力DETRMFDS-DETR旨在革新传统医院血液检测流程中存在的诸多痼疾。传统检测模式中医务人员需借助显微镜从患者血液显微图像中手动分离白细胞继而通过自动分类器确定不同类型白细胞的分布情况以辅助临床诊断。此种方法不仅耗费大量人力物力更因图像质量波动和环境干扰等因素容易产生判读偏差进而导致分类错误与诊断失准。现有白细胞检测技术在处理特征稀疏的图像样本及应对白细胞尺寸差异方面表现乏力检测效果往往不尽如人意。针对上述挑战我们精心设计了MFDS-DETR检测框架其核心创新在于两大技术突破一方面为应对白细胞尺寸变化问题我们构建了高层次筛选特征融合金字塔HS-FPN实现了多层次特征的智能融合。该模块巧妙地利用高层次特征作为权重指导通过精密的通道注意力机制对低层次特征进行有效筛选随后将优化后的特征信息与高层次特征进行深度融合显著增强了模型的特征表达能力。另一方面我们创新性地在编码器中引入多尺度可变形自注意模块并在解码器中融合自注意与交叉可变形注意机制有效解决了白细胞特征稀缺的难题极大提升了模型捕获白细胞图像全局特征的能力。通过在私有WBCDD数据集以及公开的LISC和BCCD基准数据集上与前沿白细胞检测模型的全面比较充分验证了MFDS-DETR方法的卓越性能、技术优势及广泛适用性。我们的完整源代码及私有WBCCD数据集已在GitHub平台https://github.com/JustlfC03/MFDS-DETR开放共享以促进该领域的进一步研究与应用。文章链接论文地址论文地址代码地址代码地址基本原理HS-FPNHierarchical Scale-based Feature Pyramid Network是一种用于多尺度特征融合的网络结构旨在解决白细胞图像中的多尺度挑战从而提高模型对白细胞的准确识别能力。HS-FPN包括两个主要组件特征选择模块和特征融合模块。特征选择模块在特征选择模块中不同尺度的特征图经过筛选过程。这个过程有助于选择高级和低级特征图中的信息。特征融合模块在特征融合模块中经过筛选的特征与高级语义特征进行逐点相加。这种融合方式能够有效地将高级语义信息与低级特征属性相结合从而提高对白细胞图像的特征表达能力。HS-FPN利用通道注意Channel AttentionCA模块来利用高级语义特征作为权重以过滤低级特征。这种筛选后的特征与高级语义特征相加实现了多尺度特征融合从而提高了模型的特征表达能力。通过这种方式HS-FPN能够更好地捕获白细胞图像的全面特征信息从而提高白细胞检测的准确性和效率。核心代码import torch import torch.nn as nn class HSFPNChannelAttention(nn.Module): Return reweighted features, or channel weights for selecting a lower-level feature. def __init__(self, in_planes, ratio4, flagTrue): super().__init__() if in_planes 1 or ratio 1: raise ValueError(HSFPNChannelAttention requires positive channels and reduction ratio) hidden max(1, in_planes // ratio) self.avg_pool nn.AdaptiveAvgPool2d(1) self.max_pool nn.AdaptiveMaxPool2d(1) self.conv1 nn.Conv2d(in_planes, hidden, 1, biasFalse) self.relu nn.ReLU() self.conv2 nn.Conv2d(hidden, in_planes, 1, biasFalse) self.flag flag 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)))) weights self.sigmoid(avg_out max_out) return weights * x if self.flag else weights class Multiply(nn.Module): Apply a broadcastable channel gate to a feature map. def forward(self, x): if len(x) ! 2: raise ValueError(HS-FPN Multiply requires a gate and a feature map) return x[0] * x[1] class Add(nn.Module): Sum spatially aligned feature maps with matching channels. def forward(self, x): if len(x) 2: raise ValueError(HS-FPN Add requires at least two feature maps) return torch.sum(torch.stack(x, dim0), dim0)YOLO26引入代码在根目录下的ultralytics/nn/目录新建一个featureFusion目录然后新建一个以HSFPN为文件名的py文件 把代码拷贝进去。当前项目已有此文件时更新为下面的完整实现。隐藏通道数至少为 1以兼容较小输入通道注意力计算与原文一致。importtorchimporttorch.nnasnnclassHSFPNChannelAttention(nn.Module):Return reweighted features, or channel weights for selecting a lower-level feature.def__init__(self,in_planes,ratio4,flagTrue):super().__init__()ifin_planes1orratio1:raiseValueError(HSFPNChannelAttention requires positive channels and reduction ratio)hiddenmax(1,in_planes//ratio)self.avg_poolnn.AdaptiveAvgPool2d(1)self.max_poolnn.AdaptiveMaxPool2d(1)self.conv1nn.Conv2d(in_planes,hidden,1,biasFalse)self.relunn.ReLU()self.conv2nn.Conv2d(hidden,in_planes,1,biasFalse)self.flagflag self.sigmoidnn.Sigmoid()nn.init.xavier_uniform_(self.conv1.weight)nn.init.xavier_uniform_(self.conv2.weight)defforward(self,x):avg_outself.conv2(self.relu(self.conv1(self.avg_pool(x))))max_outself.conv2(self.relu(self.conv1(self.max_pool(x))))weightsself.sigmoid(avg_outmax_out)returnweights*xifself.flagelseweightsclassMultiply(nn.Module):Apply a broadcastable channel gate to a feature map.defforward(self,x):iflen(x)!2:raiseValueError(HS-FPN Multiply requires a gate and a feature map)returnx[0]*x[1]classAdd(nn.Module):Sum spatially aligned feature maps with matching channels.defforward(self,x):iflen(x)2:raiseValueError(HS-FPN Add requires at least two feature maps)returntorch.sum(torch.stack(x,dim0),dim0)tasks注册在ultralytics/nn/tasks.py中进行如下操作步骤1fromultralytics.nn.featureFusion.HSFPNimport(AddasHSFPNAdd,HSFPNChannelAttention,MultiplyasHSFPNMultiply,)步骤2在parse_model(d, ch, verboseTrue)的模块判断链中增加以下专用分支 .elifmisHSFPNChannelAttention:c2ch[f]args[c2,*args]elifmin{HSFPNMultiply,HSFPNAdd}:ifnotisinstance(f,list)orlen(f)2:raiseValueError(f{m.__name__}requires multiple input layers)ifmisHSFPNMultiplyandlen(f)!2:raiseValueError(HSFPNMultiply requires two input layers)c2ch[f[-1]]ifany(ch[x]!c2forxinf):raiseValueError(f{m.__name__}requires matching input channels)args[]配置yolo26-HSFPN.yaml# Ultralytics AGPL-3.0 License - https://ultralytics.com/license# Ultralytics YOLO26 object detection model with P3/8 - P5/32 outputs# Model docs: https://docs.ultralytics.com/models/yolo26# Task docs: https://docs.ultralytics.com/tasks/detect# Parametersnc:80# number of classesend2end:True# whether to use end-to-end modereg_max:1# DFL binsscales:# model compound scaling constants, i.e. modelyolo26n.yaml will call yolo26.yaml with scale n# [depth, width, max_channels]n:[0.50,0.25,1024]s:[0.50,0.50,1024]m:[0.50,1.00,512]l:[1.00,1.00,512]x:[1.00,1.50,512]# YOLO26n backbonebackbone:# [from, repeats, module, args]-[-1,1,Conv,[64,3,2]]# 0-P1/2-[-1,1,Conv,[128,3,2]]# 1-P2/4-[-1,2,C3k2,[256,False,0.25]]-[-1,1,Conv,[256,3,2]]# 3-P3/8-[-1,2,C3k2,[512,False,0.25]]-[-1,1,Conv,[512,3,2]]# 5-P4/16-[-1,2,C3k2,[512,True]]-[-1,1,Conv,[1024,3,2]]# 7-P5/32-[-1,2,C3k2,[1024,True]]-[-1,1,SPPF,[1024,5,3,True]]# 9-[-1,2,C2PSA,[1024]]# 10# YOLO26n head:head:-[10,1,HSFPNChannelAttention,[4]]# 11 select backbone P5-[-1,1,Conv,[256,1,1]]# 12 project P5/32 channels-[-1,1,nn.ConvTranspose2d,[256,3,2,1,1]]# 13 P5 to P4-[6,1,HSFPNChannelAttention,[4]]# 14 select backbone P4-[-1,1,Conv,[256,1,1]]# 15 project P4 channels-[13,1,HSFPNChannelAttention,[4,False]]# 16 high-level P4 channel gate-[[16,15],1,HSFPNMultiply,[]]# 17 select lower-level P4-[[17,13],1,HSFPNAdd,[]]# 18 fuse gated P4 with high-level P4-[-1,2,C3k2,[256,True]]# 19 P4/16-medium-[19,1,nn.ConvTranspose2d,[256,3,2,1,1]]# 20 refined P4 to P3-[4,1,HSFPNChannelAttention,[4]]# 21 select backbone P3-[-1,1,Conv,[256,1,1]]# 22 project P3 channels-[20,1,HSFPNChannelAttention,[4,False]]# 23 high-level P3 channel gate-[[23,22],1,HSFPNMultiply,[]]# 24 select lower-level P3-[[24,20],1,HSFPNAdd,[]]# 25 fuse gated P3 with high-level P3-[-1,2,C3k2,[256,True]]# 26 P3/8-small-[[26,19,12],1,Detect,[nc]]# Detect(P3, P4, P5)实验脚本importwarnings warnings.filterwarnings(ignore)fromultralyticsimportYOLOif__name____main__:# 修改为自己的配置文件地址modelYOLO(./ultralytics/cfg/models/26/yolo26-HSFPN.yaml)# 修改为自己的数据集地址model.train(data./ultralytics/cfg/datasets/coco8.yaml,cacheFalse,imgsz640,epochs10,single_clsFalse,# 是否是单类别检测batch8,close_mosaic10,workers0,optimizerMuSGD,# optimizerSGD,ampFalse,projectruns/train,nameHSFPN,)结果

相关新闻

对比 @Configuration(Full) vs @Component(Lite)

对比 @Configuration(Full) vs @Component(Lite)

核心现象:同一个类里面,Bean方法互相调用,Full拿单例,Lite新建对象1. 两个简单Bean public class ABean { }public class BBean {public ABean aBean;public BBean(ABean aBean) {this.aBean aBean;} }2. Full模式(Co…

2026/10/15 7:06:52 阅读更多 →
酒店大功率空气能热水器,惠州厂家直供,全天候高效更省电

酒店大功率空气能热水器,惠州厂家直供,全天候高效更省电

在惠州空气能热水器行业做了十几年工程项目,我们团队在实践中发现,酒店客户咨询酒店大功率空气能热水器时,真正担心的往往不是机组匹数,而是高峰期热水够不够用、冬天稳不稳定、用几年后还有人管不管。今天以格瑞沃空气能在惠州落…

2026/10/15 7:06:52 阅读更多 →
SpringBoot+Vue+MySQL实习生管理系统设计与部署实践

SpringBoot+Vue+MySQL实习生管理系统设计与部署实践

开箱即用的一套实习生管理系统,SpringBoot后端、Vue前端、MySQL做数据存储,三件套组合已经被无数个中小型项目验证过了。这套源码有完整的用户登录、角色权限、实习过程记录、日报周报、考勤统计、成绩评定,能直接跑起来,也适合拿…

2026/10/15 7:05:52 阅读更多 →

最新新闻

光子晶体光纤仿真降维实操:笔记本搞定模式干涉建模

光子晶体光纤仿真降维实操:笔记本搞定模式干涉建模

最近有个朋友跟我诉苦:他接手了一个光子晶体光纤传感器的项目,领导开口就问“你这个仿真要多大内存,是不是得租台服务器”,他按照常规三维时域软件一估算,发现模型随便就是几十亿网格,当场就自闭了。我跟他…

2026/10/15 7:41:00 阅读更多 →
Zotero本地增强方案:可视化+AI问答+全文翻译

Zotero本地增强方案:可视化+AI问答+全文翻译

1. 这不是“又一个Zotero插件”,而是一套可落地的学术工作流增强方案你有没有过这样的时刻:文献库攒了八百篇PDF,点开Zotero主界面却像面对一座没有索引的图书馆——知道里面有东西,但找不到入口;读到关键段落想查证原…

2026/10/15 7:41:00 阅读更多 →
一人公司的商业价值与运营策略解析

一人公司的商业价值与运营策略解析

1. 一人公司的产业定位解析在商业生态系统中,一人公司正以独特的组织形式填补着传统企业难以触及的市场缝隙。这种微型企业形态不同于自由职业者或个体工商户,其核心特征在于以公司法人身份运作,却保持极简的组织架构。我观察到近年来在软件开…

2026/10/15 7:41:00 阅读更多 →
考虑源荷不确定性的两阶段鲁棒机组调度:Yalmip+Gurobi实现

考虑源荷不确定性的两阶段鲁棒机组调度:Yalmip+Gurobi实现

1. 项目概述:源荷不确定性下的机组调度为何需要重做模型电力系统的机组调度问题,如果只在确定性场景下做,说实话已经不算难事了。常规的经济调度加机组启停约束,用线性规划或者混合整数线性规划就能收敛得很漂亮。真正让调度模型从…

2026/10/15 7:41:00 阅读更多 →
AI热点背后的认知校准:GPT-6、世界模型与术语通胀解析

AI热点背后的认知校准:GPT-6、世界模型与术语通胀解析

1. 标题背后的三重信号:一场被误读的“AI纪年”重构看到这个标题,我第一反应不是点开看内容,而是下意识翻了翻日历——2026年10月?再确认一遍手机系统时间:2024年9月。没错,这根本不是一份“新闻简报”&…

2026/10/15 7:41:00 阅读更多 →
2026年10月北京市联通宽带实测办理避坑全攻略

2026年10月北京市联通宽带实测办理避坑全攻略

上个月我翻了一下家里的宽带账单,一年算下来花了快两千块。很多人有个反常识的误区,觉得宽带资费越贵,网速就绝对越快。其实我拿着四家运营商的账单横向对比后发现,花双倍钱办的千兆宽带,实际体验甚至不如邻居办的五百…

2026/10/15 7:40:00 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →