【TGRS 2026即插即用模块】FSConv新颖的频域-空间卷积,同时利用局部目标特征和全局背景信息,适合红外小目标检测、图像分类、目标检测、实例分割、遥感目标检测等任务中均表现优异

发布时间:2026/8/1 16:40:29
【TGRS 2026即插即用模块】FSConv新颖的频域-空间卷积,同时利用局部目标特征和全局背景信息,适合红外小目标检测、图像分类、目标检测、实例分割、遥感目标检测等任务中均表现优异 一、论文信息本文目录一、论文信息二、论文摘要概况三、 FSConv模块结构图四、 FSConv模块的作用五、 FSConv模块的原理六、 FSConv模块的优势七、即插即用模块代码论文题目Think Locally and Act Globally: A Frequency–Spatial Fusion Network forInfrared Small Target Detection中文题目“立足本地放眼全球一种用于红外小目标检测的频域-空间融合网络”论文链接https://ieeexplore.ieee.org/stamp/stamp.jsp?tparnumber11175146所属单位南京信息工程大学二、论文摘要概况红外小目标检测IRSTD由于信噪比极低而仍面临诸多挑战。现有方法难以在精度与速度之间取得平衡尤其是在计算资源有限的情况下。为解决这些问题我们提出了基于YOLO v10n架构的频域-空间上下文融合网络FSCFNet。特别地我们设计了新颖的频域-空间卷积FSConv该模块通过Haar小波变换WT对输入特征进行分解高频线索聚焦于局部细节以突出小目标而低频线索则提供全局信息以补充空间特征。随后我们开发了非对称跨域注意力机制ACA用于增强局部中心特征提取从而反映小目标典型的空间高斯分布模式。此外我们引入了定制化的多尺度感受上下文块MRCB通过利用多样化的膨胀卷积来捕捉长程信息。同时采用Wasserstein距离损失函数WDL以提升边界框的质量。我们在三个公开数据集—— IRSTD -1k、 NUDT - SIRST 和 NUAA - SIRST 上进行了大量实验结果证实了FSCFNet的有效性。值得注意的是在 IRSTD -1k数据集上FSCFNet在精确率、召回率和AP50指标上均优于基线模型分别高出4.7%、3.3%和3.9%且参数量仅增加了3.6%。FSCFNet为资源受限环境下的实时红外监控系统提供了鲁棒的解决方案。与其它最先进的目标检测器在参数量、GFLOPs及FPS方面进行对比。每个气泡的大小均对应模型参数量。来自 IRSTD -1k的 IRST 数据的灰度三维可视化图[6]。右下角图像索引.三、 FSConv模块结构图四、 FSConv模块的作用1. 保留红外小目标的细节信息。红外小目标通常只占几个或几十个像素经过连续卷积和下采样后目标的亮度变化、边缘以及局部纹理很容易被平滑掉。FSConv引入频率域处理将目标周围的细微灰度变化单独提取出来使这些容易丢失的特征在网络深层仍能保持较明显的响应从而降低小目标漏检的概率。2. 同时利用局部目标特征和全局背景信息。在红外图像中真实目标往往与云层亮点、海面反光、建筑热源等背景干扰较为相似只观察局部区域容易产生误判。FSConv一方面利用高频信息突出目标的局部变化另一方面利用低频信息描述较大范围的背景结构使网络能够结合目标本身和周围环境进行判断。3. 减少下采样造成的特征损失。FSCFNet将FSConv放在骨干网络的深层阶段用来替换原有的SCDown模块。此时网络已经获得了一定的语义信息FSConv能够在完成特征压缩的同时继续保留小目标结构避免目标在深层语义提取过程中被背景特征覆盖。4. 增强复杂背景下的目标识别能力。红外小目标检测的难点不仅在于目标尺寸小还在于背景噪声多、信噪比较低。FSConv通过联合分析频率特征和空间特征增强与目标相关的响应同时削弱平滑背景和无关杂波使目标与背景之间的差异更加清晰。五、 FSConv模块的原理1. 先扩展通道再划分为两条处理分支。设输入特征为 XXXFSConv首先使用深度卷积对其进行通道扩展可简单表示为扩展后的特征沿通道方向被分成两部分一部分进入频率分支另一部分进入空间分支。这样设计可以让频率信息和空间信息分别提取避免两类特征在处理初期相互干扰。2. 使用Haar小波变换分解频率信息。频率分支采用Haar离散小波变换将输入特征分解为一个低频分量和三个高频分量其中AAA是低频近似分量主要保存图像的整体结构和背景分布HHH、VVV和DDD分别表示水平、垂直和对角方向的高频分量主要反映边缘、纹理以及局部灰度突变。3. 融合三个方向的高频细节。三个高频分量先在通道维度上进行拼接随后使用分组卷积提取高频特征。水平、垂直和对角方向的信息经过融合后可以较完整地描述小目标周围的局部变化。由于红外小目标通常表现为与周围背景存在灰度差异的点状区域因此高频特征对目标识别具有较强的辅助作用。4. 单独处理低频背景信息。低频分量通过深度卷积进行处理得到低频特征 FlF_lFl​。这部分特征主要描述场景轮廓、背景亮度分布和较大尺度的结构变化。它虽然不能直接突出微小目标但可以帮助网络判断局部亮点所处的背景环境从而减少由云层、建筑或热源造成的误检。5. 保留一条独立的空间特征分支。空间分支直接使用三乘三深度卷积提取特征得到空间特征 FsF_sFs​。该分支主要保存目标的位置、轮廓、灰度分布以及像素之间的邻接关系。这样即使经过小波分解网络仍然能够保留目标定位所需要的原始空间结构。6. 利用高频特征调整空间通道权重。FSConv先对高频特征进行全局平均池化得到各个通道的整体响应随后通过两层映射和Sigmoid函数计算通道权重这些权重用于重新调整空间特征。与目标边缘和局部变化关系较强的通道会得到增强主要表示平滑背景或无关内容的通道则会受到抑制。因此高频特征不仅提供局部细节还承担了引导空间特征筛选的作用。7. 完成频率域与空间域特征融合。经过高频信息调整后的空间特征与低频特征进行拼接再通过卷积完成通道压缩最终输出可以简化表示为融合后的特征同时包含目标的局部细节、背景的整体结构以及目标的空间位置信息。因此FSConv并不是简单地用小波变换代替普通卷积而是在原有空间卷积的基础上增加频率分析并通过通道权重实现有选择的信息融合。六、 FSConv模块的优势1. 对小目标细节的保留效果更好。普通卷积在下采样时容易削弱尺寸较小、对比度较低的目标而FSConv可以通过高频分量保留目标的边缘和局部灰度变化。论文中的特征可视化结果表明与标准卷积相比FSConv在特征图尺寸缩小后仍能保留更多无人机的纹理和结构信息。2. 能够兼顾目标增强和背景抑制。只使用高频信息虽然可以突出目标但也可能放大噪声和复杂纹理只依赖低频信息又容易忽略微小目标。FSConv将高频细节、低频背景和空间结构结合起来使网络在增强目标响应的同时能够利用整体背景判断目标的真实性。3. 更适合复杂红外场景。海面、云层、城市建筑和高亮区域中经常存在与小目标外观相近的干扰。FSConv利用低频分量分析较大范围的背景再利用高频分量寻找局部异常有助于区分真实目标和背景热斑进而减少误检。4. 在深层网络中表现更加稳定。论文的位置消融实验表明FSConv放置在骨干网络较深的层级时综合效果更好。浅层特征中包含大量纹理和噪声直接增强高频信息可能引入无关响应深层特征经过语义提炼后高频成分更接近真实目标结构低频成分也能提供更可靠的背景语义。5. 参数量和计算开销较低。FSConv内部主要采用深度卷积和分组卷积减少了普通卷积中的密集跨通道计算。论文指出在YOLO系列常见的通道规模下FSConv相比标准三乘三卷积能够减少约68.2%的参数量适合计算资源有限或对实时性要求较高的红外监测设备。6. 可以嵌入不同检测网络。FSConv属于可插拔卷积模块不依赖固定的检测头或骨干结构。论文分别在YOLOv10n和VFNet中进行了实验两种网络在替换为FSConv后均取得了较好的综合检测结果说明该模块具有一定的迁移能力和通用性。7. 在精度与效率之间取得较好平衡。在YOLOv10n的卷积模块对比实验中FSConv取得了0.897的精确率、0.882的AP50和0.544的AP50:95同时只带来了较小的参数增量。这说明其性能提升主要来自频率域与空间域的有效互补而不是简单依靠扩大模型规模。基于 IRSTD -1k数据集[6]中红外图像的FSConv与标准Conv的输出可视化结果右下角显示FSConv在保持无人机纹理与结构细节方面优于Conv。七、即插即用模块代码import math import torch from pytorch_wavelets import DWTForward import torch.nn as nn from torch.nn import init from ultralytics.nn.modules import Conv class SEAttention(nn.Module): def __init__(self, channel512,reduction16): super().__init__() self.avg_pool nn.AdaptiveAvgPool2d(1) self.fc nn.Sequential( nn.Linear(channel, channel // reduction, biasFalse), nn.ReLU(inplaceTrue), nn.Linear(channel // reduction, channel, biasFalse), nn.Sigmoid() ) def init_weights(self): for m in self.modules(): if isinstance(m, nn.Conv2d): init.kaiming_normal_(m.weight, modefan_out) if m.bias is not None: init.constant_(m.bias, 0) elif isinstance(m, nn.BatchNorm2d): init.constant_(m.weight, 1) init.constant_(m.bias, 0) elif isinstance(m, nn.Linear): init.normal_(m.weight, std0.001) if m.bias is not None: init.constant_(m.bias, 0) def forward(self, x): b, c, _, _ x.size() y self.avg_pool(x).view(b, c) y self.fc(y).view(b, c, 1, 1) return x * y.expand_as(x) class FSConv(nn.Module): def __init__(self, c1, c2, k3): super().__init__() self.c1 c1 self.conv1 Conv(c1, 2 * c1, 1, gc1) self.wt DWTForward(J1, modezero, wavehaar) self.conv2 Conv(c1, c2, k, 2, gmath.gcd(c1, c2)) self.conv3 Conv(c1 * 3, c2, 3, d1, gmath.gcd(c1 * 3, c2)) self.se SEAttention(c2) self.conv4 Conv(c1, c2, 3, gmath.gcd(c1, c2)) self.conv5 Conv(2 * c2, c2, 1) def forward(self, x): x0 self.conv1(x) x1, x2 torch.split(x0, self.c1, dim1) conv_spatial self.conv2(x1) yL, yH self.wt(x2) y_HL yH[0][:, :, 0, :] y_LH yH[0][:, :, 1, :] y_HH yH[0][:, :, 2, :] high_frequency_fused torch.cat([y_HL, y_LH, y_HH], dim1) high_frequency_fused_output self.conv3(high_frequency_fused) high_frequency_fused_output self.se(high_frequency_fused_output) low_frequency_fused_output self.conv4(yL) spatial_output conv_spatial * high_frequency_fused_output fused torch.cat([spatial_output, low_frequency_fused_output], dim1) out self.conv5(fused) return out if __name__ __main__: input torch.randn(2, 32, 128, 128) model FSConv(32, 32) print(model) print(CSDN:AI魔改博士) output model(input) print(FSConv input_size:, input.size()) print(FSConv output_size:, output.size())