编者按:视频质量评价作为近些年学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本身其实已经很有名了,所以还是会有一些帮助。
今天我要分享的是质量评价的基础和实践。主要从三个方面来介绍:一是质量评价的基本概念,因为并不是所有人都很明白质量评价到底是怎么一回事。然后第二部分是质量评价现有的一些算法和比较流行的做法。第三个部分是我们监控的实践,这块儿会谈及我们在与客户接触过程中,客户在使用方面的反馈。最后是一个简单的总结。
01 视频质量评价介绍
我们先说,什么是视频质量评价。
视频质量评价就是我们用人眼给视频的质量打一个分,这个分数不管是五分制也好,百分制也好,我们是希望能够有一个客观量化的算法或者一个分数能够告诉我们视频看起来是更好,还是更差了。所以这里其实也有一些比较复杂的概念,比如我们怎么去定义质量?因为人去看视频的时候觉得它更好或者更差的话,我们是有自己的感觉,但是你要想用一种数学模型或者计算公式去量化它,这本身是比较复杂的,因为它的主观性太强了。质量可能包括清晰度,清晰度怎么用公式算也是一个问题,然后质量还包括色彩的丰富程度、对比度等等。现在任何一个显示器都支持用户调整各个模式,但是它并没有一个按钮能一按质量就变好了,这其实也是因为我们没有一个东西能调整一次就让所有人都认为它的质量会变得更好。
质量评价的研究方向一般分为主观质量评价和客观质量评价。所谓的主观质量评价就是为了收集主观分数,它的任务就是我们研究怎么样去做主观实验能让我们收集到的主观分数又准而且实验的效率又高。主观分数其实就是视频质量分数。我们做个主观实验,邀请一些人,像右下角这张图一样邀请他坐在一个可控的环境里,不管是办公室的环境,还是电影院,还是根据实际的算法应用设计的场景。我们就让他坐在那而且让他很放松地正常地去观看一段视频,然后告诉我他给视频打的分数能有多高或者多低,而这个视频肯定是我们特意去准备的。所以我们可以想到,这个主观实验其实是一个非常耗时、耗力的事情,而且它很难大规模执行,比如我们每天去看成百上千个视频,这个是不现实的。所以主观评价往往只在一些特定的情况下用,但是我们做研究的时候,它又非做不可。因为实际上,它是质量的基准,而它收集到的分数被称为Golden Score。因为我们要想研究或开发客观算法的话,这个Golden Score必不可少。实际上,算法输出的分数就是为了逼近主观分数。所以主观分数就是我们所谓的Ground Truth,如果没有它,我们设计的客观算法是没有办法衡量它的性能的。
我们接触的现有客户过程中,其实很多客户用了我们的算法来真正地替换他们之前的主观实验。我举个例子来说,比如我们有一个客户是加拿大视频运营商叫Rogers,视频设备升级换代的时候,它们有些大动作的话,本身在实验室里面他们就一定要做大规模的主观质量评价,就是因为比如它们要换一个新的视频编码器或者转码器,因为他们的客户基数大,那这个编码器的影响范围很广,所以他们会在真正上马这个新的编转码器时,在它们实验室里看这个转码器的性能。然后他真正会去邀请比如100个人来给新的转码器和老的转码器转码出来的视频打分,看看质量是不是真的变好。我们在攻克这个客户时,他们也做了相应的主观实验,而且他们把SSIMWAVE的算法生成的客观分数跟他们主观实验的分数做对比,他们觉得准确率是足够高的,所以他们才愿意用SSIMWAVE的产品。
客观质量评价其实是研究更多的方向,因为我们本身做质量评价最终的目的还是希望开发一套软件用它代替人的主观打分,能全自动化、省时、省力,准确地预测主观质量分数,那它就是比较好的算法。但是准确率的提升很多时候是比较困难的,有很多方面的因素影响。
质量评价本身的价值:一方面是我们可以用算法代替人脑,可以提高我们的生产效率。因为不管什么时候,只要能代替人工,那肯定会能看到生产力的提升;另外一方面就是统一和改进视频质量的度量衡。其实质量评价的研究方向除了能代替人力以外,它更深层次的一个意义就是:我们经常说的视频质量是一个主观性比较强的东西,所以如果我们能把质量用一种量化的算法统一了,那它的意义就近似于我们说的秦始皇统一度量衡,当然秦始皇有权利,我们没有权利,但是我们把各种不同的标准都统一起来,让所有人都认可同一个标准,那这样的话是能提升整个社会的运转效率,不光是我们这个行业。
因为我们都是服务于大客户的,它们本身视频传输的系统其实是非常复杂的。从卫星接收到数据中心的转码加密到后边的分发,其实各个部门经常是独立运行的,就是它们之间很少坐下来一起交流质量怎么样,它们每个人对质量都有自己的理解,所以如果能有一套量化的算法或者是分数能让它们普遍接受,它们之间的合作效率会得到极大提升。最后就是系统优化。这个就是比如说视频编码器的优化或者视频网络的优化,甚至是视频在终端显示的优化单独拿出来都能分享很久。我想说,视频质量评价如果有一个新的有效的算法的话,那有很多可以优化的地方,比如视频编解码。当然编码器可以在内部优化,也可以在外部优化,这个都是细节。编码器的内部优化对质量评价算法的要求会高一些,但是它能从根本上能提升编码的效率,相当于在相同质量下节省更多的带宽。当然,我们也可以在编码器外面优化,相当于告诉运营的人怎么设置编码器的参数。用编码器的人往往都是说,我把我的编码器放在那,然后我调好参数以后配置就不变了,任何视频都是这么一套配置参数去处理,现在大伙儿都知道用一种所谓的内容自适应去调整码率,调整分辨率,可以让系统给更简单的视频分配更少的码率,从而节省带宽。这种优化中质量评价是很重要的一个维度。我到底节省多少取决于码率降到多少质量是可以接受的,这都是可以优化的地方。
在网络CDN方面,很多公司不只用一套CDN,而是多套CDN。利用不同CDN,传输视频的质量在不同的CDN之间切换。甚至是在网络方面,如果自己能控制的话,网络本身的加密,还有纠错编码模块都是可以调整的。所有这些东西也可以根据不同的目标来优化。所以质量已经深入到音视频处理、转码、压缩的方方面面,它可以用来提升效率的地方非常非常多,以上是质量评价的大概介绍。
为什么质量评价已经被研究十几年?因为它之前是比较火的研究方向,现在人们慢慢开始希望在真正的工业界落地,但是研究还是不停地进行。那为什么它会有这么多东西可以研究呢?我们可以大概看一下,什么东西会影响图像的质量。图中最上面是图像质量,我们要给它做一个评价,而这个评价的图像质量大概分四类:第一个是视频的类型、特征或者说视频到底长什么样。因为我们知道视频系统之所以很复杂就是因为视频是多种多样的。比如UGC、PGC、BGC等等。视频可能是不同的电影、动画、风景、新闻、足球、篮球等各种各样的视频。所有视频的复杂度和本身的类型都不一样,所以不同类型的视频会直接影响视频质量的评价方法。因为中间会经过不同的处理,所以会直接影响观看视频的质量。中间的处理过程影响也非常非常大。
视频失真过程是相对于保真来说的,如果我们认为视频源的质量是最高的。当然实际情况不一定,因为这块也涉及增强,特别是对UGC。我们的视频服务商可能会想办法把用户上传的视频增强变得质量更好,从而达到更高的观看率等。但是,不管怎么样,中间的这些处理、压缩、转码,几乎是任何一个参数变动都会影响最后的图像质量。比如转码的码率、分辨率,我处理的时候到底是用去噪,还是增强,还是去模糊,每一个处理都相当于一个滤镜,可能都会有好几种甚至十几种不同的参数。而这些参数其实就是为了适应不同视频类型的,所以这块也是非常复杂的东西,但是也是影响最终图像质量的很关键的因素。
最后两个是视频消费的环境和消费者的类型,这个其实也是影响图像的Quality of Experience,即它真正看起来感觉怎么样。消费环境比如说我在什么样的设备上看,人的眼睛离设备是远还是近,我周围的环境怎么样,到底是在一个小黑屋里,还是比如晚上睡觉前在被窝里看,还是说我在一个电影院里看。其实同样的视频放在不同的环境下人对质量的感受其实也都不一样。
最后,这里把消费者粗略分成普通消费者、视频爱好者、还有算法专家,因为不同的消费者对视频失真的敏感程度是不一样的。普通消费者坐在客厅的沙发上看电视,那我们对视频的很多失真的容忍度是比较高的。但是一些视频发烧友、爱好者希望看到的4K或者8K的视频。如果质量很差的视频,他们宁愿不看,或者再等一个月出来新版本、更高清的版本才看。而且视频爱好者也会去想办法升级它的电视或者观看设备。算法专家更多的还是从事视频行业的技术专家。如果我们有一个好的视频质量评价算法,对互联网视频公司的业务有很大的促进作用。因为做视频算法的同学跟做QA的同学在质量理解上也不是完全一样,但是如果有一个分数能让大伙都接受的话,就能避免很多认知不统一导致的效率下降问题。算法专家这个角色在很多公司,包括欧美大公司,里面也都存在,人数不多,有时候可能也就几个或者最多十几个人,分散在各个组,我们叫他们Golden Eye。每当有一个新的软件版本或者新的配置参数需要上线之前都会找这些Golden Eye看一下。他们会在对的设备上仔细地做对比。这个最终视频质量到底变得怎么样。所以他们对失真的敏感度是非常非常高的,而且他们的权利也很大,如果他们说你这个质量比以前差,那你这个新的,不管是软件,还是配置,基本上就不能用了。
以上都是影响图像质量的各个因素,如果我们想把各个因素都设计到算法里,可想而知需要考虑的方面很多,相当于在一个维度非常高的高维空间里求解的一个问题,这也是为什么它比较难。
视频质量评价更多的挑战还在于所收集的主观质量分数的质量怎么样。比如HBO的logo,这幅图片质量到底好还是不好呢?相信大部分人都会觉得质量OK,因为它本来就长这样。但很多人,特别是图像处理的人,都会说这全是噪声。如果检测到这个的话,很多人会把它当成一个Corner Case忽略掉。而且不同的人在主观上认为质量的高低也是不一样的,包括底下例子,我们到底是喜欢对比度很高的图片,还是喜欢对比度不那么高但是能看到很多细节的图片?大部分人的想法到底是怎么样的?为了回答这个问题,我们就不得不做主观实验。我们在做主观实验时,需要做一些假设来限定质量评价算法的应用场景,然后再找对应的、能给视频主观打分的人做一个比较科学的主观实验,来统一视频质量到底怎么样。一旦我们收集到的主观分数足够多,有足够的数据,我们就可以在相应的数据上开发客观评价算法。这样一来所开发的客观算法的性能比较稳定,其鲁棒性也比较好。如果在实际中遇到一些挑战,比如说不同的人对分数认可不一样的话,我们就有理由相信跟大多数人意见一致的结果是对的,因为我们的数据足够多。我们说意见不同的那个人并没有说错,只不过他跟我们想要服务的群体有偏差,就是他跟我们想要服务的大部分人意见不一致而已。一方面质量分数的主观性特别强,众口难调;另外一方面,在做客观算法研究时,我们本身对人眼视觉系统了解的并不够多,因为我们希望把人眼视觉系统做到软件里面,如果我们对它的理解不够深入的话,其实我们并没有办法完全模拟视觉系统。现在已经有很多,当然这都是基于经验或知识来设计的算法,有很多机制模拟人眼视觉系统,比如多尺度分析、多通道、各种掩膜效应,这其实都是从Visual Science之类借过来的概念,这些机制的也都很成功。
视频质量影响因素非常多,而且它应用在不同的视频传输阶段有不同的类型,所以设计一个通用的视频质量评价算法是非常非常困难的。这也是为什么SSIM变得被人们广泛接受。一方面是因为它相对于PSNR,是一个颠覆性的工作;另外一方面是因为在各种不同的场景工作,起码比PSNR更好。如果现在我们自己设计一个比较好的算法,我们有可能是在某一个场景工作的很好,但在其它场景就不一定。这也是我们做SSIMWAVE过程中的一个感悟。其实我们并不能期待设计一个算法就能解决所有的问题,我们还是要看客户的具体需求,尽可能地去涵盖不同的应用场景。比如我们在服务端音视频编解码转码时,一个算法是可以work的,但是在比如客户端、移动端,这个算法就需要做相应的调整,因为场景不一样。而且服务端转码时它不会出现rebuffering或者黑屏,但这些问题在客户端就非常容易出现。以上就是视频质量评价的基本背景介绍。
02 视频质量评价算法
下面进入到评价算法。
我们知道视频质量评价就是给视频打分,它可以用主观的方式打分,也可以用客观的方式打分。那我们就可以看,主观具体怎么做呢?主观是收集一些基准分数,但是它也有各种不方便的地方。但是因为这个是必须要做的,所以我们现在有几个国际标准。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。
只要在质量评价研究领域,不管是高校,还是公司里的大部分人都在围绕客观算法做工作。我们是把客观算法做成一个软件,能让它自动给我们打分,而且这个分数是符合人眼感知的。一般来说是根据有没有视频源把它分成这三类:全参考、部分参考、无参考。它所谓的参考是指无损或质量最好的视频。全参考是指视频源的所有信息都是可用的,比如在视频压缩的场景,因为编码器的输出就是压缩后的视频,那我就可以用全参考的方式来看,相对于我的输入,输出视频的质量到底有什么变化。部分参考是指视频源中并不是所有的像素我都知道,但是我可以去做一些统计,为了方便在通信系统里,比如在流媒体、客户端做质量评价的时候,我们是没有办法拿到视频源的,因为视频源的数据量本身就很大,但是如果能拿到一些统计量,然后做对比,也是可以提升准确率。
无参考是指压根不知道视频长什么样子,你给我一个视频,我给你打一个分,说是无参考,但实际上我们可以想象,人眼看视频时我们可能会觉得我知道它是好还是坏,但实际上我们人的大脑里边其实也是有参考的。这也是我们在跟客户接触时发现的一个比较有意思的问题,其实一个普通人对质量的理解跟他所在地区的带宽是有一定的相关性的,如果他那个区域的带宽普遍比较低,那他对质量容忍的程度就会比较高,他可以给一个比较模糊的视频一个比较高的分数,就是因为他已经习惯了。无参考的分数虽然简单易用,但是它也是要根据场景做调整。
客观质量评价的目标还是为了预测主观质量分数。在过去的十几年里,不断有人构建主观质量评价的数据集,因为很多人,特别是在学术领域,很多大学实验室会把他们构建的数据集公开,包括比如Google、YouTube的UGC数据集。数据集里有的有视频源,有的没有视频源,它就是一个视频,有对应的主观分数,然后这些视频可能经过各种各样的处理。我把数据集分成两类:一类是PGC,一类是UGC。从质量角度来说,PGC和UGC的应用场景区分程度是比较大的,因为PGC创作的时候有导演、有摄像,它的器材、场景、拍摄的环境可控性都非常强,做法也很专业,它的摄像器材质量比较好,那它拍摄出来的视频源的质量往往是非常高的。所以PGC一类的视频质量的问题主要是后续做视频传输或者处理中引入的问题,视频源往往质量比较高。但是UGC就不一样,UGC是User Generated Content,任何人随时随地用手机拍一段视频就可以上传,手机的不同档位,不同摄像头的品质,拍摄的东西五花八门,质量参差不齐。本身它视频源的质量不可控,所以各种各样的质量级别都有。而它的质量有时可能会比较差,我们又希望在客户端做一些增强,进一步提升了质量评价的复杂程度。PGC的质量可以这么形容,比如好莱坞工作室出来的质量是最高的,之后是单调下降的过程,它里面很少会真正需要增强,往往都是需要转码,压缩到不同版本,其质量只能是越来越差。因为视频压缩只会丢失信息,我们近似假设它的质量是越来越差,然后一直到最后客户端手机上或者电视上看的时候它的质量应该是最差的,关键区别就在于谁的服务好,谁的差的程度就比较少。但是UGC不一样,很多时候UGC视频源不怎么样,但是服务端的增强算法很厉害,比如运动模糊能矫正过来,那它的质量提升就会非常高。这样的话,单调下降的质量趋势的假设就完全不成立了,所以这块都需要具体场景,具体分析。
我列了一些数据集,这些数据集基本上都是公开的,都是全世界的大学能够下载到的,但是都比较大,感兴趣的同学可以自行下载。
如果我们只看图片的上半部分就是Acquisition、Compression、Transmission Over Network和Reconstruction。其实就是一个简化视频流的传输过程,先拍摄再压缩然后传输。Reconstruction相当于视频解码。在这么一个过程中,压缩之前和解压缩之后就可以做一个全参考。如果我们不知道压缩之前的版本,那就用解压缩之后的做一个无参考(No Reference)而Reduce Reference是一个折中,因为No Reference是一个非常具有挑战性的研究方向。Full Reference相对来说可控性更强一些,所以有人提出能不能像刚才说的,算出一些统计量,它不一定是一帧,它可以是1秒算一个统计量,比如1秒算五个数字,把这五个统计量发到解码端,然后做质量评价。它相当于是一个数据量和准确率之间的折中。当然,现在研究的比较火的还是Full Reference和No Reference。部分参考在实际应用中有些积累,但是现在无参考比较常见。
用另外一种角度来区分这些算法的话,我们可以将他们分成知识驱动和数据驱动,任何图像处理都可以这样区分,我到底是利用知识经验或者对人眼视觉系统的了解来设计一些模块去捕获失真,然后得出一套算法,这是知识驱动。另外一个,数据驱动就是我们现在用神经网络或者深度学习的办法,我们收集视频,打标签,然后做有监督或者无监督的学习,学习出一个网络模型用于预测。这就是两种的区别。
对于客观算法而言,两种驱动各有利弊。人们会对知识驱动和数据驱动有倾向性,但也有混合的。我个人认为二者混合好,因为它们有互补性。我们知道一些现有的机制,特别是人眼视觉系统的机制的话,那我们应该把它利用上,但是更多的还是让我的算法能见到更多不懂、不一样的case,它见到的case越广,那算法的通用性应该就会更高一些。而且还有一点区分,往往知识驱动模型的可解释性比较强,因为客户也会问,你给我的视频质量打分低,到底是什么东西让你认为它质量差?它到底是噪声太多,还是说它有什么斑点,还是说细节丢失太多?因为不同的模块有各自不同的任务,你可以很容易地挖进去,然后搞清楚到底是什么原因,我这个算法才认为它质量差。数据驱动型的算法就很难达到这一点。但是现在已经有一些模型可以通过注意力机制之类的东西或多或少解释一点,但是它很难去解释码率、失真过多过少之类的。而且数据驱动比较麻烦的地方还是在于它需要大量的视频样本,而且标签打起来也非常难,因为我们平时做主观实验的视频都是一段10秒的视频打一个分数,那我们真正算法去算的时候往往是1帧算一个分数出来。比如1秒24帧,那10秒就240帧,做数据驱动去训练模型时意味着240帧的图像最后得到的标签分数都是一样的。而10秒之内的质量也是有变化的,所以标签并不一定代表每一帧的质量,我们训练模型时就需要一些考虑。而且往往我去训练的时候,它比较依赖于你的数据是什么样,就是你的视频的复杂度之类的特性是什么样的。这就需要我们在准备视频时比较小心,确保我们想要覆盖的各种类型的视频都能够覆盖到。模型越大,训练时间越长,要求的算力就越多,这个就看我们的基础设施怎么样了。一般来说,人们都经常用这种基于知识和数据的质量评价。人们也做过不同的尝试,但最常用的还是通过知识驱动型的算法看到底什么样的模块能更有效地预测质量,然后把这些模块捕获到的信息作为特征,输入给我们想要训练的模型里,这样的话也能提高它的效率。
SSIM、PSNR属于知识驱动型,因为它也可以用数学公式写出来。但是像BVQA、NIQE这些是无参考的算法模型,它往往都是数据驱动的。然后像中间这些过渡的VMAF,其实就是一个融合,它先用一些知识驱动的模型去提取特征,然后再接着一个SVM的模型训练,最后达到比较好的效果。所以现在做视频质量评价的人比较常用的是比如说SSIM、PSNR都是比较经典的算法,现在常用的是Netflix的VMA和Apple的AVQT,普遍认为是比较好的是SSIMPLUS,但是SSIPLUS不是开源的,所以需要视频质量评价算法测试的话,可以尝试一下。
那我们怎么评价客观算法到底好还是不好呢?其实我们往往最后是会看这几指标,我这边只列了3个,当然还有一些别的,就比如说不同的误差计算方式,但是,我们一般会画一个散点图。这个散点图的横坐标是客观分数,算法计算出来的分数,纵坐标是主观,就是我们主观实验收集到的所谓的Golden Score。我们看它的相关性是不是够高,它的单调性怎么样,然后它的误差均方是不是够小。一般来说,像这个散点图,它的效果就不是很好。这只是一个例子,推荐相关性最起码到0.8以上,一般人才可以考虑在实际系统中使用。这是一个经验值,所以这些就是我想要分享的关于算法的内容。
这副图其实是评价算法在学术研究领域的一个总括。它有传统的研究内容:全参考、部分参考和无参考,它可以按照不同的开发办法,有不同的模型。现在越来越多新的研究的方向,比如3D、Screen content(比如视频会议)、VR、multi-view还有360度的,特别最近比较火的VR,人们对这些视频的质量评价也都非常感兴趣,所以从学术研究方向来说,随着我们新的视频格式或者新的视频编码标准出现,我们都需要对应算法的更新。其实只要涉及到视频处理,质量评价算法其实都是必不可少的。但各种基于学习算法的也有不同,这都是属于不同的研究方向。
03 端到端的视频质量监控实践
然后我们进入到实践环节。刚才说了质量评价的一些概念和算法,这是一个端到端的质量监控的实践。
首先说说我们为什么要做这件事。我先解释下这个图,它是一个简化版的视频传输的链路,相当于从左边的视频源拿到以后,经过编码器,转码器,打包,网络分发,最后视频在消费设备上显示。那为什么要去监控质量呢?一方面,从大的概念来讲,真正做视频服务提供商的最关心的就是带宽,因为带宽直接影响到传输视频的成本。我们视频传输的越多,成本就越高。但是如果我们用广告模型来赚钱的话,那视频的量一定要保证,不然我广告是没办法投放的。现在有一个矛盾,我投放视频越多,成本越高,但是投放视频越少,成本低了但是广告收入也低了,所以需要斟酌。但是同样,那我投放出来视频以后,我的用户体验到底怎么样。如果我视频投出去了,用户觉得体验太差,他不买单,压根就不看,那这个就等于生意没做好。所以最好以用户体验为中心去反向优化视频链、传输链路上的各个模块。如果我们能做到端到端的智能监控,比如设置不同的监控点的话,就像刚才我说的,如果我们在一个直播的链路里头能够有效且高效的定位这些问题,及时发现问题,而且准确地定位问题源头的话,那这个对视频服务提供商就是很好的、很有价值的一个工具。因为如果一个视频有问题的话,如果我们不提前发现,等客户发现,客户每打一个电话他们就要花至少8块钱去把问题解决掉,8块钱听着不多,但是他们有几百万的客户,一人一年打10个电话对他们来说就是一笔不小的成本。所以如果能把这个问题限制在源头,而且及早地修正,一旦有客户打电话的话,他们是一层一层的,不同的团队要采取不同的措施,一直到定位到问题,解决问题为止那。如果我们能有一个系统的端到端的监控,而且理想情况下一秒即刻定位问题的话,几分钟就把问题解决了,这个带来的价值就是巨大的,所以一旦能够监控实施起来的话,能够节省成本是非常多的。从另外一个角度来讲,我们一旦有一个比较好的质量评价算法,我们就可以大规模地做行业内的对比,这就是我说的准确进行竞品定位。因为我们经常需要做一些竞品,对比同样的视频,到底我们的质量和竞品的质量或者说我们的带宽和竞品带宽到底是什么样的情况。这种情况下,如果我们有一个好的算法的话,它是能极大地提升效率。
在端到端的视频质量监控系统里,它的输出是什么,就是说我们为什么要做这件事?刚才说我们以用户为中心快速地解决问题,这是一方面。假设我们有了这样一个系统,我们就7天24小时不停地收集数据,而这个数据对我们这种视频服务公司的人来说是非常有价值的。我们可以做成系统看版,就是统计每一个用户甚至大盘的观影体验,然后基于不同的时间、地域、业务,给它进行不同的分类,从而能够让我们对整体的视频业务大盘的实时在线业务有一个更清晰的理解。我还以美国为例,业务覆盖美国东岸和西岸,那东岸和西岸的质量到底怎么样?如果东岸的质量比较差,但它的付费客户转化率比较高,那我肯定希望我在做资源分配的时候把东岸的质量给它提上来,从而吸引更多的用户。所以端到端的质量监控还可以用来做视频服务的数据分析,我把它服务的群体分成了三层:管理团队,运营团队,还有技术团队。
利用数据驱动的办法能让我的管理团队制定接下来如何进行分配资源。我到底是在不同区域做一个平衡,还是着重把资源花在一些实时直播的事件上或者说对我的业务有一个更深的理解。因为在商务看版里,就视频业务而言,它无非是带宽成本(这相当于我的投入)和质量或者用户体验可以作为产出,从这个角度,我们可以算ROI。但是现在往往我们质量产出这个没有统一的数据,你很难把ROI统一起来。
对运维团队而言,可以快速定位问题,然后有效地解决问题,节省资源。对技术团队而言,其实也是一个非常好的工具,比如我上新的算法或者编码器了,我都可以实时查看新算法在线上的表现,因为对技术团队而言,它其中一个痛点就是我的算法在线下实验室里面表现的非常好,但是放到线上以后好像看不出来区别,这就是一个问题。有线上监控的话,它就可以直接线上去跑,比如小范围去跑,然后验证它的技术有效性。所以端到端的系统对视频业务的每一层都有帮助。
我们在系统传输时有很多常见的问题,比如视频静止、没有声音、黑屏、音画不同步,端到端的质量监控一旦建立起来的话,我们就可以不停地把捕获某一方面问题的模块给它添加进去。我列举个例子,比如网络方面可能有带宽不足,媒体方面可能本身的音视频文件或者音视频流定位错误或配置错误导致流缺失,或者协议错误导致根本没办法解码,甚至是网络丢包导致马赛克、块效应、模糊之类的失真,这些其实都是比较常见的系统的问题。
对应的举个例子,左上角其实是一个黑屏图片,不是空的,这个黑屏就是什么都看不着。中间这个块效应,往往属于传统有线电视丢包时产生的。右上角是HDR里经常看到的天空上的带状效应,左下角是噪声。右下角是最常见的,码率过低出现的带状效应,块效应,模糊都混在一起,都是压缩时码率过低产生的这种失真,我们也经常会看到。
一旦端到端的质量监控建立起来以后,我们的质量评价算法还可以干什么?我们在不同的地方都需部署不同的质量监控算法,它有可能相同,有可能不同,但是在端到端的过程中还有很多不同的Use Case。我们常见的,比如视频生产端,我们叫它Source Validation,因为我们看到线上的视频质量并不是很好,那它到底是压缩的时候产生的问题,还是视频本身上传以后质量就不好。另外UGC这种在服务器端的编码系优化、Per-title Optimization这些都是很常用的优化方式,包括刚才我提到过CDN的Service switching,就是有不同的CDN可以切换,然后看CDN的质量高或者低;在客户端,Smart Streaming更像HLS或者MPEG-DASH里边是支持添加一些基于质量的matedata,去优化streaming算法或包分发的算法,所以这些是一个好的质量评价算法可以帮到我们的地方,我们可以用它进一步优化系统。
我们可以有需要地对每个不同的监控点上的质量评价算法有一些不同的要求,比如在视频源,那它毫无疑问只能是无参算法,因为没有更好的视频了。在实际应用中我们往往只要判断质量是不是够好就行了,这个视频源的质量是不是能过关,这样的话,它对整张评价算法要求的准确性就不用那么高,它也不用必须80分或90分,所以这对不同的质量评价算法在不同的监控点上的要求是不一样。不管是从准确度还是复杂度来说,客户端也只能是无参的,因为我们拿不到视频源,而且它要求复杂度要低,能耗要低,因为它往往是在移动端上跑,而且它还要能够照顾到系统的缓冲,不同档位之间的切换。
04 小结
最后,简单总结下:影响视频质量评价的因素非常多,它其实还是一个正在发展的研究方向,而它现在也慢慢在应用场景落地了,这还是一个过程。从我们的感觉来看,其实在不同的应用场景,人们都开始意识到我们需要做这种事,但是开发一个更好的质量评价算法能给我们带来什么样的收益,好像还不是很成熟。但是我们还是比较推荐做端到端的系统。其实所谓端到端听起来好像很复杂,我们可以从简单开始做,我们只是从复杂开始规划,但是从简单开始做。往往都是说,我们先把视频源的质量监控起来,把转码端发给CDN之前的质量先监控起来。移动端可能会比较难,但是我们可以从不同的设备,比如说我们现有的客户成功的案例就是我们给它监控电视盒子,就是机顶盒的HDMI的输出。这样的话有这几个不同点的数据,一旦开始收集数据以后,其实我们从里边能看出涉及很多有效信息。总体而言,质量这个东西,我们承认它并不是最重要的,因为我们不管是新建一个视频服务也好,还是说我们在现有的视频服务上优化也好,从0到1的时候质量要求往往并不是那么高,但是就是因为音视频领域竞争越来越激烈,一旦市面上有消息说,某某运营商,我们做一个对比或者做一个排名,那谁都不愿意去做最垫底的那个,因为这直接反映服务质量,如果你的服务质量不高的话,公司的信誉或用户感受都是非常非常差的。我认为现在人们好像也没有那么大的动力去做最好的,但是谁都不愿意做去做垫底的,所以这也是我们在销售时需要考虑的问题,怎么去定位这个东西,怎么挖掘痛点出来。
以上就是本次的全部分享内容,谢谢大家!
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。