视频质量评价基础与实践

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

a82b4fea99c7a0c46bf2eac95595e437.gif 点击上方“LiveVideoStack”关注我们

373e1cf6c403bb54d094328adce54e91.png

▲扫描图中二维码或点击阅读原文

了解音视频技术大会更多信息

编者按视频质量评价作为近些年学6领域比较热门的基础研究已经逐渐在各种业务场景上落地。本次公开课我们邀请到了SSIMWAVE联合创始人与首席研究员曾凯老师为大家详细介绍视频质量评价的基础概念和相关算法并以端到端的视频质量监控系统为例讲解了质量评价解决方案在实际落地中的应用和收益。

文/曾凯

整理/LiveVideoStack

大家好我是曾凯2020年曾经跟大家分享了一些关于质量评价的理解和之前创办SSIMWAVE的旅程。两年过后我们有了一些新的认知所以今天从技术和产品层面再和大家分享一些我们最新的感受。

我是2009年到加拿大滑铁卢大学攻读博士学位的。2013年博士毕业以后我们把关于视频质量评价或者图像质量评价的研究成果进行商业化。我个人在这个方向研究也有十几年了其实在西安电子科技大学读硕士时就一直在这个方向上深耕。2013年时我们觉得这是一个非常有用的方向。当时我们已经跟业界的一些大公司像Facebook、Apple等有过一些接触看到很多技术部门都对这方面感兴趣而且我们也觉得它有商业化的价值所以当时就跟我的博士生导师和另外一个博士同学一起创建了SSIMWAVE到现在已经将近10年了。可以说我们比起步时成功了一些现在也获取了几十个大客户。目前的商业模式主要是ToB我们的客户主要还是广电、OTT或者流媒体公司而我们的核心价值还是质量评价算法。

来自客户的直接反馈质量评价算法是我们能提供而别人提供不了的。而算法的核心价值就是可以为他们节省时间除了节省人力更多的还是提高工作效率。在算法的基础上我们把它转化成一个实用的技术然后打磨成一个产品从而打包成一个质量监控的解决方案推送给客户。一开始客户最感兴趣的是视频直播的质量监控因为直播对质量是非常敏感的很多东西出错就是错了没办法回来纠正的。针对客户当时的痛点我们希望做到有问题的直播流在到达最终消费者之前客户就知道存在问题从而能够及时甚至是自动地纠正。所以一开始我们主要做直播的产品这就要求我们产品不仅能实时监控视频流而且能覆盖成千上万个channel。再这之后我们将产品扩展成适用于点播业务而且做成基于云的SAAS的服务现在我们在完善不光是产品的多样化支持点播、直播还要在这个基础上支持视频分析。然后提供一些Video Analytics。在客户层面我们也是尽可能的多样化。因为主要的客户还是广电主要还是欧美市场客户数量还是有限的所以我们从大客户也慢慢开始往中小客户上扩展让我们的客户基础变大且多样化。

说到公司的名字SSIMWAVE中的SSIM其实就是就是结构相似度Structure SIMilarity的简称。当时我们觉得公司的名字至少应该包含这部分后面的话因为我们是做流媒体也想过SSIMSTREAM、SSIMFLOW最后觉得SSIMEWAVE会比较酷一些。然后就这样命名了而且这个的确还管用特别是我们出去参加一些会展的时候很多人一看SSIM大概就知道SSIMWAVE因为SSIM本身其实已经很有名了所以还是会有一些帮助。

3f84ead1cb00b5b9459edefb97bb4401.jpeg

今天我要分享的是质量评价的基础和实践。主要从三个方面来介绍一是质量评价的基本概念因为并不是所有人都很明白质量评价到底是怎么一回事。然后第二部分是质量评价现有的一些算法和比较流行的做法。第三个部分是我们监控的实践这块儿会谈及我们在与客户接触过程中客户在使用方面的反馈。最后是一个简单的总结。

01 视频质量评价介绍

我们先说什么是视频质量评价。

e0fc5e762c01abcc29bf33c6fa4dbab6.jpeg

视频质量评价就是我们用人眼给视频的质量打一个分这个分数不管是五分制也好百分制也好我们是希望能够有一个客观量化的算法或者一个分数能够告诉我们视频看起来是更好还是更差了。所以这里其实也有一些比较复杂的概念比如我们怎么去定义质量因为人去看视频的时候觉得它更好或者更差的话我们是有自己的感觉但是你要想用一种数学模型或者计算公式去量化它这本身是比较复杂的因为它的主观性太强了。质量可能包括清晰度清晰度怎么用公式算也是一个问题然后质量还包括色彩的丰富程度、对比度等等。现在任何一个显示器都支持用户调整各个模式但是它并没有一个按钮能一按质量就变好了这其实也是因为我们没有一个东西能调整一次就让所有人都认为它的质量会变得更好。

