视频抽帧方法、装置、电子设备、计算机可读存储介质与流程

文档序号:26324298发布日期:2021-08-20 07:24阅读:277来源:国知局
视频抽帧方法、装置、电子设备、计算机可读存储介质与流程

本发明涉及计算机视觉技术领域,尤其是涉及一种视频抽帧方法、装置、电子设备、计算机可读存储介质。



背景技术:

在计算机视觉领域中,训练模型时通常依赖大量的图片作为输入数据,而图片则经常是通过庞大的视频文件按照一定策略进行抽帧得到,例如按时间均匀抽帧,跳帧提取进行视频压缩,按时间段抽帧,抽取关键帧等。传统的方式是常用开源工具进行视频抽帧,这种方式存在一些弊端,例如CPU资源利用率不充分导致抽帧效率低,因此需要一种能够提高抽帧效率的方法。



技术实现要素:

本发明提供一种视频抽帧方法、装置、电子设备以及计算机可读存储介质,用以提高抽帧效率。

为解决上述技术问题,本发明提供的第一个技术方案为:提供一种视频抽帧方法,包括:获得多个视频组;利用多个处理线程并行对所述多个视频组进行抽帧。多个处理线程并行对多个视频组进行抽帧,提高视频抽帧效率。

其中,所述利用多个处理线程并行对所述多个视频组进行抽帧之前包括:获取视频处理服务器端的参数信息;根据所述参数信息得到所述多个处理线程;或者根据所述参数信息、所述多个视频组的数量,得到所述多个处理线程。

多个处理线程并行对多个视频组进行抽帧,提高视频抽帧效率。

所述获取多个视频组包括:获取视频处理服务器端的参数信息;根据所述参数信息对视频进行分组,以得到所述多个视频组。减小视频的规模,提高视频抽帧效率。

所述参数信息包括所述视频处理服务器的CPU总核数以及总内存。

所述根据所述参数信息得到所述多个处理线程包括:根据所述视频处理服务器的CPU总核数以及所述总内存得到所述多个处理线程,每一所述处理线程利用预设数量的CPU核数处理一个视频组。充分利用CPU,进而提高视频抽帧效率。

其中,所述利用多个处理线程并行对所述多个视频组进行抽帧包括:利用多个所述处理线程对所述多个视频组进行一一并行对应处理。通过充分利用视频处理服务器端的CPU,以提高视频抽帧效率。

其中,每一所述处理线程包括第一子线程以及第二子线程,且每一所述处理线程包括寄存器;所述利用多个处理线程并行对所述多个视频组进行抽帧包括:利用每一所述第一子线程对每一所述视频组进行抽帧处理,以得到目标帧,所述目标帧存储于所述寄存器中;从所述寄存器中获取所述目标帧,并对所述目标帧进行图像处理,以形成目标帧队列,所述目标帧队列存储于所述寄存器中;利用每一所述第二子线程从所述寄存器中读取对应的所述目标帧队列中的所述目标帧,并存储至存储器中。在抽帧的过程中将目标帧存储在寄存器中,利用图像处理器GPU对目标帧进行图像处理,在处理完成后再写入存储器,无需将目标帧写入存储器,再从存储器中读取目标帧进行图像处理,降低了IO开销,进一步提高视频抽帧效率,并提高图像质量。

其中,所述图像处理包括图像特征提取、图像渲染中至少一种。

为解决上述技术问题,本发明提供的第二个技术方案为:提供一种视频抽帧装置,包括:获取模块,用于获得多个视频组;处理模块,利用多个处理线程并行对所述多个视频组进行抽帧。

为解决上述技术问题,本发明提供的第三个技术方案为:提供一种电子设备,包括:存储器及处理器,其中,所述存储器存储有程序指令,所述处理器从所述存储器调取所述程序指令以执行上述任一项所述的视频抽帧方法。

