"); //-->
Point-MVSNet的大致流程如下:1)首先生成一个粗略的深度图(通过MVSNet,这是另一篇文章提出的网络结构,不过它是通过cost volume的方式进行重建的)。2)然后把深度图转换为点云,再通过事先生成的深度图与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特征就是通过卷积网络金字塔结构,提取出多尺度的图像特征,赋予每个点更大的感受野和上下文信息,一张图 ,这些不同尺度下的特征图是需要融合在一起,再去和坐标信息融合的。而且这里还不止一张图片,是不同角度的多张图片,每一张图片还提取出了多尺度的特征图,融合不同角度的图像特征使,需要用到不同角度的相机参数,这样才能把特征图wrap到一个统一的方向(就是一些旋转矩阵和平移向量组成的相机外参以及相机内参,再和特征图做矩阵乘法)。多张图片在同一个尺度下的特征融合公式如下:
文中提到的动态特征提取的意思就是,得出来的Cp输入到point flow中,得到深度残差,然后这个深度残差往回输入到点云中,进一步更新点云的位置,然后再通过更新后的点云输入到point flow得到深度残差。这个过程文中迭代了两次。
PointFlowPointFlow是论文中的核心模块,工作内容为为unprojected point点(通过深度图外加相机参数,通过非映射的方式生成的点)生成一系列假设点,利用这些点构造出一个有向图,在进行边卷积进一步提取邻域特征。然后经过MLP判断unprojected point的偏移位置,偏移向量由各假设点带权平均得到。
假设点的生成(Point Hypothesis Generation)
对每一个unprojected point都会沿着参考相机的方向生成一系列不同偏移的点(就是在投影出来的点的前前后后生成一些点)。公式如下:
t代表参考相机的方向,s代表偏移距离。最后会有2m+1个假设点。
边卷积(Edge Convolution)
如上图所示,论文通过KNN的方法生成一个有向图。边卷积可以先简单理解为提取出边的特征(后面研究DGCNN的时候再做详细记录)。
如上图所示,边卷积过后的点云跳连接到一起。
Flow Prediction
如上图所示,Point Flow输入增强点云,输出深度残差图。内部使用了三个EdgeConv层来聚合不用尺度下的点特征(特征金字塔刚好也是3层),再通过快连接把EdgeConv的结果组合成一个局部点特征。最后通过MLP来转换点特征,输出每一个unprojected point在假设点上的概率值,最终的unprojected point的偏移是由每一个假设点带权平均得到的。
Training loss
损失函数的公式如下所示: 代表迭代次数
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。