金蝶信息网

视频

当前位置: 首页 > 娱乐 > 视频 > 如何为实时音视频设计小且优的深度学习模型?

如何为实时音视频设计小且优的深度学习模型?

在11月25日,DevFest 2018 在上海如期举行。声网Agora 首席科学家钟声与在座的上千位开发者分享了演讲《Deep Learning for MobilePlatforms: Complexity and Performance Analysis》。以下是由 GDG 整理发布的演讲实录。

如何为实时音视频设计小且优的深度学习模型?

1

关于演讲者

如何为实时音视频设计小且优的深度学习模型?

2

演讲实录

如何为实时音视频设计小且优的深度学习模型?

开场白

最近在微信群里看到一张很有意思的图,大家应该都见过大街小巷地铁站旁边的手机贴膜吧?但这张图的牌子上写的不是「手机贴膜」而是「模型调参」。用这个例子虽然有些不恰当,但人工智能学习算法确实正在成为我们生存的必杀技,可见人工智能有多火。

从 AI 的应用开始

回到我们今天的主题,我想问,今天的午餐和深度学习有什么共同之处?餐盒和黑盒,都是盒子。餐盒有一个沙拉、主菜和餐后的水果。黑盒子打不开、看不到。

今天的演讲试图稍稍进入黑盒里能看一下,作为工程师,我们都想知其然,也知其所以然。我就基于我们所做的工作稍稍解密一下深度学习某些方面。

声网主要提供实时音视频通信传输服务、编解码及前后处理等等,我们更多的聚焦在通信实时交互领域。

现在的社交娱乐应用里面有很多 AI 的应用。美颜,贴纸,包括一些交互动作的识别,变脸、变声都是属于风格转换,AI 算法在这些方面有很好的应用。

除了这些,AI 在后处理端也有很多应用。比如如何提升比较模糊的图像的细节,更清晰地呈现给大家,提高收视的体验;又比如由于网络传输线路上有丢包,接收的数据有失真,这个也可以利用 AI算法来补偿。

AI 在云端也有更多的应用,比如内容的监管,比如黄色图片的鉴别,以及识别暴力图像,还有语音变成文本,以及情感计算等等,这些很多在实时通信领域里有非常好的应用。

超分辨率恢复模糊图像

下面以恢复模糊图像作为一个例子,介绍人工智能的深度算法和应用。

如何为实时音视频设计小且优的深度学习模型?

我们都知道超分辨率(超分,SR)对恢复细节有帮助。在我们的场景下,由于网络带宽受限,会产生丢包,因而此时会以低码率压缩和传输图像,解码出来的图像通常是会模糊一点,影响收视体验。尤其是在直播应用里,用户希望看到清晰的面容和听到清晰的声音。

如何为实时音视频设计小且优的深度学习模型?

超分是我们后处理的一步,作为跟前面的处理不相关的一个处理,这一步放在最后。视频源经过编码在网络上传输,解码器收到后经过解码出来是一个模糊的图像,经过超分辨率处理把细节提升或者放大,再显示出来。

深度神经网络已经被证明了可以较好地生成图像的细节。GAN 模型是一个非常有效的模型,它也是我们超分算法的基础模型,接下来主要是以 GAN 来做性能和复杂度的分析。

GAN 模型

如何为实时音视频设计小且优的深度学习模型?

下面介绍一下GAN 的基本思路。它通常包含两个网络,一个是生成器,一个是判别器,这两个模型以又合作又对抗的方式运作,最后达到一个平衡,使得生成器能够产生以假乱真的数据,例如:

当判别器接收到的是真实的图像数据,判别器会把它接受为一个真实的数据。

当生成器输入的是一个低分辨率的数据,我们想生成高清的数据,希望生成器出来的数据像真的一样。但判别器的任务正好相反,它尽量不让生成的数据蒙混过关,并且要把它踢出去。

一旦被区别出来之后,生成器会反复训练、调参,使得生成的数据更像真的;判别器也会反复训练、努力提高自己的能力,鉴别假数据的能力越来越强。可谓道高一尺魔高一丈,最后二者收敛的时候判别器再也不能区分生成器生成出来的数据是真的还是假的,这个时候的结果就被判别器接受了。

最近几年在顶级 AI 会议上,三分之二以上的文章可能跟GAN有关的。

如何设计小且优的深度学习模型?

众所周知深度学习最好的结果是采用比较大的模型,在比较大的机器平台,比如说服务器,有成千上万的 GPU作并行处理来训练,并且需要有非常大量的训练数据集。

但是现在针对移动设备的应用很多,我们做移动社交、做直播、通讯,面临的挑战是要设计一个小的模型,最好能满足下面三个条件:

这个小模型能够在移动设备上实时地跑,并且不会消耗太多功耗,不会引起发热等等问题。

另外它的结果还要足够好,不能因为模型做小了而没有效果,这个没有意义。

训练要能够基于比较合理数量的数据集就能够取得好的效果,要上百万个甚至上千万个数据往往不够现实,因为数据收集的成本太高。

接下来我们作复杂性分析,我们的目标是缩小模型。来看一些典型的模型,经典的一些作图像分析和识别的深度神经网络,像 VGG 模型,是很大的模型,它的参数个数,也就是权重的个数,是衡量这个模型复杂性的一个重要指标。

VGG16 模型有一亿多个参数。为了在移动平台能够运行,业界做了大量的工作,这些工作包括把这个模型做剪枝、压缩和重新训练模型等,也有通过更复杂的技术,比如通过强化学习来达成一个更小的模型。这些方法都有一些潜在的问题,比如最终出来的结构不够简单,计算量仍然不够少,或者不易于并行实现等。

谷歌在这方面也做了很好的工作,最新的结果是 MobileNet v2 的 340 万个参数,不到 VGG16 参数个数的 3%,缩小了很多,将近两个数量级,非常小。但是对我们来说,340 万个参数的模型还是很大,尤其在移动设备上以软件实现仍不是很理想,当然我们的任务有点不一样,我们是做图像超分,而上述模型是做做物体识别的。

基于 ReLU 的 CNN

我们来看一下基于 ReLU 的 CNN,实际上是分段线性函数,这个很容易理解,尤其是当stride 为1的时候,分段线性的映射还是保持的。

为了更好地理解下面的内容,我再介绍一个概念,就是流型。举个例子来说流型比较容易理解,比如关于人脸的图像,虽然可以是在 1000×1000 个大的尺寸上,有一百万个像素点,但真正表征人脸不需要一百万个点,一两百个参数就可以,实际上在比较低维的一个空间里即可以表征出来,这个过程就是从它的背景空间映射到它的参数空间,或者称为隐空间的过程,这实际上是一个编码的过程,是一个降维处理。

相关信息: