【阅读笔记】Cost Volume Pyramid Based Depth Inference for Multi-View Stereo


前言

CVP-MVSNet(CVPR2020) 学习笔记
先预测出深度信息然后用来缩小更大的图片深度
CVP-MVSNet相比cascade MVSNet缩小了cost volume的范围。

摘要

他们提出了从多个视觉图片进行深度图推导的基于cost volume的神经网络。指出,用coarse-to-fine的方法构建cost volume金字塔,而不在固定分辨率下构建,可以get一个紧凑、轻量级的网络,并允许我们推断高分辨率深度图,以获得更好的重建结果。为了达到这个目的,他们首先建立一个基于在图像的最粗分辨率下,在整个深度范围内对fronto-parallel平面进行均匀采样的cost volume。然后,给定当前深度估计值,在像素深度残差上迭代构造新的cost volume,对深度图精化。与3D点上的Point-MVSNet相比,在cost volume金字塔模型上工作可以导致更紧凑、更高效的网络结构。他们进一步提供了(剩余)深度采样和图像分辨率之间的关系的详细分析,——建立紧凑的cost volume金字塔的原则。

1、介绍

MVS就是从多个视角图片推导重建一个场景的三维模型。传统的方法在重建朗伯曲面的场景取得了很大的成就,但仍存在光照变化、纹理区域低、反射等问题,导致进一步重建的匹配对应不可靠。

