首页 / 专利库 / 视听技术与设备 / 视频编码层 / 一种基于机器学习的内容自适应视频编码方法

一种基于机器学习的内容自适应视频编码方法

阅读:797发布:2020-05-08

专利汇可以提供一种基于机器学习的内容自适应视频编码方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于 机器学习 的内容自适应 视频编码 方法。它具体包括如下步骤:(1)构建数据集:选取不同素材的高 质量 视频,并以场景为单位,提取有效信息;(2)训练模型:使用机器学习方法训练 预测模型 ,采用多层全连接神经网络,根据用户设定参数生成网络模型;(3)实际分析预测:先将 视频流 缓冲一定 帧 数,并对缓冲 视频帧 提取复杂度信息,结合用户设定参数使用训练的网络模型,预测输出编码设定参数。本发明的有益效果是:可自适应决定编码参数,输出图像质量比较一致的视频流,具有较低计算复杂度,并能够方便地应用于现有的视频编码 框架 中。,下面是一种基于机器学习的内容自适应视频编码方法专利的具体信息内容。

1.一种基于机器学习的内容自适应视频编码方法,其特征是,具体包括如下步骤:
(1)构建数据集:选取不同素材的高质量视频,并以场景为单位,提取有效信息;
(2)训练模型:使用机器学习方法训练预测模型,采用多层全连接神经网络,根据用户设定参数生成网络模型;
(3)实际分析预测:先将视频流缓冲一定数,并对缓冲视频帧提取复杂度信息,结合用户设定参数使用训练的网络模型,预测输出编码设定参数。
2.根据权利要求1所述的一种基于机器学习的内容自适应视频编码方法,其特征是,在步骤(1)中,构建数据集的具体操作方法如下:
(11)根据实际应用场景,筛选高质量的素材,并将素材按场景划分为编码单元;
(12)按照固定编码参数模板,对每个场景按照三种分辨率,每种分辨率按照CRF值从12到40,步长为1的设定进行编码,统计得到每种情况下的复杂度信息、质量分数、码率,并记录相应编码参数为分辨率、帧率、CRF值,其中:质量分数采用VMAF,复杂度信息是指I/P/B帧对应的SATD平均值;
(13)由于VMAF计算质量分数时对分辨率不敏感,需要对其进行修正。
3.根据权利要求2所述的一种基于机器学习的内容自适应视频编码方法,其特征是,在步骤(13)中,修正方法如下:对CRF值小于29的样点,计算质量分数时在CRF=29时的质量分数基础时进行缩小,即乘以一个0到1的系数α,VMAF质量分数为Score,修正后为Score’,修正公式为:
Score'=Score[CRF=29]+(Score-Scare[CRF=29])*α。
4.根据权利要求2所述的一种基于机器学习的内容自适应视频编码方法,其特征是,在步骤(2)中,训练模型的具体操作方法如下:
(21)由构建数据集的信息可知,将特征分量分别标记为satd_I、satd_P、satd_B、size、fps、score,即分别表示为I帧SATD平均、P帧SATD平均值、B帧SATD平均值、分辨率、帧率、质量分数值;
(22)如果某些场景中,随着CRF设定参数的不同,质量分数score变化很小,那么剔除掉这部分数据;
(23)输出变量为CRF,选择网络模型,选择合适的迭代步长和次数,并根据迭代训练结果做适当调整,最终保存这个网络模型参数。
5.根据权利要求4所述的一种基于机器学习的内容自适应视频编码方法,其特征是,在步骤(21)中,由于同一个片段具有相同的分辨率和帧率,考虑到将输入变量归一化,并简化计算量,将特征分量改为input_I、input_P、input_B、score_N,size=width*height,其中:
6.根据权利要求4所述的一种基于机器学习的内容自适应视频编码方法,其特征是,在步骤(23)中,假设迭代次数上限为CntMax,迭代步长为Step,步长下限为StepMin,误差下限值为ErrMin,迭代训练方法如下:
(231)初始化迭代次数和迭代步长;
(232)进行迭代训练,迭代次数加1,与迭代次数上限进行比较,如果大于迭代次数上限则结束迭代训练;否则进入到下一步;
(233)每100次迭代训练记录误差Err,与误差下限值进行比较,如果小于误差下限值则结束迭代训练;否则进入到下一步;
(234)计算前一次误差ErrPre与当前误差ErrCur的差值Res=ErrPre-ErrCur,与误差下限值进行比较,如果大于误差下限值则返回到步骤(232);否则进入到下一步;
(235)缩小迭代步长Step=0.8*Step,与步长下限进行比较,如果大于步长下限则返回到步骤(232);否则结束迭代训练。
7.根据权利要求5所述的一种基于机器学习的内容自适应视频编码方法,其特征是,在步骤(3)中,实际分析预测的具体操作方法如下:
(31)根据用户设定的分辨率和帧率输入图像序列
(32)将待编码图像序列在缓冲队列中填满NUM帧;
(33)检查上一次缓冲队列中是否发生场景切换,即noChange是否为1,如果noChange=
0,表示上一次缓冲队列中已经发生场景切换,则执行步骤(36);如果noChange=1,表示上一次缓冲队列中没有发生场景切换;
(34)检测本次缓冲队列中是否发生场景切换,如果未发生,则UseId=NUM-1,noChange=1;如果发生场景切换,则记录场景切换点SceneId,UseId=SceneId-1,noChange=0;
(35)处理单元[0,UseId]使用上一次的编码参数,并执行步骤(38);
(36)noChange=0表明本次缓冲队列与上次没有联系,检测本次缓冲队列中是否发生场景切换;如果未发生场景切换,则UseId=NUM-1,noChange=1;如果发生场景切换,则记录场景切换点SceneId,UseId=SceneId-1,noChange=0;
(37)对处理单元[0,UseId]进行预测编码参数;
(38)对处理单元[0,UseId]进行实际编码,并保存此次的编码参数;
(39)由于已经编码了UseId帧,需要在缓冲队列中填满NUM帧。
8.根据权利要求7所述的一种基于机器学习的内容自适应视频编码方法,其特征是,在步骤(37)中,预测编码参数的具体操作方法如下:
(371)对处理单元[0,UseId]内的图像序列,按帧计算SATD值,并根据帧型I/P/B分别统计其平均值为satd_I、satd_P、satd_B;
(372)根据用户设定的分辨率、帧率、质量分数,计算得到input_I、input_P、input_B、score_N;
(373)将以上四个特征值作为输入,使用事先训练好的网络模型,预测得到CRF_predict;
(374)如果预测值CRF_predict不在预设范围[CRF_min,CRF_max]中;那么,如果CRF_predict>CRF_max,那么CRF_predict=CRF_max;如果CRF_predict(375)预测得到的CRF_predict,加上用户设定的分辨率、帧率参数,其他参数使用预设固定参数模板,即为编码参数。

