写点什么

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

  • 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:11850

评论

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

React 19.2 重磅更新!这几个新特性终于来了

Immerse

React Native

降低网络保险成本的实用技巧与网络安全实践

qife122

风险管理 网络保险

【IEEE冠名,香港中文大学(深圳)主办】第五届IEEE能源工程与电力系统国际学术会议(IEEE-EEPS 2025)

搞科研的小刘

国际学术会议 能源工程 电力xitong

嘉为蓝鲸CMeas效能洞察平台:在线SQL编辑支持实时预览,DevOps跨领域洞察更高效

嘉为蓝鲸

数据库 DevOps 研发效能度量 研发效能洞察管理 研发效能洞察

Akka.NET高性能分布式Actor框架完全指南

qife122

微服务 分布式系统 Akka

诗画同源:元器激活想象,混元绘就诗意——让每一首古诗在孩子心中“活”起来

六月的雨在InfoQ

腾讯混元大模型AIGC

将 GPU 级性能带到企业级 Java:CUDA 集成实用指南

程序猿DD

简单高效的SQL注入测试方法:Break & Repair技巧详解

qife122

渗透测试 SQL注入

了解YashanDB中的数据分区管理技巧

数据库砖家

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名媒体系统生态需求洞察

qife122

AI技术 开源生态

【SPIE出版】第五届计算机图形学、人工智能与数据处理国际学术会议(ICCAID 2025)

搞科研的小刘

人工智能 计算机图形学 数据处理 国际学术会议

如何利用YashanDB构建灵活的数据模型?

数据库砖家

鸿蒙应用开发从入门到实战(二十):ArkUI内置弹窗组件

程序员潘Sir

鸿蒙 HarmonyOS

用Comate做个会温馨提示的“纸片人”女友

Comate编码助手

AI 编程 文心快码 文心快码3.5S AI编程助手

大数据-123 - Flink 并行度设置优先级讲解 原理、配置与最佳实践 从Kafka到HDFS的案例分析

武子康

Java 大数据 flink spark 分布式

什么是MES系统,制造业必须搞懂的核心系统

万界星空科技

数字化转型 智能制造 mes 万界星空科技mes 智能化MES

共探数智新路径,嘉为蓝鲸出席2025长三角数字化转型大会,赋能制造业研发运维效率升级!

嘉为蓝鲸

研发效能 数字化转型 智能运维 研运一体化 智能研运

嘉为蓝鲸CCI持续集成平台:双模式增量扫描提效,质量门禁守护代码稳定

嘉为蓝鲸

DevOps 持续集成 CI/CD 流水线 持续集成平台

安势信息亮相2025vivo开发者大会,多维度技术共推生态安全升级!

安势信息

Vivo 安势信息 清源 vivo年度最佳安全业务伙伴 CleanSource

Elasticsearch 备份:snapshot 镜像使用篇

极限实验室

elasticsearch Snapshot backup

工业设计 自控设计经验总结(11)

万里无云万里天

设计师 工业 工厂运维

springboot项目操作mysql出现锁表问题情况

刘大猫

人工智能 智能医疗 远程医疗 临床试验 医学统计

海外原生 App 的开发费用

北京木奇移动技术有限公司

APP开发 软件外包公司 海外APP

工业设计 自控设计经验总结(10)

万里无云万里天

设计师 工业 工厂运维

AI 改变数据库产品实践探索

老纪的技术唠嗑局

AI Agent MCP Server

了解YashanDB中的数据建模基础

数据库砖家

如何构建YashanDB的高可用性架构?

数据库砖家

如何利用YashanDB确保数据合规性

数据库砖家

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