论文
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
摘要
2020年下半年以来,深度学习都逐渐走向了迭代优化(例如NeRf),还都取得了不错的效果。在RAFT中,作者将迭代优化应用到了光流之中,取得了非常不错的效果,截至到目前RAFT仍旧是多个benchmark的第一名。所以,本篇文章还是非常有必要读一读的。
方法
虽然RAFT的网络结构与大部分光流的结构在总体上仍旧是相似的,即有特征提取模块,然后有cost volumn构建,最后再是一个代价聚合。但是,RAFT在每个模块上,都进行了比较大的改动,保证其能够得到更优良的结果,后文将逐步展开介绍。
1. 特征提取
与大部分方法相同,RAFT也使用了一系列卷积来提取特征。RAFT提取的特征分为两种:第一种是匹配特征,左右影像共享同样的权重,提取的特征主要用于匹配;因此不难想象,这个网络最后会更倾向于提取保证稳健匹配的特征。第二种是内容特征,仅仅在左影像上提取,主要用于对光流结果进行优化,其实就是一个导向滤波,最后这个网络会更倾向于判断那些区域的光流更可能是一致的。
针对第二个网路,RAFT也表明,其实也可以用匹配特征来进行优化;但是用两个网络的效果更好。
2. cost volumn构建
cost volumn构建是本篇文章最有意思的地方!以前看很多光流匹配或者双目匹配的文章,都需要人工的设定一个搜索范围,如果对数据集理解不够透彻,很有可能设置不合理的范围。RAFT就非常简单粗暴,直接算所有像素之间的cost,牛啊,计算公式如下,其中
g
θ
g_{\theta}
gθ是匹配特征,
I
1
I_1
I1和
I
2
I_2
I2分别是左右影像。右侧的计算公式中,
h
h
h是匹配特征的维度,
i
,
j
,
k
,
l
i,j,k,l
i,j,k,l当然就是遍历的索引。
通过以上方式即可获取cost,为了保证有足够的视野,作者还给cost加上了池化,获取不同分辨率下的cost。
由于RAFT的cost volumn构建方法过于暴力,可能会导致计算效率大幅度下降。所以其从两个方向进行了改进:
- 降低分辨率。这个很简单,提取匹配特征的时候多进行几次下采样即可。在RAFT中,匹配特征的分辨率为原始的
1
8
\frac{1}{8}
81
- 一步到位计算所有的cost其实没啥意义,因为RAFT并不是利用三维卷积进行cost回归;所以更好的方法是,需要那个匹配对的cost,就计算那个匹配对的cost。
3. 匹配代价回归
其实利用GRU-Conv做匹配代价回归,早在R-MVSNet里就已经被应用了,用来替代计算量较大的三维卷积。RAFT也差不多是这个思路,至于GRU-Conv怎么工作,博主之前有讨论过了,此处就不再展开。
loss
由于每一层都有一个输出,所以每层都要有一个loss,只是权重不一样,越靠后权重越大。
结果
RAFT的思路非常有意思,后续一定要看代码!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)