裸眼3D相关产品

随着AIGC等前沿技术的迅速发展,互联网正在逐步从2D转向3D,我们正在迎来一个体验升维的新时代。除了“人戴眼镜”的XR、元宇宙设备,联想也在探索“屏戴眼镜”的裸眼3D技术。这种技术使用户无需佩戴任何额外设备,就能体验到真实的3D效果。基于联想研究院的低延时双眼追踪、跨应用3D渲染引擎,以及业界首个支持4K超高清的实时2D内容转3D等技术,联想推出了全球首款27英寸4K裸眼3D显示器,并在1月份的国际消费电子展(CES)上进行了展示,持续引领下一代设备创新潮流。联想的裸眼3D显示引擎代表着当今显示技术的一个重要创新趋势,它以尖端的裸眼3D显示技术作为核心,创新性地构建了一个全面的3D系统级显示空间。这一技术的核心在于其能够无缝整合包括自主研发的实时高清2D转3D应用和跨应用渲染显示应用在内的一些列应用生态,从而使用户能够沉浸在一个逼真的3D环境中,体验3D世界中的生态内容

通过联想的这一革命性技术,用户能够体验到前所未有的3D视觉效果,无论是观看电影、玩游戏还是进行专业级的设计工作,都能获得更加立体和真实的感觉。此外,联想裸眼3D技术及解决方案能够支持丰富的3D生态资源,为用户提供广泛的3D内容选择,不仅增强了娱乐体验,也为专业应用,如教育、医疗和工业设计等领域开启了新的可能性。

值得一提的是,联想的裸眼3D显示技术及解决方案也具有很高的易用性。它能够智能识别用户的观看习惯,能够根据不同的观看角度和距离,实时调整3D效果,从而确保最佳的视觉体验。联想裸眼3D显示产品及技术解决方案的推出,不仅展示了联想在显示技术领域的创新实力,也为整个3D显示行业的发展开辟了新的道路。

相关链接:https://mp.weixin.qq.com/s/iYxyyWJfroIvbOPDg4AY1g

https://mp.weixin.qq.com/s/P52TiW0WM9rQtBe4nLMiiA

Real-Time Radiance Fields for Single-Image Portrait View Synthesis 论文

选自SIGGRAPH 2023实时渲染领域论文。文章实现了最新的单图像实时合成三维视角的技术。

论文题目:Live 3D Portrait: Real-Time Radiance Fields for Single-Image Portrait View Synthesis
论文链接:https://research.nvidia.com/labs/nxp/lp3d/

Paper PDF

本文提出了从单张图像实时推理渲染照片级 3D 表示的单样本方法,该方法给定单张 RGB 输入图像后,编码器直接预测神经辐射场的规范化三平面表示,从而通过体渲染实现 3D 感知的新视图合成。该方法仅使用合成数据进行训练,通过结合基于 Transformer 的编码器和数据增强策略,可以处理现实世界中具有挑战性的输入图像,并且无需任何特殊处理即可逐帧应用于视频。

INTRODUCTION

随着NeRF的提出,三维视觉技术得到快速的发展。三维重建也是非常有意义的工作,其中,单张肖像实现实时三维视角的合成将推动AR、VR、3D远程会议的发展。

基于此,作者提出了该技术的最新方法,该技术的原文表述是infer and render a photorealistic 3D representation from a single unposed image (e.g., face portrait) in real-time.

先来看现有的方法,一般用NeRF+GANs实现3D感知图像生成。其中比较有名的一项技术是EG3D,EG3D的提出者也是本论文的共同作者之一,本文的工作是在EG3D的基础上展开的。

EG3D提出了一种高效的三平面3D表示(triplane 3D representation)(具体细节会在后续给出),并且能够达到与2D GANs相同的实时渲染质量。训练完成后,测试时微调(test-time fine tuning)完成单图像三维重建。但这种方法会有一些问题:

  • NeRF的训练通常需要优化目标(careful optimization objectives)和3D先验(additional 3D priors)
  • 测试时优化需要准确的相机姿态作为输入或优化相机姿态
  • 上述两点优化时耗时的,限制了实时应用

与以往重复使用预训练的generator不同,本篇论文训练了一个端到端的编码器(encoder end-to-end)用于直接从单个输入图像预测三平面3D特征。与以往依赖于多视图真实图像的采集相比,本文不需要获取真实图像,也不需要PBR(physically-based rendering)绘制那样耗时。相反,作者使用预训练的3D GAN生成的多视图一致的合成数据来监督三平面编码器,以便进行新视图合成,再结合数据增强策略和基于Transformer的编码器搭建好模型。在文章中作者展示了对人脸和猫脸三维重建的结果,但作者表示任何3D感知图像generator适用的类别,该模型同样适用。

概括下文章的工作贡献:

  1. 提出了一种前馈编码器模型,直接从输入图像推断三平面3D表示。不需要测试时优化。
  2. 提出了一种新的策略,仅使用从预训练的3D感知图像生成器生成的合成数据
  3. 结合基于Transformer的编码器和实时增强策略,该方法可以处理具有挑战性的输入图像。

