从稀疏对应关系中学习光流运动 | CVPR 2021

2021-04-29 11:07:12 浏览数 (1)

AI科技评论报道

本文介绍一篇被CVPR 2021收录的论文:《Learning Optical Flow from a Few Matches》,在这篇论文中澳洲国立大学提出了一种新的计算光流的方法——从稀疏对应关系中学习光流运动。

代价体积(cost volume or correlation volume)是光流估计或者双目匹配中一种常见的中间表示,用来表示特征图之间像素级别的相似度从而找到对应关系。之前的方法计算的是稠密的代价体积(dense cost volume),在光流问题中,它的复杂度为像素个数的平方(HxWxHxW)。

在这篇文章中作者提出一个新的表达——稀疏的代价体积(sparse cost volume),与其保存所有的相似度,我们只取最大的k个相似度保存下来,使它的空间复杂度变为线性(HxWxk)。当特征图为原图分辨率1/4时,本文的方法显著的减少了显存的使用,同时保持了较高的精度。

论文链接:https://arxiv.org/abs/2104.02166

代码已开源:https://github.com/zacjiang/SCV

以下是作者对论文的亲自解读~

1

问题描述

光流是计算机视觉中的一个经典问题。我们的工作基于ECCV 2020的最佳论文RAFT。RAFT所提出的与之前工作不同的主要是all-pairs cost volume,即第一张特征图的每个特征向量都与第二张特征图的每个特征向量算内积来表达相似度,然后提取运动特征用GRU来迭代,实现一个解码的过程。

RAFT的性能与前人工作相比有大幅度的提高,但是其中的一个bottleneck便是它的dense cost volume,复杂度是特征向量个数的平方。为了节约显存,RAFT采取的方法是提取原图分辨率1/8的特征图,然后再计算代价体积。这样做的一个缺点便是很难恢复细小物体的运动。另外,随着视频分辨率的增加,dense cost volume所占用的显存会以像素个数的平方级增长。

我们提出了一个猜想,既然在光流问题中,第一帧中的每一个点只会运动到第二帧中的单一位置,那么是不是可以在cost volume中只保存最大的几个值和位置,而这些信息便已经足够恢复正确的运动?

2

方法介绍

基于以上的猜想,我们提出了稀疏的代价体积(sparse cost volume, SCV)。首先利用特征网络提取出特征图,接着用kNN算法得到k个最大的correlation。SCV便以kNN的输出来构建,保存成PyTorch中的sparse tensor,采用torch.sparse数据结构。

接下来的重点便是怎样处理SCV,并得到光流?

我们设计了一个multi-scale displacement encoder,思想参照了之前RAFT的做法。通过改变sparse tensor的坐标我们设计了一个多尺度的sparse cost volume,接着根据当前的光流估计,以迭代的形式在多尺度的SCV中进行采样,采到的结果被转换成dense tensor,没有值的地方用0来填充。

和RAFT不同的是,与其用bilinear interpolation,我们用bilinear splatting来处理不在grid上面的correlation。在提取出dense motion feature后,我们采用和RAFT一样的GRU update block来进行后面的处理,从而估计出当前步骤的residual flow。

3

实验结果

在我们的实验中,我们设置k=8。和RAFT的1/8原图分辨率的特征图相比,我们可以采用原图1/4分辨率的特征图。

这样做的优点是可以更好的捕捉细小物体的运动。

我么总体的实验结果略低于RAFT但是高于其他的方法,在Sintel clean上取得了1.72的EPE,在Sintel final上取得了3.60的EPE。

假设都用1/4分辨率的特征图,我们的显存使用可以达到RAFT的一半。

我们方法的一个局限性是运动模糊的处理。因为运动模糊会导致一个点和很多其他点有匹配,当k取很小的值的时候,top-k可能不包含正确的运动,所以会导致不正确的预测。

4

结语

我们的方法给后面的研究提供了一个新的方向,我们证实了cost volume可以采用一个稀疏的结构同时依然会取得不错的结果。

随着未来的图像或者视频的分辨率继续增加,为了让显存消耗保持在合适的范围内,sparse cost volume可能会被其他的工作所采用。

0 人点赞