掌桥专利:专业的专利平台
掌桥专利
首页

视频解码方法、装置、设备及存储介质

文献发布时间:2023-06-19 09:26:02


视频解码方法、装置、设备及存储介质

技术领域

本申请实施例涉及人工智能领域,特别涉及一种视频解码方法、装置、设备及存储介质。

背景技术

在人工智能(Artificial Intelligence,AI)领域,视频模型是一种用于对视频进行信息提取的神经网络模型,常被用于执行视频分类、视频标签设置以及视频语义分割等任务。

由于视频模型的模型输入为图像,而视频文件中仅包含对原始图像进行编码后得到的帧数据,因此在模型训练前,首先需要对视频文件中的视频帧进行视频解码,得到每一帧帧数据对应的视频图像并进行存储,然后将大量视频图像作为样本输入对模型进行训练。

然而,由于训练视频模型需要使用大量视频文件,若对每个视频文件进行逐帧解码存储,需要耗费大量时间并占用大量存储空间,影响视频模型的训练效率。

发明内容

本申请实施例提供了一种视频解码方法、装置、设备及存储介质,可以提高视频模型训练前的视频解码速度,从而提高视频模型的训练效率。所述技术方案如下:

一方面,本申请实施例提供了一种视频解码方法,所述方法包括:

确定视频文件中的采样视频帧;

从所述视频文件中获取所述采样视频帧的采样帧数据,以及所述采样视频帧对应的关联视频帧的关联帧数据,所述关联视频帧是所述采样视频帧解码时所依赖的视频帧;

对所述采样帧数据以及所述关联帧数据进行解码,得到所述采样视频帧对应的采样图像;

将所述采样图像作为训练样本输入视频模型,并根据所述视频模型的模型输出结果训练所述视频模型

另一方面,本申请实施例提供了一种视频解码装置,所述装置包括:

采样帧确定模块,用于确定视频文件中的采样视频帧;

帧数据获取模块,用于从所述视频文件中获取所述采样视频帧的采样帧数据,以及所述采样视频帧对应的关联视频帧的关联帧数据,所述关联视频帧是所述采样视频帧解码时所依赖的视频帧;

解码模块,用于对所述采样帧数据以及所述关联帧数据进行解码,得到所述采样视频帧对应的采样图像;

训练模块,用于将所述采样图像作为训练样本输入视频模型,并根据所述视频模型的模型输出结果训练所述视频模型

另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述方面所述的视频解码方法。

另一方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述方面所述的视频解码方法。

另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面提供的视频解码方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

不同于相关技术中对视频文件进行逐帧解码,并利用解码得到的所有视频图像进行视频模型训练,本申请实施例中引入视频帧采样机制,确定出用于视频模型训练的采样图像(与采样视频帧对应),并在视频文件解码过程中,对采样视频帧以及采样视频帧解码时依赖的关联视频帧进行解码,得到采样图像,从而利用采样图像进行视频模型训练;由于仅需要对部分视频帧进行解码,因此解码耗费时间得以缩短且解码得到视频图像所占用的存储空间减小,进而提高视频模型的训练效率;此外,在训练样本生成阶段(即解码阶段)实现帧采样,在保证模型训练质量的同时,减少模型训练的数据量,进一步提高了视频模型的训练效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本申请示例性实施例提供的视频解码方法的原理示意图;

图2示出了本申请一个示例性实施例提供的实施环境的示意图;

图3示出了本申请一个示例性实施例提供的视频解码方法的流程图;

图4示出了本申请另一个示例性实施例提供的视频解码方法的流程图;

图5是本申请一个示例性实施例示出的按序解码过程的实施示意图;

图6是本申请一个示例性实施例示出的按序解码过程的流程图;

图7示出了本申请另一个示例性实施例提供的视频解码方法的流程图;

图8是本申请一个示例性实施例示出的视频解码过程的实施示意图;

图9是本申请一个示例性实施例提供的视频解码装置的结构框图;

图10示出了本申请一个示例性实施例提供的计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

计算机视觉技术(Computer Vision,CV)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、光学字符识别(Optical Character Recognition,OCR)、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。

本申请实施例提供的视频解码方法,即在视频语义理解、视频内容/行为识别方面的应用,用于在视频模型训练前期,从视频文件中解码得到视频图像,从而利用解码得到的视频图像训练视频模型。图1示出了本申请示例性实施例提供的视频解码方法的原理示意图。

如图1所示,计算机设备首先获取用于模型训练的多个视频文件11(未经过解码的视频数据),并基于帧采样规则12,确定各个视频文件11中最终用于模型训练的采样视频帧(帧采样过程),进而基于采样视频帧,利用计算机设备的硬件13对视频文件11进行按需解码,得到各个采样视频帧对应的采样图像14。进一步的,计算机设备以采样图像14为训练样本,利用硬件13进行视频模型训练,最终训练得到视频模型15(图1中的视频模型15用于对视频进行标签分类)。

由于对视频文件进行解码前进行了帧采样,因此在进行视频解码过程中,无需对视频文件进行逐帧解码,而是基于采样视频帧进行按需解码,一方面,相较于逐帧解码,按需解码时解码的视频帧数量较少,解码耗时较短,另一方面,通过帧采样机制能够避免利用冗余视频图像(视频文件中相似度极高的连续视频图像)进行模型训练造成的处理资源浪费,进一步提高了模型训练效率。

在一种可能的应用场景下,本申请实施例提供的视频解码方法可以应用于人工智能云服务。人工智能云服务也被称作(AI as a Service,AIaaS),是目前主流的一种人工智能平台的服务方式,具体来说AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个AI主题商城:所有的开发者都可以通过API接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的AI框架和AI基础设施来部署和运维自已专属的云人工智能服务。

将本申请实施例提供的视频解码方法应用于人工智能云服务时,开发者可以选择或上传用于训练视频模型的视频文件、设置视频模型的模型架构,并制定帧采样规则,由人工智能平台基于帧采样规则确定视频文件中的采样视频帧,并基于采样视频帧进行按需解码,得到用于模型训练的采样图像,从而利用采样图像对视频模型进行模型训练,即开发者只需要指定模型架构以及用于模型训练的视频文件,人工智能平台即可自动完成模型训练。完成视频模型训练后,开发者还可以进一步在人工智能平台上针对视频模型部署云人工智能服务,比如针对视频网站开发者,可以基于视频模型在人工智能平台部署视频审核及分类服务,从而借助人工智能平台对用户上传的视频内容进行审核,并对审核通过的视频内容进行分类。

图2示出了本申请一个示例性实施例提供的实施环境的示意图。该实施环境中包括终端210和服务器220。其中,终端210与服务器220之间通过通信网络进行数据通信,可选地,通信网络可以是有线网络也可以是无线网络,且该通信网络可以是局域网、城域网以及广域网中的至少一种。

终端210是具有视频模型训练需求的电子设备。该电子设备可以是个人工作站、个人计算机、膝上便携式笔记本电脑等,本申请实施例对此不做限定。

可选的,终端210为人工智能云服务接入方所使用的电子设备,该人工智能云服务接入方可以是提供视频服务的厂商,比如视频应用厂商、短视频应用厂商、社交应用厂商、新闻应用厂商等等。相应的,开发者可以通过终端210在人工智能平台上部署视频模型训练任务,由人工智能平台在云端进行视频模型训练。

服务器220可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。本申请实施例中,服务器220为提供人工智能服务的人工智能平台,其中,提供的人工智能服务包括视频模型训练服务。

示意性的,如图2所示,开发者通过终端210使用人工智能平台提供的视频模型训练服务时,首先选择用于视频模型训练的视频文件,并设置对视频文件进行解码时所采用的采样方式。比如,当训练用于进行视频分类的视频模型时,该视频文件可以是包含视频分类标签的视频文件,采样方式可以是按比例采样。

完成视频文件选择和采样方式设置后,终端210即向服务器220发送模型训练请求。

服务器220接收到模型训练请求后,首先基于设置的采样方式,对视频文件221进行采样并按需解码,得到各个视频文件221对应的采样图像222,然后利用采样图像222对进行模型训练,最终训练得到用于视频分类的视频模型223。

进一步的,服务器220向终端210发送模型训练完成指示,以便终端210对视频模型223进行模型测试,并进一步基于该视频模型在服务器220处部署人工智能服务。

需要说明的是,上述实施例仅以人工智能云服务这一场景,且由人工智能服务平台实现视频解码及视频模型训练为例进行说明。在其他可能的应用场景下,本申请实施例提供的视频解码方法也可以应用于计算机设备,由计算机设备在本地实现视频解码及视频模型训练,本申请实施例并不对具体的应用场景以及执行主体构成限定。

为了方便表述,下述各个实施例以视频解码方法由计算机设备执行为例进行说明。

图3示出了本申请一个示例性实施例提供的视频解码方法的流程图。本实施例以该方法用于计算机设备为例进行说明,该方法包括如下步骤。

步骤301,确定视频文件中的采样视频帧。

由于视频文件中连续视频帧之间的相似度较高,因此若直接对视频文件进行逐帧解码,解码得到的视频图像中将包含大量冗余图像,而利用冗余图像进行视频模型训练将造成计算资源浪费。为了减少模型训练过程中的冗余图像,本申请实施例中,计算机设备引入帧采样机制,从视频文件中确定出采样视频帧,后续即根据采样视频帧对应的视频图像进行视频模型训练。

其中,采样视频帧为视频文件中的部分视频帧,且该采样视频帧基于帧采样规则确定得到,其中,对于同一视频文件,基于不同帧采样规则确定出的采样视频帧不同。

步骤302,从视频文件中获取采样视频帧的采样帧数据,以及采样视频帧对应的关联视频帧的关联帧数据,关联视频帧是采样视频帧解码时所依赖的视频帧。

由于视频文件中并非所有视频帧均包含原始图像帧的完整图像信息,因此在对采样视频帧进行解码过程中,除了需要使用到采样视频帧的采样帧数据外,还可能需要使用采样视频帧对应的关联视频帧的帧数据。

在一些实施例中,对于包含I帧、P帧和B帧的视频文件,若采样视频帧为I帧,则获取采样视频帧的第一帧数据;若采样视频帧为非I帧,则除了获取采样视频帧的采样帧数据外,还需要获取该采样帧对应关联视频帧(比如采样视频帧之前的I帧、P帧或B帧)的关联帧数据。

步骤303,对采样帧数据以及关联帧数据进行解码,得到采样视频帧对应的采样图像。

计算机设备对获取到的采样帧数据以及关联帧数据进行解码,得到各个采样视频帧对应的采样图像。在一些实施例中,当采样视频帧为I帧时,计算机设备对采样视频帧的采样帧数据进行解码即可得到采样图像;当采样视频帧为非I帧时,计算机设备需要对采样视频帧的采样帧数据以及关联视频帧的关联帧数据进行解码,才能得到采样图像(解码过程中得到的关联视频帧的视频图像被丢弃)。