为解决上述技术问题,本发明提供的第四个技术方案为:提供一种计算机可读存储介质,存储有程序文件,所述程序文件能够被执行以实现如上述任一项所述的视频抽帧方法。

本发明的有益效果,区别于现有技术的情况,本发明利用多个处理线程并行对所述多个视频组进行抽帧,以此提高视频抽帧效率。

附图说明

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

图1为本发明视频抽帧方法的第一实施例的流程示意图;

图2为本发明处理线程的获取方法的一实施例的流程示意图;

图3为本发明视频抽帧方法的第二实施例的流程示意图;

图4为图3的一实施例的流程示意图;

图5为本发明视频抽帧装置的一实施例的结构示意图;

图6为本发明电子设备的一实施例的结构示意图;

图7为本发明存储介质的一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参见图1,为本发明视频抽帧方法的第一实施例的流程示意图,包括:

步骤S11:获得多个视频组。

在一实施例中,若要对一个较大的视频进行抽帧时,可以将该视频分为多个视频组。或者在另一实施例中,直接获取多个较小的视频组。具体的,可以获取视频处理服务器的参数信息,例如视频处理服务器的CPU总核数以及总内存等,基于视频处理服务器的CPU总核数以及总内存对较大的视频进行抽帧,将该视频分为多个视频组,以此减小视频的规模,提高视频抽帧效率。

步骤S12:利用多个处理线程并行对多个视频组进行抽帧。

具体的,利用多个处理线程并行对多个视频组进行抽帧。例如,若多个视频组包括视频组1、视频组2、视频组3、视频组4。多个处理线程包括处理线程1、处理线程2、处理线程3,可以利用多个处理线程对多个视频组进行一一并行对应处理,例如,可以利用处理线程1对视频组1进行抽帧,利用处理线程2处理视频组2进行抽帧,利用处理线程3处理视频组3进行抽帧,具体的,在进行抽帧时,处理线程1、处理线程2、处理线程3同时进行操作。其中,若其中一个处理线程处理完成后,例如若处理线程1将视频组1处理完成后,可进一步读取视频组4进行抽帧处理。或者,处理线程1将视频组1进行抽帧且抽帧完成后,可以进一步辅助处理线程2对视频组2进行抽帧。或者,在另一实施例中,若多个视频组包括视频组1、视频组2、视频组3。多个处理线程包括处理线程1、处理线程2、处理线程3,处理线程4。可以利用处理线程1对视频组1进行抽帧,利用处理线程2处理视频组2进行抽帧,利用处理线程3处理视频组3进行抽帧,处理线程4空置,等待下一个视频组。或者,在另一实施例中,可以进一步获得与处理线程数量相等的视频组。例如,获取一个较大的视频,将该视频分为与处理线程数量相同的视频组,以使得一个处理线程处理一个视频组。具体的,将视频分为多个视频组,按照视频组的数量根据参数信息得到数量对应的多个处理线程。通过上述方式,能够提高CPU的利用率,进而提高视频抽帧效率。

在一实施例中,请结合图2,图2为处理线程的获取方式的一实施例的流程示意图。包括:

步骤S21:获取视频处理服务器端的参数信息。

具体的,该视频处理服务器端可以为移动终端,例如手机、笔记本电脑等,还可以为其他智能设备,例如图像处理装置等,具体不做限定。

该参数信息为视频处理服务器端的CPU总核数以及总内存。

步骤S22:根据参数信息得到多个处理线程。

