实时互动下视频 QoE 端到端轻量化网络建模

news2024/11/26 1:24:57

在实时视频互动中,影响观众对视频体验的有较多且复杂的因素,包括:画质、流畅度以及与其耦合的观看设备等。传统客观算法会利用网络传输或编解码参数拟合接收端人的感知体验,或者使用图像质量结合其他相关参数拟合实时视频质量。由于缺少除画质外的量化指标且没有直接衡量视频感知体验,所以当前QoE算法有一定局限性。目前端到端的QoE模型可以有效解决上述面临的难题,但同时也面临着主观实验复杂、数据依赖与模型运算量大等问题。LiveVideoStackCon 2022北京站邀请到郑林儒老师为我们介绍视频体验数据库的建立、视频画质评估建模及其端上轻量优化。

文/郑林儒

编辑/LiveVideoStack

大家好,我是来自声网的视频算法工程师郑林儒,今天给大家分享的是实时互动下视频QoE端到端轻量化网络建模。

d363d60b8f6a34246c1a0666145e59dd.png

今天将从影响视频主观体验的因素、针对这些影响因素现阶段建立的一些数据库、对于视频画质评估做了一个端到端建模、考虑模型端上运行的实时性介绍了当前主流的深度学习模型加速方法和对视频QoE的展望五个部分展开介绍。

-01-

QoE介绍

617ecec512ed2f81299448cda41c1faa.png

视频或者实时互动场景下QoE体验的影响因素主要有媒体体验和互动体验。媒体体验分为视频体验和音频体验。视频体验包括画质、流畅度、播放设备等。音频体验则包括清晰度、流畅度、播放设备。除此之外还有连接视频和音频的音画同步。互动体验目前主要定义为延迟。

af3f36bd8d3243da8da5993daadad4ec.png

为什么要建立一套端到端的QoE评估体系呢?上图是视频从编码传输到被用户感知的流程。编码器将视频编成码流,经过复杂的网络环境会有各种码率自适应算法去感知当前网络变化或根据客户端播放情况自动做出合理的码率调整,以最大化用户在线观看视频的体验。一个端到端的QoE指标可以提供相对于PSNR、SSIM更贴合主观的画质指标。从而基于这个指标可以指导编码器选择最优编码参数,进而在不影响用户感知画质情况下实现码率节省。类似的,它也可作为ABR算法的参考指标。

-02-

QoE建库

a8c7e38b1e7c8d981af2c3261e80b4c1.png

当前我们所建立的数据库主要针对视频体验。首先考虑的是解码端视频画质,这里画质包括了清晰度、亮度、对比度、色彩等等方面。在画质基础上增加了画面流畅度的评估维度,刻画流畅度的客观指标主要是帧率和卡顿率,但也和画面、应用场景有关。可以看到无论是解码端画质还是流畅度都会收到观看设备的影响,比如屏幕ppi会影响画质体验、刷新率会影响流畅度体验。这里我们将设备大致归为3类,分别为电脑、手机以及电视。

756223bb29089f31ac3f213349558f55.png

首先建立了一个画质主观评估数据库,通过内部视频软件收集了一些数据。随后对收集数据进行处理,通过我们开发的打分软件,按照ITU标准进行主观评估,得到每个视频的MOS。

8c737c068fc59f0d7ca8e3e52c0cb02b.png

对于每个视频序列我们都至少有20位评估人员参与打分以保证数据清洗后的有效人数。根据ITU推荐的方法,计算每个人与整体打分的相关性,再排除相关性较低的参与者。实验中我们通过设置锚点发现了设备不同ppi对画质评估影响很大,在像素密度较高屏幕素质越好的设备上给出的分也相对较高。同时锚点的设置也可以作为数据筛选的依据。

c45273a43e61a55c8a55f90f8ba2a20c.png

设置合理的视频序列也是需要考虑的。为了避免长时间单调标注过程中产生疲劳而导致数据失真,每个批次尽量差异化视频内容,并且在画质层面最大化覆盖评分区间,每个评估人员每次打分的时长不超过30分钟。

fa11b87e02def347251234748fbba142.png

如何在视频失真类型以及视频特征上最大化多样性呢?首先考虑空域失真即画面失真,一般会因为视频采集时聚焦不准而导致模糊,会由于背光等光照不均匀时出现过暗或过曝。视频传输前会通过编码器编成码流,由于有量化操作所以在解码后会有块效应,还有其他很多类型的失真。时域相关的失真一般会有画面卡顿以及不同的视频帧率。从特征层面去表述或者区分的话,用经典的视频特征SI和TI表述。SI表示视频的空间细节程度,越复杂的场景SI越高;TI表示视频在时域上的画面变化程度,运动越剧烈的场景TI越高。

