YOLO26改进-Neck | LPRMAlignUpModule:局部像素关系建模对齐上采样,缓解跨尺度融合中的细节损失 | TPAMI2025
前言本文介绍了局部像素关系对齐上采样模块LPRMAlignUpModule在YOLO26中的结合应用。该模块通过压缩特征预测局部像素关系并利用不同膨胀率的动态关系对跨尺度特征进行对齐与细化增强上采样过程中的局部结构表达能力。我们将LPRMAlignUpModule集成到YOLO26的Neck多尺度特征融合路径中以替换对应的Concat融合位置并进行相关注册和配置用于改善上采样特征与侧向特征之间的空间对齐和细节融合。文章目录 YOLO26改进大全卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总专栏链接: 最新YOLO26改进专栏文章目录前言介绍文章链接基本原理核心代码YOLO26引入代码注册步骤1:步骤2配置yolo26-LPRMAlignUpModule.yaml实验脚本结果介绍高空间频率信息包括纹理等细节对语义分割的准确性有重要贡献。然而根据奈奎斯特—香农采样定理在步幅卷积等下采样层传播时高频成分容易受到混叠或失真的影响。为此我们提出了一种新的空间频率调制SFM方法在下采样前将高频特征调制到较低频率并在上采样过程中将其重新解调回来。具体而言我们通过自适应重采样ARS实现调制并设计了一种轻量级附加模块对高频区域进行密集采样以放大信号从而依据频率缩放特性降低其频率。我们还提出了多尺度自适应上采样MSAU通过非均匀上采样对调制后的特征进行解调并恢复高频信息。该模块进一步通过显式利用不同尺度下密集重采样区域与稀疏重采样区域之间的信息交互来改善分割效果。上述两个模块都能够无缝集成到不同架构中适用范围从卷积神经网络扩展到Transformer。特征可视化与分析表明我们的方法能够有效缓解混叠同时在解调后成功保留细节。最后我们将SFM的适用性和有效性扩展验证到图像分类、对抗鲁棒性、实例分割和全景分割等任务中。代码已公开在https://github.com/Linwei-Chen/SFM。文章链接论文地址https://arxiv.org/pdf/2507.11893代码地址https://github.com/search?qrepo%3ALinwei-Chen%2FSFMLPRMAlignUpModuletypecode基本原理1. 解决的关键问题YOLO26的Neck通常通过上采样与Concat完成不同尺度特征的融合。普通双线性或最近邻上采样使用固定空间采样规则难以针对局部纹理、边缘和目标轮廓进行自适应细化当高层语义特征与低层细节特征进行跨尺度融合时还可能出现空间错位、细节稀释和局部结构恢复不足的问题。LPRMAlignUpModule针对这一过程引入由压缩特征动态预测的局部像素关系使输出不再只是固定插值或直接拼接而是根据当前特征内容重新聚合邻域信息。2. 整体架构模块接收两路Neck特征低分辨率路径特征和高分辨率侧向引导特征。首先使用1×1卷积将两路输入投影到目标输出通道并把空间尺寸对齐到高分辨率特征随后分别压缩两路特征并相加形成用于预测局部像素关系的条件特征。条件特征经过关系建模后先后送入两个不同膨胀率的局部像素关系细化单元对低分辨率路径进行动态邻域重采样最后与高分辨率引导特征进行残差式融合并通过输出投影得到YOLO26后续C3k2所需的特征。在YOLO26中模块放置在Neck的四个跨尺度融合位置P5到P4、P4到P3、P3回流到P4以及P4回流到P5。这样既保留了YOLO26的自顶向下和自底向上路径又把原来的Concat替换为带局部关系建模的对齐融合操作。3. 技术原理模块使用一个小通道压缩分支生成关系条件图再由3×3卷积预测每个空间位置的k²个邻域权重并在邻域维度进行Softmax归一化。对于输入特征的每个位置使用这些权重对膨胀邻域展开结果进行加权求和从而完成动态局部像素关系聚合。第一阶段使用膨胀率1建模近邻关系第二阶段使用膨胀率2扩大局部感受野使模块能够同时利用细粒度边缘信息和稍大范围的上下文信息。与固定插值相比这种方式能够根据局部内容改变采样邻域的贡献与直接Concat相比它先完成通道投影、空间对齐和关系细化再输出统一通道数的融合特征。当前YOLO26适配版保留了LPRM的动态局部关系核心并将原论文面向非均匀坐标的上采样过程改造成适合YOLO26多尺度Neck输入输出契约的可运行模块。核心代码classLPRMAlignUpModule(nn.Module):def__init__(self,low_res_channels,high_res_channels,kernel_size3,align_cornersFalse,compress_ratio4):super().__init__()self.align_cornersalign_corners predictor_in_channelslow_res_channelshigh_res_channels compressed_channelspredictor_in_channels//compress_ratio self.compress_conv_lownn.Sequential(nn.Conv2d(low_res_channels,compressed_channels,1,biasTrue))self.compress_conv_highnn.Sequential(nn.Conv2d(high_res_channels,compressed_channels,1,biasTrue))self.lprmLPRM_efficient(channelscompressed_channels,kernel_sizekernel_size,upscale2)self.lpr_convnn.Conv2d(compressed_channels,kernel_size**2,3,padding1)defforward(self,x_low,guidance_high_aligned):_,_,target_h,target_wguidance_high_aligned.shape compressed_lowself.compress_conv_low(x_low)compressed_highself.compress_conv_high(guidance_high_aligned)lpr_featF.interpolate(self.lpr_conv(compressed_low),scale_factor2,modebilinear,align_cornersself.align_corners)F.interpolate(self.lpr_conv(compressed_high),size(x_low.size(-2)*2,x_low.size(-1)*2),modebilinear,align_cornersself.align_corners)x_lowself.lprm(lpr_feat,x_low)returnF.interpolate(x_low,size(target_h,target_w),modebilinear,align_cornersself.align_corners)YOLO26引入代码在根目录下的ultralytics/nn/目录新建一个neck目录然后新建一个以LPRMAlignUpModule.py为文件名的py文件 把代码拷贝进去。from__future__importannotationsfromcollections.abcimportSequenceimporttorchimporttorch.nnasnnimporttorch.nn.functionalasFfromultralytics.nn.modules.convimportConvclass_LocalPixelRelation(nn.Module):Apply dynamic k-by-k local relations to a BCHW feature map.def__init__(self,channels:int,kernel_size:int3)-None:super().__init__()ifkernel_size1orkernel_size%20:raiseValueError(kernel_size must be a positive odd integer)self.channelsint(channels)self.kernel_sizeint(kernel_size)self.paddingself.kernel_size//2defforward(self,relation_logits:torch.Tensor,value:torch.Tensor)-torch.Tensor:ifrelation_logits.ndim!4orvalue.ndim!4:raiseValueError(relation_logits and value must be 4D BCHW tensors)b,_,h,wvalue.shape k2self.kernel_size*self.kernel_sizeifrelation_logits.shape[1]!k2:raiseValueError(fexpected{k2}relation channels, got{relation_logits.shape[1]})ifrelation_logits.shape[-2:]!(h,w):relation_logitsF.interpolate(relation_logits,size(h,w),modebilinear,align_cornersFalse)weightsrelation_logits.reshape(b,1,k2,h,w).softmax(dim2)paddedF.pad(value,(self.padding,)*4,modereplicate)patchesF.unfold(padded,kernel_sizeself.kernel_size,padding0,stride1,)patchespatches.reshape(b,self.channels,k2,h,w)return(patches*weights).sum(dim2)classLPRMAlignUpModule(nn.Module):def__init__(self,in_channels:Sequence[int],out_channels:int,kernel_size:int3,align_corners:boolFalse,compress_ratio:int4,)-None:super().__init__()low_res_channels,high_res_channels(int(c)forcinin_channels)self.low_res_channelslow_res_channels self.high_res_channelshigh_res_channels self.out_channelsint(out_channels)self.align_cornersbool(align_corners)predictor_in_channelslow_res_channelshigh_res_channels compressed_channelsmax(8,predictor_in_channels//int(compress_ratio))self.compressed_channelscompressed_channels self.compress_conv_lownn.Conv2d(low_res_channels,compressed_channels,kernel_size1,biasTrue)self.compress_conv_highnn.Conv2d(high_res_channels,compressed_channels,kernel_size1,biasTrue)self.lpr_convnn.Conv2d(compressed_channels,kernel_size*kernel_size,kernel_size3,padding1)self.lprm_LocalPixelRelation(low_res_channels,kernel_sizekernel_size)self.guidance_to_low(nn.Identity()ifhigh_res_channelslow_res_channelselsenn.Conv2d(high_res_channels,low_res_channels,kernel_size1,biasFalse))self.conv_finalConv(low_res_channels,self.out_channels,1)defforward(self,inputs:Sequence[torch.Tensor])-torch.Tensor:x_low,x_highinputs target_sizex_high.shape[-2:]relation_lowself.lpr_conv(self.compress_conv_low(x_low))relation_highself.lpr_conv(self.compress_conv_high(x_high))ifrelation_low.shape[-2:]!target_size:relation_lowF.interpolate(relation_low,sizetarget_size,modebilinear,align_cornersself.align_corners)relation_logitsrelation_lowrelation_highifx_low.shape[-2:]!target_size:x_lowF.interpolate(x_low,sizetarget_size,modebilinear,align_cornersself.align_corners)aligned_lowself.lprm(relation_logits,x_low)guidanceself.guidance_to_low(x_high)fusedaligned_lowguidancereturnself.conv_final(fused)注册在ultralytics/nn/tasks.py中进行如下操作步骤1:fromultralytics.nn.neck.LPRMAlignUpModuleimportLPRMAlignUpModule步骤2修改def parse_model(d, ch, verboseTrue):elifmisLPRMAlignUpModule:c2make_divisible(min(args[0],max_channels)*width,8)ifargselsech[f[0]]args[[ch[index]forindexinf],c2,*args[1:]]配置yolo26-LPRMAlignUpModule.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]# summary: 260 layers, 2,572,280 parameters, 2,572,280 gradients, 6.1 GFLOPss:[0.50,0.50,1024]# summary: 260 layers, 10,009,784 parameters, 10,009,784 gradients, 22.8 GFLOPsm:[0.50,1.00,512]# summary: 280 layers, 21,896,248 parameters, 21,896,248 gradients, 75.4 GFLOPsl:[1.00,1.00,512]# summary: 392 layers, 26,299,704 parameters, 26,299,704 gradients, 93.8 GFLOPsx:[1.00,1.50,512]# summary: 392 layers, 58,993,368 parameters, 58,993,368 gradients, 209.5 GFLOPs# YOLO26n backbonebackbone:-[-1,1,Conv,[64,3,2]]-[-1,1,Conv,[128,3,2]]-[-1,2,C3k2,[256,False,0.25]]-[-1,1,Conv,[256,3,2]]-[-1,2,C3k2,[512,False,0.25]]-[-1,1,Conv,[512,3,2]]-[-1,2,C3k2,[512,True]]-[-1,1,Conv,[1024,3,2]]-[-1,2,C3k2,[1024,True]]-[-1,1,SPPF,[1024,5,3,True]]-[-1,2,C2PSA,[1024]]head:-[-1,1,nn.Upsample,[None,2,nearest]]-[[-1,6],1,LPRMAlignUpModule,[512]]-[-1,2,C3k2,[512,True]]-[-1,1,nn.Upsample,[None,2,nearest]]-[[-1,4],1,LPRMAlignUpModule,[256]]-[-1,2,C3k2,[256,True]]-[-1,1,Conv,[256,3,2]]-[[-1,13],1,LPRMAlignUpModule,[512]]-[-1,2,C3k2,[512,True]]-[-1,1,Conv,[512,3,2]]-[[-1,10],1,LPRMAlignUpModule,[1024]]-[-1,1,C3k2,[1024,True,0.5,True]]-[[16,19,22],1,Detect,[nc]]实验脚本importwarnings warnings.filterwarnings(ignore)fromultralyticsimportYOLOif__name____main__:# 修改为自己的配置文件地址modelYOLO(./ultralytics/cfg/models/26/yolo26-LPRMAlignUpModule.yaml)# 修改为自己的数据集地址model.train(data./ultralytics/cfg/datasets/coco8.yaml,cacheFalse,imgsz640,epochs10,single_clsFalse,# 是否是单类别检测batch8,close_mosaic10,workers0,optimizerMuSGD,# optimizerSGD,ampFalse,projectruns/train,nameLPRMAlignUpModule,)结果