质量评价的研究方向一般分为主观质量评价和客观质量评价。所谓的主观质量评价就是为了收集主观分数它的任务就是我们研究怎么样去做主观实验能让我们收集到的主观分数又准而且实验的效率又高。主观分数其实就是视频质量分数。我们做个主观实验邀请一些人像右下角这张图一样邀请他坐在一个可控的环境里不管是办公室的环境还是电影院还是根据实际的算法应用设计的场景。我们就让他坐在那而且让他很放松地正常地去观看一段视频然后告诉我他给视频打的分数能有多高或者多低而这个视频肯定是我们特意去准备的。所以我们可以想到这个主观实验其实是一个非常耗时、耗力的事情而且它很难大规模执行比如我们每天去看成百上千个视频这个是不现实的。所以主观评价往往只在一些特定的情况下用但是我们做研究的时候它又非做不可。因为实际上它是质量的基准而它收集到的分数被称为Golden Score。因为我们要想研究或开发客观算法的话这个Golden Score必不可少。实际上算法输出的分数就是为了逼近主观分数。所以主观分数就是我们所谓的Ground Truth如果没有它我们设计的客观算法是没有办法衡量它的性能的。

我们接触的现有客户过程中其实很多客户用了我们的算法来真正地替换他们之前的主观实验。我举个例子来说比如我们有一个客户是加拿大视频运营商叫Rogers视频设备升级换代的时候它们有些大动作的话本身在实验室里面他们就一定要做大规模的主观质量评价就是因为比如它们要换一个新的视频编码器或者转码器因为他们的客户基数大那这个编码器的影响范围很广所以他们会在真正上马这个新的编转码器时在它们实验室里看这个转码器的性能。然后他真正会去邀请比如100个人来给新的转码器和老的转码器转码出来的视频打分看看质量是不是真的变好。我们在攻克这个客户时他们也做了相应的主观实验而且他们把SSIMWAVE的算法生成的客观分数跟他们主观实验的分数做对比他们觉得准确率是足够高的所以他们才愿意用SSIMWAVE的产品。

客观质量评价其实是研究更多的方向因为我们本身做质量评价最终的目的还是希望开发一套软件用它代替人的主观打分能全自动化、省时、省力准确地预测主观质量分数那它就是比较好的算法。但是准确率的提升很多时候是比较困难的有很多方面的因素影响。

质量评价本身的价值一方面是我们可以用算法代替人脑可以提高我们的生产效率。因为不管什么时候只要能代替人工那肯定会能看到生产力的提升另外一方面就是统一和改进视频质量的度量衡。其实质量评价的研究方向除了能代替人力以外它更深层次的一个意义就是我们经常说的视频质量是一个主观性比较强的东西所以如果我们能把质量用一种量化的算法统一了那它的意义就近似于我们说的秦始皇统一度量衡当然秦始皇有权利我们没有权利但是我们把各种不同的标准都统一起来让所有人都认可同一个标准那这样的话是能提升整个社会的运转效率不光是我们这个行业。

因为我们都是服务于大客户的它们本身视频传输的系统其实是非常复杂的。从卫星接收到数据中心的转码加密到后边的分发其实各个部门经常是独立运行的就是它们之间很少坐下来一起交流质量怎么样它们每个人对质量都有自己的理解所以如果能有一套量化的算法或者是分数能让它们普遍接受它们之间的合作效率会得到极大提升。最后就是系统优化。这个就是比如说视频编码器的优化或者视频网络的优化甚至是视频在终端显示的优化单独拿出来都能分享很久。我想说视频质量评价如果有一个新的有效的算法的话那有很多可以优化的地方比如视频编解码。当然编码器可以在内部优化也可以在外部优化这个都是细节。编码器的内部优化对质量评价算法的要求会高一些但是它能从根本上能提升编码的效率相当于在相同质量下节省更多的带宽。当然我们也可以在编码器外面优化相当于告诉运营的人怎么设置编码器的参数。用编码器的人往往都是说我把我的编码器放在那然后我调好参数以后配置就不变了任何视频都是这么一套配置参数去处理现在大伙儿都知道用一种所谓的内容自适应去调整码率调整分辨率可以让系统给更简单的视频分配更少的码率从而节省带宽。这种优化中质量评价是很重要的一个维度。我到底节省多少取决于码率降到多少质量是可以接受的这都是可以优化的地方。

