写点什么

腾讯会议如何进行视频质量评估与优化?

  • 2020-12-26
  • 本文字数:4279 字

    阅读完需:约 14 分钟

腾讯会议如何进行视频质量评估与优化?

腾讯会议系统中,视频质量是影响用户体验的主要因素,对视频质量进行评估和优化是吸引和留住用户的关键。在开发腾讯会议质量评估系统的过程中,有哪些技术难点和相应的解决方案?本次分享共包括四部分,第一部分是视频质量评估的背景介绍;第二部分,介绍在视频会议这种实时通信系统中,与质量损伤相关的环节及对应的优化策略;第三部分,介绍针对腾讯会议场景所开发的基于深度学习的全参考视频质量评估算法;第四部分是围绕腾讯会议搭建的一个端到端的质量评估系统,它能够对会议进行自动化评估和监测.


一、什么是视频质量评估


视频质量评估致力于评估视频的人眼感知质量,总的来说有两种评估方式


  • 主观质量评估,依赖人眼观看并打分,这种得到的分数比较精确,但是很耗时间,而且不方便大规模部署。

  • 客观质量评估,主要是计算损伤视频的质量分数。评价一个算法的好坏就是衡量主观分数和客观分数的相关系数,一般来说系数越高越好。


客观质量评估算法大概分三类,主要取决于是否使用无损的源视频作为参考。


  • 全参考,比如 PSNR 就是典型的全参考算法,通过与源视频进行各种层面比对,来衡量损伤视频的质量。

  • 无参考,有的算法不使用源视频,只使用接收端的视频,来衡量它自己本身的质量。

  • 部分参考, 比如从源视频中提取一个特征向量,特征向量随着损伤视频一块发送到用户端用来计算质量。视频会议这种场景要做全参考本来是不现实的,因为不可能把本地无损的源视频送到用户端或者其他地方计算质量,我们这次所做的工作就是把会议这种典型的实时场景转化成一个可以使用全参考算法离线优化的场景



根据视频内容,视频质量评估可以分为 PGC 质量评估和 UGC 质量评估。PGC,就是专业制作内容,比如传统的电影、电视剧,它的内容,设备、光照、演员各种指标都是接近完美的状态。UGC 是用户原创内容,像短视频、直播、实时视频通话都属于这一类。


UGC 对视频质量优化提出了更多挑战。下面的图表给出了原因,右上角这个代表着传统的 PGC,而 UGC 可能属于四种情况中的任意一个。对于传统的 PGC,大家基本默认很难增强它的质量,像素改变越多它的质量会越低。而 UGC 情况就比较复杂,有的视频可以通过算法,渐渐增强质量,但是如果做的过的话反而又会降低质量;有些视频的特性是,在小范围内调整它的质量几乎是不变的;还有些视频,这种比较少,质量改变和像素改变几乎成线性关系。会议这种场景就属于典型的 UGC 场景



考虑到拍摄、构图、色彩、相机的稳定度等,相比 PGC,UGC 都更难优化。而且,PGC 优化可以参考源视频,运用全参考算法,而 UGC 并不是传统意义的无损源,所以 UGC 对视频质量评估领域提出很多挑战。


二、实时音视频通信系统中质量相关模块


下面结合会议这种实时通信系统来介绍和质量损伤有关的模块。总体来说,实时通信包括发送端采集“源视频”,这里加了个引号,来说明并不是传统意义上的无损源。采集环节之后,是预处理环节,比如背景虚化、各种增强,然后是编码、上行码流经过网络传输,接收端接收下行码流,然后解码再经过后处理,再渲染得到损伤视频。质量评估在于哪儿呢?在接收端,质量评估去评估损伤视频的质量,后面的所有模块对质量评估来说都是一个黑盒。



在会议实时通信过程中,网络可用带宽是限制整个系统的瓶颈。可以通过二阶统计量来描述带宽,一个是平均可用带宽,它决定了视频编码出来的平均码率,另外一个是网络实时抖动决定了最高码率。因为如果网络在某一段时间带宽比较低,而码率持续的比较高,就会引起卡顿、丢帧甚至掉线等等,当然也可以通过在某些部位加一些缓冲区增强它的稳定性,但是缓冲期一般会增大时延。


对于编码器来说,就是给定一个恒定码率,编码器要调整编码策略,一般通过调节 QP,也可以通过调分辨率、或者调帧率来把编码码流对齐到目标码流


先说一下帧率,因为帧率对视频质量的影响远远大于分辨率和 QP。对比下面两个视频,左边是 24 fps 其实它压的比较厉害,QP 是 36;右边的经过两次时域 SVC,只有 6fps,QP18。本来右边画面质量更好,但是它帧率更低,跳帧对质量的影响很大,所以有些人会觉得右边视频质量反而没有左边的好。



接下来看 QP 和分辨率。视频压缩失真引起主要的质量损伤,也就是说给定一个目标码率,要通过适配一定的 QP 和分辨率策略,来达到给到的码率目标。



下面以传统的 PGC 优化分辨率和压缩比的组合作为例子,讲一下优化编码策略,这两个材料都来自 VMAF。


左边这个图给出了一些码率和视频质量的组合,这里面有三条黑色的线,代表着同一个视频不同分辨率的版本,红色的线 Convex Hull 是结合这三个分辨率找出最优曲线,在码率确定的时候,只要找到和 ConvexHull 接近的点就是在当前场景下应该采用的分辨率。


右边是传统的基于反复测试得到的关于 PGC 视频的码率表,可能现在业界也有些人用固定的码率表,但是那个码率表要么是基于经验,要么是基于自己的反复测量的结果,没有经过太多优化。对于会议这样一个场景,腾讯会议也想要一个它的 convex  Hull 和码率表。



三、腾讯会议自研全参考视频质量评估算法


基于前面讲到的内容,腾讯会议开发了一个实时视频全参考质量评估算法。因为视频编解码是整个系统中的核心模块,所以我们希望这个视频质量准则有足够的精确度和区分度来衡量编解码器细微的差异。


我们测试了已有的图像质量评估算法,包括 PSNR、VMAF 等等,发现他们有的对于网络波动区分度不够,有的对时域上的运动信息或质量波动把控不够,测试完后觉得这些算法并不满足需求。


于是腾讯会议使用深度学习设计了一个新的网络,来自动学习视频质量的相关特征,然后在 PGC 数据集上训练得到一个通用的网络。而对于 UGC 的网络,我们构建了一个新的主观质量数据库来调优模型。



这是腾讯会议开发的视频质量评估算法,名字是 Video Quality Assessment with 3D Convolutional Neural Network。这里面一个大的创新点是使用三维卷积核来提取时空联合特征,使得视频质量和时域运动大小更相关。


这个模型是用 PyTorch 开发的,也在 VideoSet 这个 PGC 主观数据库上进行了预训练,用额外收集的会议视频质量数据库进行微调。对应的算法开源在腾讯的官方 Github 上,算法名字叫做 DVQA,感兴趣的话可以看一下。



下图给出我们所设计的神经网络结构图,它的输入包含两部分,损伤的视频帧 (distorted frames)和 residual frames,这两部分相加就是源视频帧。前面黄色框是两层二维卷积网络,然后经过四层三维卷积得到失帧可感知度的阈值,再把阈值和 residual frames 乘起来,最后是一个 Pooling 和两层 FC 层,来把得到的特征 regression 到最终的 score 上面。 


下面的例子更直观一些,图(b)中小女孩的头发区域,头发比较黑而且纹理复杂,在人眼视觉下,如果头发区域有一些压缩失帧是很难看出来的,图(g)是神经网络学习的结果,这片是黑色,也就是说可感知失真很小,那么这个神经网络学习到的特征和人眼视觉感知特征是一致的。图(i)中砖块是相对平滑的区域,如果在这里有损伤应该是比较容易被看出来,那么在神经网络学习的图(n)中也是同样的结果。



