开发一个生产用的AI系统难度颇高,但随之而来的高回报率仍让许多企业将开发机器学习(ML)计算机视觉及其应用提上了日程。Unity正致力于缩短用户项目的上市时间、提高计算机视觉系统的质量,进一步增强数据为中心的AI的开发能力。如何用Unity Computer Vision Datasets快速改进训练数据有限的ML模型,使其取得28%的性能提升(相对于文中的基准指标)?本文将为你揭晓。
Unity Computer Vision Datasets主要解决计算机视觉应用开发的训练数据不足问题。我们将与客户合作建立一个定制的数据生成器,用于生成特定的训练数据,让你能尝试多种数据类型、改善AI的表现指标,并缩短项目的上市时间。
我们的上一篇博文阐述了在家用计算机视觉应用的开发中怎样应对由个人隐私导致的数据短缺问题。为了进一步在实战中检验产品,我们特意设立了一个挑战:改进一个用少量真实数据集训练的模型。
我们选择了智能摄像机应用作为演示的功能,模型将在居家环境中检测狗狗。我们用到了COCO和OIDSv6的一个子图集,其中的狗狗与沙发、微波炉和吹风机等常见家庭物品出现在一起,而狗狗是本次测试的主要目标。我们搜集来的数据集包括了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 AP和50.3 AR的性能基准。在这个阶段,模型尚未经过任何优化,我们的首要目标是保持模型不变、仅使用训练数据来改进基准表现。
Unity Computer Vision Datasets服务为我们建立了带有光照和随机摆放等配置参数的环境,ML开发者可在这个公开的环境中配置、生成实验用数据。我们的ML开发团队使用了该数据生成器来生成新数据集、重新训练模型。我们还采用了一种硕果颇丰的训练方法:先用合成数据集预先训练,再用真实数据集进行微调。新的结果为56.83 AP和55.1 AR,两者相比于之前都有改善。
我们先在几个维度上分析了合成数据集和真实数据集的基本分布,检查是否有任何阻碍性能的因素存在。通过比较狗狗在2D图像中的位置分布,我们发现真实和合成数据集之间存在一些明显的差异,如下图所示。
当然,仅凭这些信息我们无法断定过于集中的位置分布是否对以上指标有影响。因此,我们很快设计了另一个实验,来检测扩散开的位置分布能否产生影响。Unity Computer Vision Datasets的数据生成器中包含着一个对象相对于摄像机的摆放参数,开发者不必修改项目本身、只需调整该参数就能在30分钟之内生成一个新的数据集,让狗狗的位置更为多样。
模型接着使用这个新数据集(v2)重新训练,结果AP小幅提升至57.18,AR保持不变。
到这里,我们对当前的数据生成策略和参数感到满意,并决定进一步扩大数据集大小。Unity Computer Vision Datasets能以同样的配置快速生成大型数据集。我们决定分别创建两个数据集,一个包含40,000张图片,另一个包含100,000张图片。
由Unity实时渲染引擎驱动的Unity Computer Vision Datasets可在云端横向扩大数据生成规模,让我们能在90分钟内生成一个包含10万张图像的逼真数据集。在重新训练后,我们看到模型逐渐地在进步。
尽管该模型尚不能正式投产,但同样的模型在经过多次迭代后,其关键性能指标有了快速的提升,其中AP绝对值达到了14以上、AR绝对值达到了近10。整个过程,包括10万张图像的生成和模型的训练都在5小时内完成。这是具有现实意义的数据为中心的AI!
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 Computer Vision Datasets,探索数据集样本、用Unity搭建的环境生成你自己的数据集吧!