1. 项目概述:双选择性融合Transformer在高光谱图像分类中的应用
高光谱图像分类一直是遥感领域的重要研究方向。传统方法往往面临光谱信息冗余、空间特征提取不足等问题。这篇学习日记记录了我对"Dual Selective Fusion Transformer Network for Hyperspectral Image Classification"这篇论文的研读心得,重点解析了其中创新的双选择性融合机制如何提升分类性能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构解析
2.1 Transformer在高光谱图像中的适应性改进
标准Transformer架构直接应用于高光谱图像会面临几个关键挑战:
- 光谱波段间的高度相关性导致信息冗余
- 空间分辨率有限使得局部特征提取困难
- 计算复杂度随序列长度平方增长
论文提出的双选择性融合机制通过两个关键创新解决这些问题:
- 光谱选择性模块:动态筛选最具判别性的光谱波段
- 空间选择性模块:聚焦于最具区分度的空间区域
2.2 双选择性融合机制详解
光谱选择性模块采用通道注意力机制,其工作流程为:
- 对输入光谱维度进行全局平均池化
- 通过两层全连接网络生成通道权重
- 使用sigmoid函数归一化权重
- 对原始特征进行加权
空间选择性模块则采用类似Swin Transformer的窗口注意力机制,但在窗口划分时加入了可学习的偏移参数,使网络能够自适应地聚焦于重要区域。
3. 关键技术实现
3.1 网络整体架构
网络采用级联结构,主要包含:
- 浅层特征提取层(3×3卷积)
- 光谱选择性Transformer模块
- 空间选择性Transformer模块
- 特征融合与分类层
每个Transformer模块包含:
- 多头自注意力层(4头)
- 层归一化
- 前馈网络(扩展维度为4倍)
- 残差连接
3.2 选择性融合的实现细节
光谱选择性通过改进的SE模块实现:
python复制class SpectralSelector(nn.Module):
def __init__(self, channel, reduction=16):
super().__init__()
self.avg_pool = nn.AdaptiveAvgPool1d(1)
self.fc = nn.Sequential(
nn.Linear(channel, channel // reduction),
nn.ReLU(),
nn.Linear(channel // reduction, channel),
nn.Sigmoid()
)
def forward(self, x):
b, c, _ = x.size()
y = self.avg_pool(x).view(b, c)
y = self.fc(y).view(b, c, 1)
return x * y.expand_as(x)
空间选择性则通过可变形窗口实现:
python复制class DeformableWindowAttention(nn.Module):
def __init__(self, dim, window_size, num_heads):
super().__init__()
self.window_size = window_size
self.num_heads = num_heads
self.scale = (dim // num_heads) ** -0.5
# 可学习偏移参数
self.offset_conv = nn.Conv2d(dim, 2, kernel_size=3, padding=1)
# 标准注意力层
self.qkv = nn.Linear(dim, dim * 3)
self.proj = nn.Linear(dim, dim)
def forward(self, x):
B, C, H, W = x.shape
# 生成偏移量
offset = self.offset_conv(x)
# 应用偏移后的窗口划分
# ...后续注意力计算...
4. 实验与性能分析
4.1 数据集与实验设置
论文在三个标准数据集上进行了验证:
- Indian Pines (145×145, 200波段)
- Pavia University (610×340, 103波段)
- Houston2013 (349×1905, 144波段)
对比方法包括:
- 传统方法:SVM, Random Forest
- 深度学习方法:2D-CNN, 3D-CNN, HybridSN
- Transformer方法:ViT, SpectralFormer
4.2 关键性能指标
在Indian Pines数据集上的OA(Overall Accuracy)对比:
| 方法 | OA(%) | AA(%) | Kappa |
|---|---|---|---|
| SVM | 83.21 | 82.76 | 0.812 |
| 2D-CNN | 89.34 | 88.92 | 0.881 |
| HybridSN | 92.15 | 91.87 | 0.913 |
| ViT | 93.02 | 92.56 | 0.922 |
| 本文方法 | 95.37 | 95.12 | 0.948 |
4.3 消融实验结果
验证各模块有效性的消融实验:
| 配置 | OA(%) |
|---|---|
| 基线Transformer | 93.02 |
| +光谱选择 | 94.15 |
| +空间选择 | 94.63 |
| 完整模型 | 95.37 |
5. 实际应用中的经验分享
5.1 调参技巧
-
学习率设置:
- 初始学习率建议设为3e-4
- 采用余弦退火策略,最小学习率设为1e-5
- warmup阶段设为5个epoch
-
数据增强策略:
- 随机旋转(0°,90°,180°,270°)
- 水平/垂直翻转
- 光谱抖动(±5%的随机扰动)
5.2 常见问题排查
问题1:模型收敛速度慢
可能原因:
- 光谱波段归一化不充分
- 注意力权重初始化不当
解决方案: - 采用分段归一化(每50个波段一组)
- 使用Xavier初始化注意力层的权重
问题2:小类别样本识别率低
解决方案:
- 采用focal loss替代交叉熵损失
- 在数据增强时对小类别样本过采样
- 在损失函数中增加类别权重
5.3 计算资源优化
-
内存节省技巧:
- 使用混合精度训练
- 梯度累积(batch size=32时可分4步累积)
-
推理加速:
- 对空间选择性模块进行窗口融合
- 将部分计算转换为稀疏矩阵运算
6. 扩展应用方向
6.1 多时相高光谱分析
将双选择性机制应用于时序高光谱数据:
- 增加时间维度选择性
- 构建时空谱三重注意力
6.2 小样本学习
针对标记样本稀缺的场景:
- 采用元学习框架
- 构建基于原型的分类头
6.3 边缘设备部署
模型轻量化方案:
- 知识蒸馏(使用ResNet作为教师网络)
- 通道剪枝(基于光谱重要性评分)
- 量化感知训练(8bit整数量化)
在实际部署中发现,经过量化的模型在Jetson Xavier上推理速度可达45FPS(输入尺寸64×64),满足实时性要求。
