一、论文信息本文目录一、论文信息二、论文摘要概况三、SCACA空间-通道丰度交叉注意力机制结构图四、SCACA模块的作用五、SCACA模块的原理六、SCACA模块的优势七、即插即用模块代码论文题目Enhancing Unregistered Hyperspectral Image Super-Resolution viaUnmixing-based Abundance Fusion Learning中文题目基于解混融合学习方法提升未注册高光谱图像的超分辨率论文链接[2603.07918] Enhancing Unregistered Hyperspectral Image Super-Resolution via Unmixing-based Abundance Fusion Learning所属单位1北京理工大学 2杭州电子科技大学二、论文摘要概况未配准的高光谱图像HSI超分辨率SR技术通常旨在利用未配准的高分辨率参考图像来增强低分辨率HSI图像。本文提出一种基于解混的融合框架该框架通过分离空间与光谱信息同时缓解未配准融合带来的影响并提升超分辨率模型的学习能力。具体而言我们首先采用奇异值分解进行初始光谱解混在保留原始端元特征的同时将后续网络专门用于优化初始丰度图为充分利用未配准参考图像的空间纹理特征我们引入了粗到细的可变形聚合模块该模块首先使用粗金字塔预测器估算像素级流场和相似性图随后进行精细的亚像素级优化以实现参考特征的可变形聚合聚合后的特征再通过一系列空间通道丰度交叉注意力块进行精修此外还提出了空间通道调制融合模块利用动态门控权重融合编码器与解码器特征最终生成高质量、高分辨率的HSI图像。在模拟数据集和真实数据集上的实验结果均表明所提出方法实现了当前最先进的超分辨率性能。动机。(c) SSCH [52]中的显式对齐容易在变形图像中引入空间畸变和纹理伪影。(d)该结果验证了以下原理利用高精度、良好对齐的丰度数据能够从低分辨率对应图像重建高分辨率HSI图像。三、SCACA空间-通道丰度交叉注意力机制结构图整体架构我们采用基于解混机制的多尺度编码器-解码器架构包含以下关键模块(a) 粗细可变形聚合模块(b) 空间通道丰度交叉注意力模块(c) 空间通道调制融合模块用于实现高质量高分辨率高光谱成像HSI的超分辨率处理。四、SCACA模块的作用1. 增强丰度图的空间结构表达能力在高光谱超分辨率过程中丰度图决定了空间结构信息的恢复质量。SCACA通过引入参考图像中的高分辨率纹理和结构信息引导丰度图学习更加准确的空间分布使恢复后的高光谱图像能够保留更丰富的边缘、纹理和目标轮廓信息。2. 提升光谱特征表达能力除了空间结构外SCACA还专门设计了通道交叉注意力机制对丰度图中的光谱响应进行动态校准。通过参考图像特征对通道响应进行调制增强重要光谱成分抑制无关或冗余信息从而提高光谱重建精度。3. 实现参考图像与高光谱特征深度融合传统融合方法通常采用简单拼接或加权方式融合RGB与HSI信息而SCACA利用交叉注意力机制建立两种模态之间的对应关系使参考图像中的高分辨率纹理信息能够更有效地指导丰度图优化提高跨模态特征融合能力。4. 提高未配准场景下的特征鲁棒性由于论文研究的是未配准Unregistered高光谱超分辨率问题参考图像与高光谱图像存在位置偏差。SCACA通过交叉注意力而非直接像素匹配进行信息交互能够在一定程度上缓解配准误差带来的影响提高融合特征的稳定性和鲁棒性。五、SCACA模块的原理1. 聚合参考特征的自调制增强在进入交叉注意力之前SCACA首先对CFDA输出的参考特征进行自调制Self-Modulation。模块利用5×5 Depth-wise卷积提取局部结构信息再通过Sigmoid生成权重对原始参考特征进行增强该过程能够突出参考图像中的有效纹理和结构信息为后续交叉注意力提供更可靠的引导特征。2. SACA空间丰度交叉注意力SCACA首先执行Spatial Abundance Cross-AttentionSACA。模块将丰度特征划分为多个窗口在局部窗口内构建Query、Key和Value并利用参考图像特征调制Value向量该机制使模型能够利用参考图像的空间结构信息指导丰度图优化从而增强边缘和纹理恢复能力。3. CACA通道丰度交叉注意力在空间注意力之后模块进一步执行Channel Abundance Cross-AttentionCACA。与SACA关注空间结构不同CACA关注光谱维度特征通过参考图像特征对Value向量进行通道调制从而实现对丰度图通道响应的动态重标定使重要光谱信息得到强化而噪声和冗余信息被抑制。4. 层次化空间-通道交叉注意力SCACA采用“空间注意力→通道注意力”的层次化设计而非同时计算空间和通道关系。先利用SACA恢复空间结构再利用CACA校正光谱信息实现空间信息和光谱信息的逐步优化提高特征表达能力。六、SCACA模块的优势1. 同时优化空间与光谱信息传统注意力机制通常只关注空间维度或通道维度而SCACA同时引入SACA和CACA实现空间结构与光谱特征的协同增强因此更符合高光谱图像空间-光谱耦合的本质特征。2. 提高高频细节恢复能力SACA利用参考图像中的高分辨率纹理信息指导丰度图优化使模型能够恢复更加清晰的边缘、纹理和局部结构信息从而提升重建图像的空间分辨率。3. 增强光谱保真度CACA能够动态调整通道响应突出关键光谱特征减少光谱失真问题提高重建高光谱图像的光谱一致性和真实性。4. 跨模态信息利用效率高SCACA不是简单地融合RGB与HSI特征而是利用交叉注意力建立两种模态之间的深层关联关系使参考图像中的纹理信息能够更精准地迁移到高光谱重建过程中。5. 对未配准融合更加鲁棒由于采用特征级交互而非像素级对齐SCACA能够有效降低配准误差带来的负面影响在未配准高光谱超分辨率任务中表现出更强的鲁棒性。6. 显著提升重建性能消融实验表明在引入Unmix策略后增加SCACA模块能够使PSNR从41.41 dB提升至41.66 dB同时进一步改善SSIM和SAM指标验证了SCACA对于特征增强和高光谱重建的重要贡献。基于模拟数据集ICVL [3]的可视化对比真实值与输入高光谱图像均以第20波段显示展示了不同方法在 ICVL 数据集上使用缩放因子×4时的结果及误差图。七、即插即用模块代码import torch import torch.nn as nn import torch.nn.functional as F class SCACA(nn.Module): def __init__(self, dim, window_size8, num_heads4): super().__init__() self.dim dim self.window_size window_size self.num_heads num_heads self.head_dim dim // num_heads self.scale self.head_dim ** -0.5 # 自调制深度卷积 self.self_modulate nn.Sequential( nn.Conv2d(dim, dim, 5, 1, 2, groupsdim), nn.Sigmoid() ) self.norm1 nn.LayerNorm(dim) self.norm2 nn.LayerNorm(dim) # QKV 投影 self.spatial_qkv nn.Conv2d(dim, dim * 3, 1) self.channel_qkv nn.Conv2d(dim, dim * 3, 1) # 相对位置偏置 self.relative_pos_bias nn.Parameter(torch.randn(num_heads, window_size*window_size, window_size*window_size)) # FFN self.ffn nn.Sequential( nn.Conv2d(dim, dim*4, 1), nn.GELU(), nn.Conv2d(dim*4, dim, 1) ) def window_partition(self, x): B, C, H, W x.shape x x.view(B, C, H//self.window_size, self.window_size, W//self.window_size, self.window_size) x x.permute(0,2,4,1,3,5).contiguous() # [B, h_num, w_num, C, win, win] return x.view(-1, C, self.window_size, self.window_size) # [B*N_win, C, win, win] def window_reverse(self, x, H, W): B x.shape[0] // ((H//self.window_size)*(W//self.window_size)) x x.view(B, H//self.window_size, W//self.window_size, self.dim, self.window_size, self.window_size) x x.permute(0,3,1,4,2,5).contiguous() return x.view(B, self.dim, H, W) def spatial_abundance_cross_attention(self, x, ref): B, C, H, W x.shape N self.window_size ** 2 # 窗口切分 x_win self.window_partition(x) ref_win self.window_partition(ref) # QKV [B*N_win, 3C, win, win] qkv self.spatial_qkv(x_win) q, k, v torch.chunk(qkv, 3, dim1) # 拆多头 [B*N_win, heads, N, head_dim] q q.flatten(2).permute(0,2,1).view(-1, N, self.num_heads, self.head_dim).permute(0,2,1,3) k k.flatten(2).permute(0,2,1).view(-1, N, self.num_heads, self.head_dim).permute(0,2,1,3) v v.flatten(2).permute(0,2,1).view(-1, N, self.num_heads, self.head_dim).permute(0,2,1,3) # 参考特征维度对齐 ref_v ref_win.flatten(2).permute(0,2,1) # [B*N_win, N, C] ref_v ref_v.view(-1, N, self.num_heads, self.head_dim).permute(0,2,1,3) # 与v同维度 v_mod v * ref_v # 注意力 attn (q k.transpose(-2,-1)) * self.scale self.relative_pos_bias attn F.softmax(attn, dim-1) out (attn v_mod).permute(0,2,1,3).contiguous().view(-1, N, C) out out.view(-1, C, self.window_size, self.window_size) return self.window_reverse(out, H, W) def channel_abundance_cross_attention(self, x, ref): B, C, H, W x.shape qkv self.channel_qkv(x) q, k, v torch.chunk(qkv, 3, dim1) # 多头v形状 [B, num_heads, H×W, head_dim] q q.flatten(2).permute(0,2,1).view(B,-1,self.num_heads,self.head_dim).permute(0,2,1,3) k k.flatten(2).permute(0,2,1).view(B,-1,self.num_heads,self.head_dim).permute(0,2,1,3) v v.flatten(2).permute(0,2,1).view(B,-1,self.num_heads,self.head_dim).permute(0,2,1,3) # 参考全局调制 ref_g F.adaptive_avg_pool2d(ref, 1).view(B,1,1,C) ref_g ref_g.view(B, self.num_heads, 1, self.head_dim) v_mod v * ref_g attn (q k.transpose(-2,-1)) * self.scale attn F.softmax(attn, dim-1) out (attn v_mod).permute(0,2,1,3).contiguous().view(B,C,H,W) return out def forward(self, x, ref): # 自调制 ref ref * (1 self.self_modulate(ref)) # 空间分支 x_norm self.norm1(x.permute(0,2,3,1)).permute(0,3,1,2) x x self.ffn(self.spatial_abundance_cross_attention(x_norm, ref)) # 通道分支 x_norm self.norm2(x.permute(0,2,3,1)).permute(0,3,1,2) x x self.ffn(self.channel_abundance_cross_attention(x_norm, ref)) return x if __name__ __main__: input torch.randn(2, 32, 32, 32) reference torch.randn(2, 32, 32, 32) model SCACA(dim32, window_size8, num_heads4) print(model) print(CSDN:AI魔改大王) output model(input,reference) print(SCACA input_size:, input.size()) print(SCACA output_size:, output.size())
【CVPR 2026即插即用模块】SCACA空间-通道丰度交叉注意力机制,适合高光谱图像超分辨率、高光谱图像融合、多光谱-高光谱融合、图像恢复、目标检测、医学多模态图像融合等CV任务通用,涨点起飞!
发布时间:2026/6/10 7:55:51
一、论文信息本文目录一、论文信息二、论文摘要概况三、SCACA空间-通道丰度交叉注意力机制结构图四、SCACA模块的作用五、SCACA模块的原理六、SCACA模块的优势七、即插即用模块代码论文题目Enhancing Unregistered Hyperspectral Image Super-Resolution viaUnmixing-based Abundance Fusion Learning中文题目基于解混融合学习方法提升未注册高光谱图像的超分辨率论文链接[2603.07918] Enhancing Unregistered Hyperspectral Image Super-Resolution via Unmixing-based Abundance Fusion Learning所属单位1北京理工大学 2杭州电子科技大学二、论文摘要概况未配准的高光谱图像HSI超分辨率SR技术通常旨在利用未配准的高分辨率参考图像来增强低分辨率HSI图像。本文提出一种基于解混的融合框架该框架通过分离空间与光谱信息同时缓解未配准融合带来的影响并提升超分辨率模型的学习能力。具体而言我们首先采用奇异值分解进行初始光谱解混在保留原始端元特征的同时将后续网络专门用于优化初始丰度图为充分利用未配准参考图像的空间纹理特征我们引入了粗到细的可变形聚合模块该模块首先使用粗金字塔预测器估算像素级流场和相似性图随后进行精细的亚像素级优化以实现参考特征的可变形聚合聚合后的特征再通过一系列空间通道丰度交叉注意力块进行精修此外还提出了空间通道调制融合模块利用动态门控权重融合编码器与解码器特征最终生成高质量、高分辨率的HSI图像。在模拟数据集和真实数据集上的实验结果均表明所提出方法实现了当前最先进的超分辨率性能。动机。(c) SSCH [52]中的显式对齐容易在变形图像中引入空间畸变和纹理伪影。(d)该结果验证了以下原理利用高精度、良好对齐的丰度数据能够从低分辨率对应图像重建高分辨率HSI图像。三、SCACA空间-通道丰度交叉注意力机制结构图整体架构我们采用基于解混机制的多尺度编码器-解码器架构包含以下关键模块(a) 粗细可变形聚合模块(b) 空间通道丰度交叉注意力模块(c) 空间通道调制融合模块用于实现高质量高分辨率高光谱成像HSI的超分辨率处理。四、SCACA模块的作用1. 增强丰度图的空间结构表达能力在高光谱超分辨率过程中丰度图决定了空间结构信息的恢复质量。SCACA通过引入参考图像中的高分辨率纹理和结构信息引导丰度图学习更加准确的空间分布使恢复后的高光谱图像能够保留更丰富的边缘、纹理和目标轮廓信息。2. 提升光谱特征表达能力除了空间结构外SCACA还专门设计了通道交叉注意力机制对丰度图中的光谱响应进行动态校准。通过参考图像特征对通道响应进行调制增强重要光谱成分抑制无关或冗余信息从而提高光谱重建精度。3. 实现参考图像与高光谱特征深度融合传统融合方法通常采用简单拼接或加权方式融合RGB与HSI信息而SCACA利用交叉注意力机制建立两种模态之间的对应关系使参考图像中的高分辨率纹理信息能够更有效地指导丰度图优化提高跨模态特征融合能力。4. 提高未配准场景下的特征鲁棒性由于论文研究的是未配准Unregistered高光谱超分辨率问题参考图像与高光谱图像存在位置偏差。SCACA通过交叉注意力而非直接像素匹配进行信息交互能够在一定程度上缓解配准误差带来的影响提高融合特征的稳定性和鲁棒性。五、SCACA模块的原理1. 聚合参考特征的自调制增强在进入交叉注意力之前SCACA首先对CFDA输出的参考特征进行自调制Self-Modulation。模块利用5×5 Depth-wise卷积提取局部结构信息再通过Sigmoid生成权重对原始参考特征进行增强该过程能够突出参考图像中的有效纹理和结构信息为后续交叉注意力提供更可靠的引导特征。2. SACA空间丰度交叉注意力SCACA首先执行Spatial Abundance Cross-AttentionSACA。模块将丰度特征划分为多个窗口在局部窗口内构建Query、Key和Value并利用参考图像特征调制Value向量该机制使模型能够利用参考图像的空间结构信息指导丰度图优化从而增强边缘和纹理恢复能力。3. CACA通道丰度交叉注意力在空间注意力之后模块进一步执行Channel Abundance Cross-AttentionCACA。与SACA关注空间结构不同CACA关注光谱维度特征通过参考图像特征对Value向量进行通道调制从而实现对丰度图通道响应的动态重标定使重要光谱信息得到强化而噪声和冗余信息被抑制。4. 层次化空间-通道交叉注意力SCACA采用“空间注意力→通道注意力”的层次化设计而非同时计算空间和通道关系。先利用SACA恢复空间结构再利用CACA校正光谱信息实现空间信息和光谱信息的逐步优化提高特征表达能力。六、SCACA模块的优势1. 同时优化空间与光谱信息传统注意力机制通常只关注空间维度或通道维度而SCACA同时引入SACA和CACA实现空间结构与光谱特征的协同增强因此更符合高光谱图像空间-光谱耦合的本质特征。2. 提高高频细节恢复能力SACA利用参考图像中的高分辨率纹理信息指导丰度图优化使模型能够恢复更加清晰的边缘、纹理和局部结构信息从而提升重建图像的空间分辨率。3. 增强光谱保真度CACA能够动态调整通道响应突出关键光谱特征减少光谱失真问题提高重建高光谱图像的光谱一致性和真实性。4. 跨模态信息利用效率高SCACA不是简单地融合RGB与HSI特征而是利用交叉注意力建立两种模态之间的深层关联关系使参考图像中的纹理信息能够更精准地迁移到高光谱重建过程中。5. 对未配准融合更加鲁棒由于采用特征级交互而非像素级对齐SCACA能够有效降低配准误差带来的负面影响在未配准高光谱超分辨率任务中表现出更强的鲁棒性。6. 显著提升重建性能消融实验表明在引入Unmix策略后增加SCACA模块能够使PSNR从41.41 dB提升至41.66 dB同时进一步改善SSIM和SAM指标验证了SCACA对于特征增强和高光谱重建的重要贡献。基于模拟数据集ICVL [3]的可视化对比真实值与输入高光谱图像均以第20波段显示展示了不同方法在 ICVL 数据集上使用缩放因子×4时的结果及误差图。七、即插即用模块代码import torch import torch.nn as nn import torch.nn.functional as F class SCACA(nn.Module): def __init__(self, dim, window_size8, num_heads4): super().__init__() self.dim dim self.window_size window_size self.num_heads num_heads self.head_dim dim // num_heads self.scale self.head_dim ** -0.5 # 自调制深度卷积 self.self_modulate nn.Sequential( nn.Conv2d(dim, dim, 5, 1, 2, groupsdim), nn.Sigmoid() ) self.norm1 nn.LayerNorm(dim) self.norm2 nn.LayerNorm(dim) # QKV 投影 self.spatial_qkv nn.Conv2d(dim, dim * 3, 1) self.channel_qkv nn.Conv2d(dim, dim * 3, 1) # 相对位置偏置 self.relative_pos_bias nn.Parameter(torch.randn(num_heads, window_size*window_size, window_size*window_size)) # FFN self.ffn nn.Sequential( nn.Conv2d(dim, dim*4, 1), nn.GELU(), nn.Conv2d(dim*4, dim, 1) ) def window_partition(self, x): B, C, H, W x.shape x x.view(B, C, H//self.window_size, self.window_size, W//self.window_size, self.window_size) x x.permute(0,2,4,1,3,5).contiguous() # [B, h_num, w_num, C, win, win] return x.view(-1, C, self.window_size, self.window_size) # [B*N_win, C, win, win] def window_reverse(self, x, H, W): B x.shape[0] // ((H//self.window_size)*(W//self.window_size)) x x.view(B, H//self.window_size, W//self.window_size, self.dim, self.window_size, self.window_size) x x.permute(0,3,1,4,2,5).contiguous() return x.view(B, self.dim, H, W) def spatial_abundance_cross_attention(self, x, ref): B, C, H, W x.shape N self.window_size ** 2 # 窗口切分 x_win self.window_partition(x) ref_win self.window_partition(ref) # QKV [B*N_win, 3C, win, win] qkv self.spatial_qkv(x_win) q, k, v torch.chunk(qkv, 3, dim1) # 拆多头 [B*N_win, heads, N, head_dim] q q.flatten(2).permute(0,2,1).view(-1, N, self.num_heads, self.head_dim).permute(0,2,1,3) k k.flatten(2).permute(0,2,1).view(-1, N, self.num_heads, self.head_dim).permute(0,2,1,3) v v.flatten(2).permute(0,2,1).view(-1, N, self.num_heads, self.head_dim).permute(0,2,1,3) # 参考特征维度对齐 ref_v ref_win.flatten(2).permute(0,2,1) # [B*N_win, N, C] ref_v ref_v.view(-1, N, self.num_heads, self.head_dim).permute(0,2,1,3) # 与v同维度 v_mod v * ref_v # 注意力 attn (q k.transpose(-2,-1)) * self.scale self.relative_pos_bias attn F.softmax(attn, dim-1) out (attn v_mod).permute(0,2,1,3).contiguous().view(-1, N, C) out out.view(-1, C, self.window_size, self.window_size) return self.window_reverse(out, H, W) def channel_abundance_cross_attention(self, x, ref): B, C, H, W x.shape qkv self.channel_qkv(x) q, k, v torch.chunk(qkv, 3, dim1) # 多头v形状 [B, num_heads, H×W, head_dim] q q.flatten(2).permute(0,2,1).view(B,-1,self.num_heads,self.head_dim).permute(0,2,1,3) k k.flatten(2).permute(0,2,1).view(B,-1,self.num_heads,self.head_dim).permute(0,2,1,3) v v.flatten(2).permute(0,2,1).view(B,-1,self.num_heads,self.head_dim).permute(0,2,1,3) # 参考全局调制 ref_g F.adaptive_avg_pool2d(ref, 1).view(B,1,1,C) ref_g ref_g.view(B, self.num_heads, 1, self.head_dim) v_mod v * ref_g attn (q k.transpose(-2,-1)) * self.scale attn F.softmax(attn, dim-1) out (attn v_mod).permute(0,2,1,3).contiguous().view(B,C,H,W) return out def forward(self, x, ref): # 自调制 ref ref * (1 self.self_modulate(ref)) # 空间分支 x_norm self.norm1(x.permute(0,2,3,1)).permute(0,3,1,2) x x self.ffn(self.spatial_abundance_cross_attention(x_norm, ref)) # 通道分支 x_norm self.norm2(x.permute(0,2,3,1)).permute(0,3,1,2) x x self.ffn(self.channel_abundance_cross_attention(x_norm, ref)) return x if __name__ __main__: input torch.randn(2, 32, 32, 32) reference torch.randn(2, 32, 32, 32) model SCACA(dim32, window_size8, num_heads4) print(model) print(CSDN:AI魔改大王) output model(input,reference) print(SCACA input_size:, input.size()) print(SCACA output_size:, output.size())