eNERF-实时三维人体重建

浙大三维视觉团队提出ENeRF,首次实现动态场景的实时照片级渲染 (SIGGRAPH Asia 2022)

论文链接:https://arxiv.org/abs/2112.01517

论文代码:https://github.com/zju3dv/ENeRF

论文主页:https://zju3dv.github.io/enerf/

摘自: https://zhuanlan.zhihu.com/p/586595657

1.1 论文的问题描述

输入是多个相机在固定机位拍摄的某个动态场景的多目视频,论文希望能生成该动态场景的自由视点视频。该问题有许多应用,例如虚拟呈现,电影游戏制作等。

1.2 当前方法在这个问题上的局限性

为了支持自由视点视频的应用,自由视点视频的渲染效果需要足够逼真,生成制作需要足够快,生成后在用户端的渲染也需要足够快。

最近一些方法基于隐式神经表示,利用体渲染技术优化场景表示,从而制作自由视点视频。D-NeRF[Pumarola et al., CVPR 2021] 利用隐式神经表示恢复了动态场景的motions,实现了照片级别的真实渲染。但是,这一类方法很难恢复复杂场景的motions,他们训练一个模型需要从几小时到几天不等的时间。此外,渲染一张图片通常需要分钟级的时间。

基于图像的渲染技术克服了以上方法的一些问题。第一,对于动态场景,IBRNet[Wang et al., CVPR 2021]能够把每一帧图像都当作单独的场景处理,从而不需要恢复场景的motions。第二,基于图像的渲染技术可以通过预训练模型避免每一时刻的重新训练。但是,IBRNet渲染一张图片仍然需要分钟级的时间。

IBRNet[Wang et al., CVPR 2021]

1.3 我们的观察和对问题的解决

为了解决基于图像的渲染技术渲染过慢的问题,论文提出结合显式表示和隐式表示两者的优点。具体而言,我们观察到通过MVS方法预测显式表示,例如深度图像,通常是很快的。利用此显式表示去引导隐式表示的体渲染过程中的采样,能够大幅降低此前方法在空间内密集采样点(包括空地方的点和被遮挡的点)造成的计算开销,从而实现加速。

通过MVS方法快速计算新视角的深度,利用深度仅在物体表面进行采样计算辐射场

2. 论文方法

2.1 基于MVS方法预测新视角的深度图像

我们首先使用MVS方法预测新视角的深度图像。给定标定好的相机姿态,我们利用待渲染的视角空间上临近的图像建立级联代价体,使用3D卷积网络处理代价体获得深度图像以及置信区间。

建立级联代价体预测深度图像以及置信区间

2.2 在场景的表面附近预测辐射场

给定上一步预测的深度置信区间,我们在此区间内采样若干点,通过图像特征和3D卷积网络得到的3D特征体,泛化的预测这些采样点的辐射场和密度。

在深度区间内采样少量点,利用图像特征预测这些点的辐射场,使用体渲染技术得到渲染图像

2.3 使用RGB图像优化ENeRF

在得到渲染结果后,我们使用图像的均方差损失函数端到端的优化网络参数。我们实验发现仅使用RGB图像优化网络参数即可获得高质量的渲染结果。

使用RGB图像优化ENeRF

3. 实验分析

3.1 消融实验分析

我们提供了消融实验分析去研究论文方法的每一步带来的影响。

第一行展示了基线方法(与MVSNeRF[Chen et al., ICCV 2021]相似),每条光线采样128个点,这样有着好的渲染结果,但是渲染速度比较慢。直接降低采样点的数量后,会导致渲染质量显著下降。使用论文提出的采样方法(Depth-gui.)后,能提升渲染质量,同时基本保持比较快的渲染速度。

为了进一步提高渲染速度,论文使用了级联的设计(Cascade Cost Volume),通过我们仔细的设计,我们将速度从9.7FPS提升到20.31FPS。

此外我们研究了额外使用地面真值深度图像来监督网络学习,我们发现它对最后的渲染质量不会有很大的影响,这说明了论文方法使用RGB图像端到端优化的鲁棒性。

ENeRF的消融实验

3.2 与SOTA方法的对比

我们在DTU,NeRF Synthetic以及Real Forward-facing静态场景数据集以及ZJUMoCap和DynamicCap动态场景数据集上进行了和之前方法的比较,我们在渲染速度上实现了较大的提升,并且在渲染质量上取得了有竞争力的结果。

ENeRF与SOTA方法在静态场景上的可视化结果的对比
ENeRF与SOTA方法在静态场景上的量化结果对比
ENeRF与SOTA方法在动态场景上的可视化结果对比
ENeRF与SOTA方法在动态场景上的量化结果对比

3D Gaussian Splatting for Real-Time Radiance Field Rendering

项目主页https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/

ACM 计算机图形学领域最顶级的期刊

代码https://github.com/graphdeco-inria/gaussian-splatting

辐射场方法最近彻底改变了用多张照片或视频捕获的场景的新颖视图合成。 然而实现高视觉质量仍然需要训练和渲染成本高昂的神经网络,而最近更快的方法不可避免地会牺牲速度来换取质量。 对于无界且完整的场景(而不是孤立的物体)和 1080p 分辨率渲染,当前任何方法都无法实现实时显示速率。我们引入了三个关键要素,使我们能够在保持竞争性训练的同时实现最先进的视觉质量,重要的是允许以 1080p 分辨率进行高质量实时 (≥30fps) 新颖视图合成。 首先,从相机校准期间产生的稀疏点开始,我们用 3D 高斯表示场景,保留连续体积辐射场的所需属性以进行场景优化,同时避免在空白空间中进行不必要的计算; 其次,我们对 3D 高斯进行交错优化/密度控制,特别是优化各向异性协方差以实现场景的准确表示; 第三,我们开发了一种快速可见性感知渲染算法,该算法支持anisotropic(各向异性) splatting,既加速训练又允许实时渲染。 我们在几个已建立的数据集上展示了最先进的视觉质量和实时渲染

我们方法的输入是一组静态场景的图像,以及由 SfM 校准的相应摄像机,这会产生稀疏点云作为side effect。 从这些点出发,我们创建了一组 3D 高斯,由位置(均值)、协方差矩阵和不透明度定义,这允许非常灵活的优化机制。 这会产生 3D 场景的相当紧凑的表示,部分原因是高度各向异性的体积片可用于紧凑地表示精细结构。 辐射场的方向外观分量(颜色)通过球谐函数 (SH) 表示,遵循标准实践。 我们的算法继续通过 3D 高斯参数的一系列优化步骤来创建辐射场表示,即位置、协方差和 SH 系数与高斯密度自适应控制的操作交织在一起。 我们方法效率的关键是基于图块的光栅化器,它允许各向异性图块的混合,通过快速排序尊重可见性顺序。 快速光栅化器还包括通过跟踪累积值的快速向后传递,而对可以接收梯度的高斯数量没有限制。 我们的方法的概述如上图所示。

AI生成3D模型:DreamFusion、Point-E、Magic3D

1、DreamFusion(谷歌)

项目主页:https://dreamfusion3d.github.io/

paper: https://arxiv.org/abs/2209.14988

code: https://github.com/ashawkey/stable-dreamfusion

该文章解决的是3D重建领域的少视角重建(Sparse-view Reconstruction)问题,结合了扩散模型和NeRF。

摘要

最近扩散模型在上亿级别的文本-图像对数据上训练在文本图像生成上取得巨大的进展,将这种方法应用于3D合成,需要大规模的有标签的3D数据集和高效的架构来去噪3D数据,而这两者目前都不存在。在这项工作中,通过使用预先训练好的二维的文本到图像的扩散模型来绕开这些限制进行文本到3D的合成。本文引入一种基于概率密度蒸馏的损失函数,可以使用2D的扩散模型作为先验用于优化参数化图像生成器。使用这个损失函数就像一个DeepDream-like的过程,(这里的DeepDream是谷歌提出,使用梯度上升的方法可视化网络每一层的特征,即用一张噪声图像输入网络,反向更新的时候不更新网络权重,而是更新初始图像的像素值,以这种训练图像的方式可视化网络)。本文梯度下降优化一个随机初始化的3D模型使得任意随机视角随机渲染的图像都达到较低的损失。生成的模型可以任意修改,不需要三维数据,也不需要修改扩散模型。

本文的方法和DreamFields的方法类似,但是用一个2D扩散模型蒸馏推导而来的损失函数取代CLIP。这个损失函数是通过概率密度蒸馏而来的,就是用KL- divergence最小化前向过程和反向的概率密度,这里的反向过程是是与训练好的2D扩散模型,因为反向过程也是一个估计score的过程,所以我理解这就是他叫 score distillation sampling的原因吧。