在网络CDN方面很多公司不只用一套CDN而是多套CDN。利用不同CDN传输视频的质量在不同的CDN之间切换。甚至是在网络方面如果自己能控制的话网络本身的加密还有纠错编码模块都是可以调整的。所有这些东西也可以根据不同的目标来优化。所以质量已经深入到音视频处理、转码、压缩的方方面面它可以用来提升效率的地方非常非常多以上是质量评价的大概介绍。

3b807a2308a2212732bd1c9edb2e755a.jpeg

为什么质量评价已经被研究十几年因为它之前是比较火的研究方向现在人们慢慢开始希望在真正的工业界落地但是研究还是不停地进行。那为什么它会有这么多东西可以研究呢我们可以大概看一下什么东西会影响图像的质量。图中最上面是图像质量我们要给它做一个评价而这个评价的图像质量大概分四类第一个是视频的类型、特征或者说视频到底长什么样。因为我们知道视频系统之所以很复杂就是因为视频是多种多样的。比如UGC、PGC、BGC等等。视频可能是不同的电影、动画、风景、新闻、足球、篮球等各种各样的视频。所有视频的复杂度和本身的类型都不一样所以不同类型的视频会直接影响视频质量的评价方法。因为中间会经过不同的处理所以会直接影响观看视频的质量。中间的处理过程影响也非常非常大。

视频失真过程是相对于保真来说的如果我们认为视频源的质量是最高的。当然实际情况不一定因为这块也涉及增强特别是对UGC。我们的视频服务商可能会想办法把用户上传的视频增强变得质量更好从而达到更高的观看率等。但是不管怎么样中间的这些处理、压缩、转码几乎是任何一个参数变动都会影响最后的图像质量。比如转码的码率、分辨率我处理的时候到底是用去噪还是增强还是去模糊每一个处理都相当于一个滤镜可能都会有好几种甚至十几种不同的参数。而这些参数其实就是为了适应不同视频类型的所以这块也是非常复杂的东西但是也是影响最终图像质量的很关键的因素。

最后两个是视频消费的环境和消费者的类型这个其实也是影响图像的Quality of Experience即它真正看起来感觉怎么样。消费环境比如说我在什么样的设备上看人的眼睛离设备是远还是近我周围的环境怎么样到底是在一个小黑屋里还是比如晚上睡觉前在被窝里看还是说我在一个电影院里看。其实同样的视频放在不同的环境下人对质量的感受其实也都不一样。

最后这里把消费者粗略分成普通消费者、视频爱好者、还有算法专家因为不同的消费者对视频失真的敏感程度是不一样的。普通消费者坐在客厅的沙发上看电视那我们对视频的很多失真的容忍度是比较高的。但是一些视频发烧友、爱好者希望看到的4K或者8K的视频。如果质量很差的视频他们宁愿不看或者再等一个月出来新版本、更高清的版本才看。而且视频爱好者也会去想办法升级它的电视或者观看设备。算法专家更多的还是从事视频行业的技术专家。如果我们有一个好的视频质量评价算法对互联网视频公司的业务有很大的促进作用。因为做视频算法的同学跟做QA的同学在质量理解上也不是完全一样但是如果有一个分数能让大伙都接受的话就能避免很多认知不统一导致的效率下降问题。算法专家这个角色在很多公司包括欧美大公司里面也都存在人数不多有时候可能也就几个或者最多十几个人分散在各个组我们叫他们Golden Eye。每当有一个新的软件版本或者新的配置参数需要上线之前都会找这些Golden Eye看一下。他们会在对的设备上仔细地做对比。这个最终视频质量到底变得怎么样。所以他们对失真的敏感度是非常非常高的而且他们的权利也很大如果他们说你这个质量比以前差那你这个新的不管是软件还是配置基本上就不能用了。

以上都是影响图像质量的各个因素如果我们想把各个因素都设计到算法里可想而知需要考虑的方面很多相当于在一个维度非常高的高维空间里求解的一个问题这也是为什么它比较难。

36bef42b8cbfcbe730f1079063ee3fd1.jpeg