说明书全文

一种基于机器学习的内容自适应视频编码方法

技术领域

[0001] 本发明涉及视频编码相关技术领域,尤其是指一种基于机器学习的内容自适应视频编码方法。

背景技术

[0002] 对于目前的视频文件转码需求,为了能在带宽受限和控制成本条件下提供更好的视频观看体验,OTT分发平台一般会根据通用编码配置表(或称为编码阶梯表),或者自定义配置模板,对每个源视频编码产生多个分辨率和码率组合的版本,然后根据用户带宽和播放终端选择合适的版本。这样的编码配置表只考虑了网络状况和终端播放器限制,而没有考虑视频特性。不同类别的视频,内容复杂度差别会很大。例如体育赛事等较高复杂度的视频,编码配置的码率可能偏低;而对于动画片等低复杂度的视频,编码配置的码率可能偏高,造成带宽浪费。这种方式最直接的结果就是用户终端看到的视频质量不一致。

发明内容

[0003] 本发明是为了克服现有技术中存在上述的不足,提供了一种视频质量较为一致的基于机器学习的内容自适应视频编码方法。
[0004] 为了实现上述目的,本发明采用以下技术方案:
[0005] 一种基于机器学习的内容自适应视频编码方法,具体包括如下步骤:
[0006] (1)构建数据集:选取不同素材的高质量视频,并以场景为单位,提取有效信息;
[0007] (2)训练模型:使用机器学习方法训练预测模型,采用多层全连接神经网络,根据用户设定参数生成网络模型;
[0008] (3)实际分析预测:先将视频流缓冲一定数,并对缓冲视频帧提取复杂度信息,结合用户设定参数使用训练的网络模型,预测输出编码设定参数。
[0009] 本方法由分析器和预测器两个核心组成,其中分析器用于决定编码帧型、统计每帧的图像信息(包括分辨率、I/P/B帧型、复杂度信息等);预测器根据场景信息和编码统计信息,结合用户设定参数,使用预先训练好的网络模型,进而输出实际编码参数;用户只需要设定所需的分辨率和所要求的图像质量级别,本方法即可自适应决定编码参数,输出图像质量比较一致的视频流。本方法采用恒定码率因子方法(CRF,Constant Rate Factor),并用户自定义参数,基于机器学习方法来决定编码参数,具有较低计算复杂度,并能够方便地应用于现有的视频编码框架中。
[0010] 作为优选,在步骤(1)中,构建数据集的具体操作方法如下:
[0011] (11)根据实际应用场景,筛选高质量的素材,并将素材按场景划分为编码单元;
[0012] (12)按照固定编码参数模板,对每个场景按照三种分辨率,每种分辨率按照CRF值从12到40,步长为1的设定进行编码,统计得到每种情况下的复杂度信息、质量分数、码率,并记录相应编码参数为分辨率、帧率、CRF值,其中:质量分数采用VMAF,复杂度信息是指I/P/B帧对应的SATD平均值;
[0013] (13)由于VMAF计算质量分数时对分辨率不敏感,需要对其进行修正。
[0014] 作为优选,在步骤(13)中,修正方法如下:对CRF值小于29的样点,计算质量分数时在CRF=29时的质量分数基础时进行缩小,即乘以一个0到1的系数α,VMAF质量分数为Score,修正后为Score’,修正公式为:
[0015] Score’=Score[CRF=29]+(Score-Score[CRF=29])*α。
[0016] 作为优选,在步骤(2)中,训练模型的具体操作方法如下:
[0017] (21)由构建数据集的信息可知,将特征分量分别标记为satd_I、satd_P、satd_B、size、fps、score,即分别表示为I帧SATD平均、P帧SATD平均值、B帧SATD平均值、分辨率、帧率、质量分数值;
[0018] (22)如果某些场景中,随着CRF设定参数的不同,质量分数score变化很小,那么剔除掉这部分数据;
[0019] (23)输出变量为CRF,选择网络模型,选择合适的迭代步长和次数,并根据迭代训练结果做适当调整,最终保存这个网络模型参数。
[0020] 作为优选,在步骤(21)中,由于同一个片段具有相同的分辨率和帧率,考虑到将输入变量归一化,并简化计算量,将特征分量改为input_I、input_P、input_B、score_N,size=width*height,其中:
[0021]
[0022]
[0023]
[0024]
[0025] 作为优选,在步骤(23)中,假设迭代次数上限为CntMax,迭代步长为Step,步长下限为StepMin,误差下限值为ErrMin,迭代训练方法如下:
[0026] (231)初始化迭代次数和迭代步长;
[0027] (232)进行迭代训练,迭代次数加1,与迭代次数上限进行比较,如果大于迭代次数上限则结束迭代训练;否则进入到下一步;
[0028] (233)每100次迭代训练记录误差Err,与误差下限值进行比较,如果小于误差下限值则结束迭代训练;否则进入到下一步;
[0029] (234)计算前一次误差ErrPre与当前误差ErrCur的差值Res=ErrPre-ErrCur,与误差下限值进行比较,如果大于误差下限值则返回到步骤(232);否则进入到下一步;
[0030] (235)缩小迭代步长Step=0.8*Step,与步长下限进行比较,如果大于步长下限则返回到步骤(232);否则结束迭代训练。
[0031] 作为优选,在步骤(3)中,实际分析预测的具体操作方法如下:
[0032] (31)根据用户设定的分辨率和帧率输入图像序列
[0033] (32)将待编码图像序列在缓冲队列中填满NUM帧;
[0034] (33)检查上一次缓冲队列中是否发生场景切换,即noChange是否为1,如果noChange=0,表示上一次缓冲队列中已经发生场景切换,则执行步骤(36);如果noChange=1,表示上一次缓冲队列中没有发生场景切换;
[0035] (34)检测本次缓冲队列中是否发生场景切换,如果未发生,则UseId=NUM-1,noChange=1;如果发生场景切换,则记录场景切换点SceneId,UseId=SceneId-1,noChange=0;
[0036] (35)处理单元[0,UseId]使用上一次的编码参数,并执行步骤(38);
[0037] (36)noChange=0表明本次缓冲队列与上次没有联系,检测本次缓冲队列中是否发生场景切换;如果未发生场景切换,则UseId=NUM-1,noChange=1;如果发生场景切换,则记录场景切换点SceneId,UseId=SceneId-1,noChange=0;
[0038] (37)对处理单元[0,UseId]进行预测编码参数;
[0039] (38)对处理单元[0,UseId]进行实际编码,并保存此次的编码参数;
[0040] (39)由于已经编码了UseId帧,需要在缓冲队列中填满NUM帧。
[0041] 作为优选,在步骤(37)中,预测编码参数的具体操作方法如下:
[0042] (371)对处理单元[0,UseId]内的图像序列,按帧计算SATD值,并根据帧型I/P/B分别统计其平均值为satd_I、satd_P、satd_B;
[0043] (372)根据用户设定的分辨率、帧率、质量分数,计算得到input_I、input_P、input_B、score_N;
[0044] (373)将以上四个特征值作为输入,使用事先训练好的网络模型,预测得到CRF_predict;
[0045] (374)如果预测值CRF_predict不在预设范围[CRF_min,CRF_max]中;那么,如果CRF_predict>CRF_max,那么CRF_predict=CRF_max;如果CRF_predict
[0046] (375)预测得到的CRF_predict,加上用户设定的分辨率、帧率参数,其他参数使用预设固定参数模板,即为编码参数。
[0047] 本发明的有益效果是:可自适应决定编码参数,输出图像质量比较一致的视频流,具有较低计算复杂度,并能够方便地应用于现有的视频编码框架中。附图说明
[0048] 图1是本发明的方法框架图;
[0049] 图2是网络模型图;
[0050] 图3是迭代训练的方法流程图
[0051] 图4是实际分析预测的方法流程图。