前面讲的都是基于 PGC 数据库的例子,我们的 UGC 的数据库还没有公开出来。我们在 LIVE 和 CSIQ 两个公开数据集上把我们的算法同其它算法进行比较。从下面的表格可以看出,我们算法的性能在大部分情况下是领先的。



大家知道,要训练一个深度学习算法,需要很大的数据库来支持。可能会有人问,你们这个算法用的数据库是什么?左边这个表给出了现在业界常规的主观质量数据库的大小,总共的视频包括源和损伤视频大概在 100、200 左右甚至几十个,这里面还包含着一个源和一个源对应的五个或者几个损伤视频。其实真正的源算下来也就十个左右。用这样的数据量去训练网络还是是比较困难的。


所以,腾讯会议搭建了一个在线视频质量打分平台来收集视频的主观数据,这个打分平台既有 PGC 也有 UGC。网址是 mos.medialab.qq.com,大家可以体验,右边是看完视频展示之后的打分界面。


这里的例子是采用 AB tst 模式,每次播放两个视频,一个源,另外一个是处理过的。两个是随机模式,看完之后会问志愿者,觉得第一个视频质量效果好还是第二个好,还是觉得两个都一样,选完之后可以进入下一个比较。腾讯会议收集了超过 100 多万次打分,对上百个源视频进行了打分。



我所在的质量平台组负责腾讯会议的专项测试工作,包含性能、码率、抗性、时延、音画同步,其实这也是网络组需要的参数,还包括最终的视频质量。根据实践,前面这些像性能、码率、抗性、时延、音画同步都可以借助专门的硬件和软件测出来,而对于视频的主观质量,我们更多时候是通过人工看来判断。


另外,视频会议一直在快速迭代,有很多版本,其中比较头疼的是需要对齐电脑当前的本地环境和网络环境,如果这两个对不齐的话,版本比较结果不容易让人信服。



四、腾讯会议自研端到端质量评估系统


腾讯视频也开发了端到端自动的质量评测系统,这是整体的框架图。其实它的策略相对来说没那么复杂,就是在发送端播放源视频,经过可控的损伤网络之后,另一边是接收端,在接收端捕获会议呈现的画面,把这个画面拿出来再结合发送端的源视频去计算它的质量分数。前面提到的性能、码率这些绝对的指标都可以得到,抗性更多取决于什么样的网络情况下体验特别糟糕,时延、卡顿、音画同步、包括帧率都可以通过比对这两个视频得到结果。经过几个月的努力,这个系统已经实现完全自动化。



这是端到端质量评估系统的外部交互界面,叫 RTQoE-Real  Time  Quality of  Experience。在这个系统中,可以选定源视频,可以选定上行和下行的网络状况,提交任务之后就是发送端、接收端各自完成之后去算对应的指标,然后在这里展示出来。



下一步的计划,是在 RTQoE 系统中引入 temporal 纬度。上面的模型目前只能做调 QP 和调分辨率这两个组合的方式,引入 temporal 纬度后就变成 QP、分辨率、帧三个组合,一起衡量网络波动对视频质量的影响。


五、Q&A


Q:能介绍一些公开的 PGC 数据库吗?


A:腾讯会议的 PGC 数据库是公开的,搜索 Videoset 应该能搜到,如果找不到的话可以查一下代码库,里面提到了数据库在那里可以下载。


Q:网络如何影响视频质量评估?


A:这里面包含丢帧的情况。因为网络决定了分辨率和编码器的编码策略,调 QP、调分辨率、调帧率可能取决于不同的厂商。实时的网络波动也会影响丢帧的情况。腾讯会议计划引入 temporal 纬度衡量网络波动,这里有两个目的:一个是网络波动对丢帧的影响,另外一个是网络可用情况对编码策略的影响,怎么调 QP 的、怎么调分辨率、怎么调帧率的,是这样一个问题。



