首页 > 其他分享 >BVS:多强联手,李飞飞也参与的超强仿真数据生成工具,再掀数据狂潮 | CVPR 2024

BVS:多强联手,李飞飞也参与的超强仿真数据生成工具,再掀数据狂潮 | CVPR 2024

时间:2024-08-20 09:48:33浏览次数:12  
标签:BVS 李飞飞 场景 对象 生成器 生成 2024 数据

BEHAVIOR Vision SuiteBVS)是一个新型工具包,旨在系统评估和全面理解计算机视觉模型。研究人员能够在场景、对象和相机级别控制各种参数,有助于创建高度定制的数据集。

来源:晓飞的算法工程笔记 公众号

论文: BEHAVIOR Vision Suite: Customizable Dataset Generation via Simulation

Introduction


  大规模数据集和基准在过去十年中推动了计算机视觉研究。在这些数据集和基准的驱动下,每年都有数千个模型和算法提出来解决不同的感知挑战,例如对象检测、分割、动作识别、视频理解等。尽管取得了成功,但真实世界数据集面临固有的局限性。首先,对象/像素级的GT标签要么成本高昂(例如,分割掩码),要么不准确(例如,深度感知),因此每个真实数据集通常都只有有限的标签,阻碍了使用同一输入执行各种感知任务的计算机视觉模型的发展和评价。即使在标注可行和准确的情况下,真实世界数据集也受到源图像可用性的限制。例如,从互联网或真实传感器中很难获得交通意外或低光条件的图像。最后,这些真实世界数据集一旦收集完成,就无法轻易改变数据分布。因此,研究人员很难进行定制实验,导致模型经常过拟合数据集,最终导致整个基准过时。

  为了避免这一限制,研究人员和从业者想出了各种方法来生成合成数据集以补充真实数据。在室内场景理解领域,3D重建数据集提供了一个有前途的途径,可以从任意视点和自由(几何)注释生成源图像。然而,由于3D重建技术的不完美性,渲染出的图像并不是非常逼真。由于每个场景都是静态布局,这些数据集在相机轨迹之外提供的自定义能力非常有限。最近的合成室内数据集(通常由3D艺术家设计)不仅提供了自由的几何和语义注释,而且还支持对象布局的重新配置,因为对象通常是独立的CAD模型。然而,这些数据集不能保证物理上的合理性,因为对象的穿透和悬浮经常发生,并且除了更改对象姿态之外,并不能提供定制能力。另一方面,3D模拟器通过其基础物理引擎保证了物理上的合理性,允许用户自定义关节配置和更高级的对象状态,如“煮熟”或“切片”。然而,与之前提到的合成数据集相比,这些3D模拟器通常面向具体AI和机器人研究人员,因此它们缺乏照片般的逼真感(通常是由于速度限制),并且不提供生成计算机视觉研究人员定制图像/视频数据集的现成工具。

BVS旨在为计算机视觉研究人员提供一个强大而灵活的平台,以评估其模型在各种条件下的性能,并帮助他们了解模型的局限性。通过使用BVS,研究人员可以轻松生成大量数据集变体,而无需耗时耗力的数据收集和标注过程。这种能力允许系统地评估模型在连续参数上的性能,例如在不同光照条件下的对象检测,或不同相机设置下的场景理解。此外,BVS还可以帮助研究人员通过在模拟和真实世界之间建立可控的转移来评估模型。

  总之,BEHAVIOR Vision Suite具有以下独特而理想的特点组合:

  1. BVS提供图像/对象/像素级标签(场景图、点云、深度、分割等);
  2. BVS涵盖了各种室内场景和物体(8000多个物体,1000个场景实例,流体、软体等);
  3. BVS提供物理可信性和照片级真实感;
  4. BVS支持在对象模型、姿势、关节配置、语义状态、光照、纹理、材质、摄像机设置等方面的定制化;
  5. BVS包括易于使用的工具,用于生成新用例的定制数据。

  为了展示BVS的实用性,论文展示了三个示例应用:

  1. 在不同条件下(例如光照和遮挡)参数化评估模型的鲁棒性;
  2. 在相同一组图像上评估不同类型的代表性计算机视觉模型;
  3. 为对象状态和关系预测进行sim2real transfer的训练和评估。

BEHAVIOR Vision Suite


BEHAVIOR Vision Suite包含两个主要组件(图 1):扩展的BEHAVIOR-1K assets和可定制的数据集生成器。资产是基础,而生成器则利用这些资产创建视觉数据集,以满足下游任务的需要。

Extended BEHAVIOR-1K Assets

  扩展后的BEHAVIOR-1K资产包括多样化的8,841个物体模型和1,000个场景实例,这些场景实例源自51个艺术家设计的场景。其中,2,156个物体模型是结构元素,如墙、地板和天花板,其余6,685个非结构化物品跨越1,937个类别,包括食物、工具、电子产品、服装和办公用品等。图2显示了这些类别的详细信息。这些场景主要是在室内,但也包括花园等室外元素,涵盖了多种环境:住宅(23个)、办公室(5个)、餐厅(6个)、超市(4个)、酒店(3个)、学校(5个)和通用礼堂(4个),以及论文研究实验室中的一个模拟公寓的虚拟副本。这些资产是作者一年的努力,为了增强其在计算机视觉中的适用性所取得的成果。

  通过添加更多日常物品,将建筑结构分割为单独的物体以获得更精确的3D边界框标签,并自动生成切片食品,论文将物体集合从5,215扩展到8,841。此外,论文开发了通过改变家具物体模型和加入额外的日常物品生成多样化的场景变化的功能。后续,论文将会放出从51个原始场景增强而来的1000个场景实例。

  为了提高物理真实感,使用V-HACDCoACD来优化碰撞布局,并手动选择最佳参数以确保在物理精度、可用性保留和仿真效率之间取得平衡。对于超过2,000个物体,如果这种方法还不够,论文会手动设计它们的碰撞布局。

  论文通过标注实际光源对象(如灯具和吊灯)来增强照明的真实感,以模仿真实世界的照明效果。为了获得更详细的语义属性,论文标注了适当的容器填充体积(例如杯子、锅)和液体来源/汇聚位置(例如水龙头、下水道、喷雾器),使得能够在场景中实现流体的实际生成。如果场景对象无法自由移动(例如它们在物理上支撑其他物体),论文对其进行了标注。杂乱的物体被明确标注,这使它们可以被替换为其它的杂乱物品。

  总的来说,论文设计了这些资产来构造定制数据生成的强大基础,搭配功能化组织来允许准确的对象随机化,并且通过注释在对象和场景级别提供了大量可修改的参数。

Customizable Dataset Generator

  可定制的数据集生成器,即BEHAVIOR Vision Suite的软件组件,旨在生成符合特定规格要求的合成数据集。它基于OmniGibson,利用NVIDIA Omniverse的逼真实时渲染器和OmniGibson的过程化采样功能,生成满足任意要求的定制图像和视频。无需额外付费,即可生成的数据集包括丰富、全面的注释,比如分割掩膜、2D/3D边界框、深度、表面法线、流场和点云。关键是,它能赋予用户对数据集生成过程的广泛控制,在保证物理可信度的同时,指定场景布局、对象状态、摄像机角度和光照条件等要求。

  • Capabilities

  生成器具有以下功能:

  1. 场景对象随机化:可以用替代对象替换场景内视觉和功能相似的对象,这种随机化显著改变了场景的外观,同时保持了布局的语义完整性。
  2. 物理真实姿态生成:生成器可以按程序改变对象的物理状态,以满足某些条件,包括:1)以某种方式将对象放置在场景中的其他对象上(例如,内部、顶部或底部),2)打开或关闭关节式对象,3)向容器中灌入流体,4)折叠或展开布料。生成器可以为相同的条件生成多个有效配置,并确保物理可信度。
  3. 丰富的谓语标注:除了通常的标签(语义和实例分割、边界框、表面法线、深度等),生成器还提供注释,包括对象的一元状态(例如,一个关节式对象是否打开或一个器具是否打开)、两个对象之间的二元谓语(例如,对象是否触碰、位于另一个对象的顶部或旁边)、对象与物质之间的二元谓语(例如,对象是否被物质填充/覆盖/浸透)以及连续标签(例如,关节式对象的开放程度、容器的填充比例)。
  4. 相机姿态和轨迹采样:在3D场景中找到合适的相机姿态是渲染流程中具有挑战性且关重要的一步:相机不应该被遮挡,并且应该对准感兴趣的主体。生成器使用占据网格和手工启发式方法来生成既满足这些约束条件又符合静态相机姿态和合理行走轨迹的数据集,以生成图像或场景行走的视频数据。
  5. 可配置的渲染:通过用户友好的API,生成器允许对渲染参数进行定制,包括光照和相机具体设置,例如光圈和视角。
  • Dataset Generation

BVS数据集中的图像可以按以下步骤生成:

  1. 从用户配置的场景类别中选择51个原始场景之一(比如一个办公室)。场景对象是使用同一类别的实例进行随机化的。
  2. 根据用户配置,确定要向场景中添加的附加对象。
  3. 使用基于用户指定要求的姿势生成能力来放置对象。这可能包括在特定区域制造混乱(例如,给冰箱装满易腐食品)或单独操纵对象状态(例如,打开柜子或用水覆盖桌子)以进行谓语预测。
  4. 生成相机姿态(或一系列姿态作为相机轨迹),以及根据用户的规格随机化场景的光照参数和相机的内参。
  5. 渲染图像(或一系列图像)并记录它与用户请求的所有相关标签一起,包括附加模态(深度/分割等)、边界框以及谓词和对象状态值。