最近基于深度学习的方法采用深度神经网络(deep CNNs)来推断每个视图的深度图,然后采用单独的多视图融合过程来构建3D模型。这些方法使网络能够提取具有辨识性的特征,编码场景的全局和局部信息,从而获得鲁棒的特征匹配。特别是,Yao等人提出MVSNet来为每个视图推断深度图。关键步骤是建立一个基于平面扫描过程的cost volume,然后再进行多尺度的3D CNNs对其正则化。同时获得有效的深度推理精度,其对存储空间的要求是图像分辨率的三倍。采用recurrent cost volume正则化的方式来处理高分辨率的图像。(虽然内存消耗由立方增长降低到平方增长却导致了更长的运行时间

为了实现一个高效率的网络,Chen等人在3D点云上工作,通过对每个3D点的k个最近邻进行边缘卷积,迭代地预测沿视觉光线的深度残留。虽然这种方法是高效的,但是它的运行时间几乎随着迭代层数线性地增加。

So 本文的CVP-MVSNet 来了。首先为每个输入图像建立一个图像金字塔。然后,为了reference image的最糙分辨率,通过在整个场景的深度范围内采样来建立一个紧凑的cost volume。在金字塔的下一层,从当前深度估计的邻居处进行深度残差搜索,利用多尺度三维神经网络(CNNs)进行正则化,构建部分cost volume。他们这个网络在每一层用一个很短的搜索范围迭代地构建这些cost volume时,就会得到一个小而紧凑的网络。因此,就快且牛。

敲黑板,和之前方法的四点不同:

  1. 之前在3D点云上进行卷积。相反,本文在图像坐标上定义的规则网格上构造cost volume,取得更快的运行速度。
  2. 提出一个基于深度采样和图像分辨率之间的相关性建立一个紧凑的cost volume金字塔的原则。
  3. 使用多尺度的3D-CNN正则化来覆盖大的感受野,并鼓励残差深度估计的局部平滑,获得更好的精度。
  4. 可以用小分辨率的图像输出小分辨率的深度。

主要贡献:

  1. 本文提出了一种基于cost volume的、紧凑的、计算效率高的MVS深度推理网络。
  2. 本文用coarse-to-fine的方法构建cost volume金字塔并基于对深度残差搜索范围和图像分辨率的详细分析。
  3. 该框架可以用更少的内存需求处理高分辨率的图像,比Point-MVSNet快6倍,并提高了精度。

2、相关工作

传统MVS。深度学习时代之前的算法称为传统的MVS方法,它使用体素、水平集、多边形网格或深度图来表示物体或场景的三维几何。接下来,我们主要讨论基于体积和深度的MVS方法。

体积表示可以建模大部分的物体或场景。给定一个物体或场景的固定体积,基于体积的方法首先将整体划分为小体素,然后使用光度一致性来决定该体素是否属于表面。这些方法不对对象的形状施加约束。然而,空间离散是内存密集型的。相比之下,基于深度图的MVS方法在建模场景的3d geometry中具有更大的灵活性。

基于深度学习的 MVS。深度cnn在图像识别、目标检测、语义分割等视觉任务方面都很牛了。在三维视觉任务中,基于学习的方法被广泛应用于解决立体匹配问题,并取得了很好的效果。然而,这些基于学习的方法不能很好的泛化到多视图问题,因为修正或符合多视图场景可能会导致信息的丢失。

最近,一些单刀直入的方法被提出。例如,第一个基于学习的MVS pipeline。该方法学习体素在表面上的概率。与此同时,Kar等人提出了一种可学习的系统,用于将像素特征向上投影到三维体中,并对一个体素是否被表面占据进行分类。这些方法取得了可观的结果。但是,它们使用的体积表示占用了大量内存,因此,这些算法不能处理大规模场景。

Yao等人进行了大规模场景重建。作者建议通过构建一个cost volume,然后进行3D CNN正则化来学习每个视图的深度图。然后,他们通过融合估计的深度图从多个视角获得三维几何。该算法使用存储容量为图像分辨率立方的cost volume。因此,它不能利用高分辨率图像中可用的所有信息。为了解决这一问题,该算法采用GRUs[43]对成本量进行顺序规整。因此,该算法降低了内存需求,但增加了运行时间。

与本文方法相关的是Point-MVSNet。Point-MVSNet是一个直接在点云上以coarse-to-fine的方式预测深度的框架。它允许在3D空间中聚集来自其k个最近邻节点的信息。本文的方法在迭代地预测和细化深度图方面也与之相近。

然而,我们与Point-MVSNet在几个关键方面有所不同: 我们不是在3D上工作,而是在常规图像网格上构建cost volume。受PWC-Net 中部分cost volume的启发,我们构建了部分cost volume来预测深度残差。对比表明,本文的基于cost volume金字塔的网络结果能得出更紧凑和准确的模型,且相同depth map分辨率运行得更快。

Cost volume cost volume在传统方法中广泛用于对未增强的图像进行密集深度估计。然而,最近的基于学习的方法以固定的分辨率构建cost volume,这导致处理高分辨率图像的高内存需求。最近,提出了部分cost volume的概念。简而言之,通过在扭曲的source image中围绕其位置局部地搜索矩形内的对应关系来构建部分cost volume。受这种策略的启发,本文提出了cost volume金字塔算法来逐步估计每个像素沿其视觉光线的深度残差。正如下面实验中所示,在多个层次上构建cost volume会得出更有效且高效的框架。

在这里插入图片描述网络结构:首先对reference image和source image进行降采样以形成image金字塔。我们将特征提取网络应用到各个层次和图像中提取feature map。然后我们以coarse-to-fine的方式构建cost-volume金字塔。具体地说,我们首先构建一个与最粗图像分辨率相对应的cost volume,然后迭代地构建partial cost-volume进行深度残差估计,以实现输入图像的深度映射。

3、方法

假设reference image表示为I0∈ RH×W,其中H和W定义其维度。设{ Ii } N i = 1为其N近邻source image。假设{Ki,Ri,ti } N i =0是所有视图对应的摄像机参数、旋转矩阵和平移向量。我们的目标是从{Ii}N i=0推断i0的深度图D。本文方法娥妹子嘤之处在于使用了一个基于cost volume金字塔的前馈深层网络,该网络是以coarse-to-fine的方式构建的。下面,就是本文关键之处。

1.特征金字塔

由于source image随光照变化而变化,本文采用了可学习特征——一个提取密集特征对应关系的关键步骤。现有工作的一般都是利用高分辨率图像提取多尺度图像特征,来输出低分辨率深度图。相比之下,本文的方法表明低分辨率图像包含足够的信息,可用于估计低分辨率深度图。

我们的特征提取的流程由两个步骤组成。首先,为每个输入图像构建L + 1级图像金字塔,其中金字塔的底层对应于输入图像 Ii。其次,我们使用CNN,即特征提取网络,获得第L层的特征表示。具体来说,它由9个卷积层组成,每个卷积层附有LeakyReLU的激活层。(之前mvsnet结构是conv+relu+bn,本文是conv+leakey relu。 我觉得是因为relu负值都设为零 ,而leakey给所有负值赋予一个非零斜率。
参数存在负值,将激活单元的输出均值向0推近,也就达到 BN的效果)我们使用相同的CNN来提取所有图像中每层的特征。本文指出 ,与现有的工作相比,他们的特征提取pipline最牛,显著降低了内存需求,同时提高了性能。
在这里插入图片描述

2.Cost Volume 金字塔

得到提取的特征后,下一步是在reference视图中构建用于深度推断的cost volume。常见的方法通常以固定的分辨率构建单个cost volume,这会导致较大的内存需求,因此限制使用高分辨率图像。相反,本文提出构建一个cost volume金字塔,通过迭代估计和精化深度图以实现高分辨率深度推断。更准确地说,我们首先对图像金字塔中最粗分辨率场景的 fronto-parallel平面做均匀采样来构建用于粗略深度图估计的cost volume。然后,我们基于粗略估计和深度残差迭代地构建部分cost volume,以获得具有更高分辨率和精度的深度图。

粗深度图推理的cost volume 我们首先在第L层对应的最低图像分辨率建立一个cost volume。假设在场景的reference视图上测量的深度范围为 dmin~dmax。我们通过在整个深度范围内均匀采样M个fronto-parallel平面来构建reference image的cost volume。采样深度d = dmin+m(dmax-dmin)/M,m代表一个平面,其法线n0为参考摄像机的主轴。

我们将深度为d的第一个source视图和reference视图之间的可微单应性矩阵定义为:

在这里插入图片描述
其中I是单位矩阵,KLi和KL0是Ki和K0在L层的标定内参矩阵。

每个单应变换矩阵Hi(d)表示source视图中的xi和reference视图中的像素x之间的对应关系。这种对应关系定义为λiXi = Hi(d)x,其中λi表示source视图i中Xi的深度。

我们使用可微双线性插值来重建对应reference view的feature map。深度d处所有像素的cost被定义为其来自N + 1个视图的特征方差,

在这里插入图片描述
该度量方法鼓励每个像素的正确深度具有最小的特征方差,即满足光度一致性约束。同时计算每个假设深度的cost map,并将这些cost map拼接存储于单个cost volume内。

多尺度深度残差推理的cost volume
终极目标:获得I0(reference image)的D = D0。从Dl+1迭代进行,从l+1层的深度估计开始迭代,以获得上一层Dl的精确深度图。更确切的说,我们首先通过双三次插值将Dl+1向上采样到Dl+1的上一层 ,然后,构建部分cost volume,以回归定义为Dl的剩余深度图,从而在第l层获得精确的深度图Dl = Dl+1↑+ΔDl。

虽然我们与迭代预测深度残差有相似的地方,但我们认为,在深度残差上建立规则的3D cost volume,然后进行多尺度3D卷积,可以得出更紧凑、更快和更高精度的深度推断,而不是在点云上进行卷积。该灵感来源于相邻像素的深度位移是相关的,这表明规则的多尺度3D卷积将为深度残差估计提供有用的上下文信息。因此,我们将深度位移假设安排在一个规则的三维空间中,并按如下方式计算cost volume。
在这里插入图片描述

3. 深度图推断

在本节中,我们首先提供细节,以最粗略的图像分辨率进行深度采样,并以更高的图像分辨率离散局部深度搜索范围,以构建cost volume。然后,我们引入基于cost volume的深度图估计来实现深度图推理。在这里插入图片描述

cost volume金字塔的深度采样
我们观察到虚拟深度平面的深度采样与图像分辨率有关。如上图所示,不必密集地采样深度平面,因为图像中那些采样的3D点的投影太接近,并不能为深度推断提供额外的信息。在我们的实验中,为了确定虚拟平面的数量,我们以0.5个像素为间距计算图片的平均深度采样间隔。

为了确定每个像素的当前深度残差的局部搜索范围,我们首先将其3D点投影到source视图中,沿着极线在两个方向上找到距离其投影两个像素的点,并将这两个点反投影到3D射线中。这两条光线与参考视图中的视觉光线的交点决定了当前层上深度细化的搜索范围。

深度图估计
与MVSNet 类似,本文将3D卷积应用于构建的cost volume金字塔,以聚合上下文信息和输出概率体积。注意,PL和{ Pl } L-1 l=0分别在绝对深度和剩余深度上生成。我们首先对PL应用soft-argmax来获得粗略深度图。然后,我们通过将soft-argmax应用于PL和{ Pl } L-1 l=1来迭代地细化所获得的深度图,以获得更高分辨率的深度残差。

L层采样深度为d = dmin+m(dmax-dmin)/m,因此,每个像素p的深度估计计算如下
在这里插入图片描述
进一步细化当前估计值,即第(L+1)层的粗略深度图或者说是细化深度,我们估计其剩余深度。假设rp = m x Δdlp,计算下一层的更新深度为
在这里插入图片描述

4. 损失函数

本文采用监督学习策略,构建了金字塔的ground truth深度作为监督信号。与现有的MVSNet框架类似,我们使用L1范数来对ground truth和估计深度做差值运算。对于每个训练样本,其损失函数是
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值