企业网站的价值体现是在,做网站时候编代码,各大网站网络推广的收费,题库制作助手app3D点云重建原理及Pytorch实现
Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction
一种Pytorch实现方法#xff1a;学习高效的点云生成方法用于稠密三维物体重建
一#xff0e;论文概要
传统的三维对象生成建模方法是利用三维卷积运算的…3D点云重建原理及Pytorch实现
Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction
一种Pytorch实现方法学习高效的点云生成方法用于稠密三维物体重建
一论文概要
传统的三维对象生成建模方法是利用三维卷积运算的深度网络来训练3D预测这与经典的二维方法是直接类似的。然而这些方法在试图预测三维形状时计算上是浪费的因为只有表面上的信息才是丰富的。本文提出了一种新的三维生成模型框架以有效地生成密集点云形式的目标形状。使用二维卷积运算从多个角度预测三维结构并将几何推理与二维投影优化相结合。引入伪渲染器pseudo renderer这一可微模块来近似真实的渲染操作以合成新的深度图进行优化。对单图像三维物体重建任务的实验结果表明在形状相似性和预测密度方面优于最新的方法。
神经网络pipeline二贡献总结如下
•主张具有二维卷积运算的深网络能够生成密集的点云从而在未加密的三维空间中塑造三维物体的表面。
•引入一个伪渲染管道作为真实渲染的可微近似。进一步利用伪渲染深度图像进行二维投影优化以学习生成密集的三维形状。
•展示了的方法在单图像三维重建问题上的有效性这显著优于最新方法。
三主要原理
1. Pseudo-rendering概念
前向绘制是计算机图形学中一个古老而成熟的概念。真实渲染通常是通过在每个像素位置使用Z缓冲区来保持相机的有效可见值RGB或深度来实现的。虽然这是可并行的可以在gpu上有效地运行但通常是不可微的不能直接利用和纳入深度学习框架。在这里给出了这种操作的可微逼近的一个解。2. 实验
1进行二维优化。
从新的角度论证了第二阶段网络优化训练的必要性。比较了表3中联合2D投影优化步骤前后网络的性能。看到虽然只在固定视点上进行优化会导致更多生成的点更接近真值曲面但也会在形状精度损失中创建大量噪声点。图7展示了进行优化消除大部分噪声点的效果说明了这种额外步骤的必要性。
变形过渡是平滑的并且具有合理的插值形状这表明结构生成可以从编码潜在向量的凸组合中生成有意义的三维预测。结构生成还能够根据潜在空间中的算法结果生成合理的新形状-从图6观察到桌子高度/形状以及椅子扶手/靠背的语义特征替换。结果表明在潜在向量中编码的高层语义信息是可操作的可以通过结构生成对生成的稠密点云进行解析。
2生成表征分析
通过观察潜在空间中操作的三维预测来分析学习到的生成表示。以前的研究已经证明深度生成网络可以通过在潜在空间中执行线性操作来生成有意义的像素/体素预测Radford、Metz和Chintala 2015DosovitskiyTo bias Spring enbergand Brox2015Wu etal.2016这里探索在未加密空间中对稠密点云进行这种操作的可能性。在图5中显示了由嵌入在潜在空间中的嵌入向量生成的密集形状。
3主要实验数据
表2中列出了量化结果其中按类别显示数据。本文方法在两个指标上都达到了较低的总体误差四 代码实施步骤
训练/评估网络
必要条件
此代码是用Python3Python3开发的。需要Pythorch 0.4。
数据集
在TF的repo中提供可以通过运行命令下载数据集8.8GB
此文件包括
训练/测试分割文件从透视变换网络
输入RGB图像从透视变换网络
用于训练的预渲染深度图像
测试分离的地面真值点云密度为100K点
下载后在主目录下运行
run tar -zxf s4lkm5ej7sh4px72vesr17b1gxam4hgy.gz
文件将被提取到data目录。使用此数据集包可引用相关论文。
运行代码
以下脚本提供了运行代码的示例。
网络预训练scripts/train-stg1.sh
进行二维优化微调scripts/train-stg2.sh
在测试集上求值scripts/evaluate.sh
计算错误度量scripts/evaluate_dist.sh
检查点存储在models/${experiments}中摘要存储在runs/${experiments}中计算的点云存储在results{GROUP}中。执行python3 train-stg1.py--help可以找到可选参数列表。
绘制真实深度图像
在TF的repo中提供提供了用于呈现深度图像的代码以供监督。
先决条件
此代码要求以下内容
Blender作为渲染引擎。此代码是使用Blender 2.78开发的。安装后请确保该命令blender是可调用的用于which blender检查安装。
用于将
数据集
原始ShapeNet数据集可以在这里下载。此呈现代码是为使用ShapeNetCore v2开发的。提供的深度图像是从ShapeNetCore v1渲染的。
运行代码
在渲染中运行/运行.sh03001627 8为固定和任意视点渲染深度图像并将其转换为.mat文件。这将转换ShapeNet椅子类别03001627中具有8个固定视点的所有对象。呈现的文件将存储在输出目录中。
评估CAD模型密集点云的生成
在TF的repo中提供还提供了代码来将CAD模型的顶点加密到指定的数字。此代码可以独立运行只需要ShapeNet数据集。重复将顶点添加到三角形网格最长边的中心然后重新对网格进行三角剖分的过程。这将创建通常均匀致密的CAD模型。
运行代码
在致密下运行
run ./run.sh 03001627
进行加密加密的CAD模型将存储在output目录中。