2. RELATED WORK

2.1 Light Fields and Image-Based Rendering

传统的方法要么需要许多视图样本,要么需要光场相机作为训练数据。最近提出的NeRF结合3D隐式表示,运用体渲染的方式合成视图,但仍需要大量输入照片。

2.2 Few-shot novel view synthesis

最近一些扩展NeRF的工作用3D隐式表示完成了单图像合成,用到3D卷积、Transformers 等方法。但是这些方法都不是实时生成新视图的,并且都需要多视图图像来训练模型。而作者的方法只需要从预先训练的3D GAN生成的合成图像,这种3D GAN是由单视图图像的集合训练的。

2.3 Learning with synthetic data

当没有基准真实数据(ground truth data )时,合成数据为训练深度学习模型提供了有用的监督。这往往还需要额外的步骤来适应真实图像。

2.4 3D-aware portrait generation and manipulation

最近,3D感知图像生成方法开始解决从单视图2D图像集合中无条件生成逼真的3D表示的问题。结合神经体积渲染(neural volumetric rendering)和生成对抗网络(GANs),最新的3D GAN方法能够生成高分辨率多视图一致图像。作者采用EG3D 的三平面3D表示,实现单视图新视图合成。

2.5 3D GAN inversion

GAN inversion在2D领域取得很大进展,现有的3D GAN inversion方法将给定的图像投影到预训练的StyleGAN2 latent space上,并且在测试时需要摄像机姿态( approximate camera pose )和生成器权重微调( generator weight tuning),以重建域外输入图像。与同时期的工作不同,作者的前馈编码器将未定位的图像作为输入,并且不需要针对摄像机姿态的测试时优化。

2.6 Talking-head generators

给出单个目标肖像和驱动视频,这种Talking-head生成方法主要通过视频数据集训练,侧重于通过操纵2D肖像中的头像姿势和表情来生成talking-head视频。因此,这种方法不预测视点渲染的体积表示和三维几何信息。所以不予比较。

3. PRELIMINARIES: TRIPLANE-BASED 3D GAN

NeRF采用完全隐式的表示,使用神经网络来表示整个三维空间的辐射场,但计算往往需要花费大量时间。首先,对前沿的3D GAN方法EG3D进行概述。EG3D从单视图图像集合和相应的噪声相机姿势中学习3D感知图像生成,EG3D使用混合三平面表示来调节神经体积渲染过程,其中三个典型平面 ��,��,�� 都存储了三个2D特征网格 (feature grids)。使用StyleGAN2生成器,EG3D将噪声向量和相机姿势映射到三平面表示 �∈R256×256×96,对应于3个轴对齐的平面,每个平面具有32个通道。这些特征调节神经体积渲染。

Our hybrid explicit–implicit tri-plane representation (c) is fast and scales efficiently with resolution, enabling
greater detail for equal capacity.

简而言之,将特征存储在正交的三平面(triplane)表示中,通过特征值叠加计算出特定空间点的颜色、体积密度,通过NeRF进行训练,训练得到的参数也保存在三平面表示中。

4. METHOD

作者的目标是将EG3D生成模型的信息提炼到一个前馈编码器的pipline中,这可以直接将未定位的图像映射到一个规范的三平面3D表示,这里的规范表示,对于人脸,头部的中心是原点。该pipline仅需要单次前馈网络传递,从而避免了花销大的 GAN inversion过程,同时允许实时重新渲染输入的任意视点。

作者的工作主要集中在图像到三平面编码器和相关的合成训练方法上,使用EG3D的MLP体积渲染器和超分辨率架构,端到端地训练所有组件。下图是整个模型的推理和训练部分,是文章的重点。

图3图 2:推理和训练管线。在推理阶段,我们以单张图像作为输入,使用 DeepLabV3 提取低分辨率特征。这些特征经过 ViT 和卷积输出,与高分辨率特征串联,再通过 ViT 和卷积解码为三平面表示,从而为体渲染过程提供条件,生成深度、特征、颜色和超分辨率图像。在训练阶段,我们从 EG3D 中采样一个身份,渲染两个监督视图。第一个视图作为编码器输入,预测三平面,然后根据这两个视角进行体渲染,并将渲染结果与 EG3D 的结果进行比较优化。

我们的目标是将训练好的 EG3D 生成模型知识蒸馏至前馈编码管线,该管线只需一次前馈网络传播即可将单张图像直接映射为规范的三平面 3D 表示,同时允许对输入在自由视角下进行实时渲染。我们的贡献集中于图像到三平面编码器和相关的合成数据训练方法。我们使用 EG3D 中的 MLP 体渲染器和超分辨率架构,并对所有组件进行端到端的训练。

TensoRF-将体素网格分解为向量-平面 张量积形式的低秩张量之和

TensoRF: Tensorial Radiance Fields 是2022 年ECCV上的论文

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

源码地址:https://github.com/apchenstu/Te

主页: https://apchenstu.github.io/TensoRF/

