Deep Few-Shot Learning for Hyperspectral Image Classification

摘要--针对HSI分类任务样本不足的问题,提出了一种deep few-shot小样本学习方法。该算法有三种新的策略:

  1. 利用深度残差三维卷积神经网络提取光谱-空间特征,降低标记的不确定性。
  2. 网络通过情景训练来学习一个度量空间,其中来自同一个类的样本比较接近,而来自不同类的样本比较远。
  3. 利用在度量空间中学习到的最近邻分类器对测试样本进行分类。

该想法的关键是:设计了网络在训练集上学习了度量空间。此外,这种度量空间可以推广到测试集的类中。实验结果表明,该方法与传统的半监督方法相比,在只有少量标记样本的情况下,可以获得更好的分类精度。

01. Introduction

在HSIs中,收集有标记的样品通常是费时费力的。相比之下,未标记的样本更容易获得。这一事实促进了半监督学习的概念,它可以联合利用标记和未标记的样本来处理维数灾难的问题。

本文受few-shot learning的启发,具体来说,CNN模型被用来训练学习一个度量空间。换句话说,在数量充足、与目标数据集(我的理解是测试集)不同的具有标签的数据集上,训练一个CNN模型来提取泛化的特征。一旦训练完成,模型可以从较小的标记目标数据集(测试集)中提取特征。

本文提出一种 deep few-shot learning(DFSL)来对标注较少的HSI数据进行分类(每个类只有五个标记样本),该方法可以分为三个部分:

  1. 从训练集中训练学习一个度量空间(metric space),然后采用欧氏距离在度量空间中去分离不同的类。
    由于深度CNN模型具有很强的非线性表达能力,可以以端到端的方式进行训练,所以用深度三维CNN (D - 3D CNN)对度量空间进行参数化。优化损失函数的目的是使网络学习一个度量空间,在这个度量空间中的样本特征具有较小的类内间距和较大的类间间距。为了更好地训练D - 3D CNN,还引入了残差学习。因此,最后用深度残差三维CNN (d - res - 3d CNN)对度量空间进行参数化。一旦学习了网络,就可以把它看作是一个嵌入函数
  2. 利用预先训练好的D - 3D CNN提取测试数据集中所有样本的特征
  3. 使用简单的最近邻算法(nearest neighbor)对测试样本进行分类

本文的主要贡献如下:

  1. 提出了一种DFSL方法,通过训练网络学习一个度量空间,使同一类的样本彼此接近。重要的是,这种度量空间将对训练中没有出现的类执行相同的操作。因此,利用神经网络分类器可以完成对测试数据集的分类。
  2. 使用深度三维CNN对度量空间进行参数化。此外,为了更好地训练网络,引入了残差学习。这种深度残差的三维CNN不需要任何预处理就可以直接从数据集中提取光谱空间特征。
  3. 在4个著名的HSI数据集上进行了实验,实验结果表明,该方法可以在只有少量标记样本的情况下优于传统的半监督方法。

02. 方法理论介绍

一般来说,由于参数空间和少量的标记样本之间的不平衡,仅仅使用少量的样本来训练一个深度神经网络是很有挑战的一项任务。使用标准的优化技术很大可能会导致过拟合现象的发生。从人的角度考虑一个问题:人可以从很少的样本中学习到知识来解决现实中遇到的问题。从中受到启发,我们可以先为网络制造一些先验知识,也就是本文讲的度量空间

2.1 深度少样本学习与训练策略

为了学习到的度量空间适合于少样本分类任务,本论文使用被称为eposodes的小样本取样来模拟少样本学习任务。度量空间可以看作是一个用深度神经网络参数化的嵌入函数。换句话说,使用深度神经网络通过一个具有可学习参数\phi嵌入函数f_{\phi} \mathbb{R}^{D} \rightarrow \mathbb{R}^{M} 来计算每个类的表示,其中D表示网络输入的维数,M表示网络输出的维数。

随机选择来自训练集中每一类的子集当作episode来计算梯度和更新网络。如图所示,选择每个类内的子集当作support set,将选剩下的样本当作query set。在本文中,每个类选择一个样本当作support set来模拟在测试集中小样本分类的情况。support set和query set当作网络的输入来提取嵌入特征(embedding feature)。query set中的样本x属于哪一类是softmax函数根据x在嵌入空间(度量空间)对于support set中样本的距离来计算的:
p_{\phi}(y=k | \mathbf{x})=\frac{\exp \left(-d\left(f_{\phi}(\mathbf{x}), \mathbf{c}_{k}\right)\right)}{\sum_{k=1}^{N_{C}} \exp \left(-d\left(f_{\phi}(\mathbf{x}), \mathbf{c}_{k}\right)\right)}

