Deep Multiscale Spectral-Spatial Feature Fusion for Hyperspectral Images Classification

摘要--充分利用光谱-空间信息,学习具有代表性和鉴别性的特征,对于高光谱的解释具有重要意义。本文提出了一种 无监督 的特征提取的方法--深度多尺度光谱-空间特征融合。

  1. 在VGG16中 预训练 滤波器组,提取HSI的多尺度 空间结构信息
  2. 提出了一种 无监督协同稀疏自编码器 将提取出来的空间结构信息和原始的光谱特征相融合。这种方法既实现了 降维 ,又实现了 特征融合 。并且不同的特征协同作用,实现了自监督投影学习,这对于检测重要结构和保留输入的大量信息是有益的。
  3. 在VGG16中,融合的多尺度的光谱-空间特征进行加权融合和上采样来获得最终可区分的特征。

01. Introduction

HSI所面临的挑战:

  1. 高维数据、不确定性、信息的冗余以及不同的光谱对应相同物体或者相同的光谱对应不同的物体,这些现象导致HSI的高度非线性。
  2. 由于光谱信号的空间可变性,引起的 类内多样性类间相似性
  3. 标签数据非常有限。

通常情况下,有三类光谱-空间特征整合的策略:

  1. 在执行分类前,在特征提取过程中整合空间信息,如形态学变换、gabor变换等。
  2. 分类过程中,主要针对具有像素间相关假设的相邻像素进行联合处理,如联合稀疏模型、基于区域核的支持向量机(SVM)等。
  3. 分类后,通过流域、最小生成森林等高光谱图像的空间结构,对像素级分类器得到的分类图进行细化。

本论文中主要关注第一种情况。

传统方法在局部低水平光谱-空间特征提取方面具有较好的特点,但缺乏全局特征推理。深度学习是目前最先进的特征提取技术之一,它以分层的方式从低级特征中学习高级特征。与传统的浅层结构算法相比,深层模型可以学习一种深层非线性网络结构,实现对复杂函数的逼近,从而处理复杂分类问题的泛化能力。

本篇论文中,提取空间特征是在整个HSI上提取的,而不是在像素级别上。而且许多工作证明了深度CNN在大数据集(如ImageNet)上预训练的中间激活可以迁移到其他许多 训练数据有限 的识别任务中。空间信息对于像素级的HSI分类任务是非常有用的,但是全连接层会丢弃空间维度并且产生非空间输出。本文中将 VGG16中的前五个卷积模块 的预训练的滤波器组作为提取 空间特征 的滤波器,但是没法提取HSI独有的 光谱特征

因此,需要想办法将空间特征和光谱特征融合起来,自编码技术在 降维特征融合 方面有很大的优势,是提取光谱-空间特征的一个重要选择。因此,本文提出的无监督协同稀疏自编码器(CSAE)的策略来提取光谱-空间特征,该策略的步骤:

  1. 在第一层中,降低提取的深度空间信息的维度
  2. 在第二层中,深度空间信息和相对应的光谱特征相连接,来学习光谱-空间特征。

该算法在不同特征协同约束下学习 投影算子??? ,对检测重要结构、保留输入信息量具有重要意义。

本文利用无监督协同稀疏自编码器(CSAE)分别对预训练VGG16中最后三个卷积模块的多尺度谱空间特征进行直接学习,然后对多尺度特征进行 上采样加权 融合,得到HSI的判别特征。利用SVM对四种不同的公共高光谱数据集进行分类,结果表明了该算法的有效性。

02. 稀疏自编码器

稀疏自编码器(Sparse Autoencoder)可以自动从无标注数据中学习到特征,可以给出比原始数据更好的特征描述。在实际应用中用稀疏自编码器发现的特征取代原始数据往往能够得到更好的结果。

稀疏自编码器是具有一层隐含层的神经网络,其思路是 让输出等于输入 。自编码神经网络的结构如下图:

自编码神经网络架构图

如果是监督学习的话,在神经网络中,我们只需要确定神经网络的结构就可以求出损失函数的表达式了(当然,该表达式需对网络的参数进行”惩罚”,以便使每个参数不要太大),同时也能够求出损失函数偏导函数的表达式,然后利用优化算法求出网络最优的参数。

应该清楚的是,损失函数的表达式中,需要用到有标注值的样本。那么这里的sparse autoencoder为什么能够无监督学习呢?难道它的损失函数的表达式中不需要标注的样本值(即通常所说的y值)么?其实在稀疏编码中标注值也是需要的,只不过它的输出理论值是本身输入的特征值x,其实这里的标注值。这样做的好处是,网络的隐含层能够很好的代替输入的特征,因为它能够比较准确的还原出那些输入特征值???

自编码神经网络尝试学习一个的函数。换言之,它尝试逼近一个恒等函数,从而使得输出 。这样往往能够发现输入数据的一些有趣的特征,最终我们会用隐藏层的神经元代替原始数据(也就是重构数据)。

这看上去好像并不现实,因为我们在信息论中学过,信息经过每一层传递处理都会发生损耗,因此自编码神经网络的输入和输出是不可能相等的。但是我们就是要强迫它相等,或者说尽可能地相等。神经网络中数据流的流向:I -> Sn -> O。我们的目标时:要O尽可能等于I。(I代表输入,Sn代表每一层中间隐藏层的输出,O代表网络输出)。

这么折腾究竟是要干嘛?要O等于I干嘛,好好的,要O去干嘛?直接拿I不就好了。着实,O确实不重要,但是我们注意,Sn很重要!

Sn为什么重要?我们看上面的模型,输入I有6维,输出O有6维,中间层Sn呢?只有3维!这看出了什么?PCA?白化?差不多,但又有点不同。可以说是降维了,但PCA做的工作是提取了数据的最重要的成分,而这里的Sn是学习了数据更加本质的结构!为什么是这样?因为我们强迫它学习用3维的数据去表示6维的数据,为了完成这个目标,它不得不去寻找输入数据中存在的一些结构。所以,中间层学习得到的3维输出Sn,就是深度学习网络学习得到的输入数据的更加本质的特征。

最终我们会用隐藏层的神经元代替原始数据。当隐藏神经元数目少于输入的数目时,自编码神经网络可以达到数据压缩的效果(因为最终我们可以用隐藏神经元替代原始输入,输入层的n个输入转换为隐藏层的m个神经元,其中n>m,之后隐藏层的m个神经元又转换为输出层的n个输出,其输出等于输入);当隐藏神经元数目较多时,我们仍然可以对隐藏层的神经元加入稀疏性限制来使得隐藏层active的神经元个数较少。

稀疏性可以被简单地解释如下。

  1. 当我们的激活函数是sigmoid时,如果当神经元的输出接近1的时候我们认为它被激活,而输出0的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制规则被称为稀疏性限制

    Sigmoid函数

  2. 如果使用tanh 作为激活函数时,当神经元输出为-1的时候,我们认为神经元是被抑制的。

    tanh函数

无稀疏约束时网络的损失函数表达式如下:
\begin{aligned} J(W, b) &=\left[\frac{1}{m} \sum_{i=1}^{m} J\left(W, b ; x^{(i)}, y^{(i)}\right)\right]+\frac{\lambda}{2} \sum_{l=1}^{n_{l-1}} \sum_{i=1}^{s_{l}} \sum_{j=1}^{s_{l+1}}\left(W_{j i}^{(l)}\right)^{2} \\ &=\left[\frac{1}{m} \sum_{i=1}^{m}\left(\frac{1}{2}\left\|h_{W, b}\left(x^{(i)}\right)-y^{(i)}\right\|^{2}\right)\right]+\frac{\lambda}{2} \sum_{l=1}^{n_{l}-1} \sum_{i=1}^{s_{l}} \sum_{j=1}^{s_{l+1}}\left(W_{j i}^{(l)}\right)^{2} \end{aligned}

