谁说生成图像、视频一定要靠AI? Github: https://github.com/princeton-vl/infinigen Infinigen: Infinite Photorealistic Worlds using Procedural Generation
普林斯顿大学新出的神器,可无限生成逼真3D世界,特别强调“No AI”。
不要以为生成的只是一段视频,其实背后是一套完整的3D资产,基于建模软件Blender打造。如此一来,我们就能用参数来控制细节,或者拿到相应的光流图、3D场景光流图、深度图、全景分割图等等,轻松hold住各种CV任务。再也不用担心我找不到高质量的3D数据投喂AI了。
100%基于随机数学的3D数据生成器:
一个解决办法是用合成数据。事实证明,在这类数据上训练的模型在零样本的真实图像上也可以表现得很好。
但问题是,现有的大多数免费3D合成数据工具基本局限于单一场景:要么是自动驾驶相关,要么就是那种位于室内环境中的人造物体。
因此,为了扩大覆盖范围,尤其是真实世界里的自然场景,作者基于Blender打造了这个基于随机数学规则无限生成各种场景的Infinigen。
Infinigen主要利用Blender的“基元”(或原语),设计了一个程序规则库,通过编码完成真实自然场景各个对象的生成。
论文主要介绍了Infinigen的程序体系,包括:
- Node Transpiler(节点转换器),可以自动将Blender节点图转化为Python代码,方便非程序员用户使用Infinigen。
如下图所示,它生成的代码更通用,既允许我们随机化输入参数,也允许随机化图结构。
- Generator Subsystems(生成器子系统),Infinigen的生成器是是一个个基于概率的程序,每个程序专门用于生成一个子对象(比如山脉或鱼类)。每个对象都有一组高级参数(比如山的总高度),用户可以使用Python API来调整这些参数,以实现对数据生成的细粒度控制。
- Material Generators(材料生成器),一共有50个,每个都由一个能指定颜色和反射率的随机着色器和一个生成相应精细几何细节的局部几何生成器组成。
如下图由所示,它能保证非常真实的几何细节
Terrain Generators(地形生成器),如下图所示,该生成器可以通过反复挤压生成巨石,使用Blender的内置插件生成小石块。
并帮助Infinigen通过使用FLIP模拟动力学流体,使用Blender的粒子系统模拟天气。
- Plants & Underwater Object Generators(植物和水下物体发生器),包括使用用随机游走等算法对树木生长进行建模,从而形成一个覆盖各种树木、灌木甚至仙人掌的3D世界。
又或者是使用差异化生长、拉普拉斯生长和反应扩散制造各种珊瑚、使用几何节点图生成树叶、花朵、海藻、海带、软体动物和水母。
还有各种子生成器(比如生物生成器)就不一一介绍了。
除了这些,Infinigen还包括一个图像渲染与Ground Truth提取程序,主要用于生成下图这些类型的图像。
其中对于前者,系统使用了Blender基于自然规律的路径跟踪渲染器Cycles来渲染图像。
作者介绍,虽然使用Blender开发了Infinigen的程序规则,不过程序生成的很大一部分是在Blender之外完成的。
另外,他们也表示,构建Infinigen是一项极大量的软件工程,光是它代码库的主分支就囊括了40485行代码。
最后,Infinigen在2个Intel Xeon Silver 4114 @ 2.20GHz CPU和1个NVidia GPU上进行了基准测试,生成一对1080p图像的时间(wall time)为3.5小时。
下表是它与现有合成数据集或生成器的比较。
作者表示,从中可以看出,Infinigen最大的优点就是不需要任何外部参考资源库就能程序化地生成无限的自然3D数据,别的都不行。 论文地址:
https://arxiv.org/abs/2306.09310
项目主页:
https://infinigen.org/
GitHub地址:
https://github.com/princeton-vl/infinigen