1.本技术涉及图像处理领域,特别涉及一种图像解码方法、图像解码系统及相关装置。
背景技术:2.视频结构化是指将非结构化的二维图像流数据,按照一定的方式处理得到对视频中图像内容的结构化信息。目前业界部署视频结构化应用一般分为边缘测、中心测两种部署方式,无论何种方式,基于cpu/gpu的异构平台几乎成为视频结构化应用的标准平台。但解码过程由单一的硬解码或者软解码完成使视频结构化应用丧失了灵活性。视频结构化处理过程中对于cpu端和gpu端的压力不是一直不变的,随着检测、跟踪、编码、推流等组件的加入,两端压力呈现变化趋势。另外,目前的解码过程属于无约束的过程即解码速度按照硬件性能尽可能快的处理,解码过快会增加内存压力抢占系统资源降低整体应用效率。
技术实现要素:3.本技术的目的是提供一种图像解码方法、图像解码系统、计算机可读存储介质和电子设备,能够提高解码效率。
4.为解决上述技术问题,本技术提供一种图像解码方法,具体技术方案如下:
5.以预设监控频率监控gpu负载和cpu负载;
6.判断所述gpu负载和所述cpu负载的平均负载是否低于负载阈值;
7.若是,判断所述gpu负载是否高于所述负载阈值;
8.若所述gpu负载高于所述负载阈值,采用cpu负载进行图像解码;
9.若所述gpu负载和所述cpu负载的平均负载高于所述负载阈值,或gpu负载和所述cpu负载的平均负载低于所述负载阈值且所述gpu负载低于所述负载阈值时,选取所述gpu负载和所述cpu负载中负载较低的设备执行图像解码。
10.可选的,还包括:
11.当所述解码数据的队列长度达到队列长度阈值时,暂停图像解码;
12.直至所述队列长度小于所述队列长度阈值时,恢复图像解码。
13.可选的,采用cpu负载或gpu负载进行图像解码后,还包括:
14.初始化模型实例数,以bs为1进行局部搜索;bs为单次训练采用的样本数量;
15.利用爬山法增加检测模型的bs数量,确定在满足第一约束条件下所述检测模型的第一最优bs;
16.逐一增加所述检测模型的实例化个数,并根据所述第二约束条件得到第一最优实例化个数;
17.根据所述第一约束条件和所述第二约束条件确定属性模型对应的第二最优bs和第二最优实例化个数;所述检测模型和所述属性模型均为图像解码过程中的解码模型;
18.以所述第一最优bs和所述第一最优实例化个数运行所述检测模型,以所述第二最
优bs和所述第二最优实例化个数运行所述属性模型。
19.可选的,所述第一约束条件为nd*dec_mem+nami*att_mem_i《gpu显存的第一预设百分比;
20.其中,nd为所述检测模型的实例化个数,dec_mem为所述检测模型对应的显存占用,nami为所述属性模型的实例化个数,att_mem_i为所述属性模型对应的显存占用;
21.所述第二约束条件为dec_f*dec_u_bsd+max(0,1-dec_u_bsd*nd)+att_f*att_u_bsami+max(0,1-att_u_bsd*nami)《解码fps*第二预设百分比;
22.其中,dec_f为所述检测模型的检测频率,dec_u_bsd为所述检测模型的利用率,att_f为所述属性模型的识别率,att_u_bsami为所述属性模型的利用率。
23.可选的,检测模型采用yolov5结构,所述属性模型采用inception多分支分类结构。
24.本技术还提供一种图像解码系统,包括:
25.监控模块,用于以预设监控频率监控gpu负载和cpu负载;
26.第一判断模块,用于判断所述gpu负载和所述cpu负载的平均负载是否低于负载阈值;
27.第二判断模块,用于所述第一判断模块的判断结果为是时,判断所述gpu负载是否高于所述负载阈值;
28.解码模块,用于所述第二判断模块的判断结果为是时,采用cpu负载进行图像解码;以及,用于所述第一判断模块的判断结果为否时,或所述第二判断模块的判断结果为否时,选取所述gpu负载和所述cpu负载中负载较低的设备执行图像解码。
29.可选的,还包括:
30.队列长度控制模块,用于当所述解码数据的队列长度达到队列长度阈值时,暂停图像解码;直至所述队列长度小于所述队列长度阈值时,恢复图像解码。
31.可选的,还包括:
32.解码参数设定模块,用于初始化模型实例数,以bs为1进行局部搜索;bs为单次训练采用的样本数量;利用爬山法增加检测模型的bs数量,确定在满足第一约束条件下所述检测模型的第一最优bs;逐一增加所述检测模型的实例化个数,并根据所述第二约束条件得到第一最优实例化个数;根据所述第一约束条件和所述第二约束条件确定属性模型对应的第二最优bs和第二最优实例化个数;以所述第一最优bs和所述第一最优实例化个数运行所述检测模型,以所述第二最优bs和所述第二最优实例化个数运行所述属性模型;所述检测模型和所述属性模型均为图像解码过程中的解码模型。
33.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
34.本技术还提供一种电子设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。
35.本技术提供一种图像解码方法,包括:以预设监控频率监控gpu负载和cpu负载;判断所述gpu负载和所述cpu负载的平均负载是否低于负载阈值;若是,判断所述gpu负载是否高于所述负载阈值;若所述gpu负载高于所述负载阈值,采用cpu负载进行图像解码;若所述gpu负载和所述cpu负载的平均负载高于所述负载阈值,或gpu负载和所述cpu负载的平均负
载低于所述负载阈值且所述gpu负载低于所述负载阈值时,选取所述gpu负载和所述cpu负载中负载较低的设备执行图像解码。
36.本技术使用cpu和gpu进行联合异构解码,能解决单个设备进行解码的应用性能下降问题,在联合异构解码过程中,充分考虑了gpu负载和cpu负载的实际情况,并根据二者的实际负载情况进行解码主体的切换,从而实现根据gpu负载和cpu负载的自适应调整,提高图像解码效率。
37.本技术还提供一种图像解码系统、计算机可读存储介质和电子设备,具有上述有益效果,此处不再赘述。
附图说明
38.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
39.图1为本技术实施例所提供的一种图像解码方法的流程图;
40.图2为本技术实施例所提供的一种图像解码系统结构示意图。
具体实施方式
41.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
42.请参考图1,图1为本技术实施例所提供的一种图像解码方法的流程图,该方法包括:
43.s101:以预设监控频率监控gpu负载和cpu负载;
44.s102:判断所述gpu负载和所述cpu负载的平均负载是否低于负载阈值;若否,进入s105;若是,进入s103;
45.s103:判断所述gpu负载是否高于所述负载阈值;若是,进入s104;若否,进入s105;
46.s104:采用cpu负载进行图像解码;
47.s105:选取所述gpu负载和所述cpu负载中负载较低的设备执行图像解码。
48.本实施例需要周期性监控gpu负载和cpu负载,在此对于预设监控频率不作限定。容易理解的是,针对于gpu和cpu的监控频率可以设置相同,或者其中一个的监控周期为另一个监控周期的子集。例如在gpu负载较大时,可以针对gpu负载的监控频率设置较高,而cpu负载的监控频率设置较低,例如gpu的监控频率为1分钟1次,而cpu负载的监控频率为2分钟一次,能够确保每次cpu负载监控时均存在对应的gpu负载数据,以便执行后续步骤。
49.在步骤s102中判断二者的平均值是否低于负载阈值,在此对于负载阈值不作具体限定。容易理解的是,在执行s102时,gpu负载和cpu负载应为相同时刻的负载,方可进行比较。且二者可以通过百分比确定各自负载,且计算方式应当相同。
50.则根据比较结果采取如下负载方式:
51.若平均负载大于负载阈值,则从gpu负载和cpu负载中选取当前负载较小的执行;
52.若平均负载小于负载阈值,但gpu负载高于负载阈值,则显然cpu负载要小于负载阈值,且gpu负载与负载阈值的差值小于cpu负载与负载阈值的差值,此时选择cpu负载执行;
53.若平均负载小于负载阈值,且gpu负载低于负载阈值,则同样从gpu负载和cpu负载中选取当前负载较小的执行。
54.本技术实施例使用cpu和gpu进行联合异构解码,能解决单个设备进行解码的应用性能下降问题,在联合异构解码过程中,充分考虑了gpu负载和cpu负载的实际情况,并根据二者的实际负载情况进行解码主体的切换,从而实现根据gpu负载和cpu负载的自适应调整,提高图像解码效率。
55.在本实施例的基础上,还可以针对解码过程设置解码队列,用于存储待解码数据,当解码数据的队列长度达到队列长度阈值时,暂停图像解码,直至队列长度小于队列长度阈值时,恢复图像解码。通过设置解码队列,缓解负载严重时的解码压力。
56.由于基于上述异构平台现阶段的视频结构化应用一般分为如下步骤:(1)视频接入,通过摄像机或视频接入平台导入视频数据;(2)解码,针对图像处理目前主要使用rgb格式的图片需将视频码流解码成规定格式的图片;(3)目标检测,也称一次推理,使用深度学习方法对解码到的图像帧中感兴趣的物体进行检测、定位;(4)目标跟踪,对检测到的物体进行定位、跟踪;(5)属性识别,也称二次推理,该模块一般包含对多种目标多种属性的识别,一般包含多个深度学习模型;(6)数据分析,根据检测、跟踪、属性识别的结果对目标进行轨迹分析、行为分析等逻辑分析处理;(7)图像叠加,将处理结果叠加到原图供后期查看;(8)编码,图像流编码成视频流;(9)rtmp转发,将编码得到的视频流转发到流媒体服务器等设备。其中包含了采用属性模型和检测模型的推理过程。在上述实施例的基础上,作为优选的实施例,还可以针对属性模型和检测模型进行参数配置和优化,具体过程如下:
57.第一步、初始化模型实例数,以bs为1进行局部搜索;bs为单次训练采用的样本数量;
58.第二步、利用爬山法增加检测模型的bs数量,确定在满足第一约束条件下检测模型的第一最优bs;
59.第三步、逐一增加检测模型的实例化个数,并根据第二约束条件得到第一最优实例化个数;
60.第四步、根据第一约束条件和第二约束条件确定属性模型对应的第二最优bs和第二最优实例化个数;
61.第五步、以第一最优bs和第一最优实例化个数运行检测模型,以第二最优bs和第二最优实例化个数运行属性模型。
62.上文中,bs指batchsize,即单次训练采用的样本数量。在此对于第一约束条件和第二预设条件均不作具体限定。优选的,第一约束条件可以为nd*dec_mem+nami*att_mem_i《gpu显存的第一预设百分比;
63.其中,nd为检测模型的实例化个数,dec_mem为检测模型对应的显存占用,nami为属性模型的实例化个数,att_mem_i为属性模型对应的显存占用;
64.第二约束条件为dec_f*dec_u_bsd+max(0,1-dec_u_bsd*nd)+att_f*att_u_bsami
+max(0,1-att_u_bsd*nami)《解码fps*第二预设百分比;
65.其中,dec_f为检测模型的检测频率,dec_u_bsd为检测模型的利用率,att_f为属性模型的识别率,att_u_bsami为属性模型的利用率。
66.检测模型可以采用yolov5结构,属性模型可以采用inception多分支分类结构。
67.本技术实施例旨在通过局部搜索算法结合相关参数的硬性设置来确定模型过程中的相关参数,实现参数的调整,从而确保属性模糊和检测模型的运行效率最高。
68.下文为针对上述属性模型和检测模型进行参数配置和优化一种具体应用过程进行说明:
69.对于解码模块,单路视频,解码队列长度设为25*1.2=30,满足解码fps长度留有一定的阈值空间,限定单路视频的解码速度在25fps即可。解码核心的利用率阈值设为70%,监测频率为1s,即gpu或gpu利用率超过70%,按照每秒监测一次的频率,进行解码设备切换,切换规则按照上述实施例来决定。在本例中,单纯使用gpu或者单纯使用cpu解码都不能取得整体性能的最优状态,解码过程会在任务运行中抢夺cpu处理(跟踪)或者gpu处理(检测+属性)的计算资源,使用本方案可以提高整体效率近5%。
70.对于检测模型和属性模型的推理过程,解码的fps为25;单个检测模型显存占用为900m,batchsize=1、2、4、8时,推理一个batch,gpu利用效率分别为62.6%,61%,62%,77%
71.属性模型的种类为1,单个属性模型显存占用为700m,batchsize=1、2、4、8时,推理一个batch,gpu利用率分别为64%,96%,189%,1130%。
72.抽帧频率s=3,按照公式可以得到:
73.(1)nd*800+nam*700《15109*0.8
74.(2)25/(3*bsd)*dec_u_bs+max(0,1-nd*dec_u_bs)+(3*1/5)/(nam*bsam)*att_u_bsam+*max(0,1-nam*att_u_bsam)《25*100%;
75.将(2)式左边最大化,即可得到最优的nd,nam,bsd,bsam,计算方式如下,先将以上变量都赋值为1,然后保持其它变量不变,先增加检测模型的bs,并根据对应bs的利用率来求取最好的检测模型bs。
76.检测模型bs=1:
77.1*800+1*700《12087
78.25/(3*1)*0.626+(1-1*0.626)+(3*1/5)/(1)*0.64+(1-1*0.64)《25
79.得到:
80.1500《12087
81.6.33《25
82.检测模型bs=2:
83.1*800+1*700《12087
84.25/(3*2)*0.61+(1-1*0.61)+(3*1/5)/(1)*0.64+(1-1*0.64)《25
85.得到:
86.1500《12087
87.3.68《25
88.检测模型bs=4/8:
89.利用率数值分别为
90.25/(3*4)*0.62+(1-1*0.62)+(3*1/5)/(1)*0.64+(1-1*0.64)《25
91.25/(3*8)*0.77+(1-1*0.77)+(3*1/5)/(1)*0.64+(1-1*0.64)《25
92.同理,可得bs=1时结果最优。
93.然后保持检测模型bs=1,增加模型的实例数,依然按照上述步骤得到最佳的检测模型实例数为1。
94.使用25/(3*1)*0.626+max(0,1-nd*0.626)+(3*1/5)/(1)*0.64+(1-0.64)《25,可以得到模型最佳实例数为1.依据此公式继续求取属性模型的bs,25/(3*1)*0.626+(1-1*0.626)+(3*1/5)/(bsam)*(64%,96%,189%,1130%)+1*(1-1*(64%,96%,189%,1130%))《25,得到bs=8时效率最高。固定bs=8,得到最好的属性模型实例个数为1,所以按照如上计算得到nd,bsd,nam=1,bsam=8.最终该种参数设置下相比于初始的参数设置,gpu利用实际利用率提高了10%。
95.下面对本技术实施例提供的一种图像解码系统进行介绍,下文描述的图像解码系统与上文描述的一种图像解码方法可相互对应参照。
96.参见图2,图2为本技术实施例所提供的一种图像解码系统结构示意图,本技术还提供一种图像解码系统,包括:
97.监控模块,用于以预设监控频率监控gpu负载和cpu负载;
98.第一判断模块,用于判断所述gpu负载和所述cpu负载的平均负载是否低于负载阈值;
99.第二判断模块,用于所述第一判断模块的判断结果为是时,判断所述gpu负载是否高于所述负载阈值;
100.解码模块,用于所述第二判断模块的判断结果为是时,采用cpu负载进行图像解码;以及,用于所述第一判断模块的判断结果为否时,或所述第二判断模块的判断结果为否时,选取所述gpu负载和所述cpu负载中负载较低的设备执行图像解码。
101.基于上述实施例,作为优选的实施例,还包括:
102.队列长度控制模块,用于当所述解码数据的队列长度达到队列长度阈值时,暂停图像解码;直至所述队列长度小于所述队列长度阈值时,恢复图像解码。
103.可选的,还包括:
104.解码参数设定模块,用于初始化模型实例数,以bs为1进行局部搜索;bs为单次训练采用的样本数量;利用爬山法增加检测模型的bs数量,确定在满足第一约束条件下所述检测模型的第一最优bs;逐一增加所述检测模型的实例化个数,并根据所述第二约束条件得到第一最优实例化个数;根据所述第一约束条件和所述第二约束条件确定属性模型对应的第二最优bs和第二最优实例化个数;以所述第一最优bs和所述第一最优实例化个数运行所述检测模型,以所述第二最优bs和所述第二最优实例化个数运行所述属性模型。
105.本技术还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
106.本技术还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计
算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
107.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
108.本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
109.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。