具体的,根据视频处理服务器端的CPU总核数以及总内存得到多个处理线程。在一实施例中,根据所述视频处理服务器的CPU总核数以及所述总内存得到所述多个处理线程,每一所述处理线程利用预设数量的CPU核数处理一个视频组。例如,若视频处理服务器端的CPU总核数为56核,且规定一个处理线程利用4核CPU对一个视频组进行抽帧处理,则在总内存足够的情况下,可以将得到14个处理线程。再例如,若视频处理服务器端的CPU总核数为56核,且规定一个处理线程利用4核CPU对一个视频组进行抽帧处理,但是总内存较小,则在总内存的约束下可以得到8个处理线程。可以理解的,一个处理线程处理一个视频组所占用的核数不做限定,还可以规定一个处理线程利用8核CPU处理一个视频组,或者利用10核CPU处理一个视频组,在此不做赘述。在一具体实施例中,为了充分利用CPU,并提高视频抽帧的效率,可以进一步使得到的处理线程的数量与视频组的数量对应。具体的,在得到处理线程时,结合视频组的数量,例如,若视频组为8组时,则得到8个处理线程,以此使得CPU充分利用,提高视频抽帧的效率。

通过本实施例的方式,根据视频处理服务器端的CPU总核数以及总内存得到多个处理线程,多个处理线程并行处理多个视频组,以此提高CPU的利用率,提高视频抽帧的效率。

请参见图3,为本发明视频抽帧方法的第二实施例的流程示意图,本实施例中,每一个处理线程包括第一子线程以及第二子线程,与上述图1所示的第一实施例的区别在于,本实施例中,步骤S12具体包括:

步骤S31:利用每一第一子线程对每一视频组进行抽帧处理,以得到目标帧。

请结合图4,例如,在一实施例中,当前处理线程对视频组1进行抽帧处理,具体的,第一子线程对视频组进行抽帧。为了减少运算量,可以根据预定规则进行跳帧处理,以进行抽帧得到目标帧。在一实施例中,可以在抽取预定时间段内部分图像帧作为目标帧,例如,从视频组第一个3秒内抽取部分图像,第二个3秒内抽取部分图像,第3个三秒内抽取部分图像,抽取的图像作为目标帧。或者,在另一实施例中,若视频组具有100帧图像,可以选择单数帧图像作为目标帧。或者还可以每个固定帧数选择部分作为目标帧,例如,选择1-5帧、10-15帧、20-25帧作为目标帧,具体不做限定。在一实施例中,每一处理线程包括寄存器,目标帧存储至寄存器中,寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。

步骤S32:从所述寄存器中获取所述目标帧,并对所述目标帧进行图像处理,以形成目标帧队列。

具体的,从寄存器中获取目标帧,并对目标帧进行图像处理,以形成目标帧队列。在一实施例中,可以调用图像处理器(Graphics Processing Unit,GPU)的图像处理功能对寄存器中存储的目标真进行图像处理,以形成目标帧队列。图像处理包括对目标帧进行图像特征提取、图像渲染、图像聚类等操作。目标帧队列存储于寄存器中。

现有技术中,CPU在进行抽帧时,无法直接对抽取的目标帧进行图像运算,需要将抽取的目标帧先存储至存储器中,再从存储器中读取目标帧利用图像处理器GPU对其进行图像运算,以此会增加IO开销,当输出高质量图像时,耗时增大。

本申请实施例的方式,利用第一子线程抽取目标帧后,可将目标帧存储至寄存器中,利用图像处理器GPU对寄存器中存储的目标帧进行图像运算,以得到目标帧队列,其不需要将目标帧写入存储器,减少了IO开销,提高图像处理效率以及图像的质量。

步骤S33:利用每一第二子线程从寄存器中读取对应的目标帧队列中的目标帧,并存储至存储器中。

利用第二子线程从寄存器中读取对应的目标帧队列中的目标帧,并存储至存储器中。具体的,在从目标帧队列中读取目标帧时,需要采用先进先出原则,例如,第一子线程抽帧得到的目标帧在目标帧队列中按照时间先后为目标帧1、目标帧2、目标帧3、目标帧4……目标帧n,第一子线程当前抽取的目标帧为目标帧n+1,第二子线程在从目标帧队列中进行读取时,按照目标帧1、目标帧2、目标帧3、目标帧4……目标帧n、目标帧n+1的顺序读取。该存储器为视频处理服务器端的内存。