6140dfcba74854b3bdefa9be7a9ec2d0.png

左图是几十个视频在iPhone上全屏和半屏观看时画质MOS分变化趋势图。可以看到,相对于hs,fs大部分情况下画质都有所降低。建模的目的就是为了找出相同画质范围内的偏移。右上角的图来自华为的白皮书,表示不同分辨率视频在不同尺寸设备上的极限MOS。越小分辨率的视频在更大尺寸的设备上播放衰减越严重。右下角是我们做的一个实验。对六个原视频进行不同帧率的MOS评估,发现不同视频,随着帧率的上升,MOS会有所提升。但不同视频内容导致的变化趋势也略有不同,与视频画面会有很大关系,当运动剧烈时则需要更高的帧率支持,反之则不需要浪费更多的帧率资源。

-03-

QoE建模

7490476f632d7f50f39ee7000c754396.png

首先考虑的是视频解码端画质的建模。业内目前主要有两种方式。一种是端到端的训练方式,另一种是非端到端的训练方式。端到端是对一组视频直接采样,然后回归MOS。采集的数据在分辨率和帧率大概率是不一样的,需要通过采样统一size。非端到端利用特征提取器,将原始视频通过特征提取器提取到同一个维度,然后再回归。右边的图是不同的采样方式。第一个是空域采样,保证了所有时域上的帧数。还有时域采样和时空域采样。下面的图表示不同采样方式MOS和原始视频MOS的相关性。在空域进行时域采样时相关性最高,时域信息没有空域信息重要。线上推理完整的size则需要消耗更多资源。评估视频的画质不仅仅是空域上的失真,如果仅有空域的失真,直接用IQA拟合VQA即可,但目前该类方案的拟合效果都不佳。所以时域的影响不能消除。

0552a8a17f4b51f0921b35b0957d968c.png

假设现在有一个十秒的视频,每一秒都有一个MOS。每一秒MOS的均值和整个视频的MOS有强相关性,基本可以认为互等。在这样的前提下,滞后效应可以描述为当视频的画质下降时,MOS也会立即下降。但当画质恢复时,由于人的主观对之前的损失有记忆,提升是一个缓慢的过程。视频2反映的趋势也是如此。画质不断波动,画质差的印象会一直在人的印象中,主观MOS很难提升。

a5fe34de3744126f349724698fe50549.png

通过建模可以非常直观的反映该效应。充分考虑前ti时刻和后ti时刻的影响。前ti时刻类比快速下降,对前ti时刻每一时刻的预测值取最小值,可以体现MOS快速下降的行为;而对后ti时刻的每一时刻预测值进行升序排序,对预测值较高的赋更低的权重,这一操作体现了缓慢提升的思想。将两段时刻加权求和,作为最终的MOS。右下图红框就是效果展示。两个数据集上以及不同的客观指标上都有比较明显的提升。但简单的求平均,类似单帧IQA平均VQA,效果较差。

31d5cfb31b75649602976c77930a5254.png

我们也同时在两个数据集上做了实验。AGORA-VQA是目前采用的方法。IQA+MOTION是基于深度学习的IQA算法。BRISQUE是传统IQA算法。V-BINDS是传统视频的算法。VSFA是视频的深度学习算法。

-04-

模型加速

66b91465898d757328671643f02b2977.png

基于深度学习算法落地时避免不了的一个问题就是运算量与性能的平衡。怎么在减小模型参数和运算量的同时保持甚至提高性能,业内一些小模型的设计给我们提供了一些思路。第一张图是一个标准卷积过程,输入3通道图片经过一个4通道卷积层。MobileNet中对标准卷积进行了拆解,拆解成一个个深度卷积和逐点卷积。深度卷积的参数量和运算量有相同的关系,均为输出通道1/N,而逐点卷积为卷积核大小平方分之一,通常在较深的网络中N远大于K,所以也可以看出这种结构下运算量主要来自于逐点卷积。

74ae088274a09749e1d25c1a33a2ebed.png

