一种基于视频帧的深度学习自适应前向纠错传输方法
文献发布时间:2024-04-18 20:02:18
技术领域
本发明涉及计算机科学中的网络技术与安全领域,特别涉及一种基于视频帧的深度学习自适应前向纠错传输方法。
背景技术
视频泛指将一系列静态影像以电信号的方式加以捕捉、记录、处理、储存、传送与重现的各种技术。连续的图像变化每秒超过24帧画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这样连续的画面叫作视频。视频技术最早是为了电视系统而发展,但现已发展为各种不同的格式以利消费者将视频记录下来。
随着视频监控、视频会议、视频直播等视频应用的不断丰富发展,人们对实时视频流的需求越来越普遍,对视频数据传输提出了更高的要求。
在现有技术实现下,面对有丢包的信道时,往往通过重传的方法来恢复丢包内容,但此种等待超时重传的方法时延很大,在高延时的网络环境下更会大幅降低用户体验。
为此前人提出了自适应FEC前向纠错技术,通过发送冗余包,使得接收端可以不依赖于丢包重传,通过冗余信息来恢复丢失数据包中的内容,以实现低延时视频传输。但基于丢包反馈信号自适应优化调节冗余包数的方法,在面对多变的网络环境时有比较严重滞后性。无论是使用当前丢包率、或是使用一阶指数平滑算法、或是使用一段窗口期内的最大丢包率方法,都存在丢包好转时无法快速降低冗余度提高传输效率,或在丢包变差时又无法快速的增加冗余度避免重传。无法很好的兼顾实时性和减少网络流通包数量,为此我们提出一种基于视频帧的深度学习自适应前向纠错传输方法。
发明内容
本发明的目的在于提供一种基于视频帧的深度学习自适应前向纠错传输方法,基于深度神经网络学习预测丢包率,替代以往自适应前向纠错方法中直接使用历史丢包率作为反馈信号,可以快速有效的适应多变的网络环境,保证实时性的前提下提高传输效率。
为实现上述目的,本发明提供如下技术方案:一种基于视频帧的深度学习自适应前向纠错传输方法,包括如下具体操作方法:
S1、视频编码模块接收采集视频数据,通过压缩编码成视频压缩流,视频压缩流由视频帧组组成,视频帧组包含一个I帧与多个P帧,得到视频帧组数据后,由封包模块进行分包处理,而后把分包的数据发送给自适应FEC编码模块,此处理后封包有I帧、P帧、IP混合帧三个封包类型,封包模块传递给FEC编码模块时已按照封包序号传递包,用于区分冗余度设置;
S2、数据包FEC前向纠错编码模块,模块采用FEC编码方案,其中FEC冗余度结算公式为:
(n-k)/n
以GRU神经网络模块预测输出的预测丢包率为作为输入参数;
S3、发送端通过网络接口将源数据包和冗余数据包以用户数据协议发送到接收端;
S4、接收端从发送端接收到数据包序列,使用相应纠删码解码算法重构恢复原始数据包,接收端同时对当前网络状况进行反馈,将收到的每个数据包确认信息反馈给发送端;
S5、发送端FEC自适应模块,通过接收端反馈的丢包信息和RTT时延信息作为输入数据集,采用循环神经网络GRU,对序列数据中的动态变化进行建模,从而形成模型,以学习序列数据中的时延抖动与丢包率的潜在特征来预测未来一段时间的丢包率。
优选的,所述I帧为关键帧进行独立解码,P帧为前向预测帧依赖上一帧解码。
优选的,所述视频帧组数据由封包模块按照1400字节分包处理。
优选的,所述封包序号传递包含有封包类型TAG序列数组。
优选的,所述冗余度为自适应参数。
优选的,所述用户数据协议具体为UDP协议。
优选的,所述GRU神经网络模块预测输出的预测丢包率作为输入参数时,I帧和P帧区分设置。
优选的,所述FEC编码方案具体为(n,k)FEC编码方案,即将k个源数据包编码为n(n>k)个数据包。
优选的,所述模型建立后,采用此两个维度信息作为模型预测输入。
优选的,所述模型建立后,在接收端反馈信息不足的早期建立连接传输阶段,模型无法给出合理的预测值,预测模块采用20%冗余度的默认值作为输出。
本发明的技术效果和优点:
(1)通过基于深度神经网络学习预测丢包率,替代以往自适应前向纠错方法中直接使用历史丢包率作为反馈信号,可以快速有效的适应多变的网络环境,保证实时性的前提下提高传输效率,同时,本发明对视频流数据封包后进行分级冗余。将封包按I帧、P帧、混合IP帧划分设置冗余度,可以最大限度的提高网络传输的经济性;
(2)通过基于深度神经网络学习预测丢包率可以更快速的收敛到信道真实丢包,对比简单的使用历史丢包率有更好的效果;
(3)对视频数据包进行分级区分,设置分级1.3倍、2倍预测丢包率冗余度,由于预测丢包率模型较为有效,可以比所有数据包采用统一2倍丢包冗余度方法在保证整体传输可靠性基础上减少发包量;
(4)在多种实验和复杂场景测试中,对比采用UlpFEC实现的WebRTC协议,可以降低5%~10%的平均帧延迟,减少10%~15%的发包量。对比通用双边加速开源应用KCPTUN,可以起到更好的降低延迟和发包量效果。
附图说明
图1为本发明流程说明图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了如图1所示的一种基于视频帧的深度学习自适应前向纠错传输方法,包括如下具体操作方法;
S1、视频编码模块接收采集视频数据,通过压缩编码成视频压缩流,视频压缩流由视频帧组组成,视频帧组包含一个I帧与多个P帧,得到视频帧组数据后,由封包模块进行分包处理,而后把分包的数据发送给自适应FEC编码模块,此处理后封包有I帧、P帧、IP混合帧三个封包类型,封包模块传递给FEC编码模块时已按照封包序号传递包,用于区分冗余度设置;
S2、数据包FEC前向纠错编码模块,模块采用FEC编码方案,其中FEC冗余度结算公式为:
(n-k)/n
以GRU神经网络模块预测输出的预测丢包率为作为输入参数;
S3、发送端通过网络接口将源数据包和冗余数据包以用户数据协议发送到接收端;
S4、接收端从发送端接收到数据包序列,使用相应纠删码解码算法重构恢复原始数据包,接收端同时对当前网络状况进行反馈,将收到的每个数据包确认信息反馈给发送端;
S5、发送端FEC自适应模块,通过接收端反馈的丢包信息和RTT时延信息作为输入数据集,采用循环神经网络GRU,对序列数据中的动态变化进行建模,从而形成模型,以学习序列数据中的时延抖动与丢包率的潜在特征来预测未来一段时间的丢包率。
具体步骤如下:
步骤101:视频编码模块接收采集视频数据,通过压缩编码成视频压缩流,视频压缩流由视频帧组组成,视频帧组包含一个I帧与多个P帧,I帧为关键帧可以独立解码,P帧为前向预测帧依赖上一帧解码;
得到视频帧组数据后,由封包模块按照1400字节分包处理,而后把分包的数据发送给自适应FEC编码模块。此处理后封包有I帧、P帧、IP混合帧三个封包类型。封包模块传递给FEC编码模块时已按照封包序号传递包含封包类型TAG序列数组,用于区分冗余度设置。
步骤102:数据包FEC前向纠错编码模块,模块采用(n,k)FEC编码方案,即将k个源数据包编码为n(n>k)个数据包,此时的编码可以容忍n个数据包中最大n-k个包丢失,即有丢包发生时接收端仍然可以从接收到所属n个包组中任意k个数据包恢复重构源数据包;
此时,FEC冗余度结算公式为:(n-k)/n;
此冗余度为自适应参数,以GRU神经网络模块预测输出的预测丢包率为作为输入参数,假定预测丢包为Lo,本方法将I帧、IP混合帧封包冗余度设置为:MIN(2*Lo,0.5),P帧冗余度设置为:MIN(1.3*Lo,0.5),此处设置0.5冗余度上限的原因是,当预测丢包率达到此临界值时,FEC已无济于事,再尝试通过增加冗余包来试图发送更多数据反而会造成实际上接收端接收数据信息更少;
在此处区分设置是因为视频流I帧通常比较大(一般是10倍到100倍P帧),对传输错误的容忍度较低,设置2倍预测丢包冗余度对保证低延时避免重传有比较可观的提升效果,同时对P帧降低冗余度可以合理减少发包总量。
步骤103:发送端通过网络接口将源数据包和冗余数据包以UDP协议发送到接收端。
步骤104:接收端从发送端接收到数据包序列,使用相应纠删码解码算法重构恢复原始数据包。接收端同时对当前网络状况进行反馈,将收到的每个数据包确认信息反馈给发送端。
步骤105:发送端FEC自适应模块,通过接收端反馈的丢包信息和RTT时延信息作为输入数据集,采用循环神经网络GRU,对序列数据中的动态变化进行建模,以学习序列数据中的时延抖动与丢包率的潜在特征来预测未来一段时间的丢包率。由于丢包信息与RTT时延抖动相比有滞后性,所以本方法同时采用此两个维度信息作为模型预测输入,比传统单纯采用一阶指数平滑算法等统计预测丢包率有更高的准确率。特别的,在接收端反馈信息不足的早期建立连接传输阶段,模型无法给出合理的预测值,预测模块采用20%冗余度的默认值作为输出。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种基于深度学习的实时视频传输自适应前向纠错方法和系统
- 一种适用于无线视频传输的自适应跨层前向纠错方法