基于内容的自适应视频传输算法及其应用

简介: 本文内容来自LiveVideoStack线上分享第四季第二期,由湖北经济学院副教授,胡胜红博士为大家介绍如何基于内容分析技术,从用户需求角度标注视频流重要性级别,构建自适应流传输策略,实现语义级QoE优化目标。

文 / 胡胜红

整理 / LiveVideoStack


大家好,我是胡胜红,本次议题主要源自我攻读博士期间的研究课题,在4-5年的研究时间里,我对基于内容的视频自适应传输策略和优化算法进行了深入探索,今天借此机会在LiveVideoStack平台与大家分享一下自己的研究成果和一些工程化经验。

 

本次分享主要由基于内容的自适应视频传输简介、系统架构及其优化策略、视频内容分析与分级、自适应流传输技术和行业现状、相关应用等五部分组成。


1. 基于内容的自适应视频传输简介


1.1 什么是基于内容的自适应视频传输(Content-based Adaptive Video Transmission)?


CBAVT是基于视频内容的特征分析,将视频流中用户感兴趣的重要内容片段以优化质量方式传输,实现语义层QoE最大化。 主体架构如图1。

image.png

图1  CBAVT系统框架


图1中的架构有几大要素,其中内容描述服务器是指在视频内容传输之前做内容的分析,实时流(Live Streaming)和点播流(Video on Demand)的内容分析方式是不一样的,在点播流中可以进行预分析,将元数据存储在内容描述服务器中便于传输时被决策模块访问; 而在实时流中边传输边分析,内容分析手段往往被简化,防止复杂性的计算带来过大时延。


内容分级: 是在内容传输之前必须做的,即分出内容重要性的级别,可以根据系统的应用特点进行级别的设置。 一般分为三个级别: 用户最感兴趣内容、中等感兴趣内容和最不感兴趣内容。

 

内容分级完成之后进行基于内容的自适应传输决策执行。 这个决策过程被建模为一个约束优化模型,优化目标是视频质量,而约束条件是网络环境中可变或不变的性能参数。 逻辑的自适应策略模型无法直接对数据流进行操作,实际中会结合现有的一些流传输方法(如RTSP、RTMP、DASH、HLS等),对实际数据包进行时域或空域的操作(丢帧、码流切换),使得码流在传输过程中能够适合不同的传输环境,例如物联网、无线网等一些不可靠网络环境。

 

1.2 主要关键词的介绍


视频分析: 利用机器学习方法或深度学习方法提取视频特征,此过程如果是在点播(VoD)的环境下手工标注也可以。 视频分析不属于流传输的范畴,是属于机器学习或者视频检索领域,近年来深度学习技术在图像和视频语义分析领域取得了巨大成功,有许多成果可被利用。 国际上一般使用MPEG-7标准管理多媒体元数据的存储和访问。


内容分级: 基于领域知识或者用户偏好对视频内容进行重要性分级,不同的系统要根据不同的应用目标做内容分级。


效用优化: 在网络约束或者无线网络不稳定情况下,流传输相关的视频参数如帧率、码率等的改变对用户QoE的影响效果,可以通过一些拟合方法进行建模。


实时流传输: 是一些标准的传输流技术,所有的视频流操作都离不开这些标准,自适应视频传输技术必须依赖实时流传输技术实现信号层操作,包括RTP/RTSP、RTMP、HLS、DASH等标准。


语义级的QoE: 传统的QoE是Quality of Experience,即用户对所播放视频的主观体验及用户对视频内容的认可度,换而言之就是与用户语义相关的需求(即用户观看的信息理解、兴趣和情感等方面)是否被有效满足。

 

2. 视频内容分析与分级

image.png

图2  视频内容分析任务

 

CBAVT系统的首要任务是视频内容分析。 通常,视频内容分析分为高层、中层、低层三个层次,中层和低层可用的内容合并为中低层内容分析。 高层语义分析可以利用我们熟知的领域知识,例如足球视频、音乐视频、电影、自拍视频(以个人为中心的视频)等等。