该工作基于的3D表示方法也是NeRF中的一种。事实上,基于NeRF的重建方法通常需要针对特定场景的大量的视图,并且对于训练集中出现频率较少的视角,其关于该视角的重建结果也会很差。而对于少视角3D重建,虽然最近已经有很多工作结合了深度网络和渲染公式来完成这样的任务,但是它们要么缺乏3D一致性,要么感知质量比较差。

在3D生成领域,DreamFusion使用文本扩散模型优化3D表示,并且取得了非常好的效果。

如上图,这是DreamFusion的架构图,右边一部分就是Diffusion Model,这里用的是一个预训练的模型,左边一部分就是NeRF,是一个目标场景的3D表示,虽然画的花里胡哨的,但是其实思路非常直白简单:训练的时候锁住Diffusion的梯度,增加视角guidance,用生成结果来优化和训练NeRF;泛化阶段只需要使用优化后的NeRF就可以了。在这里,Diffsuion的作用是根据文本生成相应视角和内容的图片,NeRF的作用是约束3D一致性。

2、Magic3D(NVIDIA)

高分辨率文本到3D内容创建:

项目主页:https://deepimagination.cc/Magic3D/

论文:https://arxiv.org/abs/2211.10440

人们只需要输入一段文字比如「一只坐在睡莲上的蓝色箭毒蛙」,AI 就能给你生成个纹理造型俱全的 3D 模型出来。Magic3D 还可以执行基于提示的 3D 网格编辑:给定低分辨率 3D 模型和基本提示,可以更改文本从而修改生成的模型内容。此外,作者还展示了保持画风,以及将 2D 图像样式应用于 3D 模型的能力。

类似于 DreamFusion 用文本生成 2D 图像,再将其优化为体积 NeRF(神经辐射场)数据的流程,Magic3D 使用两阶段生成法,用低分辨率生成的粗略模型再优化到更高的分辨率。

英伟达的方法首先使用低分辨率扩散先验获得粗糙模型,并使用稀疏 3D 哈希网格结构进行加速。用粗略表示作为初始,再进一步优化了带纹理的 3D 网格模型,该模型具有与高分辨率潜在扩散模型交互的高效可微分渲染器。

Magic3D 可以在 40 分钟内创建高质量的 3D 网格模型,比 DreamFusion 快 2 倍(后者平均需要 1.5 小时),同时还实现了更高的分辨率。

Magic3D 可以在较短的计算时间内根据文本 prompt 合成高度详细的 3D 模型。Magic3D 通过改进 DreamFusion 中的几个主要设计选择来使用文本 prompt 合成高质量的 3D 内容。

具体来说,Magic3D 是一种从粗到精的优化方法,其中使用不同分辨率下的多个扩散先验来优化 3D 表征,从而生成视图一致的几何形状以及高分辨率细节。Magic3D 使用监督方法合成 8 倍高分辨率的 3D 内容,速度也比 DreamFusion 快 2 倍。

Magic3D 的整个工作流程分为两个阶段:

  • 在第一阶段,该研究优化了类似于 DreamFusion 的粗略神经场表征,以实现具有基于哈希网格(hash grid)的内存和计算的高效场景表征。
  • 在第二阶段该方法切换到优化网格表征。这个步骤很关键,它允许该方法在高达 512 × 512 的分辨率下利用扩散先验。由于 3D 网格适用于快速图形渲染,可以实时渲染高分辨率图像,因此该研究利用基于光栅化的高效微分渲染器和相机特写来恢复几何纹理中的高频细节。

3、Point-E(OpenAI)

Point·E,可以依据文本提示直接生成 3D 点云:

项目主页:https://openai.com/research/point-e

Github: https://github.com/openai/point-e

通常意义上,文本到 3D 合成的方法分为两类:

方法 1:直接在成对的 (text, 3D) 数据或无标签的 3D 数据上训练生成模型。

此类方法虽然可以利用现有的生成模型方法,有效地生成样本,但由于缺乏大规模 3D 数据集,因此很难扩展到复杂的文本提示。

方法 2:利用预先训练好的 text-to-image 模型,优化可区分的 3D 表征。

此类方法通常能够处理复杂多样的文本提示,但每个样本的优化过程都代价高昂。此外,由于缺乏强大的 3D prior,此类方法可能会陷入 local minima(无法与有意义或连贯的 3D 目标一一对应)。

Point·E 结合了 text-to-image 模型以及 image-to-3D 模型,综合以上两种方法的优势,进一步提升了 3D 建模的效率,只需要一个 GPU、一两分钟即可完成文本到 3D 点云的转换。

Point·E 中,text-to-image 模型利用了大型语料库 (text, image pair),使其对复杂的文本提示也能处理得当;image-to-3D 模型则是在一个较小的数据集 (image, 3D pair) 上训练的。

用 Point·E 依据文本提示生成 3D 点云的过程分为三个步骤:

1、依据文本提示,生成一个合成视图 (synthetic view)

GLIDE – 基于扩散模型的文本图像生成大模型

2、依据合成视图,生成 coarse point cloud (1024 point)

3、基于低分辨率点云和合成视图,生成 fine point cloud (4096 Point)

由于数据格式和数据质量对训练结果影响巨大,Point·E 借助 Blender,将所有训练数据都转换为了通用格式。

Blender 支持多种 3D 格式,并配有优化的渲染 engine。Blender 脚本将模型统一为一个 bounding cube,配置一个标准的 lighting 设置,最后使用 Blender 内置的实时渲染 engine 导出 RGBAD 图像。

4、Zero-1-to-3: Zero-shot One Image to 3D Object

项目链接:

https://zero123.cs.columbia.edu/

源码:

https://github.com/cvlab-columb

Method

We learn a view-conditioned diffusion model that can subsequently control the viewpoint of an image containing a novel object (left). Such diffusion model can also be used to train a NeRF for 3D reconstruction (right). Please refer to our paper for more details or checkout our code for implementation.

Text to Image to Novel Views

Here are results of applying Zero-1-to-3 to images generated by Dall-E-2.

5、SceneDreamer:从2D图像中学习生成无限3D场景

来自南洋理工大学 S-Lab 的研究者提出了一个新的框架 SceneDreamer,专注于从海量无标注自然图片中学习无界三维场景的生成模型。

  • 项目主页:https://scene-dreamer.github.io/
  • 代码:https://github.com/FrozenBurning/SceneDreamer
  • 论文:https://arxiv.org/abs/2302.01330
  • 在线 Demo:https://huggingface.co/spaces/FrozenBurning/SceneDreamer

为满足元宇宙中对 3D 创意工具不断增长的需求,三维场景生成最近受到了相当多的关注。3D 内容创作的核心是逆向图形学,旨在从 2D 观测中恢复 3D 表征。考虑到创建 3D 资产所需的成本和劳动力,3D 内容创作的最终目标将是从海量的互联网二维图像中学习三维生成模型。最近关于三维感知生成模型的工作在一定程度上解决了这个问题,多数工作利用 2D 图像数据生成以物体为中心的内容(例如人脸、人体或物体)。然而,这类生成任务的观测空间处于有限域中,生成的目标占据了三维空间的有限区域。这就产生了一个问题,我们是否能从海量互联网 2D 图像中学习到无界场景的 3D 生成模型?比如能够覆盖任意大区域,且无限拓展的生动自然景观

想要达成这样的目标,我们面临着如下三个挑战:

1)无界场景缺乏高效三维表征:无边界场景常常占据了一个任意大的欧氏空间,这凸显了高效且具备表现力的底层三维表征的重要性。

2)缺乏内容对齐:已有三维生成工作使用具备对齐性质的数据集(如人脸、人体、常用物体等),这些有界场景中的目标物体通常具备类似的语义、相近的尺度位置和方向。然而,在海量的无标注二维图像中,不同物体或场景常常具备迥异的语义,且拥有多变的尺度、位置和方向。这样缺乏对齐的性质会带来生成模型训练的不稳定性。

3)缺乏相机位姿先验:三维生成模型依赖于准确相机位姿或相机位姿分布的先验来实现图像到三维表征的逆向渲染过程。但互联网自然图像来源于不同的场景和像源,让我们无法获取其相机位姿准确信息或先验。

为此我们提出了一个原则性的对抗学习框架 SceneDreamer,从海量的无标注自然图像中学习生成无界三维场景。该框架包含三个主要模块:1)高效且高表现力的鸟瞰(BEV)三维场景表征;2)学习场景通用表征的生成式神经哈希网格;3)由风格驱动的体积渲染器,并经过对抗学习的方式直接从二维图像中进行训练。

6、 Shap・E,合成 3D 条件生成式模型

我们先来看一下生成效果。与根据文字生成图像类似,Shap・E 生成的 3D 物体模型主打一个「天马行空」。

本文提出的 Shap・E 是一种在 3D 隐式函数空间上的潜扩散模型,可以渲染成 NeRF 和纹理网格。在给定相同的数据集、模型架构和训练计算的情况下,Shap・E 更优于同类显式生成模型。研究者发现纯文本条件模型可以生成多样化、有趣的物体,更彰显了生成隐式表征的潜力。

不同于 3D 生成模型上产生单一输出表示的工作,Shap-E 能够直接生成隐式函数的参数。训练 Shap-E 分为两个阶段:首先训练编码器,该编码器将 3D 资产确定性地映射到隐式函数的参数中;其次在编码器的输出上训练条件扩散模型。当在配对 3D 和文本数据的大型数据集上进行训练时, 该模型能够在几秒钟内生成复杂而多样的 3D 资产。与点云显式生成模型 Point・E 相比,Shap-E 建模了高维、多表示的输出空间,收敛更快,并且达到了相当或更好的样本质量

研究者首先训练编码器产生隐式表示,然后在编码器产生的潜在表示上训练扩散模型,主要分为以下两步完成:
1. 训练一个编码器,在给定已知 3D 资产的密集显式表示的情况下,产生隐式函数的参数。编码器产生 3D 资产的潜在表示后线性投影,以获得多层感知器(MLP)的权重;

2. 将编码器应用于数据集,然后在潜在数据集上训练扩散先验。该模型以图像或文本描述为条件。
研究者在一个大型的 3D 资产数据集上使用相应的渲染、点云和文本标题训练所有模型。

3D 编码器:

潜在扩散
生成模型采用基于 transformer 的 Point・E 扩散架构,但是使用潜在向量序列取代点云。潜在函数形状序列为 1024×1024,并作为 1024 个 token 序列输入 transformer,其中每个 token 对应于 MLP 权重矩阵的不同行。因此,该模型在计算上大致相当于基础 Point・E 模型(即具有相同的上下文长度和宽度)。在此基础上增加了输入和输出通道,能在更高维度的空间中生成样本。

7、Make-it-3D:diffusion+NeRF从单张图像生成高保真的三维物体

Title: Make-It-3D: High-Fidelity 3D Creation from A Single Image with Diffusion Prior
Paper: https://arxiv.org/pdf/2303.14184.pdf
Code: https://make-it-3d.github.io/

人类具有一种与生俱来的能力,可以轻松地想象3D几何和虚构出从不同角度看物体的外观,这基于他们对世界的先验知识

在本文中,研究者的目标是实现类似的目标:从一个真实或人工生成的单张图像中创建高保真度的3D内容。这将为艺术表达和创意开辟新的途径,例如为像Stable Diffusion这样的前沿2D生成模型创建的幻想图像带来3D效果。通过提供一种更易于访问和自动化的创建视觉上惊人的3D内容的方法,研究者希望吸引更广泛的受众加入到轻松的3D建模世界中来。

本文探讨了仅使用单张图像创建高保真度3D内容的问题。这本质上是一项具有挑战性的任务,需要估计潜在的3D几何结构,并同时产生未见过的纹理。为了解决这个问题,论文利用训练好的2D扩散模型的先验知识作为3D生成的监督。论文的方法名为:Make-It-3D,采用两阶段优化pipeline:第一阶段通过在前景视图中结合参考图像的约束和新视图中的扩散先验来优化神经辐射场;第二阶段将粗略模型转化为纹理点云,并利用参考图像的高质量纹理,结合扩散先验进一步提高逼真度。大量实验证明,论文的方法在结果上显著优于先前的方法,实现了预期的重建效果和令人印象深刻的视觉质量。论文的方法是第一个尝试从单张图像为一般对象创建高质量3D内容的方法,可用于text-to-3D的创建和纹理编辑等各种应用。

论文的主要贡献总结如下:

  1. 论文提出了Make-It-3D框架,使用2D扩散模型作为3D-aware先验,从单个图像中创建高保真度的3D物体。该框架不需要多视图图像进行训练,并可应用于任何输入图像,无论是真实的还是生成的。
  2. 通过两个阶段的创建方案,Make-It-3D是首个实现普适对象高保真3D创建的工作。生成的3D模型展现出精细的几何结构和逼真的纹理,与参考图像相符。
  3. 除了图像到3D创建之外,论文的方法还能实现高质量text-to-3D创建和纹理编辑等多种应用。

论文利用了文本-图像生成模型和文本-图像对比模型的先验知识,通过两阶段(Coarse Stage和Refine Stage)的学习来还原高保真度的纹理和几何信息,所提出的两阶段三维学习框架如图2所示。

8、ProlificDreamer:直接文本生成高质量3D内容

论文:《ProlificDreamer: High-Fidelity and Diverse Text-to-3D Generation with Variational Score Distillation》

清华大学 TSAIL 团队最新提出的文生 3D 新算法 ProlificDreamer,在无需任何 3D 数据的前提下能够生成超高质量的 3D 内容。ProlificDreamer 算法为文生 3D 领域带来重大进展。利用 ProlificDreamer,输入文本 “一个菠萝”,就能生成非常逼真且高清的 3D 菠萝:

将 Imagen 生成的照片(下图静态图)和 ProlificDreamer(基于 Stable-Diffusion)生成的 3D(下图动态图)进行对比。有网友感慨:短短一年时间,高质量的生成已经能够从 2D 图像领域扩展到 3D 领域了

在数字创作和虚拟现实等领域,从文本到三维模型(Text-to-3D)的技术具有重要的价值和广泛的应用潜力。这种技术可以从简单的文本描述中生成具体的 3D 模型,为设计师、游戏开发者和数字艺术家提供强大的工具。然而,为了根据文本生成准确的 3D 模型,传统方法需要大量的标记 3D 模型数据集。这些数据集需要包含多种不同类型和风格的 3D 模型,并且每个模型都需要与相应的文本描述相关联。创建这样的数据集需要大量的时间和人力资源,目前还没有现成的大规模数据集可供使用。由谷歌提出的 DreamFusion [1] 利用预训练的 2D 文本到图像扩散模型,首次在无需 3D 数据的情况下完成开放域的文本到 3D 的合成。但是 DreamFusion 提出的 Score Distillation Sampling (SDS) [1] 算法生成结果面临严重的过饱和、过平滑、缺少细节等问题。高质量 3D 内容生成目前仍然是非常困难的前沿问题之一。ProlificDreamer 论文提出了 Variational Score Distillation(VSD)算法,从贝叶斯建模和变分推断(variational inference)的角度重新形式化了 text-to-3D 问题。具体而言,VSD 把 3D 参数建模为一个概率分布,并优化其渲染的二维图片的分布和预训练 2D 扩散模型的分布间的距离。可以证明,VSD 算法中的 3D 参数近似了从 3D 分布中采样的过程,解决了 DreamFusion 所提 SDS 算法的过饱和、过平滑、缺少多样性等问题。此外,SDS 往往需要很大的监督权重(CFG=100),而 VSD 是首个可以用正常 CFG(=7.5)的算法。

与以往方法不同,ProlificDreamer 并不单纯优化单个 3D 物体,而是优化 3D 物体对应的概率分布。通常而言,给定一个有效的文本输入,存在一个概率分布包含了该文本描述下所有可能的 3D 物体。基于该 3D 概率分布,我们可以进一步诱导出一个 2D 概率分布。具体而言,只需要对每一个 3D 物体经过相机渲染到 2D,即可得到一个 2D 图像的概率分布。因此,优化 3D 分布可以被等效地转换为优化 2D 渲染图片的概率分布与 2D 扩散模型定义的概率分布之间的距离(由 KL 散度定义)。这是一个经典的变分推断(variational inference)任务,因此 ProlificDreamer 文中将该任务及对应的算法称为变分得分蒸馏(Variational Score Distillation,VSD)。具体而言,VSD 的算法流程图如下所示。其中,3D 物体的迭代更新需要使用两个模型:一个是预训练的 2D 扩散模型(例如 Stable-Diffusion),另一个是基于该预训练模型的 LoRA(low-rank adaptation)。该 LoRA 估计了当前 3D 物体诱导的 2D 图片分布的得分函数(score function),并进一步用于更新 3D 物体。该算法实际上在模拟 Wasserstein 梯度流,并可以保证收敛得到的分布满足与预训练的 2D 扩散模型的 KL 散度最小。

3D表示+2D Diffusion做3D任务的四个流派:

  1. 用Diffusion优化3D隐式场(其中Diffusion是预训练的),特别是NeRF相关工作,例如DreamFusion和SparseFusion;
  2. 使用3D Unet定制3D Diffusion,特别是point cloud相关工作;
  3. 把3D表示拆解并且重新拼接,变成超多通道2D图像,直接复用2D Diffusion,特别是Triplane相关工作,例如3D Neural Field Generation using Triplane Diffusion;
  4. 把2D Diffusion的Unet()换成一个renderer+encoder的结构,即间接引入3D约束,例如RenderDiffusion;
  5. 将3D约束编码成条件,用来约束2D Diffusion,例如DiffPose;

9: GET3D 英伟达:噪声—->3D物体

A Generative Model of High Quality 3D Textured Shapes Learned from Images (NeurIPS 2022 )

代码:https://github.com/nv-tlabs/GET3D

GET3D 包括两个分支:

1.几何分支:可微的输出任意拓扑的表面mesh

2.纹理分支:根据查询的表面点来产生 texture field,还可以扩展到表面的其他属性,比如材质

训练过程中,一个有效的可微栅格器将生成的带纹理 3D 模型投影到 2D 的高分辨率图片。整个过程都是可微分的,使得整个对抗训练可以从 discriminator 传递到两个分支。


10. DragGAN meets GET3D for interactive mesh generation and editing.

https://github.com/ashawkey/Drag3D

https://github.com/XingangPan/DragGAN

Anything-3D

论文地址:https://arxiv.org/pdf/2304.10261.pdf

github: https://github.com/Anything-of-anything/Anything-3D

2D图像的3D重建一直是CV领域的重头戏。

层出不同的模型被开发出来试图攻克这个难题。

今天,新加坡国立大学的学者共同发表了一篇论文,开发了一个全新的框架Anything-3D来解决这个老大难问题。

借助Meta「分割一切」模型,Anything-3D直接让分割后的任意物体活起来了。

Here we present a project where we combine Segment Anything with a series of 3D models to create a very interesting demo. This is currently a small project, but we plan to continue improving it and creating more exciting demos.

Contributions are highly Welcomed!🤝🙌

Anything-3D! 在现实世界中,各种物体和各类环境既多样又复杂。所以,在不受限制的情况下,从单一RGB图像中进行三维重建面临诸多困难。在此,新加坡国立大学研究人员结合了一系列视觉语言模型和SAM(Segment-Anything)物体分割模型,生成了一个功能多、可靠性强的系统——Anything-3D。目的就是在单视角的条件下,完成3D重建的任务。

他们采用BLIP模型生成纹理描述,用SAM模型提取图像中的物体,然后利用文本→图像的扩散模型Stable Diffusion将物体放置到Nerf(神经辐射场)中。在后续的实验中,Anything-3D展示出了其强大的三维重建的能力。不仅准确,适用面也非常广泛。Anything-3D在解决现有方法的局限这方面,效果明显。研究人员通过对各类数据集的测验和评估,展示了这种新框架的优点。

上图中,我们可以看到,「柯基吐舌头千里奔袭图」、「银翅女神像委身豪车图」,以及「田野棕牛头戴蓝绳图」。这是一个初步展示,Anything-3D框架能够熟练地把在任意的环境中拍摄的单视角图像中恢复成的3D的形态,并生成纹理。尽管相机视角和物体属性有很大的变化,但这种新框架始终能提供准确性较高的结果。要知道,从2D图像中重建3D物体是计算机视觉领域课题的核心,对机器人、自动驾驶、增强现实、虚拟现实,以及三维打印等领域都有巨大影响。虽说这几年来取得了一些不错的进展,但在非结构化环境中进行单图像物体重建的任务仍然是一个具有很大吸引力且亟待解决的问题。目前,研究人员的任务就是从一张单一的二维图像中生成一个或多个物体的三维表示,表示方法包括点云、网格或体积表示。然而,这个问题从根本上来说并不成立。由于二维投影所产生的内在模糊性,不可能明确地确定一个物体的三维结构。再加上形状、大小、纹理和外观的巨大差异,重建自然环境下的物体非常复杂。此外,现实世界图像中的物体经常会被遮挡,这就会阻碍被遮挡部分的精准重建。同时,光照和阴影等变量也会极大地影响物体的外观,而角度和距离的不同也会导致二维投影的明显变化。困难说够了,Anything-3D可以出场了。论文中,研究人员详细介绍了这个开创性的系统框架,将视觉语言模型和物体分割模型融合在一起,轻轻松松就能把2D物体搞成3D的。这样,一个功能强大、自适应能力强的系统就成了。单视图重建?Easy.研究人员表示,将这两种模型结合,就可以检索并确定出给定图像的三维纹理和几何形状。Anything-3D先用SAM模型识别物体的分布区域,在利用BLIP模型(Bootstrapping语言-图像模型)预训练对图像的文本描述。接下来,利用分割出来的物体和文本描述来执行3D重建任务。换句话说,该论文利用预先训练好的2D文本→图像扩散模型来进行图像的3D合成。此外,研究人员用分数蒸馏来训练一个专门用于图像的Nerf.

上图就是生成3D图像的全过程。左上角是2D原图,先经过SAM,分割出柯基,再经过BLIP,生成文本描述,然后再用分数蒸馏搞个Nerf出来。通过对不同数据集的严格实验,研究人员展示了这种方法的有效性和自适应性,同时,在准确性、稳健性和概括能力方面都超过了现有的方法。研究人员还对自然环境中3D物体重建中已有的挑战进行了全面深入地分析,探讨了新框架如何解决此类问题。最终,通过将基础模型中的零距离视觉和语言理解能力相融合,新框架更能从真实世界的各类图像中重建物体,生成精确、复杂、适用面广的3D表示。可以说,Anything-3D是3D物体重建领域的一个重大突破。

这个新框架可以交互式地识别单视角图像中的区域,并用优化的文本嵌入来表示2D物体。最终,使用一个3D感知的分数蒸馏模型有效地生成高质量的3D物体。总之,Anything-3D展示了从单视角图像中重建自然3D物体的潜力。研究者称,新框架3D重建的质量还可以更完美,研究人员正在不断努力提高生成的质量。此外,研究人员表示,目前没有提供3D数据集的定量评估,如新的视图合成和误差重建,但在未来的工作迭代中会纳入这些内容。同时,研究人员的最终目标是扩大这个框架,以适应更多的实际情况,包括稀疏视图下的对象恢复。

AvatarCLIP: Zero-Shot Text-Driven Generation and Animation of 3D Avatars

AvatarCLIP:仅用自然语言驱动实现制作3D avatar动画

1. 论文和代码地址

论文地址:https://arxiv.org/abs/2205.08535

代码地址:https://github.com/hongfz16/AvatarCLIP

2. 动机

3D avatar生成在数字时代有至关重要的作用,一般而言,创建一个3Davatar需要创建一个人物形象、绘制纹理、建立骨架并使用捕捉到的动作对其进行驱动。无论哪一个步骤都需要专业人才、大量时间和昂贵的设备,为了让这项技术面向大众,本文提出了AvatarCLIP,一个zero-shot文本驱动的3Davatar生成和动画化的框架。与专业的制作软件不同,这个模型不需要专业知识,仅仅通过自然语言就可以生成想要的avatar。本文主要是利用了大规模的视觉语言预训练模型CLIP来监督人体的生成,包括几何形状、纹理和动画。使用shapeVAE来初始化人类几何形状,进一步进行体渲染,接着进行几何雕刻和纹理生成,利用motionVAE得到运动先验来生成三维动画

3. 方法

3.1模型概述

下图展示了AvatarCLIP的框架,模型分为两个部分,上面的部分是生成静态的avatar,下面的部分是生成动作。

模型的输入是自然语言描述,body描述、外观描述和动作描述,模型的输出包括一个动画的3Davatar,以及一系列想要的poses。

静态avatar生成分为四步,首先根据SMPL的模板和语言提示初始化Mesh,接下来用NeuS提取mesh的隐式表示,然后使用隐式表示来构建形状和生成纹理,最后进行动画化。motion生成首先生成备选姿势,然后基于备选姿势生成动作序列。最后将动作做序列融入到动画中。

3.2静态avatar生成

3.2.1coarse shape mesh 生成

作为生成虚拟形象的第一步,生成一个粗糙的模板mesh。SMPL 被用作可能的人体形状的来源。如图 3 所示,首先通过对身体形状进行聚类来构建code-book。然后使用CLIP提取code-book和文本中身体形状渲染的特征,以获得最佳匹配的身体形状。

SMPL是通过主成分分析学习的,所以聚类的分布不均衡。通过训练一个shapeVAE,在VAE的隐空间使用K-Means聚类,来实现分类均匀的目的。对于CLIP引导的code-book查询,定义了一个中性状态的身体形状 以及相应的中性状态文本 作为参考。每个条目的得分 在code-book中定义为

最终选择si最大的mesh 作为输出。

3.2.2隐式表达

为了生成高质量的 3D avatar,形状和纹理需要进一步塑造和生成以匹配外观 app 的描述。如前所述,我们选择使用隐式表示,即 Neus,作为此步骤中的基本 3D 表示,因为它在几何和颜色上都具有优势。为了加速优化和控制形状生成,更方便生成动画,所以需要先将生成的粗糙mesh shape转化为隐式表示。

通过使用模板mesh 的多视图渲染{ }优化随机初始化的NeuS 来创建 的等效隐式表示。具体来说,如图4所示,NeuS = { ( ), ( )} 由两个子网组成。SDF网络 ( )以一定点 作为输入,输出与其最近的表面有符号距离。颜色网络 ( )以点 为输入,输出颜色。 ( ) 和 ( ) 都是使用 MLP 实现的。需要注意的是,与NeuS的原始实现相比,这里省略了颜色网络对观看方向的依赖。

视图方向依赖性最初设计用于对视角变化的阴影进行建模。在我们的例子中,对此类阴影效应进行建模是多余的,因为我们的目标是生成具有一致文本的 3D avatar,与原始设计类似, 由三部分损失函数优化:

color是渲染图和ground truth之间的重建损失 reg是SDF正则化的损失 mask是仅仅重建前景的损失

3.2.3形状构建+纹理生成

通过CLIP风格化初始的NeuS N,粗糙的形状 仍应保持,所以通过保留了原来的两个子网络 ( ) 和 ( ) 并引入额外的彩色网络 ( ). 两个颜色网络共享同一SDF网络 ( ) 如图5所示。 ( )和 ( ) 负责模板网格的重建 . ( ) 连同 ( ) 负责风格化部分,并且包括目标隐式3D化身。

形式上,新的NeuS模型 ′ = { ( ), ( ), ( )} 现在由三个子网络组成,其中 ( ) 和 ( ) 由预先培训的 , 和 ( )是随机初始化的颜色网络。

损失函数如下

没有纹理的渲染中颜色是不需要的,我们简单的计算一个灰度的光线通过:

其中A服从一个均匀分布,并随机采样,D= 1-A。通过上面的式子应用到一张图片的每一个像素中,我们可以得到没有纹理渲染的图片。

在实践中,我们发现纹理渲染上的随机着色 有利于生成纹理的均匀性,这将在消融研究中稍后讨论。随机着色打开 类似于无纹理渲染,其正式定义为

上面两种渲染过程的损失函数就损失函数的后两项,定义为:

3.2.4 增强过程

为了增强优化过程的鲁棒性,使用了三种增强手段:背景随机增强;随机相机参数采样;文本提示语义增强。

随机背景增强,使得CLIP能更加focus on 需要生成的对象上,本文采用了图六中展示的背景增强的手段。

为了防止网络找到仅为几个固定相机位置提供合理渲染的捷径解决方案,我们以手动定义的重要性采样方式对每个优化迭代的相机外部参数进行随机采样,以获得更连贯和平滑的结果。我们选择使用相机的“注视”模式,该模式由注视点、相机位置和向上方向组成。

向上的方向一般是人体向上的方向,注视点采用随机采样的方法,相机位置使用半径为 从均匀分布U(1,2)采样,极角 从均匀分布U(0,2 ), 方位角 从高斯分布N(0, /3)采样,使得相机在大多数迭代中指向化身的前方。

到目前为止,在整个优化过程中没有引入人类先验,这可能会导致在错误的身体部位生成纹理或不为重要的身体部位创建纹理,这将在稍后的消融研究中显示。为了防止此类问题,我们建议通过以语义感知的方式增强提示,在优化过程中明确引入人类先验。例如,如图7所示,如果 app=“乔布斯”,我们将增加 应用到两个附加提示 face=“史蒂夫·乔布斯的脸”和 back=“史蒂夫·乔布斯的背影”。对于每四次迭代,相机的注视点被设置为面部的中心,以获得面部的渲染,这将由提示进行监督 面对“面部增强”直接监督面部的生成,这对生成的化身的质量很重要,因为人类对面部更敏感。对于第二增强提示, back被用作相应的文本,以明确地指导化身背部的生成。

3.2.5动画生成

首先,中每个顶点的最近邻居 在模板网格的顶点中检索 . 混合中每个顶点的权重 从中最近的顶点复制 . 其次,使用反向LBS算法来带来avatar的站立姿势 站回零姿势 0。顶点 被转换为 0 . 最后 0可以由任何姿势驱动 使用LBS算法。因此,对于任何姿势,动画avatar都可以正式定义为:

LBS算法是线性混合蒙皮,用户在几何模型给上选择一系列控制单元,并计算几何模型受这些控制单元的影响权重,用户拖动控制单元,几何模型随着控制单元发生对应的变化。

3.3motion 生成

根据经验,CLIP不能直接估计运动序列和自然语言描述之间的相似性。它也缺乏评估运动序列的平滑性或合理性的能力。这两个限制表明,仅使用CLIP监督很难生成运动。因此,必须引入其他模块来提供运动先验。然而,CLIP能够评估渲染的人体姿势和描述之间的相似性。此外,类似的姿势可以被视为预期运动的参考。基于以上观察,我们提出了一个两阶段运动生成过程:1)由CLIP引导的候选姿态生成。2) 使用具有候选姿势作为参考的运动先验来生成运动序列。

3.3.1生成candidate pose

我们首先从AMASS数据集创建code-book。为了减少维度,VPoser用于将姿势编码为 ∈ R ,然乎使用K-Means聚类来建立code-book Bz,每一个Bz然后通过解码器解码为一些列的姿势 。

给定的文本描述 运动,每个姿势特征 从代码本中计算与文本特征的相似度 , 其用于选择Top-K条目作为候选姿势。

3.3.2motion VAE

本文提出了一种双重方法来生成与运动描述匹配的目标运动序列 运动

1) motionVAE被训练以捕获人类运动先验。

2) 我们使用候选姿态优化motion VAE的潜在代码 作为参考。

motion VAE包含encoder、decoder和重参数模块。

encoder模块包括projection layer、positional embedding layer 、几个transformer encoder块和output layer。输出等于

重参数模块生成一个高斯分布,两个全连接层分别计算均值和方差

随机潜在编码z从得到的高斯分布中采样,潜在编码通过decoder解码得到motion序列

训练motion VAE过程中的损失函数定义为:

3.3.3生成运动序列

使用预训练的motion VAE,我们尝试优化其潜在代码 以合成运动序列 Θ = motion ( )。提出了三个优化约束:

Lpose 是解码后的动作序列 Θ 和候选姿势 之间的重构项。给定参考带来 = { 1, 2,., },目标是构建一个与这些姿势足够接近的动作序列。我们建议最小化 与其最近的帧Θ 之间的距离,其中 ∈ {1, 2,., } 和 ∈ {1, 2,., }。形式上,重建损失定义为

根据经验,仅使用重建损失 Lpose,生成的运动往往是过度平滑的。Ldelta 测量运动的范围,以防止运动过于平滑。作为对过度平滑运动的惩罚项。在增加 λ6 时会产生更强烈的运动。

L clips 鼓励运动中的每个单一姿势匹配输入运动描述。缺乏对姿势排序的监督将导致不稳定的生成结果。此外,候选姿势可能只对最终运动序列的一小部分有贡献,这将导致意外的运动片段。为了解决这两个问题,我们设计了一个附加的CLIP引导损失项:

是姿势Θ和文本描述之间的相似度得分。 clip ( ) = 是一个单调递增的函数,因此 L clip 对序列中的后面姿势给予更高的惩罚。通过上述 CLIP 引导的术语,整个运动序列将与运动更加一致。

4.实验

4.1总体结果

上图展示了具有多种身体形状,外观多样,质量高。它们由生成的与输入描述合理且一致的运动序列驱动。在zero-shot style中,AvatarClip 能够生成avatar和动作并且动画化,利用预训练模型中的先验信息。最初需要专业软件专家知识的化身生成和动画的整个过程现在可以在我们提出的模型帮助下简单地由自然语言驱动。

4.2Avatar 生成

4.2.1消融实验

1)背景增强的设计

2)低纹理渲染的监督

3)纹理渲染的随机阴影

4)语义感知提示增强。

图12所示的消融设置是通过随后将上述四种设计添加到baseline中形成的。如图12的前两列所示,背景增强对纹理生成有很大影响,如果没有背景增强,纹理会变得非常暗。比较第二列和第三列,添加对无纹理渲染的监督可以大大提高几何体质量。“消融2”的几何结构有很多随机凸起,这会使表面产生噪音。而“消融3”的几何结构是光滑的,并有详细的衣服褶皱。如“消融3”和“消融4”所示,在纹理渲染图上添加随机阴影有助于生成更均匀的纹理。例如,《消融3》中的“唐纳德·特朗普”上身比下身更亮,这在《消融4》中有所改进。如果没有人体语义的意识,前面的四个设置无法为化身生成正确的面部。最后一列使用语义感知提示增强,在面部生成方面具有最佳结果。

4.2.2coarse shape 生成

对于这一部分,我们设计了两种直观的基线方法,(i)SMPL上的直接优化 (ii)VAE潜在空间上的直接优化。如图13(a)所示,两种优化方法都无法生成与描述文本一致的身体形状。即使是相反的文本指导(例如“kinny”和“overweight”)也会导致相同的优化方向。相比之下,我们的方法稳健地生成与输入文本一致的合理身体形状。我们方法的更多样的定性结果如图13(b)所示。

