ML

Change Detection

Posted by Wngzh on August 16, 2021

变化检测方法

评价指标

\[Precision = \frac{TP}{TP+FP}\] \[Recall = \frac{TP}{TP+FN}\] \[F1-score = \frac{2\times Precision}{Precision + Recall}\] \[OA = \frac{TP + TN}{TP + FP + TN + FN}\] \[IoU = \frac{TP}{TP + FN + FP}\]

Review* Change Detection Based on Artificial Intelligence: State-of-the-Art and Challenges

基于深度学习的变化检测主要包括以下四步

  1. 均质化,主要包括辐射校正和几何校正,对于异构数据,则需要使用额外的模型进行特征空间转换。
  2. 生成训练集,注明变化的区域,数据集往往需要像素级的标注,可以使用数据预处理的方法来缓解数据量不足的问题
  3. 模型训练,测试集与训练集的划分,超参数调整。
  4. 模型应用,泛化性与鲁棒性评估。

数据主要有光学数据、SAR数据、街景数据、其他还有数字高程数据、GIS数据、和数字点云数据,主要以前两种为主,其余的起到的是辅助检测效果。

HSI高光谱数据有数百上千窄波段,可以提供丰富的光谱信息,在变化检测中的问题主要包括分辨率低(混合像素占比高、纹理模糊)、维度高、数据集有限等问题。 MSI多光谱图像分辨率相对较高,能够反映物体的颜色、纹理等信息,图像量也比较大,航空图像的分辨率能做的比较高 全光图像为单通道灰度,带宽高,信噪比大,分辨率很高。

光学图像受限于自然条件,SAR图像能全天候成像,存在的问题是相干斑噪声以及如何生成变化图,变化度量的设定。

根据数据来源是否相同,分为同质数据和异构数据变化检测。异构数据能够提供更加丰富的信息。

常用的变化检测网络结构

Single Stream框架

通常只需要一个核心模型就可以实现变化检测。

直接分类结构:把两个时段的数据融合为中间数据,然后使用单个分类器进行特征学习,对变化和非变化区域进行分类,也被称为是双通道结构。关键是设计融合方法和分类器。融合方法常用的有变化分析和直接拼接。直接拼接一般是按照channel进行concat,变化分析有CVA(变化向量分析)、对数比算子差分、变化测度等。,分类器则是使用DNN结构等ML方法。

基于转换的映射结构:对其中一种数据进行特征映射MNN映射神经网络,转换到另一个特征空间之后,对转换后的进行比较分析构建变化图;另外可以使用神经网络来对图像进行辐射归一化等处理。常用于异构图像检测。

Doulbe Stream框架

有两个输入,使用两个网络结构进行处理。

Siamese结构:一般有两个结构相同的网络组成特征提取器,将输入的2时段图像转为特征图,然后使用变化分类得到变化图。两个子网络可以同时训练,权值可以选择共享或者不共享,分为纯Siamese和伪Siamense(灵活性更好)。生成的多尺度图像,可以按照通道拼接,或者生成差异图,或者保留多尺度信息,将不同尺度的特征图concat用做检测。

基于迁移学习的结构:由于训练样本不足,使用一个域中的训练来在另一个域获得更好的结果。低层特征可以作为有用特征进行迁移。迁移学习分为两步,监督训练和微调,如果使用微调,使用少量的训练样本,这样可以直接得到变化图。不使用微调可以在特征图上进行低秩分析、CVA、聚类等手段,得到最终的变化图。

后分类结构:两个分类器对每个时刻的图片进行分类,利用分类结果对变化的情况进行评估。这样做需要大量的训练样本,但是对于图片环境差异的鲁棒性更好,对于不同的额拍摄条件、不通传感器、以及异构图像都有较好的适应。

多模型集成结构

特征提取+分类器?跟Siamese有啥区别? #TODO

无监督学习

使用一些聚类方法,或者是AE这类无监督学习的方法,来获得高置信度的变化或者不变样本。生成一个潜在变化图?弱监督和半监督可以作为另一种方案,标签聚合、迭代学习生成模型等。

其他

The PCANet, with its convolution filter banks chosen from PCA filters, is able to reduce the influence of speckle noise and has been used in SAR image change detection.