在一种可能的实施方式中,计算机设备根据采样图像对应采样视频帧的帧编号,对采样图像进行排序(比如按照帧编号的升序),得到采样图像序列,以便后续依次将采样图像序列中的采样图像输入视频模型进行训练,使视频模型能够学习到采样图像之间的时序特征。

步骤304,将采样图像作为训练样本输入视频模型,并根据视频模型的模型输出结果训练视频模型。

进一步的,计算机设备利用解码得到的采样图像进行视频模型训练。在一些实施例中,当视频模型用于进行视频分类时,计算机设备将采样图像输入视频模型,得到视频模型输出的视频分类标签,并以采样图像所属视频文件的样本视频标签为监督,对视频模型进行训练。本申请实施例并不对视频模型的具体模型结构、用途以及训练方式进行限定。

综上所述,本申请实施例中引入视频帧采样机制,确定出用于视频模型训练的采样图像(与采样视频帧对应),并在视频文件解码过程中,对采样视频帧以及采样视频帧解码时依赖的关联视频帧进行解码,得到采样图像,从而利用采样图像进行视频模型训练;由于仅需要对部分视频帧进行解码,因此解码耗费时间得以缩短且解码得到视频图像所占用的存储空间减小,进而提高视频模型的训练效率;此外,在训练样本生成阶段(即解码阶段)实现帧采样,在保证模型训练质量的同时,减少模型训练的数据量,进一步提高了视频模型的训练效率。

本申请实施例中,在实现按需解码时,计算机设备需要从视频文件包含的各个视频帧中,筛选出解码采样视频帧时需要使用到的视频帧。在一种可能的实施方式中,计算机设备从视频文件中读取视频帧时,确定读取到的视频帧与采样视频帧的关系(读取到的视频帧为采样视频帧、读取到的视频帧为采样视频帧的关联视频帧、读取到的视频帧既不是采样视频帧也不是关联视频帧),将解码采样视频帧时可能需要使用到的视频帧存储至缓冲区。当读取到采样视频帧时,计算机设备即对缓冲区中当前存储的视频帧进行解码,得到采样视频帧,而无需对视频文件中的各个视频帧进行逐一解码。

图4示出了本申请另一个示例性实施例提供的视频解码方法的流程图。本实施例以该方法用于计算机设备为例进行说明,该方法包括如下步骤。

步骤401,根据视频文件的帧率和时长确定视频帧总量。

进行帧采样前,计算机设备首先确定视频文件中视频帧的总量,从而确定视频帧的编号范围。在一种可能的实施方式中,计算机设备读取视频文件的帧率(即每一秒包含视频帧的数量)以及时长,将帧率与时长的乘积确定为视频帧总量。

在一个示意性的例子中,当视频文件的帧率为30帧/秒,且视频时长为5分钟时,该视频文件的视频帧总量为30×5×60=9000帧,相应的,视频文件中视频帧的编号范围为1至9000。

步骤402,根据视频帧总量和采样规则,确定采样视频帧的视频帧编号,采样规则包括按比例采样、按编号采样以及按照时间段采样中的至少一种。

由于不同视频文件的视频帧总量存在差异,而不同视频文件通常对应相同的采样规则,因此计算机设备需要进一步根据采样规则以及视频帧总量确定各个采样视频帧的视频帧编号。

其中,计算机设备采用的采样规则包括按比例采样、按编号采样以及按时间段采样中的至少一种,下面分别对不同采样规则下采样视频帧的确定方式进行说明。

一、响应于采样规则为按比例采样,根据采样比例从视频文件中选择采样视频帧,并获取采样视频帧的视频帧编号,采样视频帧的数量与视频帧总量的比值为采样比例。

在一种可能的实现方式中,当采样比例采用百分比形式时,计算机设备根据采样比例和视频帧总量确定采样视频帧的数量,从而根据采样视频帧的数量,在视频文件中随机或伪随机选取采样视频帧。

比如,当采样比例为10%,视频帧总量为9000帧时,计算机设备确定采样视频帧的数量为900帧,进而从视频文件中随机选取900帧视频帧作为采样视频帧。

在另一种可能的实现方式中,当采样比例采用分数形式,即N/M(M,N均为正整数,且M>N)时,计算机设备根据M对视频文件中的视频帧进行划分,得到若干视频段落,并从各个视频段落中选取N帧视频帧作为采样视频帧。

比如,当采样比例为3/30时,且视频帧总量为9000帧时,计算机设备视频文件划分为300个视频段落,并从每个视频段落中随机选取3个视频帧作为采样视频帧。

当然,上述两种按比例采样方式仅用于示意性说明,但并不对此构成限定。

二、响应于采样规则为按编号采样,将预设编号集合中小于等于视频帧总量的编号确定为采样视频帧的视频帧编号。

可选的,当给定预设编号集合时(包含采样视频帧的视频帧编号)时,计算机设备采用按编号采样方式,从视频文件中选取视频帧编号属于预设编号集合的视频帧作为采样视频帧。按编号采样可以对每个视频文件中采样视频帧的数量上限进行限制,同时避免随机选取采样视频帧过于密集的问题。

比如,当预设编号集合为{F_1,F_2,F_3,…,F_500},且视频帧总量为9000帧时,计算机设备即根据预设编号集合从视频文件中获得500帧采样视频帧。

三、响应于采样规则为按时间段采样,根据预设时间段的起始时刻和结束时刻确定起始视频帧编号和结束视频帧编号;将位于起始视频帧编号和结束视频帧编号之间,且小于等于视频帧总量的视频帧编号确定为采样视频帧的视频帧编号。

可选的,当给定采样视频帧所属的预设时间段时,计算机设备采用按时间段采样方式,确定预设时间段内起始视频帧以及结束视频帧的视频帧编号,进而将位于该视频帧编号范围内的视频帧确定为采样视频帧。其中,由于视频文件的总时长可能小于该预设时间段的结束时刻,因此计算机设备将视频总量与结束视频编号中的较小值确定为采样视频帧的视频帧编号上限。按时间段采样可以滤除开始或结束时段内的无效视频内容,避免无效视频内容对模型训练造成的影响。

比如,当预设时间段为T_s至T_e,且视频文件的帧率为k时,起始视频帧编号即为T_s×k,结束视频帧编号即为T_e×k。

需要说明的是,上述采样规则可以单独使用,也可以组合使用,比如,将按比例采样和按时间段采样组合时,首先根据预设时间段确定候选视频帧,然后按照采样比例从候选视频帧中选取采样视频帧,本申请实施例在此不再赘述。

步骤403,从视频文件中读取预设长度的视频数据,并确定视频数据中首个完整的视频帧。

在一种可能的实施方式中,计算机设备顺序从视频文件中读取一段视频数据(预设长度),并从头开始解析该视频数据,直至解析得到首个完整的视频帧。为了确保读取到的视频数据中至少包含一帧完整的帧数据,计算机设备需要根据视频文件的视频参数,确定每次读取视频数据的数据长度。可选的,本步骤可以包括如下步骤。

一、根据视频文件的视频分辨率确定单帧视频帧的最大数据长度。

在一种可能的实施方式中,计算机设备获取视频文件的视频分辨率以及采颜色编码方式,确定单帧视频帧的最大数据长度。比如,当采用YUV编码格式时,最大数据长度=width*height*3/2,其中,width为视频宽度(单位为像素),height为视频高度(单位为像素)。

二、根据最大数据长度确定预设长度,预设长度大于等于最大数据长度。

为了确保读取到视频数据中至少包含一帧完整的帧数据,计算机设备基于最大数据长度确定每次读取视频数据的预设长度,该预设长度大于等于单帧视频帧的最大数据长度。

三、从上一次视频数据的读取终点开始,读取预设长度的视频数据,并根据视频帧编码格式确定视频数据中首个完整的视频帧。

每次读取视频数据时,计算机设备即从上一次视频数据的读取终点开始,读取预设长度的视频数据,并从读取到的视频数据中确定首个完整的视频帧。其中,由于采用不同视频帧编码格式的视频文件中,视频帧之间的分隔方式不同,因此计算机设备需要基于视频文件所采用的视频帧编码格式,识别视频数据中的视频帧。

在一些实施例中,当视频文件采用H264编码时,计算机设备通过识别视频数据中的网络抽象层单元(Network Abstract Layer Unit,NALU)头,确定视频数据中的完整视频帧,并进一步根据NALU头中包含的NALU类型,确定该视频帧为I帧或非I帧(P帧或B帧)。

四、将视频帧的帧结束位置确定为读取终点。

为了保证视频文件的顺序读取,计算机设备将当前视频帧的帧结束位置确定为读取终点,以便下一次从该读取终点开始继续读取视频数据。

计算机设备通过上述步骤读取视频数据,直至读取到视频文件结尾。

步骤404,确定当前视频帧编号。

由于上述步骤中已经获取到采样视频帧的视频帧编号,因此计算机设备可以根据当前视频帧与采样视频帧之间的视频帧编号关系,确定当前视频帧是否属于采样视频帧。

关于当前视频帧编号的确定方式,在一种可能的实施方式中,计算机设备在开始读取视频数据前,初始化视频帧编号(index=0),并在每读取到一帧完整的视频帧时,对该视频帧编号进行更新(index=index+1),并将更新后的视频帧编号确定为当前视频帧编号。

步骤405,响应于当前视频帧编号属于采样视频帧的视频帧编号,确定视频帧属于采样视频帧。

进一步的,计算机设备检测当前视频帧编号是否属于采样视频帧的视频帧编号,若属于,则确定该视频帧属于采样视频帧。

可选的,当前视频帧编号不属于采样视频帧的视频帧编号,计算机设备进一步根据当前视频帧编号与最近一个采样视频帧(视频帧编号大于当前视频帧编号)的视频帧编号,确定该视频帧是否属于关联视频帧。

步骤406,响应于视频帧属于采样视频帧或关联视频帧,将视频帧的帧数据存储至缓冲区。

本申请实施例中,计算机设备在进行视频解码前,申请一块缓冲区,对于读取到的视频帧,若该视频帧属于采样视频帧或关联视频帧,则将视频帧写入缓冲区中;若视频帧属于采样视频帧和关联视频帧,则对视频帧进行丢弃。

并且,计算机设备向缓冲区中写入采样视频帧和关联视频帧的方式也不同,下面采用示意性的实施例进行说明。

在一些实施例中,当视频帧属于采样视频帧时,计算机设备根据采样视频帧的帧类型(I帧或非I帧),确定向缓冲区写入采样视频帧的方式。

一、响应于视频帧属于采样视频帧,且视频帧属于I帧,清空缓冲区并将视频帧的帧数据存储至缓冲区。

当视频帧属于采样视频帧,且该视频帧属于I帧时(可以从NALU头的NALU类型字段中获取),由于后续视频帧解码不再依赖缓冲区中缓存的视频帧,因此计算机设备清空缓冲区,并将该视频帧的帧数据存储至缓冲区,以便后续基于缓冲区中存储的帧数据进行解码。

示意性的,如图5所示,对于视频文件51中的第n至n+14帧视频帧,当读取到第n帧视频帧的帧数据,且第n帧视频帧属于采样视频帧时,由于第n帧视频帧为I帧,因此计算机设备将缓冲区52清空,并将第n帧视频帧的帧数据写入缓冲区52。

二、响应于视频帧属于采样视频帧,且视频帧不属于I帧,将视频帧的帧数据存储至缓冲区。

当视频帧属于采样视频帧,但不属于I帧时(可能为P帧或B帧),由于该视频帧的解码过程依赖于之前的视频帧,因此计算机设备保持缓冲区中的帧数据,并将该视频帧的帧数据顺序存储至缓冲区。

示意性的,如图5所示,当读取到第n+5帧视频帧的帧数据,且第n+5帧视频帧属于采样视频帧时,由于第n+5帧视频帧为P帧,因此计算机设备将第n+5帧视频帧的帧数据写入缓冲区52(已经存储有第n+4帧视频帧的帧数据)。

下面对关联视频帧的确定以及存储方式进行说明。

当视频帧不属于采样视频帧时,由于该视频帧可能是后续采样视频帧解码时所依赖的视频帧,因此计算机设备需要进一步确定视频帧是否属于关联视频帧。若该视频帧属于关联视频帧,计算机设备则将该视频帧的帧数据写入缓冲区;若该视频帧不属于关联视频帧,计算机设备则丢弃该视频帧的帧数据。

在一种可能的实施方式中,响应于视频帧不属于采样视频帧,且视频帧属于I帧,且视频帧与采样视频帧之间的帧间隔小于帧间隔阈值,确定视频帧属于关联视频帧。

对于不属于采样视频帧且属于I帧的视频帧,由于后续采样视频帧可能依赖该视频帧,因此计算机设备不可以直接丢弃该视频帧,而是需要进一步确定该视频帧是否为关联视频帧。可选的,计算机设备计算当前视频帧编号与最近一个采样视频帧的视频帧编号之间的帧间隔,若该帧间隔小于帧间隔阈值,表明该视频帧与最近一个采样视频帧之间可能不存在其他I帧,相应的,该视频帧可能是最近一个采样视频帧的关键视频帧,从而确定该视频帧属于关联视频帧;反之,若帧间隔大于帧间隔阈值,计算机设备则丢弃该视频帧。

关于帧间隔阈值的确定方式,在一种可能的实施方式中,该帧间隔阈值由计算机设备根据该视频帧之前相邻I帧之间的帧间隔确定得到。比如,该帧间隔阈值为5。

示意性的,如图5所示,当读取到第n+4帧视频帧的帧数据,且第n+4帧视频帧不属于采样视频帧时,由于第n+4帧视频帧为I帧,且与最近一个采样视频帧(第n+5帧视频帧)之间的帧间隔(1)小于帧间隔阈值(5),因此计算机设备确定第n+4帧视频帧为关联视频帧。

当读取到第n+7帧视频帧的帧数据,且第n+7帧视频帧不属于采样视频帧时,由于第n+7帧视频帧为I帧,且与最近一个采样视频帧(第n+14帧视频帧)之间的帧间隔(7)小于帧间隔阈值(5),因此计算机设备丢弃第n+7帧视频帧。

当读取到第n+13帧视频帧的帧数据,且第n+13帧视频帧不属于采样视频帧时,由于第n+13帧视频帧为I帧,且与最近一个采样视频帧(第n+14帧视频帧)之间的帧间隔(1)小于帧间隔阈值(5),因此计算机设备确定第n+13帧视频帧为关联视频帧。

在另一种可能的实施方式中,响应于视频帧不属于采样视频帧,且视频帧不属于I帧,且缓冲区中包含视频帧对应的I帧,确定视频帧属于关联视频帧。

对于不属于采样视频帧且不属于I帧的视频帧,由于后续采样视频帧仍旧可能依赖该视频帧,因此计算机设备不可以直接丢弃该视频帧,而是需要进一步确定该视频帧是否为关联视频帧。并且,由于非I帧依赖之前的的I帧,因此可选的,计算机设备检测缓冲区中是否包含该视频帧对应的I帧,若包含,则确定该视频帧属于关联视频帧,若不包含,则直接丢弃该视频帧(因为未存储对应的I帧,因此即便存储该视频帧也无法进行后续解码)。

示意性的,如图5所示,当读取到第n+1帧视频帧的帧数据,且第n+1帧视频帧不属于采样视频帧时,由于第n+1帧视频帧为P帧,且缓冲区52中存储有第n+1帧视频帧对应的I帧(第n帧视频帧),因此计算机设备确定第n+1帧视频帧为关联视频帧。类似的,计算机设备将第n+2帧、第n+3帧确定为关联视频帧。

当读取到第n+8帧视频帧的帧数据,且第n+8帧视频帧不属于采样视频帧时,由于第n+8帧视频帧为P帧,且缓冲区52并未存储第n+8帧视频帧对应的I帧(第n+7帧视频帧),因此计算机设备丢弃第n+8帧视频帧。类似的,计算机设备丢弃第n+9帧、第n+10帧、第n+11帧、第n+12帧视频帧。

进一步的,与采样视频帧相似的,响应于视频帧属于关联视频帧,且视频帧属于I帧,计算机设备清空缓冲区并将视频帧的帧数据存储至缓冲区;响应于视频帧属于关联视频帧,且视频帧不属于I帧,计算机设备将视频帧的帧数据存储至缓冲区。

示意性的,如图5所示,计算机设备将第n+1帧、第n+2帧、第n+3帧写入缓冲区52。

