内容一览:继 DALL-E、ChatGPT 之后,OpenAI 再发力,于近日发布 Point·E,可以依据文本提示直接生成 3D 点云。
关键词:OpenAI 3D 点云 Point·E
OpenAI 年底冲业绩,半个多月前发布的 ChatGPT 广大网友还没玩明白,近日又悄么发布了另一利器--可以依据文本提示,直接生成 3D 点云的 Point·E。
3D 建模想必大家都不陌生,近年来,在电影制作、视频游戏、工业设计、VR 及 AR 等领域中,都可以看到 3D 建模的影子。
然而,借助人工智能创建逼真的 3D 图像,仍然是一个耗时耗力的过程,以 Google DreamFusion 为例,给定文本生成 3D 图像通常需要多个 GPU、运行数小时。
给定一个描述,DreamFusion 生成高保真 3D 物体
通常意义上,文本到 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 点云的转换。
原理解析:3 步生成 3D 点云
Point·E 中,text-to-image 模型利用了大型语料库 (text, image pair),使其对复杂的文本提示也能处理得当;image-to-3D 模型则是在一个较小的数据集 (image, 3D pair) 上训练的。
用 Point·E 依据文本提示生成 3D 点云的过程分为三个步骤:
1、依据文本提示,生成一个合成视图 (synthetic view)
2、依据合成视图,生成 coarse point cloud (1024 point)
3、基于低分辨率点云和合成视图,生成 fine point cloud (4096 Point)
Point·E 流程概览
由于数据格式和数据质量对训练结果影响巨大,Point·E 借助 Blender,将所有训练数据都转换为了通用格式。
Blender 支持多种 3D 格式,并配有优化的渲染 engine。Blender 脚本将模型统一为一个 bounding cube,配置一个标准的 lighting 设置,最后使用 Blender 内置的实时渲染 engine 导出 RGBAD 图像。
"""
Script to run within Blender to render a 3D model as RGBAD images.
Example usage
blender -b -P blender_script.py -- \
--input_path ../../examples/example_data/corgi.ply \
--output_path render_out
Pass `--camera_pose z-circular-elevated` for the rendering used to compute
CLIP R-Precision results.
The output directory will include metadata json files for each rendered view,
as well as a global metadata file for the render. Each image will be saved as
a collection of 16-bit PNG files for each channel (rgbad), as well as a full
grayscale render of the view.
"""
Blender 脚本部分代码
通过运行脚本,将 3D 模型统一渲染为 RGBAD 图像
完整脚本详见:
https://github.com/openai/point-e/blob/main/point_e/evals/scripts/blender_script.py
近两年来,涌现了众多关于 text-to-3D 模型生成的相关探索,Google、NVIDIA 等大厂也纷纷推出了自己的 AI。
我们收集汇总了 3 个 text-to-3D 合成的 AI,供大家横向对比差异。
DreamFields
发布机构:Google
发布时间:2021 年 12 月
项目地址:https://ajayj.com/dreamfields
DreamFields 结合了神经渲染 (neural rendering) 与多模态图像及文本表征,仅依据文本描述,就可以可以在没有 3D 监督的情况下,生成各种各样 3D 物体的形状和颜色。
DreamFields 从 4 个视角分别渲染的示例
DreamFields 生成 3D 物体的过程中,借鉴了在大型文本图像数据集上预训练过的 image-text model,并对源自多视角的 Neural Radiance Field 进行了优化,这使得预训练 CLIP 模型渲染的图像,在目标文本下取得了良好的效果。
DreamFusion
发布机构:Google
发布时间:2022 年 9 月
项目地址:https://dreamfusion3d.github.io/
DreamFusion 可以借助预训练 2D text-to-image diffusion model,实现 text-to-3D synthesis。
DreamFusion 引入了一个基于概率分布蒸馏 (probability density distillation) 的 loss,使 2D diffusion model 能够作为参数图像生成器 (parametric image generator) 优化的 prior。
输入文本提示
a DSLR photo of a peacock on a surfboard
DreamFusion 生成 3D 物体
通过在与 DeepDream 类似的程序中应用该 loss,Dreamfusion 优化了一个随机初始化的 3D 模型(一个 Neural Radiance Field 或者 NeRF),通过梯度下降法使其从随机角度的 2D 渲染达到一个相对较低的 loss。
Dreamfusion 不需要 3D 训练数据,也无需修改 image diffusion model,证明了预训练 image diffusion model 作为 prior 的有效性。
Magic3D
发布机构:NVIDIA
发布时间:2022 年 11 月
项目地址:deepimagination.cc/Magic3D/
Magic3D 是一个 text-to-3D 内容的创建工具,可用于创建高质量的 3D mesh model。利用 image conditioning 技术以及基于文本提示的编辑方法,Magic3D 提供了控制 3D 合成的新方法,为各种创意应用开辟了新的途径。
Magic3D 结构概述
以 coarse-to-fine 的方式
依据输入的文本提示,生成高分辨率的 3D 内容
过程包括两个阶段:
阶段 1:使用低分辨率的 diffusion prior 获得一个 coarse model,并用 hash grid 和 sparse acceleration structure 进行加速。
阶段 2:使用从粗略神经表征 (coarse neural representation) 初始化的 textured mesh model,通过高效的可微分渲染器与高分辨率的 latent diffusion 模型交互进行优化。
text-to 3D 的 AI 陆续面世,但基于文本生成 3D 合成尚处于早期发展阶段,业内还没有一套公认的 Benchmark,能用来更公正地评估相关任务。
Point·E 对于 fast text-to 3D 合成而言,具有重大意义,它极大提升了处理效率,降低了算力消耗。
但不可否认,Point·E 仍然具有一定的局限性,比如 pipeline 需要合成渲染,生成的 3D 点云分辨率较低,不足以捕捉细粒度的形状或纹理等。
关于 text-to 3D 合成的未来,你怎么看?未来的发展趋势又会怎样?欢迎评论区留言讨论。