2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

  • 2019-11-30
  • 本文字数:2463 字

    阅读完需:约 8 分钟

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

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

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


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


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

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

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


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


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


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

基于 ReLU 的 CNN

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


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


反过来从这个低维空间到高维空间是一个解码的过程,是一个生成器。一般来说编码是把数据压缩到更低维的参数空间,叫隐空间。存在一个映射,从高维流型到低维的空间之间,正映射和逆映射都是连续的,这就是同胚映射。我们想隐空间这个低维的参数空间里做些操作。


刚才说过深度学习实际上是一个分段线性的映射,它是对流型的一个分段线性的逼近,比如这个模型比较简单的时候,它是以两条线来逼近,模型复杂的时候以四条线來逼近,这时逼近的程度更高。实际上一个更复杂的深度学习网络能产生的效果更好,逼近的精度更高,当然它的复杂度也更高。


另外,不同的逼近方法达到的效果也不一样,换一个方式可能逼近的更好,实际上不同的权重对应不同的映射,对应不同的逼近效果,我们训练的过程就是在找一个最优化的逼近,至少是找一个局部最优化的逼近过程,使得它达到的效果某种意义上是最优的。精度是由逼近的质量来衡量的。


我把我们的结果报告一下,最后做到了只有万级的参数个数,比谷歌的用于移动设备的 MobileNet v2 模型还小了两个多数量级。声网模型不到它的 1%,进一步小了非常多。通常模型变小之后会有一个问题,GAN 本身隐含的问题就变得更突出,模式坍塌就是其中一个问题。

模式坍塌

模式坍塌是什么问题?生成器很难学习多模态的分布。举一个在圆环上的八个高斯分布的例子。生成器想学习这个分布,但是在一个简单模型的训练的过程及最后结果都只能收敛到其中一个高斯分布。用在实际应用的例子上,比如生成数字,我们期望它像第一行图像中这样能生成 0-9 的各个数字,但是很容易它就像第二行这样只能生成其中一个数字,比如总生成 1 或者某个含混难辩的数字,因为 1 容易在判别器那里蒙混过关,这虽然做对了,但是它生成不了别的数字,用处不大。


如何解决这个问题或者缓解这个问题呢?我们做了一系列的工作,简单来说,我们加了一些约束,加了对局域的约束,加了对切空间的约束,再加了对隐空间的优化,接下来不能一一讲述,就简单讲解一下对隐空间的优化。

隐空间的优化

刚才我提到过 DNN 实际上是把一个流型往隐空间或者参数空间做映射。一个图像通常被编码到一个低维的空间,就是隐空间。这里给大家做一个直观的解释,我们直接在这个编码空间,即隐空间里来做恢复,先在隐空间里均匀的去采样一些点,然后再通过这些点输入到生成器,生成器重构出来的图像点,把它们重叠到原来的图像上,有些恢复出来的点很密,但是有些地方比如头部脸部就很稀疏,这就意味着头部的恢复很差。生成器坍塌到一个局部最优,这个重构是很难或者不太容易得到很好的结果。当然我们可以更密集的取些采样点,最终头部也被覆盖到,但是代价会很大。


我们可以把这个隐空间先做优化,再在上面做均匀抽样,再把它输入进生成器,生成器出来,抽样点还是这么多,重构图像出来的重构点也是均匀的,也就是从这个点云里出来的东西也是均匀的。


打个比方,我们拿一张平的纸,使用各种不规则的方式任意折叠起来很多遍,你被要求在折叠起来的一团纸上抽取一定的采样点,然后把纸展开恢复平整后要求这些采样点是均匀的。这个很难,一般做不到,除非用暴力取足够多的点出来。但那样复杂性很高,与我们的目标相悖。我们想同时控制复杂性又控制效果。我们把类似的隐空间优化应用到了我们的模型训练里。因为我们最终模型的参数非常小,所以功耗在 iPhone7 上很少,另外手机也不会发热。效果基本上我们能做到,比如说一个 360P 的视频,出来的效果能够达到在 720P 的效果,能得到一个高清的效果。


我们未来还想从数学更多的理解一些深度网络,对某个点、某个问题上能够用数学的方式来描述,来进一步提高图像清晰度。这是我们未来要做的工作,谢谢大家。


本文转载自公众号声网 Agora(ID:shengwang-agora)。


原文链接:


https://mp.weixin.qq.com/s/G7uRFUoBMfFKMwf2vH-eJA


2019-11-30 22:11844

评论

发布
暂无评论
发现更多内容

云计算、大数据已经过时?不,正是因为它们RPA才能大流行

王吉伟频道

人工智能 云计算 大数据 RPA 自动化

来自农村的大学生开发者,用技术改变自己的家乡

华为云开发者联盟

开发者 物联网 IoT 华为云 智慧大棚

Linux 多线程详解 —— 线程创建、终止、等待、分离

赖猫

Linux 多线程与高并发 服务器开发 Linux服务器开发 Linux线程

数仓GaussDB(DWS)全量备份总结

华为云开发者联盟

数据安全 GaussDB 备份 Roach 数据备份

【万字好文】一文看懂持续部署按需发布!DevOps部署和发布方法大全

京东科技开发者

DevOps SaaS

挑一个产品,想一个你想做的新功能,然后写个相对完整的文档

mas

Elasticsearch search scroll 游标查询

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

一文帮你搞懂 Android 文件描述符

vivo互联网技术

android 文件 文件系统

ICDAR2021首届文档图像与自然语言处理研讨会征稿开始

爱极客侠

基于GES图数据库的大规模数据追溯服务优化

华为云开发者联盟

数据 华为云 图数据库 数据追溯 华为云GES

第五六周心得

Trigger

极客时间 产品经理训练营

玩家永远是对的——认知失调

Justin

心理学 28天写作 游戏设计

Atlassian Data Center 如何优化企业中新员工的远程入职流程

Atlassian

HR Atlassian 远程工作

力扣(LeetCode)刷题,简单+中等题(第29期)

不脱发的程序猿

面试 LeetCode 编程之路 28天写作 算法面经

产品文档总结

mas

在云中应用自动化的5种方法

云计算

一文详解什么是可解释AI

华为云开发者联盟

AI mindspore Gradient GradCAM RISE

可视化表单编辑器

day day up

如何实现在直播中播放音频文件

anyRTC开发者

音视频 WebRTC 直播 RTC 音频

一个100%省力的,让城市管廊运维变得轻松的秘诀

一只数据鲸鱼

物联网 数据可视化 智慧城市 3D可视化 智慧管廊

3月份开始了

Nydia

算法刷题提醒——微信小程序 [持续优化ing]

小匚

深度思考 随笔杂谈 成长与思考

产品更新 | 阿里云CDN边缘图像处理功能开放内测

阿里云Edge Plus

CDN 边缘计算 图像处理

设计模式【3.1】-- 浅谈代理模式之静态、动态、cglib代理

秦怀杂货店

动态代理 代理模式

滚动加载的网页只需点 10 下鼠标即可抓取,无编码学爬虫之四

梦想橡皮擦

Python 28天写作 3月日更

To B产品经理需要哪些能力呢?

博文视点Broadview

MySQL异常问题经验贴

华为云开发者联盟

MySQL 数据库 时区 SSL 连接

产品经理如何帮助减少技术债务 ?

禅道项目管理

产品 代码规范 技术债

架构学习20210302日(001)

张小胖

第五周

Jove

区块链助力山东文化旅游整体行业解决方案

源中瑞-龙先生

如何为实时音视频设计小且优的深度学习模型?(下)_文化 & 方法_声网_InfoQ精选文章