相关新闻

Cloud 3.0 实战:算力调度、应用交付与成本优化的三大挑战

Cloud 3.0 实战:算力调度、应用交付与成本优化的三大挑战

/* 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 1:44:13 阅读更多 →
组合导航中的杆臂效应与外参标定:从原理到工程实践

组合导航中的杆臂效应与外参标定:从原理到工程实践

/* 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 1:43:13 阅读更多 →
单相逆变器下垂控制原理与工程实践

单相逆变器下垂控制原理与工程实践

1. 项目概述:下垂控制在单相逆变器并机中的核心价值在分布式发电系统中,多台逆变器并联运行是提升系统容量和可靠性的关键技术。传统控制方法在并联运行时往往面临环流问题、功率分配不均等挑战。下垂控制通过模拟同步发电机的调频特性,实现了…

2026/10/14 1:43:13 阅读更多 →

最新新闻

风电水电联合调度优化算法与工程实践

风电水电联合调度优化算法与工程实践

1. 项目背景与核心价值去年参与某省级电网清洁能源消纳项目时,我第一次接触到风-水联合调度这个课题。当时面对风电出力的强随机性和水电调节的滞后性,团队在制定优化运行方案时遇到了不少挑战。这个经历让我深刻认识到:在双碳目标下&#xf…

2026/10/14 2:21:24 阅读更多 →
从PowerDesigner迁移到PDMan:开源数据库建模与Git版本管理实践

从PowerDesigner迁移到PDMan:开源数据库建模与Git版本管理实践

1. 为什么我最终把数据库建模从商业软件迁到了PDMan做后端开发时间长了,数据库建模这件事几乎绕不开。早些年团队里清一色用PowerDesigner,画物理模型、生成DDL、导出字段文档,一套流程走下来确实顺手。但问题也很明显:正版授权费…

2026/10/14 2:21:24 阅读更多 →
微信小程序仿智行火车票开发实战:云开发+数据离线化方案

微信小程序仿智行火车票开发实战:云开发+数据离线化方案

简介:本资源是一套完整的微信小程序仿智行火车票12306系统实战项目,面向Java后端与小程序前端初学者及全栈学习者,聚焦铁路订票核心业务场景,涵盖用户查询、车次管理、订单生成等全流程功能实现。项目采用SSM(SpringSp…

2026/10/14 2:21:23 阅读更多 →
RTMP Flash播放插件替代方案:flv.js迁移实战与参数调优

RTMP Flash播放插件替代方案:flv.js迁移实战与参数调优

简介:这份资源是面向需要在网页中播放RTMP流媒体的开发者与运维人员的一套Flash播放插件实现方案,核心解决旧系统或特定场景下通过Flash技术播放RTMP直播、点播流的问题。压缩包共5个文件,约1.15MB,包含2个swf播放器与安装检测组件…

2026/10/14 2:21:23 阅读更多 →
AI编程助手代码质量救星:TypeScript静态类型约束实战

AI编程助手代码质量救星:TypeScript静态类型约束实战

AI 编程助手越帮越乱,这个话题我最近真的是感同身受。我们团队接入 AI 编程助手之后,合并请求里的代码量倒是上去了,可编译期错误非但没减少,反而冒出来一批"语法完全合法、类型对不上、一跑就崩"的代码。后来大家坐下来…

2026/10/14 2:21:23 阅读更多 →
LaTeX 2025环境配置:texlive + TeXstudio

LaTeX 2025环境配置:texlive + TeXstudio

文章目录Latex2025环境配置一、LaTeX 简介1.1 什么是 LaTeX?1.2 为什么使用 LaTeX?1.3 如何开始使用 LaTeX?二、texlive下载安装2.1 texlive下载2.2 texlive安装2.3 常见问题2.3.1 用管理员权限打开install-tl-windows.bat 报错2.3.2 Latex安…

2026/10/14 2:20:23 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →