Era3D 论文学习

代码地址:https://penghtyx.github.io/Era3D/
论文地址:https://arxiv.org/abs/2405.11616

解决了什么问题?

尽管多视角内容生成领域取得了显著的进展,但现有的方案仍然面临着相机先验不匹配、效果差、分辨率低等问题,造成多视角图像的质量很低。这些方案都假设输入图像应该满足相机的预设类型,如相机的焦距是固定的。如果假设不成立,物体的形状就会发生畸变。此外,全图或密集的多视角注意力会造成,当图像分辨率增大时,计算复杂度会出现指数级的爆炸,这使得训练成本非常高。

从单视角图像进行 3D 重建是计算机视觉和图形学的重要任务,它可以应用在游戏设计、VR、机器人等领域。早期的研究大多依赖于直接对体素做 3D 回归,因为 3D 训练数据有限,这会造成效果过度平滑,无法泛化到真实世界中未知的物体上。近来,扩散模型通过在超大规模的视频或图像的数据集上训练,展示了强大的泛化性。这些扩散模型为单视角的 3D 重建提供了有力的工具,有可能从给定的图像中生成出其它视角的图像,实现 3D 重建。

为了利用扩散模型做单视角的 3D 重建,DreamFusion 尝试通过 Score Distillation Sampling 损失函数,从 2D 图像扩散模型蒸馏出 3D 表征(类似于 NeRF 或 Gaussian Splatting),后续的一些论文对此做了改进,提升 3D 模型的质量和生成的效率。但是这些方法收敛都不太稳定,质量也不行。MVDream、SyncDreamer、Wonder3D 和 Zero123++ 直接通过多视角扩散模型来生成多视角图像,然后通过神经重建方法(或大规模重建模型 LRM)根据这些图像重建出 3D 模型。直接生成多视角图像使这些方法比 DreamFusion 更加可控、高效,因此在单视角 3D 重建领域更受欢迎。

要想生成高质量的 3D 重建仍是一个挑战,目前的多视角扩散方法主要存在三个显著的挑战:

  • 不一致的预设相机类型,大多数的多视角扩散方法都假定输入图像是由一个相机拍摄的,焦距是固定的。当相机类型或内参不同时,这会造成意外的畸变,如下图所示,Wonder3D 假设有一个正交相机,当输入图像是由一个小焦距的相机拍摄时,就会产生扭曲的 meshes。
  • 多视角扩散模型的效率低,通常依赖于多视角注意力层来交换不同视角的信息,生成多视角一致的图像。但是,这些注意力层通常是将 Stable Diffusion 的自注意力层扩展到所有的多视角图像,这叫做 dense multiview attention,如下图 a 所示,会造成计算复杂度和内存占用显著增加。下图展示了不同类型的多视角注意力层。a) 在一个密集的多视角注意力层中,多视角图像的全部特征向量输入进一个注意力模块。b) 对于一个视角和内参任意的相机而言,使用极线约束来构建极线注意力,c) 需要将极线上的特征关联起来。这就是说,我们需要沿着每条极线,采样出 K K K个点,计算出这一个注意力层。在经典的相机设定中,d) 相机正交,而且拍摄角度为水平视角,极线在不同视角图像都是对齐的。e) 这就无需对极线做重复的采样,计算极线注意力。作者假定隐含的特征图的分辨率为 H × W , H = W = S H\times W, H=W=S H×W,H=W=S。在这一个 N − N- N视角相机系统中,row-wise 注意力将计算复杂度降低至 O ( N 2 S 3 ) O(N^2S^3) O(N2S3)

极线约束是一种点对直线的约束。在三维空间中,如果一点P投影到两个不同的平面I1和I2,投影点分别为p1和p2,那么p1和p2在三维空间内构成一个平面S。S与面I1的交线L1过p1点,称之为对应于p2的极线;同理,S与I2的交线称之为对应于p1的极线。极线约束的基本原理是:已知左图映射点p1,那么右图映射点p2一定在相对于p1的极线上。这样,对应点匹配的搜索范围就从整幅图像压缩到在一条直线上寻找对应点,显著减少了计算量。

  • 生成图像分辨率低,上述使得当前的多视角扩散模型无法应用于 256 × 256 256\times 256 256×256分辨率,无法重建出细致的 meshes。

提出了什么办法?

本文提出了 Era3D,一个创新的多视角扩散方法。针对单视角 3D 重建,它能高效地生成高分辨率( 512 × 512 512\times 512 512×512)、一致的多视角图像。Era3D 允许输入图像来自于常用的相机类型,缓解不同相机模型造成的畸变问题。使用不同相机模型的输入图像来训练,任意焦距和拍摄高度的相机拍摄的图像都可以作为输入图像使用,而生成的图像都是正交的水平相机视角。但是,这需要扩散模型在生成过程中,推理并且矫正输入图像的焦距和视角,这是一项艰巨的任务,会造成生成质量退化。为了克服这个问题,作者提出了一个回归和条件机制,使用去噪步骤的 UNet 的低层级特征图来预测相机的信息。作者发现该回归和条件机制可以使相机姿态预测更加准确。如上图3所示,Era3D 能减轻不同相机类型和焦距引起的畸变问题。

受到极线注意力启发,Era3D 提出了 row-wise 多视角注意力,使高分辨率多视角图像的生成更加高效。极线约束可以用来限制不同视角的关注区域,提升注意力的计算效率。但是,直接用极线注意力仍然效率不高,因为我们必须在极线上采样多个点。这需要我们对多视角图像的视锥构建 3D 特征网格,这非常慢且占内存。然而,由于 Era3D 生成的图像都是正交和水平的视角,不同视角的图像的极线就是对齐的,如上图d 所示,作者就提出了一个高效的 row-wise attention 层。相较于多视角注意力,Row-wise attention 显著地降低了内存占用( 35.32GB v.s. 1.66GB \text{35.32GB v.s. 1.66GB} 35.32GB v.s. 1.66GB)和计算复杂度( 220.41ms v.s. 2.23ms \text{220.41ms v.s. 2.23ms} 220.41ms v.s. 2.23ms)。

首先提出了一个基于扩散的相机预测模块来预测输入图像的拍摄相机的焦距和高度,这使本文方法生成的图像不会有变形。然后,使用一个简单但高效的注意力层(row-wise attention),保证多视角扩散模型的极线约束条件,进行多视角的高效的信息融合。Era3D 生成高质量的多视角图像,分辨率可以达到 512 × 512 512\times 512 512×512,而计算复杂度降低了 12 × 12\times 12× 倍。大量实验证明了 Era3D 能够从多样的单视角输入图像中重建出高质量、细节丰富的 3D meshes,遥遥领先于其它的多视角扩散模型。

下图展示了 Era3D,主要包括三个关键模块。给定一张任意视角、常见焦距的相机拍摄的图像,Era3D 生成一个标准相机设定的多视角图像。为了提高生成质量,作者提出了一个回归和条件机制,让扩散模型来预测准确的相机姿态和焦距,指导去噪过程。然后,通过 row-wise 多视角注意力显著地降低了内存占用,提升了计算效率。最后,使用神经重建方法,从生成的图像和法线图构建出 3D mesh。

法线图是一种纹理图,它存储了表面每个点的法线向量信息。这些法线向量定义了表面在每个点上的方向,从而影响光线如何与表面相互作用。法线图用于在不增加几何复杂度的情况下,模拟表面的细节和凹凸感。通过改变表面法线的方向,可以模拟出如皱纹、划痕、织物纹理等效果。

## 相机标准化 **透视畸变问题**。现有的扩散方法假设输入图像和生成图像具有相同且固定的内参。但是,这个假设很难成立,因为输入图像可能是由不同焦距的相机拍摄的。当输入图像的内参矩阵和假设的内参不同时,生成的多视角图像和重建的 3D meshes 就会有明显的畸变,如图3所示。因为这些模型都是在 Objaverse 数据集上训练的,该数据集的内参是固定的。所以,这些模型就对这一类的几何模式有偏好。

Objaverse数据集的3D模型主要来源于Sketchfab平台,这是一个由Epic Games旗下的在线平台。该数据集仅使用根据知识共享许可共享的3D模型。Objaverse 1.0包含800,000多个3D模型,并且每个模型都带有文本名称、描述、标签和额外的元数据。此外,还有更大规模的版本Objaverse-XL,包含超过10,000,000个3D对象。Objaverse数据集可以用于多种应用,例如训练AI根据文本描述创建3D模型,创建LOD/重新拓扑资产,识别3D对象,或者为3D角色创建动画。它还可以用于计算机视觉领域,作为训练数据和基准测试。Objaverse包含由超过10万艺术家设计的超过80万个资产,包括3D扫描、从头开始创建的3D模型,甚至动画资产。数据集中的模型具有高度的视觉多样性,涵盖了从动画对象到室内环境的各种类型。

标准的相机设定。为了解决这个问题,Era3D 使用不同内参的输入和生成图像。不管焦距或输入图像的姿态,本文方法只生成一个正交且水平的视角的图像。例如,输入图像的仰角为 α \alpha α,方位角为 β \beta β,Era3D 输出一个多视角图像集合,方位角为 { β , β + 4 5 ∘ , β + 9 0 ∘ , β − 4 5 ∘ , β − 9 0 ∘ , β + 18 0 ∘ } \{\beta, \beta+45^\circ, \beta+90^\circ, \beta-45^\circ, \beta-90^\circ, \beta+180^\circ\} {β,β+45,β+90,β45,β90,β+180},仰角为 0 ∘ 0^\circ 0。作者将这种设定称作相机的标准设定

仰角描述了相机镜头相对于水平面的垂直倾斜角度。仰角的测量是从水平面向上看的角度。当相机镜头直接指向水平面时,仰角为0度。当相机镜头向上倾斜时,仰角为正,表示相机在“仰视”。当相机镜头向下倾斜时,仰角为负,表示相机在“俯视”。

方位角描述了相机镜头相对于北方向(或其他参考方向)的水平旋转角度。方位角的测量是从参考方向(如北方)开始,沿顺时针方向旋转。当相机镜头直接指向北方时,方位角通常为0度或360度。当相机镜头沿顺时针方向旋转时,方位角增加,表示相机在“转动”。方位角通常用于描述相机在水平面上的旋转方向,帮助确定相机的拍摄方向。

回归和条件机制

给定一个任意视角和焦距拍摄的图像,以标准的相机设定来生成其它视角的图像是非常困难的,因为这会给扩散模型增加一个额外的任务(隐式地推理相机的焦距和仰角)。为了简单点,以前的方法需要一个额外的仰角输入或预测值,作为扩散模型的条件。但是,由于缺乏足够的几何信息,单张图像的姿态估计通常是有问题的。尽管估计拍摄的仰角是可能的,但不太可能估计出输入图像的焦距。

为了解决这个问题,作者在扩散模型中加入了一个 Elevation and Focal length Regression 模块(EFReg)。作者在扩散过程中使用 UNet 的特征图来预测相机姿态。UNet 的特征图不仅包含了输入图像,也包含了当前的生成结果,该结果提供了更加丰富的特征来预测相机姿态。

在 UNet 的中间层级的 transformer block 中,作者对隐藏特征图 H \mathbf{H} H使用全局平均池化,产生一个特征向量,然后输入三个 MLP 层 R 1 \mathcal{R}_1 R1 R 2 \mathcal{R}_2 R2 来回归出仰角 α ~ \tilde{\alpha} α~ 和焦距 f ~ \tilde{f} f~

α ~ = R 1 ( AvgPool ( H ) ) , f ~ = R 2 ( AvgPool ( H ) ) \tilde{\alpha}=\mathcal{R}_1(\text{AvgPool}(\mathbf{H})),\quad \tilde{f}=\mathcal{R}_2 (\text{AvgPool}(\mathbf{H})) α~=R1(AvgPool(H)),f~=R2(AvgPool(H))

用 ground-truth 仰角 α \alpha α 和焦距 f f f 来监督训练 α ~ \tilde{\alpha} α~和焦距 f ~ \tilde{f} f~

l r e g r e s s = MSE ( α ~ , α ) + MSE ( f ~ , f ) \mathcal{l}_{regress}=\text{MSE}(\tilde{\alpha}, \alpha) + \text{MSE}(\tilde{f}, f) lregress=MSE(α~,α)+MSE(f~,f)

然后, α ~ \tilde{\alpha} α~和焦距 f ~ \tilde{f} f~作为扩散模型的条件使用。作者对 α ~ \tilde{\alpha} α~ f ~ \tilde{f} f~使用位置编码,将它们和 Stable Diffusion 模型的 time embeddings 拼接到一起。该拼接后的特征向量会用在 UNet 全部的上采样层,提供预测的焦距和仰角的信息。

Row-wise Multiview Attention

