图片来自网络
【编者按】近年来,隐于无形的云计算逐渐深入人心,然而云与端的距离却为云计算的听说读写带来了新的挑战,人与云的互动既需要人与端的交互,也需要端与云的互联。
本文转自“微软研究院AI头条”;经亿欧编辑,供业内人士阅读。
下面就让我们一起回顾一下吕岩博士的演讲——云计算的听说读写:
各位老师同学,大家好。我是吕岩,在微软亚洲研究院主要负责多媒体计算方向的研究。今天主要想跟大家分享一下如何通过多媒体技术和人工智能技术推动人与云的交互,带来一种更新的计算体验,甚至推动计算技术的演进。
我在做硕士课题的时候有一些研究成果(如上图),当时做的是面部表情的识别。大家可以看到,这些表情都非常夸张,有很多表演成分在里面。为什么这样?主要是当时的数据样本很少,采集图像的难度非常大,而我们自己又很难模拟出自然的情绪表情。而今天,因为互联网上有很多表情自然的图像,通过深度学习,已经可以极大地提高识别精度了。下面,我想跟大家分享一下识别算法背后的东西。
面部表情识别只是计算机理解人的行为的一部分,对于计算机来说,真正和人打交道的是多通道的人机交互和用户界面,也就是计算机的输入与输出。
除了传统的键盘鼠标等输入,语音和图像的输入也变得越来越普及。例如,通过语音识别,可以让机器听懂人的命令。通过视频输入,可以让机器识别人脸以及表情等,也就有了看和理解的能力,我们把这种能力称为读的能力。
前面强调的都是输入,对计算机来说,输出也很重要。计算机的输出通常指音视频的输出,例如通过语音合成技术,可以让机器具有说的能力,通过屏幕渲染,可以让机器具有写的能力。我们认为,写就是让机器输出视频,其背后可以是非常复杂的图形渲染过程。
机器的听说读写代表了自然的人机交互,而人机交互是通过用户界面实现的。用户界面对应着对音视频等多媒体数据的处理,所以可以把人机交互抽象为对音视频等多媒体数据的处理。
再来看一下云计算环境下的人机交互。人总是通过客户端与机器进行交互,客户端既包括PC、平板电脑和手机等常见设备,也包括智能电视、智能电器等其它的应用电器。云与端通过网络连接,可以实现存储与计算的共享。
存储与计算背后对应的也是数据的处理,例如计算,就是对代码和程序的执行过程。用户界面也对应于对音视频等多媒体数据的处理,而这个处理的过程,既可以在端做,也可以在云里做。所以说,云计算的听说读写,就是在云里对用户界面所涉及到的多媒体数据进行处理。大多数用户界面需要实时处理,具有低延迟的反馈,因此需要云与端的同步,而多媒体技术是实现云与端同步的关键。所以说,多媒体技术不仅仅可以给用户带来视听的享受,还可以推动计算技术的演进,甚至是一场革命。
今天主要想跟大家分享两个项目,一个是云中的屏幕,另外一个是云中的视觉。第一个,主要是把视频作为一种输出,背后的技术包括多媒体技术,还有一些图形渲染的技术;第二个项目主要是把视频当成一种输入的数据来看待。
云中的屏幕这个项目我们已经做了大约十几年了,但是我认为直到今天,相关的研究内容还是很有价值的。我们很早的时候就把这种屏幕渲染的工作拿到云端去做,把屏幕扩展成一个更广义的用户的输入与输出的数据。这样,所有的人机交互工作,我们都可以把它抽象成一种对数据的处理,也就是对输入和输出数据的处理。
但是作为研究员来讲,我们更多的是想怎么样实现这样的技术,例如,这些屏幕从哪来?所以我们在想,能不能通过云端生成这样一个屏幕,把它投影到不同的显示设备上。它的好处就是,当我从一个房间换到另外一个房间时,所有的内容都可以跟着我走,可以跑到我周围所有的显示设备上去,这样通过云或者超强的服务器来实现屏幕渲染,即可以简化系统。
除了这些超炫的显示设备,我们回过头来看看现有的有显示功能的计算设备,如手机、平板电脑、智能电视等。我们认为这些设备通过网络连接起来,就可以建成一个私有云,或者叫做设备云,再和公有云结合起来,就形成了一个完整的云环境。
搭建这样的云环境,并不复杂,通过用户界面的虚拟化就可以实现。虚拟化的好处是可以尽量利用现有的应用。通过虚拟化,可以将包括云在内的各种设备的输入、输出等模块暴露出来并共享给其它设备使用。譬如说,我们可以将Xbox上渲染的内容在平板电脑上显示,同时将平板上的输入反馈给Xbox,这样就可以在平板上玩Xbox的游戏。这个功能目前已经在Windows系统中实现了。实现这个功能,主要是通过用户界面,特别是屏幕做虚拟化,然后对屏幕视频进行压缩和传输。
刚才提到的关键技术是设备的虚拟化。虚拟化包括计算和存储。当然,我们更关注它的输入和输出,如果我们把输入和输出虚拟化,然后对这些相关的数据进行压缩再传输,从而实现云和终端之间的同步,那么我们就可以认为这个计算可以在任何地方进行,它的显示、输入可以在另外任何一个其他的地方得到结果。
这是一个用户界面虚拟化及串流的基本过程。看似这个过程比较简单,但是挑战却非常大。通常流媒体可以允许一定的延迟,例如几百毫秒,甚至几秒的延迟。而云与端显示内容的同步要求延迟最多几十毫秒,甚至接近于0。用户界面的同步,既包括输入的同步,也包括输出的同步,所以屏幕视频的数据量极大,因此屏幕视频的压缩也是关键。
上图是一个典型的计算机屏幕图像,它和传统的自然图像不太一样。首先这里有很多文字,还有一些文字在图像上。我们当然可以用一些传统的视频压缩算法来压缩,但效率不高,也很难保证文字部分的视觉质量。
所以我们组开发了一些新的屏幕图像压缩算法,主要是对屏幕内容进行分析,对文字丰富的区域和自然图像区域采用不同的编码方法。这样不仅可以提高编码效率,还可以针对输出设备的不同,做一些增强的显示。现在,一些视频编码标准也开始关注屏幕视频的压缩,我们研究组有几项技术被国际最新的编码标准H.265所采纳。
大家想一想,如果能对图像进行内容分析,那么就可以实现更多的功能,比如一个图像显示在电视上和手机上,我们关注的重点是不一样的,我们想把它自适应地显示到所有的显示设备上,这就需要一些智能的处理,在这个里面的研究内容会非常的多。
刚才介绍的是把视频作为一种输出,实际上视频还可以作为一种输入,在几年前这个可能听起来不是那么容易理解,但是今天以图像、视频作为输入的系统已经有很多了。微软推出的认知服务,就包括了计算机视觉API等,通过上传图像到云端,就可以识别图像中的人脸,表情,年龄等,然后再返回给用户。但是要把视频作为输入,就相当的具有挑战性。如果是离线应用还好,不需要太在意延迟,但如果需要实时交互,则对视频处理的实时性要求更高。因此,我们研究的重点就是实时的、低延迟的智能视频分析。
以会议场景为例,在会议室里面如果有一个摄像头可以把周围的场景拍摄下来,它就可以做很多事情,比如可以用手势来控制演讲的幻灯片播放等。
大约三、四年前我们开发了一个采用ARM CPU的小盒子,它可以连接上投影仪和Kinect,一方面实现无线投影的功能,另一方面还可以通过Kinect实现手势控制。要知道,Kinect原本是连接到Xbox上的,在Xbox上实现手势识别,但我们做的小盒子处理器能力较弱,所以需要服务器或者云的帮忙。
在云端做识别还有一个好处,就是识别算法的更新升级可以更快。这样,就需要深度图像的压缩和传输。解压缩的图像不是为了看,而是为了识别,因此对压缩算法的设计要求就有所不同。另一方面,我们的手势有时是为了控制,有时是为了演讲的需要,因此我们可以有选择地控制采集频率。总之,在这样的系统中,需要综合考虑计算机视觉、视频压缩和多媒体通信等领域技术,使它们协同工作。
前面的应用主要是以视频作为输入,由用户来主动控制计算机,而更加智能的应用则是让计算机主动地理解环境。以会议场景为例,机器如果知道在会议室的某个角落有几个人在交谈,它可能会把一些灯光切到这个地方,或者是做一些相关的操作,比如把会议内容摘要记录下来等等,这些都需要对整个环境进行理解。
对人的理解和动作的识别,是以对人的检测和跟踪为基础的。所以,在智能视频分析上,我们重点关注的是实时的多目标检测和跟踪,特别是人的检测和跟踪。
人体是非刚体,所以人体检测通常比人脸检测更难,更具有挑战性。而深度学习和卷积神经网络的发展极大地提高了精度,但也带来了极大的计算开销。目标的跟踪是在目标检测的基础上进行的,算法的执行比较快,但算法通常很复杂,处理的情况很多。例如,当一个人被遮挡后,在重新出现时需要保持ID不变,也就需要Re-ID的技术。我们在目标检测和跟踪上都有一些核心算法。在一些公开的数据集上也有很好的排名。
那么到底应该在云里做,还是在摄像头里做?
我们针对现在的算法做了一些实验。如果在摄像头上做人体检测,在保证精度的前提下,基本上需要1秒1帧。而人体跟踪可以比较快,所以可以做到60毫秒1帧。显然,这个速度满足不了实时的要求,如果在云或者服务器端做,速度可以很快,但是把视频上传到服务器的代价也比较高,容易产生比较大的延迟。
所以,最直接的想法就是采用云和摄像头的混合方案,把关键帧送到云里做人体检测,再把结果返回摄像头继续做人体跟踪。这样,大部分视频帧是在摄像头直接完成的,减少了视频传输的开销,也减小了延迟。
当然,对关键帧的人体检测仍然会有比较大的延迟,在算法实现上还可以通过前面目标跟踪的结果加速目标检测的过程。总之,实际的算法会相对比较复杂,流程涉及到的一些小算法比较多,需要合在一起才能得到一个比较完美的结果。这也是我们组现在研究的重点。
给大家看看这个结果,这是一个人的检测算法,大家可以看到,如果我们想在高端机器上去做,结果会变得很完美,但实际上因为是在摄像头里面做的,所以有时候稍微有一些抖动,但是整体的结果还是相当棒的。
我们可以检测出人的位置,而且能把他的ID保持不变。这个位置的定位很有意思,我们是通过单一摄像头来实现的,所以也是一个简单的算法,基本上就可以把每个人的位置算出来。后面是车的检测,其实车的检测相对来说会容易很多,基本上所有的车都能检测出来,主要是因为人是非刚体。
总结一下,今天主要介绍如何通过多媒体技术连接云与端,通过用户界面的虚拟化为云计算带来智能的交互。重点讲了两个项目,云中的屏幕和云中的视觉。通过这个报告,想告诉大家我们既做基础算法研究,也做交叉学科的系统研究,包括云计算、移动计算、计算机视觉、机器学习、多媒体计算与通信等不同的领域。