Point-Based MVSNet

与cost-volume方法不同,该方法将目标场景直接处理为点云,以粗略到精细的方式预测深度。首先生成一个粗略的深度图,将其转换为点云,并通过估计当前迭代深度与ground truth之间的残差来迭代细化点云。该网络通过将3D几何先验和2D纹理信息融合到特征增强的点云中,共同有效地利用它们,并处理点云以估计每个点的3D流。
首先通过相对较小的3D成本体积生成初始粗略深度图,然后转换为点云。随后,所提出的PointFlow模块被应用于从初始点云迭代回归精确且密集的点云。
下图是网络结构
Point-Based MVSNet_第1张图片

1、生成初始深度图

使用预训练好的MVSNet生成低分辨率的初始深度图。使用参考图像大小的1/8的特征图构建cost volume,分别包含48或96个用于训练和评估的虚拟深度平面。因此,内存使用量大约是MVSNet中的1/20。

2、2D-3D特征融合

2D特征是指从CNN中提取出来的多尺度的特征图,3D特征指从初始深度图经相机内外参映射到参考视图的点云。参考视图表示为I0,源视图为I1-In。
1、首先构建一个步长2的特征金字塔网络,提取下采样之前的每个最后一层以构建图像Ii的最终特征金字塔Fi=[F1i,F2i,F3i],这三种不同尺寸的特征图构造代价体,保留了基于方差的成本度量,即不同视图之间的特征方差,以聚合从任意数量的视图中扭曲的特征。
Point-Based MVSNet_第2张图片
2、文中点云的特征由多视角图像特征的方差和世界坐标系中的归一化三维坐标拼接组成,经过特征增强后的点云作为PointFlow模型的输入。
在这里插入图片描述
每一次迭代预测深度剩余的时候,点的位置Xp都会更新,因此会取出不同的对应特征点,称为动态特征提取

3、PointFlow

使用已知的相机参数,首先将深度图取消投影为3D点云。对于每个点,通过从所有视图观察其相邻点来估计其沿参考相机方向到地面真实表面的位移,从而推动点流向目标表面。PointFlow方法主要由假设点生成、边缘卷积、流预测和上采样迭代优化等四部分构成。
1、生成假设点
从提取的图像特征图中回归每个点的深度位移,将初始深度图经过相机参数映射到点云空间中,因为在图像空间中像素点间的邻近信息不能很好地反应三维欧几里得空间中的邻近关系。
对于每一个点云,沿着参考相机的方向生成2m + 1 个假设点,t表示表示参考相机的法线方向,s表示单位距离。在这里插入图片描述
下图中可以看到红色点是深度图的反投影点,蓝色点是不同的位移步长生成的假设点。PointFlow的目的在于利用图像特征增强后的点云,计算出红色点相对于每个蓝色邻域假设点的位移概率,并最终得到与基准目标表面间的位移。
Point-Based MVSNet_第3张图片
2、边缘卷积
参照DGCNN的思路,将其用于特征聚合,对于每一个点云点,取其最近的k个邻域点构建有向图,将其送入子网络中进行特征传播,特征增强点云表示为在这里插入图片描述在这里插入图片描述
最终得到特征增强后的点集合

3、流预测
预测模型的输入为特征增强的点云,输出为深度图的残差值。PointFlow使用3个边缘卷积来聚合不同尺度的邻域点(点云信息),加入了跳接层保留局部信息。经过多层感知机层与softmax得到每一个点云在假设点上的概率值,最后经过加权平均得到最后每个预测点云的偏移量:(未投影点的位移被预测为所有预测点假设中位移的概率加权和)即原始点向目标点流动的位移
在这里插入图片描述
请注意,此操作是可微分的。输出深度残差图是通过向后投影位移来获得的,该位移将被添加到初始输入深度图以进行深度细化。
Point-Based MVSNet_第4张图片
4、带上采样的迭代优化
由于基于点的网络架构的灵活性,流量预测可以迭代执行,这对于基于3D成本体积的方法来说要困难得多,因为空间划分在构建成本体积之后是固定的。对于来自粗预测或前残差预测的深度图D(i),可以首先使用最近邻对其进行上采样以获得更高的空间分辨率,然后执行流预测以获得D(i+1)。此外,在每次迭代时减少了未投影点和假设点之间的深度间隔s,从而可以通过从更近的点假设中捕获更详细的特征来预测更准确的位移。

4、损失函数

将此问题视为回归任务,并使用L1损失训练网络,L1损失测量预测深度图和地面真实深度图之间的绝对差异。初始深度图和迭代细化深度图的损失都被考虑在内:在这里插入图片描述
λ ,s为迭代过程中的调节参数,l是迭代次数,Pvalid表示有效的地面真值像素集。

你可能感兴趣的:(mvsnet系列,深度学习,计算机视觉)