《DIP: Deep Inverse Patchmatch for High-Resolution Optical Flow》2022CVPR 光流

Zihua Zheng ;

Ni Nie Megvii ;Tencent


这篇文章,作者提出了一个基于PatchMatch方法的高分辨率光流估计方法。

可以以低内存占用率的状态下高精度的获取光流,引入PatchMatch就是为了对抗RAFT的4D All Paired Correlation Volume的高冗余计算。

下图就是4D All Paired Correlation Volume

 进一步讲,为了进一步压缩计算量,作者优化了PatchMatch方法中的Propagation步骤,创造了inverse progation.

So 本文2个创新点,一个PatchMatch求解高精度光流,且提出优化的Inverse Propagation。

说了那么多,讲一下什么是PatchMatch,这里引用知乎Cat food 的内容加以解读解读PatchMatch: A Randomized Correspondence Algorithm for Structural Image Editing - 知乎

下图,PatchMatch 2009年由Barnes在ACM Trans Graph 发表。是一种Nearest Neighbor Matching 方法,为了计算局部相关性。

那么什么是局部相关性呢,看图内容,自己深入理解。

那么,按照这个思路,一旦一个Patch有了最佳匹配,那么它的最佳匹配关系就可以迅速传递给它的邻居,这样邻居就不用再去寻找匹配,直接抱大腿,这样就避免了大量的区块匹配计算。

在真正进入PatchMatch之前还需要了解一个重要定义:

 最近邻场f:它把A的Patch映射到B里的一种映射集合,是不是很熟悉,这不就是一个把Frame1 Warping to Frame2 的操作吗,那么最近邻场f 不就是光流图吗!!!继续往下看PatchMatch的主干内容。

Patchmatch implements a random initialization, iterative propagation and search algorithm for approximate nearest neighbor field estimation .

*橘色部分的Propagation 就是作者要优化的部分,也就是Inverse Propagation的提出。

先看random initialization:

 在PatchMatch中,最开始不知道A和B两幅图中那些Patch是匹配的,那么就有2种方法,一种随机给一个匹配图f,另外一个是给一些先验信息(较难)。在光流问题中,选择随机化匹配图(光流)f。就像GAN网络的随机噪声一样。

再看iterative propagation

下图表示的是一种迭代传播方式,当前块蓝色,需要从它的多个邻居和自己获得自己的f信息!看看那个f信息,把当前块蓝色Warping 之后 和它本来的相似性最高,就利用那个最相近的的f。

 

 看了上面内容,大概对这个神奇的PatchMatch有一些了解了,那么把各种块的匹配关系换成光流的话,不就可以降低4D All Paired Correlation Volume的计算量了吗,有些块并不需要计算,只需要根据邻居的最匹配光流信息,把自己的光流更新一下就可以。

 △p是啥呢,它就是当前Patch和邻居Patch的相对位置呀,如果邻居在右上,那么仅借助邻居的flow并不能把当前Patch匹配到它该到的位置,因为啥?因为有个△p的相对位移的差距呀,所以你要先进行一个△p的移动,再根据flow 进行 Warping,不就得到了,它自己的匹配位置吗!

search algorithm:

随机匹配太简单,不做介绍。

 下面是神奇的PatchMatch的效果图。

说了那么多,也终于到了Patch in Optical Flow Problem (其实答案,我上面已经提到了,如何把PatchMatch 应用在optical flow 里)

 

首先初始化把一个点作为一个Patch, 选它周围的4个点作为种子点,就是像素点。左上,右上,左下,右下。

上图中的Corr 公式,就是把F2图像经过一个flow 和一个相对位移△p的转换,往F1上Warping ,来计算相关性,以此来更新flow。

那么正常的Propagtion 就是下图这样的做操作,利用initial flow的匹配关系,先进行一个相对位移△p的移动,然后进行Warping,最后进行C人relation Volume的计算。但是作者认为这样的计算太费劲了。

所以提出了Inverse Propagation.

 有2个步骤一个Initialization Stage 和 Running Stage. 作者先对图像进行一个相对位移△p的移动,然后把这4个图像进行一个堆叠,也就是论文中所说的Stack

Running Stage:利用初始化的flow 把堆叠之后的图像进行一个Warping操作,得到一个堆叠之后的Correlation Volume,降低计算量。

 

 在像素级的Propagation 是这样操作的。把像素点先进行相对位移△p的移动,然后再进行相应flow的翘曲。

 在补充材料里,也有关于鸭子的素材,贴一下。

 最后一部分就是Local Search :(简单,略)

It is difficult to obtain very accurate optical flow by patch propagation alone, since the range of randomly initialized flow values is very sparse.

 

下图是算法结构,由于是高分辨率,所以作者做了一个不同尺度的更新迭代,以获得更精细的光流信息。 

 作者做了N(种子点数量) 和r(局部搜索范围半径) 的消融实验,结果显式4 2效果最好。

 

MEM是内存占用量吧。 

 

 下面这几幅图真的是惊艳到了。

 

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值