张量辐射场是一种新颖的建模和重建辐射场的方法。跟NeRF使用多层感知机隐式建模场景表达的方式不同,TensoRF将场景建模为一个四维的张量,张量中的每一项代表了一个体素,体素内包含了体积密度和多维的特征信息。论文的中心思想是使用张量分解技术,将4D张量分解成多个低秩的张量分量,以小见大

从上图中可以看出,张量辐射场可以达到:

1. 更好的质量

2. 更快的速度

3. 更小的模型体积

张量辐射场除了渲染质量更好之外,与同时期使用体素方式的研究相比占用更少的内存使用。张量辐射场在30分钟内就可以完成重建,并且模型的大小小于4M,这比NeRF更快,以及更小巧。使用VM分解方式的可以达到10分钟的时间,以及更好的质量,模型大小小于75M。TensoRF是第一个从张量的角度来看待辐射场建模,并提出了辐射场重建作为一个低秩张量重建的问题

EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks

https://nvlabs.github.io/eg3d/

将三维坐标对应的体素特征定义为三个正交投影平面的特征

目前的3D GAN要么过于计算密集型,要么缺少多视图一致性,该方法加强了计算效率并且提升了重建质量。使用了显式-隐式结构,不仅生成多视角一致性图片,还能生成高质量3D几何。通过解耦feature generation和neural rendering,该架构就可以用上SOTA的2D CNN生成器比如styleGAN2。

使用单视角2D图片集,无监督地生成高质量且视角一致性强的3D模型,一直以来都是一个挑战。现存的3D GANs要不计算量巨大,要不无法保证3D-consistent。前者限制了生成图片的质量,后者无法解决视角一致性的问题。这篇工作提出的新网络架构,能又快又好地生成3D geometry。

这篇工作提出了两个方法。首先,作者用显隐混合的方法,提高了时空效率,并有较高的质量。第二,提出了dual-discrimination策略,保证了多视角一致性。同时,还引入了pose-based conditioning to the generator,可以解耦pose相关的参数,保证了输出的视角一致性,同时忠实地重建数据集隐含的pose-correlated参数。

同时,这个框架能解耦特征生成和神经渲染,从而可以直接使用SOTA的2D GANs,比如StyleGAN2。

contribution

  • 引入一个基于三平面的3D GAN架构,计算效率高而且效果质量好
  • 提出一个3D GAN训练策略,通过dual discrimination和generator pose conditioning加强多视角一致性,建模出位置相关的属性分布(比如表情等)
  • 在FFHQ和AFHQ上有最佳的非条件3D感知视图合成结果,生成高质量3D几何

Tri-Plane Hybrid 3D Representation

我们需要一种高效且表达力强的3D表示方法,来训练高分辨率的GAN。

这里以单场景过拟合(SSO)来证明三平面表示法的有效性。

每个平面都是N×N×C的,其中C是通道数。

每次查询一个3D坐标x∈R3,将其投影至每个平面上,用双线性插值得到3个特征向量Fxy,Fxz,Fyz

将这3个特征向量累加后,通过一个轻量级的decoder,也就是一个小型MLP,输出RGB和Density

再用volume rendering得到最终图像

这样做的好处是,decoder规模很小,赋予了显式表示更强的表达能力,并减小了计算压力。

在新视角合成的实验上,三平面紧凑而富有表达力,以更低的计算成本,得到了更好的表现,三平面的时空成本是O(N2)的,而voxel是O(N3)的,最重要的是,用2D GANs生成planes,就能得到3D表示。对比NERF,通过显式的投影降低了计算复杂度同时没有减少表达性能。做了个对比实验,baseline是mip-nerf和voxel grid,这里的tri-plane实验中的MLP用了傅里叶feature编码。在同样地内存消耗下运算更快,在同样地结构下速度快且内存消耗少。

Pipeline

CNN Generator Backbone & Rendering

三平面的特征,是由StyleGANA生成的,同时Latent Code和相机参数会输入Mapping Network,生成一个Intermediate Latent Code

StyleGAN2被修改后,输出256×256×96256×256×96的特征图,之后被reshape成32通道的平面

接着从三平面采样,累加后,通过轻量级decoder,生成density和32通道的特征,然后由neural volume renderer生成2D特征图(而非RGB图)

Super Resolution

三平面仍不足以直接生成高分辨率图,因此添加了超分模块

使用了2个StyleGAN2的卷积层,上采样并优化32通道特征图,得到最终的RGB图像

Dual Discrimination

对StyleGAN2的discrimination做了两个修改

首先,添加Dual Discrimination以保证生成图片的视角一致性,即保证原始图片(低分辨率生成的)和超分后的图片的一致性,将低分辨率图片直接双线性上采样后,和超分图片concat形成6通道图片,真实图片也模糊后的自己拼接,也形成6通道图片,进行判别。

这样做,不仅能encourage最终输出和真实图片的分布匹配,也让神经渲染器尽可能匹配下采样的真实图片,并让超分图片和神经渲染保持一致。

其次,作者对discriminator输入了相机内外参,作为一个conditioning label,从而让generator学到正确的3D先验。

Modeling Pose-Correlated Attributes