Applications and Experiments


Parametric Model Evaluation

Holistic Scene Understanding

Object States and Relations Prediction

如果本文对你有帮助,麻烦点个赞或在看呗

更多内容请关注 微信公众号【晓飞的算法工程笔记】

标签:BVS,李飞飞,场景,对象,生成器,生成,2024,数据
From: https://www.cnblogs.com/VincentLee/p/18368803

相关文章

  • DMS:直接可微的网络搜索方法,最快仅需单卡10分钟 | ICML 2024
    DifferentiableModelScaling(DMS)以直接、完全可微的方式对宽度和深度进行建模,是一种高效且多功能的模型缩放方法。与先前的NAS方法相比具有三个优点:1)DMS在搜索方面效率高,易于使用。2)DMS实现了高性能,可与SOTANAS方法相媲美。3)DMS是通用的,与各种任务和架构兼容。来源:晓飞的算法......
  • 利用python下载小鹅通课程视频的方法(已购) 绝对有效2024
    1、先找到视频对应的红框里的地址,网页右键,审查元素。2、打开地址,下载视频对应文件,使用记事本打开,查看文件内容。3、使用Python解析文件里的url,进行视频下载。importrequestsimportrefromCrypto.CipherimportAESdefm3u8(url):header={'User-Agen......
  • 2024.8.19随笔
    关于迟到这么多天就迟到一次就被抓了个正着/jk今天刚好错过地铁,后来在地铁上碰见了int08,本来他和我都坐的上一班结果今天都迟到了,然后在路上就一直讨论李老和hfu抓住我们的概率。本来我想今天迟到就算了,毕竟刚好错过地铁下一班要等好一会没办法,但int08认为他有很大概率被抓......
  • 2024新寄生蟲二開蜘蛛池版本——码山侠
    寄生蟲二開蜘蛛池版本,必須GBK解壓,PHP8.X版本;後台是super.php$allowedIpPrefix='42.81.132.';  改成你的本機當前C段蜘蛛池是一个为搜索引擎蜘蛛(‌即网络爬虫)‌提供服务的平台,‌旨在提高网站的曝光度和搜索引擎的索引效率。‌‌蜘蛛池的概念源于网络爬虫的工作需求,‌这......
  • [NOI]2024 登山 题解
    好像在洛谷题解区里还没人和我做法一样,,?考场做法,只用到了倍增和线段树,感觉挺好写。考场上从开题到过题只用了2h。最底下有省流版(?)。以下是我考场里比较详细的思路,所以比较长。先考虑如何\(O(n^2)\)做,然后再想优化。容易先想到一个状态数是\(O(n^2)\)的DP,即记录起点,并将向......
  • ControlNeXt: Powerful and Efficient Control for Image and Video Generation(2024,
    ControlNeXt:PowerfulandEfficientControlforImageandVideoGeneration(2024,8)paperGithub进一步在ControlNet上进行了改进,主要针对一下两点对于每一个模块添加一个Zero-Conv也会占用很多显存.Zero-Conv两个模态的输出的mean、var具有差异,导致收敛很慢.针对1,......
  • 2024.8.4~2024.8.18济南北斗学友集训
    8.9晚上原神(原题之神)争霸赛(挑选写过的6题进行比赛)rk前7名可以许一个50r以内的愿望100+100+0+100+??+(30+)=330+18:05Begin18:??T1100pts18:??T2100pts18:54T4100pts19:42T5??ptsO(kn)worst(intree)......
  • 笔试题(2024/8/19)
    一、简答题1.简述#ifdef、#else、#endif和#iFndef的作用#ifdef、#else、#endif和#ifndef 是C/C++中的预处理指令,用于条件编译。它们的作用是根据条件来控制代码的编译过程。#ifdef(即“ifdefined”)指令用于检查一个宏是否已定义。如果该宏已被定义,则编译下面的代码......
  • 2024.8 总结
    杂题【YBOJ】Pair题目描述给出二维平面上的\(n\)个点,第\(i\)个点的坐标为\(x_i,y_i\)。定义点\(i\)与点\(j\)之间的距离为\(\frac{|x_i-x_j|+|y_i-y_j|}{\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}}\),求平面上两点的距离最大为多少。($1\len\le10^5$)解题思路首先,我们......
  • 2024.8.19
    #include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#include<stdlib.h>intmain(){ //1.创建套接字 intsock_fd=socket(AF_I......