步骤407,响应于视频帧属于采样视频帧,对缓冲区中存储的帧数据进行解码,得到采样视频帧对应的采样图像。

本实施例中,当向缓冲区中存储视频帧的帧数据且该视频帧为采样视频帧时,计算机设备即对缓冲区中当前存储的帧数据进行解码,并输出采样视频帧对应的采样图像。

由于缓冲区中除了包含采样视频帧的帧数据外,还可能包含采样数据帧对应关联视频帧的帧数据,而实际进行视频模型训练时,计算机设备只需要使用采样视频帧对应的视频图像,因此在一种可能的实施方式中,计算机设备对缓冲区中各个视频帧的帧数据进行解码,得到至少一张视频图像后,将缓冲区中最后一帧视频帧对应的视频图像确定为采样图像。

示意性的,如图5所示,将第n帧视频帧存储至缓冲区52后,由于第n帧视频帧为采样视频帧,因此计算机设备对缓冲区52中的帧数据进行解码,并将解码得到的第n帧视频图像53确定为采样图像。

将第n+5帧视频帧存储至缓冲区52后,由于第n+5帧视频帧为采样视频帧,因此计算机设备对缓冲区52中的帧数据进行解码,得到2帧视频图像(分别对应第n+4帧和第n+5帧),并将第n+5帧视频图像54确定为采样图像。

将第n+14帧视频帧存储至缓冲区52后,由于第n+14帧视频帧为采样视频帧,因此计算机设备对缓冲区52中的帧数据进行解码,得到2帧视频图像(分别对应第n+13帧和第n+14帧),并将第n+14帧视频图像55确定为采样图像。

在一个示意性的实施例中,计算机设备按序解码的过程如图6所示。

步骤601,读取预定长度的视频数据。

步骤602,解析视频数据中的NALU。

步骤603,根据NALU识别视频数据中的完整视频帧。

步骤604,检测是否为采样视频帧;若是,执行步骤605,若不是,执行步骤611。

步骤605,检测是否为I帧;若是,执行步骤606,若不是,执行步骤608。

步骤606,清空缓冲区中的视频数据。

步骤607,向缓冲区中存储帧数据,并执行步骤609。

步骤608,向缓冲区中存储帧数据,并执行步骤609。

步骤609,对缓冲区中的帧数据进行解码。

步骤610,输出采样图像。

步骤611,检测是否为I帧;若是,执行步骤612,若不是,执行步骤616。

步骤612,检测与最近一帧采样视频帧的帧间隔是否小于帧间隔阈值;若是,执行步骤613,若不是,执行步骤615。

步骤613,清空缓冲区中的视频数据。

步骤614,向缓冲区中存储帧数据。

步骤615,丢弃视频帧。

步骤616,检测缓冲区是否存储有对应的I帧;若是,执行步骤617,若不是,执行步骤615。

步骤617,向缓冲区中存储帧数据。

基于图5、6可以看出,相较于逐帧解码,采用本申请实施例提供的方法,通过帧采样以及按需解码机制,计算机设备仅需要对第n至第n+14帧视频帧中的5帧视频帧进行解码,减少了视频帧解码数量,提高了解码速度。

步骤408,将采样图像作为训练样本输入视频模型,并根据视频模型的模型输出结果训练视频模型。

本步骤的实施方式可以参考上述步骤304,本实施例在此不再赘述。

本实施例中,计算机设备利用缓冲区存储采样视频帧和关联视频帧,并在存储采样视频帧时,触发对缓冲区中的帧数据进行解码,实现基于帧采样的按序解码,无需对视频文件中的视频帧进行逐帧解码,只需要对采样视频帧以及采样视频帧解码时依赖的关联视频帧进行解码即可,减少了视频解码过程中的解码量,提高了视频解码效率。

模型训练大多是基于图像处理器(Graphics Processing Unit,GPU)芯片,而GPU芯片具有并行运算的工作特点,因此在模型训练过程中,计算机设备往往会采用批量方式来提高模型训练速度,即一次性将多组图像序列(对应多个视频文件)作为训练样本输入视频模型中。基于模型训练过程的上述特点,除了通过上述帧采样和按序解码机制来提高视频模型训练效率外,计算机设备还可以通过多路并行解码机制来提高视频模型训练效率。

图7示出了本申请另一个示例性实施例提供的视频解码方法的流程图。本实施例以该方法用于计算机设备为例进行说明,该方法包括如下步骤。

步骤701,确定视频模型的批处理数量,批处理数量为视频模型训练过程中同步处理视频文件的数量。

为了配合模型训练的批量处理需求,本申请实施例中,计算机设备支持同时解码多路视频,因此计算机设备获取视频模型的批处理数量,即训练过程中同步处理视频文件的数量,并基于该批处理数量确定解码阶段同步解码的视频文件的数量。

在一个示意性的例子中,当视频模型的批处理数量为10,即同时根据10个视频文件对应的图像序列进行模型训练时,计算机设备将同步解码的视频文件的数量确定为10个。

步骤702,根据批处理数量从视频文件集中获取并行解码的视频文件。

进一步的,计算机设备根据批处理数量,从视频文件集中获取并行解码的视频文件,其中,该视频文件集为用于视频模型训练的视频文件构成的集合。

在一种可能的实施方式中,每一次选取并行解码的视频文件时,计算机设备将视频参数(包括时长、分辨率等等)相近的视频文件划分为同一批,使不同视频文件的视频解码耗时相近。

完成视频文件选取后,计算机设备开启多线程对同一批次的视频文件进行并行解码(步骤703至705)。

步骤703,确定视频文件中的采样视频帧。

