一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

算法更新的方法、系统及设备与流程

2021-10-29 22:39:00 来源:中国专利 TAG:
1.本技术涉及通信领域,尤其涉及算法更新的方法、系统及设备。
背景技术
::2.近年来,随着计算机、网络、图像处理以及传输技术的发展,视频监控领域的摄像机也随之变得越来越智能化,摄像机可以通过加载各种算法来实现各种各样的业务需求,比如对拍摄到的图像进行自动识别、存储、检测和自动报警等等,从而被广泛应用于不同的业务场景中。3.当前的摄像机可以支持不同的应用场景。但是每在新业务场景或者业务场景发生变化时,都需要开发人员根据新的业务需求,编写好完整的算法更新包,然后使用该算法更新包对摄像机原有场景的算法包进行替换,这一过程将消耗大量的人力资源和时间。技术实现要素:4.本技术提供了一种算法更新的方法,系统及设备,用于解决当前摄像机升级过程中消耗大量人力资源和时间的问题。5.第一方面,提供了一种摄像机升级的方法,该方法包括以下步骤:6.首先,计算设备接收第一业务需求,然后生成用于实现第一业务需求的第一算法链,该第一算法链用于描述执行第一业务需求的多个第一算法模块的执行顺序,接着,计算设备从本地获取多个第一算法模块中的一部分算法模块,并从远端算法池中获取多个第一算法模块中的其他算法模块,获得到第一算法链所需的多个第一算法模块之后,计算设备向终端设备发送第一算法链和多个第一算法模块,以供终端设备按照上述第一算法链执行多个第一算法模块实现第一业务需求。7.使用本技术提供的算法更新方法,首先通过计算设备,根据业务需求生成算法链,并从算法池中下载该算法链所需的算法模块,然后再向终端设备发送该算法链和算法模块,终端设备可以按照算法链执行上述算法模块实现业务需求,完成终端设备的算法更新。相比于通过人工根据新的业务需求生成算法更新包,并将使用该算法更新包对摄像机原有场景的算法包进行替换,本技术提供的算法更新方法可以使得摄像机的算法更新过程不再需要人工介入,计算设备可以根据新的业务需求直接调整算法链,再通过调用模块执行调整后的算法链实现业务需求,使得摄像机升级过程所需的时间和人力资源大大减少,可扩展性更强,适用的业务场景更加广泛。8.简言之,计算设备收到需要由终端设备(例如摄像机)执行的业务请求后,生成实现业务请求的算法链,对于组成所述算法链的算法模块,一部分直接使用计算设备本地的算法模块,另外一部分算法模块(例如所述计算设备本地无法提供的算法模块)则从远端服务器中获得,从而既能对摄像机的算法实现更新,又利用到了计算设备本地已有的算法模块资源。而现有技术中,由开发人员生成用于执行业务请求的完整的算法包,然后把整个算法包从远端服务器更新摄像机。因此,现有技术既没有生成算法链,也没有合理利用所述计算设备本地已有的算法模块。和现有技术相比,本方案减少了对计算设备算法更新过程所需的时间和带宽资源占用。9.在第一方面的一种可能的实现方式中,上述终端设备是摄像机,第一业务需求包括人员识别、人脸识别、车辆识别、车牌识别中的一个。10.举例来说,图2描述的应用场景中,终端设备是摄像机,那么摄像机1的业务需求可以是识别超速行驶的车辆,并记录其车牌号,摄像机2的业务需求可以是识别闯红灯的车辆,并记录其车牌号,应理解,上述举例仅用于说明,不同应用场景中的摄像机业务需求不同,本技术不作具体限定。11.在第一方面的一种可能的实现方式中,远端算法池包括第一算法子池以及第二算法子池,计算设备从远端算法池中获取多个第一算法模块中的其他算法模块包括:首先,计算设备向第一算法子池发送获取请求,以获取多个第一算法模块中的其他算法模块。然后,计算设备接收第一算法子池发送的多个第一算法模块中的其他算法模块,多个第一算法模块中的其他算法模块是第一算法子池直接从第一算法子池本地获取的,或者,多个第一算法模块中的其他模块是第一算法子池从第二算法子池获取的,或者,多个第一算法模块中的其他算法模块中的部分算法模块是第一算法子池从第一算法子池本地获取的,部分算法模块是第一算法子池从第二算法子池获取的。12.上述实现方式中,第一算法子池与上述终端设备的距离还可以小于第二算法子池与上述终端设备的距离。举例来说,部署第二算法子池的存储设备是云服务器,部署第一算法子池的存储设备是边缘计算设备,该计算设备与边缘计算设备连接,而边缘计算设备与云服务器连接。这样通过多级部署算法池的方式,可以使得计算设备获取算法模块的速度更快,可以获取到的算法模块类型更全,可适应的业务场景更加广泛。通过多级部署算法池的方式,可以使得摄像机算法编排模块获取算法模块的速度更快,提高整个算法更新系统的升级速度,同时可以使得摄像机能够获取到的算法模块种类更多,适应的业务场景更加丰富。13.在第一方面的一种可能的实现方式中,每个算法模块拥有多个版本。因此,上述计算设备从本地获取多个第一算法模块中的一部分算法模块,从远端算法池中获取多个第一算法模块中的其他算法模块包括:计算设备确定终端设备的参数信息;计算设备从本地获取多个第一算法模块中的一部分与参数信息对应版本的算法模块,从远端算法池中获取多个第一算法模块中的与参数信息对应版本的其他算法模块,其中,多个第一算法模块中至少一个第一算法模块拥有多个版本。14.可以理解的,人工根据业务需求编辑算法更新包对终端设备进行完整替换版本的方式实现业务需求,往往会容易出现各种硬件冲突的问题,需要多次调试修改算法更新包,消耗大量的人力和时间。而本技术提供的算法更新方法,远端算法池可以直接终端设备的参数信息返回合适版本的算法模块,可以确保终端设备上的调用模块根据第一算法链执行上述多个第一算法模块时,不会出现硬件冲突的问题,避免了多次调试消耗的人力和时间资源,提高算法更新的效率。15.在第一方面的一种可能的实现方式中,部署第二算法子池的存储设备是云服务器,部署第一算法子池的存储设备是边缘计算设备,计算设备与边缘计算设备连接,边缘计算设备与云服务器连接。16.在第一方面的一种可能的实现方式中,计算设备可以维护一个对应关系库,该对应关系库中包括多个业务需求以及算法链之间的对应关系,比如业务需求1和业务需求2对应算法链1,业务需求3对应算法链2,业务需求4对应算法链3或者算法链4等等,计算设备可以直接查询该对应关系库,确定第一业务需求对应的第一算法链。17.其中,对应关系库中的多条对应关系可以是事先规范或者机器学习生成。这里,事先规范指的是开发人员可以通过调查问卷、角色扮演、使用剧情以及数据统计等方法,理解不同业务场景下的业务需求后,设计与各种业务需求对应的算法链,获得一个包含多个业务需求和算法链之间对应关系的对应关系库。机器学习指的是将上述通过事先规范生成的多个对应关系作为训练数据,通过决策树算法、遗传算法、神经网络方法、贝叶斯网络方法、粗糙集方法、规则归纳方法、数据库方法和可视化方法等等中的一种或者多种算法获得更多的对应关系,生成包含更多对应关系的对应关系库。应上述算法举例仅用于说明,并不能构成具体限定。18.在第一方面的一种可能的实现方式中,如果终端设备根据第一算法链执行上述多个第一算法模块实现第一业务需求以后,终端设备的业务场景发生了变化,计算设备接收到了用户输入的第二业务需求,那么计算设备可以继续生成用于实现第二业务需求的第二算法链,然后从本地和上一次获取的多个第一算法模块中,获取多个第二算法模块中的一部分算法模块,再从远端算法池中获取多个第二算法模块中的其他算法模块,最后向终端设备发送第二算法链和多个第二算法模块,以供终端设备按照第二算法链执行多个第二算法模块实现第二业务需求。19.举例来说,摄像机2之前的第一业务需求为闯红灯车辆车牌号码识别,第一算法链为车辆检测算法模块-跟踪算法模块-位置识别算法模块-车牌识别算法模块,假设计算设备和终端设备均为摄像机2,由于该区域总是发生行人闯红灯出现事故,摄像机2需要额外具备监控识别闯红灯行人身份识别的功能,此时的第二业务需求有2个,即闯红灯车辆车牌号码识别以及闯红灯行人身份识别,摄像机2查询对应关系库之后,可以获得闯红灯车辆车牌号码识别的业务需求对应的第二算法链1:辆检测算法模块-跟踪算法模块-位置识别算法模块-车牌识别算法模块,闯红灯行人身份识别的业务需求对应的第二算法链2:行人检测算法模块-跟踪算法模块-人脸识别算法模块,此时摄像机2已经包含了算法链1所需的多个第一算法模块,因此摄像机2可以只向第一算法子池(即图2中的边缘计算设备)获取算法链2对应的算法模块,从而以最小的改动方式加载新的算法,减少算法更新时的通信消耗量,提高算法更新的效率。20.因此,实施上述实现方式,相比于通过开发人员将变化后的业务场景所需的全部模块,封装打包成一个算法升级包,然后对摄像机进行完整替换版本的方式实现算法更新,本技术提供的算法更新方法更加便捷、快速,避免了人力资源和时间的浪费。21.第二方面,提供了一种算法更新系统,用于对终端设备运行的算法进行更新,该系统包括算法编排模块、远端算法池以及调用模块,其中,算法编排模块用于接收第一业务需求,算法编排模块用于生成用于实现第一业务需求的第一算法链,第一算法链用于描述执行第一业务需求的多个第一算法模块的执行顺序,算法编排模块用于从本地获取多个第一算法模块中的一部分算法模块,从远端算法池中获取多个第一算法模块中的其他算法模块,算法编排模块用于向调用模块发送第一算法链和多个第一算法模块,调用模块用于按照第一算法链执行多个第一算法模块,以供终端设备按照实现第一业务需求。22.在第二方面的一种可能的实现方式中,远端算法池包括第一算法子池以及第二算法子池,算法编排模块用于向第一算法子池发送获取请求,以获取多个第一算法模块中的其他算法模块;算法编排模块用于接收第一算法子池发送的多个第一算法模块中的其他算法模块,其中,多个第一算法模块中的其他算法模块是第一算法子池直接从第一算法子池本地获取的,或者,多个第一算法模块中的其他模块是第一算法子池从第二算法子池获取的,或者,多个第一算法模块中的其他算法模块中的部分算法模块是第一算法子池从第一算法子池本地获取的,部分算法模块是第一算法子池从第二算法子池获取的。23.在第二方面的一种可能的实现方式中,算法编排模块用于确定终端设备的参数信息;算法编排模块用于从本地获取多个第一算法模块中的一部分与参数信息对应版本的算法模块,从远端算法池中获取多个第一算法模块中的与参数信息对应版本的其他算法模块,其中,多个第一算法模块中至少一个第一算法模块拥有多个版本。24.在第二方面的一种可能的实现方式中,第二算法子池部署于云服务器,第一算法子池部署于边缘计算设备,边缘计算设备与云服务器连接;算法编排模块和调用模块部署于摄像机,摄像机与边缘计算设备连接;或者,算法编排模块部署于边缘计算设备,调用模块部署于摄像机,其中,摄像机与边缘计算设备相连;或者,算法编排模块和调用模块部署于边缘计算设备。25.在第二方面的一种可能的实现方式中,算法编排模块还用于在向调用模块发送算法链和多个第一算法模块之后,接收第二业务需求;算法编排模块还用于生成用于实现第二业务需求的第二算法链,第二算法链用于描述执行第二业务需求的多个第二算法模块的执行顺序;算法编排模块还用于从本地和多个第一算法模块中获取多个第二算法模块中的部分算法模块,从远端算法池中获取多个第二算法模块中的其他算法模块;算法编排模块还用于向调用模块发送第二算法链和多个第二算法模块;调用模块用于按照第二算法链执行多个第二算法模块,实现第二业务需求。26.第三方面,提供了一种计算机程序产品,包括计算机程序,当计算机程序被计算设备读取并执行时,实现如第一方面所描述的方法。27.第四方面,提供了一种计算机可读存储介质,包括指令,当所述指令在计算设备上运行时,使得计算设备实现如第一方面描述的方法。28.第五方面,提供了一种电子设备,包括处理器和存储器,处理器执行存储器中的代码实现如第一方面描述的方法。附图说明29.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。30.图1是本技术提供的一种算法更新系统的结构示意图;31.图2是本技术提供的一种应用场景下的算法编排模块、调用模块和远端算法池;32.图3是本技术提供的另一应用场景下的摄像机、边缘节点和中心节点之间的网络拓扑图;33.图4是本技术提供的一种算法更新方法的流程示意图;34.图5是一种应用场景下本技术提供的算法更新方法的流程示意图;35.图6是另一种应用场景下本技术提供的算法更新方法的流程示意图;36.图7是本技术提供的一种电子设备的结构示意图。具体实施方式37.本技术的实施方式部分使用的术语仅用于对本技术的具体实施例进行解释,而非旨在限定本技术。38.随着科学技术的不断发展,视频监控领域的摄像机朝着智能化的方向不断演进。其中,智能分析是智能摄像机的核心功能,其功能和性能又完全取决于其内嵌的算法,比如车牌识别算法、交通行为分析算法、视频质量诊断算法等等。一般来说,不同业务场景下的智能摄像机需要载入不同的算法,比如在十字路口的智能摄像机,需要一些能够根据摄像机捕捉到的画面检测到违章停车、压黄线、逆行等检测功能的算法,还需要一些能够根据摄像机捕捉到的画面识别车牌、车型、人脸等识别功能的算法;在视频质量诊断系统中的智能摄像机,需要一些能够根据摄像机捕捉到的画面检测到雪花、条纹、视频丢失情况等检测功能的算法。39.当摄像机第一次载入业务场景所需要的算法时,需要开发人员根据该业务场景的业务需求,人工编辑好算法更新包,然后使用该算法更新包对智能摄像机进行算法的加载,这一过程不仅消耗大量的人力资源,也将耗费大量时间。并且,对于已经根据原有业务场景的业务需求配置好的智能摄像机来说,如果新的业务需求与原有业务需求非常类似,只有一点不同,此时也需要开发人员根据新的业务需求,重新编写算法更新包,然后使用该算法更新包对摄像机原有场景的算法包进行替换,造成人力资源的浪费。40.举例来说,某路段之前设置了禁停标志,该路段的智能摄像机的业务需求包括检测违章停车、检测闯红灯的行人身份以及检测闯红灯的车辆车牌号,现在该路段禁停标志被撤离,该路段的智能摄像机不再需要检测违章停车了,但是其他需求(检测闯红灯的行人身份以及检测闯红灯的车辆车牌号)仍然保留,在这种情况下,开发人员在对该路段的智能摄像机进行算法更新时,需要将检测闯红灯的行人身份以及检测闯红灯的车辆车牌号的算法封装打包成一个新的算法更新包,然后在摄像机上安装该算法更新包,替换掉之前的算法包来实现算法更新,算法更新的过程缺少可扩展性,无法直接对原有的算法包进行修改调整,不但造成人力资源和时间的浪费。41.为了解决上述算法更新过程中,容易浪费人力资源以及时间的问题,本技术提供了一种算法更新系统100,该系统中的算法编排模块可以根据业务需求生成算法链,并从本地和远端算法池中获取该算法链所需的多个算法模块,然后通过调用模块,根据算法链执行上述多个算法模块来实现业务需求,完成摄像机的算法更新。相比于通过人工根据新的业务需求生成算法更新包,并将使用该算法更新包对摄像机原有场景的算法包进行替换,本技术提供的算法更新系统可以使得摄像机的算法更新过程不再需要人工介入,算法编排模块可以根据新的业务需求直接调整算法链,再通过调用模块执行调整后的算法链实现新业务需求,使得摄像机算法更新所需的时间和人力资源大大减少。42.如图1所示,图1是本技术提供的一种算法更新系统100的结构示意图。该算法更新系统100包括算法编排模块110、远端算法池120(例如算法池服务器)以及调用模块130,该系统100用于对终端设备运行的算法进行更新,这里,终端设备可以是摄像机,也可以是其他嵌入式设备,比如在物联网的应用场景中,终端设备还可以是芯片、单片机等等,本技术不作具体限定,为了便于本技术能够更好的被理解,下文关于算法更新系统100的描述将统一以终端设备是摄像机,算法更新系统100用于对摄像机进行算法更新的应用场景为例进行说明。其中,算法更新系统100内部的单元模块可以有多种划分,各个模块可以是软件模块,也可以是硬件模块,也可以部分是软件模块部分是硬件模块,图1仅为一种示例性的划分方式,本技术不对其进行限制。43.算法编排模块110用于接收第一业务需求,然后生成用于实现该第一业务需求的第一算法链,该第一算法链用于描述执行所述业务需求的多个第一算法模块的执行顺序,接着从本地获取上述多个第一算法模块中的一部分算法模块,从远端算法池120中获取上述多个第一算法模块中的其他算法模块。算法编排模块110通过本地和远端算法池120获取到上述第一算法链所需的多个第一算法模块之后,可以向调用模块130发送上述第一算法链和多个第一算法模块,以供调用模块按照第一算法链执行多个第一算法模块,实现第一业务需求。44.其中,第一算法链(algorithmchain)是由多个第一算法模块组成的一串算法的组合,用于完成第一业务需求的完整的算法功能。算法模块(algorithmmodule)是完成单个算法功能的最小单元。举例来说,如果第一业务需求为监控道路上行驶的车辆,识别出超速车辆的车牌号码,那么第一算法链可以是车辆检测算法模块-跟踪算法模块-位置识别算法模块-车牌识别算法模块等等,也就是说,先检测出每帧图像中的车辆,然后检测出每个车辆的行驶轨迹,计算是否超速,然后将超速车辆进行车牌位置的识别,再对其进行车牌号码的识别。应理解,上述算法链用于举例说明,并不能构成具体限定。45.远端算法池120用于存储各种各样的算法模块,当算法编排模块110向其获取多个第一算法模块中的其他算法模块时,远端算法池120可以向算法编排模块返回上述第一算法模块中的其他算法模块。仍以上述例子为例,如果业务需求为监控道路上行驶的车辆,识别出超速车辆的车牌号码,算法编排模块110生成了算法链:车辆检测算法模块-跟踪算法模块-位置识别算法模块-车牌识别算法模块,如果算法编排模块110本地没有这四个算法模块,算法编排模块110将会向远端算法池120发送获取车辆检测算法模块、跟踪算法模块、位置识别算法模块以及车牌识别算法模块的请求,远端算法池120可以根据该请求,向算法编排模块110返回上述车辆检测算法模块、跟踪算法模块、位置识别算法模块以及车牌识别算法模块。46.需要说明的,远端算法池120不但存储有多个算法模块,适用于各种各样的应用场景,并且每个算法模块还拥有多个版本,每个版本适用于不同硬件环境,比如车辆检测的算法模块可以包括高/低精度版本、高/低资源开销版本、高/低准确率版本、高/低稳定性版本等等,举例来说,下表1显示了一个远端算法池120存储的算法模块示例表格,应理解,表1仅用于举例说明,本技术不对算法模块可能拥有的版本进行限定。47.因此,算法编排模块110在向远端算法池120获取上述多个第一算法模块中的一部分算法模块时,还可以将调用模块130所处的终端设备的参数信息同时发送给远端算法池120,远端算法池120可以根据上述参数信息,返回合适版本的算法模块。48.仍以上述例子为例,第一业务需求为监控道路上行驶的车辆,识别出超速车辆的车牌号码,第一算法链是车辆检测算法模块-跟踪算法模块-位置识别算法模块-车牌识别算法模块,如果调用模块130部署于一台摄像机a上,该摄像机a内的芯片为低端芯片,硬件处理能力很差,远端算法池120中的算法模块如表1所示,那么远端算法池120最终返回给算法编排模块110的算法模块可以是:低精度版本车辆检测算法模块v1.2、低精度版本跟踪算法模块v5.2、低开销版本位置识别算法模块v3.4以及低开销版本车牌识别算法模块v4.4。应理解,远端算法池120根据调用模块所处终端设备的参数信息返回合适版本的算法模块,可以确保调用模块执行算法链时,避免算法更新后出现硬件冲突的问题,提高算法更新的效率。并且,上述举例仅用于说明,并不能构成具体限定。49.表1远端算法池120存储的算法模块示例表格[0050]车辆检测人脸识别位置识别车牌识别跟踪算法高精度版本v1.1v2.1v3.1v4.1无低精度版本v1.2v2.2v3.2v4.2v5.2高开销版本v1.3v2.3无无v5.3低开销版本无v2.4v3.4v4.4无高准确率版本v1.5无无无v5.5………………[0051]具体实现中,算法模块可以以各种动态链接库(dynamiclinklibrary,dll)和配置文件等形式存储于远端算法池120以及算法编排模块110本地,比如可执行与可连接格式(executableandlinkableformat,elf)的动态链接库、xml形式的配置文件、共享对象(sharedobject,so)格式的动态链接库等等,还可以包括其他格式的动态链接库,本技术不作具体限定。[0052]调用模块130用于接收算法编排模块110发送的第一算法链和多个第一算法模块,按照上述第一算法链执行多个第一算法模块实现第一业务需求,完成算法更新。调用模块可以根据第一算法链串联执行多个第一算法模块实现业务需求,也可以并联执行多个算法模块实现业务需求,也可以是部分串联、部分并联执行多个第一算法模块实现业务需求,具体可以根据算法链中的执行顺序执行多个第一算法模块,本技术不做具体限定。简单来说,调用模块130是实现业务需求的模块,也是实际执行算法的模块。[0053]具体实现中,本技术提供的算法更新系统100中的各个模块部署灵活。下面分别对三种模块的部署原则进行说明:算法编排模块110可以部署于任何可以输入业务需求的摄像机或者节点;算法池120可以部署于拥有足够存储容量的摄像机或者节点;调用模块130需要部署于实际执行算法的摄像机或者节点上。因此,结合业务场景的实际情况,各个模块可以部署于相同的摄像机上,也可以部署于相同的节点上,也可以部分部署于摄像机、部分部署于节点上,本技术不作具体限定。[0054]举例来说,如果业务需求是:摄像机直接将拍摄到的图像进行人脸识别,那么调用模块130需要部署在摄像机上,如果业务需求是:摄像机将拍摄到的图像发送至节点进行人脸识别,那么调用模块130需要部署在执行人脸识别算法的节点上。再举例来说,调用模块130在摄像机上时,算法编排模块110也可以部署于该摄像机上;调用模块130在某一节点上时,算法编排模块也可以部署于该节点上,从而减少算法编排模块110和调用模块130之间传输第一算法链和多个第一算法模块的通信开销,提高摄像机算法更新的速度。再举例来说,如果硬件条件限制了算法编排模块110必须设置于节点上或者摄像机上,比如某个摄像机不支持输入业务需求的功能,必须从节点上输入业务需求,那么算法编排模块110可以位于节点上,调用模块130位于摄像机上。应理解,上述举例仅用于说明,并不能构成具体限定。[0055]需要说明的,上述节点可以是通用的物理服务器,例如,如x86服务器等,也可以是基于通用的物理服务器结合网络功能虚拟化(networkfunctionsvirtualization,nfv)技术实现的虚拟机(virtualmachine,vm),所述虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,本技术不做具体限定。[0056]在一实施例中,节点可以分为边缘节点和中心节点。其中,边缘节点和中心节点相连。边缘节点可以是在地理位置上距离用于部署算法编排模块110的计算设备较近的,用于提供计算、存储、通信资源的边缘计算设备,比如位于道路两侧的边缘计算设备。中心节点130可以是在地理位置上距离用于部署算法编排模块110的计算设备较远的,用于提供计算、存储、通信资源的单个计算设备或者计算设备集群,比如云服务器,云服务器具体可以是数据中心的物理服务器,也可以是创建在数据中心的虚拟机,还可以是部署在数据中心的服务器或者虚拟机上的软件系统,该软件系统可以分布式的部署在多个服务器上、或者分布式地部署在多个虚拟机上、或者分布式地部署在虚拟机和服务器上。举例来说,如图2所示,路口设置有摄像机1和摄像机2两个摄像机对路口进行监控,那么边缘节点可以是如图2所示的,距离路口较近的一台边缘计算设备,中心节点可以是离路口很远的某个数据中心中的云服务器,应理解,上述举例仅用于说明,并不能构成具体限定。[0057]在一实施例中,算法池120包括第一算法子池和第二算法子池,第一算法子池部署于上述边缘节点,比如边缘计算设备,第二算法子池部署于上述中心节点,比如云服务器,算法编排模块110在生成第一算法链之后,可以先向边缘计算设备获取上述第一算法模块中的其他算法模块,如果边缘计算设备没有该算法编排模块110所需的算法模块,边缘计算设备可以再向云服务器获取上述第一算法模块中的其他算法模块,然后将获取到的算法模块返回给算法编排模块110。[0058]仍以图2为例,假设路口设置有摄像机1和摄像机2两个摄像机对路口进行监控,假设算法编排模块和调用模块位于摄像机1,算法编排模块获取摄像机1的业务需求,并根据业务需求生成算法链a-b-c-d之后,摄像机1上的算法编排模块可以向距离摄像机较近的边缘节点,即图2中的边缘计算设备获取该算法链所需的算法模块a、b、c以及d,如果边缘计算设备上恰好有算法模块a、b、c和d,那么边缘计算设备边缘计算设备可以直接将上述四个模块返回给算法编排模块,从而完成摄像机的快速升级;如果边缘计算设备边缘计算设备上只有算法模块a和d,那么边缘计算设备还可以向中心节点,也就是距离摄像机较远的,图2中某个数据中心的服务器获取算法模块c和d,然后将获取得到的算法模块c和d与本地的算法模块a和b一同发送给摄像机1上的算法编排模块,算法编排模块将算法链a-b-c-d和算法模块a、b、c以及d一同发送给调用模块,使得摄像机1上的调用模块根据该算法链和算法模块,将多个算法模块按照算法链进行串联并启动算法链,从而实现业务需求,完成摄像机1的升级,同理可以完成摄像机2的升级,这里不展开赘述。[0059]在一实施例中,部署于中心节点的第二算法子池可以存储摄像机全部业务场景下可能用到的算法模块,而部署于边缘节点的第一算法子池可以根据与其通信的摄像机所处的业务场景,存储一些该业务场景常用的算法模块。这样通过多级部署算法子池的方式,可以使得算法编排模块110获取算法模块的速度更快,提高整个算法更新系统的升级速度,同时可以使得算法编排模块110能够获取到的算法模块种类更多,适应的业务场景更加丰富。[0060]举例来说,如图3所示,存储容量较大、距离摄像机较远的中心节点可以用于部署第二算法子池3,该第二算法子池3存储了摄像机1~4全部可能的业务需求所需要的全部算法模块,存储容量较小、距离摄像机较近的边缘节点1和边缘节点2可以用于部署第一算法子池1和第一算法子池2,该第一算法子池1和第一算法子池2存储了部分第二算法子池3中的算法模块,具体地,第一算法子池1可以根据与其相连的摄像机1和摄像机2的业务场景a,从第二算法子池3中下载并存储一些与业务场景a相关的算法模块,第一算法子池2可以是根据与其相连的摄像机3和摄像机4的业务场景b,从第二算法子池3中下载并存储一些与业务场景b相关的算法模块。这样,当摄像机1上的算法编排模块110根据第一业务需求生成第一算法链之后,假设该摄像机1本地并没有第一算法链所需的多个第一算法模块,那么摄像机1上的算法编排模块110可以先向距离摄像机1较近的边缘节点1获取上述多个第一算法模块,如果1边缘节点上的第一算法子池1存储了上述多个第一算法模块,边缘节点1可以直接将上述多个第一算法模块返回给摄像机1;如果边缘节点1只有上述多个第一算法模块的一部分,那么边缘节点1可以向中心节点获取上述多个第一算法模块中,边缘节点1上没有的部分算法模块,最后边缘节点1可以将上述多个第一算法模块发送至摄像机1的算法编排模块110,以供其将上述多个第一算法模块和第一算法链发送给摄像机1上的调用模块130,从而实现业务需求完成摄像机的升级。可以理解的,这样通过多级部署算法池的方式,可以使得摄像机算法编排模块获取算法模块的速度更快,提高整个算法更新系统的升级速度,同时可以使得摄像机能够获取到的算法模块种类更多,适应的业务场景更加丰富。[0061]因此,本技术提供的算法更新系统100可以结合具体的应用场景,灵活部署上述算法编排模块110、第一算法子池、第二算法子池以及调用模块130,使得算法编排模块110获取算法模块的速度更快,提高整个算法更新系统100的升级速度。一般来说,由于算法池需要存储大量的算法模块,需要部署于存储能力较强的设备中,因此第二算法子池通常部署于中心节点,比如云服务器,第一算法子池通常部署于边缘节点,比如边缘计算设备。而算法编排模块110和调用模块130既可以全都部署于摄像机,该摄像机与所述边缘计算设备连接,也可以将算法编排模块110部署于边缘计算设备,调用模块130部署于摄像机,其中,摄像机与边缘计算设备相连,还可以将算法编排模块110和调用模块130全部部署于边缘计算设备。[0062]下表2显示了算法编排模块110、第一算法子池、第二算法子池以及调用模块130可能的部署方案,应理解,表2仅用于举例说明,满足前述内容中描述的部署原则的任何方案都属于本技术方案的保护范围,这里不一一列举。[0063]表2算法编排模块110、算法池120以及调用模块130的部署方案示例[0064][0065]在一实施例中,如果算法编排模块110在调用模块130根据第一算法链执行上述多个第一算法模块实现第一业务需求以后,接收到了第二业务需求,那么算法编排模块110还用于生成用于实现上述第二业务需求的第二算法链,然后从本地和之前获取到的上述多个第一算法模块中,获取上述多个第二算法模块中的部分算法模块,从远端算法池中获取多个第二算法模块中的其他算法模块,最后再向调用模块130发送上述第二算法链和上述多个第二算法模块,以供调用模块130按照第二算法链执行多个第二算法模块,实现第二业务需求。可以理解的,由于算法编排模块110在接收到第二业务需求之前,已经获取到了多个第一算法模块,如果之前获取的多个第一算法模块恰好包括上述多个第二算法模块,算法编排模块110可以不再向远端算法池120获取算法模块,直接将上述多个第二算法模块发送给调用模块110,实现第二业务需求。举例来说,多个第一算法模块为:模块a、模块b和模块c,多个第二算法模块为:模块b和模块c,那么算法编排模块110可以不再向远端算法池120获取算法模块,直接将模块b和模块c发送给调用模块130按照第二算法链执行模块b和模块c,实现第二业务需求,相比于人工根据新业务场景的全部业务需求生成算法更新包(这里将需要对模块b和模块c进行封装打包,生成一个算法更新包),替换掉之前的算法包来实现算法更新的方法,本技术提供的算法更新系统速度更快,且无需人工介入,可扩展性更强,适用的业务场景更加广泛。[0066]需要说明的,图1-图3实施例均以终端设备为摄像机为例进行了说明,具体实现中,单片机、芯片等存储容量较小、但是也需要加载算法实现各种业务需求的设备,也可以适用于本技术提供的算法更新系统。举例来说,边缘节点上的算法编排模块根据业务需求生成算法链之后,将获取到的算法模块(可以是边缘节点本地获取的也可以是中心节点处获取的)和算法链发送给单片机以供其执行,使得单片机的算法更新无需人工介入,算法更新所需的时间和人力资源大大减少,可扩展性更强,适用的业务场景更加广泛。上述举例仅用于说明,对于其他应用场景下的具体实现这里不再一一展开赘述。[0067]综上可知,使用本技术提供的算法更新系统,通过算法编排模块,根据业务需求生成算法链,并从本地和多个算法子池中获取该算法链所需的算法模块,然后通过调用模块,调用算法链实现业务功能,完成摄像机的升级。相比于通过人工根据新的业务需求生成算法更新包,并将使用该算法更新包对摄像机原有场景的算法包进行替换,本技术提供的算法更新系统可以使得摄像机的算法更新过程不再需要人工介入,算法编排模块可以根据新的业务需求直接调整算法链,再通过调用模块执行调整后的算法链实现新业务需求,使得算法更新过程所需的时间和人力资源大大减少,可扩展性更强,适用的业务场景更加广泛。并且,整个算法更新系统的部署非常灵活,可以根据实际情况将各个模块部署在摄像机、边缘节点或者中心节点上,结合具体的应用场景和灵活的部署方式,可以使得算法编排模块获取算法模块的速度更快,进而提高整个算法更新系统的升级速度。[0068]下面结合图4,对本技术供的一种算法更新方法进行说明。该算法更新方法可以应用于图1所示的算法更新系统100中,该方法用于对终端设备运行的算法进行更新。这里,终端设备是部署前述调用模块130的设备,具体可以是摄像机,也可以是其他嵌入式设备,比如在物联网的应用场景中,终端设备还可以是芯片、单片机等等,本技术不作具体限定,为了便于本技术能够更好的被理解,下文关于算法更新方法的描述将统一以终端设备是摄像机,对摄像机进行算法更新的应用场景为例进行说明。如图4所示,本技术提供的算法更新方法包括以下步骤:[0069]s410:计算设备接收第一业务需求。这里,计算设备用于部署前述内容的算法编排模块110,具体可以是前述内容中的摄像机,也可以是边缘计算设备,本技术不作具体限定。[0070]可以理解的,参考前述内容中的表2实施例、图2-图3实施例可知,部署算法编排模块110的计算设备和部署调用模块130的终端设备可以是同一个设备,比如计算设备为边缘计算设备,终端设备为摄像机,也可以是不同的设备,比如计算设备和边缘设备为同一台摄像机,本技术不作具体限定。[0071]在一实施例中,上述第一业务需求包括人员识别、人脸识别、车辆识别、车牌识别中的一个。举例来说,图2描述的应用场景中,摄像机1的业务需求可以是识别超速行驶的车辆,并记录其车牌号,摄像机2的业务需求可以是识别闯红灯的车辆,并记录其车牌号,应理解,上述举例仅用于说明,不同应用场景中的摄像机业务需求不同,本技术不作具体限定。[0072]s420:计算设备生成用于实现上述第一业务需求的第一算法链,其中,该第一算法链用于描述执行上述第一业务需求的多个第一算法模块的执行顺序。[0073]仍以上述例子为例,图2描述的应用场景中,摄像机2的第一业务需求可以是识别闯红灯的车辆,并记录其车牌号,那么算法编排模块根据该业务需求可以生成的算法链为:车辆检测算法模块-跟踪算法模块-位置识别算法模块-车牌识别算法模块,也就是说,先通过车辆检测算法模块检测出红灯期间每帧图像中的车辆,然后通过跟踪算法模块检测出每个车辆的行驶轨迹,确定闯红灯的车辆,然后通过位置识别算法模块将闯红灯的车辆进行车牌位置的识别,最后通过车牌识别算法模块对车牌进行号码识别。应理解,上述第一算法链用于举例说明,并不能构成具体限定。[0074]具体实现中,计算设备可以维护一个对应关系库,该对应关系库中包括多个业务需求以及算法链之间的对应关系,比如业务需求1和业务需求2对应算法链1,业务需求3对应算法链2,业务需求4对应算法链3或者算法链4等等,计算设备可以直接查询该对应关系库,确定第一业务需求对应的第一算法链。其中,对应关系库中的多条对应关系可以是事先规范或者机器学习生成。其中,事先规范指的是开发人员可以通过调查问卷、角色扮演、使用剧情以及数据统计等方法,理解不同业务场景下的业务需求后,设计与各种业务需求对应的算法链,获得一个包含多个业务需求和算法链之间对应关系的对应关系库。机器学习指的是将上述通过事先规范生成的多个对应关系作为训练数据,通过决策树算法、遗传算法、神经网络方法、贝叶斯网络方法、粗糙集方法、规则归纳方法、数据库方法和可视化方法等等中的一种或者多种算法获得更多的对应关系,生成包含更多对应关系的对应关系库。应上述算法举例仅用于说明,并不能构成具体限定。[0075]可以理解的,如果对应关系库中不包括与第一业务需求对应的第一算法链,那么计算设备还可以对第一业务需求进行语义识别、关联词识别等自然语言处理之后,确定与第一业务需求近似的业务需求,在对应关系库中搜索与该近似业务需求对应的算法链,然后对该算法链进行简单调整,获得该第一业务需求对应的第一算法链。举例来说,如果图2所示的摄像机1的第一业务需求为:识别闯红灯的车辆车牌号,但是摄像机1只有2m的可用存储空间,那么计算设备可以现在对应关系库中搜索与“识别闯红灯的车辆车牌号”这一业务需求对应的算法链,获得该业务需求对应的算法链为:车辆检测算法模块-跟踪算法模块-位置识别算法模块-车牌识别算法模块,然后向算法池120获取上述四个模块的小容量版本,从而获得第一业务需求对应的第一算法链。还可以通过设置一些算法模块的连接关系,根据连接关系推理出第一业务需求对应的第一算法链,举例来说,设置连接关系为:设置模块e模块只能与模块f相连。如果查询对应关系库后确定该第一业务需求的近似业务需求对应的算法链为a-b-c,第一业务需求与近似业务需求的差别为需要e模块,那么第一业务需求对应的算法链可以是a-b-c-e-f。应理解,上述举例仅用于说明,并不能构成具体限定。[0076]s430:计算设备从本地获取上述多个第一算法模块中的一部分算法模块,从远端算法池中获取上述多个第一算法模块中的其他算法模块。其中,远端算法池的描述具体可以参考图1-图3实施例中关于算法池120的描述,这里不展开赘述。[0077]可以理解的,如果计算设备本地已经存储了上述多个第一算法模块的部分算法模块,那么计算设备可以向远端算法池获取上述多个第一算法模块中,本地缺少的其他算法模块。从而减少获取多个第一算法模块这一过程所需的通信消耗,提高算法更新的速度。[0078]在一实施例中,参考表1实施例可知,每个算法模块拥有多个版本。因此,上述计算设备从本地获取多个第一算法模块中的一部分算法模块,从远端算法池中获取多个第一算法模块中的其他算法模块包括:计算设备确定终端设备的参数信息;计算设备从本地获取多个第一算法模块中的一部分与参数信息对应版本的算法模块,从远端算法池中获取多个第一算法模块中的与参数信息对应版本的其他算法模块,其中,多个第一算法模块中至少一个第一算法模块拥有多个版本。[0079]举例来说,上述第一业务需求为:对摄像机1拍摄的每帧图像传输至节点1进行车牌号码的识别,也就是说,部署调用模块的终端设备为节点1,部署算法编排模块的计算设备是摄像机1,那么计算设备接收到该第一业务需求之后,可以通过查询对应关系库获得与第一业务需求对应的第一算法链:车辆检测算法模块-位置识别模块-车牌识别模块,假设计算设备上没有上述四种算法模块,那么计算设备可以将获取车辆检测算法模块、位置识别模块以及车牌识别模块的请求发送给算法池,同时将摄像机的参数信息(比如拍摄图片的分辨率)该节点1的参数信息(比如节点1当前的资源占用率较高)一同发送给远端算法池,远端算法池可以将低开销版本的车辆检测算法模块、低开销版本的位置识别模块以及低开销版本的车牌识别模块发送给计算设备,从而确保该节点在进行算法升级之后,可确保节点1的正常运行,也不会对节点1的其他业务产生影响。应理解,上述举例仅用于说明,并不能构成具体限定。[0080]可以理解的,人工根据业务需求编辑算法更新包对终端设备进行完整替换版本的方式实现业务需求,往往会容易出现各种硬件冲突的问题,需要多次调试修改算法更新包,消耗大量的人力和时间。而本技术提供的算法更新方法,远端算法池可以直接终端设备的参数信息返回合适版本的算法模块,可以确保终端设备上的调用模块根据第一算法链执行上述多个第一算法模块时,不会出现硬件冲突的问题,避免了多次调试消耗的人力和时间资源,提高算法更新的效率。[0081]s440:计算设备向终端设备发送第一算法链和多个第一算法模块,以供终端设备按照第一算法链执行多个第一算法模块实现第一业务需求。其中,终端设备可以用于部署前述内容中的调用模块130。[0082]在一实施例中,参考图2以及图3实施例可知,远端算法池包括第一算法子池以及第二算法子池,计算设备从远端算法池中获取多个第一算法模块中的其他算法模块包括:计算设备向第一算法子池发送获取请求,以获取多个第一算法模块中的其他算法模块;计算设备接收第一算法子池发送的多个第一算法模块中的其他算法模块,其中,多个第一算法模块中的其他算法模块是第一算法子池直接从第一算法子池本地获取的,或者,多个第一算法模块中的其他模块是第一算法子池从第二算法子池获取的,或者,多个第一算法模块中的其他算法模块中的部分算法模块是第一算法子池从第一算法子池本地获取的,部分算法模块是第一算法子池从第二算法子池获取的。简单来说,计算设备如果向第一算法子池发送获取n个第一算法模块的请求(n为正整数),在第一算法子池中有这n个第一算法模块的情况下,可以直接向计算设备返回这n个第一算法模块;如果第一算法子池中只有这n个第一算法模块中的m个(m<n,m为自然数)第一算法模块,那么第一算法子池可以向第二算法子池获取剩余的(n-m)个第一算法模块,然后将这(n-m)个第一算法模块与本地的m个第一算法模块一同返回给计算设备。[0083]具体实现中,第一算法子池与上述终端设备的距离小于第二算法子池与上述终端设备的距离。举例来说,部署第二算法子池的存储设备是云服务器,部署第一算法子池的存储设备是边缘计算设备,该计算设备与边缘计算设备连接,而边缘计算设备与云服务器连接,具体可以参考图2和图3实施例,这里不再重复赘述。可以理解的,这样通过多级部署算法池的方式,可以使得计算设备获取算法模块的速度更快,可以获取到的算法模块类型更全,可适应的业务场景更加广泛。[0084]在一实施例中,如果终端设备根据第一算法链执行上述多个第一算法模块实现第一业务需求以后,终端设备的业务场景发生了变化,计算设备接收到了用户输入的第二业务需求,那么计算设备可以继续生成用于实现第二业务需求的第二算法链,然后从本地和上一次获取的多个第一算法模块中,获取多个第二算法模块中的一部分算法模块,再从远端算法池中获取多个第二算法模块中的其他算法模块,最后向终端设备发送第二算法链和多个第二算法模块,以供终端设备按照第二算法链执行多个第二算法模块实现第二业务需求。[0085]仍以前述例子为例,图2所示的摄像机2之前的第一业务需求为闯红灯车辆车牌号码识别,第一算法链为车辆检测算法模块-跟踪算法模块-位置识别算法模块-车牌识别算法模块,假设计算设备和终端设备均为摄像机2,由于该区域总是发生行人闯红灯出现事故,摄像机2需要额外具备监控识别闯红灯行人身份识别的功能,此时的第二业务需求有2个,即闯红灯车辆车牌号码识别以及闯红灯行人身份识别,摄像机2查询对应关系库之后,可以获得闯红灯车辆车牌号码识别的业务需求对应的第二算法链1:辆检测算法模块-跟踪算法模块-位置识别算法模块-车牌识别算法模块,闯红灯行人身份识别的业务需求对应的第二算法链2:行人检测算法模块-跟踪算法模块-人脸识别算法模块,此时摄像机2已经包含了算法链1所需的多个第一算法模块,因此摄像机2可以只向第一算法子池(即图2中的边缘计算设备)获取算法链2对应的算法模块,从而以最小的改动方式加载新的算法,减少算法更新时的通信消耗量,提高算法更新的效率。相比于通过开发人员将变化后的业务场景所需的全部模块,封装打包成一个算法升级包,然后对摄像机进行完整替换版本的方式实现算法更新,本技术提供的算法更新方法更加便捷、快速,避免了人力资源和时间的浪费。[0086]综上可知,使用本技术提供的算法更新方法,首先通过计算设备,根据业务需求生成算法链,并从算法池中下载该算法链所需的算法模块,然后再向终端设备发送该算法链和算法模块,终端设备可以按照算法链执行上述算法模块实现业务需求,完成终端设备的算法更新。相比于通过人工根据新的业务需求生成算法更新包,并将使用该算法更新包对摄像机原有场景的算法包进行替换,本技术提供的算法更新方法可以使得摄像机的算法更新过程不再需要人工介入,计算设备可以根据新的业务需求直接调整算法链,再通过调用模块执行调整后的算法链实现业务需求,使得算法更新过程所需的时间和人力资源大大减少,可扩展性更强,适用的业务场景更加广泛。[0087]简言之,计算设备收到需要由终端设备(例如摄像机)执行的业务请求后,生成实现业务请求的算法链,对于组成所述算法链的算法模块,一部分直接使用计算设备本地的算法模块,另外一部分算法模块(例如所述计算设备本地无法提供的算法模块)则从远端服务器中获得,从而既能对摄像机的算法实现更新,又利用到了计算设备本地已有的算法模块资源。而现有技术中,由开发人员生成用于执行业务请求的完整的算法包,然后把整个算法包从远端服务器更新摄像机。因此,现有技术既没有生成算法链,也没有合理利用所述计算设备本地已有的算法模块。和现有技术相比,本方案减少了对计算设备算法更新过程所需的时间和带宽资源占用。[0088]下面结合图2和图5,以计算设备和终端设备均为摄像机,即算法编排模块110和调用模块130均部署于摄像机,第一算法子池位于边缘计算设备,第二算法子池位于云服务器的应用场景为例,对本技术提供的算法更新方法进行举例说明。[0089]假设该应用场景中,摄像机1对路口进行拍摄,并对拍摄到的图像直接进行处理,比如行人身份识别、车辆车牌识别等等,部署了算法编排模块和调用模块的摄像机可以是如图2所示的摄像机1,部署了第一算法子池的边缘计算设备可以是如图2所示的边缘计算设备,部署了第二算法子池的云服务器可以是如图2所示的数据中心中的一台云服务器,如图5所示,使用本技术提供的算法更新方法对该场景中的摄像机1进行算法更新的步骤流程可以如下:[0090]步骤51、摄像机1的算法编排模块接收业务需求,即:识别闯红灯的车辆车牌号。具体可以参考前述内容中的步骤s410,这里不展开赘述。[0091]步骤52、摄像机1的算法编排模块根据业务需求生成对应的算法链s1,即车辆检测算法模块a-跟踪算法模块b-位置识别算法模块c-车牌识别算法模块d。具体实现中,算法编排模块可以查询对应关系库,获得与业务需求对应的算法链,对应关系库的具体描述可以参考前述内容中的步骤s420,这里不展开赘述。[0092]步骤53、摄像机1的算法编排模块确定算法链s1所需的算法模块中,本地缺少的车牌识别算法模块d,向边缘计算设备发送获取该车牌识别算法模块d的请求,该请求中包含了摄像机1的参数信息。[0093]应理解,如果摄像机1是非首次进行算法部署,即摄像机1上已经根据之前的业务需求部署了一些算法,那么摄像机1在步骤s51接收到新的业务需求,并根据该业务需求生成了上述算法链s1之后,可以先确定本机是否存储有上述车辆检测算法模块a、跟踪算法模块b、位置识别算法模块c以及车牌识别算法模块d,然后向第一算法子池获取本机没有的算法模块。比如摄像机1之前的业务需求仅为对闯红灯的车辆的车牌进行拍照,那么摄像机1之前的算法链为车辆检测算法模块a-跟踪算法模块b-位置识别算法模块c,此时摄像机1可以只向第一算法子池获取车牌识别算法模块d,而无需再重复获取车辆检测算法模块a、跟踪算法模块b和位置识别算法模块c,从而减少数据传输量,提高算法更新速度。[0094]当然,如果摄像机1首次进行算法部署,即摄像机1是一台崭新的、从未部署过任何算法的摄像机,那么摄像机1的算法编排模块在接收到业务需求,并根据该业务需求生成了对应的算法链后,可以直接向第一算法子池获取该算法链所需的全部算法模块,即上述车辆检测算法模块a、跟踪算法模块b、位置识别算法模块c以及车牌识别算法模块d。但是图5是以摄像机1本地已获取了车辆检测算法模块a、跟踪算法模块b、位置识别算法模块c为例,因此步骤53处,摄像机1的算法编排模块向边缘计算设备边缘计算设备上的第一算法子池获取车牌识别算法模块d。[0095]步骤54、第一算法子池确定本地不包含该车牌识别算法模块d,向云服务器上的第二算法子池发送获取车牌识别算法模块d的请求,该请求中包含了摄像机1的参数信息。[0096]可以理解的,如果第一算法子池包含了车牌识别算法模块d,那么第一算法子池可以直接将该算法模块d发送给摄像机1的算法编排模块。如果第一算法子池包含了车牌识别算法模块d,但是不包含与摄像机1的参数信息对应版本的车牌识别算法模块d,第一算法子池仍可以向第二算法子池发送获取车牌识别算法模块d的请求,该请求中包含了摄像机1的参数信息。[0097]步骤55、第二算法子池根据摄像机1的参数信息,确定对应版本的车牌识别算法模块d1,并向第一算法子池发送该车牌识别算法模块d1,第一算法子池接收该车牌识别算法模块d1。[0098]步骤56、第一算法子池将接收到的车牌识别算法模块d1发送给摄像机1的算法编排模块。摄像机1的算法编排模块接收该车牌识别算法模块d1。可以理解的,第一算法子池可以存储该模块d1,以供其他摄像机获取该模块。[0099]步骤57、摄像机1的算法编排模块将算法链s1和对应的全部算法模块(即上述车辆检测算法模块a、跟踪算法模块b、位置识别算法模块c以及车牌识别算法模块d1)发送给调用模块。[0100]步骤58、摄像机1的调用模块根据算法链s1,执行上述车辆检测算法模块a、跟踪算法模块b、位置识别算法模块c以及车牌识别算法模块d1,实现摄像机1的算法编排模块在步骤51接收到的业务需求。[0101]步骤59、摄像机1的调用模块向算法编排模块反馈调用成功的信息,完成摄像机1的算法更新。[0102]上述例子中,如果不使用本技术提供的方法,则需要开发人员根据新的业务需求生成一个完整的算法更新包,该更新包中包含了算法模块a-d,然后将更新包对摄像机进行安装,替换掉之前的更新包。而使用本技术提供的方法,摄像机1只是对算法链进行了调整,因此也只向第一算法子池获取了一个算法模块d,整个升级过程不但无需人工介入,减少人力资源的浪费,还可以使得升级过程更加快速,减少通信量,降低升级成本。并且,通过多级部署算法池的方式,可以使得摄像机的算法编排模块获取各种算法模块的速度更快,提高整个算法更新系统的升级速度,同时可以使得摄像机能够获取到的算法模块种类更多,适应的业务场景更加丰富。[0103]下面以计算设备和终端设备均为边缘计算设备,即算法编排模块、调用模块和第一算法子池位于边缘计算设备,第二算法子池位于云服务器的应用场景为例,对本技术提供的算法更新方法进行举例说明。[0104]假设该应用场景中,摄像机1和摄像机2对路口进行拍摄,并将拍摄到的图像发送给边缘计算设备进行处理,比如行人身份识别、车辆车牌识别等等,部署了算法编排模块、调用模块和第一算法子池的边缘计算设备可以是如图2所示的离摄像机距离较近的道路一侧的边缘计算设备,部署了第二算法子池的云服务器可以是如图2所示的数据中心中的一台服务器,如图6所示,使用本技术提供的算法更新方法对该场景中的摄像机1和摄像机2进行算法更新的步骤流程可以如下:[0105]步骤61、边缘计算设备的算法编排模块接收业务需求,即:识别闯红灯的车辆车牌号。具体可以参考前述内容中的步骤s410以及上述步骤51,这里不展开赘述。[0106]步骤62、边缘计算设备的算法编排模块根据业务需求生成对应的算法链s1,即车辆检测算法模块a-跟踪算法模块b-位置识别算法模块c-车牌识别算法模块d。具体实现中,算法编排模块可以将业务需求输入算法模型获得对应的算法链,算法模型的获得方式可以参考前述内容中的步骤s420,这里不展开赘述。[0107]步骤63、边缘计算设备的算法编排模块向本地的第一算法子池获取算法链s1所需的算法模块,确定本地缺少的算法模块为:车牌识别算法模块d。具体可以参考上述步骤53,这里不展开赘述。[0108]步骤64、边缘计算设备的算法编排模块向云服务器的第二算法子池发送获取车牌识别算法模块d的请求,该请求包括边缘计算设备的参数信息,该参数信息可以包括边缘计算设备的处理器能力、处理器占用率、存储容量、设备温度等等,还可以包括与边缘计算设备相连的摄像机1和摄像机2拍摄的图片的分辨率、尺寸、格式等等,本技术不做具体限定。[0109]步骤65、云服务器的第二算法子池根据边缘计算设备的参数信息,确定对应版本的车牌识别算法模块d1,并向边缘计算设备的算法编排模块发送该车牌识别算法模块d1。[0110]步骤66、边缘计算设备的算法编排模块将将算法链s1和对应的全部算法模块(即上述车辆检测算法模块a、跟踪算法模块b、位置识别算法模块c以及车牌识别算法模块d1)发送给调用模块。边缘计算设备还可以将新接收到的车牌识别算法模块d1存储于第一算法子池中,使得摄像机1和摄像机2的业务场景再次发生变化,产生新的业务需求时,如果新的业务需求恰好需要车牌识别算法模块d1,那么边缘计算设备可以直接从本地的第一算法子池获取到该算法模块,从而减少算法模块传输所需的通信量,进而提高算法更新的速度。[0111]步骤67、边缘计算设备的调用模块根据算法链s1,对各个算法模块进行串联,实现业务需求对应的业务功能。[0112]步骤68、边缘计算设备的调用模块向算法编排模块调用成功的信息,完成边缘计算设备的算法更新,实现摄像机1和摄像机2的业务升级。[0113]上述例子中,如果不使用本技术提供的方法,则需要开发人员根据新的业务需求生成一个完整的算法更新包,该更新包中包含了算法模块a-d,然后将更新包对边缘计算设备进行安装,替换掉之前的更新包。而使用本技术提供的方法,边缘计算设备只是对算法链进行了调整,因此也只向第二算法子池获取了一个算法模块d,整个升级过程不但无需人工介入,减少人力资源的浪费,还可以使得升级过程更加快速,减少通信量,降低升级成本。[0114]需要说明的,本技术提供的算法更新方法部署灵活,算法编排模块、算法池以及调用模块可以部署在摄像机上,也可以部署在边缘计算设备上,也可以部署在云服务器上。具体实现中,可以根据具体的应用场景,选择最合适的方案进行部署,图5和图6所示的应用场景用于举例说明,本技术不作具体限定。[0115]上述详细阐述了本技术实施例的方法,为了便于更好的实施本技术实施例上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。[0116]参见图7,图7为本技术实施例提供的一种电子设备的结构示意图。其中,所述电子设备700可以是前述内容中的摄像机、边缘计算设备或者云服务器。如图7所示,电子设备700包括:处理器710、通信接口720以及存储器730,所示处理器710、通信接口720以及存储器730通过内部总线740相互连接。[0117]处理器710、通信接口720和存储器730可通过总线方式连接,也可通过无线传输等其他手段实现通信。本技术实施例以通过总线740连接为例,其中,总线740可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。所述总线740可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0118]所述处理器710可以由一个或者多个通用处理器构成,例如中央处理器(centralprocessingunit,cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specificinegratedcircuit,asic)、可编程逻辑器件(programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)、现场可编程逻辑门阵列(field-programmablegatearray,fpga)、通用阵列逻辑(genericarraylogic,gal)或其任意组合。处理器710执行各种类型的数字存储指令,例如存储在存储器730中的软件或者固件程序,它能使计算设备700提供较宽的多种服务。[0119]在电子设备900是摄像机的情况下,所述存储器730用于存储程序代码、算法链和算法模块,并由处理器710来控制执行,所述程序代码中可以包括一个或者多个软件模块。例如,在调用模块部署于摄像机的应用场景中,处理器710可以包括调用模块,该调用模块用于接收算法编排模块发送的第一算法链和多个第一算法模块,并根据第一算法链执行上述多个一个算法模块,实现第一业务需求。再例如,在算法编排模块部署于摄像机的应用场景中,处理器710还可以包括算法编排模块,该算法编排模块用于接收第一业务需求,并根据第一业务需求生成对应的第一算法链,从本地和远端算法池获取该算法链所需的至少一个算法模块。再例如,在远端算法池部署于摄像机的应用场景中,比如第一算法子池位于摄像机,那么存储器730可以包括第一算法子池,该第一算法子池可以用于接收算法编排模块发送的算法模块的获取请求和摄像机的参数信息,向算法编排模块返回与该参数信息对应的算法模块,具体可以用于执行上述图1-图6中任一实施例中摄像机可以执行的处理步骤,这里不展开赘述。[0120]在电子设备900是边缘计算设备的情况下,所述存储器730用于存储程序代码、算法链和算法模块,并由处理器710来控制执行,所述程序代码中可以包括一个或者多个软件模块。例如,在调用模块部署于边缘计算设备的应用场景中,处理器710还可以包括算法编排模块,该算法编排模块用于接收第一业务需求,并根据第一业务需求生成对应的第一算法链,从本地和第二算法子池获取该算法链所需的至少一个算法模块。再例如,在算法编排模块部署于边缘计算设备的应用场景中,电子设备700还可以包括算法编排模块,该算法编排模块用于接收业务需求,并根据业务需求生成对应的算法链,向第一算法子池获取该算法链所需的至少一个算法模块。再例如,在远端算法池部署于边缘计算设备的应用场景中,那么存储器730可以包括第一算法子池,该第一算法子池可以用于接收算法编排模块发送的算法模块的获取请求和摄像机的参数信息,向算法编排模块返回与该参数信息对应的算法模块,具体可以用于执行上述图1-图6中任一实施例中边缘计算设备可以执行的处理步骤。[0121]在电子设备900是云服务器的情况下,所述存储器730用于存储程序代码、算法链和算法模块,并由处理器710来控制执行,所述程序代码中可以包括一个或者多个软件模块。例如,在调用模块部署于云服务器的应用场景中,处理器710还可以包括算法编排模块,该算法编排模块用于接收第一业务需求,并根据第一业务需求生成对应的第一算法链,从本地获取该算法链所需的至少一个算法模块。再例如,在算法编排模块部署于边缘计算设备的应用场景中,电子设备700还可以包括算法编排模块,该算法编排模块用于接收业务需求,并根据业务需求生成对应的算法链,向第一算法子池获取该算法链所需的至少一个算法模块。再例如,在远端算法池部署于云服务器的应用场景中,那么存储器730可以包括第二算法子池,该第二算法子池可以用于接收第一算法子池发送的算法模块的获取请求和摄像机的参数信息,具体可以用于执行上述图1-图6中任一实施例中云服务器可以执行的处理步骤。[0122]存储器730可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器730也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器730还可以包括上述种类的组合。其中,存储器730可以存储有应用程序代码以及程序数据,比如第一算法子池或者第二算法子池,那么存储器730中可以存储有多个算法模块。[0123]通信接口720可以为有线接口(例如以太网接口),可以为内部接口(例如高速串行计算机扩展总线(peripheralcomponentinterconnectexpress,pcie)总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与与其他设备或模块进行通信。[0124]需要说明的,图7仅仅是本技术实施例的一种可能的实现方式,实际应用中,所述电子设备还可以包括更多或更少的部件,这里不作限制。关于本技术实施例中未示出或未描述的内容,可参见前述图1-图6所述实施例中的相关阐述,这里不再赘述。图7所示的电子设备还可以是多个计算节点构成的计算机集群,本技术不作具体限定。[0125]本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,图1-图6所示的方法流程得以实现。[0126]本技术实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,图1-图6所示的方法流程得以实现。[0127]上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digitalvideodisc,dvd)、或者半导体介质。半导体介质可以是ssd。[0128]以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