3D点云重建原理及Pytorch实现
3D点云重建原理及Pytorch实现
Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction
一种Pytorch实现方法:学习高效的点云生成方法用于稠密三维物体重建
Article:
https://chenhsuanlin.bitbucket.io/3D-point-cloud-generation/paper.pdf
Original
TF implementation: https://github.com/chenhsuanlin/3D-point-cloud-generation
一.论文概要
传统的三维对象生成建模方法是利用三维卷积运算的深度网络来训练3D预测,这与经典的二维方法是直接类似的。然而,这些方法在试图预测三维形状时计算上是浪费的,因为只有表面上的信息才是丰富的。本文提出了一种新的三维生成模型框架,以有效地生成密集点云形式的目标形状。使用二维卷积运算从多个角度预测三维结构,并将几何推理与二维投影优化相结合。引入伪渲染器(pseudo renderer)这一可微模块来近似真实的渲染操作,以合成新的深度图进行优化。对单图像三维物体重建任务的实验结果表明,在形状相似性和预测密度方面,优于最新的方法。
神经网络pipeline
二.贡献总结如下:
•主张具有二维卷积运算的深网络能够生成密集的点云,从而在未加密的三维空间中塑造三维物体的表面。
•引入一个伪渲染管道作为真实渲染的可微近似。进一步利用伪渲染深度图像进行二维投影优化,以学习生成密集的三维形状。
•展示了的方法在单图像三维重建问题上的有效性,这显著优于最新方法。
三.主要原理
- Pseudo-rendering概念
前向绘制是计算机图形学中一个古老而成熟的概念。真实渲染通常是通过在每个像素位置使用Z缓冲区来保持相机的有效可见值(RGB或深度)来实现的。虽然这是可并行的,可以在gpu上有效地运行,但通常是不可微的,不能直接利用和纳入深度学习框架。在这里,给出了这种操作的可微逼近的一个解。
- 实验
1)进行二维优化。
从新的角度论证了第二阶段网络优化训练的必要性。比较了表3中联合2D投影优化步骤前后网络的性能。看到,虽然只在固定视点上进行优化会导致更多生成的点更接近真值曲面,但也会在形状精度损失中创建大量噪声点。图7展示了进行优化消除大部分噪声点的效果,说明了这种额外步骤的必要性。
变形过渡是平滑的,并且具有合理的插值形状,这表明结构生成可以从编码潜在向量的凸组合中生成有意义的三维预测。结构生成还能够根据潜在空间中的算法结果生成合理的新形状-从图6观察到桌子高度/形状以及椅子扶手/靠背的语义特征替换。结果表明,在潜在向量中编码的高层语义信息是可操作的,可以通过结构生成对生成的稠密点云进行解析。
2)生成表征分析
通过观察潜在空间中操作的三维预测来分析学习到的生成表示。以前的研究已经证明,深度生成网络可以通过在潜在空间中执行线性操作来生成有意义的像素/体素预测(Radford、Metz和Chintala 2015;Dosovitskiy,To bias Spring enberg,and Brox2015;Wu etal.2016);这里,探索在未加密空间中对稠密点云进行这种操作的可能性。在图5中显示了由嵌入在潜在空间中的嵌入向量生成的密集形状。
3)主要实验数据
表2中列出了量化结果,其中按类别显示数据。本文方法在两个指标上都达到了较低的总体误差。
四.代码实施步骤
Original TF implementation: https://github.com/chenhsuanlin/3D-point-cloud-generation
训练/评估网络
必要条件
此代码是用Python3(Python3)开发的。需要Pythorch 0.4+。
数据集
(在TF的repo中提供)可以通过运行命令下载数据集(8.8GB)
wget https://cmu.box.com/shared/static/s4lkm5ej7sh4px72vesr17b1gxam4hgy.gz
此文件包括:
训练/测试分割文件(从透视变换网络)
输入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}中,摘要存储在runs/experiments中,摘要存储在runs/{experiments}中,计算的点云存储在results{GROUP}中。执行python3 train-stg1.py–help可以找到可选参数列表。
绘制真实深度图像
(在TF的repo中提供)提供了用于呈现深度图像的代码以供监督。
先决条件
此代码要求以下内容:
Blender作为渲染引擎。此代码是使用Blender 2.78开发的。安装后,请确保该命令blender是可调用的(用于which blender检查安装)。
用于将.exr转换为.mat文件的OpenEXR Python绑定。
数据集
原始ShapeNet数据集可以在这里下载。此呈现代码是为使用ShapeNetCore v2开发的。(提供的深度图像是从ShapeNetCore v1渲染的。)
运行代码
在渲染中,运行/运行.sh03001627 8为固定和任意视点渲染深度图像,并将其转换为.mat文件。这将转换ShapeNet椅子类别(03001627)中具有8个固定视点的所有对象。呈现的文件将存储在输出目录中。
评估CAD模型密集点云的生成
(在TF的repo中提供)还提供了代码来将CAD模型的顶点加密到指定的数字。此代码可以独立运行;只需要ShapeNet数据集。重复将顶点添加到三角形网格最长边的中心,然后重新对网格进行三角剖分的过程。这将创建(通常)均匀致密的CAD模型。
运行代码
在致密下,运行
run ./run.sh 03001627
进行加密,加密的CAD模型将存储在output目录中。
3D点云重建原理及Pytorch实现相关推荐
- python 3d重建_3D点云重建原理及Pytorch实现
3D点云重建原理及Pytorch实现 Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruc ...
- 3D点云重建0-04:MVSNet-白话给你讲论文-翻译无死角(2)
以下链接是个人关于MVSNet(R-MVSNet)-多视角立体深度推导重建 所有见解,如有错误欢迎大家指出,我会第一时间纠正.有兴趣的朋友可以加微信:17575010159 相互讨论技术.若是帮助到了 ...
- 稠密点云重建MVS——基于多视角深度图像
稠密点云重建MVS--基于多视角深度图像 前言 一.整体流程* 二.算法原理 1.全局视角图像序列选取方法 2.局部视角图像序列选取方法 2.深度与法向量优化算法 基本概念 极线搜索--查找图像中某个 ...
- 多任务上实现SOTA,UBC、谷歌联合Hinton等提出3D点云的无监督胶囊网络
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨杜伟.小舟 来源丨机器之心 这是一种为 3D 点云提出的无监督胶囊架构,并且在 3D 点云重构. ...
- UBC、谷歌联合Hinton等提出3D点云的无监督胶囊网络,多任务上实现SOTA
本文转载自机器之心. 机器之心报道 作者:杜伟.小舟 这是一种为 3D 点云提出的无监督胶囊架构,并且在 3D 点云重构.配准和无监督分类方面优于 SOTA 方法. 理解对象是计算机视觉的核心问题之一 ...
- 3D点云 (Lidar)检测入门篇 - PointPillars PyTorch实现
3D点云 (Lidar)检测入门篇 - PointPillars PyTorch实现 完整代码:https://github.com/zhulf0804/PointPillars. 自动驾驶中基于Li ...
- 3D点云论文相关论文资料总结
论文及资料收集 斯坦福学者首次提出直接处理三维点云的深度学习模型 VoxelNet: 基于点云的三维空间信息逐层次学习网络 激光雷达点云特征表达研究进展 Volumetric and Multi-Vi ...
- 3D点云识别安全吗? 密歇根大学等提出稳健性分析数据集应对严重失真
来源丨机器之心 来自密歇根大学等机构的研究者提出了一个新颖且全面的数据集 ModelNet40-C ,以系统地测试以及进一步提高点云识别模型对于失真的稳健性. 3D 点云广泛应用于 3D 识别技术中. ...
- 基于图像到UV Map映射的3D手部高保真重建网络(ICCV2021)
论文地址:https://arxiv.org/pdf/2102.03725v2.pdf Introduction Challenge:由于不同的手部姿势和严重的遮挡,目前方法的结果缺乏准确性和保真度. ...
最新文章
- java渐变色字体生成器_java阴影文字效果怎么做?渐变的怎么做?
- 纯CSS实现立方体旋转
- linux目录统计编程,linux系统编程----统计一个目录下的普通文件个数
- how is my Angular custom controller code executed
- 串口通信的基本原理----STM32
- LeetCode 70. Climbing Stairs
- 信息安全工程师笔记-网络攻击常见技术
- Android P (2)---Android 9.0 “Pistachio Ice Cream”新功能和特性
- 分段式多级离心泵_分段式多级离心泵工作原理
- 算法----并行算法
- ElasticSearch全文搜索引擎之term和match的区别
- 处理器访问内存时,CPU核、cache、MMU如何协同工作
- 从头认识一遍“货到人”拣选
- LINUX下运行.sh文件出现Syntax error: end of file unexpected (expecting “then”)最方便解决方法
- python爬取海量PPT模板,再也不用辛苦地找模板了
- 感受野-Receptive Field的理解
- spring @annotation 注解
- 收购艾瑞咨询,亚信科技如何释放1+1>2的发展效应?
- 半导体器件物理【17】非平衡过剩载流子 —— 复合
- 机器翻译相关论文Topic推荐