为了生成多视角一致的图像,多视角扩散模型通常需要多视角注意力层来在生成图像中传递信息。这些层通常扩展自扩散模型现有的自注意力层,对所有生成的多视角图像计算注意力。但是,这些密集的多视角注意力的计算成本太高了,它需要处理多视角图像的全部像素。这就使多视角扩散模型无法做到高分辨率。

由于多视角图像的像素点之间有极线几何的关系,使用极线上的多视角注意力可以降低计算和内存复杂度。但是仔细考虑两个视角相机的极线注意力,会发现它们的计算成本仍然很高。如图2b,对于相机 O 1 O_1 O1的一个像素点,作者可以通过相对的相机位姿,在相机 O 2 O_2 O2中找到其对应的极线。然后,我们需要在极线上采样 K K K个点,在 O 2 O_2 O2的采样点和 O 1 O_1 O1的输入像素之间计算 cross attention。作者提出了一个高效简洁的 row-wise multiview attention,它是极线注意力的特殊形式。

在标准的相机设定中,围绕着一个物体分布着仰角为 0 ∘ 0^\circ 0的相机。因此,作者可以证明下面的命题:

Proposition 1. 如果两个正交相机关注于原点,它们的 y y y轴与重力方向对齐,它们的仰角为 0 ∘ 0^\circ 0(如图2d所示),那么对于一个相机坐标为 ( x , y ) = ( u , v ) (x,y)=(u,v) (x,y)=(u,v)的像素而言,它在另一个视角的画面上对应的极线就是 y = v y=v y=v

作者在补充材料给出了证明。上述命题是极线约束的一个特殊形式,所有的极线都对应着生成的多视角图像的所有行。基于此发现,作者对生成图像的相同行使用新的自注意力层。从而避免了密集多视角图像的高复杂度,准确地将注意力集中在极线上。此外,row-wise attention 层只涉及了同一行的像素,而非极线上的多个采样点,因此大幅度降低了计算复杂度,可以在高分辨率 512 × 512 512\times 512 512×512上训练。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows USB 设备驱动开发- 对 MUTT 设备进行 BIOS/UEFI 测试

对 MUTT 设备进行 BIOS/UEFI 测试,BIOS/UEFI 测试验证 USB 启动以及控制器到操作系统的切换。 USB 启动配置 在 USB 2.0 (EHCI) 和 USB 3.0 (xHCI) 控制器上执行这些测试,每种主要 USB 媒体类型 ,USB 2.0 BOT、USB 3.0 BOT 和 USB 3.0 UASP…

【Android】ListView和RecyclerView知识总结

文章目录 ListView步骤适配器AdpterArrayAdapterSimpleAdapterBaseAdpter效率问题 RecyclerView具体实现不同布局形式的设置横向滚动瀑布流网格 点击事件 ListView ListView 是 Android 中的一种视图组件,用于显示可滚动的垂直列表。每个列表项都是一个视图对象&…

Python教程(一):环境搭建及PyCharm安装

目录 引言1. Python简介1.1 编译型语言 VS 解释型语言 2. Python的独特之处3. Python应用全览4. Python版本及区别5. 环境搭建5.1 安装Python: 6. 开发工具(IDE)6.1 PyCharm安装教程6.2 永久使用教程 7. 编写第一个Hello World结语 引言 在当…

每日一题 LeetCode03 无重复字符的最长字串

1.题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的最长字串的长度。 2 思路 可以用两个指针, 滑动窗口的思想来做这道题,即定义两个指针.一个left和一个right 并且用一个set容器,一个length , 一个maxlength来记录, 让right往右走,并且用一个set容器来…

如何避免蓝屏?轻量部署,安全和业务连续性才能两不误

自19日起,因CrowdStrike软件更新的错误配置而导致的“微软全球蓝屏”,影响依然在持续。这场被称为“史上最大规模的IT故障”,由于所涉全球企业太多,专家估计“蓝屏”电脑全部恢复正常仍需时日。 尽管 CEO 乔治 库尔茨&#xff08…

鸿蒙OpenHarmony Native API【drawing_pen.h】 头文件

