Hyperspectral image classification via a random patches network
作者: Yonghao Xu, Bo Du, Fan Zhang, Liangpei Zhang
普通深度学习用于高光谱图像分类,因为要进行预训练和微调导致耗时太多,这篇论文提出一种基于Random Patches Network (RPNet) 的高光谱图像分类方法,不同于普通深度框架, 它直接从图像中随机选择若干个块儿(Random Patches)视为卷积核而且无需任何训练。 通过结合浅层和深层卷积特征,RPNet具有多尺度的优点,分类效果好。
作者给出了一个常规深度学习方法的框架,分为两部分:
同时,作者指出,当前方法存在三个问题:
为了有效解决上述三个问题,作者做出如下贡献:
RPNet采用了一个级联结构,仅包括了PCA、白化、随机块、卷积和ReLu几部分,一个两层的RPNet如图所示。主要包括五个要点:
1. PCA和白化。 原始高光谱数据为 X r × c × d X^{r \times c \times d} Xr×c×d,首先对原始数据运用PCA进行降维,得到前 p p p个主要波段,得到数据 X r × c × p X^{r \times c \times p} Xr×c×p,然后进行白化操作,使得不同波段之间的方差相似,降低了不同波段之间的相似性,有利于分类任务。
2. 随机patch提取并卷积。 从白化数据中随机选择 k k k个像素。在每个像素周围,取 w × w × p w×w×p w×w×p 大小的patch,得到 k k k个随机patch,对于分布在图像边缘的像素,通过镜像图像来填充邻居的空白像素。最后,将 k k k个随机patch作为卷积核与白化后的数据做卷积操作,得到 k k k个feature map。
3. 非线性激活函数: 第一层的卷积得到的 feature map 为 I ∈ R r × c × k I \in R^{r\times c \times k} I∈Rr×c×k。为了保持特征的稀疏结构,利用线性单元为激活函数:
f ( i ) = m a x ( 0 , I − M ) f(i)=max(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=[m2,…,m2]∈Rr×c×k
其中, m 2 ∈ R r × c × 1 m_2\in R^{r\times c \times 1} m2∈Rr×c×1 表示 I I I中第二维数据的平均向量, M M M是重复 k k k次 m 2 m_2 m2组成的平均矩阵。最后,第一层特征表示为:
Z ( 1 ) = f ( I ) ∈ R r × c × k Z^{(1)} = f(I)\in R^{r \times c \times k} Z(1)=f(I)∈Rr×c×k
4. 深层特征提取: 为了提取第 l l l层的特征,我们将第 l − 1 l-1 l−1层得到的结果视为新的输入数据,并采用第一层的特征提取过程,最终得到第一层到第 l 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} {Z(1),Z(2),…,Z(l)}∈Rr×c×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)} {Z(1),Z(2),…,Z(l),X}∈Rr×c×(kl+n)
在分类以前,每个feature map 还做了归一化,特征归一化以后,使用SVM进行分类。
除了RPNet,作者还提出了两个变体:
作者在三个数据集上分析了RPNet和两个变体的分类准确率,得到结论:
同时,在时间效率上,RPNet 在各数据集上时间代价最多为1分钟左右,具有明显的计算效率优势 。
作者还对15个层的特征进行了可视化,指出,第一层中的特征 tend to be object pats containing edges, and corners。同时,深层的特征更加抽象,有些像RandomNet中的随机噪声。最后作者指出,随机的patch是从 feature map 中随机选取的,这也许是 RPNet 比 RandomNet 性能更好的一个原因。
这个方法思路非常新颖,但是随机从feature map中选取patch做为卷积核的方法目前确实没有见过。而且,随着网络层数的增加,用随机高斯噪声为卷积核的 RandomNet 和 RPNet 性能在不断接近。这个方法的原理,也有待讨论。本文等思路更清晰以后再继续更新。