基于深度迁移学习的遥感图像变化检测(Transferred Deep Learning-Based Change Detection in Remote Sensing Images)论文详解
在解读该论文之前,先简单介绍两个简单的网络结构,第一个是2016年发表在ECCV的一篇文章《Deep Reconstruction-Classification Networks for Unsupervised Domain Adaptation》,该论文结构如下:
该网络结构主要是有三部分:
第一部分就是左边共有的部分:该部分提取特征。
第二部分是往右上走的分支:是对源域进行分类。
第三部分是往右下走的分支:该部分网络与第一部分正好相反,如果该部分最终的输出和原始第一部分的输入差距很小,我们就可以认为第一部分学习到的关于目标域的特征表达是有效的。当第三部分的loss趋于稳定时,则停止整个网络的训练。
第二个网络结构是U-net,该论文结构如下:
该模型由一条(contracting path)收缩路径(下采样,常规的卷积网络)和(expansive path)扩展路径(上采样,转置卷积网络)组成。共23个卷积层,模型的输入图像和输出图像的大小是不一样的,输出的图像比输入的要小。
1 基本介绍
1、这是2019发表在Geoscience and Remote Sensing的一篇文章。
2、首先在文章开始,作者阐述了motivation部分,第一个点是说监督的深度神经网络通常已经应用于很多不同的任务中,但是训练具有优越性能的这种深度神经网络需要大量标记数据。 然而,手动标记数据是耗时且昂贵的,尤其是对于遥感中的任务,例如变化检测。第二个点是作者又考虑到做迁移学习时源域与目标域的特征分布是不同的,这个缺点就会导致直接用源域训练的网络不能很好的适应到目标域中,因此作者引入了深度迁移学习的方法去解决这两个问题。
3、主要贡献
1)提出了一种转基于深度迁移学习的变化检测框架,其中未标记的图像从相关的标记图像中获得额外的知识。
2)在预训练阶段,提出重构检测网络(RDN)同时学习源域的变化检测任务和目标域(差分图像)的重建任务。 它可以从功能级别缓解源域和目标域之间的分布差异。该贡献的主要思想是来自2016年发表在ECCV的重构分类文章。
3)在fine-tune阶段,提出了基于区域和边界的策略来选择具有通过无监督方法正确分类的高可能性的像素。
2方法
2.1主要结构
这个网络也可以看作是两大部分:第一部分是预训练阶段,第二部分是fine-tune阶段。
在预训练阶段,可以看作是三部分,分别是对源域的变化检测、对目标域差分图像的重构和前两小部分网络整体集成的网络(也就是作者说的重构检测网络RDN)。在整个RDN网络使用的是U-net网络结构,在这个过程中,作者提出了用合并一对patch去
评估U-net网络结构模式。
在预训练结束,对整个网络进行fine-tune。
2.2 具体训练过程
预训练阶段有三部分,首先用source data训练用于变化检测那部分的网络,其次是用目标域数据训练重构差分图像网络的部分,其中两个网络的低层部分是共享的,最后是训练整个RDN,损失函数定义如下:
1)变化检测网络的loss:
L
s
=
−
∑
i
=
1
N
s
∑
i
=
1
m
∑
j
=
1
m
l
b
c
e
(
y
k
s
(
i
,
j
)
,
y
^
k
s
(
i
,
j
)
)
L^{s}=-\sum_{i=1}^{N_{s}}\sum_{i=1}^{m}\sum_{j=1}^{m}l_{bce}(y_{k}^{s}(i,j),ŷ_k^s (i,j))
Ls=−i=1∑Nsi=1∑mj=1∑mlbce(yks(i,j),y^ks(i,j))
其中,
y
^
k
s
=
f
(
θ
s
)
(
g
(
θ
c
)
(
x
k
s
)
)
ŷ_ k^s = f(θs ) (g(θ_c )(x_k^s ))
y^ks=f(θs)(g(θc)(xks))
是表示检测网络发生的变化的二进制映射。
θ
s
、
θ
c
、
l
b
c
e
θ_{s}、θ_{c}、l_{bce}
θs、θc、lbce
分别表示前面共享部分网络的参数、变化检测右上分支的参数和是第k个patch对中的(i,j)处的像素的二进制交叉熵损失。
2)重构网络loss:
L
t
=
−
∑
k
=
1
N
t
∑
i
=
1
m
∑
j
=
1
m
l
s
q
r
(
r
k
t
(
i
,
j
)
,
ȓ
k
t
(
i
,
j
)
)
L^{t}=-\sum_{k=1}^{N_{t}}\sum_{i=1}^{m}\sum_{j=1}^{m}l_{sqr}(r_{k}^{t}(i,j),ȓ_k^t (i,j))
Lt=−k=1∑Nti=1∑mj=1∑mlsqr(rkt(i,j),ȓkt(i,j))
其中r (i , j ) 是表示利用log-ratio求取的差分图像DI,ȓ (i,j)是表示重构的版本,lsqr是表示是重构目标域的r时每个像素的平方损失。
3)整个RDN的loss:
L
p
r
e
=
α
L
s
+
(
1
−
α
)
L
t
L^{pre}=αL^{s}+(1-α)L^{t}
Lpre=αLs+(1−α)Lt
其中α是一个恒定的参数,平衡变化检测和重建任务之间的重要性。当重构网络loss趋于稳定,则就停止对RDN的训练。具体训练步骤:
fine-tune阶段作者提出两种策略选择通过无监督得到的具有正确分类的像素。首先第一种策略是基于区域的选择,这一部分看的不是很明白,我的理解这个策略是一个验证策略,对于初始CD映射,根据每个像素的连通性将其划分为小区域。 每个区域中的像素不与另一个区域中的像素连接)。作者评估相应的小块A1和A2(从X1和X2裁剪)的土地覆盖变化,作者列了两个公式:
V
A
R
1
=
∣
l
o
g
m
e
a
n
(
A
c
,
1
)
m
e
a
n
(
A
u
,
1
)
∣
VAR_1=|log\frac{mean(A_c,1)}{mean(A_u,1)} |
VAR1=∣logmean(Au,1)mean(Ac,1)∣
var1的小值表示A1中仅存在一种地面物体的概率很高。 当var1和var2都很小时,意味着地面物体在A1和A2中都没有变化。 在这种情况下,必须比较A1和A2。 如果之间的区别 A1和A2很大,我们得出结论A1和A2完全改变了。 否则,它们完全没有变化。
第二个策略是基于边界选择,选择一个变化的或者没有变化的中心像素,当靠近变化区域的像素则归为变化的,若与未变化区域相邻,则归为没有变化的一类。
3实验部分
在实验部分,作者做了大量的工作。实验数据集作者源域选的是Ottawa, Bern, and de Gaulle airport. 目标域选的是:Farmland, River, Coastline, and Mexico data sets.
作者首先做了patch大小m和Spatial Shift 关于h的实验,最终m选取28.h在训练阶段选择2,测试阶段选择4.
第二个是作者做了网络层数的实验,作者选择的9层。
第三个实验作者做了一个何时整合patch的一个实验,在这一部分作者做了三个模块,分为早期、中期和晚期。
a是表示早期,在一开始就merge 图像patch。b是中期,表示分别提取特征,在上采样之前进行merge操作。c表示晚期,分别提取特征,在最后两层之前merge图像patch。在这部分,作者又加了两种可能性,中期和晚期前面几层网络结构参数是否共享。得出以下实验结果:
作者这里还实验了将渥太华数据集分为两部分,upper和lower部分,当upper用来训练时,则lower测试,再用这两个部分的变化检测图拼接在一起得到overall。在后面实验作者测试了在目标数据集上的变化检测结果。这里就不放了。