语义内容分析中有几个容易被利用的特征。 其中,情感特征容易反映观看者的情绪变换,例如电影视频中不同情节的情感,可以使用自动或手动方式对视频情感特征进行标注。 而对象特征可以指电影视频或自拍视频都会存在的主角,与主角有关的动作和场景都是比较重要的,或者监控视频中的被关注对象。 高层语义分析的通用性并不是很强,不同用户和不同领域对语义的要求有很大的差异,因此要结合具体应用而论。


中低层语义分析特征比较通用化,其中注意力特征指眼动或者人对视频中出现的运动变化产生的关注,此领域有许多成果可以被利用。 运动特征作为视频内容精彩与否的重要表征量,比较通用化,因此早期基于内容的自适应视频传输策略都是基于运动特征的。 声音特征对情感的表达非常敏感,所以声音特征可以用来对情感内容进行识别和标注,除此之外还有纹理特征等等。

 

3. 视频内容分析和标注实例


3.1 利用运动对内容进行分级

image.png

图3  运动特征分析


以早期我的一篇论文来作为介绍,我们对画面内任何宏块都可以提取运动幅值和运动方向作为运动特征,目前运动特征的提取可以达到实时化。 图3将12个标准测试视频划分为3个不同的运动级别: 低速运动(low speed级别的视频流),中速运动(Medium speed 运动)、高速运动(high speed运动,例如踢足球的运动)。 图中可以看出,在同样码率的情况下,高速运动的质量会非常低,因此在码流切换的时候应尽可能在高速运动时切换为高码率的传输。 图3中第四个视频为低速运动,第五个视频为高速运动,第六个视频为中速运动,第七个视频为高速运动。 在得到运动有关的分类之后,即可把视频分为低速运动、中速运动、高速运动三类。 三种不同的运动在不同码率下对应的视频质量可以拟合出一条曲线,即根据码率值、目标质量和运动特征值进行回归分析,得到一个目标值的拟合函数。 该目标值函数得到之后即可以代入优化模型。

 

3.2 如何在语义层进行内容分级

image.png

图4  精彩事件分析


以娱乐性较强的足球视频为例,通常观众看球最喜欢看进球和回放画面的,这种视频片段可以进行自动识别和标注,相应算法识别率可以达到百分之百。 除此之外,还有一些重要的犯规、射门等用户感兴趣片段,识别率也可以达到百分之九十以上。

 

假设把视频的运动强度、镜头切换率(固定时间窗口内镜头切换的快慢)以及声音能量三个特征参数融合为一条曲线,即可得到精彩度曲线,峰值区域就是精彩事件。 对精彩度曲线可设置阈值,大于该阈值即可设置为精彩事件,进而对被传输视频内容进行分级。

 

3.3 电影视频或者个人自拍视频

image.png

图5  个性化情感分析


情感作为语义层分级的最高级或者作为高于语义层单独称为情感层,是视频分析的最高层任务。 该类视频是表演者情感和观众情感的融合,即观众喜欢看何种情感的视频,就对相应情感的片段进行优化。


由于近几年深度学习技术在计算机视觉领域的广泛应用,情感识别的准确率提升很明显。 例如应用Resnet-50提取深度卷积特征,应用支持向量机(SVM)分6类基本情感的概率值作为视频的一个特征量。 以镜头为单元,一般同一镜头的情感是相似的,在连续时间域内计算两两镜头之间的距离,平均后可以得到用户的偏好强度。


例如用户为女生则会喜欢情感性比较强的电影,比如泰坦尼克号或者再见前任等; 用户为男生一般会喜欢功夫熊猫、速度与激情等一系列的电影。

 

4. 优化策略模型

image.png

图6  基于内容的自适应传输优化模型


图6是一个多维背包问题,逻辑上将视频看作一个个时间域上连续排列的独立单元,每个单元可能是一个帧或者片段,已被标注相应的级别值。 在满足当前的约束条件下(如带宽、帧率或者码率等),保证被传输单元的所有级别值的总和最大化即可。 显然做一个多维背包问题很困难而且耗时,但在实际使用中却没那么复杂,比如在丢帧的情况下,每次只能丢一帧,该背包问题则成为一维背包问题; 如果是多片段的编码流,在服务器上只有有限版本的码流情况下,则成为有限背包问题。


4.1 标注流传输单元


语义分级或者语义标签标注在流传输单元上,视频流结构决定标注粒度,以下为几种标注流传输单元:

 