视频质量评价更多的挑战还在于所收集的主观质量分数的质量怎么样。比如HBO的logo这幅图片质量到底好还是不好呢相信大部分人都会觉得质量OK因为它本来就长这样。但很多人特别是图像处理的人都会说这全是噪声。如果检测到这个的话很多人会把它当成一个Corner Case忽略掉。而且不同的人在主观上认为质量的高低也是不一样的包括底下例子我们到底是喜欢对比度很高的图片还是喜欢对比度不那么高但是能看到很多细节的图片大部分人的想法到底是怎么样的为了回答这个问题我们就不得不做主观实验。我们在做主观实验时需要做一些假设来限定质量评价算法的应用场景然后再找对应的、能给视频主观打分的人做一个比较科学的主观实验来统一视频质量到底怎么样。一旦我们收集到的主观分数足够多有足够的数据我们就可以在相应的数据上开发客观评价算法。这样一来所开发的客观算法的性能比较稳定其鲁棒性也比较好。如果在实际中遇到一些挑战比如说不同的人对分数认可不一样的话我们就有理由相信跟大多数人意见一致的结果是对的因为我们的数据足够多。我们说意见不同的那个人并没有说错只不过他跟我们想要服务的群体有偏差就是他跟我们想要服务的大部分人意见不一致而已。一方面质量分数的主观性特别强众口难调另外一方面在做客观算法研究时我们本身对人眼视觉系统了解的并不够多因为我们希望把人眼视觉系统做到软件里面如果我们对它的理解不够深入的话其实我们并没有办法完全模拟视觉系统。现在已经有很多当然这都是基于经验或知识来设计的算法有很多机制模拟人眼视觉系统比如多尺度分析、多通道、各种掩膜效应这其实都是从Visual Science之类借过来的概念这些机制的也都很成功。

视频质量影响因素非常多而且它应用在不同的视频传输阶段有不同的类型所以设计一个通用的视频质量评价算法是非常非常困难的。这也是为什么SSIM变得被人们广泛接受。一方面是因为它相对于PSNR是一个颠覆性的工作另外一方面是因为在各种不同的场景工作起码比PSNR更好。如果现在我们自己设计一个比较好的算法我们有可能是在某一个场景工作的很好但在其它场景就不一定。这也是我们做SSIMWAVE过程中的一个感悟。其实我们并不能期待设计一个算法就能解决所有的问题我们还是要看客户的具体需求尽可能地去涵盖不同的应用场景。比如我们在服务端音视频编解码转码时一个算法是可以work的但是在比如客户端、移动端这个算法就需要做相应的调整因为场景不一样。而且服务端转码时它不会出现rebuffering或者黑屏但这些问题在客户端就非常容易出现。以上就是视频质量评价的基本背景介绍。

02 视频质量评价算法

下面进入到评价算法。

187e01f5a3ad407017d94db52ceaa91a.jpeg

我们知道视频质量评价就是给视频打分它可以用主观的方式打分也可以用客观的方式打分。那我们就可以看主观具体怎么做呢主观是收集一些基准分数但是它也有各种不方便的地方。但是因为这个是必须要做的所以我们现在有几个国际标准。BT.500应该是几年前的只要做主观实验大部分人都会使用BT.500的方式。现在有一些比较新的方法比如P.913。P.913这个做主观实验的文档写的更完善一些而且比较与时俱进。真正主要的办法有很多细节咱们就不深入了包括怎么准备实验环境怎么收集视频源怎么处理、收集时帧视频这些在P.913里都有详细的解释和说明介绍得非常好。

我们让人怎么看视频用什么顺序看一般来说分成一、一次只看一个视频让人纯打分这个叫Single-stimulus给你个视频你给我一个分数二、我让你看两个视频可以一前一后还可以Double-stimulus这样对比去看一般一前一后打的分到底是从0到4或者1到5之间的离散分数或者从0到100之间都可以一般都是整数。这些东西是我们在设计主观实验时需要想好到底是怎么样得。因为它有不同的优缺点比如就用Single-stimulus的方式我给你个视频你给我一个分这样听起来好像很简单也容易操作但是这个对主观打分的人是比较困难的因为本身对视频的好坏的判断和理解每个人都不一样每个人的接受程度也不一样。而如果是Double-stimulus它是相对的人去做选择题就会更容易一些。但是你可以想象同一个人每次需要看两个视频所以它的时间就会翻倍这就产生容易疲劳的问题。当然这些都是主观实验需要照顾到的因素所以我比较推荐感兴趣同学看一下P.913。