其中c_k表示support set中第k类的嵌入特征,\mathbf{X}表示query set中样本的嵌入特征,y是\mathbf{X}的标签,d(\cdot)是欧几里德距离函数。损失函数定义为真实类k的负对数概率,使用随机梯度下降(SGD)的方法
\begin{aligned} J(\phi)=-\log p_{\phi}(y=k | \mathbf{x}) &=d\left(f_{\phi}(\mathbf{x}), \mathbf{c}_{k}\right) +\log \sum_{k=1}^{N_{C}} \exp \left(-d\left(f_{\phi}(\mathbf{x}), \mathbf{c}_{k}\right)\right) \end{aligned}

2.2 Deep 3-D CNN

2.2.1 3-D 卷积

https://www.jianshu.com/p/1247ff367586

2.2.2Residual Learning(残差学习)

参考
https://www.imooc.com/article/44047
https://www.cnblogs.com/alanma/p/6877166.html
https://www.jianshu.com/p/09643588f373

研究直接表明训练深度神经网络失败的原因并不是梯度消失,而是权重矩阵的退化,当网络层数达到一定的数目以后,网络的性能就会饱和,再增加网络的性能就会开始退化,但是这种退化并不是由过拟合引起的,因为我们发现训练精度和测试精度都在下降,这说明当网络变得很深以后,深度网络就变得难以训练了。

ResNet的出现其实就是为了解决网络深度变深以后的性能退化问题。

深度残差网络。如果深层网络的后面那些层是恒等映射,那么模型就退化为一个浅层网络。那现在要解决的就是学习恒等映射函数了。 但是直接让一些层去拟合一个潜在的恒等映射函数H(x) = x,比较困难,这可能就是深层网络难以训练的原因。但是,如果把网络设计为H(x) = F(x) + x,如上图,我们可以转换为学习一个残差函数F(x) = H(x) - x. 只要F(x)=0,就构成了一个恒等映射H(x) = x。
(不是很理解这段话)

而且shortcut连接相当于简单执行了同等映射,不会产生额外的参数,也不会增加计算复杂度。 而且,整个网络可以依旧通过端到端的反向传播训练。训练过程中的潜在误差可以通过快捷方式传递到上层,从而缓解了层数过多导致梯度消失/爆炸的问题,简化了深度网络的训练

2.2.3 网络架构

网络架构图

如上图所示,设计了一个深度三维CNN作为嵌入函数,其中包含两个残差块,两个池化层,一个卷积层作。Conv表示具有3×3×3内核的三维卷积层。池化表示步长为2×2×4的3D最大-池化函数,采用ReLU作为激活函数。

在上图中,虚线框是一个残差块。池化层将导致shotcut和主路径的维度不同。因此,在残差块中不使用池化层。而且,每个残差块都与一个3D最大-池化层连接,以减少计算、聚合特性。由于输入立方体的高光谱维数,将其沿光谱维数的步长设为4,沿空间维数的步长设为2。最后,将特征映射平铺成一维向量。设计的深三维CNN采用算法1所示的策略进行训练。以这种方式,所设计的网络可以学习度量空间,其中具有相同类的样本彼此接近。

2.3 使用最近邻算法进行分类

测试数据集的分类主要包括三个步骤:

  1. 通过预训练的深度残差3-D CNN提取嵌入特征;
  2. 计算标记样本与待分类样本之间的欧式距离;
  3. 通过最近邻NN分类器确定最终标签。

实际上,所设计的深度残差三维CNN可以看作是经过训练后的一种嵌入函数。在测试数据集的分类过程中,所有样本都通过预先训练好的深度残差3d CNN进行输入,提取特征。然后随机选取几个有标记的样本作为监督样本。经过训练的网络使得相似的样本在嵌入空间中彼此接近。因此,通过简单的神经网络分析,可以对测试样本进行分类,如图6所示。需要注意的是,培训数据集和测试数据集是相互独立的。最后,将测试样本标签生成的分类图与groundtruth图进行匹配,对不同的分类方法进行评估。

03. 实验分析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341