PQGNet:感知引导与频率重构破解红外弱小目标漏检和边缘模糊

PQGNet:感知引导与频率重构破解红外弱小目标漏检和边缘模糊 红外图像里的弱小目标检测IRST这个方向做工程的人应该都有同感目标可能只有几个像素信噪比低得可怜边缘在红外成像机制下又天生发虚。你花大力气把网络搭得越来越复杂结果该漏的照样漏该糊的照样糊。最近读到一篇题为告别漏检与边缘模糊PQGNet 为红外弱小目标检测引入感知引导与频率重构新范式的工作TGRS 2026我第一反应是标题里的两个关键词切得准——感知引导和频率重构正好对应红外小目标两大老大难问题。这篇工作的核心思路是给模型两条互补的路径一条显式告诉网络往哪里看一条在频域把目标的边缘和细节重新捞回来。如果你做的是红外目标检测、遥感图像分析或者任何尺度极小、目标极弱的检测任务这个思路都值得花时间消化。1. 红外弱小目标检测到底难在哪1.1 先搞清楚弱小不是一个形容词是三个同时成立的约束很多刚接触红外小目标检测的朋友会把弱小目标理解成小了一点而已。真做起来才知道这个词是三个条件同时成立小、弱、边缘不确定。小指的是目标在成像面上占的像素极少。常见的中波红外探测器配上望远光学系统一个真实目标映射到焦平面上可能只有 3×3 到 9×9 个像素。9×9 听起来还没那么惨但注意一张 640×512 的红外图里9×9 的区域占总面积不到 0.025%。这种尺寸下目标几乎没有形状可言它更像一个亮度比周围略高的圆斑连纹理都没有。弱指的是目标和背景的温差小。红外成像本质上是把目标与背景的热辐射差转换成灰度差如果目标蒙皮温度和环境接近或者距离远、大气衰减严重目标的灰度值可能只比背景高出一两个灰度级甚至接近探测器噪声的幅度。你在显示软件里看到的那个若隐若现的点放大后其实就是噪声里几个像素的统计性偏差。边缘不确定则是红外光学系统本身带来的。由于衍射和像差理想点光源在焦平面上会被展宽成点扩散函数目标的边缘不是锐利跳变而是一个渐变的过渡带。再加上低信噪比下噪声叠在边缘上人眼和算法都很难确定目标真正的边界在哪里。这三个条件叠加起来红外小目标检测长期处在一种尴尬状态它不需要像大目标检测那样理解复杂语义但要求算法在极低信息量下做出高置信度的判断。1.2 漏检和边缘模糊为什么会同时出现注意一个关键点漏检和边缘模糊不是两个独立的问题它俩是同一个物理现象的两个结果。目标能量弱、像素少它的可分性主要来自局部对比度和高频突变。什么是高频突变就是目标与背景交界处那个灰度跳跃。这个跳跃保留了两种信息一是目标有没有突变代表异常二是目标边界在哪突变的位置就是边缘。一旦在特征提取过程中把高频信息丢掉目标能量随之衰减算法会漏检边缘位置失去依据分割结果就会糊。标准 CNN 骨干网络的默认设置对这种任务是雪上加霜。ResNet、VGG 这类结构动辄下采样 16 倍、32 倍一个 9×9 的目标经过 4 次池化后在特征图上可能只剩 1 个像素。这时候分类器面对的不是一个目标区域而是背景里的一个孤立点漏检几乎是必然的。反过来看为了抑制噪声很多方法会做平滑处理或者通过损失函数让网络学会忽略高频抖动。这确实压低了虚警但也把目标的边缘压没了。分割头在上采样恢复分辨率时边界被平均、被磨平最终输出一个大概在这里的模糊团块。抑制噪声和保留细节之间的平衡是红外小目标检测最核心的矛盾之一。1.3 现有方法的两个典型套路和它们的瓶颈红外小目标检测的方法大致能分成两代。第一代是传统信号处理/滤波方法代表有 Top-Hat 形态学滤波、Max-Median 滤波、LCM局部对比度、MPCM 等。它们的逻辑很直接目标的局部对比度比背景高我用一个滑动窗口计算中心与邻域的差异差异大的地方就是目标。这类方法计算量小、可解释性强在干净背景下效果不错。但一遇到云层边缘、地面热辐射、海杂波这些本身就有高对比度结构的背景虚警率立刻飙升。说白了它们把高频当成目标而真实场景里高频的噪声和地物边缘太多了。第二代是基于深度学习的检测级/分割式方法。主流的做法是把小目标检测建模成像素级二分类分割问题网络输出一张和输入同尺寸的概率图。这类方法比传统方法鲁棒很多近年在公开数据集上也刷新了不少纪录。但瓶颈也很明显常规骨干网络对大目标友好对小目标不友好下采样倍数和感受野之间的矛盾很难调和注意力机制可以帮网络聚焦重要区域但注意力分布本身会被背景干扰带偏目标弱的时候就注意不到大多数工作只优化像素级分类损失对目标轮廓、频率结构没有显式约束边缘模糊这个老问题一直没有被正面解决。PQGNet 的切入点恰恰就在这里它不打算用一个大而全的网络去同时兜住所有问题而是显式地把往哪里看和边缘细节拆成两个机制各管一段。2. PQGNet 的整体思路把看哪里和看什么分开2.1 感知引导让网络先学会往哪儿看再学会看得细感知引导这个词我在读的时候首先想到的是人眼的视觉搜索机制。你看一张红外图找目标时并不是盯住每个像素逐行扫描而是先用低空间频率的全局扫视快速锁定几个可疑区域然后把注意力集中过去细看。这个先粗后细、先全局后局部的过程就是 PQGNet 里感知引导想引入的归纳偏置。放到网络结构里感知引导一般表现为一个显式的空间先验信号网络在某个浅层或中间层输出一张和目标区域相关的空间概率图告诉主分支目标大概在这些位置。这和普通 attention 的区别在于attention 的权重是网络自己隐式学出来的谁也说不清楚它到底在看什么而感知引导这个概率图可以被显式监督比如用真值 mask 下采样后的软标签去约束它。训练阶段这个引导分支被迫学会先找出候选区域推理阶段它输出的概率图再去调制后续特征让分割头把有限的特征表达能力集中到候选目标附近。从工程角度理解感知引导更像一个可学习的候选区域生成器。它不见得需要多深的网络甚至一个几层的小卷积头就够了。关键是它的输出要稳定、要可解释。我之前在项目里做过类似的设计最大的体会是引导信号不要太强不要把特征直接相乘裁剪掉背景而是用类似feature * (1 guide)的加法式调制保留一部分背景上下文作为判别依据。否则一旦引导分支出错整个分割头都会被带偏。2.2 频率重构把目标看成低频背景上的高频突变再说频率重构。这个思路要从频域角度看红外图像。任何一张图都能通过傅里叶变换分解成一系列不同频率的正弦波。低频分量对应大面积缓变区域比如天空、海面的平滑背景高频分量对应突变和细节比如边缘、角点、噪声当然也包括弱小目标。红外小目标在空间域里和周围像素灰度差很小但在频域里它就是一个典型的局部高频突变。换句话说目标的可分性在频域里比在空间域里更明显。频率重构的核心思想就是不让网络只守着空间特征而是额外开一条频率分支把特征图变换到频域对高频子带做增强、对丢失的细节做重建再变换回空间域和主干特征融合。这样做的好处是高频增强可以抑制噪声的同时保留目标边缘因为目标和噪声在高频段的统计特征不同目标边缘具有结构性、方向性而噪声是随机的下采样过程中丢失的高频信息可以通过频率分支重新补回来频率分支和空间分支是互补的空间分支提供语义上下文频率分支提供边缘细节融合后既找得到目标又分得清边界。关于频域操作的具体实现目前常见的有两条技术路线基于快速傅里叶变换FFT的方法和基于小波变换DWT的方法。FFT 思路简单把特征图变成频谱处理幅值和相位再反变换回来DWT 思路更工程化把特征图分解成一个低频子带和三个方向的高频子带分别处理再重构。后面第三部分我会展开讲。2.3 为什么两条路径互补而不是重复计算有人可能会问感知引导已经让网络关注目标区域了再搞一个频率重构是不是重复这里要说清楚两个模块解决的是不同层面的问题。感知引导解决的是在哪找的定位问题面对低信噪比场景它能减少漏检频率重构解决的是找到之后边界到底在哪的精细分割问题它通过高频增强减少边缘模糊。可以这样类比感知引导是手电筒帮你快速把光束照到目标上频率重构是放大镜帮你把照到的细节看真切。没有手电筒放大镜不知道往哪看没有放大镜手电筒照到了也看不清。更有意思的是两者在训练时会形成正向循环。感知引导圈出候选区域频率分支只需要在候选区域内做高频重建任务更聚焦、更容易学反过来频率分支提供更锐利的边缘梯度又能反馈给引导分支让候选区域定位更准。这个闭环是 PQGNet 设计上最漂亮的地方——它不是一个模块单打独斗而是两个模块相互成就。3. PQGNet 结构拆解与复现要点3.1 整体框架主干提取、双流并行、融合输出先说清楚我手头拿到的 PQGNet 公开信息主要是标题、摘要和公开讨论下面这个结构拆解是结合我对这个方向的理解做的一次逆向还原用于帮助大家理解设计逻辑。如果和论文全文有出入一切以原文为准。按照该方向的主流套路PQGNet 大概率是一个 encoder-decoder 结构整体可以分成四块骨干网络负责从原始红外图提取多尺度特征。考虑到遥感和边缘设备部署骨干不太可能用过于笨重的结构ResNet-18/34、MobileNet、Swin-T 这类都可能是候选。对于小目标骨干的选择其实比参数大小更关键步长stride一定要小理想情况是总下采样不超过 8 倍。感知引导分支一般从中间层引出输出一个与输入大小成比例的空间概率图作为候选目标区域的显式先验。频率重构分支对某几个阶段的特征做频域变换增强高频分量后反变换回来与空间特征融合。这个分支可以串接在主干后面也可以和主干并行工程上并行更容易调优。融合分割头把引导调制后的空间特征和频率重建特征拼接/相加通过若干卷积层输出逐像素的目标置信图。如果我来组织训练流程大致是这样的红外单帧图像进骨干得到多层特征感知引导分支在浅层生成候选概率图用来调制后续特征频率重构分支在深层特征上做高频增强最后两层特征融合送入分割头输出结果。整体上是一个典型的双流 单解码结构和单纯堆 transformer 的路线相比计算开销相对可控。3.2 感知引导模块的三种实现路线感知引导的具体实现在复现时可以从三个方案里选方案一辅助分割头Auxiliary Head生成 soft mask。在骨干的浅层特征上接一个 1×1 卷积和 sigmoid输出尺寸和输入图像接近的空间概率图。训练时用 GT mask 下采样后的软标签去监督它推理时这个概率图就是引导信号。这个方案最简单推荐第一次复现时优先尝试。方案二注意力调制Attention Modulation。把引导概率图当作空间注意力去调制融合特征。公式大概是f_out f_in * (1 w * guide)其中 w 是可学习的缩放系数。关键在于加法调制而不是乘法硬掩膜给背景特征留一点通路。方案三可学习的门控Learnable Gate。让网络自己学会引导图应该对特征产生多大影响可以用一个小卷积网络从引导图中预测一组通道级/空间级的缩放因子。这个更灵活但训练难度高一些建议在方案一稳定后再尝试。我在实际项目里踩过一个坑引导分支的监督信号不能只看像素级 loss否则它在简单场景学得很好一到复杂背景就开始乱指。后来我把引导图的输出概率限制在一个合理范围比如经过 sigmoid 后乘一个 0.5 的固定缩放强迫网络不要过度自信。小目标本来就微弱引导分支太自信等于在给后续模块埋雷。3.3 频率重构分支的两种路线和一份可运行示意频率重构在代码层面比感知引导复杂一点核心是把特征图转到频域做增强再转回来。两条路线我分别说下。FFT 路线对特征图 X 做二维 FFT得到复频谱 F把 F 拆成振幅谱 A 和相位谱 P。相位谱保存了边缘的位置信息振幅谱保存了各频率成分的能量。增强手段通常是在振幅谱的高频区域乘一个可学习权重或者一个高频掩膜然后和原相位重建再做逆 FFT。这个路线数学上干净但工程上有几个暗坑复数的梯度计算、padding 方式对边缘伪影的影响、以及部署时大多数推理引擎对 FFT op 支持不友好。DWT 路线对特征图做离散小波变换得到四个子带LL低频近似、LH水平高频、HL垂直高频、HH对角高频。LL 拿去做上下文建模LH/HL/HH 三个高频子带去增强。增强方式可以是最简单的 1×1 卷积也可以加一个 sigmoid 门控来控制增强强度然后用逆小波变换IDWT恢复空间域特征。DWT 的好处是空间位置关系保留得清楚、可逆、训练稳定而且 Haar 小波的滤波器是常数矩阵部署时完全可以展开成固定卷积来绕过自定义算子问题。我个人的工程偏好是 DWT 路线下面给一份可以快速跑通的示意代码import torch import torch.nn as nn import pywt import pytorch_wavelets as pw class FreqReconstruct(nn.Module): def __init__(self, in_channels, out_channels): super().__init__() self.dwt pw.DWTForward(J1, wavehaar, modezero) self.idwt pw.DWTInverse(wavehaar, modezero) # 高频子带增强模块输入是3个方向的拼接 self.enhance nn.Sequential( nn.Conv2d(in_channels * 3, in_channels, kernel_size3, padding1), nn.ReLU(inplaceTrue), nn.Conv2d(in_channels, in_channels * 3, kernel_size3, padding1), ) self.fuse nn.Conv2d(in_channels * 2, out_channels, kernel_size1) def forward(self, x): # x: [B, C, H, W] Yl, Yh self.dwt(x) # Yl: [B, C, H/2, W/2], Yh: [B, C, 3, H/2, W/2] B, C, _, Hl, Wl Yh.shape # 3个高频方向拼接起来做增强 h_cat torch.cat([Yh[:, :, 0], Yh[:, :, 1], Yh[:, :, 2]], dim1) # [B, 3C, H/2, W/2] h_enhanced self.enhance(h_cat) _, _, Hh, Wh h_enhanced.shape h_enhanced h_enhanced.view(B, C, 3, Hh, Wh) x_rec self.idwt((Yl, h_enhanced)) # [B, C, H, W] x_out self.fuse(torch.cat([x, x_rec], dim1)) return x_out这段代码是示意性质的实际使用时要注意几点DWT 要求输入 H、W 是偶数如果输入尺寸不满足需要先 paddingwave参数选 haar 最稳db2 这类更平滑的小波对边缘重建效果略好但梯度传播更容易出问题新手先别换。3.4 损失函数与训练策略配置损失函数的设计直接影响不漏检和不模糊能不能同时成立。我建议按四个分量组合主分割损失BCE Dice或 IoU loss。小目标在整幅图里占比太小单纯 BCE 会让网络倾向于预测全背景加上 Dice/IoU 可以强制网络重视正样本。引导分支损失引导图和 GT mask 的下采样版本做 BCE 或 MSE。这里用 soft 的监督比 hard label 好可以避免引导图学得太尖锐。频率重建损失把预测图和 GT mask 都做 FFT比较它们在频谱上的差异重点给高频段更高权重。这一步可以直接约束网络把高频补回来。边缘损失用 Sobel 或 Laplacian 算子提取预测图和 GT 的边缘图做 BCE。这是针对边缘模糊的直接监督信号。损失权重的参考配置主分割 1.0引导 0.5频率 0.3边缘 0.3。这个比例不是固定的边界模糊严重就加大频率/边缘权重漏检严重就加大引导权重。训练策略上我建议分两阶段。第一阶段先训练骨干 感知引导分支让网络先学会定位在这个阶段关闭频率分支或者不让它的梯度影响主干。第二步再联合训练频率重构分支做整体微调。这个先粗后细的顺序和感知引导的设计哲学是一致的也能避免两个模块在训练初期互相干扰导致 loss 震荡。4. 实验怎么设计才能证明不漏检、不模糊4.1 数据集与评测协议红外小目标检测方向现在有不少公开基准。常见的数据集包括 NUDT-SIRST、IRSTD-1k、SIRST、IRDST 等这些数据集覆盖了天空、海面、地面等多种场景目标尺寸和信噪比各有差异。TGRS 这类期刊对实验完备性要求很高论文里一般会给出在多个数据集上的对比表而且会严格说明训练集、验证集、测试集的划分方式和随机种子方便复现。在这里我想提醒一点小目标数据集的 GT 标注本身就有坑。有些数据集的 GT 是单个像素点或小矩形框有些是多边形精确标注不同标注标准会直接影响 loss 计算和指标评估。复现时如果发现指标对不上先检查一下你用的 GT 是否经过统一后处理比如把 GT 中心像素膨胀到 3×3。这类细节会直接影响频率损失和边缘损失的计算结果非常值得先对齐。4.2 关键指标怎么看Pd、Fa、IoU、nIoU判断一个模型到底有没有解决漏检和模糊不能只看一张分割图像不像。常用指标四个Pd检测概率检测到的目标数占真实目标数的比例。漏检问题主要看它。Fa虚警率虚警目标数。感知引导如果做得不好会把背景当成目标Fa 会飙升。IoU交并比预测目标区域和 GT 区域的交并比。边缘模糊、分割不准IoU 就会下降。nIoU归一化 IoU对目标尺寸归一化后的 IoU避免大目标主导指标。这个指标对小目标特别友好论文里大概率会出现。我的经验是光看平均 IoU 很容易被幸存者偏差骗到。现实中很多模型把所有中等尺寸目标都报得很好但一到 3×3 以下的小目标就集体失灵。所以建议除了平均指标还要按目标尺寸分桶统计。比如把测试集按目标面积分成 ≤3×3、4×4~8×8、8×8 三组分别报告 Pd 和 nIoU。如果一个模型只在 8×8 组表现好不能说明它解决了小目标问题。4.3 消融实验的逻辑PQGNet 这类双组件架构消融实验是审稿人最喜欢的部分。从复现者的角度我建议至少设计以下几组对比实验设置想验证的问题完整 PQGNet感知引导 频率重构最终性能基线去掉感知引导只保留频率重构感知引导对漏检的贡献去掉频率重构只保留感知引导频率重构对边缘模糊的贡献把感知引导换成普通 SE/CA 注意力感知引导是否优于通用注意力把频率重构换成普通卷积增强频率分支是否优于空间域增强不同骨干ResNet-18/MobileNet/Swin-T结构对骨干的依赖程度这种消融设计的好处是每个模块的增益都能归因清楚。如果你复现时发现去掉感知引导后指标下降不明显那大概率是引导分支的监督设计不够强或者引导信号没有真正参与后续特征调制。反过来如果去掉频率重构后 IoU 不降说明高频增强的实现没有起效要先检查频域增强的权重是不是学到接近零了。4.4 可视化与鲁棒性分析除了指标表论文里一般还会给一组可视化图。相对于单纯贴分割图我建议做三件事第一频域可视化。把预测图和 GT 都做 FFT把振幅谱画出来对比直观展示频率重构分支确实补回了哪些高频成分。这个图在审稿和汇报时说服力很强因为普通读者一眼就能看出高频回来了。第二置信度图/缺陷分布图。把模型输出概率图在目标周围放大可以看出边缘是锐利还是弥散。这个对判断边缘模糊最直观。第三分桶鲁棒性曲线。按信噪比比如 SNR3、3~6、6和目标尺寸分组画出 Pd 曲线能看出模型在极端条件下的衰减规律。红外小目标的真实难点往往在低信噪比和极小尺寸这两个极端模型如果在这两档不掉链子才算真正解决了问题。5. 复现踩坑与工程化建议5.1 复现时最容易翻车的三个地方我按自己的经验列几个在复现频率相关结构时最容易踩的坑。第一FFT 的复数梯度和维度对齐。PyTorch 的torch.fft.rfft2返回的是复数张量后续如果做幅值/相位分离再接卷积梯度会经过复数运算稍不注意就会出现 NaN 或者 loss 不降。排查方法是打印每个分支的梯度范数如果频率分支梯度异常先用固定权重的高频掩膜替代可学习权重确认流程没问题再恢复可学习。第二DWT 的 padding 和尺寸对齐。DWT 要求每个 stage 输入尺寸是 2 的整数倍。网络特征图经过多层步长卷积后尺寸往往不是偶数需要在进入 DWT 前手动 padding逆变换后再裁剪回原始尺寸。这个细节会导致预测图尺寸对不上 GTloss 计算直接报错。第三引导信号的强度控制。如果引导 loss 权重太大网络很快会把整幅图上所有像素的概率压成 0 或 1反而丢失了弱目标的细节。比较稳妥的做法是在引导分支的输出上过一个 sigmoid再乘一个 0.5 左右的固定缩放让引导信号始终是软的。5.2 从论文到产品部署时的工程取舍如果这个模型要部署到实际产品里有两点需要提前规划。第一频率分支的算子兼容性。FFT/DWT 在很多嵌入式推理引擎上不是原生支持的算子。DWT 相对好办因为 Haar 小波的滤波系数是固定的常数可以把它展开成一组普通卷积来模拟这样就能在 ONNX/TensorRT 里跑通。FFT 就很难通过常规手段转换我建议部署版本直接去掉 FFT 分支。第二量化对高频信息的破坏。INT8 量化会把特征值映射到比较粗糙的整数网格高频细节往往是最先被牺牲的。如果你发现量化后的边缘明显变糊可以尝试对最后的高频融合层保持 FP16只量化主干部分或者把频率分支作为训练时的辅助监督部署时裁掉只保留空间分支 轻量感知引导。5.3 常见问题速查表这里把我预判的复现中常见问题整理成一张表方便排查现象可能原因排查方向训练 loss 不降或震荡频率分支梯度异常、复数运算出 NaN打印各分支 loss 和梯度范数加梯度裁剪换 DWT 路线预测结果全是背景引导分支输出过强把目标区域也压没了降低引导权重检查引导图可视化确认候选区域是否合理目标找到了但边缘还是糊频率增强太弱或边缘损失权重不足提高频率/边缘损失权重检查高频增强系数是否接近 0小目标在深层特征消失骨干下采样倍数过大减小总 stride使用高分辨率分支把输入分辨率提高训练 loss 很低但虚警高感知引导把背景误认为目标增加难例挖掘提高引导分支监督强度检查背景多样性部署后精度明显下降INT8 量化破坏高频对高层保留 FP16裁掉频率分支或用卷积替代 DWT5.4 这个思路还能往哪里扩展PQGNet 这套感知引导 频率重构的组合适用范围其实不限于红外弱小目标检测。我自己想到的几个延伸方向一是多帧红外序列。单帧信息不够如果把感知引导扩展到时序维度让网络先利用帧间一致性锁定候选区域再用频率分支精修边缘对低信噪比运动目标的检测会很有帮助。二是多光谱融合。红外和可见光图像融合时可见光提供纹理细节红外提供热辐射信息。感知引导可以从红外模态生成候选区域频率重构在可见光模态上做细节增强两者天然互补。三是微小缺陷检测。工业质检里很多缺陷比如划痕、暗点本质上也是小尺寸低对比度目标。这类场景和红外小目标检测非常相似PQGNet 的思路可以直接迁移只要把频域增强的侧重从目标边缘改成缺陷纹理就行。我在实际项目里做小目标检测最大的体会是把问题拆得越细调优越有抓手。漏检和边缘模糊是两个不同的问题就别指望一个通用模块同时解决它们。PQGNet 把往哪里看和边缘细节拆成两条路径让每个模块的贡献都清晰可见这个设计哲学比具体的网络层数更有参考价值。如果你准备复现这个思路我建议别一上来就搭完整结构先把频率重构分支接到一个最简单的分割 baseline 上确认高频增强确实让边缘 IoU 涨了再加入感知引导一步步来。这样就算和原文结果有出入你也清楚自己是在哪一步偏离的。