首页 / 专利库 / 人工智能 / 机器学习 / 强化学习 / 一种监控视频发送端视频编码流速控制的方法

一种监控视频发送端视频编码流速控制的方法

阅读:915发布:2020-05-12

专利汇可以提供一种监控视频发送端视频编码流速控制的方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种监控视频发送端 视频编码 流速控制的方法,主要步骤包括:(1)收集视频发送场景网络实时可用带宽数据集;(2)利用真实带宽数据构建监控视频发送端的仿真训练环境,训练环境根据真实带宽数据实时决定监控视频发送的最高可用带宽,作为视频的发送速率,并接收深度 强化学习 模型选择的码率调整 编码器 的编码码率;(3)构建基于信赖域的连续动作输出深度强化学习模型,并利用仿真环境训练该模型;(4)将训练好的模型放进监控视频集成到真实环境中交互,进行线上训练优化;(5)将优化好的 深度学习 模型集成到监控视频发送端,进行发送端编码器的编码码率决策。本发明利用深度强化学习解决了监控视频发送端的编码流速控制问题。,下面是一种监控视频发送端视频编码流速控制的方法专利的具体信息内容。

1.一种监控视频发送端视频编码流速控制的方法,其特征在于,包括如下步骤:
步骤1,利用等间隔采样的方式收集实际传输环境的真实带宽变化数据,制作用于训练的视频发送场景网络实时可用带宽数据集;
步骤2,利用步骤1中收集到的真实带宽数据构建监控视频发送端的仿真训练环境,训练环境根据真实带宽数据实时决定监控视频发送的最高可用带宽作为视频发送速率,并接收深度强化学习模型选择的码率设定为编码器下个时间段的编码码率;
步骤3,构建基于信赖域的连续动作输出深度强化学习模型,设计模型训练需要的目标奖励函数,利用步骤2中的仿真训练环境训练该模型;模型以步骤2中的仿真训练环境输出的各项数据作为输入,选择下一时刻监控视频发送端的编码码率,训练模型的目标是最大化设定的目标奖励函数;
步骤4,将步骤3中训练好的模型集成到真实环境中进行交互,进行线上训练优化;
步骤5,将优化好的深度强化学习模型集成到监控视频发送端,进行发送码率的选择。
2.根据权利要求1所述的一种监控视频发送端视频编码流速控制的方法,其特征在于,所述步骤1中,真实带宽变化数据包括监控视频发送时的实时可用带宽变化数据以及现有公开的带宽变化数据集。
3.根据权利要求2所述的一种监控视频发送端视频编码流速控制的方法,其特征在于,所述步骤1中,监控视频发送时的实时可用带宽数据为:设定不同的时间间隔采样收集的视频发送的网络可用带宽。
4.根据权利要求1所述的一种监控视频发送端视频编码流速控制的方法,其特征在于,所述步骤2中,构建监控视频发送端的仿真训练环境,具体过程为:
步骤21,构建视频编码器仿真模,视频编码器仿真模块的输入为监控视频的一些固定编码参数,包括视频的率、视频图像组的大小、以及选择的视频编码码率;视频编码器仿真模块的输出为一个视频帧的数据量大小;根据输入的固定编码参数,一个视频帧的数据量大小是利用均匀分布来决定:
其中,sample()操作表示从一个概率分布中采样,U(a,b)表示在区间[a,b]上的均匀分布;视频编码器仿真模块将按照视频的帧率决定的帧间隔定时向视频发送缓冲区仿真模块中的缓冲区中加入大小为FS的视频帧;
步骤22,构建视频发送缓冲区仿真模块,该模块的主体为一个仿真的视频发送缓冲区,需要指定该缓冲区所能容纳的最大帧数,当缓冲区满时如果从编码器仿真模块有新到来的视频帧,则需要清除此缓冲区中现存的最早进入的视频帧,将新到来的视频帧加入到缓冲区中;
步骤23,构建视频网络传输仿真模块,视频网络传输仿真模块的输入为步骤1中所获得的实际传输环境的真实带宽变化数据,并将可用带宽作为视频发送的速率从视频发送缓冲区仿真模块中的视频发送缓冲区消耗视频帧;如果在Δt时间间隔里可用带宽维持在BW,则在Δt的时间间隔里经过网络传输出去的总数据量D为:
D=Δt*BW
则缓冲区中应当被清除出区的帧的总数数据量大小为D。
5.根据权利要求1所述的一种监控视频发送端视频编码流速控制的方法,其特征在于,所述步骤3中,构建基于信赖域的连续动作输出深度强化学习模型,具体实现过程为:
步骤31,将步骤2中仿真训练环境的输出处理为深度强化学习模型的输入,处理的主要过程为:首先分别将历史k个时间节点的各个参数进行归一化,包括编码器的编码码率、视频发送缓冲区的长度,视频发送缓冲区的变化值,视频历史发送平均速率;然后将上述参数归一化的值存放在一个输入矩阵state矩阵中;
步骤32,搭建基于信赖域的连续动作输出深度强化学习模型的神经网络部分,包括深度神经网络actor和深度神经网络critic,分别搭建并构建两个深度神经网络的训练优化目标,即各自的loss函数;
步骤33,设计训练基于信赖域的连续动作输出深度强化学习模型的奖励函数,奖励函数对于使视频发送缓冲区维持在正常平的编码器码率选择动作,以及使编码器码率保持稳定的选择动作,给予较高奖励值,对造成视频发送缓冲区长度脱离正常水平的动作给予低的奖励值;
步骤34,将步骤31的矩阵state矩阵输入到步骤32的网络actor和网络critic中,进行神经网络的前向计算,得到网络actor和网络critic的输出,然后根据神经网络的输出得到下一个时刻的视频编码器编码码率,并计算步骤33中构建的奖励函数,最后根据奖励函数的值和两个神经网络的输出计算其对应的训练优化目标,进行神经网络的反向传播更新神经网络参数,并设定神经网络输出得到的编码器编码码率为新的编码器编码码率,编码码率将会影响下一个时刻的矩阵state;
步骤35,重复步骤34,直到所得到的奖励函数不再上升。
6.根据权利要求5所述的一种监控视频发送端视频编码流速控制的方法,其特征在于,所述步骤5中将步骤4优化好的深度强化学习模型集成到监控视频发送端,只需要将模型中的网络actor部署到发送端即可,其具体过程为:
步骤51,在监控视频发送端部署所选深度学习框架的轻量级运行环境;
步骤52,将步骤4优化好的深度强化学习模型中的网络actor转换成移动轻量级的模型;
步骤53,利用步骤51中配置好的运行环境调用步骤52中生成的移动轻量级模型进行前向计算,得到应当选择的码率,设定编码器的编码码率,并依据步骤4的方式直接从系统中收集特征参数并计算矩阵satte,将新的矩阵state作为轻量级模型的输入继续计算下一个时刻的编码器码率,重复此交互过程。

说明书全文

一种监控视频发送端视频编码流速控制的方法

技术领域

[0001] 本发明涉及实时视频传输领域,尤其涉及监控视频监控端的视频编码流速控制的方法。

背景技术

[0002] 监控视频通常在实时性、流畅度以及视频画面质量等方面都具有较高的要求。然而在实际的监控环境中,从监控视频的采集端到以监控室为例的接收端,视频的传输往往会经过较为复杂的网络环境,复杂的网络环境会导致带宽受限和时延波动的情况发生,从而影响监控视频播放端(接收端)的实时性、流畅度和清晰度。为了保证监控视频的传输效果和提升监控视频的观看体验,需要对监控视频传输过程中所有环节都进行有针对性的优化,特别是视频发送端的编码流速控制部分。
[0003] 监控视频发送端需要精确的编码流速控制,其主要的原因在于:一方面,监控视频的发送速率是由复杂的网络环境所决定的,具有变化迅速和难以预测等特征;另一方面,监控视频发送端视频采集后的编码阶段的速率是可以通过人为调整编码器编码参数进行控制的,视频的发送过程中,从视频编码器编码到码流通过网络发送的过程中间往往会经过一个视频发送缓冲区来保证视频发送的流畅度,视频发送缓冲区的消耗速度是由网络实时可用带宽也就是实际的发送速率决定的,视频发送缓冲区的增加速度是由编码器的编码码率所决定的,因此会出现视频编码码率和视频发送速率出现不匹配的问题。
[0004] 如果监控视频发送端的编码速率和视频的发送速率不匹配,就可能导致视频发送端的视频发送缓冲区溢出或者“饥饿”的现象。视频发送缓冲区溢出即为视频缓冲区里的视频数已经达到了该缓冲区的容量上限,如果想再存储编码器编码后的视频帧,则需要将最早进入该缓冲区的视频帧清除出去,导致视频传输过程中的“丢帧现象”。另一方面,视频发送缓冲区的饥饿现象主要是视频发送缓冲区变空,往往是由视频编码的码率长期低于视频发送的实时可用带宽造成的,这说明了视频发送的过程中带宽的利用率过低,浪费了大量的可用带宽资源,同时监控视频接收端的视频清晰度也还有进一步提升的空间。
[0005] 因此,监控视频发送端的视频编码流速控制主要想达到的目的就是使得监控视频编码器的编码速率和视频发送速率相匹配,当实时可用带宽较大的时候,说明视频发送的速率较大,可以适当地提升视频编码器的编码速率;当实时可用带宽下降时,则视频发送速率降低,应当及时降低编码器的编码速率,避免视频发送缓冲区出现溢出而导致视频丢帧现象发生。
[0006] 要实现上述的速率匹配最直观的方式是需要提前预知下一个时刻视频发送的实时可用带宽,然后根据预测的实时可用带宽的平调整下个时刻编码器的编码速率。然而在实际的环境中,由于实际可用带宽的变化通常没有规律可言,对下一个时刻的实际可用带宽的估计是相当困难的,因此只能通过观察视频发送过程中的一些能够测量到的特征参数来对当前传输环境进行粗略估计,根据观测到的特征参数来选择下一个时刻的编码器编码码率。通过能够测量到的特征参数来进行速率匹配的难点在于如何根据测量到的参数准确判断当前的视频发送环境的特征,特别是当前网络的实时可用带宽。

发明内容

[0007] 针对上述监控视频发送时的码率控制问题,本发明提出了一种基于深度强化学习的监控视频发送端视频编码流速控制方法。
[0008] 本发明采用的技术方案如下:
[0009] 一种监控视频发送端视频编码流速控制的方法,包括如下步骤:
[0010] 步骤1,利用等间隔采样的方式收集实际传输环境的真实带宽变化数据,制作用于训练的视频发送场景网络实时可用带宽数据集;
[0011] 步骤2,利用步骤1中收集到的真实带宽数据构建监控视频发送端的仿真训练环境,训练环境根据真实带宽数据实时决定监控视频发送的最高可用带宽作为视频发送速率,并接收深度强化学习模型选择的码率设定为编码器下个时间段的编码码率;
[0012] 步骤3,构建基于信赖域的连续动作输出深度强化学习模型,设计模型训练需要的目标奖励函数,利用步骤2中的仿真训练环境训练该模型;模型以步骤2中的仿真训练环境输出的各项数据作为输入,选择下一时刻监控视频发送端的编码码率,训练模型的目标是最大化设定的目标奖励函数;
[0013] 步骤4,将步骤3中训练好的模型集成到真实环境中进行交互,进行线上训练优化;
[0014] 步骤5,将优化好的深度强化学习模型集成到监控视频发送端,进行发送码率的选择。
[0015] 进一步地,所述步骤1中,真实带宽变化数据包括监控视频发送时的实时可用带宽变化数据以及现有公开的带宽变化数据集。其中,监控视频发送时的实时可用带宽数据为:设定不同的时间间隔采样收集的视频发送的网络可用带宽。
[0016] 进一步地,所述步骤2中,构建监控视频发送端的仿真训练环境,具体过程为:
[0017] 步骤21,构建视频编码器仿真模,视频编码器仿真模块的输入为监控视频的一些固定编码参数,包括视频的帧率、视频图像组的大小、以及选择的视频编码码率;视频编码器仿真模块的输出为一个视频帧的数据量大小;根据输入的固定编码参数,一个视频帧的数据量大小是利用均匀分布来决定:
[0018]
[0019] 其中,sample()操作表示从一个概率分布中采样,U(a,b)表示在区间[a,b]上的均匀分布;视频编码器仿真模块将按照视频的帧率决定的帧间隔定时向视频发送缓冲区仿真模块中的缓冲区中加入大小为FS的视频帧;
[0020] 步骤22,构建视频发送缓冲区仿真模块,该模块的主体为一个仿真的视频发送缓冲区,需要指定该缓冲区所能容纳的最大帧数,当缓冲区满时如果从编码器仿真模块有新到来的视频帧,则需要清除此缓冲区中现存的最早进入的视频帧,将新到来的视频帧加入到缓冲区中;
[0021] 步骤23,构建视频网络传输仿真模块,视频网络传输仿真模块的输入为步骤1中所获得的实际传输环境的真实带宽变化数据,并将可用带宽作为视频发送的速率从视频发送缓冲区仿真模块中的视频发送缓冲区消耗视频帧;如果在Δt时间间隔里可用带宽维持在BW,则在Δt的时间间隔里经过网络传输出去的总数据量D为:
[0022] D=Δt*BW
[0023] 则缓冲区中应当被清除出区的帧的总数数据量大小为D。
[0024] 进一步地,所述步骤3中,构建基于信赖域的连续动作输出深度强化学习模型,具体实现过程为:步骤31,将步骤2中仿真训练环境的输出处理为深度强化学习模型的输入,处理的主要过程为:首先分别将历史k个时间节点的各个参数进行归一化,包括编码器的编码码率、视频发送缓冲区的长度,视频发送缓冲区的变化值,视频历史发送平均速率;然后将上述参数归一化的值存放在一个输入矩阵state矩阵中;
[0025] 步骤32,搭建基于信赖域的连续动作输出深度强化学习模型的神经网络部分,包括深度神经网络actor和深度神经网络critic,分别搭建并构建两个深度神经网络的训练优化目标,即各自的loss函数;
[0026] 步骤33,设计训练基于信赖域的连续动作输出深度强化学习模型的奖励函数,奖励函数对于使视频发送缓冲区维持在正常水平的编码器码率选择动作,以及使编码器码率保持稳定的选择动作,给予较高奖励值,对造成视频发送缓冲区长度脱离正常水平的动作给予低的奖励值;
[0027] 步骤34,将步骤31的矩阵state矩阵输入到步骤32的网络actor和网络critic中,进行神经网络的前向计算,得到网络actor和网络critic的输出,然后根据神经网络的输出得到下一个时刻的视频编码器编码码率,并计算步骤33中构建的奖励函数,最后根据奖励函数的值和两个神经网络的输出计算其对应的训练优化目标,进行神经网络的反向传播更新神经网络参数,并设定神经网络输出得到的编码器编码码率为新的编码器编码码率,编码码率将会影响下一个时刻的矩阵state;
[0028] 步骤35,重复步骤34,直到所得到的奖励函数不再上升。
[0029] 进一步地,所述步骤5中将步骤4优化好的深度强化学习模型集成到监控视频发送端,只需要将模型中的网络actor部署到发送端即可,其具体过程为:
[0030] 步骤51,在监控视频发送端部署所选深度学习框架的轻量级运行环境;
[0031] 步骤52,将步骤4优化好的深度强化学习模型中的网络actor转换成移动轻量级的模型;
[0032] 步骤53,利用步骤51中配置好的运行环境调用步骤52中生成的移动轻量级模型进行前向计算,得到应当选择的码率,设定编码器的编码码率,并依据步骤4的方式直接从系统中收集特征参数并计算矩阵satte,将新的矩阵state作为轻量级模型的输入继续计算下一个时刻的编码器码率,重复此交互过程。
[0033] 本发明在大量实际传输环境的带宽变化数据基础上,利用深度强化学习来解决监控视频发送端的编码流速控制问题。为了达到最佳的控制效果,一方面,本发明选用了目前比较前沿的基于信赖域的强化学习方法;另一方面,为了保证编码流速控制的反应速度和流速控制的连续变化范围,本发明选取了连续动作输出的强化学习模型,连续动作输出的模型可以直接输出选择的码率值而非事先设定的码率档次。其次,本发明在大量的数据支持下在仿真环境中训练好深度强化模型之后,进一步将模型部署到实际系统进行模型的线上优化训练,在保证模型的泛化能的前提下又提升了模型在特定实际场景中的表现。附图说明
[0034] 图1为本发明方法的流程图
[0035] 图2为视频发送端仿真环境的示意图;
[0036] 图3为基于信赖域的连续动作输出深度强化学习模型。

