搜索 Unity

用Unity Computer Vision Datasets开发以数据为中心的AI

2021年12月10日 类别 技术 | 10 分 阅读
House, pantry, and store images side by side
House, pantry, and store images side by side
涵盖的主题
分享

开发一个生产用的AI系统难度颇高,但随之而来的高回报率仍让许多企业将开发机器学习(ML)计算机视觉及其应用提上了日程。Unity正致力于缩短用户项目的上市时间、提高计算机视觉系统的质量,进一步增强数据为中心的AI的开发能力。如何用Unity Computer Vision Datasets快速改进训练数据有限的ML模型,使其取得28%的性能提升(相对于文中的基准指标)?本文将为你揭晓。

Unity Computer Vision Datasets主要解决计算机视觉应用开发的训练数据不足问题。我们将与客户合作建立一个定制的数据生成器,用于生成特定的训练数据,让你能尝试多种数据类型、改善AI的表现指标,并缩短项目的上市时间。

我们的上一篇博文阐述了在家用计算机视觉应用的开发中怎样应对由个人隐私导致的数据短缺问题。为了进一步在实战中检验产品,我们特意设立了一个挑战:改进一个用少量真实数据集训练的模型。 

我们选择了智能摄像机应用作为演示的功能,模型将在居家环境中检测狗狗。我们用到了COCOOIDSv6的一个子图集,其中的狗狗与沙发、微波炉和吹风机等常见家庭物品出现在一起,而狗狗是本次测试的主要目标。我们搜集来的数据集包括了1538张标注好的狗狗图像,其中1200张用于训练、200张用于测试,剩余138张用于验证成果。

建立基准模型与衡量指标

我们的首个目标是根据现实世界的数据来建立一个基准模型和测量指标。我们使用了Detectron2的Faster RCNN架构,用ImageNet现成的权重结构进行预训练。这个单类物体检测任务的指标包括:平均查准率(AP)和平均查全率(AR),取0.5到0.95的IoU(Intersection over Union,交并比)上的平均值,步长设为0.05。由于检测对象只有一种,我们选择统计AP/AR而非mAP/mAR。本次训练与很多极端案例一样都受限于训练数据的体量,我们测出了51.16 AP50.3 AR的性能基准。在这个阶段,模型尚未经过任何优化,我们的首要目标是保持模型不变、仅使用训练数据来改进基准表现。

第1步:用Unity Computer Vision Datasets改进模型的表现指标

Unity Computer Vision Datasets服务为我们建立了带有光照和随机摆放等配置参数的环境,ML开发者可在这个公开的环境中配置、生成实验用数据。我们的ML开发团队使用了该数据生成器来生成新数据集、重新训练模型。我们还采用了一种硕果颇丰的训练方法:先用合成数据集预先训练,再用真实数据集进行微调。新的结果为56.83 AP55.1 AR,两者相比于之前都有改善。

Visually inspecting the created dataset in Unity Computer Vision Datasets
Unity Computer Vision Datasets人工合成数据集图示

第2步:合成数据集的快速改进

我们先在几个维度上分析了合成数据集和真实数据集的基本分布,检查是否有任何阻碍性能的因素存在。通过比较狗狗在2D图像中的位置分布,我们发现真实和合成数据集之间存在一些明显的差异,如下图所示。

狗狗位置分布热图

real and synthetic data distributions for dog position within the image
在V1数据集中,狗狗的位置与真实数据的分布出现了明显差异。Synthetic Train v1里过于集中的分布会降低模型的泛用性。该问题在Synthetic Train v2数据集中得到了改善。

当然,仅凭这些信息我们无法断定过于集中的位置分布是否对以上指标有影响。因此,我们很快设计了另一个实验,来检测扩散开的位置分布能否产生影响。Unity Computer Vision Datasets的数据生成器中包含着一个对象相对于摄像机的摆放参数,开发者不必修改项目本身、只需调整该参数就能在30分钟之内生成一个新的数据集,让狗狗的位置更为多样。

Configuring a dataset in Unity Computer Vision Datasets. Here we show some of the exposed parameters for data generation.
配置Unity Computer Vision Datasets的数据集,图中包含了部分数据生成的配置参数。
Camera placement randomizer
配置摄像机在场景中的摆放范围。

模型接着使用这个新数据集(v2)重新训练,结果AP小幅提升至57.18,AR保持不变。

第3步:用大型数据集快速进行实验

到这里,我们对当前的数据生成策略和参数感到满意,并决定进一步扩大数据集大小。Unity Computer Vision Datasets能以同样的配置快速生成大型数据集。我们决定分别创建两个数据集,一个包含40,000张图片,另一个包含100,000张图片。

由Unity实时渲染引擎驱动的Unity Computer Vision Datasets可在云端横向扩大数据生成规模,让我们能在90分钟内生成一个包含10万张图像的逼真数据集。在重新训练后,我们看到模型逐渐地在进步。

Our progression through experiments to the best results. All experiments were initialized with ImageNet weights and fine-tuned on the dataset of 1,200 real images.
多次实验后达到的最佳成果。所有的实验皆按照ImageNet的权重初始化,并参照了1200张真实图像进行微调。

尽管该模型尚不能正式投产,但同样的模型在经过多次迭代后,其关键性能指标有了快速的提升,其中AP绝对值达到了14以上AR绝对值达到了近10。整个过程,包括10万张图像的生成和模型的训练都在5小时内完成。这是具有现实意义的数据为中心的AI!

Github Sample Project

Indoor Pet Detection

Please refer to this project which we used majorly for training the above mentioned experiments. The project provides scripts necessary for the specific use case of dog detection in an indoor home environment, as well as instructions on how to generate synthetic data for it using Unity Computer Vision Datasets. And after generating the required datasets, how to train & evaluate a model.

We have all the model checkpoint released, which were used for running our experiments, with different strategies around the amount of synthetic data. You can find all the experiments with their results for each checkpoint here.

If you want to try it out yourself please check out our space here.

结论

Unity Computer Vision Datasets极大地促进了合成数据和机器学习之间的结合,加快了使用合成数据开展的实验。合成数据迭代得越快,开发者越能快速生成效果最佳的数据集。

Unity Computer Vision Datasets目前提供以下服务:

  • 自定义“数据生成器”:Unity的实时3D和机器学习专家将根据你的需要开发一个专利性、自定义的数据生成器。请在此处联系我们来了解服务详情。
  • 参数化生成合成数据集:用预设好的参数化环境支持后续的数据集迭代和实验。
  • 合成数据集托管:代为管理项目的合成数据集。
  • 数据集可视化:为数据集添加真图参考标签。
  • 下载及转移:将数据集下载到本地或Google Cloud Storage。
  • 免费数据生成:为预设环境(一般物体探测、家居环境和零售环境)生成至多1万张图像。

现在就来申请使用Unity Computer Vision Datasets,探索数据集样本、用Unity搭建的环境生成你自己的数据集吧!

2021年12月10日 类别 技术 | 10 分 阅读
涵盖的主题