AI绘画

绘制江湖儿女,绘制世间万物

景象智能平台:多模态一体化人工智能开源框架

编者按:如何建立能够实时感知、理解并在人类世界中行动的人工智能零碎?事实上,要建立这样的零碎需要组合和协调不同的人工智能技术,将多种人工智能技术(如机器学习、计算机视觉、语音识别、自然语言处置和对话管理等)结合在一起。最近,微软研究院推出的景象智能平台(Platform for Situated Intelligence)致力于提供完整的开发套件,能大大提高运用开发及相关研究的效率,或许在一定程度上推动了该问题的解决。本文编译自微软研究院博客文章 “Platform for Situated Intelligence: An open-source framework for multimodal, integrative AI”。

这些年,微软研究院的研究员们一直在研究如何建立能够实时感知、理解并在人类世界中行动的人工智能零碎,并希望建立具有像与真人交谈或合作那样的交互体验的计算零碎。相关的研究项目涉及到多个物理上的交互式运用程序的开发,包括作为个人助理的具有具体形象的对话机器人,在公司大楼里指路的机器人,以及识别出人们是要上电梯还是路过的智能电梯,等等。要想建立这样的零碎需要组合和协调不同的人工智能技术来实现多模态的能力,也就是说,需要联合利用多途径,比如语音和视觉。研究员们在这一领域的不断努力凸显了创设综合人工智能零碎所面对的挑战,即需要将多种人工智能技术(如机器学习、计算机视觉、语音识别、自然语言处置和对话管理等)结合在一起。

图1:微软研究院研究团队开发的多模态交互零碎,包括一个在大楼里指路的机器人和一个在办公室外充当私人助理的具有具体形象的对话机器人。中间图是机器人的视角。

无论是为实验建立原型零碎的研究人员,还是为客户建立和部署端到端解决方案的行业开发人员,任何有开发利用多模态流数据经验和实时操作运用程序经验的人,都可以证明该工程技术的难度是巨大的。在迟延约束下,这些运用程序通常需要在异构的组件技术阵列上无缝地协调计算。但现有的编程结构和平台对象缺少关键的构造和基元,比如时候的表示和推断、同步和数据融会的能力。对于这些运用程序,传统用于时态数据可视化和分析的对象无法利用,抑或这些对象并没有被紧密地集成到开发周期中。这就导致研发人员的大部分工作(和代码)都花在了调试和创设用于日志记录、监视、理解底层问题和运用程序性能的自定义基础对象上,而不是创设运用程序本身。

为了应对这些挑战,并为该领域的开发、实验和研究奠定坚实的基础,微软研究院的研究员们建立了景象智能平台(Platform for Situated Intelligence),这是一个多模态集成人工智能零碎的开源框架。该框架提供了一个为处置多模态数据流而量身定做的现代化平台、一套反对开发周期的丰富对象集以及促进快速原型设计和重用的组件开放生态零碎。虽然景象智能平台是根据研究团队在物理环境下交互零碎和机器人方面的经验建立的,但它的范围和影响明显更广:任何处置流、多传感器数据、结合多种人工智能技术、在迟延约束下运转的运用程序,都可以从该框架提供的功能中受益。

景象智能平台:https://www.microsoft.com/en-us/research/project/platform-situated-intelligence/

开源框架:http://www.github.com/Microsoft/psi

进一步观察景象智能平台

景象智能平台是一个基于.NET 标准的跨平台框架。总的来说,该框架保留了托管编程语言的功能和软件工程优势,比如类型安全性和内存管理,同时满足了多模态集成 AI 运用的特殊需求。

从一个较高的角度来看,利用景象智能平台建立的运用由在数据流上相互通信的组件图组成。组件可以封装传感器,如麦克风和相机;特定的人工智能技术,如语音识别器和物体检测器;或任何其他自定义的计算单位。这个组件图也被称为运用程序管道(pipeline),是由运用程序开发人员以编程方式构造的。

例如,在一个场景中,我们利用麦克风和摄像头来识别正在说话的人(这可能是较大的视听运用程序中的一小部分)。其中,音频流由语音活动检测器处置,摄像头中的图像通过唇动检测器分析。之后,语音源检测器组件将融会这些信号,进而识别说话者。下图显示了这个管道的结构,代码片段则说明了组件实例化和相互连接的容易程度:

// create pipeline

var p = Pipeline.Create();

// instantiate components

var microphone = new AudioSource(p);

var camera = new MediaSource(p);

…// connect componentsmicrophone.PipeTo(voiceActivityDetector);camera.PipeTo(lipMovementDetector);…// run the pipelinep.Run()

图2:有了景象智能平台,开发人员可以很容易地实例化和连接组件,以建立多模态集成 AI 零碎的处置管道。上面展示了一个示例管道的结构和相应的代码。

景象智能平台的 GitHub 资源库包含了一个不断发展的组件生态零碎,这些组件包括各种传感器,包括摄像头、麦克风和深度传感器等;同时也有处置技术,包括成像、音频、视觉、语音和语言处置技术等;还有用于运转机器学习模型和访问云服务(如微软 Azure 认知服务)的组件,等等。再加上前文所述的编写运用程序管道的简单性,这套现成的组件促进了再次利用,并反对快速原型设计。当然,该框架还允许开发人员轻松地编写和利用新组件。

用于理多通道流的基础设施

虽然基于组件的开发是一项重要的软件工程技术,但景象智能平台所提供的好处和优势远不止于此。该框架提供了一个运转时零碎(runtime)和现代化的流基础平台,这些基础对象专门针对多模态集成AI运用程序的需求进行了定制和优化。

一旦创设了运用程序管道并调用了 Run() 方法,景象智能平台将负责运转管道。运转时零碎在流上承载新闻,并通过调度新闻传递来编排组件的执行。在这个过程中,运转时零碎利用了管道的并行性,其目标是在多核执行环境中高效利用 CPU 资源,同时在高负载下提供良好的性能降低。

图3:景象智能平台运转时在流上调度新闻传递并协调组件的执行。

除了严格的性能要求外,当涉及到时候推理以及对数据同步和融会的反对时,多模态运用程序也有一组特定的需求。通常,组件可能需要同步或融会不同路径的数据流。在上述示例中,语音源检测器将来自语音活动检测器的结果与来自唇动检测器的结果进行融会。简单的方法是在新闻到达融会组件时对它们进行配对。但是,如果语音活动检测器和唇动检测器组件拥有不同的迟延,则可能导致产生不正确的结果。因此,需要对数据流进行适当的协调,如对迟延进行统一。如果没有适当的对象对这些操作进行反对,那么就需要投入大量的开发工作来解决低级的同步和协调问题。

景象智能平台通过将时候作为底层流基础结构中的主要构造来解决这些挑战。组件创设的每个新闻都带有一个包含其创设时候的包封。此外,包封包含一个原始时候,并由初始传感器组件进行分配,对应于与该新闻相关的初始信号首次从现实世界进入管道的时候。当新闻通过运用程序管道向下游流动时,此初始时候将随每个新闻自动传播,从而使所有组件都能够知道迟延,也就是说,从新闻的初始时候到它实际到达运用程序管道中的给定组件所经过的确切时候。

图4:管道中组件创设的每个新闻不仅包含其创设时候,还包含由初始传感器分配并随每个新闻传播的初始时候,使组件能够了解迟延并执行数据融会。

初始时候为合适的同步和数据融会提供了基础。实际上,景象智能平台框架提供了一套功能强大的操作,用于融会、同步、插值、采样和窗口化,将底层的细节(如并发、缓冲和等待新闻到达)抽象在一起,从而使开发人员能够专注于高级别的任务。

除了时候推理之外,多模态集成 AI 运用的另一个核心需求是对数据记录和实验的反对。多模态运用程序的开发通常是一个数据驱动的开发周期,在该周期中,数据被收集并用于调优和迭代地改进运用程序。景象智能平台中的流基础对象反对从底层开始的高吞吐量数据日志记录。运转时零碎动态、自动地生成高效的序列化代码,将任何数据类型持久化到磁盘,从而最大限度地减少开发人员的工作。而持久性零碎被设计为尽可能多、尽可能快地反对日志记录。