只要在质量评价研究领域不管是高校还是公司里的大部分人都在围绕客观算法做工作。我们是把客观算法做成一个软件能让它自动给我们打分而且这个分数是符合人眼感知的。一般来说是根据有没有视频源把它分成这三类全参考、部分参考、无参考。它所谓的参考是指无损或质量最好的视频。全参考是指视频源的所有信息都是可用的比如在视频压缩的场景因为编码器的输出就是压缩后的视频那我就可以用全参考的方式来看相对于我的输入输出视频的质量到底有什么变化。部分参考是指视频源中并不是所有的像素我都知道但是我可以去做一些统计为了方便在通信系统里比如在流媒体、客户端做质量评价的时候我们是没有办法拿到视频源的因为视频源的数据量本身就很大但是如果能拿到一些统计量然后做对比也是可以提升准确率。

无参考是指压根不知道视频长什么样子你给我一个视频我给你打一个分说是无参考但实际上我们可以想象人眼看视频时我们可能会觉得我知道它是好还是坏但实际上我们人的大脑里边其实也是有参考的。这也是我们在跟客户接触时发现的一个比较有意思的问题其实一个普通人对质量的理解跟他所在地区的带宽是有一定的相关性的如果他那个区域的带宽普遍比较低那他对质量容忍的程度就会比较高他可以给一个比较模糊的视频一个比较高的分数就是因为他已经习惯了。无参考的分数虽然简单易用但是它也是要根据场景做调整。

8d6e665117bc5d020f9439ecf3151fbc.jpeg

客观质量评价的目标还是为了预测主观质量分数。在过去的十几年里不断有人构建主观质量评价的数据集因为很多人特别是在学术领域很多大学实验室会把他们构建的数据集公开包括比如Google、YouTube的UGC数据集。数据集里有的有视频源有的没有视频源它就是一个视频有对应的主观分数然后这些视频可能经过各种各样的处理。我把数据集分成两类一类是PGC一类是UGC。从质量角度来说PGC和UGC的应用场景区分程度是比较大的因为PGC创作的时候有导演、有摄像它的器材、场景、拍摄的环境可控性都非常强做法也很专业它的摄像器材质量比较好那它拍摄出来的视频源的质量往往是非常高的。所以PGC一类的视频质量的问题主要是后续做视频传输或者处理中引入的问题视频源往往质量比较高。但是UGC就不一样UGC是User Generated Content任何人随时随地用手机拍一段视频就可以上传手机的不同档位不同摄像头的品质拍摄的东西五花八门质量参差不齐。本身它视频源的质量不可控所以各种各样的质量级别都有。而它的质量有时可能会比较差我们又希望在客户端做一些增强进一步提升了质量评价的复杂程度。PGC的质量可以这么形容比如好莱坞工作室出来的质量是最高的之后是单调下降的过程它里面很少会真正需要增强往往都是需要转码压缩到不同版本其质量只能是越来越差。因为视频压缩只会丢失信息我们近似假设它的质量是越来越差然后一直到最后客户端手机上或者电视上看的时候它的质量应该是最差的关键区别就在于谁的服务好谁的差的程度就比较少。但是UGC不一样很多时候UGC视频源不怎么样但是服务端的增强算法很厉害比如运动模糊能矫正过来那它的质量提升就会非常高。这样的话单调下降的质量趋势的假设就完全不成立了所以这块都需要具体场景具体分析。

532e54d5f3a0a36ccb2b1ae41c9a3dce.jpeg

e9b7360a31b3af570465e69fb6c639a0.jpeg

我列了一些数据集这些数据集基本上都是公开的都是全世界的大学能够下载到的但是都比较大感兴趣的同学可以自行下载。

2f40a1a085eb5e82454b12995a1a3227.jpeg

如果我们只看图片的上半部分就是Acquisition、Compression、Transmission Over Network和Reconstruction。其实就是一个简化视频流的传输过程先拍摄再压缩然后传输。Reconstruction相当于视频解码。在这么一个过程中压缩之前和解压缩之后就可以做一个全参考。如果我们不知道压缩之前的版本那就用解压缩之后的做一个无参考No Reference而Reduce Reference是一个折中因为No Reference是一个非常具有挑战性的研究方向。Full Reference相对来说可控性更强一些所以有人提出能不能像刚才说的算出一些统计量它不一定是一帧它可以是1秒算一个统计量比如1秒算五个数字把这五个统计量发到解码端然后做质量评价。它相当于是一个数据量和准确率之间的折中。当然现在研究的比较火的还是Full Reference和No Reference。部分参考在实际应用中有些积累但是现在无参考比较常见。