drawing_pen.h Overview Related Modules: [Drawing] Description: 文件中定义了与画笔相关的功能函数 Since: 8 Version: 1.0 Summary Enumerations Enumeration NameDescription[OH_Drawing_PenLineCapStyle] { [LINE_FLAT_CAP], [LINE_SQUARE_CAP], [LINE_ROUND_…

聚焦智慧出行,TDengine 与路特斯科技再度携手

在全球汽车行业向电动化和智能化转型的过程中,智能驾驶技术正迅速成为行业的焦点。随着消费者对出行效率、安全性和便利性的需求不断提升,汽车制造商们需要在全球范围内实现低延迟、高质量的数据传输和处理,以提升用户体验。在此背景下&#…

从零开始:神经网络(1)——什么是人工神经网络

声明:本文章是根据网上资料,加上自己整理和理解而成,仅为记录自己学习的点点滴滴。可能有错误,欢迎大家指正。 人工神经网络(Artificial Neural Network,简称ANN)是一种模仿生物神经网络结构和功…

《500 Lines or Less》(5)异步爬虫

https://aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.html ——A. Jesse Jiryu Davis and Guido van Rossum 介绍 网络程序消耗的不是计算资源,而是打开许多缓慢的连接,解决此问题的现代方法是异步IO。 本章介绍一个简单的网络爬虫&a…

STM32F0-标准库时钟配置指南

启动 从startup_stm32f0xx.s内的开头的Description可以看到 ;* Description : STM32F051 devices vector table for EWARM toolchain. ;* This module performs: ;* - Set the initial SP ;* - Set t…

【Leetcode】十八、动态规划:不同路径 + 最大正方形

文章目录 1、动态规划2、leetcode509:斐波那契数列3、leetcode62:不同路径4、leetcode121:买卖股票的最佳时机5、leetcode70:爬楼梯6、leetcode279:完全平方数7、leetcode221:最大正方形 1、动态规划 只能…

C#开源、简单易用的Dapper扩展类库 - Dommel

项目特性 Dommel 使用 IDbConnection 接口上的扩展方法为 CRUD 操作提供了便捷的 API。 Dommel 能够根据你的 POCO 实体自动生成相应的 SQL 查询语句。这大大减少了手动编写 SQL 代码的工作量,并提高了代码的可读性和可维护性。 Dommel 支持 LINQ 表达式&#xff…

记一次因敏感信息泄露而导致的越权+存储型XSS

1、寻找测试目标 可能各位师傅会有苦于不知道如何寻找测试目标的烦恼,这里我惯用的就是寻找可进站的思路。这个思路分为两种,一是弱口令进站测试,二是可注册进站测试。依照这个思路,我依旧是用鹰图进行了一波资产的搜集&#xff…

SSIS_SQLITE

1.安装 SQLite ODBC 驱动程序 2.添加SQLite数据源 在“用户DSN”或“系统DSN”选项卡中,点击“添加”。选择“SQLite3 ODBC Driver”,然后点击“完成”。在弹出的配置窗口中,设置数据源名称(DSN),并指定S…

英迈中国与 Splashtop 正式达成战略合作协议

2024年7月23日,英迈中国与 Splashtop 正式达成战略合作协议,英迈中国正式成为其在中国区的战略合作伙伴。此次合作将结合 Splashtop 先进的远程桌面控制技术和英迈在技术服务与供应链管理领域的专业优势,为中国地区的用户带来更加安全的远程访…

联想教育电脑硬盘保护同传EDU系统使用简明教程

目录 一、原理概述 二、简明使用方法 1、软件下载 2、开机引导 3、开始安装 4、使用 (1)进入底层 (2)进行分区设置 (3)系统设置 (4)安装硬盘保护驱动 (5&…

前端模块化CommonJS、AMD、CMD、ES6

在前端开发中,模块化是一种重要的代码组织方式,它有助于将复杂的代码拆分成可管理的小块,提高代码的可维护性和可重用性。CommonJS、AMD(异步模块定义)和CMD(通用模块定义)是三种不同的模块规范…

leetcode-101. 对称二叉树

题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 思路 1) 如果同时root1…

【调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL】

调试笔记-系列文章目录 调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL 文章目录 调试笔记-系列文章目录调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gite…

Ubuntu20.04版本升级openssh9.8p1方法

一、问题描述: 8.5p1 和 9.7p1 之间的openssh版本漏洞可能会导致linux系统以root身份进行RCE,所以需安装最新版本 二、解决方法: 将当前openssh版本升级到最新的版本即openssh-9.8p1版本,OpenSSL大版本升级且OpenSSH有新稳定版本…