具体实施方式

[0052] 下面结合附图和具体实施方式对本发明做进一步的描述。
[0053] 一种基于机器学习的内容自适应视频编码方法,具体包括如下步骤:
[0054] (1)构建数据集:选取不同素材的高质量视频,并以场景为单位,提取有效信息;构建数据集的具体操作方法如下:
[0055] (11)为使数据特性具有多样性,根据实际应用场景,筛选高质量的素材,涵盖体育、综艺、动漫、新闻、电影电视等内容,并将素材按场景划分为编码单元;
[0056] (12)按照固定编码参数模板(如HEVC的GOP/B帧/参考帧/CUsize/TUsize等),对每个场景按照三种分辨率(1920x1080,1280x720,720x480),每种分辨率按照CRF值从12到40,步长为1的设定进行编码,统计得到每种情况下的复杂度信息、质量分数、码率,并记录相应编码参数为分辨率、帧率、CRF值,其中:质量分数采用VMAF,复杂度信息是指I/P/B帧对应的SATD平均值;
[0057] (13)由于VMAF计算质量分数时对分辨率不敏感,例如在码率足够高时同一场景片段的1080p和720p的VMAF质量分数可能差不多,为使其不影响计算过程,需要对其进行修正。修正方法如下:对CRF值小于29的样点,计算质量分数时在CRF=29时的质量分数基础时进行缩小,即乘以一个0到1的系数α(本实施例中对1280x720分辨率时取α=0.6,对720x480时取α=0.4),VMAF质量分数为Score,修正后为Score’,修正公式为:
[0058] Score’=Score[CRF=29]+(Score-Score[CRF=29])*α;
[0059] 最终形成10000+个场景片段,每个片段包括3*29=87个样本点。
[0060] (2)训练模型:使用机器学习方法训练预测模型,采用多层全连接神经网络,根据用户设定参数生成网络模型;训练模型的具体操作方法如下:
[0061] (21)由构建数据集的信息可知,将特征分量分别标记为satd_I、satd_P、satd_B、size、fps、score,即分别表示为I帧SATD平均、P帧SATD平均值、B帧SATD平均值、分辨率、帧率、质量分数值;
[0062] 由于同一个片段具有相同的分辨率和帧率,考虑到将输入变量归一化,并简化计算量,将特征分量改为input_I、input_P、input_B、score_N,size=width*height,其中:
[0063]
[0064]
[0065]
[0066]
[0067] (22)如果某些场景中,随着CRF设定参数的不同,质量分数score变化很小,那么剔除掉这部分数据;视频序列中可能会出现纯色帧(如常见的场景切换时出现一段黑帧),这样的片段在参数设定不同时,输出也不会有明显变化。
[0068] (23)输出变量为CRF,选择网络模型,如图2所示,所以实施例中选择网络模型为(4,8,6,1),即:输入层有4个神经元,第一级隐藏层有8个神经元,第二级隐藏层有6个神经元,输出层有1个神经元;选择合适的迭代步长和次数,并根据迭代训练结果做适当调整,最终保存这个网络模型参数。假设迭代次数上限为CntMax,迭代步长为Step,迭代步长初始值为Step=0.1,步长下限为StepMin,误差下限值为ErrMin,实施例中参考数值CntMax=10000,StepMin=0.01,ErrMin=0.01,如图3所示,迭代训练方法如下:
[0069] (231)初始化迭代次数和迭代步长;
[0070] (232)进行迭代训练,迭代次数加1,与迭代次数上限进行比较,如果大于迭代次数上限则结束迭代训练;否则进入到下一步;
[0071] (233)每100次迭代训练记录误差Err,与误差下限值进行比较,如果小于误差下限值则结束迭代训练;否则进入到下一步;
[0072] (234)计算前一次误差ErrPre与当前误差ErrCur的差值Res=ErrPre-ErrCur,与误差下限值进行比较,如果大于误差下限值则返回到步骤(232);否则进入到下一步;
[0073] (235)缩小迭代步长Step=0.8*Step,与步长下限进行比较,如果大于步长下限则返回到步骤(232);否则结束迭代训练。
[0074] (3)实际分析预测:先将视频流缓冲一定帧数,并对缓冲视频帧提取复杂度信息,结合用户设定参数使用训练的网络模型,预测输出编码设定参数;实际分析预测的具体操作方法如下:
[0075] (31)根据用户设定的分辨率和帧率输入图像序列;输入图像序列是已经处理之后的图像序列,已经处理之后的图像序列是指将原始图像序列处理为编码器要求输出的分辨率和帧率。例如视频源为720P@50,用户设定为1080P@25,那么输入图像序列就是已经处理之后的1080P@25的图像序列。由于这里的分析是提取视频信息,不需要质量分数;在预测中需要质量分数。
[0076] (32)将待编码图像序列在缓冲队列中填满NUM帧(一般为2个GOP大小,本例中NUM=100);
[0077] (33)检查上一次缓冲队列中是否发生场景切换,即noChange是否为1,如果noChange=0,表示上一次缓冲队列中已经发生场景切换,则执行步骤(36);如果noChange=1,表示上一次缓冲队列中没有发生场景切换;
[0078] (34)检测本次缓冲队列中是否发生场景切换,如果未发生,则UseId=NUM-1,noChange=1;如果发生场景切换,则记录场景切换点SceneId,UseId=SceneId-1,noChange=0;
[0079] (35)处理单元[0,UseId]使用上一次的编码参数,并执行步骤(38);
[0080] (36)noChange=0表明本次缓冲队列与上次没有联系,检测本次缓冲队列中是否发生场景切换;如果未发生场景切换,则UseId=NUM-1,noChange=1;如果发生场景切换,则记录场景切换点SceneId,UseId=SceneId-1,noChange=0;
[0081] (37)对处理单元[0,UseId]进行预测编码参数;预测编码参数的具体操作方法如下:
[0082] (371)对处理单元[0,UseId]内的图像序列,按帧计算SATD值,并根据帧型I/P/B分别统计其平均值为satd_I、satd_P、satd_B;
[0083] (372)根据用户设定的分辨率、帧率、质量分数,计算得到input_I、input_P、input_B、score_N;
[0084] (373)将以上四个特征值作为输入,使用事先训练好的网络模型,预测得到CRF_predict;
[0085] (374)如果预测值CRF_predict不在预设范围[CRF_min,CRF_max]中;那么,如果CRF_predict>CRF_max,那么CRF_predict=CRF_max;如果CRF_predict
[0086] (375)预测得到的CRF_predict,加上用户设定的分辨率、帧率参数,其他参数使用预设固定参数模板,即为编码参数。
[0087] (38)对处理单元[0,UseId]进行实际编码,并保存此次的编码参数;
[0088] (39)由于已经编码了UseId帧,需要在缓冲队列中填满NUM帧。
[0089] 本方法由分析器和预测器两个核心组成,并应用于如图1所示的编码框架中,其中分析器用于决定编码帧型、统计每帧的图像信息(包括分辨率、I/P/B帧型、复杂度信息等);预测器根据场景信息和编码统计信息,结合用户设定参数,使用预先训练好的网络模型,进而输出实际编码参数,视频编码器是通用的H.264或H.265编码器,不属于本发明的范围。用户只需要设定所需的分辨率和所要求的图像质量级别,本方法即可自适应决定编码参数,输出图像质量比较一致的视频流。本方法采用恒定码率因子方法(CRF,Constant Rate Factor),并用户自定义参数,基于机器学习方法来决定编码参数,具有较低计算复杂度,并能够方便地应用于现有的视频编码框架中。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