为了减少运算量同时增加通道间的信息流通,ShuffleNet中对分组卷积中不同通道进行重排,这样下面的分组卷积中不同组的输入就实现了特征融合。在模型落地的过程中也发现了一些问题。在V1模型中,如果采用ResNet瓶颈结构,输入和输出通道会不一样,会增加内存的存取,即MAC。另外,分组卷积也会增加MAC。不同分支上的碎片化操作会降低并行度,例如channel shuffle。ReLU、add、shuffle这类元素级操作的运算量虽然比较低但是也会带来MAC。针对这些问题,V2进行了一定的优化。

dfac0d72527935e1536dd1b6cb4de810.png

这张图展示了不同小模型的性能。ShuffleNet的运算量、参数量还是线上推理延迟都比较小。在落地算法模型时,更为关注的是延迟,特别是RTE的场景下。

8a03182b78026151205f38b9825f03b3.png

对于模型加速,选取一个合理的,对硬件友好的结构是基础。基于模型结构基础上,还可以通过一些方法对模型做进一步的压缩。模型蒸馏类似于一个迁移学习,将一个大模型的输出作为监督信息指导小模型的训练。模型剪枝主要是通过评估不同结构、不同通道的重要性对其进行剪枝。模型量化通常训练的权重是float32,我们通过对其量化成float16甚至int8,也可以加速运算。低秩分解认为深度学习模型权重矩阵非常大,可以将其近似分解成多个低秩矩阵来降低模型运算量。

b0a8c5eb16c25e71ef55f1f65e87f7b8.png

剪枝分为结构剪枝和非结构剪枝。非结构剪枝对硬件不友好,在实际应用中少见。结构化剪枝有一点需要注意,如果是在硬件上实时去跑,通道不是8、16、32的倍数的话,后续也需要通道对齐的处理,此时效果不一定会好。经过模型选择、优化、加速处理后,我们的模型与当前大模型相比,在性能相同的情况下参数量和运算量远低于大模型。

-05-

QoE展望

e35c5a5aa062832f8e1838b1c0a06380.png

目前这些QoE指标仍在内部打磨中,后续会开放给开发者和用户。后续阶段还要对端到端RTE-QoE指标进行完善,包括适配场景的增加、整合流畅度、延迟和音频MOS。在对这些指标建模后还需要一个完备可靠的算法验收确保其在线上线下表现一致。最后,基于画面的QoE算法随着视频分辨率的上升其运算量也会相应提高。画面剪切也会损失模型性能,怎么平衡模型准确率与不同分辨率下运算量也是需要考虑的。

谢谢大家!


ad792c9b47265b8dd4987a6c73a22f33.png

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

查看更多LiveVideoStackCon 2023上海站精彩话题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/566187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python[-5:-1]:一种高效且灵活的编程语言

Python[-5:-1]:一种高效且灵活的编程语言 Python被广泛应用于数据分析、机器学习、网络爬虫和自动化测试等领域。Python最新的版本是Python 3.10。 Python[-5:-1]的优点 Python[-5:-1]是Python语言中最新的版本。它的优点如下: 1.更快的性能 Python…

卡方检验Chi-square test

1.什么是卡方检验 卡方检验是一种用途很广的假设检验方法,属于非参数检验的范畴。 主要是比较两个或两个以上样本率以及两个分类变量的关联性分析。 根本思想是在于比较理论频次与实际频次的吻合程度或拟合优度问题。 分子代表了实际值与期望值的偏差,而…

.Net8顶级技术:边界检查之IR解析(二)

前言 IR技术应用在各个编程语言当中,它属于JIT的核心部分,确实有点点麻烦。但部分基本明了。本篇通过.Net8里面的边界检查的小例子了解下。前情提要,看这一篇之前建议看看前一篇:点击此处,以便于理解。 概括 1.前奏 先…

