Geo-localization论文阅读3
文章目录
- Geo-localization论文阅读3
1. Ground-to-Aerial Image Geo-localization With a Hard Examplar Reweighting Triplet Loss
ICCV2019
1.1 Thinkings
从全文的角度来看,attention
的思想贯穿了全文。本篇论文的核心从Loss的角度出发, 提出了一种batch-in的加权loss计算方式,重点强调hard examplar(即hard negative)对于整个训练的影响。论文还从网络结构的角度加以改进, 提出了一种Dual Attention的module(类似于CBAM),用以提取更好地representaion。
不得不说本文在如何得到batch-in各个exemplar的loss权重上开了很大的脑洞,在这里并没有使用小型的网络获取权重,而是提出了一个Distance rectified logistic regression,利用逻辑回归去计算每个examplar的权重。Dual Attention的module和CBAM在空间权重提取上面略微不同,前者通过不同尺度的卷积核提取上下文信息以获得空间权重的mask。
综上所述,本论文主要的contributions主要在以下两点:
- 提出了Hard Exemplar Reweighting Triplet Loss, HER。
- 提出了Feature Context-Based Attention Module,FCAM。
1.2 Principle Analysis
如上图所示,整个网络分为三大块。
1.2.1 Main Loss
首先来看第一块main loss,这个loss就是上面提到的Hard Exemplar Reweighting Triplet Loss。第i个exemplar的loss公式如下:
L
h
a
r
d
(
A
i
,
P
i
,
N
i
,
k
)
=
w
h
a
r
d
∗
l
o
g
(
1
+
e
d
p
(
i
)
−
d
n
(
i
,
k
)
)
(1)
L_{hard}(A_i, P_i, N_{i,k}) = w_{hard}*log(1+e^{d_p(i) - d_n(i, k)}) ag{1}
Lhard(Ai,Pi,Ni,k)=whard∗log(1+edp(i)−dn(i,k))(1)
其中, A i A_i Ai就是第i个anchor image即用来查询的ground图片, P i P_i Pi是第i个与anchor Image匹配的positive aerial image, N i , k N_{i,k} Ni,k是第k个与 A i A_i Ai不匹配的negative aerial image(PS:因为这类问题,在数据库中只有一个aerial image能和anchor image对应上,其他的全部都可以和anchor image组成negative pairs)
这个公式的就是在soft margin ranking loss function之上加入了 w h a r d w_{hard} whard这个权重项,因此下面来介绍一下如何计算个权重项。
作者在此引入了
g
a
p
(
i
,
k
)
=
d
n
(
i
,
k
)
−
d
p
(
i
)
gap(i, k)= d_n{(i, k)} - d_p{(i)}
gap(i,k)=dn(i,k)−dp(i)和reference negative这两个概念。reference negative就是指
g
a
p
(
i
,
k
)
gap(i, k)
gap(i,k)为
m
2
frac{m}{2}
2m的exemplar。而
m
m
m就可以理解为一个距离阈值,论文中的计算公式如下:
m
=
γ
2
B
∑
i
=
1
B
(
∣
f
(
A
i
∣
2
+
f
(
P
i
)
∣
2
)
(2)
m = frac{gamma}{2B}sum^B_{i=1}(|f(A_i|^2 + f(P_i)|^2) ag{2}
m=2Bγi=1∑B(∣f(Ai∣2+f(Pi)∣2)(2)
有了以上概念之后我们引入
w
h
a
r
d
w_hard
whard计算公式如下:
w
(
A
i
,
P
i
,
N
i
,
k
)
=
−
l
o
g
2
(
p
m
a
t
c
h
(
A
i
,
P
i
,
N
i
,
k
)
)
(3)
w(A_i, P_i, N_{i, k}) = -log_2(p_{match}(A_i, P_i, N_{i, k})) ag{3}
w(Ai,Pi,Ni,k)=−log2(pmatch(Ai,Pi,Ni,k))(3)
p
m
a
t
c
h
(
A
i
,
P
i
,
N
i
,
k
)
=
1
1
+
e
−
g
a
p
(
i
,
k
)
+
β
(4)
p_{match}(A_i, P_i, N_{i, k}) = frac{1}{1+e^{-gap(i,k)+eta}} ag{4}
pmatch(Ai,Pi,Ni,k)=1+e−gap(i,k)+β1(4)
其中,
β
eta
β就是前面讲的
m
2
frac{m}{2}
2m。
作者这样表示 p m a t c h p_{match} pmatch的原因就是想让网络匹配成功positive pair( A i − > P i A_i ->P_i Ai−>Pi)与reference negative( A i − > N i , r A_i ->N_{i, r} Ai−>Ni,r)的概率相等,都为0.5。这样会让reference negative的权重为1,而其他gap更小的negative pairs权重则会大于1,gap更大的negative pairs权重则会小于1。当然,作者为了防止权重过于大或者过于小,还加入了weight clipping的操作,具体见原论文。
1.2.2 Dual Attention
如上图所示,作者FCAM模块就是一个空间attention加上通道attention,熟悉基础知识应该能一下看懂这个图,所以不再赘述。
1.2.3 Auxiliary Loss
作者参考了Localizing and orienting street views using overhead imagery加入了方向回归。
1.3 Trash Talk
废话不多说,我们直接上图。第一个表是消融实验中去掉FCAM模块可以看到在数据集中会掉零点几个点。第二个表是消融实验中把论文的loss换成以前的loss大概会掉3%左右。第三个表是作者对比之前的方法,就看之前SOTA的CVM-Net,作者的精度比它高了大概十几个点。看到这里是不是就意识到不对劲了?
正如你想的那样,这篇论文的全部contributions就在这两个点上面,然而其实这两个idea对于精度的贡献其实并不大(PS:就算考虑到同时去掉两者会产生一些correlational的变化,也不至于直接掉十几个点吧)。因此,博主认为这篇论文之所以能将Recall@Top1%刷的比以前高这么多,是因为这篇论文用的backbone是resnet,而CVM这些用的最复杂的backbone也就只是vgg16而已。
2. Where am I looking at? Joint Location and Orientation Estimation by Cross-View Matching
CVPR2020
2.1 Thinkings
这篇论文发表在CPVR2020,目前的性能达到了SOTA,并且对比于以前精度的提升已经达到了离谱的地步。这篇论文主要的思想和Bridging the domain gap for ground-to-aerial image matching类似,不过那篇论文中使用的是GAN网络将ground image转为aerial image,而这篇论文则使用了polar transform将ground image转为aerial image,并且本论文还利用圆周卷积计算ground features和aerial features之间的相似度得出ground image的orientation,最后根据orientation将aerial features裁剪出相应方向的feature与ground feature进行距离比较匹配。正如这篇论文所说的,以前的方法忽略了orientation的重要性,而这是一篇同时考虑location和orientation的方法。整篇论文的contributions如下:
- 第一个同时考虑location和orientation的方法
- 提出了Dynamic Similarity Matching module去计算feature的相似度,从而得到ground images的orientation
- achieves significant performance improvements,硬生生地将recall@1% metric变成了recall@1 metric
2.2 Principle Analysis
如上图所示,整个方法的流程主要分为3个部分。首先看第①部分,本论文利用Polar Transform将aerial images全部转为ground images。然后,本论文使用vgg16作为backbone提取feature maps,这里不像以前的方法把图像变成一个向量的representation,而是最后输出一对feature volume。这样做的目的就是为后续进行圆周卷积提取orientation做准备。
第②部分就是计算这对feature volume的correlation。这里采用的计算方式就是圆周卷积。最后correlation最大的地方就是ground images的朝向。
第③部分就是根据前一步得到的orientation将Aerial Features进行裁剪,然后与Ground Features进行距离计算。值得注意的是,这里的representation并不是向量,而是volume,所以计算距离的时候采用的是Frobenius范数。
2.3 Trash Talk
整篇论文的原理并不复杂,但是创意十足,并且performance也是相当给力。下面贴一张吊打之前方法的表格:
这样的性能表现直接将这个领域的metric由原来的recall@1%变成了现在的recall@1。
除了性能,作者讲故事的能力也是一流。我们看看作者是如何解释为什么能使用polar transform将aerial images转为ground images的:
- horizontal lines in the image (parallel to the azimuth axis) have approximately constant
depth and so correspond to concentric circles in the aerial image。意思就是ground images中的水平线有着近似的深度,就相当于aerial image中的一圈圈同心圆。 - vertical lines in the image have depth that increases with the y coordinate and so correspond to radial lines in the aerial image。意思就是ground images中的垂直线随着y的变大,深度也在加深,这就相当于aerial image中的一条条射线。
我当时看到这一番解释的时候,只想说一句“好家伙!”。
3. Cross-View Image Synthesis using Conditional GANs
CVPR2018
3.1 Thinkings
严格来说,这篇论文并不是属于Geo-localization领域的论文,这篇论文要解决的问题是synthesizing ground-level images from overhead imagery vice versa
。Generate natural scenes在CV领域一直是一个比较有挑战性的工作,而cross-view images synthesis由于其巨大的视角变化更是难上加难。
而主要4的个难点归纳如下:
- 空视图像比街景图像包含更大的范围,而街景图像则包含了更多的细节。
- 有 transient objects ,例如行人和车辆的干扰,因为两种视角的图像并不是同时拍摄的。
- 房屋在街景视角看上去不同,但在空域视角看上去又非常相似。
- 在两种视角之下,道路的遮挡和透视都非常不一样。
这篇论文比较有创意地提出了使用Conditional GAN
去解决这个问题。总体来说,这篇论文的contributions主要在以下两点:
- 提出了两种结构的cGANs:X-Fork和X-Seq,用于解决跨视角图像合成模拟的问题。
- 做了大量的定性和定量的实验去证明这两个模型在该领域的有效性。
3.2 Principle Analysis
如上图所示,这是X-Fork网络架构。了解GAN基础知识的同学肯定能从图像上就看出来整个流程。这里博主要说的是,下面分支中Street View Segmentation的生成是为synthesis任务做辅助的,整个结构类似于一个多任务网络,做segementation是为了让生成的街景图像更加真实。
这张图示X-Seq网络的结构图,这就相当于把X-Fork网络下分支的segementation移动到第一个人Generator来做,第二个Generator接受的输入则是第一个Generator生成的模拟图像。
4. Bridging the Domain Gap for Ground-to-Aerial Image Matching
ICCV2019
4.1 Thinkings
这篇论文是一篇在Geo-localization中比较有开创新的工作,就像CVPR2020那篇where am I looking at也借鉴了这篇文章的创意。正如这篇文章的标题一样,它要做的工作时bridge the domain gap,而不是像以前的方法将ground和aerial images转化成view-invariant representations。
所以这篇文章的做法是将地面全景图像转为空视图像,然后用生成的空视图像作为补充特征再加上原地面图像一起与数据库中的空视图像进行匹配。总体来说,本论文的contributions主要在以下几点:
- 利用cGAN输入ground图像生成aerial图像,再将生成的aerial图像作为补充特征与ground图像一起与数据库中的空视图像进行匹配。
- 在利用cGAN生成aerial图像的时候,输出方面,除了有生成的aerial图像还有多任务的segementation;在输入方面,除了有ground图像作为输入,还有ground图像的edge map以提供图像中物体的形状和边界特征。
- 通过实验证明了融合多尺度特征对于cross-view任务特别重要。
4.2 Principle Analysis
本篇论文的主要原理分为三个部分: Cross-View Image Synthesis、Joint Feature Learning、Feature Fusion。博主下面分别介绍这三个部分的原理:
4.2.1 Cross-View Image Synthesis
本论文使用Canndy算子提取Ground Panorama的Edgemap与Gound Panorama一起作为Generator的输入,然后Generator作为一个多任务网络再输出Synthesized Aerial和Segementation。把Edgemap作为输入的原因是它可以提供图像中物体的形状和边界特征信息。
4.2.2 Joint Feature Learning
如上图所示,当地面全景图像
I
g
I_g
Ig作为Generator的输入得到合成空视图
I
a
′
I_{a'}
Ia′之后,把
I
g
,
I
a
′
,
I
a
I_g, I_{a'}, I_a
Ig,Ia′,Ia三个组成一个triad输入encoder提取feature,得到
f
g
,
f
a
′
,
f
a
f_g, f_{a'}, f_a
fg,fa′,fa。这里需要注意的是,合成空视图与真实空视图使用的encoder是共享权重的,而地面全景图使用的是不共享权重的encoder,这是因为CVM-Net证明了由于巨大的视角变化,不共享权重的two-stream网络可以取得更好地匹配的效果。所以成空视图与真实空视图都属于空视,就使用一个encoder,而地面全景图像属于地面视角,就使用另一个encoder。
提取完特征之后,便是计算Loss的部分。从名字就可以看出来这是joint feature learning,所以除了 f g f_g fg和 f a f_a fa这个主要的Loss以外,还有一个由 I a I_a Ia和 I a ′ I_{a'} Ia′计算出来的Auxiliary Loss。当然,这里的Loss都是使用的Weighted Soft-margin Triplet Loss。不过对于这个方法来说,Auxiliary Loss仅仅会用在training的时候,在inference的时候便不会再用合成空视图了。
4.2.3 Feature Fusion
前面的Joint Feature Learning仅仅是在训练的时候利用了合成空视图像,目的是为了提取更好的
f
g
f_g
fg,但在inference的时候便不会再使用了。这个方法并没有充分地利用合成空视图像,所以作者由提出了Feature Fusion的方法。
将一个triad三者经过encoder得到的features,变化成一对更鲁棒的representations。先看上面那个分支,真实街景图和合成街景图在提取出特征 f g f_g fg和 f a ′ f_{a'} fa′之后被concatenate了一下,然后经过一个全连接网络输出一个1000维的 f g ∗ f_{g*} fg∗特征;再看下面那个分支,真实空域图像被提取出特征 f a f_a fa之后,经过一个全连接网络也输出了一个1000维的 f a ∗ f_{a*} fa∗特征。
这个方法涨点非常之多,这说明合成空视图像作为一个补充特征对于整个图像匹配问题有着巨大的贡献。
4.3 Write at the back
这篇论文的Ablation Study我觉得还是做得不错的,分别从单尺度vs多尺度、池化vs不池化、权重共享vs权重不共享等方面做了探讨。值得注意的是,这篇论文证明了多尺度特征对Geo-localization的图像匹配非常重要。