情景智能平台:多模态一体化人工智能开源框架
编者按:如何构建能够实时感知、理解并在人类世界中行动的人工智能系统?事实上,要建立这样的系统需要组合和协调不同的人工智能技术,将多种人工智能技术(如机器学习、计算机视觉、语音识别、自然语言处理和对话管理等)结合在一起。最近,微软研究院推出的情景智能平台(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);
图2:有了情景智能平台,开发人员可以很容易地实例化和连接组件,以构建多模态集成 AI 系统的处理管道。上面展示了一个示例管道的结构和相应的代码。
情景智能平台的 GitHub 资源库包含了一个不断发展的组件生态系统,这些组件包括各种传感器,包括摄像头、麦克风和深度传感器等;同时也有处理技术,包括成像、音频、视觉、语音和语言处理技术等;还有用于运行机器学习模型和访问云服务(如微软 Azure 认知服务)的组件,等等。再加上前文所述的编写应用程序管道的简单性,这套现成的组件促进了再次利用,并支持快速原型设计。当然,该框架还允许开发人员轻松地编写和使用新组件。
虽然基于组件的开发是一项重要的软件工程技术,但情景智能平台所提供的好处和优势远不止于此。该框架提供了一个运行时系统(runtime)和现代化的流基础平台,这些基础工具专门针对多模态集成AI应用程序的需求进行了定制和优化。
一旦创建了应用程序管道并调用了 Run() 方法,情景智能平台将负责运行管道。运行时系统在流上承载消息,并通过调度消息传递来编排组件的执行。在这个过程中,运行时系统利用了管道的并行性,其目标是在多核执行环境中高效使用 CPU 资源,同时在高负载下提供良好的性能降低。
图3:情景智能平台运行时在流上调度消息传递并协调组件的执行。
除了严格的性能要求外,当涉及到时间推理以及对数据同步和融合的支持时,多模态应用程序也有一组特定的需求。通常,组件可能需要同步或融合不同路径的数据流。在上述示例中,语音源检测器将来自语音活动检测器的结果与来自唇动检测器的结果进行融合。简单的方法是在消息到达融合组件时对它们进行配对。但是,如果语音活动检测器和唇动检测器组件拥有不同的延迟,则可能导致产生不正确的结果。因此,需要对数据流进行适当的协调,如对延迟进行统一。如果没有适当的工具对这些操作进行支持,那么就需要投入大量的开发工作来解决低级的同步和协调问题。
情景智能平台通过将时间作为底层流基础结构中的主要构造来解决这些挑战。组件创建的每个消息都带有一个包含其创建时间的包封。此外,包封包含一个原始时间,并由初始传感器组件进行分配,对应于与该消息相关的初始信号首次从现实世界进入管道的时间。当消息通过应用程序管道向下游流动时,此初始时间将随每个消息自动传播,从而使所有组件都能够知道延迟,也就是说,从消息的初始时间到它实际到达应用程序管道中的给定组件所经过的确切时间。
初始时间为合适的同步和数据融合提供了基础。实际上,情景智能平台框架提供了一套功能强大的操作,用于融合、同步、插值、采样和窗口化,将底层的细节(如并发、缓冲和等待消息到达)抽象在一起,从而使开发人员能够专注于高级别的任务。
除了时间推理之外,多模态集成 AI 应用的另一个核心需求是对数据记录和实验的支持。多模态应用程序的开发通常是一个数据驱动的开发周期,在该周期中,数据被收集并用于调优和迭代地改进应用程序。情景智能平台中的流基础工具支持从底层开始的高吞吐量数据日志记录。运行时系统动态、自动地生成高效的序列化代码,将任何数据类型持久化到磁盘,从而最大限度地减少开发人员的工作。而持久性系统被设计为尽可能多、尽可能快地支持日志记录。
持久性系统还记录了每个单独消息的时间信息,从而支持管道重播场景。在开发复杂的集成应用程序时,必须通过一遍又一遍地“实时”运行来调优或调试应用程序,这通常是非常耗时和昂贵的。而使用情景智能平台,开发人员可以试验和执行管道,其中一些流会“重播”以前在磁盘上捕获的会话。用于数据融合和同步的流运算符则确保了结果的可重复性,并且管道可以以重播模式执行,这一方法与实时传感器数据运行时相同。
上面只是介绍了情景智能平台基础设施的几个核心概念和功能。该框架还提供了许多附加功能来处理流数据,比如一种用于操作通用数据流的丰富的流运算符语言,各种调节流量的控制和节流机制,自动数据克隆以确保并发执行环境中的组件隔离,支持构建结构依赖于流经管道数据的动态管道,以及当管道处于稳定状态时,用于最小化垃圾收集的共享内存机制和优化。(了解更加全面、专业的内容,请点击阅读原文 )。
尽管与流数据一起工作的多模态集成 AI 应用需要特定的平台工具来高效运行,但它们更广泛的开发周期也有一些特定的需求,然而目前可用的通用软件工具还不能充分满足这些需求。调试、维护和开发通常是数据驱动的,且涉及运行应用程序、检查结果、诊断和微调的多次迭代。可视化各种组件在一段时间内生成的数据以及检查组件如何处理特定数据点的能力至关重要。对收集的数据进行分析和查询、对数据的注释和直接交互以及运行批量处理任务的能力则可以进一步加速开发。
该框架通过情景智能平台 Studio 解决了其中的几个需求,这是一个支持多模态、时态数据可视化、注释和处理的工具。下面的视频展示了该工具的实际应用。一名开发人员正在可视化通过样例应用程序收集的数据,其中 Azure Kinect 设备用于检测和识别用户所指向的对象。该样例应用程序确定了人的指向方向,将光线与深度图中的点云相交,再将交点投射回 RGB 相机,然后在其周围裁剪图像,并运行用于对象检测的云服务。该视频展示了应用程序生成的不同数据流的各种可视化工具。
情景智能平台 Studio 上可视化工具的视频
通过使用情景智能平台 Studio,开发人员可以使用各种各样的可视化工具——从简单的数字流到音频、视频、3D 对象和直方图——在应用程序持久化的数据流上构建复杂的可视化。而且开发人员还可以很容易地浏览数据,检查数值,选择片段并以不同的速度播放片段。该可视化工具可以以多种方式配置,开发人员可以为自己的数据类型创建和添加定制的可视化器。该工具还允许在布局中轻松组合多个可视化工具,并且这些布局可以保存和共享。此外,数据可视化不仅可以基于保存在磁盘上的数据离线完成,还可以在应用程序运行时实时完成。而且可视化基础设施还允许开发人员在自己的应用程序中使用这些可视化工具。
情景智能平台 Studio 的其他特性:
管道可视化:开发人员可以可视化并检查应用程序管道的结构及其随时间变化的行为。并且这个可视化可以进行配置,基于各种相关的统计数据为应用程序管道着色。例如,根据平均消息延迟,对流应用热图着色,从而可以揭示管道中哪些组件变慢,以及它们在什么时间变慢。
数据注释:开发人员可以基于自定义注释模式构造时态注释。带注释的数据本身作为流保存,以支持各种半自动的数据标签和训练场景。
数据处理:应用程序在一段时间内记录的多个会话可以组合成更大的数据集。该工具支持加载开发人员定义的批量处理任务,并在数据上执行这些任务,而且可以结合原始流可视化结果。对于非 UI 自动化,也可以通过命令工具使用这些数据处理功能。
在多模态、一体化的人工智能系统领域,有趣的研究和新颖、实用的应用有着巨大的潜力。近年来,利用数据驱动的方法所开发的更精确的感知技术已经取得了重大进展。然而,考虑到所涉及的挑战以及缺乏足够的基础设施平台和工具,将这些技术整合成能够感知、推理和应用到现实中的端到端智能系统的进展缓慢也就不足为奇了。正是为了加快这一进程,促进该领域更多的创新和研究,微软研究院才建立了情景智能平台,并将框架开源,且设计成了开放和可扩展的。欢迎学术界和工业界的同行来了解和使用情景智能平台,也欢迎大家提供宝贵的意见和建议。
你也许还想看: