对中国开发者最具吸引力的科技企业有哪些?快来为你 pick 的企业投票! 了解详情
写点什么

超分辨率在移动实时音视频的应用实践

2019 年 11 月 29 日

超分辨率在移动实时音视频的应用实践

在 RTC 2019 实时互联网大会上,声网 Agora AI 算法工程师周世付,分享了超分辨率应用于移动端实时音视频场景下,遇到的难点、通用解决方法,以及解决思路。


近年来,超分辨率(简称超分)在图像增强、去噪、细节恢复、图像放大方面展现出广阔的应用前景,成为计算机视觉领域的研究热点,受到学术界和工业界的关注和重视,业界也纷纷举办超分竞赛,比如优酷的视频超分竞赛、声网的图像超分竞赛和深圳市政府举办的 AI+4K HDR 竞赛,旨在吸引更多的人参与超分算法的研究和促进超分算法的落地。因为超分算法的大规模应用落地还存在一些亟需解决的问题。


移动端实时超分的难点

目前,移动端实时音视频应用目前存在的一个痛点问题是传输的视频分辨偏低,而终端显示屏的分辨率高,存在分辨率不匹配的问题。实时传输的视频分辨率普遍偏低,是由于受到传输带宽的限制和实时性的要求。低分辨率视频不能有效的展现图像细节,因而带来的用户体验有限。为了解决传输视频与终端显示屏分辨率不匹配的问题,通常的做法是将低分辨率视频进行放大。


传统最常用的放大方法是插值法,如 bicubic、nearest、bilinear 等,优点是速度快,但缺点也很明显,即图像放大后,图像存在模糊、细节丢失的现象。



而随着深度学习的出现,基于深度学习的超分已经成为了新的解决方案,也是学术界与工业界都在研究的方法。它能有效地恢复图像的细节,并保持图像清晰度。但基于深度学习的超分算法在落地应用的过程中,也面临着挑战,主要表包括:(1)超分模型过大;(2)超分算法运算复杂。



超分与 Bicubic 对比


目前学术界有两个经典超分模型 SRGAN 和 ESRGAN,如下表所示,我们列出了两个模型的参数量和算法复杂度。SRGAN 和 ESRGAN 的参数量分别达到 150 万和 1600 万,所需要的存储空间分别是 6MB 和 63MB。对于移动设备来说,模型太大,会占用过多存储。


再看运算复杂度方面。以 360x480 大小的图像作为输入,进行 4 倍的放大,SRGAN 和 ESRGAN 的运算复杂度分别可以达到 446GFLOPs 和 3100GFLOPs。而目前主流的手机 iphone XR 的 gpu 的运算能力大约为 500GFLOPs。由此可见,目前的移动设备的运算能力,还无法实时运行现有的超分模型,需要降低模型的算法复杂度和减小模型的体积,才能可能让实时超分模型在移动设备实时运行。



如何降低算法复杂度与模型体积?

降低模型的算法复杂度和减小模型的体积的方法,通常是模型压缩和模型加速。模型压缩的目的,是通过减小模型中冗余的权重,去掉对模型性能贡献小的分支,从而达到减小模型的参数量,降低模型的运算量。而模型加速,则是侧重降低卷积运算的开销,提高卷积运算的效率,从而提高模型的运行速度。模型压缩和模型加速,是相辅相成的,通过合理的模型压缩算法和模型加速算法的结合,能够有效地减小模型体积和提高模型的运算速度。


模型压缩方法,可以分为权重优化和模型结构设计。权重优化也可分为剪枝和量化。


剪枝,是将模型中冗余的权重去掉,以达到模型瘦身的目的。比如,Deep compression[1],通过权值剪枝、权值量化和权值编码,能够将模型的体积减小 49 倍。


权重量化,则将权值以低码率进行存储,从而减小模型的体积,比如,XNornet[2]模型,对输入的 featuremaps 和权值均进行二进制量化,实现 58x 的模型压缩和 32 倍的加速。


经典的轻量级模型有 suqeezenet[3]、mobilenet[4]和 shufflenet[5]。他们从模型结构设计角度来讲,通常会采用小卷积核替代大卷积核,如用 3x3 替代 5x5、7x7, 或者 1x1 替代 3x3。在同等条件下,3x3 的运算是 5x5、7x7 的 9/25、9/49,而且 1x1 是 3x3 的 1/9。


