基于深度神经网络的3D模型合成【Transformer vs. CNN】
本文介绍用于3D模型合成的transformer网络与深度卷积网络。
推荐:使用 NSDT场景设计器 快速搭建 3D场景。
1、概述
从单一视角合成 3D 数据是一种基本的人类视觉功能,这对计算机视觉算法来说极具挑战性,这是一个共识。 但在 3D 传感器(如 LiDAR、RGB-D 相机(RealSense、Kinect)和 3D 扫描仪)的可用性和可负担性提高之后,3D 采集技术的最新进展取得了巨大飞跃。
与广泛可用的 2D 数据不同,3D 数据具有丰富的比例和几何信息,从而为机器更好地理解环境提供了机会。 然而,与 2D 数据相比,3D 数据的可用性相对较低,而且采集成本较高。 因此,最近提出了许多深度学习方法,以在不依赖任何 3D 传感器的情况下从可用的 2D 数据中合成 3D 数据。 但在我们深入研究这些方法之前,我们应该了解处理 3D 数据的格式。
合成的三维数据可以根据数据的最终用途用不同的格式表示。 一些常用的格式是:
- 深度图像
- 点云
- 体素
- 网格
深度图像包含场景的深度值,其形式为图像帧中每个像素与相机的距离(以米为单位)。 来自场景的深度信息对于自动驾驶汽车、增强现实、机器人技术等许多任务具有巨大价值。此类信息对于诸如在相机扫描静止场景和虚拟相机中的动画时启用运动视差等任务非常有用, 但是当强调 3D 建模场景中的特定对象时,这些信息在目前的技术水平下变得不充分和不准确。
深度图像:
点云是分布在 3D 空间中的三维点的集合。 这些 3D 点中的每一个都有一个由特定 (x, y, z) 坐标以及其他属性(如 RGB 颜色值)表示的确定性位置。 与深度图像不同,点云表示在没有任何离散化的情况下保留了更多高质量的三维空间几何信息。 然而,点云表示没有点与点之间的局部连接,从而导致自由度和高维性非常大,使得准确合成更加困难。
点云表示:
体素或体积像素是空间网格像素到体积网格体素的直接扩展。 简单来说,体素就是三维空间中的一个像素。 每个体素的相对位置共同定义了体积数据的独特结构。 体素可以看作是具有固定大小的量化点云。 然而,对于 3D 建模,体素表示过于稀疏并且在细节和计算资源之间表现出权衡,这使得它更不可行。
体素表示:
多边形网格是边、顶点和面的集合,它们共同定义了多面体对象的形状和体积。 网格的凸多边形面连接在一起以近似几何表面。 与体素类似,网格也可以看作是从一组连续曲面中采样得到的三维点云集(复杂度相对较低)。 网格面可以是三角形(triangle mesh)、四边形(quad mesh)或凸多边形(n-gon mesh)。 接近更真实的表示,网格也可以由带孔的多边形或凹多边形组成,具体取决于表示的普遍性。 然而,与丢失重要表面细节并且重建表面模型非常重要的体素和点云不同,网格对于许多实际应用来说更受欢迎。 因此,考虑到以上几点,与其他格式相比,多边形网格似乎更真实,合成效果更好。
多边形网格表示:
在这篇博客中,我们将讨论三种可用于从 2D 数据合成 3D 数据的方法。 在这三种方法中,一种方法基于基于Transformer的架构,而另外两种方法分别基于自编码器(AutoEncoder)和基于图的卷积神经网络(CNN)。 这两种方法的主要区别在于,基于 Transformer 的深度网络完全依赖于注意力机制来绘制输入和输出之间的全局依赖关系。
下面我们将首先讨论最近提出的两种使用自编码器和基于图的卷积神经网络来合成 3D 数据的方法。
2、基于自编码器的卷积神经网络
为了理解这种方法,我们将以使用自编码器网络进行 3D 人脸重建和人脸对齐为例。
人脸重建和对齐:
自编码器使用卷积网络将输入的 2D 图像降维到潜在空间,然后使用该潜在空间表示来重建原始 3D 数据格式。 许多研究已经使用自编码器(基于编码器-解码器的架构)来估计 3D 面部可变形模型系数和模型变形函数。 这些研究的目的主要是利用这些 3D 模型变形函数从单个 RGB 图像中恢复相应的 3D 形状,从而同时提供密集的 3D 人脸对齐和重建输出。
然而,此类方法的性能受到人脸模型模板定义的 3D 表示空间的限制。 同样,像体积回归网络 (VRN) 这样的方法使用全卷积层架构来估计 3D 二进制体积作为点云的离散版本。 然而,大多数输出点对应于浪费的非表面点,而且这种离散化限制了输出表示的分辨率。 因此,更好的研究应该是像位置图回归网络 (PRN) 这样的网络,它使用 UV 位置和纹理图共同预测密集对齐并重建 3D 面部形状。
UV位置和纹理贴图:
PRN 以 UV 位置图的形式构建 3D 面部结构的 2D 表示。 UV位置是记录面部点云的3D面部坐标的2D图像。 贴图还在表示中的每个位置附加了 3D 坐标的语义特征。 简单来说,UV 贴图是 3D 数据的 2D 表示,它记录了 UV 空间中所有点的 3D 坐标。
计算机图形学领域的研究人员经常使用 UV 空间和 UV 位置图将 3D 空间参数化为 2D 图像平面。 转到 PRN 的网络架构,网络使用简单的编码器-解码器结构(自编码器)获取输入 RGB 图像并将 2D 图像信息传输到 UV 位置图中。
自动码器使用 10 个下采样残差块和 17 个上采样转置卷积块来拟合此传递函数,最终预测 256×256×3 UV 位置图。 学习到的 UV 位置图有助于直接回归要合成的 3D 人脸的最终 3D 结构和语义特征。 对于像 PRN 这样的训练网络,我们只需要像 2D 图像到 3D 点云映射这样的数据集,这使得这种方法更有用,因为网络的输出格式不受特定 3D 模板或 3D 可变形模型线性空间的限制。
PRN架构:
因此,考虑到该方法的简单性和有效性,PRN 似乎是从 2D 图像合成 3D 数据以用于其网络输出格式的最佳选择之一。
3、基于图的卷积神经网络
如前一节所示,大多数基于自编码器的传统深度学习方法都利用点云和体素数据格式来合成 3D 数据。 特别强调这两种数据格式的主要原因是流行的基于网格的网络架构所施加的限制。 然而,点云和体素表示有其自身的缺点,如第一部分所述。
因此,为了避免体素或点云表示的缺点,许多研究已经转向合成 3D 多边形网格数据,从应用的角度来看,这是一种更理想的格式。 一些在合成网格数据方面非常有效的最佳架构设计方法包括基于图形的卷积神经网络。 在本节中,我们将以 Wang 等人提出的Pixel2Mesh方法为例。
使用Pixel2Mesh的实体重建:
Pixel2Mesh 是一个基于图形的端到端深度学习框架,它将单个 RGB 彩色图像作为输入,并将 2D 图像转换为更理想的相机坐标格式的 3D 网格模型。 基于图形的卷积神经网络提取并利用 2D 图像中的感知特征,通过逐渐变形椭圆体直到达到语义正确和优化的几何形状来生成 3D 网格。 采用的策略是一种由粗到精的方法,使椭球变形过程在几何上平滑稳定。 作者还定义了各种与网格相关的损失函数,以帮助网络捕获更多属性,从而保证物理和视觉上吸引人的 3D 几何结果。
图像特征网络和级联网格变形网络:
Pixel2Mesh 的架构主要由级联网格变形网络和图像特征网络组成。
图像特征网络负责从输入的 2D 图像中提取感知特征,并将这些特征逐步传递给基于图形的级联网格变形网络,以逐步将椭球网格的几何形状变形为目标对象的 3D 网格。
网格变形网络的图卷积网络包含三个变形块以及两个中间图解假脱机层。 变形块逐步处理网格模型的输入图,而中间图反池化层逐渐增加图形顶点以增加图形的信息存储容量,同时仍保持数据的三角形网格形成。
除了架构细节之外,Pixel2Mesh 基于图形的架构的主要优势之一是能够执行同步形状分析,这类似于传统的基于图表的方法,这些方法直接针对表面流形进行卷积运算。 这种方法通过合并网格对象的两种自然表示(图形和表面流形),充当基于图表的方法和 3D 重建方法之间的桥梁。
4、基于 Transformer 的深度架构
卷积神经网络被广泛用于计算机视觉任务,因为它们具有端到端的学习能力,可以直接从数据中执行任务,而无需任何手动设计的视觉特征。 然而,尽管 CNN 的架构设计对计算要求很高,但 3D 合成的任务使这种计算更加密集,并为计算优化和效率提升开辟了广阔的空间。
展望下一代神经架构,Transformers 是可扩展视觉模型的最佳家族,它们不仅与领域无关,而且计算高效且经过优化。 此外,最近的研究表明,Transformer在许多基于计算机视觉的任务上取得了最先进的结果。 为了理解 3D 数据合成中转换器的工作原理,我们将以 Deepmind 的 Polygen 为例。
Polygen生成的模型示例:
Polygen 是一种通过使用基于Transformer的架构按顺序预测网格面和顶点来直接建模 n 边形 3D 网格的方法。 模型设计使得它可以调节一系列输入(对象类、体素和 2D 图像)并以概率方式产生输出,以捕获模棱两可场景中的不确定性。
Polygen网络由顶点模型和人脸模型组成。 顶点模型是一个掩码Transformer解码器,它无条件地表达顶点序列上的分布以对网格顶点建模。 而人脸模型是一个基于pointer网络的Transfer,它有条件地表达可变长度输入顶点序列上的分布以对网格面进行建模。 因此,简单来说,这两个 transformer 模型的目标是通过首先生成网格顶点来估计 3D 网格上的分布,然后使用这些顶点生成网格面。
顶点网络和面网络:
Polygen 中使用的Transformer架构的灵感来自 WaveNet、PixelRNN 和Pointer网络等顺序模型。 这项工作还从 Polygon-RNN(使用多边形分割)中获得了重要灵感,而顶点模型类似于 PointGrow 的定制自注意力架构,它使用自回归分解对 3D 点云进行建模。
与顺序自回归模型相比,PointGrow 具有更浅的自我注意架构,通过对固定长度的点云输入进行操作,使用自我注意机制来预测离散坐标分布。 因此,Polygen 可以被认为是通过新颖的基于Transformer的网络设计手段组合的一些最佳想法的均衡集合。
网格变形块及感知特征池化:
Polygen 的关键特性之一是能够根据输入上下文(上下文示例:2D 图像、对象类)调节输出。
为了实现这种条件性质,顶点和面部模型的输入流被改变以合并上下文。 对于 2D 图像和体素等输入格式,输入首先使用适合域的编码器进行编码,以检索 transformer 解码器的上下文嵌入,从而对嵌入序列执行交叉注意。
而对于像对象类这样的输入格式,预学习的类嵌入被投影到一个向量,该向量被添加到位于每个网络块中的自注意层之后的中间Transformer预测表示。 这是可能的,因为顶点模型的通用性质使用简单、表达能力强且建模能力强的Transformer-解码器架构,允许网络对来自不同领域的数据进行建模。 Transformer利用其高效信息聚合的能力来捕获网格顶点和对象几何中存在的强非局部依赖性。
5、结束语
在这篇博客中,我们讨论了两种主要类型的 3D 合成方法,即卷积深度网络和基于变换器的深度网络。 新一代网络的Transformer以计算效率更高和优化的方式设计,因此可以被认为比传统的卷积网络领先一步。
然而,在接近实时推理场景时,Transformer 要赶上我们在自动编码器部分讨论的相对轻量且推理速度快的方法,还有很长的路要走。 尽管如此,Transformer 的研究范围很广,而且它们的注意力机制能够有效地聚合信息并提取输入和输出之间的全局依赖关系,这使它们更有前途。
原文链接:3D合成深度神经网络 — BimAnt
相关文章:
基于深度神经网络的3D模型合成【Transformer vs. CNN】
本文介绍用于3D模型合成的transformer网络与深度卷积网络。 推荐:使用 NSDT场景设计器 快速搭建 3D场景。 1、概述 从单一视角合成 3D 数据是一种基本的人类视觉功能,这对计算机视觉算法来说极具挑战性,这是一个共识。 但在 3D 传感器&#…...
前端面试题整理之HMTL篇(一)
HTML面试题(一) 前言: 面试题及答案解析,大部分来自网络整理,我自己做了一些简化,如果想了解的更多,可以搜索一下,前端面试题宝典微信公众号或者查百度,另外如果出现错误…...
【论文速递】ICLR2018 - 用于小样本语义分割的条件网络
【论文速递】ICLR2018 - 用于小样本语义分割的条件网络 【论文原文】:CONDITIONAL NETWORKS FOR FEW-SHOT SEMANTIC SEGMENTATION(Workshop track - ICLR 2018) 【作者信息】:Kate Rakelly Evan Shelhamer Trevor Darrell Alexe…...
本地生成动漫风格 AI 绘画 图像|Stable Diffusion WebUI 的安装和局域网部署教程
Stable Diffusion WebUI 的安装和部署教程1. 简介2. 安装环境2.1 Windows2.2 Linux3. 运行4. 模型下载链接5. 局域网部署5.1 Windows5.2 Linux6. 其他资源1. 简介 先放一张WebUI的图片生成效果图,以给大家学习的动力 :) 怎么样,…...
用一行Python代码,为图片上水印版权!
今天一个朋友跟我吐槽:前段时间,我辛辛苦苦整理的一份XX攻略,分享给自己的一些朋友,结果今天看到有人堂而皇之地拿着这份攻略图片去引流,并声称是自己整理的,真是岂有此理!他自己总结吃一堑长一…...
java中的lambda表达式
java中的lambda表达式java中的lambda表达式语法参数的不同写法代码块的不同写法函数式接口运用方法引用object::instanceMethodClass::staticMethodClass::instanceMethod什么是lambda表达式? 带参数变量的表达式。 java中的lambda表达式 我对java中lambda表达式是这…...
0.1opencv库VS环境配置
opencv环境配置 感谢大家学习这门教程。本系列文章首发于公众号【周旋机器视觉】。 这个这门课程的第一篇文章,主要是opencv环境配置。 本教程的环境为 Visual Studio 2019CMake 3.22.3opencv 4.6.0windows 10 1、opencv的源码下载与安装 直接访问opencv官网&…...
第五十七章 树状数组(二)
第五十七章 树状数组(二)一、差分的缺陷二、树状数组与差分三、例题题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示样例 1 解释:数据规模与约定代码一、差分的缺陷 差分的作用是能够在O(1)的时间内给一段区间加上相同的数字&am…...
比特币的网络
比特币的网络 1. DNS-seed 在比特币网络中,初始节点发现一共有两种方式。 第一种叫做 DNS-seed,又称 DNS 种子节点,DNS 就是中心化域名查询服务,比特币的 社区维护者会维护一些域名。 比如 seed.bitcoin.sipa.be 这个域名就是由比特币的核心开发者 Sipa 维护的,如果我…...
ChatGPT的模型介绍及GO语言实现API
ChatGPT除了大家熟悉的GPT3之外,还有其他辅助模型,比如处理代码的以及有害信息过滤的系统。总的来说是下面三个组成:GPT-3:一组能够理解和生成自然语言的模型CodexLimited beta:一组可以理解和生成代码的模型ÿ…...
Tile防丢器引入全新防盗模式,苹果Find My功能拓展到大众消费电子
Tile 宣布引入全新的防盗模式,Tile 配件启用之后,反跟踪扫描和安全功能就无法检测到该配件。Tile 为了遏制其物品追踪产品用于追踪某人,此前推出了 Scan and Secure 功能。iPhone 和安卓用户可以通过该功能扫描附近的 Tile 设备,以…...
物联网中RocketMQ的使用
物联网中RocketMQ的使用 1. 背景 随着物联网行业的发展、智能设备数量越来越多,很多常见的智能设备都进入了千家万户;随着设备数量的增加,也对后台系统的性能提出新的挑战。 在日常中,存在一些特定的场景,属于高并发请…...
用Three.js搭建的一个艺术场景
本文翻译自于Medium,原作者用 Three.js 创建了一个“Synthwave 场景”,效果还不错,在此加上自己的理解,记录一下。在线Demo. 地形构建 作者想要搭建一个中间平坦、两侧有凹凸山脉效果并且能够一直绵延不断的地形,接下…...
算法导论【字符串匹配】—朴素算法、Rabin-Karp、有限自动机、KMP
算法导论【字符串匹配】—朴素算法、Rabin Karp、有限自动机、KMP朴素字符串匹配算法Rabin-Karp算法有限自动机KMP算法朴素字符串匹配算法 预处理时间:0匹配时间:O((n-m1)m) Rabin-Karp算法 预处理时间:Θ(m),需要预先算出匹…...
如何在 Python 中验证用户输入
要验证用户输入: 使用 while 循环进行迭代,直到提供的输入值有效。检查输入值在每次迭代中是否有效。如果该值有效,则跳出 while 循环。 # ✅ 验证用户输入的是否是整数num 0while True:try:num int(input("Enter an integer 1-10: …...
JVM详解——类的加载
文章目录类的加载1、Java程序如何运行2、Java字节码文件3、类加载4、类加载的过程5、类加载器6、类的加载方式7、类的加载机制8、双亲委派机制9、破坏双亲委派机制类的加载 1、Java程序如何运行 首先通过Javac命令将.java文件编译生成.class字节码文件。 Javac是Java编译命令&a…...
Ubuntu最新版本(Ubuntu22.04LTS)安装nfs服务器及使用教程
目录 一、概述 二、在Ubuntu搭建nfs服务器 👉2.1 安装nfs服务器 👉2.2 创建nfs服务器共享目录 👉2.3 修改nfs服务器配置文件 👉2.4 重启nfs服务器 三、客户端访问nfs服务器共享目录 🎈3.1 在nfs客户端挂载服…...
Python-第九天 Python异常、模块与包
Python-第九天 Python异常、模块与包一、了解异常1. 什么是异常:2. bug是什么意思:二、异常的捕获方法1. 为什么要捕获异常?2. 捕获异常的语法3. 如何捕获所有异常?三、异常的传递性1.异常是具有传递性的四、Python模块1. 什么是模…...
博彩公司 BetMGM 发生数据泄露,“赌徒”面临网络风险
Bleeping Computer 网站披露,著名体育博彩公司 BetMGM 发生一起数据泄露事件,一名威胁攻击者成功窃取其大量用户个人信息。 据悉,BetMGM 数据泄漏事件中,攻击者盗取了包括用户姓名、联系信息(如邮政地址、电子邮件地址…...
初探Mysql反向读取文件
前言 Mysql反向读取文件感觉蛮有意思的,进行了解过后,简单总结如下,希望能对在学习Mysql反向读取文件的师傅有些许帮助。 前置知识 在Mysql中存在这样一条语句 LOAD DATA INFILE它的作用是读取某个文件中的内容并放置到要求的表中&#x…...
地图坐标系大全:常用地图坐标系详解与转换指南
介绍地图坐标系的基本概念和原理地图坐标系是用于描述地图上位置的数学模型。它可以用来表示地球表面上的任意一个点,使得这个点的位置可以在地图上精确定位。不同的地图坐标系采用不同的基准面和投影方式,因此会有不同的坐标系参数,不同的坐…...
使用 URLSearchParams 解析和管理URL query参数
介绍 首先 URLSearchParams是一个构造函数,会生成一个URLSearchParams对象,参数类型: 不传 | string | object | URLSearchParams, 并且遇到特殊字符它会自动帮我们encode 和 decode const ur…...
一台电脑安装26个操作系统(windows,macos,linux,chromeOS,Android,静待HarmonyOS)
首先看看安装了哪些操作系统1-4: windows系统 四个5.Ubuntu6.deepin7.UOS家庭版8.fydeOS9.macOS10.银河麒麟11.红旗OS12.openSUSE Leap13.openAnolis14.openEuler(未安装桌面UI)15.中标麒麟(NeoKylin)16.centos17.debian Edu18.fedora19.oraclelinux(特别…...
Python配置文件管理之ini和yaml文件读取
1. 引言 当我们设计软件时,我们通常会花费大量精力来编写高质量的代码。但这往往还不够,一个好的软件还应该考虑其整个系统,如测试、部署、网络等。其中最重要的一个方面是配置管理。 良好的配置管理应允许在任何环境中执行软件而不更改代码…...
实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?
上一节课,我们做了一些理论知识的铺垫性讲解,讲到了两种开发模式,基于贫血模型的传统开发模式,以及基于充血模型的DDD开发模式。今天,我们正式进入实战环节,看如何分别用这两种开发模式,设计实现一个钱包系统。话不多说,让我们正式…...
webpack当中的代码分割详解
A.代码分割方法一:将原来的单入口文件改为多入口文件 将不同的文件例如js代码文件分为入口文件和测试文件,这个时候打包出来的代码就会根据不同的文件单独打包成属于他们自己的文件 例如以下为单入口文件: entry: ./src/js/index.js 多入口文件:(在输出…...
【SSM】Spring对IoC的实现方式DI详讲
控制反转的一种实现方式——依赖注入一、IoC 控制反转(Overview)依赖注入(DI)- Overview利用 IoC(控制反转)这种思想有什么好处呢?二、依赖注入的方式setter 方式(xml配置中的proper…...
【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】
【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】1、概述2、实验环境3、参考资料-致谢4、自我提升实验效果视频演示5、代码练习-学习后拆解-实验步骤(1)头文件部分-"mwaveview.h"(2)cpp文件部分-"mwav…...
二维数组中的查找(两种解法,各有千秋)
凡事都有可能,永远别说永远。——《放牛班的春天》今天一题为再一个行列都有序的二维数组中寻找一个目标值,我们第一时间想到的可能是很暴力的解法,例如从头到尾进行遍历,这样能做出来,但是借用武忠祥老师的一句话&…...
quartz使用及原理解析
quartz简介 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能: 持久性作业 - 就是保持调度…...
怎么样免费做公司网站/如何自己搭建一个网站
说明:文章是用windows live writer自动上载的,有些特殊符号显示不正确,如“>”显示为“>”。须修改之处太多,无暇修改。阅读不便之处,请见谅!特点:ASM能代替外部LVM或FS的功能,…...
问题反馈的网站怎么做/推广营销方案
*体会静坐的乐趣 *把不用的东西捐出去 *整理相片 *分类放置物品 *从家务中解放出来 *辞掉现在的工作 *种一棵树 *和孩子一起做游戏 *听听流行音乐 *多读书 &a…...
做外贸网站选美国服务器的费用/电商的运营模式有几种
过滤器的区别 捕捉过滤器(CaptureFilters):用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。显示过滤器(DisplayFilters):在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。那…...
设置网站建设/报个计算机培训班多少钱
1,在电路中没有任何功能,只是在PCB上为了调试方便或兼容设计等原因。 2,可以做跳线用,如果某段线路不用,直接不贴该电阻即可(不影响外观) 3,在匹配电路参数不确定的时候,以0欧姆代替,实际调试…...
外贸网站怎么做推广/网络销售管理条例
佳能LBP2900打印机驱动是Canon佳能LBP2900 激光打印机的驱动程序。佳能LBP2900打印机驱动可以有效的解决佳能lbp2900打印机无法打印的问题,可以让你快速简便的打印所需要的文件,功能实用,操作简单,有需要的小伙伴可以来华军软件园…...
网站建设客服接听术语/靠谱的广告联盟
ARKit 是 iOS 11 的主打功能之一,开发者可以利用 ARKit 轻松的为 iPhone和 iPad 打造增强现实应用。iOS 11 发布到现在已经6个月了,根据 app 数据公司 SensorTower 的统计,App Store 中集成了 ARKit 功能的应用下载数量超过 1300 万。这些应…...