毕业论文
您现在的位置: 遥感 >> 遥感前景 >> 正文 >> 正文

干货基于深度学习的遥感语义变化检测实战

来源:遥感 时间:2022/7/6

前言

有一段时间没做这方面的工作了,内心很荒,毕竟花费了很多年的心血去琢磨这些东西。学习和记录,也是为了时刻保持思想上的先进性,深度学习技术更新太快,离大部队已经越来越远了。

近来学习了一篇论文,题目是《Bi-TemporalSemanticReasoningfortheSemanticChangeDetectioninHRRemoteSensingImages》,作者来自于信息工程大学,论文质量有保证,而且作者还开源了代码,对于我这种”调包侠“来说,乐此不彼。

论文到底讲了啥?

我们先来看一下摘要,作者的目标是做语义变化检测,即不仅能发现变化位置,而且可以提供变化前后地物的类别属性,这就是变化检测的终极目标。笔者之前只做过二值变化检测,网络结构简单,样本标注也比较简单,当然是可以满足当前发展阶段的应用场景,不过从目前研究来看,语义变化检测是当前研究的主要方向。

另外作者在摘要中提到了做语义变化检测网络一般会有三个分支,即有两个分支用来做语义判断,另外一个分支用来做二值变化检测。作者为了克服语义分支和变化分支之间的信息交换不充分的问题,着重在这一部分做了改进。

作者提出了一个叫CDunit的结构主要来解决两个语义分支之间的信息融合问题,由此产生了两种语义推理模块用来解决单时相和跨时相的语义推理问题。另外还有一个比较有意思的是作者采用了新的损失函数SCLoss,公式为

即采用余弦距离来计算相似度,其实在遥感上也有其它场景也用过余弦距离,比如高光谱上利用余弦距离计算两条光谱曲线的相似度,但是在深度学习上我这个小白还是第一次见有人使用余弦损失,是一种不错的涨分技巧。

网络结构是什么样的?

我对这篇论文没有从头到尾精读,因为读英文太费眼力了,并且大部分理论的东西都是翻来覆去的,有些东西也是无法解释,从数学角度解释也是一堆公式,常人很难理解,我就单从论文一张网络结构图讲起。

图1网络结构,图片来源于作者论文

1)首先,常规套路,论文采用的是孪生网络,前后两期影像分别输入Encoder编码网络,这两个网络共享权重。在Encoder层紧跟了一个Siam_SR层,SR层说白了就是attention结构,代码实现上可以看出是完全一样的,作者也说了是参考DANet写的这一结构。

2)其次,变化信息融合层,CDBlock结构其实是一个简单的卷积层,做法很简单,就是将两个Siam-SR层输出的特征图进行叠加,再送入CDBlock层得到变化特征图,后面又跟了一个CDClassifer,得到二值变化特征图。

3)为了融合两时相的语义特征,将两个时相特征送入Cot-SR结构,Cot-SR结构其实是SR结构的一个变体,只不过输入是两个时相的特征,作者就是采用了这种特征将两个语义分支进行了有效的融合。

4)最后就是关键的损失函数,作者采用了三种损失函数,第一个就是普通的交叉熵损失,用来计算语义分支的损失,第二个是二值交叉熵损失,用来计算二值变化图的损失,第三个就是上面所说的SCLoss,也是论文的亮点,可以有效的激励相似概率分布的不变区域,惩罚变化区域。

图2SCLoss示意图,来源于作者论文

样本如何制作?

以上讲了好多概念,如果没有基础的小伙伴可能听的云里雾里,不过没关系,我们是“调包侠”,下面来看看代码实现,代码作者已开源,地址为

转载请注明:http://www.0431gb208.com/sjsbszl/876.html

  • 上一篇文章:
  • 下一篇文章: 没有了