两篇关于变化检测的论文
GETNET e2e 2d CNN Hyperspectral image CD
abstract
有两个问题:1.传统算法不适用于高光谱图像的高维数据;2.亚像素级的信息没有被充分利用。因此作者提出了通用的端到端的2维CNN来进行高光谱图像的变化检测。主要贡献:1.引入融合亚像素表示的混合亲和矩阵,挖掘更多的跨通道梯度特征,融合多源信息;2.设计2维CNN在更高的层次有效学习多源数据差异特征,增强了CD算法的泛化能力;3.设计了一个新的HIS-CD数据集进行比较实验
introduction
完整的CD检测过程:1.图像预处理(应该是获得两张对应的图像,就是获得数据);2.生成DI;3.评估。
对于HIS-CD有三个主要问题:1.混合像素问题,就是在该像素区域内有多个物体表面,这个像素表示的是这多个物体表面的平均值,那这样表示就不精确,就限制了HIS-CD的检测;2.高维数据问题,一些CD算法进行特征提取和波段选择来降维,某种程度上会丢失信息;3.有限的数据集问题,HIS-CD数据集较少,且制作耗时费力。
More Actions作者的动机主要有两个:1.必须解决混合像素的问题,利用光谱分解技术分解出一个像素内的具体成分以及相应的abundance map(一个像素内各成分所占的比例);2.深度网络可以很好的解决高维数据问题并且能提取有效的特征,但许多运用了深度学习的HIS-CD方法没有充分提取特征,这些方法一般主要分析一维光谱向量的像素变化,而对应同一像素上不同光谱间的特征包含丰富的信息,但都被忽视了
relation work
CD最普遍和最简单的方法是图像差值以及图像比值,当处理多光谱图像时,主要有以下四种分类:
- 图像的算术操作。对光谱向量作减法;
- 图像变换。将多光谱图像转变到特定的特征空间,突出变化像素,抑制无变化像素;
- 图像分类。这类方法一般是有监督的,需要先验知识;对一对图片中的像素,或者特征进行比较然后分类,相同或者不同;
- 其它先进的方法。主要有基于深度学习的方法;作者关心的是光谱分解方法,光谱分解方法在HSI- CD里面没有广泛的研究,许多关于分解的方法都是个例研究。
methodology方法论
主要有以下步骤:光谱分解,提取端元(端元应该就是一个像素内所包含的多个物体表面),丰度估计,形成混合亲和矩阵,GETNET网络处理这个矩阵得出结果。
混合光谱分解用于亚像素级别信息挖掘
一个完整的光谱分解过程包括:端元提取,丰度估计。
端元提取采用的是ATGP算法;丰度估计采用线性分解以及非线性分解方法对提取到的端元解混
线性混合模型,假定每一个像素是端元的线性组合
\(r\):反射系数,\(b\times1\)向量 \(m\):端元个数 \(\omega_{li}\):第\(i\)个端元的丰度分数,就是占比 \(X\):\(b\times m\)的一个矩阵,\(b\)个波段,\(m\)个端元 \(x_i\):\(X\)中的一列 \(\epsilon\):\(b\times1\)的噪声向量,传感器和模型误差引起 FCLS算法求出\(\omega_l\)
非线性混合模型
\(\bigodot\):是逐点相乘 \(a_{ij}\):\(i\)和\(j\)之间的非线性参数来表征模型非线性特性 \(\omega_{ni}\):第\(i\)个端元的非线性比例 BFM算法求出\(\omega_n\)
HSI的大小是\(h\times w\times b\),\(\omega _n\)和\(\omega _l\)可以表示为\(h\times w\times m\),将其简单的拼接在一起就得到了多元数据立方体
混合亲和矩阵用于信息融合
提出了混合亲和矩阵来进行多源信息融合
上式是一个基本的计算方法,\(r_{ij}\)表示的是对应像素的信息向量
每一个像素都是一个\(n\times n\)的混合亲和矩阵,\(n = b + 2m\),这个矩阵包含了像素级别信息:各个光谱波段间的关系,而且包含了亚像素信息:对应像素中各个端元的丰度之间的关系。
具体分为5部分,A表示两幅图中对应像素的特定波段之间的差异信息,就是各个波段之间用(8)式进行计算;B表示两幅图中对应像素中的特定端元间的线性丰度的差异信息,计算同(8);E表示两幅图中对应像素中特定端元间的非线性丰度的差异信息;因为高光谱数据和端元丰度图之间没有关系,所以C为0。
每一个混合矩阵被输入到2维CNN中,将CD看成是一个分类任务,即某一像素是否改变。那个这个混合亲和矩阵有什么意义呢?
是一种有效的方法来同时处理多源数据的融合,结合了高光谱数据和丰度图数据;
一维的像素向量被映射到二维的矩阵中,能够提供丰富的跨通道梯度的信息,最大化多源信息的利用率;
这个矩阵能和CNN无缝衔接,CNN能够有效的学习到用于CD检测的特征,而且能够整合矩阵中不同部分的信息
GETNET
不同于一般CNN网络的权值共享,GETNET采用的是局部权值共享,因为矩阵有两部分不同性质的信息,因此采用两个不同的卷积核,左上角和右下角。经过卷积核池化之后,学习到两种不同的高层次的特征,然后用全连接层融合两类特征,来提高模型的泛化能力,因为两类特征对不同的数据集比较敏感。如下图
这里的channels应该是每一层卷积核的个数,也就是输出的feature map的通道数
因为根据CVA的结果来看变化和未变化的比例是1:2,也就是说没有变化的像素更多,因此要多采用未变化的样本来训练网络,使网络能够区分更多的未变化样本。所以训练采用的是用CVA方法生成的带标签的伪数据集,正负样本比例是1:2
实验部分
数据集:总共使用了四个数据集,三个现有的数据集,以及开源出了一个数据集
实验结果:
Learning to Measure Changes: Fully Convolutional Siamese Metric Networks for Scene Change Detectionn
原文标题:Learning to Measure Changes: Fully Convolutional Siamese Metric Networks for Scene Change Detection
论文链接:http://arxiv.org/abs/1810.09111
abstract
场景变化检测的困难之处由场景明暗变化,阴影以及相机视点不同而导致的噪声变化很难去衡量,因为噪声变化和语义的变化交织在一起。从最直观的角度出发,直接比较图中特征差异。使用对比损失降低未变化特征对的距离和增大变化特征对的距离,又提出了阈值对比损失来解决视点大幅度变化所造成的问题。
源码:https://github.com/gmayday1997/ChangeDet
introduction
state-of-the-art 的方法基本都基于FCN,基于fcn的模型通过学习具有最好检测效果的决策边界来检测变化。为了区分语义边和噪声变化,一种可行的办法是提出一种指标可以衡量变化的差异,对语义变化产生较大的值,而对噪声变化产生较小的值。深度度量学习的核心思想是减少类内差异,而增大类间差异。论文主要包含两部分:一提取特征,二用预定义的距离函数求特征对的距离。
主要贡献:一、提出第一个解决多种问题的框架结构;二、提出了阈值对比损失 Thresholded Contrastive Loss (TCL)来克服大幅度视点变化问题;三、达到了state-of-the-art;四、将距离度量整合进基于fcn的baseline。
related work
最传统的方法就是通过一个阈值直接找图像中有明显差异的像素,计算成本低,但区分性差。还有就是手工设计特征的方法,如 image rationing, change vector analysis, Markov random field, and dictionarylearning。state-of-the-art的方法基于FCN,都是在学习边界决策来CD。作者的想法是基于另一篇论文,这篇论文通过距离度量变化的,但区分力不够。Change detection based on deep siamese convolutional network for optical aerialimages 这篇论文和本论文很相似,但作者提出的是一个end-to-end的方法来解决多种问题。
proposed approach
基本框架如上,通过全卷积孪生网络来提取特征对,然后用欧式距离或余弦相似性作为距离度量,作者将特征对提取以及度量距离这一个统一的过程称为隐式度量。使用对比损失来优化使changed pair有较大的距离值,Unchanged pair有较小的距离值,使用阈值对比损失解决大幅度视点变化问题。
将变化看成是一种不相似性,用一种不相似性函数来度量。这个函数包括两部分:特征描述符 和 距离度量。特征描述符其实就是经过孪生网络得到的特征对,网络的backbone可以使用Googlenet或者DeepLab都可以。距离度量是作者设计的阈值对比损失函数,并与欧式距离度量和余弦相似度度量做了实验比较。
上图是ContrastiveLoss利用了用欧式距离,\(y_i,j = 1\)表示在这个位置没有变化,\(D(f_i, f_j)\)表示 \(f_i\)和 \(f_j\)特征向量的欧式距离,\(m\)为距离的最大值
上图CosLoss利用了余弦相似性,\(D_k\)是余弦相似性,\(W_k\) 和 \(b_k\) 是可学习到的缩放和移动参数
上面的损失函数存在效果不好以及收敛缓慢的缺点,作者认为存在着一对矛盾:一方面,由于大视角的变化导致激活了更多不相关的信息,那些没有变化的区域会被认为是有变化的,还有就是变化与未变化的信息交织在一起;另一方面,本来没有变化的区域由于视点差异而产生了变化,所以在优化的时候对应的距离就会随着训练而减小至0,有一个减小的趋势,而这种趋势确实会产生我们想要的结果。但关键问题在于,这种减小的趋势不可能使特征对的语义距离减小至0,因此作者提出了TCL损失
这个定义表明没有必要将距离最小化到0,给距离度量一个容差。为了证明这个损失的有效性,作者在CD2014上做了对比实验
训练策略采用MultiLayer Side-Output (MLSO)的方法,这种方法基于两种观点:(1)在反向传播中梯度传递到中间层有可能消失,这会导致中间层的特征不具有区分能力;(2)上层特征的表示能力很依赖于中间层特征的区分能力。
在图中所示的层中分别输出特征对,计算特征对距离,与ground truth求\(loss_h\),然后根据公式计算最终损失\(Loss\),\(\beta_h\)是相应的权重。在预测阶段,对不同的层采用了不同的置信阈值,最终预测结果为各个层的输出取平均。
experimental and discuss
数据集:VL-CMU-CD Dataset PCD2015 Dataset CDnet Dataset Evaluation on CDnet
1.MLSO训练策略确实能够提升效果;2.欧式距离的表现比余弦相似度的效果更好
在第三个数据集上的比较,作者的方法达到了具有竞争力的表现,但有一些指标存在不足。一方面是state-of-the-art的方法采用了语义分割的方法一定程度上改变了任务。我理解的是因为语义分割方法擅长区分前景和背景,语义分割只是分割出了我们所需要的前景目标,实际上网络可能并不知道在某块区域到底有没有变化,只是经过训练就能够分割出变化的目标,因此也就不受视角变化的影响了。另一方面,作者的方法实际是一个图像差值的方法,在精度方面与语义分割方法必然存在一定差距,语义分割本身就是一个像素级别的分类的问题。
discussion
讨论了三个问题:(1)是否提出的网络模型对于大视角变化具有鲁棒性?(2)模型表现是否对于阈值是敏感的?(3)利用对比损失来增强度量学习的方法是否真的能学习到更多具有区分能力的特征?
对于第一个问题,小视角和大视角的变化。采用了TCL损失函数,\(thread = 0\)就是对比损失,0.1时效果最好
对于第二个问题,上面已经可以知道模型易受阈值的影响,因此需要最大化前景变化和背景变化的对比,对不同的距离函数做了对比,采用RMS均方值对比,应该就是特征对求距离后的图像的均方值
结果表明欧式距离产生的图像具有较大的对比度,因此欧式距离更有能力区分背景变化;深层特征带有丰富的语义信息,从图中得出区分能力强的特征鲁棒性就更好
对于第三个问题,作者将对比损度量学习的方法运用于FCN,采用交叉熵损失\(Loss_{class}\)和对比损失\(Loss_{feat}\),结果表明有较小的提升