在另一实施例中,为了进一步压缩抽帧时间,第一子线程与第二子线程可同时工作,例如在第一子线程进行抽帧的过程中,第二子线程可同时从目标帧队列中读取目标帧并写入存储器中。

本发明提供的视频抽帧方法,其通过视频处理服务器端的CPU总核数以及总内存得到多个处理线程,多个处理线程并行处理多个视频组,从而提高CPU的利用率,提高视频抽帧的效率。其中,每一处理线程包括第一子线程以及第二子线程,第一子线程对每一视频组进行抽帧处理,以得到目标帧,目标帧存储至寄存器中,直接从寄存器中获取目标帧,并利用图像处理器GPU的图像处理功能对目标帧进行图像处理,以形成目标帧队列,利用第二子线程从寄存器中的目标帧队列中读取目标帧,并存储至存储器中,其不需要将目标帧写入存储器中,再利用图像处理器GPU从存储器中读取目标帧进行图像处理。本实施例的方式,在进行抽帧的过程中可直接利用图像处理器GPU对目标帧进行图像处理,减少了IO开销,降低耗时时长,进一步提高了视频抽帧效率以及图像的质量。

请参见图5,为本发明视频抽帧装置的一实施例的结构示意图,视频抽帧装置包括获取模块51以及处理模块52。

其中,获取模块51用于获得多个视频组。在一实施例中,若要对一个较大的视频进行抽帧时,可以将该视频分为多个视频组。或者在另一实施例中,直接获取多个较小的视频组。具体的,获取模块51可以获取视频处理服务器的参数信息,例如视频处理服务器的CPU总核数以及总内存等,基于视频处理服务器的CPU总核数以及总内存对较大的视频进行抽帧,将该视频分为多个视频组,以此减小视频的规模,提高视频抽帧效率。

在一实施例中,获取模块51还用于获取视频处理服务器端的参数信息,根据参数信息得到多个处理线程。

具体的,根据视频处理服务器端的CPU总核数以及总内存得到多个处理线程。在一实施例中,根据所述视频处理服务器的CPU总核数以及所述总内存得到所述多个处理线程,每一所述处理线程利用预设数量的CPU核数处理一个视频组。例如,若视频处理服务器端的CPU总核数为56核,且规定一个处理线程利用4核CPU对一个视频组进行抽帧处理,则在总内存足够的情况下,可以将得到14个处理线程。再例如,若视频处理服务器端的CPU总核数为56核,且规定一个处理线程利用4核CPU对一个视频组进行抽帧处理,但是总内存较小,则在总内存的约束下可以得到8个处理线程。可以理解的,一个处理线程处理一个视频组所占用的核数不做限定,还可以规定一个处理线程利用8核CPU处理一个视频组,或者利用10核CPU处理一个视频组,在此不做赘述。在一具体实施例中,为了充分利用CPU,并提高视频抽帧的效率,可以进一步使得到的处理线程的数量与视频组的数量对应。具体的,在得到处理线程时,结合视频组的数量,例如,若视频组为8组时,则得到8个处理线程,以此使得CPU充分利用,提高视频抽帧的效率。

通过本实施例的方式,根据视频处理服务器端的CPU总核数以及总内存得到多个处理线程,多个处理线程并行处理多个视频组,以此提高CPU的利用率,提高视频抽帧的效率。

处理模块52用于利用多个处理线程并行对多个视频组进行抽帧。具体的,