模型加速方法,在 convolution 的基础上,衍生出了 depth-wise convolution、group convolution,point-wise convolution。在 mobilenett 模型中,大量使用了 depth-wise convolution 和 point-wise convolution。而在 shufflenet 模型中,则采用了 group convolution 和 point-wise convolution。



在以上的研究基础之上,声网也自研了超分算法。声网的超分模型的体积,比 mobilenet v2 还要小。对 360p 的图像进行 2 倍的放大时,其运算复杂度小于 2GFLOPs,可实现在移动设备上的实时运行。在运算速度和超分效果实现较好的前提下,有效地提高移动实时音视频的用户体验。


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


原文链接:


https://mp.weixin.qq.com/s/oBrrGAnXvAU4Y2hUfy2R4g


2019 年 11 月 29 日 16:49352

评论

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

美团Java面试一轮游,太激烈了,问啥啥不会,我该怎么办?

比伯

Java 编程 架构 面试 计算机

架构师训练营第 10 周作业

netspecial

极客大学架构师训练营

JDBC【4】-- SPI底层原理解析

秦怀杂货店

Java 源码 spi

区块链创新中国价值链

CECBC区块链专委会

区块链

10.1微服务:服务本身的设计,维护及治理

张荣召

Mybatis【4】-- 关于Mybatis别名定义

秦怀杂货店

Java mybatis

架构师训练营-week10

睁眼看世界

极客大学架构师训练营

架构师训练营3期第一周学习总结

简简单单

年轻人,学好Nginx,走遍天下都不怕

程序员小灰

c++ nginx Linux 服务器 架构师

Mybatis【2.2】-- Mybatis关于创建SqlSession源码分析的几点疑问?

秦怀杂货店

Java 数据库 mybatis

10.7作业

张荣召

Mybatis【3】-- Mybatis使用工具类读取配置文件以及从属性读取DB信息

秦怀杂货店

Java 数据库 mybatis

阿里P8架构师呕心沥血整理的【Docker实战】文档带你玩转Docker。

Java成神之路

Java 程序员 架构 面试 编程语言

两年Java开发经验,面试字节跳动惨遭滑铁卢,努力复习54天二战字节跳动终获offer定级2-2【面试答案+复习资源】

Java成神之路

Java 程序员 架构 面试 编程语言

Mybatis【2.3】-- Mybatis一定要使用commit才能成功修改数据么?

秦怀杂货店

Java 数据库 mybatis

学习总结--week10

张荣召

远程面试蚂蚁金服,三面之后本以为石沉大海,没想到却被直接录取

Java成神之路

Java 程序员 架构 面试 编程语言

阿里P8Java架构师呕心沥血整理出来的[史上最全Java面试题精选集锦]!

Java成神之路

Java 程序员 架构 面试 编程语言

10.2微服务:落地实践的策略与思路

张荣召

10.5软件组件设计原则

张荣召

该怎样才能成为高薪架构师?阿里P8大牛给迷茫的程序员一些中肯建议“请不要再虚度光阴了”。

Java成神之路

Java 程序员 架构 面试 编程语言

C语言常用错误代码释义大全,让你编译运行报错不是烦恼

ShenDu_Linux

编译原理 常见错误

10.4领域驱动设计DDD

张荣召

食堂就餐卡系统 UML 设计

心晴雨亦晴(~o~)

极客大学架构师训练营

作为一个Java开发者连Spring三剑客都没吃透,你拿什么和老板谈涨薪?

Java成神之路

Java 程序员 架构 面试 编程语言

内推阿里,朋友说让我学会这46道面试题,我不信,现在我后悔了

小Q

Java 学习 编程 架构 面试

10.3微服务网关的技术架构

张荣召

【Java基础】-- isAssignableFrom的用法详细解析

秦怀杂货店

Java 关键字

架构师训练营第十周学习总结

Gosling

极客大学架构师训练营

三年Java开发经验,裸辞之后筹备半年时间,四面阿里终于如愿拿到P7级offer【Java岗】。

Java成神之路

Java 程序员 架构 面试 编程语言

Java程序员怎么写简历?你这样介绍项目经验面试官会对你刮目相看

Java成神之路

Java 程序员 架构 面试 编程语言

订阅每周精要 查看样刊

你将获得:资深编辑编译的全球 IT 要闻,InfoQ 出品的课程和线下活动报名通道,一线技术专家撰写的实操技术案例

微信扫码关注,即刻订阅

滴滴 Logi 日志管理与分析平台

滴滴 Logi 日志管理与分析平台

超分辨率在移动实时音视频的应用实践-InfoQ