0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

纯随机数学无限生成逼真3D世界火了!

CVer 来源:量子位(QbitAI) 2023-06-20 14:47 次阅读

谁说生成图像、视频一定要靠AI

普林斯顿大学新出的神器,可无限生成逼真3D世界,特别强调“No AI”。

b16ffd0a-0f28-11ee-962d-dac502259ad0.png

浅浅感受一下这个效果:

b1c39546-0f28-11ee-962d-dac502259ad0.gif

b5fccd1c-0f28-11ee-962d-dac502259ad0.gif

bd3ec1d4-0f28-11ee-962d-dac502259ad0.gif

不要以为生成的只是一段视频,其实背后是一套完整的3D资产,基于建模软件Blender打造。

此时所有blender用户一起跟我:啊?

bf7a71dc-0f28-11ee-962d-dac502259ad0.png

如此一来,我们就能用参数来控制细节:

bfa537d2-0f28-11ee-962d-dac502259ad0.gif

或者拿到相应的光流图、3D场景光流图、深度图、全景分割图等等,轻松hold住各种CV任务。

c6a4b7ba-0f28-11ee-962d-dac502259ad0.gif

最最重要的是,它还免费、开源!

妈妈真的再也不用担心我找不到高质量的3D数据投喂AI了……

100%基于随机数学的3D数据生成器

尽管AI发展迅猛,但目前CV领域的许多任务仍然缺乏高质量的数据,3D尤甚。

一个解决办法是用合成数据。事实证明,在这类数据上训练的模型在零样本的真实图像上也可以表现得很好。

但问题是,现有的大多数免费3D合成数据工具基本局限于单一场景:要么是自动驾驶相关,要么就是那种位于室内环境中的人造物体。

因此,为了扩大覆盖范围,尤其是真实世界里的自然场景,作者基于Blender打造了这个基于随机数学规则无限生成各种场景的Infinigen。

c953dec8-0f28-11ee-962d-dac502259ad0.png

Infinigen主要利用Blender的“基元”(或原语),设计了一个程序规则库,通过编码完成真实自然场景各个对象的生成。

论文主要介绍了Infinigen的程序体系,包括:

Node Transpiler(节点转换器),可以自动将Blender节点图转化为Python代码,方便非程序员用户使用Infinigen。

如下图所示,它生成的代码更通用,既允许我们随机化输入参数,也允许随机化图结构。

c98ee784-0f28-11ee-962d-dac502259ad0.png

Generator Subsystems(生成器子系统),Infinigen的生成器是是一个个基于概率的程序,每个程序专门用于生成一个子对象(比如山脉或鱼类)。每个对象都有一组高级参数(比如山的总高度),用户可以使用Python API来调整这些参数,以实现对数据生成的细粒度控制。

Material Generators(材料生成器),一共有50个,每个都由一个能指定颜色和反射率的随机着色器和一个生成相应精细几何细节的局部几何生成器组成。

如下图由所示,它能保证非常真实的几何细节。

c9d5e92c-0f28-11ee-962d-dac502259ad0.png

Terrain Generators(地形生成器),如下图所示,该生成器可以通过反复挤压生成巨石,使用Blender的内置插件生成小石块。

ca07ecba-0f28-11ee-962d-dac502259ad0.png

并帮助Infinigen通过使用FLIP模拟动力学流体,使用Blender的粒子系统模拟天气。

ca5746ca-0f28-11ee-962d-dac502259ad0.png

Plants & Underwater Object Generators(植物和水下物体发生器),包括使用用随机游走等算法对树木生长进行建模,从而形成一个覆盖各种树木、灌木甚至仙人掌的3D世界。

cb470bce-0f28-11ee-962d-dac502259ad0.png

又或者是使用差异化生长、拉普拉斯生长和反应扩散制造各种珊瑚、使用几何节点图生成树叶、花朵、海藻、海带、软体动物和水母。

还有各种子生成器(比如生物生成器)就不一一介绍了。

cbbcc60c-0f28-11ee-962d-dac502259ad0.png

除了这些,Infinigen还包括一个图像渲染与Ground Truth提取程序,主要用于生成下图这些类型的图像。

其中对于前者,系统使用了Blender基于自然规律的路径跟踪渲染器Cycles来渲染图像。

cc3e69e6-0f28-11ee-962d-dac502259ad0.png

作者介绍,虽然使用Blender开发了Infinigen的程序规则,不过程序生成的很大一部分是在Blender之外完成的。

另外,他们也表示,构建Infinigen是一项极大量的软件工程,光是它代码库的主分支就囊括了40485行代码。

最后,Infinigen在2个Intel Xeon Silver 4114 @ 2.20GHz CPU和1个NVidia GPU上进行了基准测试,生成一对1080p图像的时间(wall time)为3.5小时。

下表是它与现有合成数据集或生成器的比较。

cc9db216-0f28-11ee-962d-dac502259ad0.png

作者表示,从中可以看出,Infinigen最大的优点就是不需要任何外部参考资源库就能程序化地生成无限的自然3D数据,别的都不行。

团队介绍

Infinigen将在本周三的CVPR会议上进行Poster展示。

它的作者全部来自普林斯顿大学Vision & Learning Lab。

三位共同一作,其中一位叫Ma Zeyu,普林斯顿大学博士三年级在读,2020年本科毕业于清华大学电子工程专业。

通讯作者为普林斯顿大学计算机科学系副教授邓嘉。