具体实施方式

[0037] 下面将结合附图及具体实施例对本发明进行详细描述。
[0038] 本实施例的一种监控视频发送端视频编码流速控制方法如图1所示,具体包括如下步骤:
[0039] 步骤1,利用等间隔采样的方式收集监控视频发送时的实时可用带宽变化数据以及收集现有公开的带宽变化数据集,制作用于训练的视频发送场景网络实时可用带宽数据集.
[0040] 设定采样的时间tsample为150ms,若公开的数据集中采样时间不是150ms,可以统一修改成150ms,网络带宽数据的被存储在若干文本文件当中,文本文件的每一行有两个数值,其中第1个数值表示当前的时间戳,时间戳从0开始,以tsample为间隔递增,第2个数值表示当前时间的可用带宽数值,两个数值之间以制表符分隔。设定不同的时间间隔采样收集视频发送的网络可用带宽,其目的是模拟各个变化速度的网络带宽,增加数据多样性。
[0041] 步骤2,利用步骤1中收集到的真实带宽数据构建监控视频发送端的仿真训练环境:
[0042] 步骤21,构建视频编码器仿真模块。视频编码器的仿真模块输入为监控视频的一些固定编码参数,视频的帧率(FR)为25FPS、视频图像组的大小(GOP)为3s对应为75帧、以及选择的视频编码码率(BR),视频编码码率参数由步骤32中构建的actor网络输出计算得到,为视频编码流速控制的直接控制量。视频编码器仿真模块的输出主要为一个视频帧的数据量大小(FS)。利用均匀分布来决定,在本实施例中为:
[0043]
[0044] 其中,sample()操作表示从一个概率分布中采样,U(a,b)表示在区间[a,b]上的均匀分布,当选择的视频编码码率的单位为Mbps时,FS的单位为MB。
[0045] 步骤22,构建视频发送缓冲区仿真模块。视频发送缓冲区主要的功能是维护一个先进先出的视频帧队列,该队列中的每个视频帧将会有对应的帧数据量大小信息(FS),指定缓冲区所能容纳的最大帧数为125帧,对应的视频时长为5s,当队列满时如果从编码器仿真模块有新到来的视频帧,则需要清除此队列中现存的最早进入的视频帧,将新到来的视频帧加入到队列中。
[0046] 步骤23,构建视频网络传输仿真模块。视频网络传输仿真模块的输入的为步骤1中所获得的存储网络实时可用带宽数据的文本文件中读取的时间戳和带宽值的数据,将当前带宽值作为从当前时间戳到下一个时间戳之间的发送速率从视频发送缓冲区仿真模块中的视频发送缓冲区消耗视频帧;如果在Δt时间间隔里可用带宽维持在BW,本实施例中Δt为150ms,在此间隔里经过网络传输出去的总数据量D为:
[0047] D=0.15*BW
[0048] 则应当从视频发送缓冲区尾依次消耗视频帧直到被消耗的视频帧的数据量之和达到D。
[0049] 步骤3构建基于信赖域的连续动作输出深度强化学习模型,并利用仿真训练环境训练该模型:
[0050] 步骤31,将步骤2中仿真训练环境的输出处理为深度强化学习模型的输入,处理的主要过程为:首先分别将历史2个时间节点的各个参数进行归一化,包括编码器的编码码率BR(单位:Mbps)、视频发送缓冲区的长度BL(单位:帧数),视频发送缓冲区的变化值ΔB(单位:帧数),视频历史发送平均速率TH(单位:Mbps);一共4个特征参数则会有8个数值。然后将上述归一化的值存放在一个输入state矩阵中,state矩阵的每一列为一个长度为2的向量,一共有4列代表了上述的四个特征参数,所以state矩阵维度为2×4。
[0051] 步骤32,使用现有流行的深度学习框架tensorflow搭建基于信赖域的连续动作输出深度强化学习模型的神经网络部分,actor网络和critic网络分别搭建,并构建自己的训练优化目标,即各自的loss函数,本实施例中采用了当前比较流行的基于信赖域的深度强化学习模型PPO(Proximal Policy Optimization Algorithms),actor网络和critic网络具体的loss函数均参考了PPO方法,actor网络和critic网络均为隐藏层包含了256个神经元的单层全连接网络,actor网络的输出用了tanh激活函数和softplus激活函数,critic网络的输出使用了线性激活函数。
[0052] 步骤33,设计训练基于信赖域的连续动作输出深度强化学习模型的奖励函数,奖励函数的目的主要是考虑了模型的选择是否能维持视频发送缓冲区合适范围以及是否尽量保持了和上次选择一致,奖励函数的具体形式为:
[0053]
[0054] 其中,BR,lastBR分别是本次决策所选择的码率和上次决策所选择的码率,BL是本次决策后,下次决策时观测到的视频发送缓冲区长度,单位已经从视频帧数换算成对应的时间长度。
[0055] 步骤34,将步骤31的state矩阵输入到步骤32的actor网络和critic网络中,进行神经网络的前向计算,得到actor网络和critic网络的输出,然后从由actor网络输出的均值和方差构建的正态分布中采样得到下一个时刻的视频编码器编码码率,并计算步骤33中构建的奖励函数,最后根据奖励函数的值和两个神经网络的输出计算其对应的训练优化目标,进行神经网络的反向传播更新神经网络参数,并将神经网络输出得到的编码器编码码率作为为新的编码器编码码率,编码码率将会影响下一个时刻的state矩阵。
[0056] 步骤35,重复步骤34,每次决策的时间间隔为1s,直到所得到的奖励函数不再上升。
[0057] 步骤4,将步骤3中训练好的模型集成到真实系统中进行交互,整体流程和步骤3保持一致,区别是步骤32和33的构建部分不再需要,直接沿用步骤3中的深度强化学习模型和奖励函数,其他不同的是,每隔1s直接从真实系统中采集步骤31所述的四个特征参数,组成state矩阵作为神经网络的训练输入,得到新选择的编码码率后,直接将其设为系统编码器的编码码率。
[0058] 步骤5,将优化好的深度强化学习模型集成到监控视频发送端,进行发送码率的选择:
[0059] 步骤51,在监控视频发送端部署所选深度学习框架的轻量级运行环境,本实施例选择了tensorflow作为深度学习框架,则需要编译tensorflow-lite移动端部署的静态库,编译好后部署在监控视频发送端可直接调用。
[0060] 步骤52,将步骤4优化好的深度强化学习模型中的actor网络转换成tensorflow-lite模型。
[0061] 步骤53,利用步骤51中配置好的tensorflow-lite静态库调用步骤52中生成的tensorflow-lite模型进行前向计算,得到应当选择的码率,设定编码器的编码码率,并依据步骤4的方式直接从系统中收集特征参数计算state矩阵,每隔1s计算新的state矩阵作为轻量级模型的输入计算下一个时刻的编码器码率,重复此交互过程。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