Cost Volume Pyramid Based Depth Inference for Multi-View Stereo
CVPR 2020 oral

Abstract

build cost volume pyramid in a coarse-to-fine manner

而不是固定分辨率的代价体,使得网络更轻量化,可以迭代生成高质量的深度图

首先通过对最粗糙图像的前平行平面均匀采样构建最初的cost volume,然后进行pixel-wise depth residual进行refine

与PointMVSNet相比,代价体金字塔比直接在3D点上处理更好

Introduction

传统方法和引入CNN部分介绍的很好!

MVSNet内存消耗cubic级别,R-MVSNet减少了内存但需要更多时间,Point-MVSNet运行时间和迭代次数成正比

CVP首先构建图像金字塔,对于coarest ref图像,采样整个场景的深度范围来构建紧凑的代价体,在金字塔下一级,对当前深度假设的邻域进行residual depth search,构建partial cost volume,最后用3D CNN正则化

也是coarse-to-fine manner,但与PointMVS不同的是四点:

  1. 还是构建cost volume,而不是直接卷积3D点云
  2. 基于深度采样和图像分辨率的关系构建cost volume pyramid
  3. 多尺度3D CNN,覆盖较大的感受野
  4. 可以输出小分辨率深度图和小分辨率图像

key sight】

  • cost volume pyramid
  • coarse-to-fine manner → relation between depth residual search range and image resolution

Algorithm

要做的核心事情 ref, src, depth map那些介绍的很好!!

Feature Pyramid

因为最终的depth map是低分辨率的,所有没必要用高分辨率的图像,低分辨率的input也可以的

降低内存消耗,提升性能

  1. 首先对于每张图片构建(L+1)个级别的图像,从大到每个级别除2的分辨率
  • Ii0就是原图, IiL是最小的图
  1. 对金字塔的每一层作用一个同样的CNN
  2. 最终得到每层的特征图维度是16,表示为【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_深度学习

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MFnzmsCU-1642686708871)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/eb87189f-b109-4eb7-97ad-2b6ba6f935f5/Untitled.png)]

Cost Volume Pyramid

之前的方法构建single fixed分辨率的cost volume,因此限制了高分辨率图像的使用

构建代价体金字塔,迭代的estimate and refine深度图

  1. 首先用最低分辨率的图像和深度的均匀采样构建cost volume得到粗糙的深度估计
  2. 再迭代的通过coarse estimation and depth residual hypotheses构建partial cost volume

【第一阶段】

最小分辨率的图像特征 + 深度假设间隔

通过homography将src投影到ref上(注意 内参矩阵要根据分辨率放缩)

还是通过插值,将src的feature map投影到ref上

最终通过方差将所有的cost聚合成一个,维度是【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_3D_02

M是深度假设间隔(影像深度估计准确度的重要参数),F是特征维度

从中可以得到一个性质:the correct depth for each pixel has the smallest feature variance(photometric consistency)

【第二阶段】

我们的核心目标是获取原图对应的深度图,思想是迭代的从最低分辨率的深度图不断refine获取上层
具体而言,首先对【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_深度图_03进行双三次插值得到【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_深度学习_04,再通过构建partial cost volume回归得到residual depth map 【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_深度学习_05
上一层的深度图 【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_3D_06

对于每个像素点的深度剩余表示为 【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_深度图_07

  • 【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_计算机视觉_08
  • 【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_迭代_09 是要微调的深度剩余
    【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_计算机视觉_10: depth search range at this point
    【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_3D_11: number of sampled depth residual
  • 【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_3D_12

将这个增加了 【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_深度图_13

最终【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_3D_14

Depth Map Inference

【深度假设范围】

【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_深度图_15

深度假设平面没必要太过密集,投影过来的3D点太近,无法为深度推断提供额外信息

实验中,计算图像中距离0.5像素的点的平均深度间隔

对于某个像素的深度剩余,首先把它投影到src上,在src的极线上找相邻的两个像素,沿着src相机通过这两个点到3D空间,就得到了深度剩余refine时候的范围

【深度图估计】

同样采用3D卷积将cost volume pyramid正则化成probability volume

【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_深度图_16是绝对深度聚集来的, 【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_迭代_17是剩余深度聚集来的

之后首先对【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_深度图_16 soft-argmax得到coarse depth map,上采样之后,迭代的加上 【深度学习MVS系列论文】CVP-MVSNet: Cost Volume Pyramid Based Depth Inference for Multi-View Stereo_迭代_17

Loss

计算loss的时候也将ground truth depth变成了一个金字塔,每一层都做l1损失的比较

Experiment

【配置】

首先使用MVSNet生成了160*128尺寸的深度图,同时把深度图GT也下采样到这个尺寸

用二者构建第二层的cost volume pyramid

过程中深度假设M不断减小取精

【结果】

深度图更加平滑,在边缘区域捕捉更多高频细节

【消融实验】

金字塔数取2时最好,更多主要问题是coarest太小,生成的initial深度图也太差,核心问题还是数据集本身处理的就不大160*128

剩余优化时取周围2个像素投影过来的范围做精细化调整最好