ccc3d518-0f28-11ee-962d-dac502259ad0.png

目前,Infinigen的代码已经上线GitHub,短短两天已有850个标星。

cd1f5e60-0f28-11ee-962d-dac502259ad0.png

论文地址:
https://arxiv.org/abs/2306.09310
项目主页:
https://infinigen.org/
GitHub地址:
https://github.com/princeton-vl/infinigen

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 3D
    3D
    +关注

    关注

    9

    文章

    2781

    浏览量

    106683
  • AI
    AI
    +关注

    关注

    87

    文章

    27505

    浏览量

    265160
  • 数据集
    +关注

    关注

    4

    文章

    1186

    浏览量

    24468

原文标题:纯随机数学无限生成逼真3D世界火了!普林斯顿华人一作|CVPR 2023

文章出处:【微信号:CVer,微信公众号:CVer】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    概率随机数生成【子模块】

    本帖最后由 ZHZJK 于 2014-1-7 17:04 编辑 你还在用系统自带的随机数生成函数吗你还在为模拟数值虚假而烦恼吗而个人编写了一个按照概率生成随机数子模块将会解决这
    发表于 12-31 16:49

    概率论_随机数学基础课程中的内容

    随机数学基础课程中的内容,有助于大家理解书本上的内容
    发表于 12-10 18:08 0次下载

    随机数生成算法

    在计算机上用数学的方法产生随机数列是目前通用的方法,它的特点是占用的内存少,速度快.用数学方法产生的随机数列是根据确定的算法推算出来的,严格说来并不是
    发表于 04-03 10:25 6次下载

    C语言中随机数生成代码

    C语言中随机数生成完整代码:
    的头像 发表于 02-20 09:21 1w次阅读

    如何使用随机数生成器来生成私钥

    ,尤其重要。 说到随机,有两个必须要搞清楚的概念:“真随机数生成器”(TRNG)和伪随机数生成器(PRNG)
    发表于 03-18 10:40 4845次阅读
    如何使用<b class='flag-5'>随机数</b><b class='flag-5'>生成</b>器来<b class='flag-5'>生成</b>私钥

    随机数发生器的制作教程

    创建该项目时,按下按钮时4位7段LED显示屏将显示随机数。它使用Arduino Uno微控制器创建电路,按下按钮即可生成一个稍微随机的数字,以出现在LED显示屏上。我打算在我的中学数学
    的头像 发表于 10-16 11:50 7655次阅读
    <b class='flag-5'>随机数</b>发生器的制作教程

    如何利用SystemVerilog仿真生成随机数

    采用SystemVerilog进行仿真则更容易生成随机数,而且对随机数具有更强的可控性。对于随机变量,在SystemVerilog中可通过rand或randc加数据类型的方式定义。ra
    的头像 发表于 10-30 10:33 9816次阅读
    如何利用SystemVerilog仿真<b class='flag-5'>生成</b><b class='flag-5'>随机数</b>

    单片机STM32F1随机数生成探索与实践(基于CUBEMX和KEIL5)

    ,其原理产生模拟噪声信号并采集,使用该硬件可以产生真随机数。但是低端单片机,如STM32F1,8051等没有随机数发生器,只能利用软件生成随机数
    发表于 12-31 19:12 11次下载
    单片机STM32F1<b class='flag-5'>随机数</b><b class='flag-5'>生成</b>探索与实践(基于CUBEMX和KEIL5)

    用于生成随机数的电子骰子

    电子发烧友网站提供《用于生成随机数的电子骰子.zip》资料免费下载
    发表于 07-06 10:58 4次下载
    用于<b class='flag-5'>生成</b><b class='flag-5'>随机数</b>的电子骰子

    Arduino Lotto随机数生成

    电子发烧友网站提供《Arduino Lotto随机数生成器.zip》资料免费下载
    发表于 11-02 10:59 0次下载
    Arduino Lotto<b class='flag-5'>随机数</b><b class='flag-5'>生成</b>器

    随机数生成器开源分享

    电子发烧友网站提供《随机数生成器开源分享.zip》资料免费下载
    发表于 11-11 11:57 0次下载
    <b class='flag-5'>随机数</b><b class='flag-5'>生成</b>器开源分享

    如何在200 smart中生成随机数

    上文写了博途中生成随机数的几种办法,现在试着使用其中简单的线性同余法实现在200 smart中完成类似功能。
    的头像 发表于 03-23 13:51 5364次阅读
    如何在200 smart中<b class='flag-5'>生成</b>伪<b class='flag-5'>随机数</b>

    技术分享 | 随机数生成过慢导致系统阻塞怎么办?

    /dev/random和/dev/urandom是linux上的随机数生成器,是个字符设备,为系统提供随机数随机数主要应用在加密方面,没有加密的操作都是可预测且不安全的。linux上
    的头像 发表于 08-15 09:20 1570次阅读
    技术分享 | <b class='flag-5'>随机数</b><b class='flag-5'>生成</b>过慢导致系统阻塞怎么办?

    如何使用雪花算法生成真正的随机数

    以前用rand和srand生成过伪随机数,伪随机数的序列是固定的,今天学习生成真正的随机数生成
    的头像 发表于 10-09 10:05 927次阅读

    如何使用Python生成四位随机数

    为了实现这些目标,Python 为我们提供了random() 模块。random() 是一个内置的 Python 模块,用于生成随机数
    的头像 发表于 04-15 12:47 285次阅读