接下来,我们使用 来表示在给定输入为x的情况下,自编码神经网络隐藏层的神经元的激活度。并将隐藏层神经元的平均激活度表示为

我们可以将稀疏性限制这么理解:使得隐藏层神经元的平均激活度特别小,可以表示为,其中 是稀疏性参数,通常是一个接近于0的较小的值(比如)-> 也就时说要让隐藏层神经元的平均激活度接近于0.05。

为了满足这一条件,隐藏层的每个神经元的激活度要尽可能的接近于0。也就是说大部分的隐藏层神经元都处于非 activite 状态。为了实现这个限制,我们需要在原始神经网络优化目标中加入稀疏性限制这一项作为一项额外的惩罚因子。我们可以选择KL散度的惩罚因子:

是隐藏层中隐藏神经元的数量,而索引依次代表隐藏层中的每一个神经元。该表达式也可以描述为相对熵,记为:

其中 ,是一个以 为均值和一个以 为均值的两个伯努利随机变量之间的相对熵。相对熵是一种标准的用来测量两个分布之间差异的方法。
该惩罚因子有如下性质:当时,。并且随着 和 间的差异增大而单调递增

我们设定 ρ=0.2,并且画出了相对熵值的变化。

我们可以看出,相对熵在 时达到它的最小值,而当 靠近或者的时候,相对熵则变得非常大(其实是趋向于)。所以,最小化这一惩罚因子具有使得 靠近 的效果。现在,我们的总体代价函数可以表示为

参考文献:

  1. https://blog.csdn.net/u010278305/article/details/46881443
  2. https://blog.csdn.net/llp1992/article/details/45579615
  3. http://ufldl.stanford.edu/tutorial/unsupervised/Autoencoders/
  4. https://blog.csdn.net/jiede1/article/details/76681371
  5. https://blog.csdn.net/sinat_27935693/article/details/53502656
  6. ※※※https://www.cnblogs.com/tornadomeet/archive/2013/03/19/2970101.html
  7. https://blog.csdn.net/whiteinblue/article/details/20639629

以上内容时为了补充学习稀疏自编码器内容。


AE的目标是在无监督学习下,通过重构原始信息,学习能够检测输入数据重要结构的特征检测器。论文中的原理和上述稀疏编码器原理差不多。
论文中的J(W, b)= J_{\mathrm{AE}}\left(\theta_{e}, \theta_{d}\right)=\frac{1}{t} \sum_{i=1}^{t} \frac{1}{2}\left\|x^{(i)}-\hat{x}^{(i)}\right\|+\frac{\lambda}{2}\left(\left\|W_{e}\right\|_{2}+\left\|W_{d}\right\|_{2}\right)
其中,是训练样本的数量,是一个权重衰减的正则化参数,防止过度拟合。是为了学习最小二乘法的参数。

03. Deep Multiscale Spectral-Spatial Feature Fusion For HSIC

本论文提出了一种新的无监督光谱空间特征提取方法——深度多尺度光谱-空间特征融合()。该方法主要由两部分组成:

  1. 提出了一种基于无监督协同稀疏自编码器cooperative sparse autoencoder(CSAE)的深空间特征和光谱特征的融合方法
  2. 多尺度光谱-空间特征的协同作用,使分类图更加精细

3.1 Deep Spectral-Spatial Feature Fusion by CSAE

这部分主要是提取高层空间特征,并有效地融合光谱-空间特征。深度CNN以分层的方式在学习空间特征的方面性能优秀。然而HSI标签数据不足,这样去训练一个DCNN有很大的困难,很容易造成过拟合。本文利用ImageNet数据集预训练的VGG16来学习HSI的深度空间信息。VGG16中的全连接层会抛弃了空间维度,产生非空间输出,而我们追求的是对空间分布信息的端到端学习。因此,将VGG16中的所有卷积层用来提取深度空间特征信息(deep spatial feature)DSF。

VGG16网络

但是VGG16的输入的训练样本都是RGB图像,因此对HSI使用PCA,之后选择位列前三的主成分作为输入(读到这,我感觉很不靠谱,这不丧失了很多可能很有效的信息吗??但是作者下面给出了解释),因为咱是用VGG16去提取深度空间特征信息,虽然去掉了很多光谱信息,但是对空间信息的提取影响不大。

Illustration of the proposed 网络

HSI与自然图像最大的区别在于它的高分辨率光谱,而预训练的VGG16提取的深层特征则丧失了这种独特的特征。为了弥补这一损失,我们在原始光谱特征上构造了一个只有三个池化层的平均池化网络,为下面的特征融合做了充分的准备:

  1. 为了执行2倍下采样,步长为2 的非重叠的平均池化操作可以在光谱空间中抑制噪声
  2. CSAE用于后续的频谱空间特征融合,在像素级逐层训练网络参数。这样设计网络的原因是减小raw HSI的维度,以来匹配VGG16中的特征图的大小。
  3. 设计只有池化层没有卷积层的网络,是为了避免破坏原始光谱信息。

本篇论文中为了在一个投影空间中融合光谱和空间信息想要学习一个投影算子。自编码器作为一种无监督学习算法擅长学习投影算子,以来检测输入数据的重要结构并保留大量信息。所以本文用cooperative sparse autoencoder去学习投影算子。

设是空间特征的向量;是光谱向量。VGG16中pool5中的特征图的维度远高于。为了平衡两个特征的的维度,空间向量在SAE中的第一层通过公式\underset{\theta_{e}, \theta_{d}}{\arg \min } J_{\mathrm{SAE}}\left(\theta_{e}, \theta_{d}\right)=J_{\mathrm{AE}}\left(\theta_{e}, \theta_{d}\right)+\beta \sum_{j=1}^{n} \mathrm{KL}\left(\rho \| \hat{\rho}_{j}\right)最小化重构误差来将高维数据映射到。

然后,在隐藏层后面添加归一化层

其中,是均值 、 是方差。

这个归一化层是Z-score标准化方法的变体,标准公式:

z-score 标准化

需要注意的是,隐含层的节点大多受到稀疏约束的抑制,少数节点被激活,归一化只对激活的神经元起作用。

最后,我们将投影特征与光谱特征结合起来,通过一个学习潜在的相似性和共同特征
\begin{aligned} J_{\mathrm{CSAE}}\left(\theta_{e}, \theta_{d}\right)=& \frac{1}{t} \sum_{i=1}^{t} \frac{1}{2}\left(\left\|x_{e}^{(i)}-\hat{x}_{e}^{(i)}\right\|+\left\|h_{\tilde{a}}^{(i)}-\hat{h}_{\tilde{a}}^{(i)}\right\|\right) \\ &+\frac{\lambda}{2}\left(\left\|W_{e}\right\|_{2}+\left\|W_{d}\right\|_{2}\right)+\beta K L(\rho \| \hat{\rho}) \end{aligned}

其中,这两个特征相互制约,实现了合理的自监督投射学习。在计算过程中,CSAE的编码器部分的计算公式是:

意思是连接两个向量,设,射影算子是通过最小化下面的目标函数来学习的

这种所学习到的非线性变换是一种很好的特征提取方法。它们不仅在更深层次上保持了抽象不变的信息,而且以一种完全无监督的方式挖掘了潜在的公共信息,提高了后续分类的性能。

由于HSI的输入量较小,VGG16第五池化层的feature map大小不满足CSAE操作。因此,我们首先对pool5中4个像素步长的特征图进行双线性插值运算;然后再对8个像素步长的融合图进行上采样,使其与输入具有相同的尺度,得到像素方向的特征提取,如图2(c)所示。


Algorithm1 :

输入:HSI 数据

  1. 主成分分析的前三个主成分用于HSI的变换
  2. 从VGG16中预先训练好的卷积模块中提取DSF
  3. 采用双线性插值运算,在最后一个池化层上采样特征图,步长为4个像素
  4. 对原始光谱数据进行归一化,通过平均池对光谱特征进行降采样
  5. CSAE融合深光谱空间特征;
    1. 根据式(6)对高维空间特征进行降维
    2. 根据式(7)对CSAE中的第一隐层进行归一化
    3. 由式(10)协同融合光谱空间特征
  6. 对融合特性进行上采样,使其与输入映射具有相同的比例
    输出:feature maps

3.2 FCN

3.3 Multiscale Features Fusion

仅仅学习在图2中第五层池化层经过上采样之后的光谱-空间特征会生成粗糙的特征图,并且限制了输出图的细节信息,特别是对于在大小和形状方面具有很大异质性的数据集。

受FCN的启发,加入了跳跃连接,以结合较深的层与较低的层与更精细的步长。

https://blog.csdn.net/hjimce/article/details/50268555

我们通过添加较小步幅的较低层的特征预测来解决粗略特征图。我们首先分别在pool5,pool4和pool3上通过产生多尺度光谱-空间特征。然后,在这些层后面添加上采样层,用于之后的逐步融合过程。这里双线性插值法用于所有上采样操作。避免CSAE训练样本不足,输入量小,步幅大,预测粗糙等问题,我们首先使用4倍的步幅上采样pool5的特征图与使用2倍步幅的pool4特征图进行融合,得到了的特征图。之后将这个特征图和使用步幅2倍的pool3的特征图进行融合,得到与输入图像大小相同的样子,详细操作流程和地图大小见图 3。

深度神经网络会产生分级特征,其中的低层响应浅信息(如角,边),同时高层深的语义信息(纹理和甚至对象)。HSI与自然图像在外观和语义信息上有很大的不同,对每一层都有不同的响应,如较低的层有利于场景较细的图像,而较深的层更适合语义信息较复杂的场景。为了最大限度地发挥每一层的优势,我们通过(公式11)加权求和来融合不同尺度的特征:


Algorithm2:
输入:DSFs和平均池化后的光谱特征

  1. 对pool5的DSF4倍上采样之后和光谱空间特征融合
  2. 对pool4的DSF2倍上采样之后和光谱空间特征融合
  3. 与加权融合,并将pool5和pool4融合后的特征进行2倍上采样至☞
  4. 用在pool3上提取的融合特征,并对其进行2倍上采样
  5. 通过式(11) 对和进行加权融合,对其在进行4倍上采样得到最终特征图X。

输出:特征图

04. 实验分析

该方法的可调参数主要集中在CSAE上。公式(4)中的正则化参数、公式(6)中的、公式(5)中的稀疏参数和隐藏层单元的数量。除此之外,公式(11)的两个权重参数和。通过对四组实验数据集进行SVM分类器分类精度评价,验证了这些参数的影响。对于Indian Pines数据集,我们在每个类的标记样本中随机抽取5%的样本进行训练,其余95%的样本进行测试。对于其他数据集,我们从标记的像素中随机选择每个类10个样本分别用于训练和测试。

正则化参数λ的重量选择衰减范围从 到。CSAE分为两层:一层用于DSF降维,另一层用于光谱空间特征融合。所以正则化参数λ的两层都是分析。当正则化参数的值小于时,该方法在所有的四个数据集中可以获得稳定高精度。所以,我们设置进行下面的实验。

Regularization parameter λ

正则化参数和期望的平均激活都是稀疏约束。如图5(b)所示,我们可以观察到稀疏约束在光谱-空间特征融合中是至关重要的,并且当 、时,对于分类精度是鲁棒的。对于Indian Pine (first column), University of Pavia (second column), Salinas(third column)三个数据集的所有实验,我们设定和,对于KSC,我们设定和。

Sparsity constraint β and ρ

进一步研究了该方法在每个隐层神经元数目增加时的性能表现。从图5(c)可以看出,我们将四个实验数据集中的隐藏单元数量从20个增加到160个时,分类精度的变化情况。在Indian Pine(first column),Salinas(third column),KSC(last column)数据集中,随着隐藏单元数量的增加,精确度似乎在增加,但在University of Pavia (second column)上却没有增加。这种现象是由协同融合层中空间和光谱特征的输入维数引起的。University of Pavia (second column)的数据集包含103个光谱波段,而最后三个数据集接近或超过200个波段。当空间维数大于光谱维数时,情况会变得更糟。实验结果表明,当光谱维数与空间维数之比约为2:1时,分类结果可以达到稳定的高精度。因此,我们在神经网络第一层中,Pavia大学的数据集设置了50个隐藏单元,为Salinas和Indian Pine数据集设置了100个,KSC数据集设置了80个,为第二层设置了的100个隐藏单元。

The number of hidden units in CSAE

在公式(11)的权重参数和变化从0.2到0.7。从图5(d)中分类结果可以看出,纹理分布较细的数据集受益于较低层次的浅层信息,而语义分布较平坦的数据集更倾向于较深层次的信息。如图5(d)所示,University of Pavia 的数据对pool4层的权重更大,而Salinas和KSC的数据对pool5的权重更大,而Indian Pine的数据则受益于这三层。我们对于Indian Pine设置的参数为;University of Pavia 设置的参数为、 ;Salinas 和 KSC设置的参数为:、。

Weighted fusion parameter

多尺度特征融合结合了深的、粗糙的信息和浅层的、精细的信息,进一步提高了分割细节。

经过与其他的特征提取算法相比较,发现其所提出的方法在Salinas数据集上表现不理想,尤其时面对训练样本数量较少的时候,分类精度较低,说明了本方法对于处理边界区域能力不足。

05. 总结

本文提出了一种新的HSIC特征提取方法——深度多尺度光谱空间特征融合(),该方法充分利用HSI的光谱-空间信息,学习具有代表性和鉴别性的特征。

  1. 从VGG16卷积模块中提取预处理参数,提取深度空间特征。
  2. 利用平均池化层网络获得具有空间特征的相应尺度的光谱特征。
  3. 为了学习适合HSI的特征,我们融合深空间和光谱特征,提出了一种新的特征融合方法,CSAE。
  4. 我们将较浅的光谱-空间特征集成到较深较粗糙的光谱-空间特征中,以获得更精确的局部到全局表示。

将四种常用的HSI数据集分类精度与现有的特征提取方法进行比较,结果表明该方法具有良好的分类精度,对于语义信息复杂、几何形状多变的数据集具有较好的分类效果。我们提出的方法仍有很大的发展空间,例如在多尺度特征融合和对边界区域的鲁棒分类精度方面。此外,并行和分布式融合策略,在实际应用中将大大提高计算效率。

06. 读后感

可以借鉴的地方

  1. FCN网络时做图像语义分割的一个常用网络
  2. 自编码器这种无监督的学习方法,可以用来和有监督学习相结合,做成半监督的学习方式。
  3. 稀疏自编码器即可以对数据进行降维处理,又可以学习到数据的本质结构。
  4. 多尺度特征融合

缺点

  1. 频繁的下采样和上采样,必然会丢失很多必要的信息,造成分类性能下降。
  2. 本方法先提取了空间特征、然后通过只有三个池化层的平均池化网络提取光谱特征(不用卷积层,作者怕丢失光谱特征),然后进行特征融合。
  3. 在阅读文献的时候,发现有两种方法,一个是分别提取特征;一个是通过3-D 卷积联合joint提取光谱-空间特征。孰优孰劣,不可分。个人感觉joint提取特征更靠谱一点。
  4. 根据FCN的缺点,最后得到的结果还是不够精细。虽然进行的是多尺度的特征融合,但是上采样的结果还是比较模糊和平滑,会对图像中的细节不敏感。个人感觉这也是文章提出的方法对边缘信息不敏感的原因之一吧。

你可能感兴趣的:(Deep Multiscale Spectral-Spatial Feature Fusion for Hyperspectral Images Classification)