步骤704,从视频文件中获取采样视频帧的采样帧数据,以及采样视频帧对应的关联视频帧的关联帧数据,关联视频帧是采样视频帧解码时所依赖的视频帧。

步骤705,对采样帧数据以及关联帧数据进行解码,得到采样视频帧对应的采样图像。

上述步骤703至705的实施方式可以参考步骤301至303,本实施例在此不再赘述。

步骤706,响应于并行解码的各个视频文件均解码完毕,将各个视频文件对应的采样图像作为训练样本输入视频模型,并根据视频模型的模型输出结果训练视频模型。

由于同一批次中不同视频文件的时长和分辨率存在差异,因此同一批次视频文件的解码耗时也存在差异,本实施例中,当同一批次中并行解码的各个视频文件均解码完毕时,计算机设备才会基于采样图像训练视频模型,并读取下一批次的视频文件。

在一个示意性的例子中,计算机设备实现并行解码过程的伪代码如下:

本实施例中,计算机设备基于视频模型训练过程的批处理数量,从视频文件集中选取多路视频并进行同步解码,在同一批次视频解码完毕后进行视频模型训练,并获取下一批次视频文件,进一步提高了视频模型的训练效率。

上述实施例中,通过帧采样、按序解码和并行解码机制均是间接提高了视频解码速度,在一种可能的实施方式中,除了利用中央处理器(Central Processing Unit,CPU)进行视频解码外,计算机设备还可以利用GPU中用于视频编解码的处理单元进行视频解码。

在一些实施例中,计算机设备对第一帧数据以及第二帧数据进行解码,得到采样视频帧对应的采样图像时,调用CPU和GPU提供的视频解码接口,通过CPU和GPU对采样帧数据以及关联帧数据进行解码,得到采样视频帧对应的采样图像,其中,CPU和GPU对应相同视频解码接口,或,CPU和GPU对应不同视频解码接口。

可选的,计算机设备可以基于GPU统一计算设备架构(Compute Unified DeviceArchitecture,CUDA)库提供的应用程序接口(Application Programming Interface,API),或,基于FFMPEG(Fast Forward MPEG)封装的GPU编码译码器(codec)实现GPU视频解码接口,本实施例对此不作限定。

在一个示意性的实施例中,如图8所示,计算机设备首先根据模型过程中的批处理数量选取多路视频文件81,并根据设置的采样规则进行视频帧采样,确定各个视频文件81中的采样视频帧(即白色填充的视频帧)。对采样视频帧进行解码时,计算机设备调用CPU和GPU提供的视频解码接口,通过CPU82和GPU83进行视频解码,从而通过多路并行解码得到各个视频文件81对应的采样图像序列84。进一步的,计算机设备使用多组采样图像序列84进批量模型训练,最终训练得到视频模型85。

图9是本申请一个示例性实施例提供的视频解码装置的结构框图,该装置包括:

采样帧确定模块901,用于确定视频文件中的采样视频帧;

帧数据获取模块902,用于从所述视频文件中获取所述采样视频帧的采样帧数据,以及所述采样视频帧对应的关联视频帧的关联帧数据,所述关联视频帧是所述采样视频帧解码时所依赖的视频帧;

解码模块903,用于对所述采样帧数据以及所述关联帧数据进行解码,得到所述采样视频帧对应的采样图像;

训练模块904,用于将所述采样图像作为训练样本输入视频模型,并根据所述视频模型的模型输出结果训练所述视频模型。

可选的,所述帧数据获取模块902,包括:

数据读取单元,用于从所述视频文件中读取预设长度的视频数据,并确定所述视频数据中首个完整的视频帧;

存储单元,用于响应于所述视频帧属于所述采样视频帧或所述关联视频帧,将所述视频帧的帧数据存储至缓冲区;

所述解码模块903,用于:

响应于所述视频帧属于所述采样视频帧,对所述缓冲区中存储的帧数据进行解码,得到所述采样视频帧对应的所述采样图像。

可选的,存储单元,用于:

响应于所述视频帧属于所述采样视频帧,且所述视频帧属于I帧,清空所述缓冲区并将所述视频帧的帧数据存储至所述缓冲区;

响应于所述视频帧属于所述采样视频帧,且所述视频帧不属于I帧,将所述视频帧的帧数据存储至所述缓冲区。

可选的,所述装置包括:

关联帧确定模块,用于响应于所述视频帧不属于所述采样视频帧,且所述视频帧属于I帧,且所述视频帧与所述采样视频帧之间的帧间隔小于帧间隔阈值,确定所述视频帧属于所述关联视频帧;

关联帧确定模块,用于响应于所述视频帧不属于所述采样视频帧,且所述视频帧不属于I帧,且所述缓冲区中包含所述视频帧对应的I帧,确定所述视频帧属于所述关联视频帧;

所述存储单元,还用于:

响应于所述视频帧属于所述关联视频帧,且所述视频帧属于I帧,清空所述缓冲区并将所述视频帧的帧数据存储至所述缓冲区;

响应于所述视频帧属于所述关联视频帧,且所述视频帧不属于I帧,将所述视频帧的帧数据存储至所述缓冲区。

可选的,所述解码模块903,包括:

解码单元,用于对所述缓冲区中各个视频帧的帧数据进行解码,得到至少一张视频图像;

图像确定单元,用于将所述缓冲区中最后一帧视频帧对应的所述视频图像确定为所述采样图像。

可选的,数据读取单元,用于:

根据所述视频文件的视频分辨率确定单帧视频帧的最大数据长度;

根据所述最大数据长度确定所述预设长度,所述预设长度大于等于所述最大数据长度;