用另外一种角度来区分这些算法的话我们可以将他们分成知识驱动和数据驱动任何图像处理都可以这样区分我到底是利用知识经验或者对人眼视觉系统的了解来设计一些模块去捕获失真然后得出一套算法这是知识驱动。另外一个数据驱动就是我们现在用神经网络或者深度学习的办法我们收集视频打标签然后做有监督或者无监督的学习学习出一个网络模型用于预测。这就是两种的区别。

17df4f78246c764e443a36a8db3b10c6.jpeg

对于客观算法而言两种驱动各有利弊。人们会对知识驱动和数据驱动有倾向性但也有混合的。我个人认为二者混合好因为它们有互补性。我们知道一些现有的机制特别是人眼视觉系统的机制的话那我们应该把它利用上但是更多的还是让我的算法能见到更多不懂、不一样的case它见到的case越广那算法的通用性应该就会更高一些。而且还有一点区分往往知识驱动模型的可解释性比较强因为客户也会问你给我的视频质量打分低到底是什么东西让你认为它质量差它到底是噪声太多还是说它有什么斑点还是说细节丢失太多因为不同的模块有各自不同的任务你可以很容易地挖进去然后搞清楚到底是什么原因我这个算法才认为它质量差。数据驱动型的算法就很难达到这一点。但是现在已经有一些模型可以通过注意力机制之类的东西或多或少解释一点但是它很难去解释码率、失真过多过少之类的。而且数据驱动比较麻烦的地方还是在于它需要大量的视频样本而且标签打起来也非常难因为我们平时做主观实验的视频都是一段10秒的视频打一个分数那我们真正算法去算的时候往往是1帧算一个分数出来。比如1秒24帧那10秒就240帧做数据驱动去训练模型时意味着240帧的图像最后得到的标签分数都是一样的。而10秒之内的质量也是有变化的所以标签并不一定代表每一帧的质量我们训练模型时就需要一些考虑。而且往往我去训练的时候它比较依赖于你的数据是什么样就是你的视频的复杂度之类的特性是什么样的。这就需要我们在准备视频时比较小心确保我们想要覆盖的各种类型的视频都能够覆盖到。模型越大训练时间越长要求的算力就越多这个就看我们的基础设施怎么样了。一般来说人们都经常用这种基于知识和数据的质量评价。人们也做过不同的尝试但最常用的还是通过知识驱动型的算法看到底什么样的模块能更有效地预测质量然后把这些模块捕获到的信息作为特征输入给我们想要训练的模型里这样的话也能提高它的效率。

c552a997afb5a18b9375d2405f43018f.jpeg

SSIM、PSNR属于知识驱动型因为它也可以用数学公式写出来。但是像BVQA、NIQE这些是无参考的算法模型它往往都是数据驱动的。然后像中间这些过渡的VMAF其实就是一个融合它先用一些知识驱动的模型去提取特征然后再接着一个SVM的模型训练最后达到比较好的效果。所以现在做视频质量评价的人比较常用的是比如说SSIM、PSNR都是比较经典的算法现在常用的是Netflix的VMA和Apple的AVQT普遍认为是比较好的是SSIMPLUS但是SSIPLUS不是开源的所以需要视频质量评价算法测试的话可以尝试一下。

e8876c6c1017a40cf59599f0bf65f5dd.jpeg

那我们怎么评价客观算法到底好还是不好呢其实我们往往最后是会看这几指标我这边只列了3个当然还有一些别的就比如说不同的误差计算方式但是我们一般会画一个散点图。这个散点图的横坐标是客观分数算法计算出来的分数纵坐标是主观就是我们主观实验收集到的所谓的Golden Score。我们看它的相关性是不是够高它的单调性怎么样然后它的误差均方是不是够小。一般来说像这个散点图它的效果就不是很好。这只是一个例子推荐相关性最起码到0.8以上一般人才可以考虑在实际系统中使用。这是一个经验值所以这些就是我想要分享的关于算法的内容。

60af219a908b9eafb9a3ac43bf17733f.jpeg

这副图其实是评价算法在学术研究领域的一个总括。它有传统的研究内容:全参考、部分参考和无参考它可以按照不同的开发办法有不同的模型。现在越来越多新的研究的方向比如3D、Screen content(比如视频会议)、VR、multi-view还有360度的特别最近比较火的VR人们对这些视频的质量评价也都非常感兴趣所以从学术研究方向来说随着我们新的视频格式或者新的视频编码标准出现我们都需要对应算法的更新。其实只要涉及到视频处理质量评价算法其实都是必不可少的。但各种基于学习算法的也有不同这都是属于不同的研究方向。

