CN117687772A - 一种算法调度方法及电子设备 - Google Patents
一种算法调度方法及电子设备 Download PDFInfo
- Publication number
- CN117687772A CN117687772A CN202310953194.6A CN202310953194A CN117687772A CN 117687772 A CN117687772 A CN 117687772A CN 202310953194 A CN202310953194 A CN 202310953194A CN 117687772 A CN117687772 A CN 117687772A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- algorithms
- electronic device
- time
- time consumption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 794
- 238000000034 method Methods 0.000 title claims abstract description 135
- 238000012545 processing Methods 0.000 claims abstract description 104
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 37
- 238000004891 communication Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 20
- 230000000694 effects Effects 0.000 description 15
- 238000010295 mobile communication Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 11
- 238000001514 detection method Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 230000003416 augmentation Effects 0.000 description 2
- 238000013529 biological neural network Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请公开一种算法调度方法及电子设备,所述方法包括:电子设备获取视频流,视频流包含至少两个图像;目标图像为至少两个图像中的一个图像;针对目标图像,基于M个算法中每一个算法的第一耗时,从M个算法中确定N个算法;其中,M为大于1的整数,N小于M;M个算法中每一个算法的第一耗时是基于中央处理器执行每一个算法的历史耗时得到的;N个算法的第一耗时之和不大于第一时长,N个算法被调度用于处理目标图像。该方法可以避免多个算法被调度作用于一帧图像导致中央处理器的负载过高的情况。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种算法调度方法及电子设备。
背景技术
随着科技的发展,移动终端中的相机拍照功能、录像功能越来越强大,相机拍照、录像功能也成为了用户日常使用不可或缺的一项功能。
在相机拍照或录像场景,电子设备可以调度多个图像处理算法对获取到的图像进行处理,进而,显示处理后的图像。其中,图像处理算法包括人脸检测算法、场景检测算法、物体跟踪算法、关键点检测算法等。
目前,电子设备往往按照算法各自的预设帧率调度算法,会出现多个算法同时处理同一帧图像的情况,该情况会导致电子设备的处理器负载过高,从而影响图像处理效率。
发明内容
本申请提供一种算法调度方法及电子设备,该方法中,电子设备可以选择第一耗时之和不大于第一时长的N个算法作为处理目标图像的算法,使得中央处理器处理目标图像的耗时不会超过第一时长,可以避免多个算法被调度作用于一帧图像导致中央处理器的负载过高的情况。
第一方面,本申请实施例提供了一种算法调度方法,该方法包括:
电子设备获取视频流,视频流包含至少两个图像;目标图像为至少两个图像中的一个图像;
电子设备针对目标图像,基于M个算法中每一个算法的第一耗时,从M个算法中确定N个算法;
其中,M为大于1的整数,N小于M;M个算法中每一个算法的第一耗时是基于电子设备的中央处理器执行每一个算法的历史耗时得到的;N个算法的第一耗时之和不大于第一时长,N个算法被调度用于处理目标图像。
本申请实施例中,电子设备可以从M个算法选择第一耗时之和不大于第一时长的N个算法作为处理目标图像的算法,使得中央处理器处理目标图像的耗时不会超过第一时长,从而避免多个算法被调度作用于一帧图像导致中央处理器的负载过高的情况,可以提高中央处理器对视频流中的图像的处理效率。
结合第一方法,在一种可能的实现中,该方法还包括:
电子设备在从M个算法中确定N个算法后,可以调度N个算法处理目标图像;
电子设备显示处理后的目标图像。
本申请实施例中,从M个算法选择第一耗时之和不大于第一时长的N个算法作为处理目标图像的算法,使得中央处理器处理目标图像的耗时不会超过第一时长,可以提高图像的显示速度,从而提高用户体验。
结合第一方法,在一种可能的实现中,N个算法包括第一算法;在从M个算法中确定N个算法之前,方法还包括:
电子设备获取中央处理器最近L次执行第一算法的耗时,得到第一算法的L个历史耗时;L为大于1的整数;
电子设备将第一算法的L个历史耗时的均值确定为第一算法的第一耗时。
本申请实施例中,电子设备可以针对目标图像,基于处理目标图像之前中央处理器最近L次执行第一算法的L个历史耗时预测第一算法的第一耗时,可以提高预测到的第一算法的第一耗时的数据准确度,可以保证中央处理器调度N个算法处理目标图像的实际耗时小于第一时长,减少中央处理器处理目标图像的时长。
结合第一方法,在一种可能的实现中,中央处理器的占用率高于第一阈值时第一时长为第一数值,中央处理器的占用率不高于第一阈值时第一时长为第二数值,第一数值小于第二数值。
本申请实施例中,电子设备可以基于高负载场景和轻载场景,对第一时长进行更改。其中,高负载场景可以是指中央处理器的负载较高,如中央处理器的占用率高于第一阈值;轻载场景可以是指中央处理器的负载较低,如中央处理器的占用率不高于第一阈值。
在高负载场景,电子设备可以缩短第一时长(即选择数值较小的第一数值为第一时长),那么,电子设备基于第一时长确定的N个算法的个数较少,中央处理器调度N个算法对目标头进行处理的耗时更少,可以避免中央处理器因负载过高导致出现故障或处理效率慢出现卡顿等情况;在轻载场景,电子设备可以延长第一时长(即选择数值较大的第二数值为第一时长),那么,确定的N个算法的个数可以更多,算法个数越多图像处理效果越好,则该情况下可以在保证中央处理器的处理效率的情况下提高图像的处理效果。
结合第一方法,在一种可能的实现中,N个算法包括Q个第二算法,Q为正整数;第二算法被调度时还由电子设备的数字信号处理器执行;
Q个第二算法的第二耗时之和不大于第二时长;Q个第二算法中每一个第二算法的第二耗时是基于数字信号处理器执行每一个第二算法的历史耗时得到的。
本申请实施例中,电子设备可以针对目标图像,基于处理目标图像之前数字信号处理器最近执行第二算法的历史耗时预测第二算法的第二耗时,可以提高预测到的第二算法的第二耗时的数据准确度,可以保证数字信号处理器调度N个算法处理目标图像的实际耗时小于第二时长,减少数字信号处理器处理目标图像的时长。
结合第一方法,在一种可能的实现中,数字信号处理器的占用率高于第二阈值时第二时长为第三数值,数字信号处理器的占用率不高于第二阈值时第二时长为第四数值,第三数值小于第四数值。
在高负载场景,电子设备可以缩短第二时长(即选择数值较小的第三数值为第二时长),那么,电子设备基于第二时长确定的N个算法的个数较少,数字信号处理器调度N个算法对目标头进行处理的耗时更少,可以避免数字信号处理器因负载过高导致出现故障或处理效率慢出现卡顿等情况;在轻载场景,电子设备可以延长第二时长,那么,确定的N个算法的个数可以更多,算法个数越多图像处理效果越好,则该情况下可以在保证数字信号处理器的处理效率的情况下提高图像的处理效果。
结合第一方法,在一种可能的实现中,N个算法包括W个第三算法,W为正整数;第三算法被调度时还由电子设备的图像处理器执行;
W个第三算法的第三耗时之和不大于第三时长;W个第三算法中每一个第三算法的第三耗时是基于图像处理器执行每一个第三算法的历史耗时得到的。
本申请实施例中,电子设备可以针对目标图像,基于处理目标图像之前图像处理器最近执行第三算法的历史耗时预测第三算法的第三耗时,可以提高预测到的第三算法的第三耗时的数据准确度,可以保证图像处理器调度N个算法处理目标图像的实际耗时小于第三时长,减少图像处理器处理目标图像的时长。
结合第一方法,在一种可能的实现中,图像处理器的占用率高于第三阈值时第三时长为第五数值,图像处理器的占用率不高于第三阈值时第三时长为第六数值,第五数值小于第六数值。
在高负载场景,电子设备可以缩短第三时长(即选择数值较小的第三数值为第三时长),那么,电子设备基于第三时长确定的N个算法的个数较少,图像处理器调度N个算法对目标头进行处理的耗时更少,可以避免图像处理器因负载过高导致出现故障或处理效率慢出现卡顿等情况;在轻载场景,电子设备可以延长第三时长,那么,确定的N个算法的个数可以更多,算法个数越多图像处理效果越好,则该情况下可以在保证图像处理器的处理效率的情况下提高图像的处理效果。
结合第一方法,在一种可能的实现中,N个算法包括Q个第二算法,Q为正整数;第二算法被调度时还由电子设备的数字信号处理器执行;Q个第二算法的第二耗时之和不大于第二时长;Q个第二算法中每一个第二算法的第二耗时是基于数字信号处理器执行每一个第二算法的历史耗时得到的;
而且,N个算法包括W个第三算法,W为正整数;第三算法被调度时还由电子设备的图像处理器执行;W个第三算法的第三耗时之和不大于第三时长;W个第三算法中每一个第三算法的第三耗时是基于图像处理器执行每一个第三算法的历史耗时得到的。
本申请实施例中,协同考虑多计算单元(中央处理器、数字信号处理器和图像处理器)的情况,通过选择N个算法,确保了各个计算单元的耗时均在时长限制内,可以保证各个计算单元的处理效率。
结合第一方法,在一种可能的实现中,上述从M个算法中确定N个算法,包括:
电子设备将M个算法进行排序,得到第一序列;第一序列中的算法是按照M个算法中每一个算法当前的权重从大到小进行排序的;
在第一序列中前N个算法的第一耗时之和等于第一时长时,电子设备将前N个算法确定为N个算法;
在第一序列中前j个算法的第一耗时之和不大于第一时长且前j+1个算法的第一耗时之和大于第一时长时,将排序在第j+1个算法之后的算法与前j个算法的第一耗时之和与第一时长进行比较,从排序在第j+1个算法之后的算法中确定至少一个算法,至少一个算法与前j个算法的第一耗时之和不大于第一时长;j为大于0且小于M的整数,N个算法包括前j个算法和至少一个算法。
结合第一方法,在一种可能的实现中,上述第一序列中当前的权重相等的算法按照预设帧率从大到小进行排序的,第一序列中当前的权重和预设帧率均相等的算法是按照第一耗时从小到大进行排序的
结合第一方法,在一种可能的实现中,上述M个算法中每一个算法当前的权重是由每一个算法的预设帧率、视频流的预览帧率和每一个算法的被调度次数确定;每一个算法的被调度次数为每一个算法在处理视频流中的目标图像之前的图像的被调度次数;
每一个算法当前的权重用于指示每一个算法当前被调度的期望程度,每一个算法的权重与每一个算法被调度的期望程度为正比关系。
本申请实施例中,算法调度不仅考虑了预设帧率,还考虑了各算法的性能开销(耗时);基于权重和预设帧率排序可以保证对图像处理影响更大的算法优选被选中为上述N个算法,基于算法的性能选择N个算法可以保证处理该图像的耗时满足预设条件,该方法在保证图像的显示效果的同时可以保证图像的处理效率。
第二方面,本申请提供一种算法调度模块,所述算法调度模块用于执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
示例性的,该算法调度模块可以为硬件抽象层中的一个功能模块。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括:一个或多个处理器和存储器;所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,本申请实施例提供一种芯片系统,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
第五方面,本申请实施例提供一种包含指令的计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
可以理解的,上述第二方面提供的算法调度模块、第三方面提供的电子设备、第四方面提供的芯片、第五方面提供的计算机程序产品和第六方面提供的计算机存储介质均用于执行本申请实施例所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1是本申请实施例提供的电子设备100的结构示意图;
图2是本申请实施例的电子设备100的软件结构框图;
图3是本申请实施例提供的一种算法调度过程的数据流向的示意图;
图4是本申请实施例提供的一种算法调度方法的方法流程图;
图5是本申请实施例提供的另一种算法调度方法的方法流程图;
图6是本申请实施例提供的又一种算法调度过程的数据流向的示意图;
图7是本申请实施例提供的再一种算法调度方法的方法流程图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地描述。
本申请的说明书、权利要求书及附图中的术语“第一”和“第二”等仅用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备等,没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元等,或可选地还包括对于这些过程、方法、产品或设备等固有的其它步骤或单元。
在本申请实施例中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本申请实施例所描述的实施例可以与其它实施例相结合。
在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”。
首先,介绍本申请实施例涉及的技术术语。
(1)图像处理算法
图像处理算法是指对图像进行处理的算法,其中,处理可以包括识别、去噪等。应理解,作用于图像的算法均属于本申请实施例中的图像处理算法。
示例性的,图像处理算法可以包括感知类算法,感知类算法是指用于处理图像的一些列算法,如人脸检测算法、场景检测算法、物体跟踪算法、关键点检测算法等。感知类算法也可以称为预览算法,本申请实施例对此不做限定。
(2)视频流的预览帧率
视频流的预览帧率是指视频流的播放帧率。
示例性的,电子设备响应于点击相机应用的应用图标的用户操作,显示相机应用的预览界面,该预览界面包括预览窗,该预览窗用于显示视频流;视频流的预览帧率即为预览窗内每单位时间(如1s)显示的图像的帧数。假设视频流的预览帧率为30帧每秒,也就是说,每秒预览窗显示30帧图像。
本申请实施例中,视频流的预览帧率可以为相机预览帧率。其中,相机预览帧率为相机模组出厂时设定的参数,相机预览帧率的个数可以为一个或多个。示例性的,电子设备可以基于处理器负载等参数对不同的视频流设置不同的预览帧数,例如,电子设备可以在处理器负载较高时将相机预览帧率中帧率较低的相机预览帧率作为当前视频流的预览帧率;在处理器负载较低时将相机预览帧率中帧率较高的相机预览帧率作为当前视频流的预览帧率。
(3)图像处理算法的帧率(frames per second,FPS)
图像处理算法的帧率为该算法单位时间(如1s)内作用于视频流中图像(被调度于图像)的帧数。本申请实施例主要涉及图像处理算法,为方便描述,以下将图像处理算法简称为算法。
例如,算法的帧率为30帧每秒,也就是说,每秒内该算法被调度30次,分别作用于视频流中的30帧图像。假设视频流的预览帧率也为30帧每秒,那么,也即是该算法被调度于视频流的每一帧图像。
又例如,算法的帧率为15帧每秒,也就是说,每秒内该算法被调度15次,也即是该算法作用于视频流中的15帧图像。假设视频流的预览帧率也为30帧每秒,那么,也即是该算法被调度于视频流的每一帧图像。假设视频流的预览帧率也为30帧每秒,那么,也即是该算法被调度于视频流的15帧图像,视频流中的另15帧图像没有被该算法处理。
电子设备可以存储有各个图像处理算法的帧率。例如,电子设备中存储有各个感知类算法的配置文件,该配置文件包含算法对应的帧率。需要说明的是,配置文件中的帧率也可以被称为理想帧率。
本申请实施例为协调调度各算法,并不会完全按照配置文件中算法对应的帧率进行算法调度,因此为方便描述,本申请实施例将配置文件中算法的帧率称为预设帧率,将实际调度过程中算法的帧率称为调度帧率。
需要说明的是,电子设备中算法的预设帧率可以是由工作人员在电子设备出厂前进行配置的。可理解的,工作人员若认为该算法比较重要(如用户对该算法实现的功能的要求较高或者对图像的显示效果影响较大),则会将该算法的预设帧率设置较高,反之,将该算法的预设帧率设置较低。
本申请实施例中,在多个算法权重一致时可以优先调度预设帧率较高的算法,该方法可以保证调度较重要的算法以保证视频流中图像的显示效果。
在本申请实施例中,可以由任意具备图像处理功能的电子设备执行本申请实施例提供的算法调度方法。该电子设备的形态可以包括但不限于手机终端、平板终端、笔记本电脑、桌面型计算机、膝上型计算机、或手持计算机等,本申请对此不做限定。
请参阅图1,以图1所示的电子设备100为例,详细说明本申请提供的电子设备的结构示意图。
电子设备100可以包括处理器110,外部存储器120,内部存储区121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,传感器模块170,按键180,摄像头190,以及显示屏191。其中传感器模块170可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图1所示中更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图1所示的部件可以以硬件,软件或软件和硬件的组合实现。例如,电子设备100还可以包括音频模块(扬声器、受话器、麦克风、耳机接口等)、用户标识模块(subscriber identification module,SIM)卡接口、以及马达等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括中央处理器(Central Processing Unit,CPU),图形处理器(graphics processing unit,GPU),数字信号处理器(digital signal processor,DSP),应用处理器(application processor,AP),调制解调处理器,图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异不收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
示例性的,电子设备通过处理器和相关功能的硬件模块,配合执行本申请提供的算法调度方法,例如通过处理器和相机应用相关的硬件模块、有线传输模块(例如USB模块等)、无线传输模块(蓝牙、wifi、近场通信等)中的一项或多项相关的硬件模块,配合执行本申请提供的算法调度方法。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备输出声音信号,或通过显示屏191显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏191,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏191和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
电子设备100可以通过ISP,摄像头190,视频编解码器,GPU,显示屏191以及应用处理器等实现拍摄功能。
外部存储器120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储区121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储区121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储区121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储区121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
本申请实施例中的算法部署可以在CPU,也即是由CPU执行。
可选的,本申请实施例中的部分算法的运行还可以部署在数字信号处理器以及图形处理器的至少一项处理器上。
示例性的,电子设备100可以通过上述摄像头190获取视频流;进而,针对视频流中的图像,过上述处理器110对M个算法进行决策,得到每一个图像对应的N个算法;进而,电子设备100可以运行N个算法部署的处理器对图像进行处理;通过上述显示屏191显示处理后的图像。其中,详细的决策方法可以参照下文方法实施例的相关内容,在此不再详述。
图2是本申请实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将系统分为四层,从上至下分别为应用层,应用框架层,运行时(Runtime)和系统库,硬件抽象层(hardware abstract layer,HAL),以及内核层。
应用层可以包括一系列应用程序包。
如图2所示,应用层中的应用程序包可以包括但不限于相机,图库等应用程序。该应用层中还可以包括通话、音乐、视频、短信等应用,本申请实施例对此不做限定。
应用框架层为应用层的应用程序提供应用编程接口(application programminginterface,API)和编程框架。应用框架层包括一些预先定义的函数。
如图2所示,应用框架层包括但不限于窗口管理器,内容提供器,通知管理器,电池管理。该应用框架层还可以包括电话管理器、资源管理器等,本申请实施例对此不做限定。
窗口管理器用于管理窗口程序。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。视图系统包括可视控件,例如显示文字的控件,显示图像的控件等。视图系统可用于构建应用程序。电话管理器用于提供电子设备100的通信功能。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图像,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。
运行时(Runtime)包括核心库和虚拟机。Runtime负责系统的调度和管理。
核心库包含两部分:一部分是编程语言(例如,jave语言)需要调用的功能函数,另一部分是系统的核心库。
应用层和应用框架层可以运行在虚拟机中。虚拟机可以将应用层和应用框架层的编程文件(例如,jave文件)执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库包括但不限于多个功能模块。例如:表面管理器(surface manager),二维图形引擎(例如:SGL,媒体库(Media Libraries)等。该系统库还可以包括三维图形处理库(例如:OpenGL ES))等,本申请实施例对此不做限定。
硬件抽象层可以包括但不限于算法调度引擎、硬件合成器。
其中,算法调度引擎用于获取算法的配置信息(如预设帧率等)以及调度算法对图像进行处理。算法调度引擎可以包括多个引擎,不同的引擎可以用于对不同的算法进行调度。示例性的,算法调度引擎可以包括感知类算法引擎(semantic enginealgorithm),感知类算法引擎用于获取感知类算法的配置信息(如预设帧率等)以及调度感知类算法对图像进行处理。
在一些可能的实现方式中,该硬件抽象层还可以包括图2未示出的图形模块、蓝牙库模块、摄像头模块等,本申请实施例对此不做限定。
在本申请实施例中,硬件抽象层还可以包括算法调度模块,该算法调度模块用于执行本申请提供的算法调度方法。示例性的,由应用层的相机应用、以及该算法调度模块配合执行本申请提供的算法调度方法。
在另外一些可能的实现方式中,该算法调度模块也可以位于该软件构架的其他层级中,此处不作限定。
内核层是硬件和软件之间的层。内核层包含但不限于显示驱动,摄像头驱动,传感器驱动,设备驱动等。该内核层还可以音频驱动,虚拟卡驱动等,本申请实施例对此不做限定。
示例性的,电子设备可以基于应用层中的相机应用和内核层中的摄像头驱动以拍照方式获取视频流,基于硬件抽象层中的算法调度模块确定处理视频流中的目标图像需要调度的算法。
示例性的,电子设备还可以基于应用层中的无线应用模块或有线应用模块(例如wifi应用、蓝牙应用、近场通信应用等)以数据传输方式获取视频流,然后基于硬件抽象层中的算法调度模块确定处理视频流中的目标图像需要调度的算法。
一般地,相机应用启用后,在拍照模式(拍照预览模式)、录像模式(录像预览模式,预览是指在拍照过程或录像过程中全程向用户显示图像画面)、以及在录像过程中,都会调用一些感知类算法对抓取到的图像进行处理,以完成相应的功能(例如物体追踪功能等),关于调用的感知类算法的数量具体由开发人员根据相应的设计和需求设定。
关于不同的模式下(例如人像模式、夜间模式等)调用的感知类算法的个数可以相同也可以不同,本申请实施例对此不做限定。
下面结合捕获拍照场景,示例性说明电子设备100软件以及硬件的工作流程。
当触摸传感器180K接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。以该触摸操作是触摸单击操作,该单击操作所对应的控件为相机应用图标的控件为例,相机应用调用应用框架层的接口,启动相机应用,进而通过调用内核层启动摄像头驱动,通过摄像头193捕获静态图像或视频。
基于图1和图2所示的电子设备,先介绍一种基于算法的预设帧率确定算法调度的方法。
请参见图3,图3示例性示出了一次算法调度过程的数据流向。应理解,电子设备针对视频流中的每一帧图像进行一次算法调度,以当前帧为例进行说明。
如图3所示,电子设备的算法调度模块可以通过算法调度引擎(如感知类算法引擎)获取M个算法中各个算法的预设帧率(FPS),M为大于1的整数;进而,基于各个算法的预设帧率进行决策(决策过程可以参见图4),得到当前帧的决策结果(Decision),其中,决策结果包括当前帧的调度算法(决策结果还可以包括图4中S403至S411中涉及的任一数据);基于当前帧的决策结果,输出当前帧的智能调度策略(Smart schedule),其中,智能调度策略可以包括M个算法中每一个算法的决策结果。例如,算法的决策结果可以为调度或不调度,算法的决策结果为调度用于指示电子设备调度该算法处理当前帧,算法的决策结果为调度用于指示电子设备处理当前帧不调度该算法。本申请实施例中,为方便描述,将决策为被调度用于处理图像的算法称为该图像的调度算法。示例性的,Smart schedule可以如表2所示,表2示例性示出了第一视频流中10帧图像的调度算法,表2中调度算法用打勾状态进行表示,如第0帧的调度算法为A2、A3、B3和D2。
图4示例性示出了该算法调度方法的流程。以第一视频流为例,该方法可以包括以下步骤:
S401:电子设备在获取到第一视频流的第一图像时,将第一图像作为当前帧。
可选的,该第一视频流可以是电子设备通过摄像头拍摄的,也可以是电子设备基于一些数据传输方式获取到的,例如可以是通过有线传输方式(通用串行总线接口USB等)或无线传输方式(无线保真WIFI、蓝牙、近场通信等)获取到的,本申请实施例对此不做限定。
其中,第一图像为第一视频流中进行算法处理的第一帧图像。需要说明的是,第一图像可以不是第一视频流中的第一帧图像。
S402:将M个算法中各个算法权重均初始化为相机预览帧率,以及,将各个算法的预设帧率分别确定为各个算法的步长。
其中,M为大于1的整数。
其中,算法的权重用于指示算法被调度的期望程度。本申请实施例中,算法的权重越大,算法被调度的期望程度越大,反之相反。
S403:判断M个算法中每个算法的权重是否不小于相机预览帧率。
S404:对M个算法中权重不小于相机预览帧率的算法(简称为多个第一算法)按照权重从大到小进行排序。
S405:对M个算法中权重小于相机预览帧率的算法的权重基于该算法的步长进行更新。
在一种实现中,电子设备可以将该算法的权重与该算法的步长相加,得到第一权重;将算法的权重更新为该第一权重。
在一些实施例中,算法的权重小于相机预览帧率时,电子设备确定本次对当前帧处理时不调度该算法。可理解的,由于本次不调度该算法,电子设备可以通过将该算法的权重增大(即加上该算法的步长),从而提高下次调度时该算法被调度的期望程度,即可以增加该算法下次被调度的可能性,避免该算法长时间不被调度,可以保证该算法的调度帧率接近该算法的预设帧率,从而保证图像的显示效果。
S406:将多个第一算法中权重相同的算法按照预设帧率从大到小进行排序。
需要说明的是,当第一图像为当前帧时,M个算法中的每个算法的权重均等于相机预览帧率,则对M个算法按照预设帧率从大到小进行排序。
S407:获取多个第一算法中的前K个算法。
其中,K为正整数。
S408:判断多个第一算法中每个算法是否属于前K个算法。
S409:将多个第一算法中属于前K个算法的算法的权重重置为相机预览帧率。
S410:将多个第一算法中不属于前K个算法的权重基于该算法对应的步长进行更新。
在一种实现中,电子设备可以将该算法的权重与该算法的步长相加,得到第一权重;将算法的权重更新为该第一权重。
在一些实施例中,算法的权重小于相机预览帧率时,电子设备确定本次对当前帧处理时不调度该算法。可理解的,由于本次不调度该算法,电子设备可以通过将该算法的权重增大(即加上该算法的步长),从而提高下次调度时该算法被调度的期望程度,即可以增加该算法下次被调度的可能性,避免该算法长时间不被调度,可以保证该算法的调度帧率接近该算法的预设帧率,从而保证图像的显示效果。
S411:将第一集合的算法确定为被调度于处理当前帧的算法。
S412:等待第一视频流的下一帧图像,将下一帧图像作为当前帧,进而,执行上述步骤S403至S411的部分或全部步骤。
图4所示的实施例中,基于各个算法的预设帧率确定各个算法的权重,从而基于算法的权重确定第一视频流中每一帧图像的调度算法。其中,K小于M,也就是说,每一帧图像的调度算法的个数为预设个数,即K个,该方法可以避免过多个算法被调度作用于一帧图像导致处理器的负载过高,也可以保证图像的显示效果。该方法可以避免当有多个算法部署在同一个计算单元时出现资源的竞争导致算法时间拉长带来的预览丢帧、卡顿等问题。
但是,由于各个算法对不同处理器的性能影响是不同,上述方法中K为定值,K个不同的算法对处理器的负载影响是不同,那么在一些情况下可能会出现K个算法导致某一处理器的负载过大的情况,从而导致该处理器对该帧图像的处理效率低,出现图像显示慢的问题。
有鉴于此,本申请实施例提供了一种算法调度方法。该方法中,电子设备可以获取视频流,视频流包含至少两个图像;目标图像为至少两个图像中的一个图像;电子设备针对目标图像,基于M个算法中每一个算法的第一耗时,从M个算法中确定N个算法;其中,M为大于1的整数,N小于M;M个算法中每一个算法的第一耗时是基于中央处理器执行每一个算法的历史耗时得到的;N个算法的第一耗时之和不大于第一时长,N个算法被调度用于处理目标图像。
该方法通过选择第一耗时之和不大于第一时长的N个算法作为处理目标图像的算法,使得中央处理器处理目标图像的耗时不会超过第一时长,从而避免多个算法被调度作用于一帧图像导致中央处理器的负载过高的情况,可以提高中央处理器对视频流中的图像的处理效率,提高图像的显示速度,从而提高用户体验。
下面通过图5,介绍本申请实施例提供的一种算法调度方法,该方法包括以下部分或全部步骤:
S501:电子设备获取第一视频流,第一视频流包含至少两个图像;目标图像为至少两个图像中的一个图像。
在本申请实施例中,第一视频流包含至少两个图像帧。
可选的,该第一视频流可以是电子设备通过摄像头获取的,也可以是电子设备通过数据传输方式从其他设备获取到的,例如可以是通过有线传输方式(通用串行总线接口USB等)或无线传输方式(无线保真WIFI、蓝牙、近场通信等)获取到的,本申请实施例对此不做限定。
示例性的,电子设备启动相机应用后,开始抓取图像,上述第一视频流为相机应用启动后抓取到的图像的集合。该第一视频流的长度(也可以理解为图像的总数)可以是固定的也可以是变化的,本申请实施例对此不做限定。例如,在拍照预览画面下,该第一视频流的长度可以随着相机应用根据时间变化抓取到的图像的数量的变化而变化,或者,该第一视频流的长度也可以是固定的,例如,该第一视频流为相机应用录制视频的默认时长。
另外,需要说明的是,该第一视频流的第一帧(起始图像)是相机应用启动后获取到的第i帧图像,该i大于或等于1,或者该i大于或等于2,本申请实施例对此不做限定,也就是说,该第一视频流的第一帧并不一定为相机应用启动后抓取到的第一帧图像。
在本申请实施例中,电子设备获取第一视频流的目标图像,与电子设备针对目标图像从M个算法中确定N个算法,这两个任务可以并行执行也可以先后执行,本申请实施例对此不做限定。
S502:电子设备针对目标图像,基于M个算法中每一个算法的第一耗时,从M个算法中确定N个算法;其中,N个算法的第一耗时之和不大于第一时长,N个算法被调度用于处理目标图像。
其中,M为大于1的整数,N小于M;M个算法中每一个算法的第一耗时是基于中央处理器执行每一个算法的历史耗时得到的。
在一种实现中,电子设备的算法调度模块在接收到针对目标图像的算法调度请求时,获取各个处理器最近一次或多次执行M个算法的历史耗时,该算法调度请求用于请求处理目标图像的算法;基于上述历史耗时,预测当前M个算法中每一个算法的第一耗时;进而,基于M个算法中每一个算法的第一耗时,从M个算法中确定上述N个算法;进而,电子设备可以调度上述N个算法对目标图像进行处理,显示处理后的目标图像。本申请实施例中,为方便描述,将确定被调度用于处理图像的算法称为该图像的调度算法,例如针对目标图像确定的N个算法可以称为目标图像的调度算法。
在一些实施例中,电子设备可以针对第一视频流中的每一帧图像,预测每一帧图像对应的M个算法中每一个算法的第一耗时。也就是说,针对每一帧图像,预测得到的M个算法中每一个算法的第一耗时可以是不同的。
以N个算法中包括第一算法为例,示例性介绍一种预测第一耗时的方法。首先,电子设备可以获取中央处理器最近L1次执行第一算法的耗时,得到第一算法的L1个历史耗时;L1为大于1的整数;电子设备将第一算法的L1个历史耗时的均值确定为第一算法的第一耗时。例如L1可以为30。
可选地,第一时长可以是根据中央处理器的负载情况动态调整的。也就是说,第一视频流中的每一帧图像对应的第一时长可以是不同。例如,中央处理器的占用率高于第一阈值时第一时长为第一数值,中央处理器的占用率不高于第一阈值时第一时长为第二数值,第一数值小于第二数值。
在本申请的另一些实施例中,上述N个算法可以包括Q个部署在数字信号处理器上的算法(简称第二算法),也就是说,第二算法被调度时还由数字信号处理器执行;Q为正整数;Q个第二算法的第二耗时之和不大于第二时长;Q个第二算法中每一个第二算法的第二耗时是基于数字信号处理器执行每一个第二算法的历史耗时得到的。
以N个算法中包括第二算法为例,示例性介绍一种预测第二耗时的方法。首先,电子设备可以获取数字信号处理器最近L2次执行第二算法的耗时,得到第二算法的L2个历史耗时;L2为大于1的整数;电子设备将第二算法的L2个历史耗时的均值确定为第二算法的第二耗时。
可选地,第二时长可以是根据数字信号处理器的负载情况动态调整的。也就是说,第一视频流中的每一帧图像对应的第二时长可以是不同。例如,数字信号处理器的占用率高于第二阈值时第二时长为第三数值,数字信号处理器的占用率不高于第二阈值时第二时长为第四数值,第三数值小于第四数值。
在本申请的另一些实施例中,上述N个算法可以包括W个部署在图像处理器上的算法(简称第三算法),也就是说,第三算法被调度时还由图像处理器执行;W为正整数;W个第三算法的第三耗时之和不大于第三时长;W个第三算法中每一个第三算法的第三耗时是基于图像处理器执行每一个第三算法的历史耗时得到的。
以N个算法中包括第三算法为例,示例性介绍一种预测第三耗时的方法。首先,电子设备可以获取图像处理器最近L3次执行第三算法的耗时,得到第三算法的L3个历史耗时;L3为大于1的整数;电子设备将第三算法的L3个历史耗时的均值确定为第三算法的第三耗时。
可选地,上述L1、L2、L3的数值可以相同,也可以不同,具体数值可以基于各个处理器的占用率等情况确定,本申请实施例对此不作限定。
可选地,第三时长可以是根据图像处理器的负载情况动态调整的。也就是说,第一视频流中的每一帧图像对应的第三时长可以是不同。例如,图像处理器的占用率高于第三阈值时第三时长为第五数值,图像处理器的占用率不高于第三阈值时第三时长为第六数值,第五数值小于第六数值。
需要说明的是,上述第一时长、第二时长和第三时长可以相同,也可以不同,具体数值可以由图像的处理效率要求等确定,本申请实施例对此不作限定。
以下示例性的介绍一种从M个算法中确定N个算法的具体实现。
在一种实现中,电子设备可以先将M个算法进行排序,得到第一序列;第一序列中的算法是按照M个算法中每一个算法当前的权重从大到小进行排序的;在第一序列中前N个算法的第一耗时之和等于第一时长时,电子设备将前N个算法确定为N个算法;在第一序列中前j个算法的第一耗时之和不大于第一时长且前j+1个算法的第一耗时之和大于第一时长时,将排序在第j+1个算法之后的算法与前j个算法的第一耗时之和与第一时长进行比较,从排序在第j+1个算法之后的算法中确定至少一个算法,至少一个算法与前j个算法的第一耗时之和不大于第一时长;j为大于0且小于M的整数,N个算法包括前j个算法和至少一个算法。
可选的,上述第一序列中当前的权重相等的算法按照预设帧率从大到小进行排序的,第一序列中当前的权重和预设帧率均相等的算法是按照第一耗时从小到大进行排序的。关于排序的具体过程可以参见下文中的步骤S705、S707以及S708的具体内容;排序后的第一序列示例性的可以如表3至表5所示,需要说明的是,上述对于第一序列中第一算法位置前后的描述在表中体现为位置上下,即第一序列中第一个算法即为表中从上到下的第一个算法,第一序列中前N个算法即为表中从上到下的前N个算法。
可选的,第一序列中当前的权重相等的算法按照预设帧率从大到小进行排序的,第一序列中当前的权重和预设帧率均相等的算法是随机排列的。又或者,第一序列中当前的权重相等的算法是随机排列的,第一序列中当前的权重和预设帧率均相等的算法也是随机排列的。
可选的,M个算法中每一个算法当前的权重是由每一个算法的预设帧率、第一视频流的预览帧率和每一个算法的被调度次数确定;每一个算法的被调度次数为每一个算法在处理第一视频流中的目标图像之前的图像的被调度次数;每一个算法当前的权重用于指示每一个算法当前被调度的期望程度,每一个算法的权重与每一个算法被调度的期望程度为正比关系。关于算法当前的权重的具体计算可以参见图4和图7以及下述表2至表5的相关内容,此处不再赘述。
其中,上述第一视频流的预览帧率可以为相机预览帧率,也可以为其他数值,本申请实施例对此不作限定。例如,在预览场景时,上述第一视频流的预览帧率可以为相机预览帧率。其中,预览场景可以是指电子设备启动相机应用,通过相机应用显示拍摄的视频流,如相机应用启动后显示的预览界面显示摄像头获取的视频的播放帧率可以为上述相机预览帧率,预览界面显示的图像可以为通过本申请提供的算法调度方法确定的该图像的调度算法进行处理得到的。
本申请实施例可以应用于预览场景或其他需要视频处理的场景,该场景涉及调度多个算法对图像进行处理,均可以执行本申请实施例提供的算法调度方法对多个算法进行调度,如将多个算法排序后,从排序的算法中选择若干个算法为该图像的调度算法。
基于图1和图2所示的电子设备,通过图6和图7示例性的对图5所示的算法调度方法进行详细的介绍。
请参见图6,图6示例性示出了一次算法调度过程的数据流向。应理解,电子设备针对视频流中的每一帧图像进行一次算法调度,以当前帧为例进行说明。
如图6所示,电子设备的算法调度模块可以通过算法调度引擎(如感知类算法引擎)获取M个算法中各个算法的预设帧率(FPS)和各个算法针对CPU、DSP和GPU中至少一个的性能(Performance),M为大于1的整数;进而,基于各个算法的预设帧率和各个算法针对CPU、DSP和GPU中至少一个的性能进行决策(决策过程可以参见图7),得到当前帧的决策结果(Decision),其中,决策结果包括当前帧对应的N个调度算法(决策结果还可以包括图7中S703至S713中涉及的任一数据);基于当前帧的决策结果,输出当前帧的智能调度策略(Smart schedule),其中,智能调度策略可以包括M个算法中每一个算法的决策结果。例如,算法的决策结果可以为调度或不调度,算法的决策结果为调度用于指示电子设备调度该算法处理当前帧,算法的决策结果为调度用于指示电子设备处理当前帧不调度该算法。进而,电子设备的算法调度模块在得到上述智能调度策略后,电子设备可以通过上述算法调度引擎调度当前帧的调度算法对当前帧图像进行处理。
图7示例性示出了该算法调度方法的流程。以第一视频流为例,该方法可以包括以下步骤:
S701:电子设备在获取到第一视频流的第一图像时,将第一图像作为当前帧。
例如,电子设备在启动相机应用后,相机应用可以调用摄像头拍摄图像;电子设备在拍摄到第一帧需要调度算法处理的图像(即第一图像)时,将该图像作为当前帧。
在一种实现中,电子设备的算法调度模块在接收到针对第一图像的算法调度请求时,将第一图像确定为当前帧。
S702:电子设备将M个算法中各个算法权重均初始化为相机预览帧率;将各个算法的预设帧率分别确定为各个算法的步长;初始化计算单元的性能要求。
在一种实现中,电子设备在第一图像确定为当前帧后,将M个算法中各个算法权重均初始化为相机预览帧率;将各个算法的预设帧率分别确定为各个算法的步长;初始化计算单元的性能要求。
其中,算法的步长为该算法的权重每次更新时增加或减小的数值。示例性的,算法的步长取值可以为该算法的预设帧率。示例性的,电子设备可以从存储的出厂配置文件中获取每一个算法的预设帧率。
其中,计算单元包括CPU,即上述计算单元的性能要求包括CPU性能要求。
可选地,上述计算单元还可以包括DSP和GPU中的至少一个,即上述计算单元的性能要求还可以包括DSP性能要求和GPU性能要求。
例如,若M个算法均只部署在CPU上,则上述计算单元的性能要求可以仅包括CPU性能要求;若M个算法中包括部署在CPU和GPU的算法(即该算法时需要由CPU和GPU执行),则上述计算单元的性能要求可以包括CPU性能要求和GPU性能要求;若M个算法中包括部署在CPU和DSP的算法(即该算法时需要由CPU和DSP执行),则上述计算单元的性能要求可以包括CPU性能要求和DSP性能要求;若M个算法中包括部署在CPU和DSP的算法和部署在CPU和GPU的算法,或者,M个算法中包括部署在CPU、DSP和GPU的算法,则上述计算单元的性能要求可以包括CPU性能要求、DSP性能要求和GPU性能要求。
示例性的,M个算法可以包括感知类算法。
示例性的,该相机预览帧率为30fps。可理解的,该相机预览帧率不限于该30fps,也可以根据具体场景或需求为其他合适的值,例如还可以是24fps、60fps等,本申请对此不做限定。
S703:电子设备预测M个算法中各个算法的算法性能,算法性能包括CPU性能。
其中,算法的算法性能包括算法部署的至少一个处理器(也称为计算单元)对应的性能。由于M个算法均部署在CPU上,即,M个算法中每一个算法的算法性能均包括CPU性能。
可选地,算法的算法性能还可以包括DSP性能和GPU性能。本申请实施例中,也可以将CPU性能称为CPU耗时,也可以将DSP性能称为DSP耗时,也可以将GPU性能称为GPU耗时。例如,M个算法中可以包括同时部署在CPU和DSP的算法,该算法的算法性能包括CPU性能和DSP性能。又例如,M个算法中可以包括同时部署在CPU和GPU的算法,该算法的算法性能包括CPU性能和GPU性能。
在一种实现中,电子设备可以将预测到的CPU执行该算法的预测耗时(即上述第一耗时)作为该算法的CPU性能。例如,电子设备可以获取中央处理器最近30次执行M个算法中各个算法时的历史耗时,将各个算法的30个历史耗时的均值确定为各个算法的CPU性能。
在一种实现中,电子设备可以将预测到的DSP执行该算法的预测耗时(即上述第二耗时)作为该算法的DSP性能。
在一种实现中,电子设备可以将预测到的GPU执行该算法的预测耗时(即上述第三耗时)作为该算法的GPU性能。
以下通过表1示例性的介绍各个算法的算法性能以及计算单元的性能要求。
表1
计算单元/算法 | A | B | C |
CPU | a1 | b1 | c1 |
GPU | a2 | b2 | c2 |
DSP | a3 | b3 | c3 |
表1示例性示出了M个算法为3个算法,分别为算法A、算法B和算法C;算法A的CPU性能为a1,算法A的GPU性能为a2,算法A的DSP性能为a3;算法B的CPU性能为b1,算法B的GPU性能为b2,算法B的DSP性能为b3;算法C的CPU性能为c1,算法C的GPU性能为c2,算法C的DSP性能为c3。其中,若该算法未部署在某算法单位,可以认为该性能为0,例如算法A未部署在DSP,可以认为算法A的DSP性能a3为0。
上述算法单位的性能要求可以为:(1)a1+b1+c1≤Climit;(2)a2+b2+c2≤Glimit;(3)a3+b3+c3≤Dlimit;其中,Climit为CPU限制的最大耗时(即上述第一时长);Glimit为GPU限制的最大耗时(即上述第二时长);Dlimit为DSP限制的最大耗时(即上述第三时长)。
其中,a1+b1+c1为示例性示出的M个算法的第一耗时之和,a2+b2+c2为示例性示出的M个算法的第二耗时之和,a3+b3+c3为示例性示出的M个算法的第三耗时之和。
可选的,上述计算单元的性能要求是可以更改的,例如在处理一个视频流中的不同图像时,针对每一帧图像的计算单元的性能要求可以是不同的,也可以是相同。
示例性,电子设备可以在获取针对每一个图像的算法调度请求时,更新上述计算单元的性能要求;也可以周期性的更新上述计算单元的性能要求,本申请实施例对此不作限定。
其中,电子设备可以基于计算单元的负载情况,更新上述计算单元的性能要求。例如高负载场景,电子设备可以将计算单元的性能限制到更低,在轻载场景可以将性能限制条件放宽。例如,电子设备可以基于CPU的负载情况,更新上述Climit、Glimit和Dlimit中的至少一个;也可以基于CPU的负载情况更新上述Climit,基于GPU的负载情况更新上述Glimit,基于Dlimit的负载情况更新上述Dlimit。
S704:电子设备判断M个算法中每个算法的权重是否不小于相机预览帧率。
在一种实现中,在第一图像为当前帧时,M个算法中每个算法的权重均为初始权重,即相机预览帧率,则M个算法中每个算法的权重均等于相机预览帧率。
S705:电子设备对M个算法中权重不小于相机预览帧率的算法(简称为多个第一算法)按照权重从大到小进行排序。
在一种实现中,在第一图像为当前帧时,M个算法中每个算法的权重均为初始权重,即相机预览帧率,上述多个第一算法即为上述M个算法。
S706:电子设备对M个算法中权重小于相机预览帧率的算法的权重基于该算法的步长进行更新。
在一种实现中,电子设备可以将M个算法中权重小于相机预览帧率的算法的权重与该算法的步长相加,得到第一权重;将算法的权重更新为该第一权重。
在一些实施例中,算法的权重小于相机预览帧率时,电子设备可以确定本次对当前帧处理时不调度该算法。可理解的,由于本次不调度该算法,电子设备可以通过将该算法的权重增大(即加上该算法的步长),从而提高下次调度时该算法被调度的期望程度,即可以增加该算法下次被调度的可能性,避免该算法长时间不被调度,可以保证该算法的调度帧率接近该算法的预设帧率,从而保证图像的显示效果。
S707:电子设备将多个第一算法中权重相同的算法按照预设帧率从大到小进行排序。
可理解的,算法的预设帧率越高,代表该算法期望被调度用于处理图像帧的次数更大,从而在权重相等的情况下,优先选择预设帧率更高的,可以改善算法被限制调度带来的降帧问题,更大化地使预设帧率高的算法的实际调度帧率接近其预设帧率,进一步地兼顾图像效果。
示例性的,可以参见下文中的表3,表3示例性示出了针对第一图像时电子设备对M个算法进行排序的排序结果。如表3所示,排序在前的算法的预设帧率较大,排序在后的算法的预设帧率较小,从前到后(也可以称为从上到下)各个算法的预设帧率逐渐降低。
S708:电子设备将多个第一算法中权重和预设帧率均相等的算法按照CPU性能从小到大进行排序。
本申请实施例中,CPU性能也可以称为CPU耗时。
示例性的,可以参见下文中的表3,表3中权重和预设帧率均相等的算法按照CPU性能(即CPU耗时)从小到大进行排序。如表3所示的前5个算法的预设帧率均为30,排序在前的算法的CPU耗时较小,排序在后的算法的CPU耗时较大,从前到后(也可以称为从上到下)各个算法的耗时逐渐增大。
S709:电子设备按照排序,选择符合计算单元的性能要求的算法,得到第一集合。
在一些实施例中,电子设备将排序第一个算法确定为符合计算单位的性能要求的算法;进而,依次对排序在第一个算法后的算法进行判断。本申请实施例中,第一集合也可以称为算法集α。
例如,对一个算法进行判断过程可以是:将该算法与当前第一集合中的算法的CPU耗时相加,若相加后的CPU耗时小于等于第一时长,则将该算法加入第一集合;若相加后的CPU耗时大于第一时长,则确定该算法不符合计算单元的性能要求。进而,对该算法的下一个算法进行判断,直至所有算法判断完毕或者相加后的CPU耗时等于第一时长。
又例如,对一个算法进行判断过程可以是:将该算法与当前第一集合中的算法的CPU耗时相加,将该算法与当前第一集合中的算法的DSP耗时相加;若相加后的CPU耗时小于等于第一时长且相加后的DSP耗时小于等于第二时长,则将该算法加入第一集合;若相加后的CPU耗时大于第一时长和/或相加后的DSP耗时大于第二时长,则确定该算法不符合计算单元的性能要求。进而,对该算法的下一个算法进行判断,直至满足以下条件中的任一个:所有算法判断完毕、相加后的CPU耗时等于第一时长、相加后的DSP耗时等于第二时长。
又例如,对一个算法进行判断过程可以是:将该算法与当前第一集合中的算法的CPU耗时相加,将该算法与当前第一集合中的算法的GPU耗时相加,若相加后的CPU耗时小于等于第一时长且相加后的GPU耗时小于等于第三时长,则将该算法加入第一集合;若相加后的CPU耗时大于第一时长和/或相加后的GPU耗时大于第三时长,则确定该算法不符合计算单元的性能要求。进而,对该算法的下一个算法进行判断,直至满足以下条件中的任一个:所有算法判断完毕、相加后的CPU耗时等于第一时长、相加后的GPU耗时等于第三时长。
又例如,对一个算法进行判断过程可以是:将该算法与当前第一集合中的算法的CPU耗时相加,将该算法与当前第一集合中的算法的GPU耗时相加,将该算法与当前第一集合中的算法的DSP耗时相加;若相加后的CPU耗时、相加后的GPU耗时和相加后的DSP耗时满足预设条件,其中,预设条件为相加后的CPU耗时小于等于第一时长、相加后的GPU耗时小于等于第三时长且相加后的DSP耗时小于等于第二时长,则将该算法加入第一集合;若相加后的CPU耗时、相加后的GPU耗时和相加后的DSP耗时中任一项不满足预设条件,则确定该算法不符合计算单元的性能要求。进而,对该算法的下一个算法进行判断,直至满足以下条件中的任一个:所有算法判断完毕、相加后的CPU耗时等于第一时长、相加后的GPU耗时等于第三时长、相加后的DSP耗时等于第二时长。
S710:电子设备判断多个第一算法中每个算法是否属于第一集合。
在一种实现中,电子设备基于多个第一算法中每一个算法是否属于第一集合,对每一个第一算法的权重进行更新。
S711:电子设备将多个第一算法中属于第一集合的算法的权重重置为相机预览帧率。
示例性的,在当前帧为第一图像时,第一集合中的算法的权重即为相机预览帧率,因此电子设备可以不更改第一集合中的算法的权重;在当前帧不为第一图像时,电子设备可以将多个第一算法中属于第一集合的算法的权重重置为相机预览帧率。
S712:电子设备将多个第一算法中不属于第一集合的算法基于该算法对应的步长进行更新。
在一种实现中,电子设备可以将该算法的权重与该算法的步长相加,得到第一权重;将算法的权重更新为该第一权重。
在一些实施例中,算法的权重小于相机预览帧率时,电子设备可以确定本次对当前帧处理时不调度该算法。可理解的,由于本次不调度该算法,电子设备可以通过将该算法的权重增大(即加上该算法的步长),从而提高下次调度时该算法被调度的期望程度,即可以增加该算法下次被调度的可能性,避免该算法长时间不被调度,可以保证该算法的调度帧率接近该算法的预设帧率,从而保证图像的显示效果。
S713:电子设备将第一集合的算法确定为被调度于处理当前帧的算法。
示例性的,电子设备可以基于第一集合,生成智能调度策略,该智能调度策略可以包括M个算法中每一个算法的标识,其中,M个算法中属于第一集合的算法的标识用于指示调度;M个算法中不属于第一集合的算法的标识用于指示不调度。
S714:电子设备等待第一视频流的下一帧图像,将下一帧图像作为当前帧,进而,执行上述步骤S703至S713的部分或全部步骤。
在一些实施例中,电子设备的算法调度模块在执行S714后,可以等待针对第一视频流的下一帧图像的算法调度请求;在接收到该算法调度请求时,将该帧图像作为当前帧,执行上述步骤S703至S713的部分或全部步骤。
本申请实施例中,电子设备的算法调度模块在接收到针对视频流当前帧的算法调度请求时,可以获取M个算法最近多次调度时对应的处理器的历史耗时;基于历史耗时,预测M个算法当前的算法性能;在对M个算法进行排序时,先按照各算法的权重进行排序;进而,根据排序后的顺序和M个算法当前的算法性能,筛选符合当前性能限制要求的算法,作为本次被调度的算法。该方法考虑了部署在不同计算单元上的多算法并行问题,从算法的预设帧率、计算单元部署及算法性能三维度考虑,对算法进行智能调度。
示例性的,以下通过表2至表4示例性介绍上述图5至图7所示的方法对应的一个具体实施例。
应理解,表2至表4示出的算法性能、算法部署以及硬件性能开销具体数据仅为了示例性说明本方案,非实际数据。以下预设帧率和权重的单位可以为fps,为方便描述,下文中未示出预设帧率和权重的单位。
本申请实施例中,示例性的将算法单位的性能要求设置为:视频流的每一帧图像的调度算法的CPU耗时之和、GPU耗时之和、DSP耗时之和均不大于10ms。即上文中的第一时长、第二时长和第三时长均设置为10ms。
表2
表2示例性示出了M个算法的部署位置、预设帧率和算法性能(表2从左到右的前6列);以及,通过本申请实施例确定的第一视频流中的10帧图像的算法决策结果和基于该算法决策结果执行时各个硬件的预测总耗时(表2从左到右的后10列)。
表2示例性示出了M个算法为表2中的10个算法,分别为A1、A2、A3、B1、B2、B3、C、D1、D2、D3。其中,A1至A3部署在CPU上,B1至B3部署在CPU和DSP上,D1至D3部署在GPU上,C部署在CPU&DSP&GPU上。
其中,预设帧率一列示例性示出了各算法的预设帧率,三个耗时列(CPU耗时、DSP耗时和GPU耗时)分别示例性示出了各算法调度一次在各个硬件上的性能开销(ms)。
其中,表2中序号0-9的列用于表示第一视频流中第0-9帧的调度情况,其中,打勾表示该帧调度该列的算法。例如,本申请实施例示例性示出了,通过本申请实施例的算法调度方法确定的第0帧的N个算法分别为A2、A3、B3和D2。其中,第0帧即为上述第一图像。
表2从上到下的最后三行用于标识第0-9帧对应的所有调度算法在各个硬件上的中性能开销,表2示例性示出了各硬件性能开销都限制在10ms以内。
以下通过表3至表5示例性的介绍上述算法调度方法。
表3示例性示出了电子设备通过本申请提供的算法调度方法,针对第0帧图像,对M个算法进行排序的排序结果。
表3
如表3所示,由于第0帧为上述第一图像,电子设备在对第一图像进行排序前,是将各个算法的权重初始化为相机预览帧率,表3示例性示出了相机预览帧率为30,第一图像时所有算法的权重是相等。
参见表3的第四列可见,表3的算法是按照预设帧率进行排序得到的。可以看到,D2、A3、A2、B3和C的预设帧率在所有算法中最大,均为30,因此D2、A3、A2、B3和C排在前面,其他算法按照帧率大小依次排列。
参见表3的第二列和第四列可见,表3中预设帧率相同的算法是按照CPU耗时进行排列的。
以下结合表3,介绍针对第0帧的算法排序结果确定第0帧的调度算法的过程。首先,电子设备在确定表3的前4个算法的D2、A3、A2和B3的CPU耗时等于10ms,且这四个算法的DSP耗时和GPU耗时均未超过10ms,则电子设备确定D2、A3、A2和B3为第0帧图像的调度算法。
表4
在一种实现中,电子设备在确定第0帧图像的调度算法为D2、A3、A2和B3后,可以将未调度的算法的权重分别加上该算法的步长(即该算法的预设帧率),调度算法的权重不变。例如C的步长为30,则更新后的C的权重为初始权重30加步长30为60。
可选地,电子设备还可以基于第0帧的执行情况,更新CPU耗时、DSP耗时和GPU耗时。即计算各个硬件对第0帧执行该调度算法的历史耗时和对第0帧前29帧执行该调度算法的历史耗时的均值,得到更新后的CPU耗时、DSP耗时和GPU耗时。
进而,电子设备基于更新后的权重、预设帧率和更新后的CPU耗时重新对所有算法进行排序,可以得到表4。
以下结合表4,介绍针对第1帧的算法排序结果确定第1帧的调度算法的过程。
首先,电子设备在确定表3的前3个算法C、D1和A1的CPU耗时之和不大于10ms(即5+1+2=8<10)且前4个算法C、D1、A1和B2的CPU耗时之和大于10ms(即5+1+2+6=14>10)时,电子设备从第5个算法开始向下遍历,直至发现A3与前3个算法的CPU耗时之和等于10ms且这四个算法的DSP耗时和GPU耗时均未超过10ms,则电子设备确定C、D1、A1和A3为第0帧图像的调度算法。
表5
在一种实现中,电子设备在确定第1帧图像的调度算法为C、D1、A1和A3后,可以将未调度的算法的权重分别加上该算法的步长(即该算法的预设帧率),调度算法的权重重置为初始权重(即相机预览帧率)。例如C在表4中的权重(针对第1帧时的权重)为60,由于确定C为第1帧的调度算法,则在表5中将C的权重由60重置为30。
可选地,电子设备还可以基于第1帧的执行情况,更新CPU耗时、DSP耗时和GPU耗时。即计算各个硬件对第1帧执行该调度算法的历史耗时和对第1帧前29帧(包括第0帧)执行该调度算法的历史耗时的均值,得到更新后的CPU耗时、DSP耗时和GPU耗时。
进而,电子设备基于更新后的权重、预设帧率和更新后的CPU耗时重新对所有算法进行排序,可以得到表5。
以下结合表5,介绍针对第2帧的算法排序结果确定第2帧的调度算法的过程。
首先,电子设备在确定表5的前3个算法D2、A2、B3的CPU耗时之和不大于10ms(即1+3+4=8<10)且前4个算法D2、A2、B3和B2的CPU耗时之和大于10ms(即1+3+4+6=14>10)时,电子设备从第5个算法开始向下遍历,直至发现A3与前3个算法的CPU耗时之和等于10ms且这四个算法的DSP耗时和GPU耗时均未超过10ms,则电子设备确定D2、A2、B3和A3为第1帧图像的调度算法。如表2所示,表2的序号为2的列中算法D2、A2、B3和A3为打勾状态。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (14)
1.一种算法调度方法,其特征在于,所述方法包括:
电子设备获取视频流,所述视频流包含至少两个图像;目标图像为所述至少两个图像中的一个图像;
所述电子设备针对所述目标图像,基于M个算法中每一个算法的第一耗时,从所述M个算法中确定N个算法;
其中,所述M为大于1的整数,所述N小于所述M;所述M个算法中每一个算法的第一耗时是基于所述电子设备的中央处理器执行所述每一个算法的历史耗时得到的;所述N个算法的第一耗时之和不大于第一时长,所述N个算法被调度用于处理所述目标图像。
2.如权利要求1所述的方法,其特征在于,所述N个算法包括第一算法;在所述从所述M个算法中确定N个算法之前,所述方法还包括:
所述电子设备获取所述中央处理器最近L次执行所述第一算法的耗时,得到所述第一算法的L个历史耗时;所述L为大于1的整数;
所述电子设备将所述第一算法的L个历史耗时的均值确定为所述第一算法的第一耗时。
3.如权利要求1或2所述的方法,其特征在于,所述中央处理器的占用率高于第一阈值时所述第一时长为第一数值,所述中央处理器的占用率不高于所述第一阈值时所述第一时长为第二数值,所述第一数值小于所述第二数值。
4.如权利要求1-3任一项所述的方法,其特征在于,所述N个算法包括Q个第二算法,所述Q为正整数;所述第二算法被调度时还由所述电子设备的数字信号处理器执行;
所述Q个第二算法的第二耗时之和不大于第二时长;所述Q个第二算法中每一个第二算法的第二耗时是基于所述数字信号处理器执行所述每一个第二算法的历史耗时得到的。
5.如权利要求4所述的方法,其特征在于,所述数字信号处理器的占用率高于第二阈值时所述第二时长为第三数值,所述数字信号处理器的占用率不高于所述第二阈值时所述第二时长为第四数值,所述第三数值小于所述第四数值。
6.如权利要求1-5任一项所述的方法,其特征在于,所述N个算法包括W个第三算法,所述W为正整数;所述第三算法被调度时还由所述电子设备的图像处理器执行;
所述W个第三算法的第三耗时之和不大于第三时长;所述W个第三算法中每一个第三算法的第三耗时是基于所述图像处理器执行所述每一个第三算法的历史耗时得到的。
7.如权利要求6所述的方法,其特征在于,所述图像处理器的占用率高于第三阈值时所述第三时长为第五数值,所述图像处理器的占用率不高于所述第三阈值时所述第三时长为第六数值,所述第五数值小于所述第六数值。
8.如权利要求1-7任一项所述的方法,其特征在于,所述从所述M个算法中确定N个算法,包括:
所述电子设备将所述M个算法进行排序,得到第一序列;所述第一序列中的算法是按照所述M个算法中每一个算法当前的权重从大到小进行排序的;
在所述第一序列中前N个算法的第一耗时之和等于所述第一时长时,所述电子设备将所述前N个算法确定为所述N个算法;
在所述第一序列中前j个算法的第一耗时之和不大于所述第一时长且前j+1个算法的第一耗时之和大于所述第一时长时,将排序在所述第j+1个算法之后的算法与所述前j个算法的第一耗时之和与所述第一时长进行比较,从所述排序在所述第j+1个算法之后的算法中确定至少一个算法,所述至少一个算法与所述前j个算法的第一耗时之和不大于所述第一时长;所述j为大于0且小于所述M的整数,所述N个算法包括所述前j个算法和所述至少一个算法。
9.如权利要求8所述的方法,其特征在于,所述第一序列中当前的权重相等的算法按照预设帧率从大到小进行排序的,所述第一序列中当前的权重和预设帧率均相等的算法是按照第一耗时从小到大进行排序的。
10.如权利要求8或9所述的方法,其特征在于,所述M个算法中每一个算法当前的权重是由所述每一个算法的预设帧率、所述视频流的预览帧率和所述每一个算法的被调度次数确定;所述每一个算法的被调度次数为所述每一个算法在处理所述视频流中的所述目标图像之前的图像的被调度次数;
所述每一个算法当前的权重用于指示所述每一个算法当前被调度的期望程度,所述每一个算法的权重与所述每一个算法被调度的期望程度为正比关系。
11.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器和存储器;
所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行如权利要求1-10任一项所述的方法。
12.一种芯片系统,其特征在于,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行如权利要求1-11中任一项所述的方法。
13.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
14.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310953194.6A CN117687772A (zh) | 2023-07-31 | 2023-07-31 | 一种算法调度方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310953194.6A CN117687772A (zh) | 2023-07-31 | 2023-07-31 | 一种算法调度方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117687772A true CN117687772A (zh) | 2024-03-12 |
Family
ID=90134041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310953194.6A Pending CN117687772A (zh) | 2023-07-31 | 2023-07-31 | 一种算法调度方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687772A (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107886467A (zh) * | 2017-12-22 | 2018-04-06 | 飞依诺科技(苏州)有限公司 | 一种并行图像处理方法及系统 |
CN108874548A (zh) * | 2018-07-11 | 2018-11-23 | 深圳市东微智能科技股份有限公司 | 数据处理调度方法、装置、计算机设备和数据处理系统 |
CN109416928A (zh) * | 2016-06-07 | 2019-03-01 | 伊路米纳有限公司 | 用于进行二级和/或三级处理的生物信息学系统、设备和方法 |
CN110118554A (zh) * | 2019-05-16 | 2019-08-13 | 深圳前海达闼云端智能科技有限公司 | 基于视觉惯性的slam方法、装置、存储介质和设备 |
CN111008305A (zh) * | 2019-11-29 | 2020-04-14 | 百度在线网络技术(北京)有限公司 | 一种视觉搜索方法、装置以及电子设备 |
CN112052713A (zh) * | 2020-04-15 | 2020-12-08 | 上海摩象网络科技有限公司 | 一种视频处理方法、设备及手持相机 |
CN113553175A (zh) * | 2021-07-08 | 2021-10-26 | 浙江工业大学 | 面向交通数据流的最优排序算法选择方法 |
US20210343054A1 (en) * | 2018-06-29 | 2021-11-04 | Shanghai United Imaging Healthcare Co., Ltd. | Systems and methods for image reconstruction |
CN114615519A (zh) * | 2022-01-27 | 2022-06-10 | 百果园技术(新加坡)有限公司 | 视频处理方法、装置、设备和存储介质 |
WO2022252924A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 图像传输与显示方法、相关设备及系统 |
US11551803B1 (en) * | 2019-04-22 | 2023-01-10 | Aimcast Ip, Llc | System, method, and program product for generating and providing simulated user absorption information |
CN115660937A (zh) * | 2022-10-12 | 2023-01-31 | Oppo广东移动通信有限公司 | 图像处理方法、图像处理装置、电子设备和存储介质 |
CN116320727A (zh) * | 2023-02-25 | 2023-06-23 | 荣耀终端有限公司 | 一种算法调度方法及电子设备 |
CN116302774A (zh) * | 2021-12-10 | 2023-06-23 | 深圳顺丰泰森控股(集团)有限公司 | 调度任务监控方法、装置、电子设备及可读存储介质 |
CN116347217A (zh) * | 2022-12-26 | 2023-06-27 | 荣耀终端有限公司 | 图像处理方法、设备及存储介质 |
-
2023
- 2023-07-31 CN CN202310953194.6A patent/CN117687772A/zh active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416928A (zh) * | 2016-06-07 | 2019-03-01 | 伊路米纳有限公司 | 用于进行二级和/或三级处理的生物信息学系统、设备和方法 |
CN107886467A (zh) * | 2017-12-22 | 2018-04-06 | 飞依诺科技(苏州)有限公司 | 一种并行图像处理方法及系统 |
US20210343054A1 (en) * | 2018-06-29 | 2021-11-04 | Shanghai United Imaging Healthcare Co., Ltd. | Systems and methods for image reconstruction |
CN108874548A (zh) * | 2018-07-11 | 2018-11-23 | 深圳市东微智能科技股份有限公司 | 数据处理调度方法、装置、计算机设备和数据处理系统 |
US11551803B1 (en) * | 2019-04-22 | 2023-01-10 | Aimcast Ip, Llc | System, method, and program product for generating and providing simulated user absorption information |
CN110118554A (zh) * | 2019-05-16 | 2019-08-13 | 深圳前海达闼云端智能科技有限公司 | 基于视觉惯性的slam方法、装置、存储介质和设备 |
CN111008305A (zh) * | 2019-11-29 | 2020-04-14 | 百度在线网络技术(北京)有限公司 | 一种视觉搜索方法、装置以及电子设备 |
CN112052713A (zh) * | 2020-04-15 | 2020-12-08 | 上海摩象网络科技有限公司 | 一种视频处理方法、设备及手持相机 |
WO2022252924A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 图像传输与显示方法、相关设备及系统 |
CN113553175A (zh) * | 2021-07-08 | 2021-10-26 | 浙江工业大学 | 面向交通数据流的最优排序算法选择方法 |
CN116302774A (zh) * | 2021-12-10 | 2023-06-23 | 深圳顺丰泰森控股(集团)有限公司 | 调度任务监控方法、装置、电子设备及可读存储介质 |
CN114615519A (zh) * | 2022-01-27 | 2022-06-10 | 百果园技术(新加坡)有限公司 | 视频处理方法、装置、设备和存储介质 |
CN115660937A (zh) * | 2022-10-12 | 2023-01-31 | Oppo广东移动通信有限公司 | 图像处理方法、图像处理装置、电子设备和存储介质 |
CN116347217A (zh) * | 2022-12-26 | 2023-06-27 | 荣耀终端有限公司 | 图像处理方法、设备及存储介质 |
CN116320727A (zh) * | 2023-02-25 | 2023-06-23 | 荣耀终端有限公司 | 一种算法调度方法及电子设备 |
Non-Patent Citations (1)
Title |
---|
刘端阳;郑江帆;刘志;: "基于CUDA的KNN算法并行化研究", 小型微型计算机系统, no. 06, 14 June 2019 (2019-06-14) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112527476B (zh) | 资源调度方法及电子设备 | |
CN112532892A (zh) | 图像处理方法及电子装置 | |
WO2020042112A1 (zh) | 一种终端对ai任务支持能力的评测方法及终端 | |
CN113115460B (zh) | 时隙选择方法及相关设备 | |
CN114466449B (zh) | 一种位置特征获取方法及终端设备 | |
JP6862564B2 (ja) | 画像合成のための方法、装置および不揮発性コンピュータ可読媒体 | |
CN116320727B (zh) | 一种算法调度方法及电子设备 | |
CN112231077B (zh) | 应用的调度方法及电子设备 | |
CN111480158A (zh) | 文件管理方法及电子设备 | |
CN114968540A (zh) | 一种核间迁移的频率调整方法 | |
CN114816686A (zh) | 计算任务的处理方法、电子设备以及存储介质 | |
CN114697348A (zh) | 分布式实现方法、分布式系统、可读介质及电子设备 | |
CN115729684B (zh) | 输入输出请求处理方法和电子设备 | |
CN117687772A (zh) | 一种算法调度方法及电子设备 | |
CN116700913A (zh) | 嵌入式文件系统的调度方法、设备及存储介质 | |
CN114945019B (zh) | 数据传输方法、装置及存储介质 | |
CN113852751B (zh) | 图像处理方法、装置、终端和存储介质 | |
CN114364026A (zh) | 通信方法及电子设备 | |
CN117130773B (zh) | 资源分配方法、装置和设备 | |
CN116303110B (zh) | 一种内存垃圾的回收方法及电子设备 | |
CN115706753B (zh) | 应用程序的管理方法、装置、电子设备以及存储介质 | |
CN115640414B (zh) | 图像的显示方法及电子设备 | |
CN114630153B (zh) | 用于应用处理器的参数传输方法、装置及存储介质 | |
WO2023051056A1 (zh) | 内存管理方法、电子设备、计算机存储介质和程序产品 | |
WO2024041006A1 (zh) | 一种控制摄像头帧率的方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |