【论文阅读笔记】Hyperspectral image classification via a random patches network

Hyperspectral image classification via a random patches network

作者: Yonghao Xu, Bo Du, Fan Zhang, Liangpei Zhang

摘要与贡献

普通深度学习用于高光谱图像分类,因为要进行预训练和微调导致耗时太多,这篇论文提出一种基于Random Patches Network (RPNet) 的高光谱图像分类方法,不同于普通深度框架, 它直接从图像中随机选择若干个块儿(Random Patches)视为卷积核而且无需任何训练。 通过结合浅层和深层卷积特征,RPNet具有多尺度的优点,分类效果好。
在这里插入图片描述
作者给出了一个常规深度学习方法的框架,分为两部分:

  • 深度特征提取,包括空间和光谱信息的提取(值得注意的是 fine-tune 并不是所有深度学习方法的必要步骤所以是虚线);
  • 通过硬分类器SVM或者软分类器log回归进行分类

同时,作者指出,当前方法存在三个问题:

  • 在训练阶段耗时多;
  • 需确定大量参数,同时,需要大量训练样本;
  • 只利用最深层的特征来对图像进行分类,因此感受野有限

为了有效解决上述三个问题,作者做出如下贡献:

  • 提出了一个简单,计算高效的框架(RPNet),作者说 It is the first time that prefixed convolution kernels are utilized in the deep framework for HSI classification.
  • The RPNet reveals the potential value of random patches,这个往往是在传统方法中忽视的
  • RPNet combines both shallow and deep convolutional layers in the
    classification and has the advantage of multi-scale. 作者指出,这将有效缓解层次化特征提取取的信息丢失问题。

RPNet 结构

在这里插入图片描述
RPNet采用了一个级联结构,仅包括了PCA、白化、随机块、卷积和ReLu几部分,一个两层的RPNet如图所示。主要包括五个要点:

1. PCA和白化。 原始高光谱数据为 X r × c × d X^{r \times c \times d} ,首先对原始数据运用PCA进行降维,得到前 p p 个主要波段,得到数据 X r × c × p X^{r \times c \times p} ,然后进行白化操作,使得不同波段之间的方差相似,降低了不同波段之间的相似性,有利于分类任务。

2. 随机patch提取并卷积。 从白化数据中随机选择 k k 个像素。在每个像素周围,取 w × w × p w×w×p 大小的patch,得到 k k 个随机patch,对于分布在图像边缘的像素,通过镜像图像来填充邻居的空白像素。最后,将 k k 个随机patch作为卷积核与白化后的数据做卷积操作,得到 k k 个feature map。

3. 非线性激活函数: 第一层的卷积得到的 feature map 为 I R r × c × k I \in R^{r\times c \times k} 。为了保持特征的稀疏结构,利用线性单元为激活函数:
f ( i ) = m a x ( 0 , I M ) f(i)=max(0, I-M)
M = [ m 2 , , m 2 ] R r × c × k M=[m_2, \ldots, m_2] \in R^{r\times c \times k}
其中, m 2 R r × c × 1 m_2\in R^{r\times c \times 1} 表示 I I 中第二维数据的平均向量, M M 是重复 k k m 2 m_2 组成的平均矩阵。最后,第一层特征表示为:
Z ( 1 ) = f ( I ) R r × c × k Z^{(1)} = f(I)\in R^{r \times c \times k}

4. 深层特征提取: 为了提取第 l l 层的特征,我们将第 l 1 l-1 层得到的结果视为新的输入数据,并采用第一层的特征提取过程,最终得到第一层到第 l l 层的特征为:
{ Z ( 1 ) , Z ( 2 ) , , Z ( l ) } R r × c × k l \{ Z^{(1)}, Z^{(2)}, \ldots, Z^{(l)}\} \in R^{r \times c \times kl}

5. 特征融合与的分类: 作者在创新点处也提到了,把shallow features 和 deep features 融合,可以得到更好的效果。最终用于分类的特征为:
{ Z ( 1 ) , Z ( 2 ) , , Z ( l ) , X } R r × c × ( k l + n ) \{ Z^{(1)}, Z^{(2)}, \ldots, Z^{(l)}, X\} \in R^{r \times c \times (kl+n)}
在分类以前,每个feature map 还做了归一化,特征归一化以后,使用SVM进行分类。

除了RPNet,作者还提出了两个变体:

  • RPNet-single,与RPNet过程相同,只是RPNet-single在分类阶段只使用与原始光谱特征叠加的最深层特征,与传统的深度学习方法类似。
  • RandomNet,它与RPNet具有相同的体系结构,但使用标准高斯分布的随机滤波器替换随机patch。

在这里插入图片描述
作者在三个数据集上分析了RPNet和两个变体的分类准确率,得到结论:

  • RPNet的表现性能最好,并且随着网络层数的增加准确率呈上升的趋势,直到网络第七层之后,准确率不会再上升。
  • 对于RandomNet,在只有一层的网络中表现很差,不过,随着网络层数的增加,其表现性能逐渐接近于RPNet
  • 对于RPNet-single,在前两个数据集上准确率只有开始轻微的提升然后下滑,在最后的数据集中持续下滑,原因有两个,一个是没有将深层于浅层信息结合,二是随着层数的深入,虽然提取了更重要的特征,但也带来了信息丢失的问题。

同时,在时间效率上,RPNet 在各数据集上时间代价最多为1分钟左右,具有明显的计算效率优势 。

在这里插入图片描述
作者还对15个层的特征进行了可视化,指出,第一层中的特征 tend to be object pats containing edges, and corners。同时,深层的特征更加抽象,有些像RandomNet中的随机噪声。最后作者指出,随机的patch是从 feature map 中随机选取的,这也许是 RPNet 比 RandomNet 性能更好的一个原因。

小结

这个方法思路非常新颖,但是随机从feature map中选取patch做为卷积核的方法目前确实没有见过。而且,随着网络层数的增加,用随机高斯噪声为卷积核的 RandomNet 和 RPNet 性能在不断接近。这个方法的原理,也有待讨论。本文等思路更清晰以后再继续更新。

猜你喜欢

转载自blog.csdn.net/gaopursuit/article/details/88586454