真实世界数据集如FFHQ,相机姿态与其他参数(如表情)有关联

比如,相机角度与人是否微笑是有关系的,这会导致生成结果视角不一致

因此,为了更好的生成质量,需要将这些参数与相机姿态解耦

这篇工作使用了Generator Pose Conditioning解耦pose和其他参数

Mapping Network不仅接受Latent Code,还接受相机参数做为输入

给予backbone相机姿态作为先验,从而让视角可以和生成产生联系

也就是说,generator可以建模数据集中隐式的pose dependent biases,更忠实地反映数据集特征

为了避免在渲染时因相机移动产生视角不一致,在渲染时保持generator输入的相机参数不变

ICCV’23|全场景单目深度绝对距离估计

作者丨尹炜  转自丨极市平台

本文提出了一个统一相机空间(canonical camera space)变换模块,明确解决了尺度模糊性问题,并且可以轻松地嵌入到现有的单目模型中。配备了论文的模块,单目模型可以在800万张图像和数千个相机模型上稳定地训练,从而实现了对室外图像的零样本泛化,其中包含未见过的相机设置。该论文所提方法也是第二届单目深度估计挑战中的冠军方案,在比赛的各个场景上都排第一。

Arxiv: https://arxiv.org/abs/2307.10984

Github: https://github.com/YvanYin/Metric3D

大家好,在这里给大家分享一下我们最近被 ICCV2023 接受的工作《Metric3D: Towards Zero-shot Metric 3D Prediction from A Single Image》。如何从单张图像恢复出绝对尺度的深度,并且重建出带有绝对尺度的3D场景是一个长期待解决的问题。当前最先进的单目深度估计具体分为两类:

第一类方法的目标是恢复准确的绝对深度,但是这一类的方法泛化性比较差,只能处理单个相机模型,并且由于不同相机存在尺度模糊性,导致无法执行混合数据训练来提升域泛化性。第二类方法针对性解决深度模型的零样本泛化问题,如LeReS/MiDaS/DPT/HDN等文章的方法,经过大规模混合数据集训练,并约束模型只学习相对深度。因此,该类方法都没法恢复绝对尺度。

在这项工作中,论文表明零样本单目度量深度估计的关键在于大规模数据训练以及解决来自各种相机模型的尺度模糊性。论文提出了一个统一相机空间(canonical camera space)变换模块, 明确解决了尺度模糊性问题,并且可以轻松地嵌入到现有的单目模型中。配备了论文的模块,单目模型可以在800万张图像和数千个相机模型上稳定地训练,从而实现了对室外图像的零样本泛化,其中包含未见过的相机设置。

下图(论文首页图)通过两个下游的应用,即SLAM和物体测量,来展示了针对零样本的泛化性以及尺度恢复的准确性。可以看出测量的结构尺寸和GT非常接近。值得注意的是,mono-slam系统通过引入预测的深度,能够消除scale drift的问题,并且slam系统能够实现metric mapping.

主要贡献:

  1. 提出了一种标准空间相机变换(canonical camera space transformation)和对应的逆变换(de-canonical camera space transformation)方法来解决来自不同相机设置的深度尺度模糊性问题。这使得论文方法可以从大规模数据集中学习强大的零样本(zero-shot)单目度量深度模型;
  2. 在模型训练过程中,论文还提出了一种随机提议正则化损失函数,有效提高了深度准确性;
  3. 论文方法在第二届单目深度估计挑战中获得了冠军,在比赛的各个场景上都排第一。
  4. 论文的模型在7个零样本基准测试上达到了最先进的性能。它能够在户外进行高质量的3D度量结构恢复,并且在几个下游任务中受益,如单目SLAM、3D场景重构和测量学。

CVPR2023挑战赛结果:

方法:

1.什么是尺度模糊性?

论文针对混合数据中的尺度模糊性做了详细的讲解。如下图所示:

上图通过一个简单的例子来说明什么是尺度的模糊性。 不同相机在不同距离下拍摄的照片示例。仅从图像内容来看,人们可能会认为最后两张照片是由同一个相机在相似的位置拍摄的。但实际上,由于拍摄图片采用了不同焦距的相机,这些照片是在不同的位置拍摄的。因此,相机的内部参数的变化导致了尺度的不确定性。对于从单张图像估计度量是至关重要的,否则问题就是不适定的。

2.什么影响深度的预测?

针对相机的传感器尺寸、像素的大小、还有相机的焦距,论文有如下观察。

2.1 传感器尺寸和像素大小不会影响度量深度估计

如下图所示,当用不同像素大小的相机拍摄同一个物体时候,虽然像元大小不同,物体在图像的分辨率不同,但是距离是一致的。因此,不同的摄像机传感器不会影响度量深度的估计。此外,传感器的尺寸只是影响了图像拍摄的视野,因此也不会影响深度的估计。

2.2 焦距对于深度估计的准确性非常重要

如下图所示,由于焦距不同,不同距离的物体在相机上的成像大小相同,在网络训练的时候,相似的图像,但是标签却不一致,就导致了一对多的标签映射,因此会导致网络混淆,影响训练。

3.方法的pipeline