POSTGRESQL PG15关于归档的新模式

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到3群(共…

chatgpt赋能python:PythonSoup对于爬虫程序员来说为什么如此重要

Python Soup 对于爬虫程序员来说为什么如此重要 介绍 Python是现代编程世界中最广泛使用的语言之一。它是一个高级编程语言,可用于许多应用程序,从机器学习到游戏开发再到网络爬虫。对于网络爬虫,Python Soup是非常重要的工具之一。Soup是一…

如何像访问百度一样访问家里的服务器?(三)

来源:公众号【鱼鹰谈单片机】 作者:鱼鹰Osprey ID :emOsprey 在前面的两篇笔记《家里宽带搞个服务器,YYDS(一)》《家里宽带申请公网 IP(二)》,介绍了如何获取公网 IP&a…

chatgpt赋能python:Python%6简介

Python %6 简介 什么是Python %6? Python %6指的是在Python中使用%6操作符来计算一个数的余数。余数是指在进行整除时所剩余下的数字。在Python中,使用%符号来表示计算余数,因此%6表示计算一个数除以6所剩下的余数。 为什么要使用Python %…

Golang每日一练(leetDay0076) 第k大元素、组合总和III

目录 215. 数组中的第K个最大元素 Kth-largest-element-in-an-array 🌟🌟 216. 组合总和 III Combination Sum iii 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日…

13 Binder通信之ServiceManager

Binder通信之ServiceManager 一、前言 Android系统中存在很多service,当某个应用调用系统某个service的功能时,往往向系统发出请求,调用该服务的外部接口,这种外部接口我们通常叫做代理接口,也就是说要拿到目标服务需要先拿到目标服务的代理。这个时候,如果每个应用cli…

少林派问题汇总2

Q: torch转bmodel模型时,bmnetp工具报错 A: 有的模型涉及到动态shape,需要设置成动态编译dyntrue Q: A: 内存占满了,进程被系统kill掉了,运行内存建议12g以上 Q: ss…

企业级API网关之典型应用场景

目 录 01 企业面对API与网关的现状‍‍‍‍‍ 02 APIGW介绍及企业应用场景 03 总结 01 企业面对API与网关的现状‍ 在企业中,进行新的系统/应用/产品开发时,具有周密的流程:从需求分析、设计、开发、测试、发布与验收。所以,一…

Emacs之打开交互log(九十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

IDEA装上这3款ChatGPT插件,彻底炸裂!!

今天,给大家介绍3款好用的IntelliJ IDEA ChatGPT插件,各有千秋,可以帮我自动写代码,自动改善代码性能和安全并且生成视图对比,以及解释代码,优化代码,生成单元测试用例,更牛逼的是直接可以根据描…

13. Laravel 和 Vue-element-admin多语言配置

后端多语言 1. 安装, 并注册 composer require overtrue/laravel-lang:~6.0 # 添加以下行到 bootstrap/app.php $app->register(Overtrue\LaravelLang\TranslationServiceProvider::class);2. 修改默认语言为简体中文 # vim config/app.php locale > zh_CN…

『树莓派云台机器人』03. 利用SD卡进行树莓派的镜像烧录

目录 1. 下载镜像文件2. SD卡初始化与镜像烧录工具3. SD卡初始化过程4. 镜像烧录过程总结 欢迎关注 『树莓派云台机器人』 博客,持续更新中 欢迎关注 『树莓派云台机器人』 博客,持续更新中 1. 下载镜像文件 链接:https://pan.baidu.com/s/1…

我是普通人,我居然可以这样借力ChatGPT?(此文不卖课)

昨天写了一篇《程序员,如何借力ChatGPT?》,分享了借助AI: (1)撰写通用代码; (2)协助寻找BUG; (3)协助优化算法性能; &…

小白也能看懂的ChatGPT知识介绍

一、ChatGPT介绍 ChatGPT 是一款由 OpenAI 开发的人工智能技术驱动的语言模型应用。以下是 ChatGPT 的主要特点和功能: 自然语言处理:ChatGPT 可以识别和理解自然语言,包括英语、法语、德语、西班牙语等多种语言。它可以回答各种问题、提供各…

【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

文章目录 一、Room ViewModel LiveData 框架使用核心要点1、Room 框架优化分析2、Google 官方建议的 Room ViewModel LiveData 架构3、Room 与 LiveData 结合使用要点4、Repository 层核心要点5、ViewModel Room 结合使用6、Activity 组件中 ViewModel 使用要点7、Room 框…

RWKV论文燃爆!将RNN崛起进行到底!可扩百亿级参数,与Transformer表现相当!

深度学习自然语言处理 原创作者:鸽鸽 万众期待的RWKV论文来啦! 这股RNN崛起的“清流”,由民间开源组织发起,号称是第一个可扩展到百亿级参数的非transformer架构! RWKV结合了RNN和Transformer的优势:一方面…

【送书】前端系列16集-vue3范型,vue-i18n-next,watch,watchEffect

送书活动:挑选1名粉丝同学哦 免费包邮送。截止时间:2023/5/26号 19 : 00参与底部评论区说说:请在评论中分享你的阅读收获。 中台落地手记——业务服务化与数据资产化 vue-i18n-next vue3 中使用 i18n 需要安装的是 [vue-i18n v9] 的版本 npm…