4.2.3形状雕刻和纹理生成的定性结果

广泛的驾驶文本。在广泛的实验中,我们的方法能够从广泛的外观描述中生成化身,包括三种类型:1)名人,2)虚构人物和3)描述人的一般词语,如图17所示。如图17(a)所示,给定名人姓名作为外观描述,生成了名人最具标志性的服装。由于我们的语义感知提示增强设计,人脸也能正确生成。对于图17(b)所示的虚构角色生成,可以正确生成大多数文本描述的化身。有趣的是,对于具有复杂几何形状的配件的角色(例如“蝙蝠侠”的头盔、“艾尔莎”的服装),优化过程有从模板人体中“生长”出新结构的趋势。至于一般描述,我们的方法可以处理非常广泛的范围,包括常见的工作名称(例如“教授”、“医生”)、描述某个年龄段的人的词语(例如“青少年”、“老年公民”)和其他幻想职业(如“女巫”、“巫师”)。可以观察到,除了化身本身之外,还可以生成它们各自的标志性对象。例如,“园丁”用手抓花和草。

尽管上面实验和演示了大量的生成结果,但在生成宽松服装和配饰时仍存在失败案例。例如,如图17所示,“艾尔莎”的服装和“奇异博士”的斗篷并没有生成。夸张的头发和胡须(如裹着面包的阿甘)的几何形状也很难正确生成。这是由优化过程中的重建损失引起的。不鼓励“生长”,允许对几何结构进行非常有限的更改。

Zero-Shot Controlling Ability:如图18所示,我们可以通过调整语义感知提示增强来控制化身上生成的人脸,例如,比尔·盖茨穿着钢铁侠套装。此外,我们可以通过直接的文本指导来控制化身的服装,例如“穿着白衬衫的史蒂夫·乔布斯”。

Concept Mixing:如图14所示,我们展示了将奇幻元素与名人混合的示例。在保持可识别身份的同时,奇幻元素与avatar自然融合。

Geometry Quality:低纹理渲染监督的关键设计主要有助于几何生成。我们主要将AvatarCLIP与基于NeRF的改编的Dream Field进行比较。如图19所示,我们的方法在几何质量方面始终优于Dream Fields。可以生成详细的肌肉形状、盔甲曲线和布料褶皱。

除了生成质量,我们还研究了我们算法的鲁棒性与baseline Text2Mesh相比。对于每种方法,我们都使用相同的五个随机种子,对同一提示进行五次独立运行。如图20所示,我们的方法能够以高质量和与输入文本一致的方式输出结果。Text2Mesh在大多数运行中失败,这表明网格的表示对于优化是不稳定的,尤其是在监督薄弱的情况下。

4.3 motion生成

4.3.1消融实验

为了评估我们在基于参考的动画模块中的设计选择的有效性(即提出的三个约束项,运动VAE作为运动先验的使用),我们将我们的方法与两个基线方法进行了比较,如图21所示。

对于“刷牙”,(i)生成无序和不相关的姿势序列。(ii)也未能生成合理的运动,这是由于其盲目地关注于重建无序的候选姿势所导致的。通过引入重新加权机制,我们的方法不仅关注重建,还考虑了生成的运动的合理性。

对于“踢足球”,当腿踢出时,(i)(ii)中的动作序列没有剧烈变化。Ldelta在控制运动强度方面起着重要作用。至于“举起双臂”,它应该生成一个从中立姿势到举起手臂的姿势的运动序列。然而,(i)生成与预期结果相反的运动序列。(ii)引入若干不相关的行动。在Lclipm,我们的方法能够以正确的顺序和更好的描述一致性生成运动。

此外,受应聘者姿势多样性的限制,要想做出更复杂的动作,比如“拥抱”、“弹钢琴”和“运球”,是一件很有挑战性的事情。

4.3.2与baseline对比

将三种baseline方法与我们的方法进行比较。baseline(I)直接对SMPL参数θ进行优化。基线(II)直接在VPoser的潜在空间上进行优化。这两种方法都很难产生合理的姿势。Baseline(III)在VPoster中使用了多通道Real NVP,在正太分布和潜在空间分布中得到双向映射,它可以生成相对合理的姿势,但仍然明显比我们的方法差。

如图22(b)展示了广泛的驱动文本。为了证明姿势生成方法的zero-能力,我们用四类运动描述进行了实验:1)抽象的情绪描述(例如“疲惫”和“悲伤”);2) 常见动作描述(如“行走”和“蹲下”);3) 与身体部位相关的运动描述(例如“举起双臂”、“洗手”)4)涉及与物体交互的运动(例如“投篮”)。

5. 总结

为了外行人也可以实现原来复杂的3D avatar创建的目的,本文提出了AvatarCLIP。本文的模型主要依赖于大规模预训练模型VAE——包括了形状和动作先验,以及大型可泛化的视觉语言预训练模型CLIP。并且通过一系列的实验证明了模型的有效性和效率。

但是在形象创建的过程中,受到CLIP的弱监督和低分辨率的影响,生成的结果在放大之后并不是完美的。此外,在给定相同的prompt的,要产生有较大区别的形象是比较困难的。因为,优化方向是相同的,所以导致了不同的提示产生相同的结果。在动作合成阶段,受code-book设计的限制,很难产生分布外的候选姿态,这限制了产生复杂运动的能力。此外,由于缺乏video CLIP,很难生成风格化的运动。

对于预训练模型的使用,会造成许多道德问题,比如,医生对应的生成是男性, 而护士对应的生成是女性,这会造成性别歧视的问题。为了安全地使用zero-shot技术,需要开展关于大规模预训练模型的伦理问题的未来工作。此外,随着头像和动画制作的普及,用户可以很容易地制作出名人的假视频,这可能会被滥用,造成负面的社会影响。

AdaMPI:单图新视点合成

Single-View View Synthesis in the Wild with Learned Adaptive Multiplane Images, SIGGRAPH 2022.

Yuxuan Han, Ruicheng Wang and Jiaolong Yang

Project Page | Video | Paper

Multiplane Images(MPI)是一种场景表示方法,其在先前的工作中已经证明具有出色的表示能力。MPI通常由多个平面组成,每个平面都具有不同的颜色、密度和深度值。以前的方法通常将平面设置在固定位置,并通过卷积神经网络(CNN)预测纹理。然而,MPI是一种高度过参数化的表示方法,对于神经网络来说很难学习,因为需要大量输出通道。因此,当平面数量增加时,性能甚至可能会降低。

该网络旨在从输入图像和其深度图中预测N个平面,每个平面都有颜色通道ci、密度通道σi和深度di。该网络由两个子网络组成:平面调整网络Fd和颜色预测网络Fr。首先,使用现成的单目深度估计网络[Ranftl et al. 2021]获取深度图。然后,将Fd应用于推断平面深度{di}N_i=1,并将Fr应用于预测每个di处的颜色和密度{ci, σi}N_i=1。因此,该网络可以生成多平面图像,其中每个平面都具有不同的颜色、密度和深度值。

Figure 2显示了使用该方法在每个平面上预测的颜色掩码。该图中展示了16个平面,每个平面都有不同的颜色和密度值。这些颜色掩码是通过网络预测得出的,用于生成多平面图像。

该方法包括两个子网络:平面深度调整网络和深度感知颜色预测网络。 平面深度调整网络由三个主要部分组成:RGBD上下文特征提取器、平面位置调整器和注意力机制。该网络的输入是RGBD图像,其中包含彩色图像和深度图像。首先,RGBD上下文特征提取器从输入中提取特征,并将其传递给平面位置调整器。然后,平面位置调整器使用这些特征来推断每个平面的深度,并将其与初始估计值进行比较。最后,注意力机制用于确定哪些区域需要更多的细节,并在这些区域上进行更精细的调整。 深度感知颜色预测网络由两个主要部分组成:颜色掩码生成器和MPI合成器。该网络的输入是RGBD图像和一个表示目标视角的向量。首先,颜色掩码生成器使用输入来预测每个平面处的颜色掩码。然后,MPI合成器使用这些颜色掩码以及每个平面处的深度值来合成MPI表示,并将其渲染为新视点图片。 总体而言,该方法采用了一种端到端的学习方法,通过联合训练两个子网络来实现多平面图像的生成。

训练方法:

Fig. 3是有关视角合成训练对生成的示意图。该图显示了如何在训练过程中生成立体图像对。首先,从深度图中采样一个图像Is,并生成一个合理的内部参数K和相机运动(R,t)。然后,渲染目标彩色图像It和深度图Dt,并应用已经训练好的修补程序G来填充空洞,从而产生̄It和̄Dt。为了确保网络接收到来自真实图像分布的监督信号,我们将(̄It,̄Dt)作为F的输入,并将(Is,Ds)作为目标视角的地面真实值。