(1)包级: IP包是独立的传输单元,主要是一种网络解决方案。


(2)帧级: 在视频传输中帧是独立的编解码单元,一个帧至少要包含在一个包里面,保证帧在传输过程中是安全的,否则解码后会出现马赛克。


(3)片段级: 当传输单元是一个片段时,即传输单元是一个Segment或者Chunk,包含多个帧,但起始帧一定是关键帧,否则切换时无法解码。

image.png

图7  与流传输单元相关的语义标注值


如图中,虚框表示逻辑上的标注,语义标签可标注在帧上,也可以标注在片段上,具体依据不同的流传输系统而定。

 

5. 自适应流传输技术


5.1 实时流传输实现: 基于RTP/RTSP

image.png

图8  RTSP丢帧操作


标注完成之后进行丢帧操作,一般情况下在实时流中丢弃一定非参考帧,可以将码率降低50%~30%,同时也能够保证解码时不出错。 丢多少帧可由内容的级别决定,级别越高的内容丢帧越少,级别低的帧不能丢P帧,因为会出现明显的卡顿。

 

5.2 实时流传输实现: 基于DASH码流切换

image.png

图9  码流切换操作


码率切换的一个优点是不会出现卡顿。 缺点是如果码率切换太频繁,就会出现用户对质量的焦虑感,因为码率从低到高的切换用户比较容易接受,反之就会比较难接受。 因此根据内容重要性级别在不同质量码流间切换时,还要考虑缓存分配,可以给高码率的视频预留一些缓存,这样高速运动的视频传输时可以尽量调高码率。 综合应用网络资源分配优化传输质量是一个比较好的策略。

 

5.3 视频流质量评价


在实时的传输过程中,需要对传输质量进行评估,以评判自适应传输算法是否有效,包括客观质量、语义级QoE两种评判方法。


目前对视频客观质量的评价标准有以下几种方法:

PSNR:最早传统的方法,是基于像素值失真的度量。


SSIM:基于结构失真的度量,与PSNR相比更敏感,往往PSNR不明显时SSIM更明显。


VQM:基于感知域失真的度量,是通过人可以感知运动、纹理等事物的参数的度量来评价视频的质量,很多现有的方法普遍认为VQM更符合人眼的质量感知(但就我认为,VQM是做加权平均值,往往比较模糊,存在误差,某些情况下误差会更大。)


VMAF:基于机器学习模型的失真度量,缺点是运行时间比较长,但准确度与PSNR、SSIM相近。


5.3.1 SSIM客观质量评价

image.png

图10  客观质量评价


分别对四种电影视频进行BA(基于缓存的自适应方法)、PANDA(基于带宽的自适应方法)、CDASH(基于内容的自适应传输方法)三种质量评价之后,从图10中可以看出对于电影视频是很有效的,因为电影视频中一部分是低速运动,一部分是高速运动,所以低速运动(低码率传输)可以为高速运动(高码率传输)片段预留缓存时间,因此效果很好。 但是在Bigbunny(动画片)中,运动的级别都相近,一部分是低速运动一部分是中速运动。 Timber(音乐剧),大部分都在跳Disco,所以运动级别非常高,大部分视频内容都是高级别运动,无法预留缓存时间,因此算法的效果不是很好。


5.4 语义级QoE


要做到了解用户的语义需求是否被满足,则需要做一些用户调查,可以设置模板或者问卷,让用户进行回答,例如以下几点:

  • 用户关注的运动内容是否平滑清晰


  • 用户关注的进球事件是否完整无缺失


  • 用户关注的情感内容是否完整无缺失


  • 用户关注的教学内容是否清晰可读


  • 用户关注的对象是否清晰可识别


 

5.4.1 语义级QoE评价

image.png

图11  主观质量评价


最后发现用户的回答是符合评价需求的。

 

6. 基于实时流传输技术实现


(1)跨层控制: 基于包的控制

把语义层的特征放到信号层,在信号层与IP包自身所带协议的标头进行设置,利用MPLS(多标签路由)、802.11e(提供不同概率的转换机制)、SDN实现基于丢包/选择路由等操作对分级视频数据包进行操作。


(2)链路控制(又称丢帧控制)

