【TMM 2026 】LFEM(局部特征增强模块):多卷积分支、通道洗牌、RGB/IR双路增强
·
模块来源
- Paper:FreDFT: Frequency Domain Fusion Transformer for Visible-Infrared Object Detection
- Code:WenCongWu/FreDFT

模块整体简介
LFEM(Local Feature Enhancement Module)是 FreDFT 中用于双模态局部特征增强的前置模块,面向 RGB/IR 特征图分别建模。论文将其放在 CGMM 和 FDFAM 之前,目的在于通过不同卷积感受野提取多区域局部信息,并借助 channel shuffle 促进通道交互,最终增强细粒度纹理、边缘和局部目标响应,为后续跨模态全局建模与频域融合提供更强表征。
模块结构展示
- 论文位置:III.B
Local feature enhancement module - 结构图:Fig. 3(LFEM结构)
- 论文原生结构梳理:
- 输入特征
F_RGB/F_IR - 先经
1×1 Conv + BN + SiLU做通道映射与非线性增强 - 并行使用四种卷积提取局部信息:
3×3 Conv3×3 Dilated Conv3×3 Deformable Conv3×3 Depth-wise Conv
- 将四路结果拼接
- 通过
channel shuffle增强通道间信息交换 - 再经
1×1 Conv压缩通道 - 与初始输入残差相加,得到增强后的 RGB/IR 特征
- 输入特征
设计出发点
- 现有方法缺陷:论文指出,许多 RGB-IR 方法主要依赖单一路径或简单融合,局部信息利用不足;同时,模态差异会削弱局部细节互补。
- 模块解决问题:LFEM专门增强多模态局部表征,提升不同区域、不同尺度下的纹理/边缘/目标轮廓建模能力。
- 核心创新思路:用多种卷积形式覆盖不同局部感受野,再通过通道洗牌促进特征重组,避免单一卷积对局部结构刻画不足。
适用场景与效果
- 适用场景:RGB-IR/Visible-Infrared 目标检测,多光谱行人检测,低照度、雾天、雨天、遮挡等复杂场景。
- 性能表现:在 FLIR 上,完整 FreDFT 达到
mAP50 83.5%、mAP 42.6%;消融中,仅加入 FDFAM 为81.7/42.3,加入 LFEM 后提升到82.8/42.4,说明 LFEM 有稳定增益。 - 局限性:论文讨论部分指出,面对严重遮挡、非站立姿态、小目标和模糊区域时仍会失败;LFEM本身偏局部增强,不能单独解决所有跨模态冲突问题。
代码实现与模块对应解析
1. 核心代码片段
class LFEM(nn.Module):
def __init__(self, in_channels):
super(LFEM, self).__init__()
self.CBSk1 = Conv(in_channels, in_channels, 1, 1)
self.CBSk3 = Conv(in_channels, in_channels, 3, 1)
self.dconv = nn.Sequential(
nn.Conv2d(in_channels, in_channels, kernel_size=3, stride=1, padding=3, dilation=3, bias=False),
nn.BatchNorm2d(in_channels),
nn.SiLU()
)
self.dfconv = DeformConv2d(in_channels, in_channels, kernel_size=3, padding=1, bias=False, modulation=True)
self.bn = nn.BatchNorm2d(in_channels)
self.silu = nn.SiLU()
self.dwconv = nn.Sequential(
nn.Conv2d(in_channels, in_channels, kernel_size=3, stride=1, padding=1, groups=in_channels, bias=False),
nn.BatchNorm2d(in_channels),
nn.SiLU()
)
self.CBS4C = Conv(4 * in_channels, in_channels, 1, 1)
def forward(self, x):
rgb_fea = x[0]
ir_fea = x[1]
rgb_fea0 = self.CBSk1(rgb_fea)
rgb_fea1 = self.CBSk3(rgb_fea0)
rgb_fea2 = self.dconv(rgb_fea0)
rgb_fea3 = self.silu(self.bn(self.dfconv(rgb_fea0)))
rgb_fea4 = self.dwconv(rgb_fea0)
rgb_fea_cat = torch.cat([rgb_fea1, rgb_fea2, rgb_fea3, rgb_fea4], dim=1)
rgb_fea_cat = channel_shuffle(rgb_fea_cat, 32)
new_rgb_fea = self.CBS4C(rgb_fea_cat)
new_rgb = new_rgb_fea + rgb_fea
ir_fea0 = self.CBSk1(ir_fea)
ir_fea1 = self.CBSk3(ir_fea0)
ir_fea2 = self.dconv(ir_fea0)
ir_fea3 = self.silu(self.bn(self.dfconv(ir_fea0)))
ir_fea4 = self.dwconv(ir_fea0)
ir_fea_cat = torch.cat([ir_fea1, ir_fea2, ir_fea3, ir_fea4], dim=1)
ir_fea_cat = channel_shuffle(ir_fea_cat, 32)
new_ir_fea = self.CBS4C(ir_fea_cat)
new_ir = new_ir_fea + ir_fea
return [new_rgb, new_ir]
2. 参数说明、使用实例、运行流程
- 输入:
x = [rgb_fea, ir_fea],两路特征张量,形状通常为[B, C, H, W] - 参数:
in_channels表示输入/输出通道数,模块内部保持通道数不变 - 输出:
[new_rgb, new_ir],增强后的双模态特征,形状仍为[B, C, H, W]
使用方式:
- 常见于双分支骨干网络的中后层特征融合前
- 直接以 RGB/IR 特征对作为输入,分别输出增强特征
- 其输出再送入 CGMM 或 FDFAM
整体流程:
- 双模态特征分别输入
- 统一用
1×1 Conv做预处理 - 四分支卷积提取局部模式
- 拼接 + 通道洗牌实现重组
1×1 Conv压缩回原通道- 残差连接保留原始信息
3. 代码-论文原理对应说明
self.CBSk1 = Conv(..., 1, 1):对应论文中“先采用1×1 convolution + BN + SiLU增加非线性且不改变特征图尺寸”。self.CBSk3 = Conv(..., 3, 1):对应标准3×3 Conv分支,用于捕获局部邻域信息。self.dconv = nn.Conv2d(..., dilation=3):对应论文中的D-Conv,通过空洞卷积扩大感受野,关注更大局部区域。self.dfconv = DeformConv2d(...):对应论文中的Df-Conv,用于自适应采样,增强对形变目标/复杂局部结构的建模。self.dwconv = ... groups=in_channels:对应Dw-Conv,强调逐通道局部提取,降低参数并保持局部敏感性。torch.cat([...], dim=1):对应论文中的多分支特征拼接。channel_shuffle(rgb_fea_cat, 32):对应论文里的 channel shuffle,用于促进通道间交互与重组。self.CBS4C = Conv(4 * in_channels, in_channels, 1, 1):对应“1×1 convolution用于特征维度压缩”。new_rgb_fea + rgb_fea、new_ir + ir_fea:对应论文中的残差相加,保留初始信息并增强局部特征。
更多推荐


所有评论(0)