找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 44|回复: 0

[软文] Taichi NeRF (下): 关于 3D AIGC 的务实探讨

[复制链接]
发表于 2023-9-10 23:37:34 | 显示全部楼层 |阅读模式 来自 浙江省温州市平阳县
  上一篇文章中,Taichi团队介绍了基于Taichi实现的NeRF在3D重建场景的应用(代码库):从多个视角的2D图片重建出3D内容。作为自然延伸,如果我们能够将NeRF与生成式AI(Generative AI,国内一般称为“AIGC”),或许可以将大红大紫的2D AIGC拓展到3D。目前这个问题并没有被很好地解决,除了一些学术论文以外,我自己也暂时没找到专门讨论这个问题的文章。

  因此,在系列的下篇,我想先聊聊(Taichi)NeRF在3D AIGC的应用以及其他团队的学术研究。随后,作为一个创业者,我会花更大的篇幅探讨一下3D AIGC在产品化和商业化的挑战和机遇。

  当然,关于3D数字资产的AIGC,大家都处于探索阶段,我们团队目前也只是浅浅尝试(产品在meshy.ai),还没有大投入去做,这样决策的具体的原因后面会分析到。所以,本文的定位更多是分享一些不成熟的早期想法,以讨论为主,很多问题目前我自己也没有答案。一些不足之处欢迎大家批评指正!

  选择一个好问题

  2D AIGC基本上只有一种选择:生成图片。但是3D资产比2D内容复杂,因为3D资产有很多种:模型、贴图、骨骼、(关键帧)动画等等。这里我们只考虑最主流的资产,也就是3D模型。而3D模型的表示又分为网格(Mesh)、体素(Voxel)、点云、SDF、甚至上文提到的NeRF等等。一旦考虑到实际落地到渲染管线中,基本上只有一种主流表示可以选择:Mesh。

  三角网格。这个模型没有带贴图,所以看着是灰色,也就是下文提到的“白模”。

  从CG工作流程来看,从文字生成3D模型分两步:

  AI建模:给定文字输入,产出3D白模(即无贴图的模型);

  AI画贴图:给定文字和白模,画上diffuse贴图或者PBR贴图组合(base color,metallic,roughness等)。

  从工业生产可控性的角度来说,用户会希望两步能够分离。而在学术界,大家更喜欢一步到位,对于可控性和PBR追求不高。

  Part I.学术研究

  学术界通常不太考虑AI建模和AI贴图的分离,往往会一步到位,输入文字,得到带贴图的3D模型。这部分工作有两个“流派”,下面我简单梳理一下。

  注意这部分不是文献综述,我也没有花大量的时间去调研全部工作,远达不到学术论文“Related work”的标准。不过如果有什么特别有意思的工作我看漏了,还请大家在评论区留言讨论~

  “原生3D派”

  这一流派的特点是直接在ShapeNet等3D数据集上进行训练,从训练到推理都基于3D数据。一些有趣的工作如下:

  3D-GAN是NIPS 2016比较经典的早期工作了。比较直观,就是GAN的3D版本,以voxel为单位,生成3D模型。用ShapeNet dataset,输入是一个Gaussian noise,2016年的时候还没实现text conditioning。

  3D GAN的原理和生成效果

  GET3D:通过differentiable rasterizer(NVDiffRast)加上类似GAN的架构,分别生成mesh和texture,质量看起来也挺不错的,后面也会提到differentiable rasterizer会是3D AIGC很重要的基础算法。

  GET3D训练架构。

  这一类基于3D数据的工作还包括TextCraft(实现了text conditioning)、AutoSDF、MeshDiffusion等等。这类方法生成速度往往较快,但是也有比较直接的问题:由于3D数据集往往相对LAION等巨型数据集都小至少3个数量级(后续有讨论),这一类方法比较难实现数据多样性。比如说,生成数据集中存在的汽车、家具、动物等完全没问题,但是生成需要“想象力”的模型,比如“一只骑在马背上的兔子”、“带着皇冠的鹦鹉”、“手持大锤、生气的牛头怪”等,就比较有挑战了。由于Stable Diffusion等2D AIGC模型的想象力完全可以描述后者,用户自然也会期待在3D空间的AIGC也能做到类似的效果:给出各种奇奇怪怪的文字,AI能够得到高质量的3D模型。这种“想象力”(本质上是在多样的训练数据集中插值)是AIGC的核心价值所在,但是目前3D数据集却较难提供。

  “2D升维派”

  既然3D数据集无法满足数据多样性的要求,不妨曲线救国,借助2D生成式AI的想象力,来驱动3D内容的生成。这个流派的工作在最近乘着Imagen、Stable Diffusion等2D AIGC基础模型的突破取得了很多进展,因此本文着重讨论。

  OpenAI Point·E论文链接)只需要1-2分钟就可以在单块GPU上生成点云。第一步是以文字为输入,用2D diffusion模型(选择了GLIDE)生成一张图片,然后用3D点云的diffusion模型基于输入图片生成点云。

  Point-e的算法和生成的效果

  DreamFusion:很有意思的工作,大体思路是通过2D生成模型(如Imagen)生成多个视角的3D视图,然后用NeRF重建。这里面有个“鸡生蛋蛋生鸡”的问题:如果没有一个训练得比较好的NeRF,Imagen吐出的图会视角之间没有consistency;而没有consistent的多视角图,又得不到一个好的NeRF。于是作者想了个类似GAN的方法,NeRF和Imagen来回迭代。好处是多样性比较强,问题也比较明显,因为需要两边来回迭代15,000次,生成一个模型就需要在4块TPUv4上训练1.5小时。

  DreamFusion:3D NeRF和2D生成模型来回迭代优化

  Magic3DreamFields的升级版本,巧妙之处在于将重建过程分为了两步。第一步仅采用NeRF(具体来说,是上一篇提到的InstantNGP)进行比较粗糙的模型重建,第二步则采用一个可微的光栅化渲染器。NeRF比较适合从0到1、粗糙重建,更多的表面细节还需要更加特定的算法,比如说differentiable rasterizer。

  Magic3D从text生成的3D模型

  目前DreamFusion/Magic3D这一类算法的性能瓶颈有两点:一是NeRF,二是依赖的Imagen/e-diffI/SD等2D生成模型。如果沿着这个算法思路进行优化,可能有下面两点机会:

  NeRF是否是最佳的differentiable renderer?从直觉上来说,并不是。NN在NeRF中一开始只是作为一个universal function approximator,如Plenoxel等工作其实说明了NN在NeRF中甚至不是必要的。还有个思路是直接不用NeRF,直接用differentiable rasterizer,比如说nvdiffrast,一方面能够提速,另一方面由于直接在三角网格上优化,能够避免NeRF的结果转化到生产过程中需要用的三角网格的损失。

  2D生成式模型,如Stable Diffusion生成速度如果能够更快,那么对提速会相当有价值。GigaGAN让我们看到了希望,生成512x512的图只需要0.13s,比SD快了数十倍。

  当然,SDF也是可微性(differentiability)比较好的一种表示。Wenzel Jakob组在这方面有一篇很棒的工作,重建质量非常棒,不过还没有和AIGC结合:

  另外,除了生成通用资产,数字人的生成也是一个独立的有科研、商业价值的方向。taichi影眸科技做的ChatAvatar、MSRA的Rodin,都是最近有代表性的工作。taichi https://taichi-lang.cn/

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-6-2 11:58 , Processed in 0.030751 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表