本文是论文《ChangeNet: Learning to Detect Changes in Satellite Images》的阅读笔记。
一、相关工作
卫星图像变化检测中包含相关变化和不相关变化两种,相关变化通常是有限的并且有着明确的定义,比如建筑物、道路的变化;而不相关变化则是多种多样的,比如光照的变化、气候特征(云、雾)的变化以及季节的变化等,这就使得定位和辨别有意义的变化变得困难。本文着重于研究道路和建筑物的变化。
在有监督神经网络中,预测的标签和期望的标签往往有偏差,该概率的角度来说,这是真实的标签分布和生成的标签分布之间的差距导致的,而GAN可以生成类似或等于真实标签的分布以解决该问题。
传统的变化检测方法有两种,一是分类后比较,另一种是比较后分析。分类后比较估计每个输入图像的类别概率图,然后对比这两个类别概率图得到像素级的变化区域图。这种方法的缺点是分类的误差会影响到后面的变化检测。比较后分析可以直接对比输入图像特征信息,首先计算两张输入图像的相似特征图或差图,然后对其进行分析以提取变化区域。后一步可以使用阈值法、聚类法、马尔科夫随机场法等。
Change detection in images can be expressed as: Given two images I 1 I_1 I1, I 2 I_2 I2 taken in the same location at different times, detect and localize all pixels with relevant changes。用 ( x , y ) (x,y) (x,y)表示像素坐标,用 I ( x , y ) I(x,y) I(x,y)表示图像的像素值, c c c表示图像通道数, O O O表示变化图,变化图中的0、1和2分别表示无变化的背景、变化的道路和建筑物。
变化检测结果示意图。
二、方法和网络结构
在传统的GAN中,是不能控制生成的数据的种类的,因此本文使用的是cGAN(条件生成对抗网络),它可以以标签、文本或图像等作为生成器额外的输入,并生成相应的图像。本文使用的cGAN是基于U-Net的,并且在其编码器和解码器之间加入了ASPP(Atrous Spatial Pyramid Pooling)以让分割更具鲁棒性。 G e n c G_{enc} Genc和 G d e c G_{dec} Gdec分别表示生成器的编码器和解码器部分,生成器使用的是VGG-16,每个卷积块包括卷积层、批正则化、激活函数,卷积核大小为 3 × 3 3\times3 3×3。整个网络都使用ReLU激活函数,网络结构如下图。
条件生成对抗网络的目标函数如下:
min
G
max
D
V
(
D
,
G
)
=
E
x
,
y
[
log
(
D
(
x
,
y
)
)
]
+
E
x
,
z
[
log
(
1
−
D
(
x
,
G
(
x
,
z
)
)
]
\min _{G} \max _{D} V(D, G)=E_{x, y}[\log (D(x, y))]+E_{x, z}[\log (1-D(x, G(x, z))]
GminDmaxV(D,G)=Ex,y[log(D(x,y))]+Ex,z[log(1−D(x,G(x,z))]
为了使生成器不仅能骗过判别器,而且还能把每个像素都分类到正确的标签,因此添加了一个多类交叉熵损失
L
C
L
S
(
G
)
L_{CLS}(G)
LCLS(G),其公式如下:
L
C
L
S
(
G
)
=
−
1
N
∑
i
=
1
N
∑
j
=
1
H
×
W
∑
c
=
1
C
y
i
j
c
log
y
^
i
j
c
\mathcal{L}_{C L S}(G)=-\frac{1}{N} \sum_{i=1}^{N} \sum_{j=1}^{H \times W} \sum_{c=1}^{C} y_{i j c} \log \hat{y}_{i j c}
LCLS(G)=−N1i=1∑Nj=1∑H×Wc=1∑Cyijclogy^ijc
其中,
C
C
C是图像通道数,
H
×
W
H\times W
H×W是图像大小,
N
N
N是训练图像数,
y
^
\hat y
y^和
y
y
y分别是生成的变化图和真实的标签图。
GAN的总损失函数如下:
L
G
A
N
(
G
,
D
)
=
L
b
c
e
(
D
)
+
L
b
c
e
(
D
,
G
)
\mathcal{L}_{G A N}(G, D)=\mathcal{L}_{b c e}(D)+\mathcal{L}_{b c e}(D, G)
LGAN(G,D)=Lbce(D)+Lbce(D,G)
其中,
L
b
c
e
L_{bce}
Lbce是二值交叉熵损失,其公式如下:
L
b
c
e
(
∗
)
=
−
1
N
∑
i
=
1
N
∑
j
=
1
H
×
W
(
v
i
j
log
v
^
i
j
+
(
1
−
v
i
j
)
log
(
1
−
v
^
i
j
)
)
\mathcal{L}_{b c e}(*)=-\frac{1}{N} \sum_{i=1}^{N} \sum_{j=1}^{H \times W}\left(v_{i j} \log \hat{v}_{i j}+\left(1-v_{i j}\right) \log \left(1-\hat{v}_{i j}\right)\right)
Lbce(∗)=−N1i=1∑Nj=1∑H×W(vijlogv^ij+(1−vij)log(1−v^ij))
其中
v
^
\hat v
v^和
v
v
v分别表示假的和真的概率图。
最终的目标函数如下:
L
(
G
,
D
)
=
L
C
L
S
(
G
)
+
λ
L
G
A
N
(
G
,
D
)
\mathcal{L}(G, D)=\mathcal{L}_{C L S}(G)+\lambda \mathcal{L}_{G A N}(G, D)
L(G,D)=LCLS(G)+λLGAN(G,D)
文章使用Adam优化器来优化生成器的损失项
L
C
L
S
(
G
)
+
λ
L
b
c
e
(
D
,
G
)
{
v
=
1
}
\mathcal{L}_{C L S}(G)+\lambda \mathcal{L}_{b c e}(D, G)\{v=1\}
LCLS(G)+λLbce(D,G){v=1}和判别器的损失项
L
b
c
e
(
D
)
{
v
=
1
}
+
L
b
c
e
(
D
,
G
)
{
v
=
0
}
\mathcal{L}_{b c e}(D)\{v=1\}+\mathcal{L}_{b c e}(D, G)\{v=0\}
Lbce(D){v=1}+Lbce(D,G){v=0},其中
{
v
=
1
}
\{v=1\}
{v=1}和
{
v
=
0
}
\{v=0\}
{v=0}分别表示全1和全0的ground truth概率图,1和0表示全1和全0的矩阵。Adam优化器的
β
1
=
0.5
\beta_1=0.5
β1=0.5,
β
2
=
0.999
\beta_2=0.999
β2=0.999,学习率为0.0001,batch size为16,4个epoch。
生成器和判别器的详细结构如上表。
三、实验
实验使用的数据集是Massachusetts road and building detection数据集。为了生成变化的图像,首先移除标记的道路和建筑物,并使用图像修复技术进行填充,使用预训练的CycleGAN改变合成的图像季节和光照。图像修复极算法有两种,一种是纹理合成技术来从给定的样例纹理生成大图像区域,第二种是可以填充小图像间隙的图像修复技术。最后把图像切分成 256 × 256 256\times256 256×256大小的小图像,共获得大约1.5w张图像,并划分训练集、验证集和测试集。
评价指标选用的是每类的平均精度(accuracy)、每类的准确率(precision)和召回率、每类的F1值和每类的IoU,IoU的定义如下:
I
o
U
=
T
P
T
P
+
F
P
+
F
N
I o U=\frac{T P}{T P+F P+F N}
IoU=TP+FP+FNTP
选用CDNet、MFCN、SU-Net三个模型作为对比。将两幅输入图像分别送入两个独立的编码器,然后在输出特征图上叠加的方式称为ChangeNet1,将先将输入图像进行叠加再送入一个编码器的方式称为ChangeNet2。
从a~h分别表示测试图像、参考图像、ground truth、CDNet的结果、MFCN的结果、SU-Net的结果、ChangeNet1的结果、ChangeNet2的结果。
不同变化检测方法的各种评价指标值。