头图:Unsplash

作者:王海强

原文腾讯会议如何进行视频质量评估与优化?

来源:腾讯多媒体实验室 - 微信公众号 [ID:TencentAVLab]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2020-12-26 19:554042
用户头像

发布了 38 篇内容, 共 79571 次阅读, 收获喜欢 31 次。

关注

评论 1 条评论

发布
用户头像
腾讯会议很好用,不过吃电太厉害了,日常用一天的 macbook,开会只需要 1 个小时,吃掉 70% 电池,恐怖。
2020-12-26 21:23
回复
没有更多了
发现更多内容

宝兰德应用服务器软件与华为云GaussDB完成兼容互认证

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

分类树,我从2s优化到0.1s

Java你猿哥

Java 算法 ssm 分类树

Y组合子的一个启发式推导

canonical

函数式编程 函数式 Lambda演算 Y组合子 不动点

什么是策略模式?如何在Java项目中引入策略模式来优化代码结构

(-0 , +0)

eBPF动手实践系列二:构建基于纯C语言的eBPF项目

阿里云大数据AI技术

运维 C语言 ebpf 企业号 5 月 PK 榜

可逆计算:下一代软件构造理论

canonical

低代码 软件架构 函数式编程 领域驱动模型DDD 中台架构 低代码平台

采用Excel作为设计器的开源中国式报表引擎:NopReport

canonical

开源 低代码 报表 BI 报表 中国式报表

Java常见集合类型及其异同点,简单使用

(-0 , +0)

Java 集合

SpringBoot整合MybatisPlus基础教程

(-0 , +0)

springboot Mybatis Plus

《银河护卫队3》观后感:AI、人生

无人之路

AI 电影

从张量积看低代码平台的设计

canonical

开源 低代码 架构设计 低代码平台 领域模型

从可逆计算看开源低代码平台Skyve的设计

canonical

开源 低代码 架构设计 低代码平台 扩展机制

不是单例的单例——巧用ClassLoader

PPPHUANG

单例模式 ClassLoader ContextClassLoader Java web

再见!Fastjson!

Java你猿哥

Java ssm Fastjson

问鼎CodeXGLUE榜单,华为云UniXcoder-VESO-v1算法取得突破

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 5 月 PK 榜

分库分表的 21 条法则,hold 住!

程序员小富

分库分表 springboot 分库表

关于 ModelScope 的视频 “AI 换脸” 优化方案

北桥苏

Python ModelScope

Java中常见集合类核心源码阅读

(-0 , +0)

Java 源码 集合

一把王者的时间,带你吃透Java面试八股文(2023最新整理)

Java你猿哥

Java 面试 微服务 Spring Boot mybatis

简单聊聊MySQL索引优化的内容

(-0 , +0)

一图看懂CodeArts Deploy 5大特性,带你玩转部署服务

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

中移链合约常用开发介绍(四)工程树目录

BSN研习社

这份阿里逆天的Redis手册,于内卷中首次亮相了

Java你猿哥

Java redis 面试 Redis 核心技术与实战 redis 底层原理

springboot整合redis基础示例

(-0 , +0)

如何用 ModelScope 实现 “AI 换脸” 视频

北桥苏

Python ModelScope

支持GraalVM原生编译的开源低代码平台:Nop Platform

canonical

开源 低代码 GraalVM Quarkus 低代码平台

火山引擎DataLeap数据调度实例的 DAG 优化方案 (一):问题与需求分析

字节跳动数据平台

数据平台 DAG DataLeap

led大屏幕存在的问题

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

如何在不修改基础产品源码的情况下实现定制化开发

canonical

开源 低代码 定制化 迭代增量开发 可扩展性

javaweb脚手架springboot基础入门

(-0 , +0)

火山引擎DataTester:A/B实验平台数据集成技术分享

字节跳动数据平台

腾讯会议如何进行视频质量评估与优化?_语言 & 开发_腾讯多媒体实验室_InfoQ精选文章