03 端到端的视频质量监控实践

然后我们进入到实践环节。刚才说了质量评价的一些概念和算法这是一个端到端的质量监控的实践。

9fd0e52f9245b57b0116fad0a70be6ab.jpeg

首先说说我们为什么要做这件事。我先解释下这个图它是一个简化版的视频传输的链路相当于从左边的视频源拿到以后经过编码器转码器打包网络分发最后视频在消费设备上显示。那为什么要去监控质量呢一方面从大的概念来讲真正做视频服务提供商的最关心的就是带宽因为带宽直接影响到传输视频的成本。我们视频传输的越多成本就越高。但是如果我们用广告模型来赚钱的话那视频的量一定要保证不然我广告是没办法投放的。现在有一个矛盾我投放视频越多成本越高但是投放视频越少成本低了但是广告收入也低了所以需要斟酌。但是同样那我投放出来视频以后我的用户体验到底怎么样。如果我视频投出去了用户觉得体验太差他不买单压根就不看那这个就等于生意没做好。所以最好以用户体验为中心去反向优化视频链、传输链路上的各个模块。如果我们能做到端到端的智能监控比如设置不同的监控点的话就像刚才我说的如果我们在一个直播的链路里头能够有效且高效的定位这些问题及时发现问题而且准确地定位问题源头的话那这个对视频服务提供商就是很好的、很有价值的一个工具。因为如果一个视频有问题的话如果我们不提前发现等客户发现客户每打一个电话他们就要花至少8块钱去把问题解决掉8块钱听着不多但是他们有几百万的客户一人一年打10个电话对他们来说就是一笔不小的成本。所以如果能把这个问题限制在源头而且及早地修正一旦有客户打电话的话他们是一层一层的不同的团队要采取不同的措施一直到定位到问题解决问题为止那。如果我们能有一个系统的端到端的监控而且理想情况下一秒即刻定位问题的话几分钟就把问题解决了这个带来的价值就是巨大的所以一旦能够监控实施起来的话能够节省成本是非常多的。从另外一个角度来讲我们一旦有一个比较好的质量评价算法我们就可以大规模地做行业内的对比这就是我说的准确进行竞品定位。因为我们经常需要做一些竞品对比同样的视频到底我们的质量和竞品的质量或者说我们的带宽和竞品带宽到底是什么样的情况。这种情况下如果我们有一个好的算法的话它是能极大地提升效率。

de57a4bfa6269676f38a7c5d52929611.jpeg

在端到端的视频质量监控系统里它的输出是什么就是说我们为什么要做这件事刚才说我们以用户为中心快速地解决问题这是一方面。假设我们有了这样一个系统我们就7天24小时不停地收集数据而这个数据对我们这种视频服务公司的人来说是非常有价值的。我们可以做成系统看版就是统计每一个用户甚至大盘的观影体验然后基于不同的时间、地域、业务给它进行不同的分类从而能够让我们对整体的视频业务大盘的实时在线业务有一个更清晰的理解。我还以美国为例业务覆盖美国东岸和西岸那东岸和西岸的质量到底怎么样如果东岸的质量比较差但它的付费客户转化率比较高那我肯定希望我在做资源分配的时候把东岸的质量给它提上来从而吸引更多的用户。所以端到端的质量监控还可以用来做视频服务的数据分析我把它服务的群体分成了三层管理团队运营团队还有技术团队。

利用数据驱动的办法能让我的管理团队制定接下来如何进行分配资源。我到底是在不同区域做一个平衡还是着重把资源花在一些实时直播的事件上或者说对我的业务有一个更深的理解。因为在商务看版里就视频业务而言它无非是带宽成本这相当于我的投入和质量或者用户体验可以作为产出从这个角度我们可以算ROI。但是现在往往我们质量产出这个没有统一的数据你很难把ROI统一起来。

对运维团队而言可以快速定位问题,然后有效地解决问题节省资源。对技术团队而言其实也是一个非常好的工具比如我上新的算法或者编码器了我都可以实时查看新算法在线上的表现因为对技术团队而言它其中一个痛点就是我的算法在线下实验室里面表现的非常好但是放到线上以后好像看不出来区别这就是一个问题。有线上监控的话它就可以直接线上去跑比如小范围去跑然后验证它的技术有效性。所以端到端的系统对视频业务的每一层都有帮助。

b1acf85e3c1370ac76d95f9d794bda5e.jpeg

