论文笔记——BS-Nets An End-to-End Framework for Band Selection of Hyperspectral Image

0. 基本信息

  • 引用信息

Y. Cai, X. Liu and Z. Cai, "BS-Nets: An End-to-End Framework for Band Selection of Hyperspectral Image," in IEEE Transactions on Geoscience and Remote Sensing, vol. 58, no. 3, pp. 1969-1984, March 2020, doi: 10.1109/TGRS.2019.2951433.

  • bibtex entry
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @article{Cai2020BSNet,
    author = {Y. {Cai} and X. {Liu} and Z. {Cai}},
    journal = {IEEE Transactions on Geoscience and Remote Sensing},
    title = {BS-Nets: An End-to-End Framework for Band Selection of Hyperspectral Image},
    year = {2020},
    volume = {58},
    number = {3},
    pages = {1969-1984},
    doi = {10.1109/TGRS.2019.2951433}
    }

1. 相关基础知识

1.1 注意力机制(Attention Mechanism)

注意力机制是模拟人的行为,对于图像的不同部分有不同的注意力程度。具体的,可以用数学公式表达如下:

\[ a = f_\Theta(x) \]

其中\(a\)叫做基于参数\(\Theta\)使用注意力模块\(f\)生成的Attention map,通常\(f\)包含一个gation function来控制Attention map的尺度,如softmax函数。

具体的对于一个feature map \(z\),应用注意力的方法也非常简单,直接将feature map与attention map逐元素相乘即可,即\(h = a \otimes z\).

对于高光谱图像而言,则由于其为三维数据立方体,则存在三种注意力机制:

  • 空间注意力(spatial attention)
  • 光谱注意力(spectral attention)
  • 空间-光谱联合注意力(spatial-spectral joint attention)

具体形式如下图所示: 高光谱图像的三种注意力机制

在波段选择任务中,本文希望学习得到一个波段的权重向量,能够显著的反映波段间的关系。那么从这个角度来看,波段选择也可以看作是一个光谱注意力模块。

1.2 基本假设(对应论文II-D Motivation)

波段选择的基本假设是整个波段集可以由少数关键的波段稀疏重构而成。一种可行的方法就是使用自监督策略训练,假设波段集可以使用如下线性self-expressive表达式进行表达 $ = \(, 其中\) ^{MN b}$ 以及 \(\mathbf{C} \in \mathbb{R}^{b \times b}\). 关系矩阵(affinity matrix)\(\mathbf{C}\)表达了波段间的内在关系,因此可以使用该矩阵进行波段选择和聚类。但是这种线性表达方式面临如下三个问题:

  1. 线性的假设并不符合复杂高光谱图像的实际情况。
  2. 关系矩阵\(\mathbf{C}\)并不能直接反应每个波段在重建时的贡献,为了选择最优波段,仍需要进一步的处理步骤。
  3. 稀疏重构只利用浅层的波段信息,没有充分利用high-level的语义信息。

2. 网络结构

2.1 总体结构

总体网络结构

总体网络结构如上图所示,其核心思想是首先根据原始的高光谱图像生成波段注意力模型(Band Attention Module, BAM),而后使用波段权重重采样模块(Band reweighting, BRW)对波段应用注意力,最后使用重建网络RecNet(reconstruction network)根据应用注意力后的图像重建原始图像,并使得重建误差最小化。

最终的损失函数是:

\[ \mathcal{L}(\Theta_b, \Theta_c) = \frac{1}{2S}\sum_{i=1}^{S} ||x_i - \hat{x}_i||_2^2 + \lambda\sum_{i=1}^{S}||w_i||_1 \]

其中\(S\)是指sample的数量,\(x_i\)是input,\(\hat{x}_i\) 是重建后的输出。\(w_i\)是BAM计算得到的逐波段的权重,也就是注意力的情况,在实际情况中,由于是逐像素或者逐图像块进行计算,因此对于某个波段而言,其总体权重是该波段所有像素的权重和,即

\[ \overline{w}_j = \frac{1}{S} \sum_{i=1}^{S}w_{ij} \]

2.2 具体实现方法

文章使用了两种具体实现方法,BS-Net-FC和BS-Net-Conv,前者是逐像素进行波段选择和波段重建,而后者则是将图像切分成小的面片,而后使用卷积网络进行重建,但总体思路上均一致,只是具体网络上有小差异。具体网络结构如下图所示。

BS-Net-FC

BS-Net-Conv

3. 实现

作者使用Tensorflow的实现:https://github.com/AngryCai/BS-Nets

我使用pytorch的实现:https://github.com/whuhenry/bsnet_pytorch