方法的pipeline如下图所示。

本文提出了2种训练方法。两种方法都可以很容易的嵌入到当前任意的单目深度估计的框架中。整个方法的核心思想就是建立一个标准相机空间��, 然后将所有的训练数据都映射到这个空间,那么,所有的训练数据都可以被看做是同一个相机拍摄的。论文提出了2种方法进行这种变换,一种是通过变换训练图像,另一种是变换变换GT label。详细如下:

方法1:将标签进行转换

深度的模糊性是针对深度的。因此,第一种方法直接通过转换ground truth深度标签来解决这个问题。在训练阶段,通过乘以一个缩放因子来转换深度标签。在推理阶段,预测的深度处于规范化空间,需要进行反规范化转换以恢复度量信息。

方法2:将输入图像转换

第二种方法是将输入图像转换为模拟规范相机成像效果。具体来说,在训练阶段训练图像根据焦距按比例缩放resize,相机光心也进行了调整,然后进行随机裁剪图像用于训练。在推理阶段,反规范化转换将预测深度调整回原始大小而不进行缩放。

4.监督

论文采用了各种约束。包括LeReS论文提出的pair-wise normal regression loss,VirtualNormal论文提出的虚拟法矢的loss,还有Scale-invariant Log loss。除此之外,该论文还提出了一种新的loss,叫随机提议标准化损失(RPNL)。尺度平移不变损失被广泛应用于仿射不变深度估计,但它会压缩细粒度深度差异,特别是在近距离区域。因此,论文从真值深度和预测深度中随机裁剪若干小块,然后采用中位绝对偏差标准化对它们进行处理。这样,可以增强局部对比度。整体loss如下。

�=�PWN+�VNL+�silog +�RPNL

实验

1.零样本泛化测试

以下的几个表格都是做的零样本泛化实验。其中表格1中,在NYU和KITTI上和当前在他们上fitting的SOTA方法做了对比,发现在不引入该数据做训练,模型就能够恢复出精确的尺度。表格3,论文做了更多的这种零样本泛化的对比,比较了6个数据集。

另外,论文与SOTA仿射不变深度估计方法在5个zero-shot基准上的比较。论文的模型明显优于以前的方法

2.下游应用实验

三维重建实验: 论文展示出,直接将预测的连续帧深度重建成点云,并与各类的方法做了对比,包括MVS的方法,放射不变形深度估计的方法,无监督深度估计的方法,videodepth 深度估计的方法等做了对比,发现整体重建精度上会更好。

SLAM实验: 在如下的表格中,论文的度量深度估计方法可以作为单目SLAM系统的强大深度先验。在KITTI数据集上,将论文的度量深度直接输入到最先进的SLAM系统Droid-SLAM中,结果显示论文的深度使得SLAM系统的性能显著提升。

在ETH3D SLAM数据集上,论文的深度同样带来了更好的SLAM性能,并且能够极大的缓解尺度漂移的问题。

从下图可以看出,droid-slam系统在输入预测的深度后,轨迹和GT更加接近,并且没有尺度漂移的问题,见下面第一个例子。

3.In-the-wild 测量实验

论文从Flickr下载了一些图片,通过从metadata中读取相机的像元大小以及焦距(以mm为单位),粗略估算出相机的焦距(以像素为单位),从而预测出metric depth,然后重建出点云。从点云中可以测量出一些结构的大小,发现和GT相差并不那么大。

4.更多的深度图展示:

总结

本文解决了从单目图像重构三维度量场景的问题。为了解决由不同焦距引起的图像外观深度不确定性,论文提出了一种规范化相机空间转换方法。使用论文的方法,可以轻松地合并由10,000个相机拍摄的数百万数据,以训练一个度量深度模型。为了提高鲁棒性,论文收集了超过800万数据进行训练。几个零样本评估展示了论文工作的有效性和鲁棒性。论文进一步展示了在随机收集的互联网图像上进行计量学测量以及在大规模场景上进行密集建图的能力。

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方法在动态场景上的量化结果对比

条件控制扩散模型

参考:https://www.zhangzhenhu.com/aigc/Guidance.html

无论是 DDPM 还是 DDIM,这些扩散模型在生成图片时,都是输入一个随机高斯噪声数据, 然后逐步的产出一张有意的真实图片。这个过程中每一步都是一个随机过程,所以每次执行产出的图片都不一样, 生成的图像多样性非常好。 但这也是一个缺点:生成的图像不可控,无法控制这个生成过程并令其生成我们想要的图像内容

鉴于此,很多研究中在如何控制图像生成过程方面提出了很多有效的方案。 直觉的讲,我们可以在扩散过程中引入额外的信息来指导或者说控制整个扩散模型, 假设这个额外的信息为 y,它可以是一段文本、一张图片或者图像的类别标签。 引入 y 之后的模型就变成了一个以 y 为条件的条件概率分布。

