使用Unity感知工具大批量生成、分析合成数据,高
在系列首篇文章中(点击回看),我们讨论了搜集大量标签图像、训练模型完成电脑视觉任务时遇到的各种挑战。还讨论了Google Cloud AI和OpenAI的最前沿研究,在物体检测等类似任务中使用合成数据的可行性。
,搜集合成数据、制作可用于训练的数据集是十分复杂的,一不小心就会有所疏漏。这导致开发者往往不得不编写一些一次性的方案来生成数据,这些数据的效果通常不理想。今天,我们为大家介绍两款全新工具Unity Perception Package和Dataset Insight,它们可以删繁就简,让高质量合成数据集的生成和分析更为简单。
Unity Perception 功能包
Unity Perception 功能包捕捉到的RGB、2D包围盒以及其它度量信息
Unity Perception 功能包能够以全新的方式在Unity中合生成合成数据集,且支持通用渲染管线(URP)与高清渲染管线(HDRP)。在初版中,功能包带有捕捉数据集的工具,包含4种基本功能添加对象标签、贴标器、图像捕捉和自定义度量衡。用户在功能包中输入对象标签的相关信息,接着功能包会自动挑选信息、将其反馈到贴标器中。贴标器使用该信息来生成Ground Truth真值数据,象是3D包围盒或语义分隔遮罩。经过处理的真值会与相关度量衡一起储存到JSON文件中。
我们计划在未来添加更多的贴标器,比如实例分隔,来支持其它常见的计算机视觉任务;场景生成工具;配置、管理大批domain randomization(域随机化)参数的功能,以及云服务的规模扩展。
Data Insights数据分析
任何ML从业者都明白查看、分析带标注数据的重要性。而在合成数据集中,云端模拟可生成上百万的图像,数据集会变得非常大。Dataset Insights是一款Python功能包,可让大型合成数据集的数据运算、报告生成更为简单高效。功能包可根据不同的度量衡,利用本地设备或云端服务,在每帧上可视化整个数据集运算积累而成的统计数据。
在下面,我们将介绍如何使用Unity Perception Package和Dataset Insights来生成合成数据集,训练一个可检测商品、并为其贴上标签的物品检测模型。所有工具都具备通用性,也适用于其他环境和计算机视觉任务。我们的目标是让更多ML从业者可利用起合成数据来解决各式各样的需求。
3D资源制作
在Google Cloud AI最近的一次研究中,谷歌使用了64种常见商品,包括麦片与纸巾,来验证了只用合成数据训练物体检测模型的可行性。我们受到研究启发,使用了与原产品大孝形状和纹理变化相近的同数量产品来进行训练。
我们使用数字内容创作工具、扫描标签和摄影扫描来制作了一整个库的商品3D资源。还将现实图像贴在方块、球体和柱状体这类简单形状上,来制作背景和遮挡物资源。所有商品都带有通用渲染管线、Shader Graph制作而成的着色器。
场景制作
我们在背景货架上放置了3D资源,又加入了形状、纹理上的干扰让场景更为复杂。多样化的训练场景可让训练出的ML模型能应付现实中的大部分场景。
Unity编辑器中的场景视图,展示了各个资源的摆放
自左向右遮挡物体、商品3D资源、和背景货架资源
在每个渲染的Loop循环中,系统会随机生成前景、背景和遮挡物体的摆放位置,以及灯光、物体颜色、模糊效果和噪声干扰。如下方代码所示,Perception功能包会抓取RGB图像、对象包围盒和其它随即参数来生成数据集中的每个图像。
Unity Perception生成的带注解数据输出
从合成数据集中采样而来的带标签图像
使用Dataset Insights分析数据
在大型合成数据集中,要人工检查所有图像几乎是天方夜谭,而识别中的偏差、缺失、瑕疵、错误的摆放位置、摆放姿势等等问题都会让ML模型的表现无法达到最优。
在本例中,生成的对象集会被送入Dataset Insights,用于计算统计数据、训练ML模型。Insights能高效处理用于对象检测模型训练的图像数据,确保数据是有效的。部分数据集的数据在下方列出。
Dataset Insights中的表格,展示了数据集中各个对象的分布
通过表格可知商品被识别次数没有出现过多或过少的情况
在测试阶段,我们遇到过部分对象多次出现在一帧中的异常情况,在对象计数的可视化图表中也有体现。对此,我们迅速修复了问题,确保对象能平均地分布到整个数据集中。
数据集中每个例子的对象计数分布
虽然我们希望数据集的对象分布能平均分散在每帧上,但也希望ML模型具有在数量或多或少的图片中检测多个对象的能力。上方表格展示了数据集每帧中所出现的标签对象,对象跟随一个固定的正态分布模式,每帧约有7个对象。
不同光源位置的可视化图表。每个点都表示影响目标对象的光源。为了模拟现实世界中的光照条件,我们还多样化了场景光照的方向和颜色。在上图中,光源位于不同的位置,让数据集中捕捉到的光照和阴影都有不同。
Unity Simulation大规模模拟合成数据集
为了在模拟中体现出尽可能多的排序组合,我们使用了Unity Simulation云服务,在云端运行项目,生成训练计算机视觉模型所需的完整数据集。
在下一篇文章中,我们将进一步介绍如何使用Unity Simulation生成大规模数据集,来训练模型、与真实数据做比照,讨论合成数据带来的经济效益,及几个模拟过程中学到的关键点。
Perception工具完全免费,请在Github上下载工具和对象检测示例。如果想要扩集规模,欢迎注册使用Unity Simulation (Beta)云服务。
文中所有商标均为企业私有财产
机器人培训
- 达芬奇机器人献爱心 将主刀公益手术
- 亚马逊将在英国招聘2000多人 重点开发Alexa和无人
- 美、德、英、日、中5国机器人发展全景大盘点
- 国产机器人窗口期 不可错失制造2025弯道超车机会
- 一个小时,这只机械狗“自学”会了走路!
- 三穗长吉镇:无人机飞防作业 稳粮增豆保丰收
- 依靠静电着陆的新型机器人
- 工业机器人推广应用座谈会
- 在苹果的智能机器人软件公司是一种怎样的体验
- 四大家族之KUKA工业机器人应用案例分析
- 万事俱备只欠东风?机器人产业的东风到底在哪
- 欧洲 6 轮送货机器人开始在美国大学推广
- 芜湖:考核第一!6项冠军!
- 人工智能有望打破医疗资源不均衡
- 立讯精密:已进军新能源汽车市场,目标成为全
- 90后用机器人炒菜周入10万,炒菜机器人真的有可