我们在系统传输时有很多常见的问题比如视频静止、没有声音、黑屏、音画不同步端到端的质量监控一旦建立起来的话我们就可以不停地把捕获某一方面问题的模块给它添加进去。我列举个例子比如网络方面可能有带宽不足媒体方面可能本身的音视频文件或者音视频流定位错误或配置错误导致流缺失或者协议错误导致根本没办法解码甚至是网络丢包导致马赛克、块效应、模糊之类的失真这些其实都是比较常见的系统的问题。

ae4bc5da9cfb3b7125497aab1c67261e.jpeg

对应的举个例子左上角其实是一个黑屏图片不是空的这个黑屏就是什么都看不着。中间这个块效应往往属于传统有线电视丢包时产生的。右上角是HDR里经常看到的天空上的带状效应左下角是噪声。右下角是最常见的码率过低出现的带状效应块效应模糊都混在一起都是压缩时码率过低产生的这种失真我们也经常会看到。

6c4747dd6a5af1abfaaba811ed166590.jpeg

一旦端到端的质量监控建立起来以后我们的质量评价算法还可以干什么我们在不同的地方都需部署不同的质量监控算法它有可能相同有可能不同但是在端到端的过程中还有很多不同的Use Case。我们常见的比如视频生产端我们叫它Source Validation因为我们看到线上的视频质量并不是很好那它到底是压缩的时候产生的问题还是视频本身上传以后质量就不好。另外UGC这种在服务器端的编码系优化、Per-title Optimization这些都是很常用的优化方式包括刚才我提到过CDN的Service switching就是有不同的CDN可以切换然后看CDN的质量高或者低在客户端Smart Streaming更像HLS或者MPEG-DASH里边是支持添加一些基于质量的matedata去优化streaming算法或包分发的算法所以这些是一个好的质量评价算法可以帮到我们的地方我们可以用它进一步优化系统。

9c8fb46e5f42ceb2b57fee889dd7ac01.jpeg

我们可以有需要地对每个不同的监控点上的质量评价算法有一些不同的要求比如在视频源那它毫无疑问只能是无参算法因为没有更好的视频了。在实际应用中我们往往只要判断质量是不是够好就行了这个视频源的质量是不是能过关这样的话它对整张评价算法要求的准确性就不用那么高它也不用必须80分或90分所以这对不同的质量评价算法在不同的监控点上的要求是不一样。不管是从准确度还是复杂度来说客户端也只能是无参的因为我们拿不到视频源而且它要求复杂度要低能耗要低因为它往往是在移动端上跑而且它还要能够照顾到系统的缓冲不同档位之间的切换。

04 小结

dc22e75a4c9b5aee1a28d8ad2340661c.jpeg

最后简单总结下影响视频质量评价的因素非常多它其实还是一个正在发展的研究方向而它现在也慢慢在应用场景落地了这还是一个过程。从我们的感觉来看其实在不同的应用场景人们都开始意识到我们需要做这种事但是开发一个更好的质量评价算法能给我们带来什么样的收益好像还不是很成熟。但是我们还是比较推荐做端到端的系统。其实所谓端到端听起来好像很复杂我们可以从简单开始做我们只是从复杂开始规划但是从简单开始做。往往都是说我们先把视频源的质量监控起来把转码端发给CDN之前的质量先监控起来。移动端可能会比较难但是我们可以从不同的设备比如说我们现有的客户成功的案例就是我们给它监控电视盒子就是机顶盒的HDMI的输出。这样的话有这几个不同点的数据一旦开始收集数据以后其实我们从里边能看出涉及很多有效信息。总体而言质量这个东西我们承认它并不是最重要的因为我们不管是新建一个视频服务也好还是说我们在现有的视频服务上优化也好从0到1的时候质量要求往往并不是那么高但是就是因为音视频领域竞争越来越激烈一旦市面上有消息说某某运营商我们做一个对比或者做一个排名那谁都不愿意去做最垫底的那个因为这直接反映服务质量如果你的服务质量不高的话公司的信誉或用户感受都是非常非常差的。我认为现在人们好像也没有那么大的动力去做最好的但是谁都不愿意做去做垫底的所以这也是我们在销售时需要考虑的问题怎么去定位这个东西怎么挖掘痛点出来。

以上就是本次的全部分享内容谢谢大家


▼识别二维码或猛戳下图订阅课程

609e376a479ceb99a4bb0ebe25e1316e.jpeg

喜欢我们的内容就点个“在看”吧ab13e847852438ba89dbb0322b091e3f.gif

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6