自然而然地,接下来就需要探讨,引入y 之后对前向扩散过程和逆向采用过程分别有什么影响,需要做出什么调整。 首先看下对前向扩散过程的影响,先说结论:引入 y 之后,对前向扩散过程没有任何影响。 其实,从直觉上讲,前向扩散过程是对原始图片加噪声,直至变成纯噪声,这个过程显然与 y没有任何关系。 但做研究要严谨,还是需要给出数学证明的。 证明过程在论文 1 中已经给出。

条件扩散模型的前向过程与非条件扩散模型的前向过程完全一样

1、classifier guidance

OpenAI 的团队在 2021 年发表一篇论文 1 : A. Diffusion models beat gans on image synthesis ,在这篇论文中,提出一种利用图片类别标签指导图像生成的方案,称为 classifier guidance, 通过这种改进使扩散模型生成图像的质量大幅提升,并在 IS 和 FID 评分上超过了 GAN 模型, 所以你看论文的名字,简单直接。

论文的源码在: https://github.com/openai/guided-diffusion 。

实际上这篇论文做了很多改进,比如对UNET也做了改进。但这里我们只关注 guidance 部分。 原论文的推导过程比较繁杂,这里我们采用另一篇文章 2 的推导方案, 直接从 score function 的角度去理解。

虽然引入 classifier guidance 效果很明显,但缺点也很明显:

  1. 需要额外一个分类器模型,极大增加了成本,包括训练成本和采样成本。
  2. 分类器的类别毕竟是有限集,不能涵盖全部情况,对于没有覆盖的标签类别会很不友好

后来《More Control for Free! Image Synthesis with Semantic Diffusion Guidance》推广了“Classifier”的概念,使得它也可以按图、按文来生成。Classifier-Guidance方案的训练成本比较低(熟悉NLP的读者可能还会想起与之很相似的PPLM模型),但是推断成本会高些,而且控制细节上通常没那么到位。

2、Classifier-free guidance

引导函数的方法存在一些问题:1)额外的计算量比较多;2)引导函数和扩散模型分别进行训练,不利于进一步扩增模型规模,不能够通过联合训练获得更好的效果。

  • 提出了一个等价的结构替换了外部的classifier,从而可以直接使用一个扩散模型来做条件生成任务。

实际做法只是改变了模型输入的内容,有conditional(随机高斯噪声+引导信息的embedding)和unconditional两种采样输入。两种输入都会被送到同一个diffusion model,从而让其能够具有无条件和有条件生成的能力。

3、CLIP Guidance

Radford, A., Kim, J. W., Hallacy, C., Ramesh, A., Goh, G., Agarwal, S., Sastry, G., Askell, A., Mishkin, P., Clark, J., Krueger, G., and Sutskever, I. Learning transferable visual models from natural language supervision. arXiv:2103.00020, 2021

Prafulla Dhariwal and Alex Nichol. Diffusion models beat gans on image synthesis. 2021. arXiv:2105.05233.[2](1,2)

Calvin Luo. Understanding diffusion models: a unified perspective. 2022. arXiv:2208.11970.[3]

Jonathan Ho and Tim Salimans. Classifier-free diffusion guidance. 2022. arXiv:2207.12598.[4]

Alex Nichol, Prafulla Dhariwal, Aditya Ramesh, Pranav Shyam, Pamela Mishkin, Bob McGrew, Ilya Sutskever, and Mark Chen. Glide: towards photorealistic image generation and editing with text-guided diffusion models. 2022. arXiv:2112.10741.[5]

Aditya Ramesh, Prafulla Dhariwal, Alex Nichol, Casey Chu, and Mark Chen. Hierarchical text-conditional image generation with clip latents. 2022. arXiv:2204.06125.[6]

Chitwan Saharia, William Chan, Saurabh Saxena, Lala Li, Jay Whang, Emily Denton, Seyed Kamyar Seyed Ghasemipour, Burcu Karagol Ayan, S. Sara Mahdavi, Rapha Gontijo Lopes, Tim Salimans, Jonathan Ho, David J Fleet, and Mohammad Norouzi. Photorealistic text-to-image diffusion models with deep language understanding. 2022. arXiv:2205.11487.

去噪扩散隐式模型(Denoising Diffusion Implicit Models,DDIM)

Paper: https://arxiv.org/abs/2010.02502

Code: https://github.com/ermongroup/ddim

摘自:扩散模型之DDIM

在 DDPM 中,生成过程被定义为马尔可夫扩散过程的反向过程,在逆向采样过程的每一步,模型预测噪声

DDIM 的作者发现,扩散过程并不是必须遵循马尔科夫链, 在之后的基于分数的扩散模型以及基于随机微分等式的理论都有相同的结论。 基于此,DDIM 的作者重新定义了扩散过程和逆过程,并提出了一种新的采样技巧, 可以大幅减少采样的步骤,极大的提高了图像生成的效率,代价是牺牲了一定的多样性, 图像质量略微下降,但在可接受的范围内。

