Kubric: A scalable dataset generator
到了新环境,安排我看的论文,说是了解一下就行
代码:https://github.com/google-research/kubric
abstract
- 研究啥:合成数据
- 相关工作为什么不行:
- kubric是什么:一个python框架
- 特点:可以与PyBullet 和 Blender 连接
introduction
kubric
- python pipeline
- 用于生成逼真的数据,图像和视频
- 支持大规模生成
- 多功能性
related work
相比别的合成数据项目,kubric的优点:Kubric 会自动为每一帧生成图像提示,并轻松支持各种视角和照明条件。
- 专门的合成数据pipeline:缺点是它们通常用于特定任务
- 通用的数据集创建pipeline:主要区别在于 Kubric 专注于将工作负载扩展到许多工作线程,以及与 TensorFlow 数据集的集成。
infrastructure
kubric需要充当渲染引擎、物理模拟器、数据导出设施这三者之间的链接
设计原则
- 开源
- 易于使用:在后台使用 PyBullet 和 Blender 提供一个简单的面向对象的 API 接口
- 真实:用blender的Cycles 光线追踪引擎,这样生成的数据能和真实数据差不多
- 可拓展性:可以到云上
- 便携且可重复:分发 Kubric Docker 镜像
- 导出数据:注释、SunDs
kubric worker
kubric工作流程:写一个worker script,然后多次运行worker来生成完整数据集,然后收集生成数据
scene structure 每个worker包含:
- 一个Scene object,跟踪全局设置(例如,分辨率、要渲染的帧数、重力)、
- 一个 Camera
- 其它,统称为Assets。
将Assets添加到场景中时,将在每个视图中创建相应的对象。
simulator 物理模拟用PyBullet
renderer bpy作为blender的接口
annotation blender自带的功能
assets
- 问题:要使用集中asset collections的话,需要大量的清理和转换,以使他们与给定的pipeline兼容
- kubric怎么解决:在一个public google cloud bucket种提供了多个经过预处理的collection of assests
- 怎么处理collection的?每个数据集源都和一个manifest.json文件相关联
Scene Understanding Datasets (SunDs)
- 目的:便于将数据摄取到机器学习模型中
- 所有 SunDs 数据集都由两个子数据集组成:
- 场景数据集包含高级场景元数据(例如场景边界、整个场景的网格等)。
- 帧数据集包含场景中的各个示例 (例如,RGB 图像、边界框等)。
- SunDs 抽象出特定于数据集的文件格式(json、npz、文件夹结构等),并返回机器学习模型(TF、Jax、Torch)可直接摄取的张量。
Kubric 数据集和挑战
相当于实验设计
每个问题都依赖于不同的注释子集(流、分段、深度、摄像机姿势或对象姿势),使用不同的功能子集(例如,物理或绑定动画),并且需要控制不同的因素(背景、材质或照明)
object discovery from video
对象发现方法旨在将场景分解为其组成组件,并在最少的监督下查找对象实例分割掩码。
optical flow
光流是指视频中从一帧中的像素到下一帧的 2D 运动.
光流实际上是计算机视觉中第一个依赖合成数据进行评估的子领域
Texture-structure in NeRF
conclusion
- kubric
- 一个通用的 Python 框架,
- 其中包含用于大规模生成的工具,
- 集成了来自多个来源的资产、丰富的注释和通用的导出数据格式 (SunDS),用于将数据直接移植到训练管道中。
- Kubric 能够生成高质量的合成数据,解决了管理自然图像数据所固有的许多问题,并避免了构建特定于任务的一次性管道的费用。
- 我们在 11 个案例研究中展示了我们的框架的有效性,并为一系列不同的视觉任务生成了不同复杂程度的数据集。在每种情况下,Kubric 都大大减少了生成所需数据的工程工作,并促进了重用和协作。我们希望它能通过降低生成高质量合成数据的门槛来帮助社区,减少碎片化,并促进管道和数据集的共享。
- 虽然 Kubric 已经非常有用,但它仍在开发中,尚不支持 Blender 和 PyBullet 的许多功能。值得注意的示例包括体积效果(如雾或火)、软体和布料模拟,以及高级摄像机效果(如景深和运动模糊)。
- 我们还计划预处理和统一来自更多来源的assets,。目前,Kubric 需要大量的计算资源,因为它依赖于路径追踪渲染器而不是光栅化渲染器。我们希望添加对光栅化后端的支持,允许用户在速度和渲染质量之间进行权衡。我们在补充材料的 A 部分讨论了围绕我们系统应用的潜在社会影响和道德影响。
最后总结一下
- kubric是什么
- pythonfarmework
- interface with pyBullet and Blender
- to generate scenes
- with annotation
- can scale
- 构成
- kubric worker
- scene structure 跟踪所有全局设置
- camera
- assets created from cloud like google
- renderer-blender还有一个annotation的功能
- simulator
- SunSs:数据集转化成tensor
- kubric worker
- 验证:用kubric生成的数据给这些模型进行预训练