Point-Based Multi-View Stereo Network是一篇点云重建领域的文章,其工作内容为通过输入多张不同角度的图片,提取不同的点云特征,再进行融合,从而生成最终的点云。
1.介绍
Point-MVSNet的大致流程如下:
- 首先生成一个粗略的深度图(通过MVSNet,这是另一篇文章提出的网络结构,不过它是通过cost volume的方式进行重建的)。
- 然后把深度图转换为点云,再通过事先生成的深度图与ground truth之间的差值,通过迭代的方式进一步优化点云。
Point-MVSNet的亮点为,该网络把3D几何先验知识和2D纹理信息融合到一个叫做特征增强点云中(feature-augmented point cloud),然后在为每一个点估计它的3D flow(什么是3D flow,难道是一个点的3D属性的抽象表示???)
2.方法
粗略深度图预测
论文采用MVSNet模型来生成一个粗略的深度图。通过给予MVSNet图片和相关的相机参数,MVSNet生成一个3D cost volume(代价块),所谓代价块,是指每一个像素其实都有一个代价值,这个代价是通过代价聚合(cost aggregation)的方式计算来的,假想此处有一个WxHxD的三维矩阵,W和H分别是图像的宽高,D是深度范围(一般这个D都是在实验中,假定的一个范围比如5-10之类的),这个三维矩阵的每一个值都是一个像素点在不同深度值下的代价,如果说某一个像素点在
2D-3D特征融合
在网络里面使用的点特征是由从多尺度条件下提取出来的图像2D特征和归一化的3D坐标组成的,这就是所谓的2D-3D特征融合。
这里的2D特征就是通过卷积网络金字塔结构,提取出多尺度的图像特征,赋予每个点更大的感受野和上下文信息,一张图片
然后再和点云的坐标位置进行融合,公式如下:
文中提到的动态特征提取的意思就是,得出来的
PointFlow
PointFlow是论文中的核心模块,工作内容为为unprojected point点(通过深度图外加相机参数,通过非映射的方式生成的点)生成一系列假设点,利用这些点构造出一个有向图,在进行边卷积进一步提取邻域特征。然后经过MLP判断unprojected point的偏移位置,偏移向量由各假设点带权平均得到。
假设点的生成(Point Hypothesis Generation)
对每一个unprojected point都会沿着参考相机的方向生成一系列不同偏移的点(就是在投影出来的点的前前后后生成一些点)。公式如下:
边卷积(Edge Convolution)
如上图所示,论文通过KNN的方法生成一个有向图。边卷积可以先简单理解为提取出边的特征(后面研究DGCNN的时候再做详细记录)。
如上图所示,边卷积过后的点云跳连接到一起。
Flow Prediction
如上图所示,Point Flow输入增强点云,输出深度残差图。内部使用了三个EdgeConv层来聚合不用尺度下的点特征(特征金字塔刚好也是3层),再通过快连接把EdgeConv的结果组合成一个局部点特征。最后通过MLP来转换点特征,输出每一个unprojected point在假设点上的概率值,最终的unprojected point的偏移是由每一个假设点带权平均得到的。
Training loss
损失函数的公式如下所示: