CN116320727B - 一种算法调度方法及电子设备 - Google Patents
一种算法调度方法及电子设备 Download PDFInfo
- Publication number
- CN116320727B CN116320727B CN202310206491.4A CN202310206491A CN116320727B CN 116320727 B CN116320727 B CN 116320727B CN 202310206491 A CN202310206491 A CN 202310206491A CN 116320727 B CN116320727 B CN 116320727B
- Authority
- CN
- China
- Prior art keywords
- algorithm
- algorithms
- priority
- frame
- weight
- 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.)
- Active
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 1000
- 238000000034 method Methods 0.000 title claims abstract description 130
- 238000012545 processing Methods 0.000 claims abstract description 118
- 230000008569 process Effects 0.000 claims abstract description 52
- 238000012163 sequencing technique Methods 0.000 claims abstract description 17
- 238000004590 computer program Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 33
- 230000000694 effects Effects 0.000 description 25
- 238000004891 communication Methods 0.000 description 20
- 238000001514 detection method Methods 0.000 description 12
- 238000010295 mobile communication Methods 0.000 description 12
- 230000009467 reduction Effects 0.000 description 12
- 101100481876 Danio rerio pbk gene Proteins 0.000 description 9
- 101100481878 Mus musculus Pbk gene Proteins 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000002411 adverse Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000008447 perception Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003416 augmentation Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001419 dependent effect Effects 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
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation 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
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/63—Control of cameras or camera modules by using electronic viewfinders
- H04N23/631—Graphical user interfaces [GUI] specially adapted for controlling image capture or setting capture parameters
- H04N23/632—Graphical user interfaces [GUI] specially adapted for controlling image capture or setting capture parameters for displaying or modifying preview images prior to image capturing, e.g. variety of image resolutions or capturing parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/95—Computational photography systems, e.g. light-field imaging systems
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Studio Devices (AREA)
Abstract
本申请公开一种算法调度方法及电子设备,所述方法包括:获取视频流,所述视频流包含至少两个图像帧;从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法,所述K个算法为第一算法序列中的前K个算法,所述第一算法序列是将所述N个算法按照所述N个算法分别对应的第一优先级从高到底排序得到的,所述N为大于或等于2的整数,所述K小于所述N,所述第一图像帧为所述至少两个图像帧中的一个图像帧;其中,所述第一优先级由第一周期长度确定,所述第一周期长度由所述视频流对应的预览帧率与所述第一优先级对应的算法的帧率确定。改善在需要调度多个算法处理视频流中的图像帧的场景下的功耗问题。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种算法调度方法及电子设备。
背景技术
随着科技的发展,移动终端中的相机拍照功能、录像功能越来越强大,相机拍照、录像功能也成为了用户日常使用不可或缺的一项功能。
在相机拍照或录像场景,通常会运行一些预览算法处理获取到的图像预览帧,例如人脸检测算法、场景检测算法、物体跟踪算法、关键点检测算法等,多种算法协同运行以使得生成满足相应要求的照片或视频影像。一般地,这些算法是并行执行的,每个算法会设置各自的帧率,且算法间的调度彼此间没有协同,也就是说在处理一些图像帧可能会同时需要跑多个算法对该帧进行处理,而多个算法同时执行会将负载拉得很高,功耗问题有待改善。
发明内容
本申请提供一种算法调度方法及电子设备,用于改善在需要调度多个算法处理视频流中的图像帧的场景下的功耗问题。
第一方面,本申请提供一种算法调度方法,所述方法包括:获取视频流,所述视频流包含至少两个图像帧;从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法,所述K个算法为第一算法序列中的前K个算法,所述第一算法序列是将所述N个算法按照所述N个算法分别对应的第一优先级从高到底排序得到的,所述N为大于或等于2的整数,所述K小于所述N,所述第一图像帧为所述至少两个图像帧中的一个图像帧;其中,所述第一优先级由第一周期长度确定,所述第一周期长度由所述视频流对应的预览帧率与所述第一优先级对应的算法的帧率确定。
其中,所述第一周期长度由所述视频流对应的预览帧率与所述第一优先级对应的算法的帧率确定包括:所述第一周期长度为所述预览帧率与所述第一优先级对应的算法的帧率的比值。
采用本申请提供的算法调度方法,K值小于N,基于该K值可以实现算法的错帧调度,错帧调度是指让一些算法优先调度、另外一些算法延后调度,而不是无限制地调度,从而达到降低功耗的目的。
另外,赋予算法对应的第一优先级,该第一优先级根据算法对应的第一周期长度而定,基于算法对应的该第一优先级优先调度优先级更高的算法处理第一图像帧,可以尽可能地满足算法的理想帧率,适当降频进一步降低功耗,同时改善由K值的限制导致算法出现降频现象对图像效果带来的不良影响的问题,有效均衡功耗和图像效果两者的收益。
在一些可能的实现方式中,所述第一优先级由第一周期长度确定包括:所述第一优先级由所述第一周期长度和所述第一优先级对应的算法的第一帧数确定;其中,所述第一帧数的取值满足以下条件:在所述第一优先级对应的算法的第一调度次数等于0的情况下,所述第一帧数为所述第一图像帧与所述视频流的起始图像帧之间间隔的图像帧的数目;在所述第一调度次数大于0的情况下,所述第一帧数为所述第一图像帧与历史图像帧之间间隔的图像帧的数目,所述历史图像帧为所述视频流中所述第一优先级对应的算法最近一次被调度处理的图像帧,所述第一调度次数为从所述起始图像帧起所述第一优先级对应的算法被调度用于处理图像帧的次数;在所述第一帧数大于或等于所述第一周期长度的情况下,所述第一帧数越大则所述第一优先级越大,以及,在所述第一帧数大于或等于所述第一周期长度时的所述第一优先级大于在所述第一帧数小于所述第一周期长度时的所述第一优先级。
在本申请实施例中,算法对应的第一帧数大于第一周期长度则说明,按照算法的理想帧率,该算法的理想周期未得到满足,该算法急需被调度用于处理该第一图像帧;算法对应的第一帧数等于第一周期长度则说明,按照算法的理想帧率,该算法恰好需要被调度用于处理该第一图像帧;算法对应的第一帧数小于第一周期长度则说明,按照算法的理想帧率,该算法还无需被调度用于处理该第一图像帧。
基于此,优先调度第一优先级较高的算法处理第一图像帧,可以使得最大化地满足各算法的理想帧率,在对算法进行错帧调度降低功耗的同时兼顾图像效果。
在一些可能的实现方式中,所述第一优先级由第一周期长度确定包括:所述第一优先级由所述第一优先级对应的算法的第一权重确定,其中,在所述第一优先级对应的算法满足被调用条件的情况下,所述第一权重满足公式:W=所述预览帧率+L*所述第一优先级对应的算法的帧率,其中,所述W为所述第一权重,所述L为所述第一优先级对应的算法的第一帧数;在所述第一优先级对应的算法不满足所述被调用条件的情况下,所述第一权重满足公式:W=所述预览帧率-L*所述第一优先级对应的算法的帧率;所述第一优先级对应的算法满足被调用条件包括:所述第一优先级对应的算法的第一调度次数等于0,或者所述第一帧数大于或等于所述第一周期长度,所述第一调度次数为从所述视频流的起始图像帧起所述第一算法被调度用于处理图像帧的次数;所述L的取值满足以下条件:在所述第一调度次数等于0的情况下,所述L为所述第一图像帧与所述视频流的起始图像帧之间间隔的图像帧的数目;在所述第一调度次数大于0的情况下,所述L为所述第一图像帧与历史图像帧之间间隔的图像帧的数目,所述历史图像帧为所述视频流中所述第一优先级对应的算法最近一次被调度处理的图像帧。
需要说明的是,本文所说的权重区别于数学意义上的多个数的加权平均中每个数的权重值。在本申请中,第一权重用于表示调度该第一权重对应的算法处理当前的第一图像帧的优先级,第一权重的取值越大,优先级越大。
在本申请实施例中,第一权重值每次增大时,增加的步长均是该第一权重值对应的算法的理想帧率,可以使得在一些情况下,多个(两个或两个以上)算法均满足被调用条件时,优先调度帧率较高的算法。
例如N为7,处理同一图像帧被调度的算法的最大值为3,K小于或等于3,其中在第一视频流的起始图像帧中,电子设备将7个算法中的其中3个算法作为处理该起始图像帧被调度的算法,那么在第一视频流的第二帧图像时,还存在4个算法的被调度次数等于0,这4个算法均满足被调用条件,并且此时这4个算法对应的L的取值相等,均为1,那么根据公式:W=所述预览帧率+L*所述第一优先级对应的算法的帧率,就会优先选择理想帧率较大的3个算法作为处理第二帧图像需要调度的算法。
而可理解的,按照算法的理想帧率,理想帧率越大,算法被调度用于处理同一视频流中的图像帧的次数的总数就会越大,从而在多个算法均满足被调用条件的情况下,优先调度帧率较高的算法,可以使得算法的实际帧率更大化地趋近于算法的理想帧率。在M值相等(M为处理同一图像帧被调度的算法的最大值,K小于或等于M,M小于N),当多个算法均满足被调用条件时优先调度该多个算法中帧率较高的算法的方案,相比于随机从该多个算法中选K个算法的方案,可以更进一步地改善由K值的限制产生的算法降频现象给图像效果带来的不良影响的问题。
在一些情况下,可能存在两个算法,这两个算法均满足调度条件且该两个算法对应的L相等、但这两个算法对应的帧率不相等的情况下,则根据公式W=所述预览帧率+L*所述第一优先级对应的算法的帧率,可得这两个算法中帧率更大的算法的第一权重值的取值更高,则若需要从这两个算法中选择其中一个作为上述K个算法中的一个算法的情况下,应该将第一优先级更高的(也可以理解为算法对应的帧率更高)的算法作为该K个算法中的算法。也就是说,当由于K值的限制(也可以理解为上述M值的限制),需要选择两个或多个算法中的其中一个算法进行降频处理时。基于低需求的算法适当降频后依旧可以满足相应的功能需求的概率比高需求的算法适当降频后依旧可以满足相应的功能需求的概率更大,优先选择算法帧率较低的进行降频处理,可以进一步改善由于M值的限制给算法带来的降帧问题对算法本身实现的功能的影响。
在一些可能的实现方式中,在第一优先级对应的算法是否满足被调用条件、上述第一权重由上述公式:‘W=所述预览帧率+L*所述第一优先级对应的算法的帧率’,以及上述公式:‘W=所述预览帧率-L*所述第一优先级对应的算法的帧率’确定的情况下,所述从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法还可以为:确定第一集合,所述第一集合为所述N个算法中满足所述被调用条件的算法的集合;从所述第一集合中确定K个算法作为处理第一图像帧需要调度的算法,所述K个算法为第六算法序列中的前K个算法,所述第六算法序列是将所述第一集合中的G个算法按照所述G个算法分别对应的第一优先级从高到底排序得到的,所述G为所述第一集合包含的算法的个数;在所述G小于所述M的情况下,所述K等于所述G,在所述G大于或等于所述M的情况下,所述K等于所述M,所述M为预设的处理同一图像帧被调度的算法的数量的最大值。
在一些可能的实现方式中,所述第一优先级由第一周期长度确定包括:所述第一优先级由所述第一优先级对应的算法的第一权重确定,所述第一权重的初始值与所述预览帧率相等,所述从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法包括:在所述N个算法中包含P个算法、且所述P个算法分别对应的第一权重满足预设条件的情况下,将所述P个算法分别对应的第一权重的值均重置为所述初始值,所述P大于或等于0且小于或等于所述N;确定第一集合,所述第一集合为所述N个算法中算法对应的第一权重大于或等于所述初始值的算法的集合;从所述第一集合中确定K个算法作为处理第一图像帧需要调度的算法,所述K个算法为第二算法序列中的前K个算法,所述第二算法序列是将所述第一集合中的G个算法按照所述G个算法分别对应的第一优先级从高到底排序得到的,所述G为所述第一集合包含的算法的个数;在所述G小于所述M的情况下,所述K取值为所述G,在所述G大于或等于所述M的情况下,所述K等于所述M,所述M为预设的处理同一图像帧被调度的算法的数量的最大值;将第一算法对应的第一权重减去所述第一算法对应的帧率后得到的值作为更新后的所述第一算法对应的第一权重,所述第一算法为所述N个算法中算法对应的第一权重小于所述初始值的算法;将所述预览帧率减去第二算法对应的帧率后得到的值作为更新后的所述第二算法对应的第一权重,所述第二算法为所述N个算法中算法对应的第一权重等于所述初始值的算法;将第三算法对应的第一权重加上所述第三算法对应的帧率后得到的值作为更新后的所述第三算法对应的第一权重,所述第三算法为所述N个算法中算法对应的第一权重大于所述初始值的算法。
在一些可能的实现方式中,所述第一权重满足预设条件为:所述第一权重取值为0;或者,所述第一权重满足预设条件为:所述第一权重小于所述第一权重对应的算法的帧率。
示例性的,上述N个算法中的每一个算法的帧率均属于预览帧率的因数,则所述第一权重满足预设条件可以为:所述第一权重取值为0;或者,所述第一权重满足预设条件也可以为:所述第一权重小于所述第一权重对应的算法的帧率。
示例性的,上述N个算法中存在一个或多个算法其帧率不属于预览帧率的因数,则所述第一权重满足预设条件为:所述第一权重小于所述第一权重对应的算法的帧率。
在一些可能的实现方式中,所述第一优先级由所述第一优先级对应的算法的第一权重确定包括:所述第一优先级所述第一权重和所述第一算法对应的第二权重确定,且所述第一权重的优先级高于所述第二权重的优先级,所述第二权重为所述第一优先级对应的算法的帧率。
示例性的,所述从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法包括:在所述N个算法中每个算法对应的第一权重均相等的情况下,确定第三算法序列中的前K个算法作为处理第一图像帧需要调度的算法,所述第三算法序列是将所述N个算法按照所述N个算法分别对应的第二权重从而大到小排序得到的。
可理解的,在所述N个算法中每个算法对应的第一权重均相等的情况下,上述确定第一集合,以及从所述第一集合中确定K个算法作为处理第一图像帧需要调度的算法,可以直接替换为:确定第三算法序列中的前K个算法作为处理第一图像帧需要调度的算法。
示例性的,所述从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法包括:将所述N个算法按照所述N个算法分别对应的第一权重从大到小排序,得到所述第四算法序列;在所述第四算法序列中包含Q个算法、且所述Q个算法的第一权重的取值排名并列第K的情况下,将所述Q个算法按照所述Q个算法分别对应的第二权重从大到小排序,得到第五算法序列;将所述第四算法队列中的前K-1个算法、以及所述第五算法队列中的第一个算法,作为处理第一图像帧需要调度的算法。
可理解的,上述确定第一集合,以及从所述第一集合中确定K个算法作为处理第一图像帧需要调度的算法,也可以直接替换为:将所述N个算法按照所述N个算法分别对应的第一权重从大到小排序,得到所述第四算法序列;在所述第四算法序列中包含Q个算法、且所述Q个算法的排名并列第K的情况下,将所述Q个算法按照所述Q个算法分别对应的第二权重从大到小排序,得到第五算法序列;将所述第四算法队列中的前K-1个算法、以及所述第五算法队列中的第一个算法,作为处理第一图像帧需要调度的算法。
在所述第四算法序列中包含Q个算法、且所述Q个算法的第一权重的取值排名并列第K、以及所述Q个算法的第二权重相等的情况下,将第四算法队列中的前K-1个算法、以及所述Q个算法中的任意一个算法,作为处理第一图像帧需要调度的算法。
由此,由第一权重和第二权重共同决定算法的第一优先级,使得在存在两个算法的第一权重值相等的场景中,再以第二权重作为优先级的依据判断两个算法的优先级高低,且该第二权重取值为每个算法对应的帧率,优先满足帧率更高的算法的理想帧率,进一步改善由于M值的限制给算法带来的降帧问题对算法本身实现的图像功能效果的影响。
在一些可能的实现方式中,所述第一优先级由第一周期长度确定包括:所述第一优先级由所述第一优先级对应的算法的第一权重确定,在所述第一优先级对应的算法满足被调用条件的情况下,所述第一权重满足公式:W=(L+1)*第一优先级对应的算法的帧率,该第一优先级对应的算法的帧率也可以理解为该第一权重对应的算法的帧率,其中,所述W为所述第一权重,所述L为所述第一优先级对应的算法的第一帧数;在所述第一优先级对应的算法不满足所述被调用条件的情况下,所述第一权重为第一预设值,所述第一预设值与所述N个算法分别对应的帧率以及所述N个算法分别对应的帧率的倍数均不相等;所述第一优先级对应的算法满足被调用条件包括:所述第一优先级对应的算法的第一调度次数等于0,或者所述第一帧数大于或等于所述第一周期长度,所述第一调度次数为从所述视频流的起始图像帧起所述第一算法被调度用于处理图像帧的次数;所述L的取值满足以下条件:在所述第一调度次数等于0的情况下,所述L为所述第一图像帧与所述视频流的起始图像帧之间间隔的图像帧的数目;在所述第一调度次数大于0的情况下,所述L为所述第一图像帧与历史图像帧之间间隔的图像帧的数目,所述历史图像帧为所述视频流中所述第一优先级对应的算法最近一次被调度处理的图像帧。
可理解的,将不满足被调度条件的算法的第一权重值赋值均为第一预设值,可以省略对不满足被调度条件的算法的权重的减法或乘法运算,特别是在视频流较大的情况下,省略的大部分非必要的运算,进一步降低功耗,提高程序响应速度。
在一些可能的实现方式中,所述从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法包括:确定第一集合,所述第一集合为所述N个算法中满足所述被调用条件的算法的集合;从所述第一集合中确定K个算法作为处理第一图像帧需要调度的算法,所述K个算法为第六算法序列中的前K个算法,所述第六算法序列是将所述第一集合中的G个算法按照所述G个算法分别对应的第一优先级从高到底排序得到的,所述G为所述第一集合包含的算法的个数;在所述G小于所述M的情况下,所述K等于所述G,在所述G大于或等于所述M的情况下,所述K等于所述M,所述M为预设的处理同一图像帧被调度的算法的数量的最大值。
第二方面,本申请提供一种算法调度模块,所述算法调度模块用于执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
示例性的,该算法调度模块可以为硬件抽象层中的一个功能模块。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括:一个或多个处理器和存储器;所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,本申请实施例提供一种芯片系统,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
第五方面,本申请实施例提供一种包含指令的计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。
可以理解的,上述第二方面提供的算法调度模块、第三方面提供的电子设备、第四方面提供的芯片、第五方面提供的计算机程序产品和第六方面提供的计算机存储介质均用于执行本申请实施例所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1是电子设备执行本申请实施例提供的算法调度方法时相关的数据流向和模块调用关系的示意图;
图2是本申请实施例提供的在一些其他算法调度方法中调度A、B、C、D、E、F以及G共7种算法,并行且不协同地处理视频流的一个场景示意图;
图3为本申请实施例提供的一种算法调度方法的方法流程图;
图4为本申请实施例提供的又一种算法调度方法的方法流程图;
图5为本申请实施例提供的电子设备100的结构示意图;
图6是本申请实施例的电子设备100的软件结构框图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地描述。
本申请的说明书、权利要求书及附图中的术语“第一”和“第二”等仅用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备等,没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元等,或可选地还包括对于这些过程、方法、产品或设备等固有的其它步骤或单元。
在本文中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”。
以下结合图1所示算法决策时相关的数据流向和模块调用关系介绍本申请提供的算法调度方法。
如图1所示,电子设备包括算法调度模块、算法部署模块、以及感知类算法的抽象接口。其中,算法调度模块、算法部署模块、以及感知类算法的抽象接口均可以位于硬件抽象层(hardware abstract layer,HAL),该电子设备可以是任意具备拍照或录像功能的电子设备,例如可以是手机、平板等。
示例性的,当电子设备的上层相机应用启动后,触发上述算法调度模块执行本申请提供的算法调度方法,具体为基于各个算法的理想帧率和相机预览帧率确定各个算法的权重,以及根据各个算法的权重确定处理视频流中对应的图像帧需要调度的算法,得到算法调度方案,详细的决策方法可以参照下文方法实施例中图3或图4的相关说明,在此不再详述。算法部署模块基于该算法调度方法调用对应的感知类算法的抽象接口以及将算法部署到对应的处理器平台上运行。一般地,算法的运行可能需要部署到中央处理器(CPU)、数字信号处理器DSP中的网络处理器NPU、以及图形处理器GPU中的一项或多项处理器上。
在本申请中,感知类算法是指用于处理图像的一些列算法,本文所描述的算法均属于该感知类算法,该感知类算法包括但不限于人脸检测算法、场景检测算法、物体跟踪算法、关键点检测算法等,感知类算法也可以称为预览算法,本文对此不做限定。电子设备中存储有各个感知类算法的帧率(frames per second,FPS),具体可以是电子设备中存储有各个感知类算法的配置文件,该配置文件包含算法对应的理想帧率。
在本申请中,相机预览帧率是指打开相机应用后,相机模组每秒传输的图像帧的帧数,也可以理解为相机应用每秒显示的图像帧的帧数,基于该相机模组拍摄得到的视频流的帧率与该相机预览帧率一致。该相机预览帧率一般在相机模组出厂时就设定好了,后续一般不再接受修改。在本申请中,视频流对应的相机预览帧率也简称为视频流的预览帧率。
一般地,相机应用启用后,在拍照模式(拍照预览模式)、录像模式(录像预览模式,预览是指在拍照过程或录像过程中全程向用户显示图像画面)、以及在录像过程中,都会调用一些感知类算法对抓取到的图像帧进行处理,以完成相应的功能(例如物体追踪功能等),关于调用的感知类算法的数量具体由开发人员根据相应的设计和需求设定。关于不同的模式下(例如人像模式、夜间模式等)调用的感知类算法的个数可以相同也可以不同,本文对此不做限定。只是若对于不同的模式调用的感知类算法的个数不相同的情况下,不同模式采用本申请提供的算法调度方法处理图像帧时,由于算法的数量、算法的理想帧率有所不同,采用本申请提供的算法调度方法时,为权衡功耗和图像质量设定的处理同一图像帧所调度的算法的数量的最大值(K)可能相同也可能会有所不同,其中每个模式对应的K值基于实验模拟数据中算法的理想帧率与实际帧率的差值以及相关功耗的权衡而定。
下面结合其他的算法调度的实现方式,对比说明本申请实施例提供的算法调度方法的优势:
在一些其他的算法调度的实现方式中,被调度用于处理视频流中的图像帧N个算法之间是并行执行的,相互不协同。这样就可能在某一帧会同时调度多个算法,一方面,多个算法同时执行会将负载拉得很高,峰值电流增大,带来功耗的增加。另外一方面,当这多个算法都需要使用NPU时,在一些平台上NPU算力有限(例如高通平台NPU是单核的,算力比较有限),允许同时运行的算法的个数较少,那么多个算法实际是串行执行的,这会将算法运行的链路时间拉得很长,如果算法不能在预期时间内执行完,可能带来造成丢帧,卡顿等影响图像效果的问题。
示例性的,如图2所示,采用A、B、C、D、E、F、G,7种算法作为处理第一视频流(tiny流)需要调度用于处理图像帧的算法,其中,第一视频流的相机预览帧率为30fps,A、B、C、D、E、F、G这7个算法的帧率如下表1中‘帧率’一行所示,这7个算法的运行均需要使用CPU,以及7个算法中的C、D、E、F、G这5个算法的运行均需要使用NPU,且这7个算法之间的运行互不协同。以下表1为采用7个算法间相互不协调的方式处理第一视频流截取到的一些图像帧在处理时被调度的算法情况(需要说明的是,表中标号为1的图像帧并不为第一视频流的起始图像帧)。从表中可以看出,图像帧调用的算法的数量大多数大于或等于4,其中标号16和标号为26的图像帧在处理时被调度的算法的数量为5。这种算法调度方法,调度4个或5个算法处理同一图像帧的概率很大,一方面,功耗大,另外一方面,在一些平台上处理器的算力有限,多个算法实际是串行执行的,这会将算法运行的链路时间拉得很长,如果算法不能在预期时间内执行完,可能带来造成丢帧,卡顿等影响图像效果的问题。
表1
有鉴于此,本申请提供一种算法调度方法,该方法包括:获取第一视频流,从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法,该K个算法为第一算法序列中的前K个算法,所述第一算法序列是将该N个算法按照N个算法分别对应的第一优先级从高到底排序得到的,其中,第一优先级由第一周期长度确定,第一周期长度为第一视频流对应的预览帧率与第一优先级对应的算法的帧率的比值。
具体的,电子设备设定处理同一图像帧被调度的算法的数量的最大值M,上述K小于或等于该M,以及赋予每个算法被调度用于处于当前图像帧的优先级,根据每个算法的帧率和与算法对应的周期长度(周期长度为相机预览帧率与算法的理想帧率的比值),为每个算法动态地调整优先级,基于算法的优先级选择优先级由大到小排名前K的算法作为当前图像帧被调度的算法。例如,按照算法理想帧率对应的周期长度,该算法期望被调度用于处理当前图像帧,则算法的优先级越大,反之越小,也即算法的优先级用于表示按照算法的优先级进行调度可以尽可能地使得算法执行的实际帧率趋近于理想帧率。
由此,将处理每个图像帧被调度的算法的数量控制在小于或等于M值,实现算法的错帧调度,改善功耗问题,同时,基于优先级优先调度优先级更高的,尽可能地满足算法的理想帧率,可以基本满足算法的帧率要求,改善由于K值的限制导致算法出现降频对图像效果带来不良影响的问题。
在本申请提供的一种可能的实现方式中,电子设备以相机预览帧率作为N个算法中每个算法的第一权重的初始权重值,电子设备确定当前图像帧被调度的算法包括:电子设备先确定N个算法中是否存在第一权重取值为0的一项或一项以上的第一算法,若是则重置该一项或一项以上的第一算法中每个第一算法的权重值为初始权重值(相机预览帧率)。然后将从N个算法中选出第一集合,该第一集合为第一权重大于或等于初始权重值(相机预览帧率)的算法的集合,从该第一集合中选出第一权重从大到小排名前K的算法作为当前图像帧被调用的算法,并将该前K个算法中的每一个算法的第一权重更新为初始权重值(相机预览帧率)与对应的算法的步长(算法的步长为算法的帧率)的差值,以及将第一集合中除了K值之外的其他算法中的每一个算法的第一权重减去对应的算法的步长得到的差值作为该算法更新后的第一权重。
采用本申请提供的方法,不满足被调用条件的算法则不允许被调度,会被排除在第一集合之外,只有在第一算法满足相应的被调用条件的情况下,才将第一算法纳入允许被调度用于处理图像帧的第一集合中。由于进入第一集合并不表示第一权重一定可以排名前K,本申请提供的方法还会继续增大进入第一集合未被纳入前K个算法的每一个算法的第一权重(具体为第一权重再增加相应的步长),使得每个算法的实际处理帧率最大化地满足理想帧率。
由此,采用本申请提供的方法,可以基于实际的场景寻找一个合适的M值,基于该M值实现算法的错帧调度达到改善功耗问题,同时,即使需要适当降帧也可以使得每个算法的实际处理帧率最大化地接近其理想帧率,对图像处理效果的影响很小,并且适当降频也可以进一步地降低功耗,可以有效权衡功耗与图像处理效果。
例如,电子设备采用本申请提供的上述实现方式,基于A、B、C、D、E、F、G算法处理与表1相同的第一视频流时,假设M取值为3(也即K小于或等于3),日志截取到的一些图像帧在处理时被调度的算法情况如下表2所示。可以看出,采用本申请提供的算法调度方法,对于同一帧图像,被调度的算法的数量控制在3个以下(小于或等于3),基于该M=3实现算法的错帧调度达到降低功耗的效果;另外,算法的实际帧率与理想帧率非常接近,也就是适当降频也基本能满足帧率要求,对图像处理效果的影响很小,并且适当降频也可以进一步降低功耗。
表2
模拟帧率 | 算法 | 部署 | 帧率 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
29.5 | A | CPU | 30 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
15 | B | CPU | 15 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | ||||||||||||||||
10 | C | CPU&NPU | 10 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | ||||||||||||||||||||
9.5 | D | CPU&NPU | 10 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | |||||||||||||||||||||
7.5 | E | CPU&NPU | 7.5 | √ | √ | √ | √ | √ | √ | √ | √ | |||||||||||||||||||||||
2 | F | CPU&NPU | 2 | √ | √ | |||||||||||||||||||||||||||||
5.5 | G | CPU&NPU | 6 | √ | √ | √ | √ | √ |
实施例1:
以下结合图3介绍本申请提供的一种算法调度方法的实现方式。
如图3所示,包括以下步骤:
S301,电子设备获取第一视频流。
在本申请实施例中,第一视频流包含至少两个图像帧。
可选的,该第一视频流可以是电子设备基于相机应用获取到的,也可以是电子设备基于一些数据传输方式获取到的,例如可以是通过有线传输方式(通用串行总线接口USB等)或无线传输方式(无线保真WIFI、蓝牙、近场通信等)获取到的,本文对此不做限定。
示例性的,电子设备启动相机应用后,开始抓取图像帧,上述第一视频流为相机应用启动后抓取到的图像帧的集合。该第一视频流的长度(也可以理解为图像帧的总数)可以是固定的也可以是变化的,本文对此不做限定。例如,例如,在拍照预览画面下,该第一视频流的长度可以随着相机应用根据时间变化抓取到的图像帧的数量的变化而变化,或者,该第一视频流的长度也可以是固定的,例如,该第一视频流为相机应用录制视频的默认时长。
另外,需要说明的是,该第一视频流的第一帧(起始图像帧)是相机应用启动后获取到的第i帧图像帧,该i大于或等于1,或者该i大于或等于2,本文对此不做限定,也就是说,该第一视频流的第一帧并不一定为相机应用启动后抓取到的第一帧图像。
在本申请实施例中,电子设备获取第一视频流的任意一帧图像,与电子设备从待选的N个算法中确定K个算法作为处理第一视频流中的第一图像帧需要调度的算法,这两个任务可以并行执行也可以先后执行,本文对此不做限定。例如,相机应用在启动后,获取一个或多个图像帧,并从待选的N个算法中确定K个算法作为处理a图像帧(且该a图像帧指定为第一视频流中的起始图像帧)需要调度的算法,以及同时确定第一视频流的起始图像帧为该一个或多个图像帧中的第i帧图像,i大于或等于1。也就是说,从待选的N个算法中确定K个算法作为处理a图像帧需要调度的算法,与获取该a图像帧可能同时执行也可能是先后执行。又例如,电子设备可以在获取到第一视频流中的前两帧图像后,再执行步骤S302,本文对此不做限定。
S302,电子设备从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法。
在本申请实施例中,第一图像帧为上述第一视频流(至少两个图像帧)中的一个图像帧,上述K个算法为第一算法序列中的前K个算法,该第一算法序列是将上述N个算法按照该N个算法分别对应的第一优先级从高到底排序得到的,该N为大于或等于2的整数,该K小于该N。以及,第一优先级由第一周期长度确定,该第一周期长度由第一视频流对应的预览帧率与该第一优先级对应的算法的帧率确定。
一般地,第一视频流的预览帧率由录制该第一视频流的相机模组的相机预览帧率确定。
在本申请实施例中,上述N个算法为电子设备设定的在获取第一视频流后对第一视频流中的图像帧进行相关处理需要调用的感知类算法。
在本申请实施例中,上述第一优先级对应的算法的帧率是指算法的理想帧率,电子设备中存储有算法的理想帧率。一般地,算法的理想帧率是由开发人员在进行相关的程序开发时,根据算法对应的功能需求而设定的一个合适的帧率,例如由开发人员根据算法对应的功能(例如人脸检测或物体追踪等功能)对于图像处理或响应所需的精确度、实时性等要求而设定的一个合适的理想帧率。
在本申请实施例中,第一周期长度是指按照算法(例如a算法)的理想帧率,均匀性地调度该a算法处理视频流的情况下,A帧与B帧之间间隔的帧数(帧数是指数据帧的数目),A帧与B帧为a算法被调度用于处理同一视频流的相邻的两个图像帧。该第一周期长度也可以理解为根据算法的理想帧率调度算法处理同一视频流得到的理想的周期长度。
示例性的,上述第一优先级由第一周期长度确定,可以理解为:按照第一优先级对应的算法的第一周期长度该算法期望被调度用于处理当前图像帧,则该第一优先级越高。若完全按照期望被调度的算法来调度相关算法处理视频流,则可以使得算法与理想帧率相等。
例如,当前帧恰好与算法的理想周期恰好匹配,或者当前帧的前一帧、前两帧或前三帧等恰好与算法的周期匹配但该算法未得到调度(可以理解为理想周期未得到满足),则算法的优先级越高。其中当前帧恰好与算法的理想周期匹配,具体可以是算法从起始图像帧开始的被调度次数等于0,或者,当前帧与上一次调度该算法的图像帧之间间隔的帧的个数等于第一周期长度。理想周期未得到满足具体可以是当前帧与上一次调度该算法的图像帧之间间隔的帧的个数大于第一周期长度。
在一些其他的算法调度的实现方式中,被调度用于处理第一视频流N个算法之间是并行执行的,相互不协同。例如,在第一视频流的起始帧,该N个算法中的每一个算法都被调度用于处理该起始帧,之后再分别根据N个算法对应的周期长度调度该N个算法中的一个或多个算法处理起始帧之外的其他帧,由于N个算法的理想帧率一般均为相机预览帧率的因数,从而在起始帧之后的图像帧中,还是会存在很多个图像帧在处理时被调用的算法为该N个算法中的每一个算法,从而带来。
采用本申请提供的算法调度方法,限定K值小于或等于预设的处理同一图像帧被调度的算法的数量的最大值M(M小于N),基于该K值实现错帧调度,错帧调度是指让一些算法优先调度、另外一些算法延后调度,不是无限制地调度,而是将可调度的算法的数量控制在最大值以下,从而达到降低功耗的目的;另外,赋予算法对应的优先级,该优先级根据算法对应的第一周期长度而定,例如按照算法的第一周期长度(第一周期长度为根据预览帧率与算法的理想帧率的比值确定的理想周期长度),该算法越期望被调度用于处理当前图像帧,则算法的优先级越大,根据优先级确定N个算法中优先级更高的K个算法,而不是随机地选K个算法,从而使得算法的实际调度帧率可以达到或最大化地接近算法的理想帧率,改善由K值的限制导致算法的出现降频现象而对图像效果带来的不良影响的问题,有效均衡功耗和图像效果两者的收益。
例如,从对于A、B、C、D、E、F、G算法中选出3个算法对当前帧进行处理,且按照算法的第一周期长度A、B、C期望被调度用于处理当前图像帧,也即A、B、C的优先级高于D、E、F、G算法的优先级;若随机选取三个,则很有可能选不到A、B、C,例如选到E、F、G,而采用本申请提供的方法,根据每个算法的第一周期长度确定的每个算法对应的第一优先级,从而可以增大选出A、B、C对当前帧进行处理的概率,在错帧调度的同时,更大化地使得算法的实际调度的帧率接近算法的理想帧率。
在一种可能的实现方式中,上述第一优先级由第一周期长度确定包括:第一优先级由第一周期长度和第一优先级对应的算法的第一帧数确定;其中,第一帧数的满足以下条件:在第一优先级对应的算法的第一调度次数等于0的情况下,第一帧数为第一图像帧与视频流的起始图像帧之间间隔的图像帧的数目;在第一调度次数大于0的情况下,第一帧数为第一图像帧与历史图像帧之间间隔的图像帧的数目,历史图像帧为视频流中第一优先级对应的算法最近一次被调度处理的图像帧,第一调度次数为从起始图像帧起第一优先级对应的算法被调度用于处理图像帧的次数;在第一帧数大于或等于第一周期长度的情况下,第一帧数越大则第一优先级越大,以及,在第一帧数大于或等于第一周期长度时的第一优先级大于在第一帧数小于第一周期长度时的第一优先级。
在本申请实施例中,算法对应的第一帧数大于第一周期长度则说明,按照算法的理想帧率,该算法的理想周期未得到满足,例如,第一帧数与第一周期长度的差值为a,则说明该算法在该第一图像帧的之前的第a帧就应该被调度,但是该算法在该第一图像帧之前的a帧图像均未被调度,则该算法对应的优先级应该属于高优先级。
而算法对应的第一帧数等于第一周期长度则说明,按照算法的理想帧率,该算法恰好需要被调度用于处理该第一图像帧,则算法对应的优先级应该为中等优先级。
而算法对应的第一帧数小于第一周期长度则说明,按照算法的理想帧率,该算法还无需被调度用于处理该第一图像帧,则该算法对应的第一优先级应该属于低优先级。
示例性的,若a算法对应的第一帧数大于第一周期长度,b算法对应的第一帧数等于第一周期长度,c算法对应的第一帧数小于第一周期长度,则a算法的第一优先级、b算法的第一优先级、c算法的第一优先级,依次递减。
基于此,优先调度第一优先级较高的算法处理第一图像帧,可以使得最大化地满足各算法的理想帧率,在错帧调度降低功耗的同时兼顾图像效果。
可理解的,处理同一图像帧被调度的算法的数量的最大值(M)越小,并行执行的算法的个数越少,则功耗越少,对电子设备的性能和算力要求越低,M越大,并行执行的算法的个数越多,则功耗越多,对电子设备的性能和算力要求越高。并且,由于M值的限制,有可能会使得算法在第一帧数等于第一周期长度时得不到调度,也就是算法存在降频现象,虽然降频可以进一步降低功耗,但是降频会使得算法的实际帧率可能低于理想帧率,其中,M越小,算法的实际帧率可能会越低于理想帧率,M越大,算法的实际帧率越接近于理想帧率(越有可能使得算法的实际帧率等于理想帧率),而算法的实际帧率越接近于理想帧率可以使得图像处理效果越好。
由此可知,这需要开发人员根据电子设备中相关处理器的算力,探索性地设定不同的M值,寻找一个合适的M值,使得M值较小且算法的模拟帧率越接近于理想帧率,从而达到降低功耗的同时兼顾图像处理效果。
可选的,在上述N个算法中的每一个算法的帧率均属于上述第一视频流的预览帧率(也可以理解为相机预览帧率)的因数的情况下,对于第一视频流中的任一个第一图像帧,上述N个算法中的每一个算法(例如以a算法为例)的第一权重Wa可以通过以下公式1确定。
Wa=相机预览帧率±L*a算法的理想帧率公式1
其中,若a算法满足被调用条件,则Wa=相机预览帧率+L*a算法的理想帧率,若a算法未满足被调用条件,则Wa=相机预览帧率-L*a算法的理想帧率,L为第一帧数,a算法的被调用次数等于0的情况下,L取值为当前图像帧与起始图像帧之间间隔的数据帧的数目,a算法的被调用次数大于0的情况下,L取值为当前图像帧与历史图像帧之间间隔的数据帧的数目,历史图像帧为在第一图像帧之前该算法上一次被调度用于处理的图像帧。
a算法满足被调用条件包括以下两种情况:
情况1:a算法的被调用次数等于0,则a算法满足被调用条件。对应的,第一帧数(L)为当前图像帧与起始图像帧之间间隔的数据帧的数目,被调用次数是指从起始图像帧起该a算法被调用处理图像帧的次数,起始图像帧是指当前处理的视频流中调用了上述K个算法中的至少一个算法处理图像帧的第一帧。
情况2:a算法的被调用次数大于0,且L大于或等于a算法对应的第一周期长度H(如下公式2所示,该第一周期长度H为相机预览帧率与理想帧率的商),则a算法满足被调用条件,该L为当前图像帧与历史图像帧之间间隔的数据帧的数目,该历史图像帧为当前处理的视频流中上一次调用该a算法处理图像帧的帧。
A算法不满足被调用条件包括:a算法的被调用次数大于0,且L小于a算法的第一周期长度,则A算法不满足被调用条件,该L为当前图像帧与历史图像帧之间间隔的数据帧的数目,该历史图像帧为当前处理的视频流中上一次调用该a算法处理图像帧的帧。
可选的,在上述N个算法中的算法的帧率均属于或部分属于或均不属于上述相机预览帧率的因数的情况下,对于第一视频流中的任一个第一图像帧,上述N个算法中的每一个算法(例如以a算法为例),a算法的第一权重Wa也可以通过以下公式3确定。
其中,第一预设值与N个算法分别对应的帧率以及N个算法分别对应的帧率的倍数均不相等,例如第一预设值为-1。关于a算法是否满足被调用条件以及第一帧数L的具体取值,参照上文介绍公式1和公式2中的相关说明,在此不再赘述。
实施例2:
以下以N个算法中的每个算法的第一权重的初始权重值均为相机预览帧率为例,结合图4给出一种本申请提供的算法调度方法的执行过程。
如图4所示,本申请提供的算法调度方法包含步骤S401~S415。其中S401~S402介绍相关数据的初始化;S403~S407介绍确定算法是否满足被调用条件(具体通过S403~S405确定算法是否满足被调用条件),若满足被调用条件则进入待筛选集合(对应S406),未满足条件则不进入待筛选集合(对应S407)。S408~S414介绍选出待筛选集合中的前K个算法作为处理第一图像帧被调度的算法,以及选出该前K个算法后,每个算法对应的第一权重的变化情况,以下分别进行描述:
S401、电子设备在启动相机应用后,初始化topK值、N个算法中各个算法的第一权重、步长。
具体的,在启动相机应用后,相机应用开始获取图像帧,以及初始化N个算法中每个算法对应的第一权重、步长、以及topK值。其中,该N个算法为相机应用获取图像帧后对图像帧进行相关处理需要调用的感知类算法,该N为大于或等于2的整数。
在本申请实施例中,topK为本申请预设的处理同一图像帧所调度的算法的数量的最大值,该topK取值大于或等于1,具体取值根据实验数据而定,例如N取值为7,topK分别取值为2、3、或4,并基于每个topK的具体取值和下文步骤S402至S413对同一段视频流进行处理,最后计算每个算法处理该视频流得到的实际帧率,将每个算法的实际帧率和理想帧率作比较,选取一个可以使得实际帧率与理想帧率的差值较小且topK值也较小的topK值作为处理同一图像帧所调度的算法的数量的最大值。
在本申请实施例中,算法对应的第一权重用于表示调度该算法对当前图像帧进行处理的优先级,在本申请实施例中,每个算法的第一权重的初始值为相机预览帧率。示例性的,该相机预览帧率为30fps。可理解的,该相机预览帧率不限于该30fps,也可以根据具体场景或需求为其他合适的值,例如还可以是24fps、60fps等,本文对此不做限定。
在本申请实施例中,算法对应的步长用于表示该算法的权重每次增加或减小的程度。在本申请实施例中,算法的步长取值为该算法对应的理想帧率。
在本申请实施例中,算法的理想帧率是指电子设备采用该算法处理视频流期望达到的帧率。
S402、获取第一图像帧。
在本申请实施例中,该第一图像帧为第一视频流中的一帧图像帧,关于第一视频流的描述可以参照上文S301相关说明,在此不再详述。
需要说明的是,相机应用启动后,获取由图像帧组成的第一视频流,与初始化各个算法对应的第一权重、步长、以及topK值的步骤,可以并行执行,互不影响,也即步骤S402与步骤S403可以同时执行也可以先后执行,且其先后执行顺序不做限定。
示例性的,电子设备可以依次为第一视频流从起始图像帧开始执行步骤S403~S414确定处理对应的图像帧需要被调度的算法。
S403、电子设备确定a算法的第一权重是否等于0。
在本申请实施例中,a算法为上述N个算法中的任意一个算法。
在确定a算法的权重等于0的情况下,执行步骤S404;在确定a算法的权重不等于0的情况下,执行步骤S405。
S404、电子设备将a算法的第一权重重置为相机预览帧率。
以下根据方案设计,分析当定a算法的第一权重等于0时,电子设备需要将a算法的第一权重重置为相机预览帧率的原因:
在本申请实施例中,a算法的权重等于0用于表示按照a算法的理想帧率,a算法应该被调度用于处理当前图像帧(第一图像帧);a算法的第一权重不等于0、且a算法的权重大于或等于相机预览帧率,用于表示按照a算法的理想帧率a算法也应该被调度用于处理当前图像帧(第一图像帧);a算法的第一权重不等于0、且a算法的权重小于相机预览帧率,用于表示按照a算法的理想帧率a算法不应该被调度用于处理当前图像帧(第一图像帧)。
并且,基于步骤S405和S406可知,第一权重大于或等于相机预设帧率的算法才可以确定包含于第一集合,而第一权重小于相机预设帧率的不会进入第一集合,以及基于步骤S409只有进入第一集合才有机会被选择用于处理第一图像帧。基于此,当a算法的第一权重等于0时,执行步骤S404将a算法的第一权重重置为相机预览帧率,以使得a算法进入第一集合,增大a算法被选择用于处理该第一图像帧的概率,也可以理解为增大a算法满足理想帧率的概率。
或者,也可以根据上文公式1,分析当定a算法的第一权重等于0时,电子设备需要将a算法的第一权重重置为相机预览帧率的原因:
示例性的,根据上文描述的公式1,a算法只有在不满足被调用条件(被调用次数大于0,且L小于第一周期长度)的情况下,Wa的计算公式为:Wa=相机预览帧率-L*a算法的理想帧率,Wa才有可能出现小于相机预览帧率的取值。直到Wa减小到取值为0,根据公式变换,Wa取值为0时,L刚好取值为相机预览帧率与a算法的理想帧率的商;也即Wa取值为0时,L等于H,基于上述情况2,此时a算法满足被调用条件,基于此,执行上述S404,将a算法的第一权重重置为相机预览帧率,以使得a算法满足被调用条件后选中a算法作为处理当前图像帧被调度的算法的优先级增大。
具体可以是根据公式“Wa=相机预览帧率+L*a算法的理想帧率”将a算法的权重重置为相机预览帧率,也可以是直接将a算法的权重直接修改为相机预览帧率,本文对此不做限定。
可选的,第一图像帧为上述第一视频流中的第一帧(起始图像帧)的情况下,由于与当前图像帧对应的算法的第一权重均为初始值(相机预览帧率),不可能取值为0,基于此,电子设备在采用图4所示的方法对处理起始图像帧需要被调度的算法进行决策时可以不用执行S403和S404。或者,可选的,电子设备在采用图4所示的方法对处理起始图像帧需要被调度的算法进行决策时也可以执行S403和S404,起始图像帧和其他图像帧的处理逻辑一致,可以改善场景判断出错带来的代码运行错误的问题。
一般地,在算法设计中,上述N个算法中每个算法的理想帧率均为相机预览帧率的因数。但是在本申请中,本文不限制该N个算法中每个算法的理想帧率是否均为相机预览帧率的因数,上述N个算法中每个算法的理想帧率可以均为相机预览帧率的因数,或者上述N个算法中的一个或多个算法的理想帧率也可以不为相机预览帧率的因数,本文对此不做限定。
其中,上述N个算法中每个算法的理想帧率均为相机预览帧率的因数的情况下,上述步骤S403可以为:确定a算法的第一权重是否等于0;或者,在另外一些可能的实现方式中,上述步骤S403还可以替换为:确定a算法的第一权重是否小于a算法的理想帧率;若是,则执行步骤S404;若否,则执行步骤S405。
在上述N个算法中存在一个或多个算法,该算法的理想帧率不为相机预览帧率的因数的情况下,则上述步骤S403需要替换为:确定a算法的第一权重是否小于a算法的理想帧率。若是,则执行步骤S404;若否,则执行步骤S405。
S405、电子设备确定a算法的第一权重是否大于或等于相机预览帧率。
在本申请实施例中,如图4所示的步骤S403和S405的先后执行顺序仅为示例,其执行顺序可以是同时执行也可以是先后执行,本文对此不做限定。
在确定a算法的第一权重大于或等于相机预览帧率的情况下,执行步骤S406;在确定a算法的第一权重小于相机预览帧率的情况下,执行步骤S407。
S406、电子设备确定第一集合包括a算法。
S407、电子设备将a算法的第一权重与a算法的步长的差值作为a算法更新后的第一权重。
在本申请实施例中,a算法的步长即为a算法的理想帧率。
在本申请实施例中,电子设备在确定a算法的第一权重小于相机预览帧率且不等于0的情况下,不确定a算法属于第一集合(也即按照a算法的理想帧率,不期望调用该a算法处理该第一图像帧),并将a算法的第一权重与a算法的理想帧率的差值作为a算法更新后的第一权重,以使得a算法在被调度过一次后,可以根据理想帧率对应的周期减小到0而重置第一权重而再次被调用。
S408、电子设备遍历N个算法中的每个算法执行上述步骤S403~S407。
也即,电子设备对上述N个算法中的每一个算法均执行上述步骤S403~S405,以使得确定是否需要重置每个算法的第一权重、以及确定每一个算法是否属于第一集合,基于此确定该第一集合包含的算法。其中,第一权重大于或等于相机预设帧率的算法才可以确定包含于第一集合,而第一权重小于相机预设帧率的算法不会选入该第一集合。
可选的,第一集合可以是算法的集合,也可以是第一权重的集合。其中,若第一集合是算法的集合,则第一集合为上述N个算法中第一权重大于或等于相机预览帧率的算法的集合,该第一集合中的每一个算法按照该算法对应的理想帧率该算法应该被调度用于处理第一图像帧。若第一集合为第一权重的集合,则第一集合为上述N个算法对应的N个第一权重中第一权重大于或等于相机预览帧率的第一权重的集合。
以下为便于描述,均以第一集合是算法的集合为例示出。
S409、电子设备从第一集合中选出K个算法。
在本申请实施例中,记第一集合中包含的算法的数目为G,该G大于或等于0,记预设的被调度用于处理同一图像帧的算法的数目为M,该K小于或等于该M。其中,若G小于M,则K取值为G,也即上述K个算法为第一集合中包含的全部的算法;若G大于或等于M,则K取值为M,也即上述K个算法为第一集合中的按照每一个算法对应的第一权重从大到小排序得到的算法序列中的前M个算法。
示例性的,若第一集合的元素的个数大于或等于M,则上述电子设备从第一集合中选出M个算法即为:电子设备从第一集合中选出第一权重从大到小排序中排序靠前的前M个算法。
示例性的,若第一集合的元素的个数小于M,则上述电子设备从第一集合中选出K个算法即为:电子设备确定第一集合中的全部算法作为上述K个算法。
可选的,可以基于sort排序函数对第一集合中包含的算法的第一权重从大到小进行排序,得到第一权重由大到小排序的队列,从队列中确定第一权重排名靠前的前M个算法作为上述K个算法。
在另外一些可能的实现方式中,若第一集合中每个算法对应的第一权重均相等,则电子设备再将第一集合中的每个算法基于理想帧率从大到小进行排序,选择排名靠前的前M个算法作为上述K个算法。也即将第一集合中每个算法的理想帧率作为每个算法的第二权重值,选择第二权重值排名靠前的前M个算法作为上述K个算法。
可理解的,理想帧率越高,算法被调度用于处理图像帧的次数也理应更大,从而在第一权重相等的情况下,优先选择理想帧率更高的,可以在错帧调度改善性能的同时,改善由于M值(被调度用于处理同一图像帧的算法数量的最大值)的限制给帧率较高的算法带来的降帧问题,更大化地满足对帧率要求高的算法的理想帧率,进一步地兼顾图像效果。
可选的,若第一集合中存在多个算法(该多个算法是指大于或等于两个算法),这多个算法的第一权重相等,则电子设备将算法的理想帧率作为第二权重值,且该第一权重的优先级高于该第二权重值,基于该第一权重和第二权重值从第一集合中选出优先级排序靠前的前K个算法作为上述M个算法。
例如,K取值为3,第一集合的元素个数为5,将第一集合中的算法按照第一权重从大到小排序的前两个算法的第一权重不相等,但存在两个或两个以上的算法,这两个或两个以上的算法的第一权重的排序并列第3,则电子设备选择这两个或两个以上算法中理想帧率最高的算法作为排名靠前的第3个算法,若这两个或两个以上的算法的理想帧率相同,则电子设备随机选择这两个或两个以上算法中的任意一个算法作为排名靠前的第3个算法。
可理解的,算法的理想帧率大,一般可以说明与算法对应的功能的实现(例如人脸检测功能等)对算法处理图像帧的要求较高,例如对精确度、实时性等的要求较高,反之算法的理想帧率小,一般可以说明与算法对应的功能的实现(例如人脸检测功能等)对算法处理图像帧的要求较低。基于此,若存在多个算法的第一权重排序并列第K,则电子设备优先选择这多个算法中理想帧率更高的算法作为上述第一权重排序靠前的K个算法中的第K个算法,也就是说,由于低需求的算法适当降频后依旧可以满足相应的功能需求的概率比高需求的算法适当降频后依旧可以满足相应的功能需求的概率更大,基于此当出现由于K值的限制需要对算法进行适当的降频时,优先选择低需求的算法进行降频而不是优先选择高需求的算法进行降频,由此,可以在错帧调度改善性能的同时,改善由于M值的限制给算法带来的降帧问题对算法本身实现的功能的影响。
可选的,若第一集合中每个算法对应的第一权重不均相等、且第一集合中存在多个算法(该多个算法是指大于或等于两个算法),这多个算法的第一权重排序并列第K,则电子设备基于算法的理想帧率,也可以优先选择这多个算法中理想帧率最低的算法作为第一权重排序靠前的K个算法中的第K个算法,根据具体需求而定,本文对此不做限定。若这多个算法的理想帧率也均相同,则随机选择这多个算法中的其中一个作为排序靠前的K个算法中的第K个算法。
S410、电子设备确定第一集合中的b算法是否属于上述K个算法。
在本申请实施例中,b算法为第一集合中的任意一个算法。
若确定第一集合中的b算法属于上述K个算法,则执行步骤S411和S412,若确定第一集合中的b算法不属于上述K个算法,则执行步骤S413。
S411、电子设备将b算法的第一权重重置为相机预览帧率。
S412、电子设备将b算法的第一权重与b算法的步长的差值作为b算法更新后的第一权重。
在本申请实施例中,b算法的步长即为b算法的理想帧率。
在本申请实施例中,对于第一集合中的上述K个算法中的每一个算法,在上述步骤S409之后,基于S411和S4112,将该K个算法中的每一个算法的第一权重更新为相机预览帧率与该算法的理想帧率的差值。
S413、电子设备将b算法的第一权重与b算法的步长的和作为b算法更新后的第一权重。
在本申请实施例中,对于第一集合中除了上述K个算法之外的每一个算法,在上述步骤S408之后,基于S413,将第一集合中除了上述K个算法之外的每一个算法的第一权重减去该算法的理想帧率得到的差值作为该算法更新后的第一权重。
在本申请实施例中,电子设备执行完步骤S412和S413之后再执行步骤S414。可理解的,限定S414在执行完步骤S412和S413之后再执行,可以避免出现S413的执行晚于对第一图像帧的下一图像帧执行S403的时序问题,从而可以避免在b算法更新第一权重之前就将b算法的第一权重作为下一图像帧调度算法的决策依据的时序问题。
S414、电子设备将上述K个算法作为处理第一图像帧被调度的算法。
S415、等待下一图像帧。
在本申请实施例中,对于视频流中的每一帧均可以采用上述步骤S403~S414确定处理该帧图像调度的算法。
在一些其他的算法调度方法中,N个算法之间并行执行且没有协同,也就是说电子设备在处理上述第一视频流的起始图像帧时,就会同时调用N个算法处理该起始图像帧,由于N个算法的理想帧率一般均为相机预览帧率的因数,从而在起始图像帧之后的图像帧中,还是会存在一个或多个图像帧,该一个或多个图像帧在处理时被调用的算法仍为该N个算法,一方面,N个算法同时运行,功耗较大,另外一方面,N个算法可能会都需要部署在相同的处理器(例如NPU)上,由于处理器算力有限,N个算法实际上只能串行执行,算法可能不能在预期时间内执行完,造成丢帧、卡顿、影响效果等的问题。
然而,采用本申请提供的算法调度方法,设定处理同一图像帧允许调度的算法数量的最大值M,上述K小于或等于该M,也即限定处理第一视频流中的每一帧图像调度的算法的数量只能小于或等于M,达到对N个算法中的部分算法进行错帧处理的目的,例如对于起始图像帧,只能调度N个算法中的K个算法处理该起始图像帧,而不是调度N个算法处理该起始图像帧,达到错帧处理,改善性能。另外,为每个算法设定相同的初始权重值,若按照算法的理想帧率该算法期望被调用用于处理当前帧,则该算法被调度的第一权重越大,电子设备可以根据第一权重的加减策略最大化地每个算法满足理想帧率的概率,当算法无法满足理想帧率时,基于算法的理想帧率越低表示对相应的图像功能的需求越低、适当降频也可能算法满足对应的图像功能需求,则优先对帧率较低的算法进行适当的降频。
由此,在有限的算力下,对算法进行错帧调度改善功耗问题,同时可以基本满足各算法对应实现的图像功能的需求,有效权衡功耗和图像效果。
示例性的,假设上述相机预览帧率为30fps,上述K取值为1(也即处理每一帧图像被调度的算法的数量为1),上述N个算法为C、D、E、F、G五个算法,这五个算法在运行时均需要部署在CPU和NPU上,C、D、E、F、G算法的理想帧率分别为10每秒传输帧数(fps)、10fps、7.5fps、2fps、6fps,如下表3展示N个算法中的每一个算法针对视频流从起始图像帧开始每一帧被调度的第一权重,如下表4采用打勾的符号展示处理对应的图像帧被调度的算法。
表3
模拟帧率 | 算法 | 部署 | 理想帧率 | 1(起始帧) | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
8.5fps | C | CPU&NPU | 10fps | 30 | 20 | 10 | 0->30 | 40(->30) | 20 | 10 | 0->30 | 40(->30) | 20 |
8.5fps | D | CPU&NPU | 10fps | 30 | 40(->30) | 20 | 10 | 0->30 | 40(->30) | 20 | 10 | 0->30 | 40(->30) |
6fps | E | CPU&NPU | 7.5fps | 30 | 37.5 | 45(->30) | 22.5 | 15 | 7.5 | 0->30 | 37.5(->30) | 22.5 | 15 |
2fps | F | CPU&NPU | 2fps | 30 | 32 | 34 | 36 | 38 | 40 | 42(->30) | 28 | 26 | 24 |
5.5fps | G | CPU&NPU | 6fps | 30 | 36 | 42 | 48(->30) | 24 | 18 | 12 | 6 | 0->30 | 36 |
表4
模拟帧率 | 算法 | 部署 | 理想帧率 | 1(起始帧) | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
8.5fps | C | CPU&NPU | 10fps | √ | √ | √ | |||||||
8.5fps | D | CPU&NPU | 10fps | √ | √ | √ | |||||||
6fps | E | CPU&NPU | 7.5fps | √ | √ | ||||||||
2fps | F | CPU&NPU | 2fps | √ | |||||||||
5.5fps | G | CPU&NPU | 6fps | √ |
其中,对于视频流中的第一帧(起始帧),每个算法的第一权重相等,均等于30,则选择理想帧率最大的C算法作为第一帧被调度的算法。在选择该C算法作为第一帧图像被调度的算法之后,更新C算法的第一权重,具体为依据上述步骤S411和S412将C算法的第一权重更新为相机预览帧率与C算法的理想帧率的差值,以及,更新C、D、E、F、G五个算法中除了C算法之外的其他四个算法的第一权重,具体为将D、E、F、G四个算法的第一权重均加上算法对应的理想帧率(依据上述步骤S413),将每个算法更新后的第一权重作为下一帧图像的算法的第一权重以使得继续执行S415、S403~S410确定下一帧图像被调用的算法。
基于此,第二帧图像中C、D、E、F、G算法的权重值分别为20、40、37.5、32、36,则选择权重值最大的40对应的D算法作为第二帧图像被调用的算法,以及依据上文步骤S410~S412更新每个算法对应的第一权重,以此类推。另外,若出现第一权重为0的,例如表3中的第4帧图像,则先将该算法对应的第一权重重置为初始权重值30,再选出权重排名第一的算法作为该帧图像被调用的算法。
关于表3或表4中的模拟帧率是指根据本申请提供的算法调度方法,C、D、E、F、G算法处理视频流实际达到的帧率。可理解的,开发人员可以基于实验模拟数据中算法的模拟帧率和理想帧率的对比,选取合适的K值,使得在有限的算力下,有效权衡功耗和图像效果,其中,K值越小功耗越小、算法的模拟帧率和理想帧率差异越小,图像处理效果越好。
在一些可能的实现方式中,采用本申请提供的方法调度N个算法对第一视频流进行处理,处理完成后,N个算法分别对应的模拟帧率与理想帧率的差值小于预设差值,例如,该预设差值为理想帧率的10%。
在本申请实施例中,可以由任意具备图像处理功能的电子设备执行本申请实施例提供的算法调度方法。该电子设备的形态可以包括但不限于手机终端、平板终端、笔记本电脑、桌面型计算机、膝上型计算机、或手持计算机等,本文对此不做限定。
请参阅图5,以图5所示的电子设备100为例,详细说明本申请提供的电子设备的结构示意图。
电子设备100可以包括处理器110,外部存储器120,内部存储区121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,传感器模块170,按键180,摄像头190,以及显示屏191。其中传感器模块170可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图5所示中更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图5所示的部件可以以硬件,软件或软件和硬件的组合实现。例如,电子设备100还可以包括音频模块(扬声器、受话器、麦克风、耳机接口等)、用户标识模块(subscriber identification module,SIM)卡接口、以及马达等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(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)等。
图6是本申请实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将系统分为四层,从上至下分别为应用层,应用框架层,运行时(Runtime)和系统库,硬件抽象层,以及内核层。
应用层可以包括一系列应用程序包。
如图6所示,应用层中的应用程序包可以包括但不限于相机,图库等应用程序。该应用层中还可以包括通话、音乐、视频、短信等应用,本文对此不做限定。
应用框架层为应用层的应用程序提供应用编程接口(application programminginterface,API)和编程框架。应用框架层包括一些预先定义的函数。
如图6所示,应用框架层包括但不限于窗口管理器,内容提供器,通知管理器,电池管理。该应用框架层还可以包括电话管理器、资源管理器等,本文对此不做限定。
窗口管理器用于管理窗口程序。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。视图系统包括可视控件,例如显示文字的控件,显示图像的控件等。视图系统可用于构建应用程序。电话管理器用于提供电子设备100的通信功能。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图像,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。
运行时(Runtime)包括核心库和虚拟机。Runtime负责系统的调度和管理。
核心库包含两部分:一部分是编程语言(例如,jave语言)需要调用的功能函数,另一部分是系统的核心库。
应用层和应用框架层可以运行在虚拟机中。虚拟机可以将应用层和应用框架层的编程文件(例如,jave文件)执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库包括但不限于多个功能模块。例如:表面管理器(surface manager),二维图形引擎(例如:SGL,媒体库(Media Libraries)等。该系统库还可以包括三维图形处理库(例如:OpenGL ES))等,本文对此不做限定。
硬件抽象层可以包括但不限于感知类算法抽象接口、硬件合成器。在一些可能的实现方式中,该硬件抽象层还可以包括图形模块、蓝牙库模块、摄像头模块等,本文对此不做限定。
在本申请实施例中,硬件抽象层还可以包括算法调度模块,该算法调度模块用于执行本申请提供的算法调度方法。示例性的,由应用层的相机应用、以及该算法调度模块配合执行本申请提供的算法调度方法。
在另外一些可能的实现方式中,该算法调度模块也可以位于该软件构架的其他层级中,此处不作限定。
内核层是硬件和软件之间的层。内核层包含但不限于显示驱动,摄像头驱动,传感器驱动,设备驱动等。该内核层还可以音频驱动,虚拟卡驱动等,本文对此不做限定。
示例性的,电子设备可以基于应用层中的相机应用和内核层中的摄像头驱动以拍照方式获取视频流,基于硬件抽象层中的算法调度模块确定处理视频流中的第一图像帧需要调度的算法。
示例性的,电子设备还可以基于应用层中的无线应用模块或有线应用模块(例如wifi应用、蓝牙应用、近场通信应用等)以数据传输方式获取视频流,然后基于硬件抽象层中的算法调度模块确定处理视频流中的第一图像帧需要调度的算法。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (14)
1.一种算法调度方法,其特征在于,所述方法包括:
获取视频流,所述视频流包含至少两个图像帧;
从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法,所述K个算法为第一算法序列中的前K个算法,所述第一算法序列是将所述N个算法按照所述N个算法分别对应的第一优先级从高到底排序得到的,所述N为大于或等于2的整数,所述K小于所述N,所述第一图像帧为所述至少两个图像帧中的一个图像帧;
其中,所述第一优先级由第一周期长度确定,所述第一周期长度由所述视频流对应的预览帧率与所述第一优先级对应的算法的帧率确定。
2.如权利要求1所述的方法,其特征在于,所述第一优先级由第一周期长度确定包括:所述第一优先级由所述第一周期长度和所述第一优先级对应的算法的第一帧数确定;
其中,所述第一帧数的取值满足以下条件:在所述第一优先级对应的算法的第一调度次数等于0的情况下,所述第一帧数为所述第一图像帧与所述视频流的起始图像帧之间间隔的图像帧的数目;在所述第一调度次数大于0的情况下,所述第一帧数为所述第一图像帧与历史图像帧之间间隔的图像帧的数目,所述历史图像帧为所述视频流中所述第一优先级对应的算法最近一次被调度处理的图像帧,所述第一调度次数为从所述起始图像帧起所述第一优先级对应的算法被调度用于处理图像帧的次数;
在所述第一帧数大于或等于所述第一周期长度的情况下,所述第一帧数越大则所述第一优先级越大,以及,在所述第一帧数大于或等于所述第一周期长度时的所述第一优先级大于在所述第一帧数小于所述第一周期长度时的所述第一优先级。
3.如权利要求1或2所述的方法,其特征在于,所述第一优先级由第一周期长度确定包括:所述第一优先级由所述第一优先级对应的算法的第一权重确定,
其中,在所述第一优先级对应的算法满足被调用条件的情况下,所述第一权重满足公式:W=所述预览帧率+L*所述第一优先级对应的算法的帧率,其中,所述W为所述第一权重,所述L为所述第一优先级对应的算法的第一帧数;
在所述第一优先级对应的算法不满足所述被调用条件的情况下,所述第一权重满足公式:W=所述预览帧率-L*所述第一优先级对应的算法的帧率;
所述第一优先级对应的算法满足被调用条件包括:所述第一优先级对应的算法的第一调度次数等于0,或者所述第一帧数大于或等于所述第一周期长度,所述第一调度次数为从所述视频流的起始图像帧起所述第一算法被调度用于处理图像帧的次数;
所述L的取值满足以下条件:在所述第一调度次数等于0的情况下,所述L为所述第一图像帧与所述视频流的起始图像帧之间间隔的图像帧的数目;在所述第一调度次数大于0的情况下,所述L为所述第一图像帧与历史图像帧之间间隔的图像帧的数目,所述历史图像帧为所述视频流中所述第一优先级对应的算法最近一次被调度处理的图像帧。
4.如权利要求1-3任一项所述的方法,其特征在于,所述第一优先级由第一周期长度确定包括:所述第一优先级由所述第一优先级对应的算法的第一权重确定,所述第一权重的初始值与所述预览帧率相等,所述从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法包括:
在所述N个算法中包含P个算法、且所述P个算法分别对应的第一权重满足预设条件的情况下,将所述P个算法分别对应的第一权重的值均重置为所述初始值,所述P大于或等于0且小于或等于所述N;
确定第一集合,所述第一集合为所述N个算法中算法对应的第一权重大于或等于所述初始值的算法的集合;
从所述第一集合中确定K个算法作为处理第一图像帧需要调度的算法,所述K个算法为第二算法序列中的前K个算法,所述第二算法序列是将所述第一集合中的G个算法按照所述G个算法分别对应的第一优先级从高到底排序得到的,所述G为所述第一集合包含的算法的个数;在所述G小于M的情况下,所述K等于所述G,在所述G大于或等于所述M的情况下,所述K等于所述M,所述M为预设的处理同一图像帧被调度的算法的数量的最大值;
将第一算法对应的第一权重减去所述第一算法对应的帧率后得到的值作为更新后的所述第一算法对应的第一权重,所述第一算法为所述N个算法中算法对应的第一权重小于所述初始值的算法;
将所述预览帧率减去第二算法对应的帧率后得到的值作为更新后的所述第二算法对应的第一权重,所述第二算法为所述N个算法中算法对应的第一权重等于所述初始值的算法;
将第三算法对应的第一权重加上所述第三算法对应的帧率后得到的值作为更新后的所述第三算法对应的第一权重,所述第三算法为所述N个算法中算法对应的第一权重大于所述初始值的算法。
5.如权利要求4所述的方法,其特征在于,
所述第一权重满足预设条件为:所述第一权重取值为0;或者,
所述第一权重满足预设条件为:所述第一权重小于所述第一权重对应的算法的帧率。
6.如权利要求3-5任一项所述的方法,其特征在于,所述第一优先级由所述第一优先级对应的算法的第一权重确定包括:所述第一优先级所述第一权重和所述第一算法对应的第二权重确定,且所述第一权重的优先级高于所述第二权重的优先级,所述第二权重为所述第一优先级对应的算法的帧率。
7.如权利要求6所述的方法,其特征在于,所述从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法包括:
在所述N个算法中每个算法对应的第一权重均相等的情况下,确定第三算法序列中的前K个算法作为处理第一图像帧需要调度的算法,所述第三算法序列是将所述N个算法按照所述N个算法分别对应的第二权重从而大到小排序得到的。
8.如权利要求6所述的方法,其特征在于,所述从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法包括:
将所述N个算法按照所述N个算法分别对应的第一权重从大到小排序,得到第四算法序列;
在所述第四算法序列中包含Q个算法、且所述Q个算法的排名并列第K的情况下,将所述Q个算法按照所述Q个算法分别对应的第二权重从大到小排序,得到第五算法序列,所述Q大于或等于2;
将所述第四算法队列中的前K-1个算法、以及所述第五算法队列中的第一个算法,作为处理第一图像帧需要调度的算法。
9.如权利要求1-8任一项所述的方法,其特征在于,所述第一周期长度由所述视频流对应的预览帧率与所述第一优先级对应的算法的帧率确定包括:所述第一周期长度为所述预览帧率与所述第一优先级对应的算法的帧率的比值。
10.如权利要求1或2所述的方法,其特征在于,所述第一优先级由第一周期长度确定包括:所述第一优先级由所述第一优先级对应的算法的第一权重确定,
在所述第一优先级对应的算法满足被调用条件的情况下,所述第一权重满足公式:W=(L+1)*第一优先级对应的算法的帧率,其中,所述W为所述第一权重,所述L为所述第一优先级对应的算法的第一帧数;
在所述第一优先级对应的算法不满足所述被调用条件的情况下,所述第一权重为第一预设值,所述第一预设值与所述N个算法分别对应的帧率以及所述N个算法分别对应的帧率的倍数均不相等;
所述第一优先级对应的算法满足被调用条件包括:所述第一优先级对应的算法的第一调度次数等于0,或者所述第一帧数大于或等于所述第一周期长度,所述第一调度次数为从所述视频流的起始图像帧起所述第一算法被调度用于处理图像帧的次数;
所述L的取值满足以下条件:在所述第一调度次数等于0的情况下,所述L为所述第一图像帧与所述视频流的起始图像帧之间间隔的图像帧的数目;在所述第一调度次数大于0的情况下,所述L为所述第一图像帧与历史图像帧之间间隔的图像帧的数目,所述历史图像帧为所述视频流中所述第一优先级对应的算法最近一次被调度处理的图像帧。
11.如权利要求10所述的方法,其特征在于,所述从待选的N个算法中确定K个算法作为处理第一图像帧需要调度的算法包括:
确定第一集合,所述第一集合为所述N个算法中满足所述被调用条件的算法的集合;
从所述第一集合中确定K个算法作为处理第一图像帧需要调度的算法,所述K个算法为第六算法序列中的前K个算法,所述第六算法序列是将所述第一集合中的G个算法按照所述G个算法分别对应的第一优先级从高到底排序得到的,所述G为所述第一集合包含的算法的个数;在所述G小于M的情况下,所述K等于所述G,在所述G大于或等于所述M的情况下,所述K等于所述M,所述M为预设的处理同一图像帧被调度的算法的数量的最大值。
12.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器、存储器和显示屏;
所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行如权利要求1-11任一项所述的方法。
13.一种芯片系统,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行如权利要求1-11中任一项所述的方法。
14.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310206491.4A CN116320727B (zh) | 2023-02-25 | 2023-02-25 | 一种算法调度方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310206491.4A CN116320727B (zh) | 2023-02-25 | 2023-02-25 | 一种算法调度方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116320727A CN116320727A (zh) | 2023-06-23 |
CN116320727B true CN116320727B (zh) | 2024-03-08 |
Family
ID=86825177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310206491.4A Active CN116320727B (zh) | 2023-02-25 | 2023-02-25 | 一种算法调度方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116320727B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117687772B (zh) * | 2023-07-31 | 2024-09-20 | 荣耀终端有限公司 | 一种算法调度方法及电子设备 |
CN118672759A (zh) * | 2024-08-26 | 2024-09-20 | 荣耀终端有限公司 | 算法调度方法及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2590349A1 (en) * | 2011-11-03 | 2013-05-08 | NTT DoCoMo, Inc. | A method for scheduling a scalable video coding stream in a wireless mobile network |
CN112784813A (zh) * | 2021-02-18 | 2021-05-11 | 清华大学 | 基于图像检测的动作识别数据集生成方法及装置 |
CN114168331A (zh) * | 2021-12-07 | 2022-03-11 | 杭州萤石软件有限公司 | 算法部署和调度方法以及算法部署和调度装置 |
WO2022206494A1 (zh) * | 2021-03-29 | 2022-10-06 | 华为技术有限公司 | 目标跟踪方法及其装置 |
WO2022262260A1 (zh) * | 2021-06-15 | 2022-12-22 | 荣耀终端有限公司 | 一种拍摄方法及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11579629B2 (en) * | 2019-03-15 | 2023-02-14 | Nvidia Corporation | Temporal information prediction in autonomous machine applications |
-
2023
- 2023-02-25 CN CN202310206491.4A patent/CN116320727B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2590349A1 (en) * | 2011-11-03 | 2013-05-08 | NTT DoCoMo, Inc. | A method for scheduling a scalable video coding stream in a wireless mobile network |
CN112784813A (zh) * | 2021-02-18 | 2021-05-11 | 清华大学 | 基于图像检测的动作识别数据集生成方法及装置 |
WO2022206494A1 (zh) * | 2021-03-29 | 2022-10-06 | 华为技术有限公司 | 目标跟踪方法及其装置 |
WO2022262260A1 (zh) * | 2021-06-15 | 2022-12-22 | 荣耀终端有限公司 | 一种拍摄方法及电子设备 |
CN114168331A (zh) * | 2021-12-07 | 2022-03-11 | 杭州萤石软件有限公司 | 算法部署和调度方法以及算法部署和调度装置 |
Non-Patent Citations (1)
Title |
---|
面向实时感知性能的分布式交互仿真实体迁移技术;刘晓建, 钟海荣, 金士尧;计算机研究与发展(08);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116320727A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116320727B (zh) | 一种算法调度方法及电子设备 | |
CN117687772B (zh) | 一种算法调度方法及电子设备 | |
CN112527476B (zh) | 资源调度方法及电子设备 | |
CN115918108B (zh) | 一种功能切换入口的确定方法与电子设备 | |
WO2020042112A1 (zh) | 一种终端对ai任务支持能力的评测方法及终端 | |
CN117130773B (zh) | 资源分配方法、装置和设备 | |
WO2021057472A1 (zh) | 一种显示控制方法与电子设备 | |
CN113115460B (zh) | 时隙选择方法及相关设备 | |
CN114546511A (zh) | 插件管理方法、系统及装置 | |
CN114448530A (zh) | 一种用于检测视频监控设备的方法和电子设备 | |
CN114697348A (zh) | 分布式实现方法、分布式系统、可读介质及电子设备 | |
CN114527903A (zh) | 一种按键映射方法、电子设备及系统 | |
CN113806030A (zh) | 应用的调度方法及电子设备 | |
CN115460343B (zh) | 图像处理方法、设备及存储介质 | |
CN116700913A (zh) | 嵌入式文件系统的调度方法、设备及存储介质 | |
CN114172596A (zh) | 信道噪声检测方法及相关装置 | |
CN114364026A (zh) | 通信方法及电子设备 | |
CN115964231A (zh) | 基于负载模型的评估方法和装置 | |
CN117093119B (zh) | 一种应用页面切换方法 | |
CN113179362B (zh) | 电子设备及其图像显示方法 | |
CN116450363B (zh) | 一种资源调度方法及电子设备 | |
CN117891617B (zh) | 资源调度方法、设备、可读存储介质及芯片系统 | |
CN116095230B (zh) | 应用程序推荐方法和终端设备、可读存储介质 | |
CN117956042B (zh) | 一种请求调度方法和设备 | |
WO2024160019A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |