搜索 Unity

Unity AI 2021 Interns:展望计算机视觉的未来

2021年9月17日 类别 制造业 | 10 分 阅读
an AI dataset visualizer with shapes
an AI dataset visualizer with shapes
涵盖的主题
分享

AI@Unity正致力于研究和开发机器人、计算机视觉及机器学习的相关产品,Unity的暑期AI实习生也在参与多个极具现实意义的AI项目。

Unity Computer Visiion团队开发的Perception Package是一套借助Unity实时3D引擎生成合成数据集的工具。在开发由机器学习驱动的计算机视觉应用时,合成数据凭借低数据偏差、可生成极端案例、多样化图像、准确图像标注等特点完全可以用于补充现场采集数据。此外依托Unity对合成数据的专业知识和研究,我们也可为客户生成特色定制数据集

在2021年夏天,Unity的实习生们也通过辛勤的工作为Unity做出了宝贵的贡献。本文将介绍这些实习生所参与的项目和总结的经验。

合成数据中的弱监督实例划分

麦吉尔大学(McGill University)计算机科学博士,Eric Crawford

AI data set visualized in the original image, ground truth labels and ai predicted labels

实例划分是指借助计算机视觉模型分辨输入图像中各块像素的所属物体。类似Mask R-CNN[注1]等深度神经网络是当今最先进的实例划分技术,但神经网络对训练数据有着非常高的要求。要想在现实应用中具备足够高的性能,模型通常需要数以万计的标注图像进行训练。每张图像中的每个物体都使用两种标签进行标注:一个选框(即框出物体位置的2D选框)和一个位掩码(即一个覆盖全图、用于划分像素的二进制掩码)。在传统的人工标注过程中,设定掩码所需的时间和精力要远远大过选框。在这个项目中,我们研究了用少量位掩码训练深度网络进行实例划分的可能性,并测试了合成数据能否在位掩码缺少或缺失时提高模型性能。

在立项时,我们希望回答的是以下问题:当数据(如COCO数据集)存在有许多标注选框时,为哪部分加上遮挡标注能实现高性能图像划分?结果我们发现,只要有1%的数据用掩码标注(即标注完全),模型性能就可以达到完全标注时的90%(见图)。

Graph showing the difference between the various data sets of the Seg AP

这意味着实例划分的工作量可以大大减少,并且也为未来的训练工作指了一条明路:比如怎样借助合成数据让1%的标注数据达到100%标注的效用;能否用合成数据完全取代真实的参考数据;在参考边框稀少的情况下,合成数据能有多少可用性。从初步实验的结果来看,使用合成的实例划分数据进行训练是可行的。

Data Visualizer数据可视化

麦吉尔大学(McGill University)计算机科学,Leopoldo Zugasti

此内容由第三方提供商托管,该第三方提供商不允许在未接受“Targeting Cookies”的情况下观看视频。如果想观看来自这些提供商的视频,请将“Targeting Cookies”的 Cookie 首选项设置为“是”。

采用python语言的Dataset Visualizer支持将Unity Perception格式的计算机视觉数据集(如使用Unity Perception Package生成的数据集)可视化用于浏览。通常来说,合成数据集会包含合成的环境和物体,以及参考图像注释,包括:2D与3D选框、属性与实例划分、关键对象。计算机视觉模型会使用这些数据开展训练,用于学习物体检测或分类等任务的执行。

Dataset Visualizer的作用在于方便数据集的浏览、比对,它可在图像上覆盖显示/隐藏各种注释。该工具有如下用途:

  • 使用Perception软件包建立3D环境、生成数据集通常需要多次迭代,代码和场景需要进行多次修改、微调,同时数据集也须多次检查才能达到最佳效果。Dataset Visualizer可大大加快迭代过程,开发者只需几键便能生成并查看新的数据集。 
  • 除了数据生成工具外,Unity还提供定制数据集服务,以满足客户的训练需求。Dataset Visualizer能很方便地可视化数据集用于查看与验收,与没有注释功能的普通照片查看器相比,极大地改善了开发体验。

在开发这个工具时,我接触了许多计算机科学的课题,像是人工智能、计算机网络、计算机图形和网络开发等等。在Unity提供的资源和出色的同事帮助下,我还解决了几个意料之外的挑战,如用不同的摄像机投影类型渲染3D盒子、自动解决端口冲突、构建兼容各种操作系统的应用等等。

