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不同的是四点:
- 还是构建cost volume,而不是直接卷积3D点云
- 基于深度采样和图像分辨率的关系构建cost volume pyramid
- 多尺度3D CNN,覆盖较大的感受野
- 可以输出小分辨率深度图和小分辨率图像
【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也可以的
降低内存消耗,提升性能
- 首先对于每张图片构建(L+1)个级别的图像,从大到每个级别除2的分辨率
- Ii0就是原图, IiL是最小的图
- 对金字塔的每一层作用一个同样的CNN
- 最终得到每层的特征图维度是16,表示为
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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深度图
- 首先用最低分辨率的图像和深度的均匀采样构建cost volume得到粗糙的深度估计
- 再迭代的通过coarse estimation and depth residual hypotheses构建partial cost volume
【第一阶段】
最小分辨率的图像特征 + 深度假设间隔
通过homography将src投影到ref上(注意 内参矩阵要根据分辨率放缩)
还是通过插值,将src的feature map投影到ref上
最终通过方差将所有的cost聚合成一个,维度是
M是深度假设间隔(影像深度估计准确度的重要参数),F是特征维度
从中可以得到一个性质:the correct depth for each pixel has the smallest feature variance(photometric consistency)
【第二阶段】
我们的核心目标是获取原图对应的深度图,思想是迭代的从最低分辨率的深度图不断refine获取上层
具体而言,首先对进行双三次插值得到,再通过构建partial cost volume回归得到residual depth map
上一层的深度图
对于每个像素点的深度剩余表示为
- 是要微调的深度剩余
: depth search range at this point
: number of sampled depth residual
将这个增加了
最终
Depth Map Inference
【深度假设范围】
深度假设平面没必要太过密集,投影过来的3D点太近,无法为深度推断提供额外信息
实验中,计算图像中距离0.5像素的点的平均深度间隔
对于某个像素的深度剩余,首先把它投影到src上,在src的极线上找相邻的两个像素,沿着src相机通过这两个点到3D空间,就得到了深度剩余refine时候的范围
【深度图估计】
同样采用3D卷积将cost volume pyramid正则化成probability volume
但是绝对深度聚集来的, 是剩余深度聚集来的
之后首先对 soft-argmax得到coarse depth map,上采样之后,迭代的加上
Loss
计算loss的时候也将ground truth depth变成了一个金字塔,每一层都做l1损失的比较
Experiment
【配置】
首先使用MVSNet生成了160*128尺寸的深度图,同时把深度图GT也下采样到这个尺寸
用二者构建第二层的cost volume pyramid
过程中深度假设M不断减小取精
【结果】
深度图更加平滑,在边缘区域捕捉更多高频细节
【消融实验】
金字塔数取2时最好,更多主要问题是coarest太小,生成的initial深度图也太差,核心问题还是数据集本身处理的就不大160*128
剩余优化时取周围2个像素投影过来的范围做精细化调整最好