视频P图新SOTA:Towards An End-to-End Framework for Flow-Guided Video Inpainting

Github: https://github.com/MCG-NKU/E2FGVI/

E2FGVI由南开大学和海思合作完成。一作Li Zhen为南开大学博士生,共同一作Lu ChengZe也来自南开。通讯作者为南开大学计算机学院教授程明明,主要研究方向是计算机视觉和图形学。

Paper: Towards An End-to-End Framework for Flow-Guided Video Inpainting

在CVPR 2022收录的论文中,就出现了这么一个P图神器,它可以分分钟给你上演各种人像消失大法,不留任何痕迹。

去水印、填补缺失更是不在话下,并且各种分辨率的视频都能hold住。

正如你所见,这个模型如此丝滑的表现让它在两个基准数据集上都实现了SOTA性能

同时它的推理时间和计算复杂表现也很抢眼:前者比此前的方法快了近15倍,可以在Titan XP GPU上以每帧0.12秒的速度处理432 × 240的视频;后者则是在所有比较的SOTA方法中实现了最低的FLOPs分数

改善光流法

目前很多视频修复算法利用的都是光流法 (Optical flow)。也就是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性,找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息。

这个方法的缺点很明显:计算量大、耗时长,也就是效率低。

为此,研究人员设计了三个可训练模块,分别为流完成 (flow completion)、特征传播 (feature propagation)和内容幻想(content hallucination),提出了一个流引导(flow-guided)的端到端视频修复框架:E2FGVI

这三个模块与之前基于光流的方法的三个阶段相对应,不过可以进行联合优化,从而实现更高效的修复过程。

具体来说,对于流完成模块,该方法直接在mask viedo中一步完成操作,而不是像此前方法采用多个复杂的步骤。对于特征传播模块,与此前的像素级传播相比,该方法中的流引导传播过程在特征空间中借助可变形卷积进行。

通过更多可学习的采样偏移和特征级操作,传播模块释放了此前不能准确进行流估计的压力。

对于内容幻想模块,研究人员则提出了一种时间焦点Transformer来有效地建模空间和时间维度上的长程依赖关系。同时该模块还考虑了局部和非局部时间邻域,从而获得更具时间相关性的修复结果。

定量实验:

研究人员在数据集YouTube VOS和DAVIS上进行了定量实验,将他们的方法与之前的视频修复方法进行了比较。

如下表所示,E2FGVI在全部四个量化指标上都远远超过了这些SOTA算法,能够生成变形更少(PSNR和SSIM)、视觉上更合理(VFID)和时空一致性更佳(Ewarp)的修复视频,验证了该方法的优越性。

此外,E2FGVI也具有最低的FLOPs值(计算复杂度),尽管训练是在432 × 240分辨率的视频上进行,它的HQ版本做到了支持任意分辨率。

定性实验:

研究人员首先选择了三种最有代表性的方法,包括CAP、FGVC(基于光流法)和Fuseformer(入选ICCV 2021),进行对象移除(下图前三行)和缺失补全(下图后两行)的效果比较。

可以发现,前三种方法很难在遮挡区域恢复出合理的细节、擦除人物也会造成模糊,但E2FGVI可以生成相对真实的纹理和结构信息。

此外,它们还选用了5种方法进行了用户研究,结果大部分人都对E2FGVI修复后的效果更满意。

综上,研究人员也表示,希望他们提出的方法可以成为视频修复领域新的强大基线

3D-Machine-Learning相关资源集合

项目地址:https://github.com/timzhang642/3D-Machine-Learning

3D Machine Learning

In recent years, tremendous amount of progress is being made in the field of 3D Machine Learning, which is an interdisciplinary field that fuses computer vision, computer graphics and machine learning. This repo is derived from my study notes and will be used as a place for triaging new research papers.

I’ll use the following icons to differentiate 3D representations:

  • 📷 Multi-view Images
  • 👾 Volumetric
  • 🎲 Point Cloud
  • 💎 Polygonal Mesh
  • 💊 Primitive-based

To find related papers and their relationships, check out Connected Papers, which provides a neat way to visualize the academic field in a graph representation.

Get Involved

To contribute to this Repo, you may add content through pull requests or open an issue to let me know.

⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐
We have also created a Slack workplace for people around the globe to ask questions, share knowledge and facilitate collaborations. Together, I’m sure we can advance this field as a collaborative effort. Join the community with this link.
⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐

Table of Contents

Available Courses

Stanford CS231A: Computer Vision-From 3D Reconstruction to Recognition (Winter 2018)

UCSD CSE291-I00: Machine Learning for 3D Data (Winter 2018)

Stanford CS468: Machine Learning for 3D Data (Spring 2017)

MIT 6.838: Shape Analysis (Spring 2017)

Princeton COS 526: Advanced Computer Graphics (Fall 2010)

Princeton CS597: Geometric Modeling and Analysis (Fall 2003)

Geometric Deep Learning

Paper Collection for 3D Understanding

CreativeAI: Deep Learning for Graphics

相机内参/外参–坐标转换

摘自:https://zhuanlan.zhihu.com/p/389653208

https://blog.csdn.net/zb1165048017/article/details/71104241

demo演示:http://ksimek.github.io/perspective_camera_toy.html

demo中提供了三种外参接口(世界坐标系,相机坐标系,look-at),三种交互效果不同,前两种的方向相反,世界坐标系中向左移动表示相机坐标系中向右移动,但是它们都有六个参数控制:

tx表示沿着水平方向移动相机
ty表示沿着垂直方向移动相机
tz表示沿着前后方向移动相机
px表示镜头不平移,但是绕x轴做俯仰旋转
py表示镜头不平移,但是绕垂直轴y轴做左右摇头旋转
pz表示镜头不平移,但是绕z轴做顺时针(或者逆时针)旋转
————————————————

demo也提供了内参的接口,包括四个参数控制:

焦距(Focal length):镜头的前后缩进(不是缩放)
轴倾斜(Axis Skew):可以导致球变形,平面上显示椭球形
x0表示主点偏移,相机不动,左右移动成像平面
y0 表示主点偏移,相机不动,上下移动成像平面
————————————————

相机参数都有哪些?估计它们需要的条件?评估所估算的相机参数好坏的标准?

①主要包含内参(intrinsics)、外参(extrinsics)、畸变系数(distortion coefficients)

②估计参数需要3D世界坐标及其对应的2D图像点。比如在重构3D姿态的时候,需要同时输入图片及图片中对应的人的骨骼2D坐标点。

③评估所估计相机参数的方法就是:首先画出相机和校准模式的相对位置;随后计算投影误差;最后计算参数的估算误差。在matlab中有Camera Calibrator来进行相机校准和评估参数精确度。

外参数([R|t])描述世界坐标系与相机坐标系的变换关系,参数包括:旋转R,平移T。

内参数(K)描述相机坐标系,图像坐标系,像素坐标系之间的变换关系,参数包括主点坐标,焦距,单位像素宽与高。

相机成像主要有4个坐标系:

成像的过程实质上是几个坐标系的转换。首先空间中的一点由世界坐标系转换到 摄像机坐标系 ,然后再将其投影到成像平面 ( 图像物理坐标系 ) ,最后再将成像平面上的数据转换到图像平面 (图像像素坐标系 ) 。

对应的左乘矩阵公式

摘要:本文介绍了相机的内参和外参以及推导过程,由三个部分组成:第一部分,相机内参; 第二部分,相机外参;第三部分,总结。

1 相机内参

在左图中,我们把相机看作是针孔,现实世界中的点P经过相机的光心O,投影到物理成像平面上,变为点P’。

在右图中,对这个模型进行了一个简化,将其看作是一个相似三角形。

下面我们来对这个模型进行建模。

设O−x−y−z为相机坐标系,习惯上我们把z轴指向相机前方,x向右,y向下。O为摄像机的光心,也是针孔模型中的针孔。

设真实世界点中的P的坐标为[X,Y,Z]T,成像的点P’的坐标为[X’, Y’, Z’]T, 物理成像平面和光心的距离为f(即为焦距)。

根据右图中的三角形相似关系,有:

其中,有负号是因为坐标轴方向,也就表示了成的像是倒立的。为了表示起来更方便,我们把成像平面从相机的后面对称到前面去,如下图所示。这样,负号就没有了。

在对称后,有:

整理解出P’的坐标:

上面两个式子就描述了P点与它所成像的坐标关系,可以看到,X对应的X’与焦距f有关,与距离Z有关。映射到成像平面上还不够,我们还需要将这个像给放到像素坐标系内。
我们设在物理成像平面上固定着像素平面o-u-v。

设P’在像素平面坐标系上的坐标是[u, v]T