从上一次视频数据的读取终点开始,读取所述预设长度的视频数据,并根据视频帧编码格式确定视频数据中首个完整的所述视频帧;

将所述视频帧的帧结束位置确定为所述读取终点。

可选的,所述采样帧确定模块901,包括:

总量确定单元,用于根据所述视频文件的帧率和时长确定视频帧总量;

采样帧确定单元,用于根据所述视频帧总量和采样规则,确定所述采样视频帧的视频帧编号,所述采样规则包括按比例采样、按编号采样以及按照时间段采样中的至少一种;

所述装置还包括:

编号确定模块,用于确定当前视频帧编号;

采样帧确定模块901,还用于响应于所述当前视频帧编号属于所述采样视频帧的视频帧编号,确定所述视频帧属于所述采样视频帧。

可选的,所述采样帧确定单元,用于:

响应于所述采样规则为按比例采样,根据采样比例从所述视频文件中选择所述采样视频帧,并获取所述采样视频帧的视频帧编号,所述采样视频帧的数量与所述视频帧总量的比值为所述采样比例;

响应于所述采样规则为按编号采样,将预设编号集合中小于等于所述视频帧总量的编号确定为所述采样视频帧的视频帧编号;

响应于所述采样规则为按时间段采样,根据预设时间段的起始时刻和结束时刻确定起始视频帧编号和结束视频帧编号;将位于所述起始视频帧编号和所述结束视频帧编号之间,且小于等于所述视频帧总量的视频帧编号确定为所述采样视频帧的视频帧编号。

可选的,所述装置还包括:

批处理模块,用于确定所述视频模型的批处理数量,所述批处理数量为所述视频模型训练过程中同步处理视频文件的数量;

文件获取模块,用于根据所述批处理数量从视频文件集中获取并行解码的视频文件;

所述训练模块904,用于:

响应于并行解码的各个视频文件均解码完毕,将各个视频文件对应的所述采样图像作为训练样本输入视频模型,并根据所述视频模型的模型输出结果训练所述视频模型。

可选的,所述解码模块903,还用于:

调用CPU和GPU提供的视频解码接口,通过CPU和GPU对所述采样帧数据以及所述关联帧数据进行解码,得到所述采样视频帧对应的所述采样图像,其中,CPU和GPU对应相同视频解码接口,或,CPU和GPU对应不同视频解码接口。

综上所述,本申请实施例中引入视频帧采样机制,确定出用于视频模型训练的采样图像(与采样视频帧对应),并在视频文件解码过程中,对采样视频帧以及采样视频帧解码时依赖的关联视频帧进行解码,得到采样图像,从而利用采样图像进行视频模型训练;由于仅需要对部分视频帧进行解码,因此解码耗费时间得以缩短且解码得到视频图像所占用的存储空间减小,进而提高视频模型的训练效率;此外,在训练样本生成阶段(即解码阶段)实现帧采样,在保证模型训练质量的同时,减少模型训练的数据量,进一步提高了视频模型的训练效率。

需要说明的是:上述实施例提供的视频解码装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频解码装置与视频解码方法实施例属于同一构思,其实现过程详见方法实施例,这里不再赘述。

请参考图10,其示出了本申请一个示例性实施例提供的计算机设备的结构示意图。具体来讲:所述计算机设备1100包括中央处理单元(Central Processing Unit,CPU)1101、包括随机存取存储器1102和只读存储器1103的系统存储器1104,以及连接系统存储器1004和中央处理单元1101的系统总线1105。所述计算机设备1100还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(Input/Output,I/O系统)1106,和用于存储操作系统1113、应用程序1114和其他程序模块1115的大容量存储设备1107。

所述基本输入/输出系统1106包括有用于显示信息的显示器1108和用于用户输入信息的诸如鼠标、键盘之类的输入设备1109。其中所述显示器1108和输入设备1109都通过连接到系统总线1105的输入输出控制器1110连接到中央处理单元1101。所述基本输入/输出系统1106还可以包括输入输出控制器1110以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1110还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备1107通过连接到系统总线1105的大容量存储控制器(未示出)连接到中央处理单元1101。所述大容量存储设备1107及其相关联的计算机可读介质为计算机设备1100提供非易失性存储。也就是说,所述大容量存储设备1107可以包括诸如硬盘或者驱动器之类的计算机可读介质(未示出)。

不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括随机存取记忆体(RAM,Random Access Memory)、只读存储器(ROM,Read Only Memory)、闪存或其他固态存储其技术,只读光盘(Compact Disc Read-Only Memory,CD-ROM)、数字通用光盘(Digital Versatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1104和大容量存储设备1107可以统称为存储器。

存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元1101执行,一个或多个程序包含用于实现上述方法的指令,中央处理单元1101执行该一个或多个程序实现上述各个方法实施例提供的方法。

根据本申请的各种实施例,所述计算机设备1100还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1100可以通过连接在所述系统总线1105上的网络接口单元1111连接到网络1112,或者说,也可以使用网络接口单元1111来连接到其他类型的网络或远程计算机系统(未示出)。

所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本申请实施例提供的方法中由计算机设备所执行的步骤。

本申请实施例还提供一种计算机可读存储介质,该可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述任一实施例所述的视频解码方法。

本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例所述的视频解码方法。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述任一方法实施例所述的方法。

可选地,该计算机可读存储介质可以包括:ROM、RAM、固态硬盘(SSD,Solid StateDrives)或光盘等。其中,RAM可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 视频解码方法、视频播放装置、电子设备及存储介质
  • 视频解码方法、视频编码方法、装置、设备及存储介质
技术分类

06120112166848