对于扩散模型来说,一个最大的缺点是需要设置较长的扩散步数才能得到好的效果,这导致了生成样本的速度较慢,比如扩散步数为1000的话,那么生成一个样本就要模型推理1000次。这篇文章我们将介绍另外一种扩散模型DDIMDenoising Diffusion Implicit Models),DDIM和DDPM有相同的训练目标,但是它不再限制扩散过程必须是一个马尔卡夫链,这使得DDIM可以采用更小的采样步数来加速生成过程,DDIM的另外是一个特点是从一个随机噪音生成样本的过程是一个确定的过程(中间没有加入随机噪音)。

前提条件:1.马尔可夫过程。2.微小噪声变化。

步骤一:在DDPM中我们基于初始图像状态以及最终高斯噪声状态,通过贝叶斯公式以及多元高斯分布的散度公式,可以计算出每一步骤的逆向分布。之后继续重复上述对逆向分布的求解步骤,最终实现从纯高斯噪声,恢复到原始图片的步骤。

步骤二:模型优化部分通过最小化分布的交叉熵,预测出模型逆向分布的均值和方差,将其带入步骤一中的推理过程即可。

文章中存在的一个核心问题是:由于1.每个步骤都是马尔可夫链。2.每次加特征的均值和方差都需要控制在很小的范围下。因此我们不得不每一步都进行逆向的推理和运算,导致模型整体耗时很长。本文核心针对耗时问题进行优化,一句话总结:在满足DDPM中逆向推理的条件下,找到一种用 xt  x0 表达 xt−1 且能能大幅减少计算量的推理方式。

代码实现:

DDIM和DDPM的训练过程一样,所以可以直接在DDPM的基础上加一个新的生成方法(这里主要参考了DDIM官方代码以及diffusers库),具体代码如下所示:

class GaussianDiffusion:
    def __init__(self, timesteps=1000, beta_schedule='linear'):
     pass

    # ...
        
 # use ddim to sample
    @torch.no_grad()
    def ddim_sample(
        self,
        model,
        image_size,
        batch_size=8,
        channels=3,
        ddim_timesteps=50,
        ddim_discr_method="uniform",
        ddim_eta=0.0,
        clip_denoised=True):
        # make ddim timestep sequence
        if ddim_discr_method == 'uniform':
            c = self.timesteps // ddim_timesteps
            ddim_timestep_seq = np.asarray(list(range(0, self.timesteps, c)))
        elif ddim_discr_method == 'quad':
            ddim_timestep_seq = (
                (np.linspace(0, np.sqrt(self.timesteps * .8), ddim_timesteps)) ** 2
            ).astype(int)
        else:
            raise NotImplementedError(f'There is no ddim discretization method called "{ddim_discr_method}"')
        # add one to get the final alpha values right (the ones from first scale to data during sampling)
        ddim_timestep_seq = ddim_timestep_seq + 1
        # previous sequence
        ddim_timestep_prev_seq = np.append(np.array([0]), ddim_timestep_seq[:-1])
        
        device = next(model.parameters()).device
        # start from pure noise (for each example in the batch)
        sample_img = torch.randn((batch_size, channels, image_size, image_size), device=device)
        for i in tqdm(reversed(range(0, ddim_timesteps)), desc='sampling loop time step', total=ddim_timesteps):
            t = torch.full((batch_size,), ddim_timestep_seq[i], device=device, dtype=torch.long)
            prev_t = torch.full((batch_size,), ddim_timestep_prev_seq[i], device=device, dtype=torch.long)
            
            # 1. get current and previous alpha_cumprod
            alpha_cumprod_t = self._extract(self.alphas_cumprod, t, sample_img.shape)
            alpha_cumprod_t_prev = self._extract(self.alphas_cumprod, prev_t, sample_img.shape)
    
            # 2. predict noise using model
            pred_noise = model(sample_img, t)
            
            # 3. get the predicted x_0
            pred_x0 = (sample_img - torch.sqrt((1. - alpha_cumprod_t)) * pred_noise) / torch.sqrt(alpha_cumprod_t)
            if clip_denoised:
                pred_x0 = torch.clamp(pred_x0, min=-1., max=1.)
            
            # 4. compute variance: "sigma_t(η)" -> see formula (16)
            # σ_t = sqrt((1 − α_t−1)/(1 − α_t)) * sqrt(1 − α_t/α_t−1)
            sigmas_t = ddim_eta * torch.sqrt(
                (1 - alpha_cumprod_t_prev) / (1 - alpha_cumprod_t) * (1 - alpha_cumprod_t / alpha_cumprod_t_prev))
            
            # 5. compute "direction pointing to x_t" of formula (12)
            pred_dir_xt = torch.sqrt(1 - alpha_cumprod_t_prev - sigmas_t**2) * pred_noise
            
            # 6. compute x_{t-1} of formula (12)
            x_prev = torch.sqrt(alpha_cumprod_t_prev) * pred_x0 + pred_dir_xt + sigmas_t * torch.randn_like(sample_img)

            sample_img = x_prev
            
        return sample_img.cpu().numpy()

这里以MNIST数据集为例,训练的扩散步数为500,直接采用DDPM(即推理500次)生成的样本如下所示:

同样的模型,我们采用DDIM来加速生成过程,这里DDIM的采样步数为50,其生成的样本质量和500步的DDPM相当:

完整的代码示例见https://github.com/xiaohu2015/nngen