cnn的使用使变化检测方法达到了最先进的水平,但目前还没有系统的方法来设计和/或训练网络,这是RS社区长期存在的问题。

应用

四中变化图:二值图、一类图、从到图(From-to)、实例图。分别表示的变或不变二值结果、只关注某一类增加或减少的一类图、标注变化类型的从到图、关注变化实例数量的实例图。

主要应用集中在城市发展、资源和环境监测、自然灾害评估等方向。

挑战

变化检测首先可以考虑异构数据转换映射或者Siamese网络结构,如果想要获得from-to结果,后分类结构比较好,少样本可以使用迁移学习、AE、GAN等方法减少对样本标注数据的依赖。

主要挑战有

  1. 异构大数据。高光谱等高维数据、非线性数据等带来了训练学习的困难。 目前考虑的大多为异构图像之间的变化检测,而不是同一时间的多源数据融合。(?同时间多源数据获取的困难程度)点云数据和二维图像三维重建与航空图像的融合也是一个热点。遥感图像数据量大,大块图像、参数多、训练困难,需要平衡数据量和参数。

  2. 数据不足和小样本的挑战。无监督方法。弱监督,更进一步的无监督是未来主要研究的方向。使用用户标注的众源数据也是一个研究方向。

  3. 不同任务场景下模型通用性,以及模型可靠性。可靠性研究:利用预处理减少误差、提高原始数据可靠性;网络模块化,增强可解释性;多模型集成学习提高鲁棒性;利用mrf、crf后处理提高结果实用性。提高变化检测精度,使用超像素等方法精细化边界。实例更改图仍然缺少研究

Remote Sensing Image Change Detection With Transformers

变化检测的单步方案:直接产生两幅图像的变化检测结果,相比于双步方案,不需要分类结果的标签,只需要变化的GroundTruth。如何处理两个输入,并进行融合是一个重要的问题,目前主要有将图片进行直接concat,输入到语义分割网络;特征级方法是将双时间特征通过神经网络提取,基于融合特征进行变化检测。

A Deep Convolutional Coupling Network for Change Detection Based on Heterogeneous Optical and Radar Images

异构图像SAR与光学图像联合变化检测。作差阈值?SAR与光学图像异构检测最主要的问题是特征的差异性。目前的解决办法是使用先分类再比较的方法(PCC),或者是使用像素级标注的变化检测数据。还有Copula、流形学习、核化正则相关分析、mrf等。文章中使用了SCNN对称卷积耦合网络。完全无监督。

异构图像,要在不变像素上训练联合特征。先将异构图像转换到具有更加一致的特征表示的特征空间,然后通过特征表示来检测变化。

网络结构:

对称结构,每一边有一个卷积层和数个耦合层,耦合层的连接是在同位置像素之间。作用是把卷积层生成的特征,转换到更加一致的特征空间,以便直接比较 \(F_i^j(C)(x,y)=s(W_i^jF_{i-1}(C)(x,y)+b_i^j)\) (Fji(C) denotes the jth feature map of the ith coupling layer and (x, y) represents the pixel position. Accordingly, Fi(C)(x, y) stands for the feature vector at the position (x, y) of the ith coupling layer. Wiis an ni× ni−1weight matrix, which contains the weights of the connections between the (i −1)th layer and the ith layer, where nidenotes the number of feature maps in the ith layer. bidenotes the bias vector for the ith coupling layer. ) 这里允许耦合层层数两侧不同,因为特征有差异。从耦合层处理之后,计算pixelwise的像素值距离生成差分图,差越大,区别越显著。耦合层的连接权重,在每一层中,对所有像素都是一样的

耦合函数为 \(min F_{cop}(\theta,P_u)=\underset{(x,y)}\Sigma P_u(x,y)||h_1(x,y)-h_2(x,y)||_2-\lambda \underset{(x,y)}\Sigma P_u(x,y)\) $\theta$是参数项,$P_u$表示的是某点为不变的概率,最后一项为优化约束项。

训练过程为迭代优化过程,首先对P进行0-1随机初始化,然后交替优化$\theta$(BP)和$P_u$(以$\lambda$为阈值,将P_u设置为0或1)

为了避免常数形式的特征退化,使用DAE训练一侧,另一侧采用BP。DAE的使用需要对噪声进行建模。

看起来实验过程的意思是用一个迭代过程完成训练+检测?