构建计算机视觉系统的综合数据是从真实数据的转变而来。虽然真实世界的数据需要漫长的收集和注释过程,但机器学习(ML)工程师可以在几分钟内构建一个合成数据集,从而实现快速的、以数据为中心的开发周期。此过程速度很快,因此用户可以一次尝试许多数据集变体,以找到经过最佳改进的模型。
目前关于数据的来源仍然是一项挑战。用户需要的往往不是成千上万张的图像与注释,而是数十或数百个三维模型,如网格、纹理和动画等。虽然合成数据降低了对内容的要求,但根据这些资产的3D特性也需要在创建它们时拥有十足的创造性。
幸运的是,四十多年来,电影和电子游戏行业都面临着同样的内容挑战。在那段时间里,他们开发了新的内容创建技术以及庞大的内容存储库,其中大部分已经非常适合进行合成数据生成。
本文将介绍获取3D内容的最佳方式以及各种方式的优缺点,他们适合不同类型的计算机视觉应用。
在线3D资产
获取3D内容最快、最便宜的方法是利用在线的方式下载现有的作品资产。Unity资产商店提供由3D艺术家创作的免费和付费内容,这些内容能够应用于游戏、电影和其他3D应用程序。
Unity资产商店“椅子”的搜索结果
这些在线资产通常以“包”的形式出现,包括各种3D模型、纹理变化、材质和动画等。这些资产可以在数据集生成期间随机化,并能够在每个对象上创建几乎无限的变化。通过下载不同风格的资产进一步增加了数据的广度,能够有效减少模型中的偏差和过度拟合。
当任务需要检测诸如“椅子”或“猫”之类的广泛类别的对象时,在线资产源就变成了一个很好的数据来源,这些对象需要各种各样的内容来支持。为了实现模型概括所需的多样性,用户需要在每个相关轴上寻找变化,包括形状、材质、颜色和姿势等。
即使像卡通或纹理和颜色,这样非真实感的资源也可以在模型中得到更好的概括。在最近的一个项目中,将Unity Asset Store中的一小部分高度逼真的资产转换成为广泛的3D模型和纹理,这大大提高了模型的性能。
扫描
用于检测特定物体或制成品的合成数据集需要真实世界物体的精确3D模型,这些模型在网上很难找到。通过3D扫描,用户可以自己独立创建这些资产。
SynthDet的资产是使用平板扫描仪和3D建模创建的。
这一系列资产是用3D扫描技术生成的,每种技术都适用于不同类型的对象、质量水平和预算。下面让我们来看看这些案例吧:
摄影测量:摄影测量工具,如Agisoft变形和Unity的增强现实伴侣应用通过从一组从不同角度拍摄的照片合成一个3D对象。
优点:适合对任何尺寸或形状的物体捕捉纹理和细节
缺点:对光照条件和物体颜色敏感
平板扫描仪和三维建模:平板扫描仪可用于扫描盒状对象的不同侧面,然后组合成纹理,并使用标准3D创作工具映射到手动创作的3D网格上。
优点:便宜、高精度的纹理
缺点:仅适用于可展平的对象;需要一些手工创作
工业3D扫描仪:使用激光或结构光进行三维扫描。这种方法非常适合检测机械零件和复杂的电子设备。
优点:能够对大多数高几何度物体进行精确的扫描;快速
缺点:昂贵;对象大小有限
程序性内容
扫描对象和在线3D资产通常是真实对象的快照,另一种不断增长的内容形式被称为程序资产,它使用基于规则的算法来产生无限的变化。每个程序资产都提供了参数,这些参数能够定制它们的外观和形状。这对于合成数据来说是完美的功能,其中每个参数都可以被随机化以实现极大的多样性。用户可以反复调整随机化,以提高模型性能。
真实资产多种多样,过程资产通常会随着真实资产变化而改变。道路、人脸、布料和混凝土等材料都是很好的例子。磨损、年龄、形状和颜色等相关因素可以内置为随机化算法的参数。Unity着色器图形、Adobe Substance 3D和Houdini是构建程序资产的灵活工具,Unity资产商店为特定类型的内容提供了几种程序工具。
EasyRoads3D可以在Unity中构建程序性道路。
程序技术也为合成数据的环境生成提供了动力。环境生成器的范围从非结构化和高度随机到复杂的分层系统,用于生成逼真的场景。Unity的API能够帮助用户编写程序场景生成器;Houdini 则常用于需要更多结构的场景。
开始使用合成数据
游戏和电影行业提供了丰富的动态3D内容,让用户可以快速使用拥有合成数据的项目,并开始快速迭代数据。通过使用 Unity Perception package,用户可以导入这些资产,将它们进行随机化,并非常快速地生成高度多样化的数据集。