若多个视频组包括视频组1、视频组2、视频组3、视频组4。多个处理线程包括处理线程1、处理线程2、处理线程3,可以利用多个处理线程对多个视频组进行一一并行对应处理,例如,可以利用处理线程1对视频组1进行抽帧,利用处理线程2处理视频组2进行抽帧,利用处理线程3处理视频组3进行抽帧,具体的,在进行抽帧时,处理线程1、处理线程2、处理线程3同时进行操作。其中,若其中一个处理线程处理完成后,例如若处理线程1将视频组1处理完成后,可进一步读取视频组4进行抽帧处理。或者,处理线程1将视频组1进行抽帧且抽帧完成后,可以进一步辅助处理线程2对视频组2进行抽帧。或者,在另一实施例中,若多个视频组包括视频组1、视频组2、视频组3。多个处理线程包括处理线程1、处理线程2、处理线程3,处理线程4。可以利用处理线程1对视频组1进行抽帧,利用处理线程2处理视频组2进行抽帧,利用处理线程3处理视频组3进行抽帧,处理线程4空置,等待下一个视频组。或者,在另一实施例中,可以进一步获得与处理线程数量相等的视频组。例如,获取一个较大的视频,将该视频分为与处理线程数量相同的视频组,以使得一个处理线程处理一个视频组。具体的,将视频分为多个视频组,按照视频组的数量根据参数信息得到数量对应的多个处理线程。通过上述方式,能够提高CPU的利用率,进而提高视频抽帧效率。

在一实施例中,处理模块52还用于利用每一第一子线程对每一视频组进行抽帧处理,以得到目标帧,目标帧存储于寄存器中,从所述寄存器中获取所述目标帧,并对所述目标帧进行图像处理,以形成目标帧队列,目标帧队列存储于寄存器中,利用每一第二子线程从寄存器中读取对应的目标帧队列中的目标帧,并存储至存储器中。

具体的,

具体的,第一子线程对视频组进行抽帧。为了减少运算量,可以根据预定规则进行跳帧处理,以进行抽帧得到目标帧。在一实施例中,可以在抽取预定时间段内部分图像帧作为目标帧,例如,从视频组第一个3秒内抽取部分图像,第二个3秒内抽取部分图像,第3个三秒内抽取部分图像,抽取的图像作为目标帧。或者,在另一实施例中,若视频组具有100帧图像,可以选择单数帧图像作为目标帧。或者还可以每个固定帧数选择部分作为目标帧,例如,选择1-5帧、10-15帧、20-25帧作为目标帧,具体不做限定。在一实施例中,每一处理线程包括寄存器,目标帧存储至寄存器中,寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。具体的,从寄存器中获取目标帧,并对目标帧进行图像处理,以形成目标帧队列。在一实施例中,可以调用图像处理器(Graphics Processing Unit,GPU)的图像处理功能对寄存器中存储的目标真进行图像处理,以形成目标帧队列。图像处理包括对目标帧进行图像特征提取、图像渲染、图像聚类等操作。目标帧队列存储于寄存器中。

现有技术中,CPU在进行抽帧时,无法直接对抽取的目标帧进行图像运算,需要将抽取的目标帧先存储至存储器中,再从存储器中读取目标帧利用图像处理器GPU对其进行图像运算,以此会增加IO开销,当输出高质量图像时,耗时增大。

本申请实施例的方式,利用第一子线程抽取目标帧后,可将目标帧存储至寄存器中,利用图像处理器GPU对寄存器中存储的目标帧进行图像运算,以得到目标帧队列,其不需要将目标帧写入存储器,减少了IO开销,提高图像处理效率以及图像的质量。

请参见图6,为本发明电子设备的一实施例的结构示意图。电子设备包括相互连接的存储器202和处理器201。

存储器202用于存储实现上述任意一项的设备的视频抽帧方法的程序指令。

处理器201用于执行存储器202存储的程序指令。

其中,处理器201还可以称为CPU(Central Processing Unit,中央处理单元)。处理器201可能是一种集成电路芯片,具有信号的处理能力。处理器201还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器202可以为内存条、TF卡等,可以存储设备的电子设备中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,电子设备才有记忆功能,才能保证正常工作。电子设备的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,系统服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。

请参阅图7,为本发明计算机可读存储介质的结构示意图。本申请的存储介质存储有能够实现上述所有视频抽帧方法的程序文件203,其中,该程序文件203可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储装置包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。

以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1