持久性零碎还记录了每个单独新闻的时候信息,从而反对管道重播场景。在开发复杂的集成运用程序时,必须通过一遍又一遍地“实时”运转来调优或调试运用程序,这通常是非常耗时和昂贵的。而利用景象智能平台,开发人员可以试验和执行管道,其中一些流会“重播”以前在磁盘上捕获的会话。用于数据融会和同步的流运算符则确保了结果的可重复性,并且管道可以以重播模式执行,这一方法与实时传感器数据运转时相同。

上面只是介绍了景象智能平台基础设施的几个核心概念和功能。该框架还提供了许多附加功能来处置流数据,比如一种用于操作通用数据流的丰富的流运算符语言,各种调节流量的控制和节流机制,自动数据克隆以确保并发执行环境中的组件隔离,反对建立结构依赖于流经管道数据的动态管道,以及当管道处于稳定状态时,用于最小化垃圾收集的共享内存机制和优化。

用于调试和可视化的对象

尽管与流数据一起工作的多模态集成 AI 运用需要特定的平台对象来高效运转,但它们更广泛的开发周期也有一些特定的需求,然而目前可用的通用软件对象还不能充分满足这些需求。调试、维护和开发通常是数据驱动的,且涉及运转运用程序、检查结果、诊断和微调的多次迭代。可视化各种组件在一段时候内生成的数据以及检查组件如何处置特定数据点的能力至关重要。对收集的数据进行分析和查询、对数据的注释和直接交互以及运转批量处置任务的能力则可以进一步加速开发。

该框架通过景象智能平台 Studio 解决了其中的几个需求,这是一个反对多模态、时态数据可视化、注释和处置的对象。下面的视频展示了该对象的实际运用。一名开发人员正在可视化通过样例运用程序收集的数据,其中 Azure Kinect 设备用于检测和识别用户所指向的对象。该样例运用程序确定了人的指向方向,将光线与深度图中的点云相交,再将交点投射回 RGB 相机,然后在其周围裁剪图像,并运转用于对象检测的云服务。该视频展示了运用程序生成的不同数据流的各种可视化对象。

通过利用景象智能平台 Studio,开发人员可以利用各种各样的可视化对象——从简单的数字流到音频、视频、3D 对象和直方图——在运用程序持久化的数据流上建立复杂的可视化。而且开发人员还可以很容易地浏览数据,检查数值,选择片段并以不同的速度播放片段。该可视化对象可以以多种方式配置,开发人员可以为自己的数据类型创设和添加定制的可视化器。该对象还允许在布局中轻松组合多个可视化对象,并且这些布局可以保存和共享。此外,数据可视化不仅可以基于保存在磁盘上的数据离线完成,还可以在运用程序运转时实时完成。而且可视化基础设施还允许开发人员在自己的运用程序中利用这些可视化对象。

景象智能平台 Studio 的其他特性:

管道可视化:开发人员可以可视化并检查运用程序管道的结构及其随时候变化的行为。并且这个可视化可以进行配置,基于各种相关的统计数据为运用程序管道着色。例如,根据平均新闻迟延,对流运用热图着色,从而可以揭示管道中哪些组件变慢,以及它们在什么时候变慢。

数据注释:开发人员可以基于自定义注释模式构造时态注释。带注释的数据本身作为流保存,以反对各种半自动的数据标签和训练场景。

数据处置:运用程序在一段时候内记录的多个会话可以组合成更大的数据集。该对象反对加载开发人员定义的批量处置任务,并在数据上执行这些任务,而且可以结合原始流可视化结果。对于非 UI 自动化,也可以通过命令对象利用这些数据处置功能。

在多模态、一体化的人工智能零碎领域,有趣的研究和新颖、实用的运用有着巨大的潜力。近年来,利用数据驱动的方法所开发的更精确的感知技术已经取得了重大进展。然而,考虑到所涉及的挑战以及缺乏足够的基础设施平台和对象,将这些技术整合成能够感知、推理和运用到现实中的端到端智能零碎的进展缓慢也就不足为奇了。正是为了加快这一进程,促进该领域更多的创新和研究,微软研究院才建立了景象智能平台,并将框架开源,且设计成了开放和可扩展的。欢迎学术界和工业界的同行来了解和利用景象智能平台,也欢迎大家提供宝贵的意见和建议。

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注