像素坐标系通常定义方式是:原点o’位于图像的左上角,u轴向右与x轴平行,v轴向下与y轴平行。我们设像素坐标在u轴上缩放α倍,在v轴上缩放了β倍。同时,原点平移了[cx, cy]T

因此可以得到P’与像素坐标的关系:

用齐次坐标,把上式写出矩阵的形式:

上式中,K即为相机的内参矩阵(Intrinsics)。通常来说,相机的内参在出厂之后就是固定的了。

2 相机外参

相机外参的作用是把坐标从【世界坐标系】转换到【相机坐标系】中

在上面的推导中,我们用的是P在相机坐标系的坐标(也就是以相机为O点),所以我们应该先将世界坐标系中的Pw给变换到相机坐标系中的P。

相机的位姿由旋转矩阵R和平移向量t来描述,因此:

旋转矩阵:R欧拉角:wiki百科

Rot(x, θ)   表示绕X轴旋转  θ表示旋转的角度  其它同理。矩阵右下角的表示放大倍数,矩阵第4行和第4列可以不要

3 镜头畸变

透镜由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。镜头的畸变分为径向畸变和切向畸变两类。

  1. 径向畸变

顾名思义,径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,这种畸变在普通廉价的镜头中表现更加明显,径向畸变主要包括桶形畸变和枕形畸变两种。以下分别是枕形和桶形畸变示意图:

成像仪光轴中心的畸变为0,沿着镜头半径方向向边缘移动,畸变越来越严重。畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项进行描述,通常使用前两项,即k1和k2,对于畸变很大的镜头,如鱼眼镜头,可以增加使用第三项k3来进行描述,成像仪上某点根据其在径向方向上的分布位置,调节公式为:

公式里(x0,y0)是畸变点在成像仪上的原始位置,(x,y)是畸变较真后新的位置,下图是距离光心不同距离上的点经过透镜径向畸变后点位的偏移示意图,可以看到,距离光心越远,径向位移越大,表示畸变也越大,在光心附近,几乎没有偏移。

  1. 切向畸变
    切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。畸变模型可以用两个额外的参数p1和p2来描述:

下图显示某个透镜的切向畸变示意图,大体上畸变位移相对于左下——右上角的连线对称的,说明该镜头在垂直于该方向上有一个旋转角度。

径向畸变和切向畸变模型中一共有5个畸变参数,在Opencv中他们被排列成一个5*1的矩阵,依次包含k1、k2、p1、p2、k3,经常被定义为Mat矩阵的形式,如Mat distCoeffs=Mat(1,5,CV_32FC1,Scalar::all(0));这5个参数就是相机标定中需要确定的相机的5个畸变系数。求得这5个参数后,就可以校正由于镜头畸变引起的图像的变形失真,下图显示根据镜头畸变系数校正后的效果:

3 总结

本文介绍了:

  1. 从相机坐标系转换到像素坐标系中,相机内参的作用
  2. 从世界坐标系转换到相机坐标系中,相机外参的作用

相机内参是这样的一个矩阵:

里面的参数一般都是相机出厂就定下来的,可以通过相机标定的方式人为计算出来。

相机外参是旋转矩阵R和平移向量t构成,一般来说写成:

这个矩阵决定了相机的位姿。

MVSNeRF:多视角立体图像的快速广义辐射场重建

MVSNeRF: Fast Generalizable Radiance Field Reconstruction
from Multi-View Stereo

https://github.com/apchenstu/mvsnerf

提出了一种新的神经渲染方法neural rendering approach  MVSNeRF,它可以有效地重建用于视图合成的神经辐射场。与先前关于神经辐射场的工作不同,这些工作考虑对密集捕获的图像进行逐场景优化,我们提出了一种通用的深度神经网络,该网络可以通过快速网络推理仅从三个附近的输入视图重建辐射场。我们的方法利用平面扫描成本体plane-swept cost volumes(广泛用于多视图立体multi-view stereo)进行几何感知场景推理,并将其与基于物理的体渲染相结合进行神经辐射场重建。我们在DTU数据集中的真实对象上训练我们的网络,并在三个不同的数据集上测试它以评估它的有效性和可推广性generalizability我们的方法可以跨场景(甚至室内场景,完全不同于我们的对象训练场景)进行推广generalize across scenes,并仅使用三幅输入图像生成逼真的视图合成结果,明显优于目前的广义辐射场重建generalizable radiance field reconstruction工作。此外,如果捕捉到密集图像dense images are captured,我们估计的辐射场表示可以容易地微调easily fine-tuned;这导致快速的逐场景重建fast per-scene reconstruction,比NeRF具有更高的渲染质量和更少的优化时间。

我们利用最近在深度多视图立体(MVS)deep multi- view stereo (MVS)上的成功[50,18,10]。这一系列工作可以通过对成本体积应用3D卷积applying 3D convolutions on cost volumes来训练用于3D重建任务的可概括的神经网络。与[50]类似,我们通过将来自附近输入视图的2D图像特征(由2D CNN推断)扭曲warping到参考视图的平截头体中的扫描平面上sweeping planes in the reference view’s frustrum,在输入参考视图处构建成本体。不像MVS方法[50,10]仅在这样的成本体积上进行深度推断depth inference,我们的网络推理关于场景几何形状和外观reasons about both scene geometry and appearance,并输出神经辐射场(见图2),实现视图合成。具体来说,利用3D CNN,我们重建(从成本体)神经场景编码体neural scene encoding volume,其由 编码关于局部场景几何形状和外观的信息的每个体素神经特征per-voxel neural features 组成。然后,我们利用多层感知器(MLP)在编码体积encoding volume内使用三线性插值神经特征tri-inearly interpolated neural features来解码任意连续位置处的体积密度volume density和辐射度radiance。本质上,编码体是辐射场的局部神经表示;一旦估计,该体积可以直接用于(丢弃3D CNN)通过可微分射线行进differentiable ray marching(如在[34]中)的最终渲染。

我们的方法结合了两个世界的优点,基于学习的MVS和神经渲染。与现有的MVS方法相比,我们实现了可微分神经渲染differentiable neural rendering,允许在没有3D监督和推理时间优化的情况下进行训练,以进一步提高质量。与现有的神经渲染作品相比,我们的类MVS架构可以自然地进行跨视图对应推理cross-view correspondence reasoning,有利于推广到未知的测试场景,也导致更好的神经场景重建和渲染。因此,我们的方法可以明显优于最近的并行可概括NeRF工作concurrent generalizable NeRF work[54,46],该工作主要考虑2D图像特征,而没有明确的几何感知3D结构(参见表。1和图4)。 我们证明,仅使用三个输入图像,我们从DTU数据集训练的网络可以在测试DTU场景上合成照片级逼真的图像,甚至可以在具有非常不同的场景分布的其他数据集上生成合理的结果。此外,我们估计的三个图像辐射场(神经编码体积)可以在新的测试场景上进一步轻松优化,以在捕获更多图像的情况下改善神经重建,从而产生与每个场景过拟合NeRF相当甚至更好的照片级逼真结果,尽管我们的优化时间比NeRF少得多。

该方法利用深度MVS的成功,在成本体上应用3D卷积来训练用于3D重建任务的可泛化神经网络。与MVS方法不同的是,MVS方法仅对这样的成本体进行深度推断,而该网络对场景几何和外观进行推理,并输出神经辐射场,从而实现视图合成。具体而言,利用3D CNN,重建(从成本体)神经场景编码体,由编码局部场景几何和外观信息的体素神经特征组成。然后,多层感知器(MLP)在编码体内用三线性插值的神经特征对任意连续位置处的体密度和辐射度进行解码。本质上,编码体是辐射场的局部神经表征;其一旦估计,可直接用于(丢弃3D CNN)可微分光线行进(ray-marching)进行最终渲染。

与现有的MVS方法相比,MVSNeRF启用可微分神经渲染,在无3D监督的情况下进行训练,并优化推断时间,以进一步提高质量。与现有的神经渲染方法相比,类似MVS的体系结构自然能够进行跨视图的对应推理,有助于对未见测试场景进行泛化,引向更好的神经场景重建和渲染。

如图1是MVSNeRF的概览:(a)基于摄像头参数,首先将2D图像特征warp(单应变换)到一个平面扫描(plane sweep)上,构建成本体;这种基于方差的成本体编码了不同输入视图之间的图像外观变化,解释了由场景几何和视图相关明暗效果引起的外观变化;(b)然后,用3D CNN重建逐体素神经特征的一个神经编码体;3D CNN 是一个3D UNet,可以有效地推断和传播场景外观信息,从而产生有意义的场景编码体;注:该编码体是无监督预测的,并在端到端训练中用体渲染进行推断;另外,还将原图像像素合并到下一个体回归阶段,这样可恢复下采样丢失的高频;(c)用MLP,通过编码体插值的特征,在任意位置回归体密度和RGB辐射度,这些体属性由可微分光线行进做最终的渲染。