Deep Learning Based Registration文章阅读(八)《Learning optical flow from still images》

Deep Learning Based Registration文章阅读(八)

本次文章来自于CVPR2021的《Learning optical flow from still images》,关于光流的文章还有几篇,为《Learning Optical Flow from a Few Matches》、《Upsampling Pyramid for Unsupervised Optical Flow Learning》等。
本篇文章的题目比较吸引人,从静态图像学光流,笔者以为是把SIFT flow的思想用到了deep learning中,但是发现并不是,本文是通过一副静态图像,合成更加真实的“动态图像对”,延续的思想还是合成训练数据来学光流,但是相比于之前的flying chair等数据集,本篇文章的合成方式更趋近于真实世界的情况,并且相比于之前的合成方式是通过一些现成的传统的方法来产生图像对的flow作为ground truth。本文的方式是通过深度估计进而产生flow的方式,通过forward warping的方式产生moving image。这里特别强调是forward warp是因为在常规的registration中都是moving image根据flow产生warped image,是backward方式。

Motivation

光流学习的数据的ground truth很难获得,之前有文章通过self-supervised的方式来缓和这个挑战。本文换了另外一种思路,通过Depthstillation(深度估计 + 虚拟变换相机位置)来模拟产生flow,进而产生moving image,从而可以从一幅静态图像,产生近似于真实世界中的光流数据。结果表明,这种方式来学习光流比用flying chair等合成数据来训练,泛化到真实数据的能力更好,并且比用video数据来self-supervised learning效果更好,同时收集video更为困难。

Depthstillation

在这里插入图片描述
上图是说明怎么通过深度估计,以及随机化的虚拟相机移动来产生flow以及通过forward warping来产生moving image。c0是原来图像通过深度估计方法得到的相机位置,本文用到了两个深度估计的方法,分别是MiDaS和MegaDepth,MiDas是sota,MegaDepth是弱监督。D0代表深度估计得到的depth map。然后通过下面第二个式子得到某个点p0当相机在c1位置时候的位置p1,经过相减得到该点的displacement,进而得到全局的displacement。K是本征矩阵。
在这里插入图片描述
下式的大概解释是:p0经过K-1逆映射回3D space domain,再经过D0得到关于相机位置c0时的depth,再经过相机位置的一个转移矩阵得到c1时的depth,再经过K映射回2D image domain。
在这里插入图片描述
因为上述方法得到的flow,只能通过forward warping得到moving image。但是forward warping有两个很严重的问题,一个是collisions,可以理解为,fixed image中可能有多个点经过flow映射到moving image的同一个像素;另外一个是holes,可以理解为,moving image中的某些位置没有fixed image中的点映射到这里。本文根据这两个问题分别提出了解决方案,如下:

Collisions

针对collisions,可以通过估计每一个映射到moving image中的fixed image中的像素在c1情况下的depth,将depth最小的值放到moving image,这个很好理解。因为我们拍一张照片,后面的物体就被挡住了。

Holes

holes的解决方案分为两个step:
1、直接对holes的位置进行插值,用的opencv中自带的函数。但是感觉效果不够好,如下图c:经过差值后,仍旧在foreground和background重叠的部位出现“stretching artefacts”,所以需要进行step2。

在这里插入图片描述
2、上述伪影通常出现在被collisions包围的非collisions区域。通过膨胀collisions mask可以将类似于“hole”的非collisions区域消除掉,在和原始的collisions mask做异或操作就可以捕获到非collisions区域,将捕获到的非collisions区域与holes区域做并集得到最终要插值的位置。最后结果为上图中的e。

Independent motions

有监督训练一个全景分割的网络,将图片中的每一个objective分割出来,对每一个objective都做一次深度估计+相机位置随机变换,产生一个motion。
在这里插入图片描述在这里插入图片描述
效果如下:
在这里插入图片描述

Dataset

1、train:Flying chair、Things、COCO(single still images with panoptic segmentation)、DAVIS(视频,为了与self-supervised based method做对比)。
2、testing: Sintel(合成数据with ground truth)、KITTI(real world data with sparse ground truth)。

Results

表1是ablation study(depth、hole filling、indepent motion),表2是不同深度估计网络的ablation study,表3是训练图片数目以及每一张图片使用几个objective做motion的ablation study。
在这里插入图片描述
下图是表4的定性结果(RAFT)
在这里插入图片描述
表4是不同训练数据集训练的泛化结果:
在这里插入图片描述
表5是表4经过LITTI15前160张图片fine-tuning的结果,表6是不同光流估计网络的结果,用PWCNet是因为后面使用video的self-supervised的方法是UFlow,是基于PWCNet结构的。
在这里插入图片描述
表7、8是与UFlow的对比:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值