链路控制基于GoP结构保证关键帧和P帧的顺序,再丢弃一定比率的非关键帧可以降低码率,但实际应用有局限性,一般情况下只能降低30%左右码率,再大了就会导致明显的卡顿。


(3)切换控制

切换控制是基于HTTP协议,丢帧或丢包的概率不大,是基于码流切换的策略,会造成卡顿或者黑屏。

 

7. 行业现状、相关应用

 

7.1 足球视频Highlight传输

image.png

图12  面向足球视频点播的CBAVT系统


将足球视频内容分为0、1、2三个精彩度级别,2为最高优先级,1是中等,0是带球等普通场景,标注后与视频本身的GoP结合在一起实现RTP分包的发送,进行相应丢包操作,监控网络状态可以用RTCP包。

 

7.2 视频情感内容自适应传输

image.png

图13  面向电影视频流的情感自适应系统


把情感特征与MPD文件关联在一起,在传输之前读取相关情感特征,然后与用户历史观看视频的情感特征比对得到视频分级的标注,输入到客户端的决策模块中,客户端的决策模块决定下载何种比特流,发送HTTP请求,在服务器上下载对应的视频片段即可。 该模型实现在DASH标准客户端,有两个版本,一个是java版本,另一个 是VC版本。


目前实际应用中的自适应视频流传输更多的是利用信号层参数优化传输,而对于视频内容特别是语义层的关注相对比较少,主要原因可能在于做视频流传输的人员可能没做过视频分析或者视频检索相关工作,关注度不够; 另外由于要考虑时延问题,会觉得内容分析时延较大满足不了实时任务,但实际上应该多尝试一些办法降低时延,可以通过边缘节点的代理或者配置来提高各种文件的读取,作为任何一个特征文件,其实可以共享。

————————————————

版权声明:本文为CSDN博主「LiveVideoStack_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/102854367


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

阿里云视频云@凡科快图.png

相关文章
|
20小时前
|
机器学习/深度学习 算法 API
【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)
【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)
6 0
|
1天前
|
机器学习/深度学习 算法
理解并应用机器学习算法:决策树
【5月更文挑战第12天】决策树是直观的分类与回归机器学习算法,通过树状结构模拟决策过程。每个内部节点代表特征属性,分支代表属性取值,叶子节点代表类别。构建过程包括特征选择(如信息增益、基尼指数等)、决策树生成和剪枝(预剪枝和后剪枝)以防止过拟合。广泛应用在信贷风险评估、医疗诊断等领域。理解并掌握决策树有助于解决实际问题。
|
3天前
|
机器学习/深度学习 算法
应用规则学习算法识别有毒的蘑菇
应用规则学习算法识别有毒的蘑菇
|
5天前
|
算法
视频讲解|基于多目标粒子群算法的配电网储能选址定容
视频讲解|基于多目标粒子群算法的配电网储能选址定容
|
7天前
|
存储 机器学习/深度学习 算法
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
|
8天前
|
数据采集 机器学习/深度学习 算法
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
|
12天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
13天前
|
机器学习/深度学习 算法 C语言
【C言专栏】递归算法在 C 语言中的应用
【4月更文挑战第30天】本文介绍了递归算法在C语言中的应用,包括基本概念(通过调用自身解决子问题)、特点(调用自身、终止条件、栈空间)和实现步骤(定义递归函数、分解问题、设置终止条件、组合解)。文中通过阶乘计算和斐波那契数列两个案例展示了递归的使用,强调了递归可能导致的栈溢出问题及优化需求。学习递归有助于理解和应用“分而治之”策略。
|
13天前
|
机器学习/深度学习 数据可视化 算法
【Python机器学习专栏】t-SNE算法在数据可视化中的应用
【4月更文挑战第30天】t-SNE算法是用于高维数据可视化的非线性降维技术,通过最小化Kullback-Leibler散度在低维空间保持数据点间关系。其特点包括:高维到二维/三维映射、保留局部结构、无需预定义簇数量,但计算成本高。Python中可使用`scikit-learn`的`TSNE`类实现,结合`matplotlib`进行可视化。尽管计算昂贵,t-SNE在揭示复杂数据集结构上极具价值。
|
13天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。