论文链接: https://arxiv.org/abs/2203.03570 

代码链接: https://github.com/google-research/kubric   

 

摘要

大规模的高质量数据集对深度学习、机器学习算法至关重要,有时甚至比模型架构、训练方法具有更大的影响。然而,对于一些视觉任务而言,收集和管理足够数量的数据仍然是一项艰巨的挑战。一些关键的障碍包括高质量的费用、详细的网站、数据多样性、任务域复杂性的控制,以及对隐私、公平和许可的担忧。本文提倡使用合成数据来规避这些问题,为此介绍了Kubric这一开源框架用于生成逼真的图像和视频数据,并为诸多视觉任务提供丰富的标准注释。

 

动机

众所周知,数据是机器学习算法的燃料,训练数据的数量和质量对算法的性能影响通常比算法结构、训练细节更大。然而,大规模地收集、处理和注释真实数据是非常困难,而且经常会引发数据隐私、公平和法律问题。因此,合成数据作为替换方案,具有如下优点:1)合成很便捷;2)合成数据能够支持丰富的真实标注;3)提供对训练数据的完全控制;4)可以防止或减轻有关数据偏见、隐私和许可的问题。不幸的是,用于有效数据生成的软件工具仍不成熟,这导致了合成数据过程中碎片化的生成工作。为了解决这一问题,本文提出了开源的Kubric框架,它通过与PyBullet和Blender接口来生成逼真的照片场景,能够无缝扩展到分布在数千台机器上的大型工作,并生成TB级的数据。

 

方法

Kubric的整体流程如下图所示,Kubric首先随机使用外部数据填充当前场景,接着利用物理模拟方式进行结果帧的渲染,最终到处图像、注释层和其他元数据。它的主要贡献是简化了数据合成过程,减少了想要生成和共享合成数据的障碍。

在设计过程中,Kubric满足了如下设计原则:

  • 开放性(openness)。数据生成代码应该为学术界和工业界的研究人员免费使用。Kubric通过使用Apache2 licence作为开源软件来解决这个问题,并且只使用具有类似许可许可的软件。加上使用免费的3D资产和纹理,这使得研究人员不仅可以共享数据,还可以让其他人复制和修改数据。
  • 易用性(ease of use)。计算机图形、约定和界面的碎片化是设置和重用数据生成代码的主要难点。Kubric通过在后台提供一个简单的面向对象的API接口,配合PyBullet和Blender来减小这种摩擦,隐藏了设置、数据传输的复杂性,并保持它们的同步。
  • 真实性(Realism)。数据生成器应该能够尽可能多地模拟真实数据的结构和复杂性。Blender的Cycles光线追踪引擎支持高水平的真实感,可以建模complex视觉现象,如反射、折射、间接照明、地下散射、运动模糊、景深等。
  • 泛化性(Scalability)
  • 携带性和可复现性(Portable and Reproducible)
  • 数据导出(Data Export)。

Kubric的使用流程包括编写一个工作脚本来创建、模拟和呈现单个随机场景。然后,通过多次运行该工作程序生成完整的数据集,然后收集生成的数据。这种流程为独立场景的合成数据反映了大多数据集的i.i.d.结构,并支持将生成过程从本地原型扩展到大量并行工作;例如使用谷歌云平台(GCP)。本文还计划支持一个Apache Beam管道将数据集的生成、收集和后处理转化为一个方便的工作流程。

 

3D资源

得到合成数据的一个限制因素是高质量3D资源的可用性。尽管目前存在一些3D资源,但它们的使用通常需要大量的清理和转换,代码方面还要求它们与给定的代码API兼容。Kubric在公共的谷歌云桶中提供了几个预处理的3D资源,使用这些资源就像使用kb.AssetSource(path)更改资源源的路径一样简单。

 

场景理解数据集(SunDs)

为了方便将数据吸收到机器学习模型中,我们引入了与Kubric一起的sund (standing Datasets场景下)数据集front-end2。sund是一个用于访问公共场景理解数据集的API。字段名称和结构、形状、dtype是跨数据集标准化的,这允许在数据集之间进行简单的切换(例如从合成数据切换到真实数据)。

 

Kubric数据集与挑战

为了演示Kubric的强大功能和多功能性,我们接下来描述一系列新的挑战性问题,每个问题都使用Kubric生成的数据(见下表)。

 

实验结果

视频目标检测

本文测试了两种最新的最先进的视频对象发现方法,SAVi和SIMONe,或者它们将视频分解成时间上一致的对象段的能力tation masks(见表3)。SAVi在训练中使用光流,在分解只有移动对象的视频时表现得更好,特别是当在视频的第一帧中收到额外的提示时。随着复杂性的增加,这两种方法的性能都会下降,但在mov - d和-E中的静态对象例外,这有时会被SIMONe部分捕获。这两种方法都不能可靠地分解所有五种数据集中的场景。

 

光流识别

最近的深度模型PWC-net、RAFT和VCN都是依靠合成数据进行预训练,如FlyingChairs。然而,FlyingChairs使用合成椅子作为唯一的前景对象且没有一般的3D运动,使得合成数据缺乏照片真实感,。AutoFlow学习生成合成流数据集的渲染超参数,在FlyingChairs上获得了很大的性能收益。但AutoFlow采用的是简单的2D分层模型,渲染缺乏3D动感和真实感。Kubric解决了这些缺点,如下图所示。

内容中包含的图片若涉及版权问题,请及时与我们联系删除