其它:重建和插值

如果从直观上看,DDIM的加速方式非常简单,直接采样一个子序列,其实论文DDPM+也采用了类似的方式来加速。另外DDIM和其它扩散模型的一个较大的区别是其生成过程是确定性的。

Claude2:ChatGPT的替代产品知识更新到23年,代码数学显著提升,免费可用

网址:https://claude.ai/chats

Anthropic是一家专注于人工智能(AI)研究的公司,由OpenAI的前首席科学家Ilya Sutskever和Dario Amodei共同创立。Claude是Anthropic公司发布的基于transformer架构的大语言模型,被认为是最接近ChatGPT的商业产品。

Claude模型可以在Slack中免费使用,一度是我们团队使用的ChatGPT的最强替代者,对中文支持很好,意图理解也非常优秀。Claude 2的发布应该会很快会在Slack中体现。本次也推出了Claude Chat网页版,完全免费,支持直接根据PDF总结结果(最高不超过10MB的文档,单词数应该是7.5万以内都可以)。

Claude模型介绍

Claude是Anthropic公司开发的一系列大型语言模型。这些模型使用了Transformer架构,并通过无监督学习、人类反馈强化学习(RLHF)进行训练。Claude模型可以理解和生成人类语言,用于各种任务,如回答问题、写作、编辑和编程。

大多数人使用Claude的感受应该都是它与ChatGPT很像,对意图的识别和文本的生成都有很好的支持。相比较免费版本的ChatGPT(训练数据在2021年9月之前),Claude模型中包含更多的最新数据,因此就免费版本来说,Claude更好。

Claude 2 在哪些方面得到了加强?

总的来说,Claude 2 注重提高以下能力:

  • Anthropic 致力于提高 Claude 作为编码助理的能力,Claude 2 在编码基准和人类反馈评估方面性能显著提升。
  • 长上下文(long-context)模型对于处理长文档、少量 prompt 以及使用复杂指令和规范进行控制特别有用。Claude 的上下文窗口从 9K token 扩展到了 100K token(Claude 2 已经扩展到 200K token,但目前发布版本仅支持 100K token)。
  • 以前的模型经过训练可以编写相当短的回答,但许多用户要求更长的输出。Claude 2 经过训练,可以生成最多 4000 个 token 的连贯文档,相当于大约 3000 个单词。
  • Claude 通常用于将长而复杂的自然语言文档转换为结构化数据格式。Claude 2 经过训练,可以更好地生成 JSON、XML、YAML、代码和 Markdown 格式的正确输出。
  • 虽然 Claude 的训练数据仍然主要是英语,但 Claude 2 的训练数据中非英语数据比例已经明显增加。
  • Claude 2 的训练数据包括 2022 年和 2023 年初更新的数据。这意味着它知道最近发生的事件,但它仍然可能会产生混淆。

该研究进行了一系列评估实验来测试 Claude 2 的性能水平,包括对齐评估和能力评估两部分。

在模型对齐方面,该研究针对大模型的三个关键要求做了具体评估,包括:遵循指令、生成内容有用(helpfulness);生成内容无害(harmlessness);生成内容准确、真实(honesty)。

Claude 2和之前的Claude模型都是通用的大型语言模型,使用Transformer架构。Claude 2是该公司迄今为止最强大的系统,它代表了从早期的“有用且无害”的语言助手模型到现在的连续演进。Claude 2并没有从先前模型和研究中带来变革性的变化,而是代表了一种连续的演变和一系列小而有意义的改进,这些改进建立在Anthropic过去2年多的研究基础之上。

Claude 2有几个非常重要的更新值得关注。

编码能力提升很大:

Claude 2在Codex HumanEval(一项Python编码测试)上的得分从56.0%提高到71.2%。官方的演示视频中,你可以直接上传一个代码文件(js库),然后Claude就可以自动分析代码并给出这个库的使用方法。

最高支持10万tokens的输入和4000个tokens的输出:

尽管很早之前Anthropic就生成Claude最高支持10万tokens的输入,但是一直没有发布。今天的Claude2宣布正式支持10万tokens的输入,并且可以一次性输出4000个tokens,大约3000多个单词。

这应该是目前最高的上下文限制了(超过GPT-4的32K)。

更新的训练数据

这一点比ChatGPT好,尽管付费版本的GPT-4支持插件方式来访问最新的数据。但是插件尤其是网络插件很多时候会出问题。而Claude2则是已经使用了2023年初的新数据来训练模型了。所以,模型本身对2023年之前发生的重要事情与内容应该都是知道的。

尽管ClaudeAI不支持插件。但是官方说,它是支持与搜索工具连接的,包括网络和数据库等。同时,也可以直接将文档发给Claude来分析

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 系数与高斯密度自适应控制的操作交织在一起。 我们方法效率的关键是基于图块的光栅化器,它允许各向异性图块的混合,通过快速排序尊重可见性顺序。 快速光栅化器还包括通过跟踪累积值的快速向后传递,而对可以接收梯度的高斯数量没有限制。 我们的方法的概述如上图所示。