3D点云重建原理及Pytorch实现

2023-11-13

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/e x p e r i m e n t s 中 , 摘 要 存 储 在 r u n s / {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目录中。
————————————————
版权声明:本文为CSDN博主「普通网友」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wujianing_110117/article/details/106671875

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D点云重建原理及Pytorch实现 的相关文章

随机推荐

  • 岭回归(Ridge Regression)及实现

    岭回归 Ridge Regression 及实现 https blog csdn net google19890102 article details 27228279 一 一般线性回归遇到的问题 在处理复杂的数据的回归问题时 普通的线性回
  • linux驱动调试--段错误之栈信息分析

    转自 http blog chinaunix net xmlrpc php r blog article uid 29401328 id 4923529 接着上一篇来分析一下Oops的栈 s3c2440平台 关于调试源码和整个Oops信息请
  • LeetCode-1318. Minimum Flips to Make a OR b Equal to c

    Given 3 positives numbers a b and c Return the minimum flips required in some bits of a and b to make a OR b c bitwise O
  • 图像清晰度评价指标(Python)

    最近在毕业设计中涉及了有关增强图像清晰度的实验 需要一些指标来进行实验结果的评估 刚好网上有个总结的非常好的博客 见参考文献 1 但没有实现方法 因此 我将在我的博客中用Python实现 评估方法实现 所有函数的具体说明都在参考文献 1 里
  • QMap和QHash类

    QMap和QHash具有非常相似的功能 它们的差别仅在于 1 QHash具有比QMap更快的查找速度 2 QHash以任意的顺序存储数据项 而QMap总是按照键 key的顺序存储数据 3 QHash的键类型 Key必须提供operator
  • Softmax分类和两层神经网络以及反向传播的代码推导

    发现草稿箱里还有一篇很早之前的学习笔记 希望可以帮助到有需要的童鞋 目录 序 Softmax分类器 反向传播 数据构建以及网络训练 交叉验证参数优化 序 原来都是用的c 学习的传统图像分割算法 主要学习聚类分割 水平集 图割 欢迎一起讨论学
  • python随机大小写字符串_python 随机产生特定类型字符的函数(大写、小写、数字)...

    1 创建一个 Randomcharacter py 文件 作为模块文件供测试或实现程序调用 内容如下 from random import randint generate a random character between ch1 an
  • 基于51单片机 数控恒流源设计 可调电流源

    设计硬件组成 基于51单片机 数控恒流源设计 可调电流源基于单片机可调电流源设计 项目定制觉得选题不错 分享一下 由51单片机 LCD1602液晶 变压器 整流桥 开关电源LM2596 TLC5615 LM358 TIP31C 按键 TL4
  • ThinkPhp6+Vue前后端分离系统案例

    项目介绍 一款 PHP 语言基于ThinkPhp6 Vue ElementUI等框架精心打造的一款模块化 插件化 高性能的前后端分离架构敏捷开发框架 可用于快速搭建前后端分离后台管理系统 本着简化开发 提升开发效率的初衷 目前框架已集成了完
  • 秒杀linux下系统调用fork()面试题

    秒杀linux下系统调用fork 面试题 第一道题 在之前博客也写过这道题 http blog csdn net chdhust article details 8535915 题目 请问下面的程序一共输出多少个 1 2 3 4 5 6
  • 华为前副总裁李玉琢:华为无法培养出企业家

    1995年我刚进入华为不久 有人问我四通与华为的区别时 我脱口而出 四通能培养企业家而华为不能 这一点从任正非迟迟无法找到自己的 替手 就可见一斑 曾国藩说 做大事者 以寻找替手为第一要义 任正非也并非不知道这些道理 但是他的某些意识以及管
  • vscode配置C/C++环境(Windows)

    1 总体流程 2 下载CodeBlocks 下载该CodeBlocks的主要目的是为了使用其自带的MinGW 对于初学者在配置环境这步会少遇到一些坑 下载网址 http www codeblocks org downloads binari
  • 2017校园招聘腾讯笔试题 在线编程题

    2 二分查找 90 90 如果输入80 80 在0到90之间 记为1 继续二分 80在 45 90 之间 记为1 最后应该输出为111100 则输出111100 Java代码如下 import java util Scanner publi
  • SSM 使用C3P0 数据库连接池 提示如下错误信息:Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z

    产生上述问题的原因是 c3p0 jar版本过低 我用的是 c3p0 0 9 1 2 jar 解决办法 c3p0 0 9 1 2 jar 换成 c3p0 0 9 5 2 jar
  • 路由器、交换机、猫(Modem)、LAN、WAN、WLAN、VLAN基本概念

    电脑之间是通过TCP IP协议进行说话的 不同电脑之间准确的找到对方是通过IP地址实现的 不在同一个网络的电脑信息交互是通过网关来实现的 网关就是一个公网地址 由运营商下发的 DHCP服务器下发IP地址 通过DHCP服务端口UDP67和UD
  • 手机屏幕显示正常但是触摸有一部分出问题,是内屏坏了吗?保修期内手机该不该走官方售后?

    这个问题我亲身经历 我现在人就在华为官方售后 根据手机城小哥的说法 现在手机触摸和显示都是一体的 所以如果出现触摸有问题 内屏或者排线等甚至主板都有可能出问题 保修期内手机建议走官方售后 因为有可能不只是屏幕坏了 保修可以同时检查你手机的主
  • 2020-12-24如何在QT中增加函数

    关于如何在QT软件中增加函数的问题 比如在VS中可以这样增加函数 但是在QT中右键并不能如上图一样有这个ADD Member Function 所以应该怎么加呢 如下图所示 1 首先在对应头文件中增加函数声明 如图蓝色区域代码 2 在Sav
  • 关于inet_addr() 函数

    inet addr 将一个字符串格式的ip地址转换成一个uint32 t数字格式 但是需要注意的是 这个函数的返回值在大小端机器上是不同的 例如输入一个 192 168 0 1 的字符串 在内存中的排列 字节从低到高 0xC0 0xA8 0
  • 彻底搞清“SVM”

    文章目录 前言 一 SVM是什么 概述 二 线性SVM 2 1 决策面 方程 2 2 约束条件 以下可以证明 有约束条件和没约束条件的公式是一样的 2 3 线性SVM优化 三 非线性分类 3 1 核函数 总结 前言 分类分析 概念 通过构造
  • 3D点云重建原理及Pytorch实现

    3D点云重建原理及Pytorch实现 Pytorch Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction 一种Pytorch实现方法 学习