NLP情感分类中的模型中毒检测与防御策略
2026/6/11 2:58:55
现有红外与可见光图像融合算法多侧重视觉效果,语义驱动方法未充分挖掘图像级融合相对于特征级融合的潜力,而特征级融合存在计算量大、泛化性差、适配新骨干网络繁琐等问题。为此,本文提出 PSFusion 网络,包含场景恢复分支(含图像融合路径与场景保真路径)和稀疏语义感知分支。通过稀疏语义感知分支提取边界、语义、二值分割等多维度语义特征,借助渐进语义注入模块融入融合网络;场景保真路径约束融合特征保留源图像完整信息;基于对比掩码和显著目标掩码的融合损失保证视觉效果。实验验证,PSFusion 在 MSRS、M3FD 等多个数据集上,视觉质量和高级语义性能(如语义分割 mIoU)优于现有 SOTA 方法,且图像级融合搭配先进单模态分割模型,可媲美特征级融合方案,计算量更优。
PSFM(Profound Semantic Fusion Module,深层语义融合模块)的核心作用
PSFM 是 PSFusion 网络中针对深层语义特征聚合设计的关键模块,基于交叉注意力机制,核心作用是充分挖掘红外与可见光两种模态深层特征中的全局上下文语义信息,实现跨模态语义互补融合,为后续高级视觉任务(如语义分割、目标检测)提供强语义支撑。
具体作用细节
importtorchimporttorch.nnasnnclassPSFM(nn.Module):''' 基于注意力的自适应特征聚合 Fusion_Module (PSFM: Pyramid Spatial Feature Fusion Module) 该模块通过注意力机制自适应地聚合两个输入特征图,实现有效的特征融合 '''def__init__(self,channels=64,r=4):super(PSFM,self).__init__()inter_channels=int(channels//r)# 计算中间通道数,用于特征降维# 特征自校正模块:对拼接后的特征进行通道级重校准self.Recalibrate=nn.Sequential(nn.AdaptiveAvgPool2d(1),# 全局平均池化,生成通道级统计信息nn.Conv2d(2*channels,2*inter_channels,kernel_size=1,stride=1,padding=0),# 1x1卷积降维nn.BatchNorm2d(2*inter_channels),# 批归一化nn.ReLU(inplace=True),# ReLU激活函数nn.Conv2d(2*inter_channels,2*channels,kernel_size=1,stride=1,padding=0),# 1x1卷积升维nn.BatchNorm2d(2*channels),# 批归一化nn.Sigmoid(),# Sigmoid激活,生成通道注意力权重)# 通道聚合模块:将拼接后的特征压缩到原始通道数self.channel_agg=nn.Sequential(nn.Conv2d(2*channels,channels,kernel_size=1,stride=1,padding=0),# 1x1卷积降维nn.BatchNorm2d(channels),# 批归一化nn.ReLU(inplace=True),# ReLU激活函数)# 局部注意力模块:生成空间级注意力权重self.local_att=nn.Sequential(nn.Conv2d(channels,inter_channels,kernel_size=1,stride=1,padding=0),# 1x1卷积降维nn.BatchNorm2d(inter_channels),# 批归一化nn.ReLU(inplace=True),# ReLU激活函数nn.Conv2d(inter_channels,channels,kernel_size=1,stride=1,padding=0),# 1x1卷积升维nn.BatchNorm2d(channels),# 批归一化)# 全局注意力模块:生成通道级注意力权重self.global_att=nn.Sequential(nn.AdaptiveAvgPool2d(1),# 全局平均池化nn.Conv2d(channels,inter_channels,kernel_size=1,stride=1,padding=0),# 1x1卷积降维nn.BatchNorm2d(inter_channels),# 批归一化nn.ReLU(inplace=True),# ReLU激活函数nn.Conv2d(inter_channels,channels,kernel_size=1,stride=1,padding=0),# 1x1卷积升维nn.BatchNorm2d(channels),# 批归一化)self.sigmoid=nn.Sigmoid()# Sigmoid激活函数,用于生成最终的注意力权重defforward(self,x1,x2):# 输入: x1, x2 - 两个需要融合的特征图,形状为 [N, C, H, W]_,c,_,_=x1.shape# 获取特征图的通道数input=torch.cat([x1,x2],dim=1)# 在通道维度拼接两个特征图,形状变为 [N, 2C, H, W]# 步骤1: 特征自校正recal_w=self.Recalibrate(input)# 生成通道注意力权重,形状为 [N, 2C, 1, 1]recal_input=recal_w*input# 应用注意力权重进行通道级重校准recal_input=recal_input+input# 残差连接,保留原始信息# 步骤2: 分离自校正后的特征x1,x2=torch.split(recal_input,c,dim=1)# 将重校准后的特征分离回两个特征图# 步骤3: 特征聚合与注意力生成agg_input=self.channel_agg(recal_input)# 将拼接后的特征压缩到原始通道数local_w=self.local_att(agg_input)# 生成局部(空间)注意力权重global_w=self.global_att(agg_input)# 生成全局(通道)注意力权重w=self.sigmoid(local_w*global_w)# 融合局部和全局注意力,生成最终的自适应权重# 步骤4: 自适应特征融合xo=w*x1+(1-w)*x2# 根据注意力权重融合两个特征图returnxo# 返回融合后的特征图if__name__=="__main__":x1=torch.randn(1,64,640,640)x2=torch.randn(1,64,640,640)fusion_module=PSFM(channels=64,r=4)fusion_module.eval()# 设置为评估模式,避免BatchNorm2d在批量大小为1时出错output=fusion_module(x1,x2)print(output.shape)print(f"输入张量形状:{x1.shape}")print(f"输出张量形状:{output.shape}")print("科研通天路提醒您:正确代码无误!")print("祝您科研之路畅通无阻~~~~")