Dataset Preview数据集预览功能

女王大学(Queen’s University)计算机工程,Jamie Won

Image showing computer vision analyzing how many different Barilla pasta boxes are available

AI@Unity大量生成合成数据集的技术可让计算机视觉的开发更为轻松。但在此前,用户要想查看Unity的几个示例数据集,就必须下载资源包并提取图片。这些资源包体积较大,用户如果网速有限,就必须等待一段下载时间才能够检查内容,缓慢的下载速度于是便会减慢数据的迭代速度。

Dataset Preview数据集预览功能解决的正是这个问题。功能允许用户在下载前预览数据集样本,如果数据集不满足要求,用户可以微调并生成一个新的数据集,再度进行预览。功能支持设定预览页的图像尺寸和数量,可以放大图像。为了方便验收,功能支持在放大的图像上启用标注边框,并支持修改边框的颜色。

就我而言,该项目最让我有压力的因素就是知道功能将是面向用户的(user-facing)。事实上,除了几乎所有的数据集用户外,我的许多同僚竟然也经常使用我开发的功能来预览自己的成果!为一个完整的产品整合新功能是一项不小的挑战,你需要学习并遵守既定的代码组织规定,但整个体验对我来说是一次受益匪浅的学习之旅。

模拟与真实(sim2real)深度图像间的差距

滑铁卢大学(University of Waterloo)计算机科学,Blake VanBerlo

Image showing the difference between real and synthetic data of images

搜集大量标注数据集是机器学习从业者面临的一个主要挑战。数据集可能会产生高昂标注成本、可能包含一定的偏差,抑或者不能完全描绘出真实世界。Unity依靠引擎的渲染管线可快速生成标注好的合成数据集,让以上问题迎刃而解。我的实习工作主要是开发和研究深度图像的合成,让合成数据做到可以替代真实训练数据。使用合成深度图像训练的机器学习模型能否妥善处理真实世界数据?合成图像需要多少真实度才能以假乱真? 

深度图像指的是一种单通道图像,图像上的每个像素表示着从镜头到拍摄对象间的距离,而深度方向以一条平行于镜头方向的轴为前向。由我开发的标注程序可根据Unity场景中的摄像机生成对应的深度图像。而为了检测合成深度图像的效用,我们使用程序合成的数据集来训练模型识别物体的6D姿态,同时以自己设计的新架构为基础来研究两种最先进的机器学习模型。数据集的每个样本都包括彩色图像、深度图像、物体遮罩以及由实际转角和位置构成的姿态标注。训练出来的模型然后会在LineMOD数据集的真实图像上进行测试。为了检测逼真度对模型性能的影响,我们还为合成图像加入了一定的噪点,再进行测试。这里的噪点模仿了LineMOD深度图像上的失真。该项目在本文撰写时仍在进行中,因此结果尚不明确。

假设使用合成图像同样能训练出令人满意的模型性能,则开发者以后就可以借助Unity的图像合成技术来解决更广泛的计算机视觉应用问题。而与采集成本高昂的真实深度图像相比,合成数据便捷、成本低廉的优点使其成为一种极具吸引力的替代方案。

模型骨架的自动生成与缩放

ISART Digital Montreal3D艺术家,Kathy Huynh

此内容由第三方提供商托管,该第三方提供商不允许在未接受“Targeting Cookies”的情况下观看视频。如果想观看来自这些提供商的视频,请将“Targeting Cookies”的 Cookie 首选项设置为“是”。

计算机视觉的训练通常要求有大量的标注图像,但手动标注数据是一个漫长且乏味的过程。为了解决这个问题,我们以Unity Perception软件包为基础,为客户们制作了定制的合成数据集。有了这项技术,我们可以生成大量充满各类物体和人物的环境。Randomizer脚本还能随机化部分场景参数,如物体的位置、转向、动画、纹理和光照。并且,由于场景使用了实时3D渲染,一张图像相当于画面的一帧,所有图像几乎都可以即时生成。本项目的目的在于解决模型骨架的自动生成与缩放,为Perception软件包添加额外的功能。我们希望借助随机化脚本及其它开发中的骨架绑定和蒙皮程序来随机生成数字人类的混合形状,并根据模型外观的变化来自动调整骨架。在与某个客户合作期间,我们成功地在四星期内制作出了合成数据集,并修改了随机化程序,根据客户需求来让室内外场景的人物和光照随机化。在优先完成了这项工作后,我便将注意力重新放回人物模型骨架绑定和蒙皮的自动化工具。我希望自己在实习结束时可以完成一个Bone Placer(骨骼放置)工具,与另一个自动化蒙皮工具相互配合。 

在这两次项目经历非常令人难忘,也让我受益匪浅,在经理们、导师们和同事的支持下,我不仅学到了更多的合成数据知识,还学会了怎样在一个快节奏环境中解决困难挑战。参与真正的项目最初令人怯步,但最后也成了我宝贵的回忆。与我所熟知的游戏开发不同,机器学习领域的客户反馈让我学到了很多新东西。此外,我还学到了很多高清渲染管线和Shader Graph的知识,包括光照、后期处理和纹理随机化。我还熟悉了Perception包随机程序的逻辑,并能根据需要进行修改。接着我“现学现卖”,从零开始编写了一个混合形状随机化程序,将一块模型网格作为混合形状添加另一块网格上,再随机设置其权重。在这一过程中,我也进一步了解了混合形状、Unity与Perception的API。并且我还深入研究了Houdini的Python脚本,将模型网格的顶点数据导出成.json文件,文件接着将导入到Unity里的Bones Placer,用于预测骨骼位置。由于数据中的顶点ID源自原模型网格,Bone Placer接着便会据此在预测位置上生成骨骼。这就是我之前提到的希望在实习结束之际完成的工具。生成的骨骼随后便能用于为网格蒙皮,这一步由另一名同事开发的自动蒙皮工具完成。总的来说,我获得了大量的技术知识,对此我非常感激。我期待着学习更多的知识,帮助Unity及其客户完善合成数据的生成!

模拟3D录制的编码优化

Priyanka Chandrashekar 西蒙菲莎大学(Simon Fraser University)计算机科学(视觉计算)硕士,Priyanka Chandrashekar

实时3D正在改变世界。为了在沉浸式3D体验中呈现最为逼真的内容,制作就一定会用到3D和体积化录制。作为Volumetric Format Association的创始成员,Unity Simulation推出了多种体积化及3D录制模拟技术,为进入这一不断增长的市场铺平道路。作为一种较为新颖的技术,3D录制算法需要经过大量的模拟才能完善并产生最优性能。要想录制逼真的模拟内容,开发者必须不厌其烦地测试每一种摄像机布置、场景、组成和灯光,这也让成本变得高昂。本项目针对这些问题提出了一个最佳的解决方案,并降低了客户在项目中采用3D录制与体积化视频的门槛。

此内容由第三方提供商托管,该第三方提供商不允许在未接受“Targeting Cookies”的情况下观看视频。如果想观看来自这些提供商的视频,请将“Targeting Cookies”的 Cookie 首选项设置为“是”。

3D和体积化录制模拟器可更好地展示体积化视频的整个录制过程,并能将成果可视化。模拟器的设计目的在于缩小问题范围和解决实际问题,包括为体积化录制搜寻最佳的摄像机布置、各色物体的录制模拟。用户可以模拟多种场景布置并检测硬件部署,以此来为大规模3D和体积化录制等对硬件要求较高的技术做出明智的决策。此类可配置的模拟器不仅详细拆解了整个录制过程,还支持多方面的随机测试,可在多种的背景环境下生成3D源数据,以此来支撑高质量3D内容的生成。

虽然我过去曾用Unity制作过游戏,但参与3D内容录制和模拟的工作还是第一次,这也是一次让人倍感兴奋、受益匪浅的经历。在实习过程中,我学会了如何将在引擎中调整3D内容与模拟器,如场景数据的多样化、元数据和模拟数据集的存储,以及怎样借助配置选项帮助客户改善其3D录制方案。随着体积化视频的全球市场持续增长,我很期待看到用户们能用我的工具来完善自己的3D录制方案!

加入我们

如果你也希望在Unity参与具有挑战性的AI项目、积累项目经验,请在大学就业页面查看开放职位。你也可以浏览Unity Computer Vision Github上的演示和教程,在家里搭建自己的计算机视觉体验。

[注1] He, K., Gkioxari, G., Dollár, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969).

2021年9月17日 类别 制造业 | 10 分 阅读
涵盖的主题