论文记录1
-
- Abstract
- 一Related works
-
- A高光谱影像分类
- B图卷积网络
- 二The Proposed method
-
- A图卷积网络
- B像素到区域的映射
- C动态图细化
- D区域到像素映射
- 四试验结果与分析
-
- A数据集
- B试验设置
- C分类结果
- D标签数量对试验结果的影像
- E超参数影响
- F消融分析Ablation Study
- G训练时间
- 五结论
由南京理工大学 Sheng Wan 在2019年9月26日发表在预印本网站arxiv上, 链接。
这是我在学习图神经网络在高光谱遥感领域的应用中感觉写的比较优秀的一篇。所以稍作整理,增强理解,供以后查看。
Abstract
这部分是对于本文的整体介绍。
-
高光谱影像分类技术的发展
- 基于光谱特征和传统模式识别技术的:KNN,SVM
- 融合空间信息的高光谱影响分类方法:ECHO classifier, Markov Random Field (MRF), mathematical morphology, Gabor filtering
这些基于地物平滑过渡和同质性的假设对于解决高光谱影像分类的有一定的不合理性,因为作者开发出ContextAware Dynamic Graph Convolutional Network’ (CAD-GCN)。
-
提出模型的亮点
- GCN 能够很好的捕获像素间的上下文关系。
- 采用图映射(由pixel to region)和反映射(region to pixel)框架捕获长距离上下文关系。
动态图细化方法精确的描绘像素间的关系和发现精确的区域表示。
-
模型包含的三个部分,以及出现的原因
-
文中提出一个很有意思的观点:deep stacking of local operations for creating a large receptive field with long range context has also been proven inefficient[1]。多层堆叠卷积层对于扩大感受野的区域是低效的,有兴趣的可以看参考文献一,来进一步理解这个过程。所以针对上面这个问题,作者提出的解决方法是首先使用 pixel-to-region assignment 操作,将原始光谱信息进行聚合成不规则的 regions,这相比规则的方形区域更加合理,然后借助GCN能够处理不规则数据的能力,用GCN传递这些 regions 之间边的信息, 不同region 经过信息交换,就可以捕获图像长距离的关系信息。通过这个过程 CAD-GCN 能基于很少的节点进行有效的表示学习,最后基于 region-to-pixel assignment变换,获得单个像素的信息。
-
文中另一个有意思的观点:通过固定的图去做GCN对于高光谱影响分类效果并不理想,因为基于欧几里得距离的预定义图可能不适合测量它们的真实相似性。为了更好的学习相似性度量,作者采用卷积操作动态更新去表示 region。
-
最后,因为学习到的图可能包含不适当的类间连接,特别是在不同类区域之间的边界附近作者引入了“边缘过滤器 edge filter”,可以过滤出不正确的类间相连的边,并细化图所表示的上下文关系。
-
关于后两点我目前,第一次看到这不是很理解(2021/3/7写),不过我通读一遍之后,可是整理博客,回头来看的时候就有些感觉了(2021/3/8写)。所以论文看不懂,解决方法之一就是多看几遍。
一Related works
在本节中回顾了一些与本研究相关的关于HSI分类和GCN的代表性研究。
A高光谱影像分类
- 光谱方法
- 空-谱结合方法
捕获空-谱结合信息的方法
- 结构滤波器
- 数学形态学方法
- 构建超像素
B图卷积网络
- 频域方法:重点:通过卷积定理定义频域方法
- 空域方法:the convolution is defined as a weighted
average function over the neighbors of each node, 重点:对于目标节点构建合适的邻域
二The Proposed method
这一小节将会详细的介绍 CAD-GCN 模型。主要流程为三个阶段,一一介绍如下:
A图卷积网络
GCN 的理论部分,略过,这一部分是通用基础,任何学习图神经网络的都应该掌握,而不是试图靠这样一篇论文去学习图卷积网络的理论部分,不过这篇论文对于图卷积网络的描述还是比较清楚的,可以作为补充。
这里对于紧邻矩阵A 的构建,需要关注,我在第三部分动态图细化会讲这一部分。
B像素到区域的映射
目前不是很确定这里的pixel-to-region和 SLIC算法具体差异,因为两个算法都不是非常了解。和这里参考一篇博客,这里是SLIC算法简单介绍。
对于一副图像,我们需要自己设置要要分多少超像素部分,所以在分割图片的时候,要依据想要的分割块数,初始化一些点,作为种子,然后迭代,将这些点和周围的点共同组成超像素。这里介绍SLIC算法的初始化。作者希望分割的每个超像素尽可能地大小差不多,比如说有一个1020的图像,我想分成8个超像素,这时候我就先均匀分割,每个超像素由25个像素,为55的初始块,然后将最初的聚类中心放在梯度最小的地方避免聚类中心选在边界上,同时降低聚类起始点选在噪声像素点的几率。如下图:
在每次迭代中我只搜索距离当前聚类中心2S距离的像素点,如上图我就搜索距离当前聚类中心10个像素点以内的像素计算距离。这里还涉及了距离的度量问题。文章将颜色距离和空间距离两种度量整合在一起作为最终的距离度量。以上就是pixel-to-region 的简单理解。
C动态图细化
这里用细化,我更想理解为图剪枝。
作者对于构建图的邻接矩阵A,花了大量精力,构建理解矩阵时的原始公式,其中 N~(zi)\widetilde{N}\left(\mathbf{z}_{i}\right)N
(zi?)代表包括 z 所在的中心区域,也包括与 z 所在的中心区域相邻的区域。
然后为了充分利用图结构,采用马氏距离,而非欧式距离构建邻接矩阵,即
然后就是本小节对这一部分所作的进一步分工作,在多层的图卷积中,针对每一层,重新计算邻接矩阵
其中hi(l)\mathbf{h}_{i}^{(l)}hi(l)?代表第 l 层节点 x 的特征。
然后重点来了,这里对一段话进行直接翻译:Since the intra-class examples are generally more similar than the inter-class ones, it is believed that the element Aij(l)\mathbf{A}_{i j}^{(l)}Aij(l)? with relatively small value is more likely to represent inter-class relations than the Aij(l)\mathbf{A}_{i j}^{(l)}Aij(l)? with large value. Therefore, we employ a threshold β(l) for each graph convolutional layer to filter out the interclass relations and reduce the adverse effect of inter-class feature aggregation.
由于类内样本点比起类间样本点通常更加相似,所以我们有理由相信表示类内关系的值Aij(l)\mathbf{A}_{i j}^{(l)}Aij(l)? 比较大,表示类间关系的值Aij(l)\mathbf{A}_{i j}^{(l)}Aij(l)?小。因为要知道Aij(l)\mathbf{A}_{i j}^{(l)}Aij(l)?在非零的时候,是一个单调下降函数。简要画了个图:
所以作者就加了一层限制,设定了一个阈值,只有大于这个阈值的才保留关系,否则置为0,即
这就是所谓的Dynamic Graph Refinement。
D区域到像素映射
作者只是用一个简答的线性插值,就完成了区域到像素的映射,即
将最终的图卷积后的特征H(L)\mathbf{H}^{(L)}H(L)输出。具体这个软分配矩阵(P)\mathbf{(P)}(P)怎么就实现了插值,目前还不知道,需要看代码的。
四试验结果与分析
这一小节进行了试验,并对试验结果做了分析。
A数据集
在三个常用数据集上进行试验:Indian Pines,University of Pavia,Salinas。
B试验设置
每个类别选择30个样本点,如果不足30个样本点的类别就选择15个点作为训练集。训练集的90%作为训练,10%作为验证集。
C分类结果
出类拔萃,笑傲江湖。
D标签数量对试验结果的影像
出类拔萃,笑傲江湖。
E超参数影响
CAD-GCN主要需要调整的超参数:迭代轮次,学习速率,隐藏神经元个数,阈值。不需要调整层数的多少,一般都是两层。
F消融分析Ablation Study
所谓消融分析是指对于构建CAD-GCN网络的主要三个部分,图映射,动态图细化中涉及到的两个部分改进的节点相似性原文公式12,边滤波器原文公式13,对整个模型表现能力的影响。结果自然:出类拔萃,笑傲江湖。
G训练时间
出类拔萃,笑傲江湖。附太有钱了,with a 3.60GHz Intel Xeon CPU with 264 GB of RAM and a Tesla P40 GPU!!!
五结论
出类拔萃,笑傲江湖。总结:此篇文章的重点提出的方法三步:像素到区域的映射,剪枝,区域到图的映射,只需要花时间多多理解就行,不过我感觉还是需要代码来看才行,自己复现有点力不从心,代码功底太差了!不过目前我也没有代码。
参考文献:
[1] W. Luo, Y. Li, R. Urtasun, and R. Zemel, “Understanding the effective receptive field in deep convolutional neural networks,” pp. 4898–4906, 2016.
[2] WAN S, GONG C, ZHONG P, 等. Hyperspectral Image Classification With Context-Aware Dynamic Graph Convolutional Network[J]. arXiv:1909.11953 [cs, eess, stat], 2019.链接
[3] SLIC博客