计算机视觉算法的编程方法、装置、存储介质及计算机设备
文献发布时间:2023-06-19 16:12:48
技术领域
本申请涉及编程领域,尤其涉及一种计算机视觉算法的编程方法、装置、存储介质及计算机设备。
背景技术
随着计算机视觉算法的普及,计算机视觉算法的应用场景越来越多,不同应用场景下,各个计算机视觉算法的配置环境、开发语言和性能要求各不相同。当软件开发者面临针对多个不同应用场景下的计算机视觉算法的编程时,会消耗很大的精力和时间,如何快速的开发一个执行计算机视觉算法的应用是软件开发者亟待解决的问题。
发明内容
本申请实施例提供了计算机视觉算法的编程方法、装置、存储介质及计算机设备,可以解决现有技术中计算机视觉算法的编程效率不高的问题。所述技术方案如下:
第一方面,本申请实施例提供了一种计算机视觉算法的编程方法,所述方法包括:
基于用户的选择指令在模块库中选择多个算法模块;
对选择的算法模块进行组合连接生成第一计算机视觉算法的流程图;
对所述流程图进行可行性检查;
可行性检查通过后,生成项目文件;其中,所述项目文件包括各个视觉算法模块的源代码、说明文档、测试数据和项目代码,所述项目代码是使用低代码工具根据所述流程图生成的。
第二方面,本申请实施例提供了一种计算机视觉算法的编程装置,所述装置包括:
选择单元,用于基于用户的选择指令在模块库中选择多个算法模块;
连接单元,用于对选择的算法模块进行组合连接生成第一计算机视觉算法的流程图;
检查单元,用于对所述流程图进行可行性检查;
生成单元,用于可行性检查通过后,生成项目文件;其中,所述项目文件包括各个视觉算法模块的源代码、说明文档、测试数据和项目代码,所述项目代码是使用低代码工具根据所述流程图生成的。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种计算机设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在对计算机视觉算法进行编程时,在模块库中选择算法模块,模块库中的算法模块时基于计算机视觉算法的可拆分性,将子算法封装成的模块,然后将选择的算法模块模块通过低代码拼接组合的到流程图,对流程图进行校验后生成项目文件,从而实现计算机视觉算法的快速编程,通过算法模块的复用,提高计算机视觉算法的编程效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例提供的网络架构示意图;
图2是本申请实施例提供的计算机视觉算法的编程方法的流程示意图;
图3是本申请实施例提供的预测原理示意图;
图4是本申请提供的一种计算机视觉算法的编程装置的结构示意图;
图5是本申请提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
需要说明的是,本申请提供的计算机视觉算法的编程方法一般由计算机设备执行,相应的,计算机视觉算法的编程装置一般设置于计算机设备中。
图1示出了可以应用于本申请的计算机视觉算法的编程方法或计算机视觉算法的编程装置的示例性系统架构。
如图1所示,系统架构可以包括:计算机设备101和服务器102。计算机设备101和服务器102之间可以通过网络进行通信,网络用于上述各个单元之间提供通信链路的介质。网络可以包括各种类型的有线通信链路或无线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆等,无线通信链路包括蓝牙通信链路、无线保真(WIreless-FIdelity,Wi-Fi)通信链路或微波通信链路等。
其中,计算机设备101基于用户的选择指令在模块库中选择多个算法模块;对选择的算法模块进行组合连接生成第一计算机视觉算法的流程图;对流程图进行可行性检查;可行性检查通过后,生成项目文件;其中,项目文件包括各个视觉算法模块的源代码、说明文档、测试数据和项目代码,项目代码是使用低代码工具根据流程图生成的。然后计算机设备向项目文件部署在服务器102,在服务器102中启动计算机视觉算法的程序实例,利用服务器102的强大硬件能力执行计算机视觉处理任务。
需要说明的是,计算机设备101和服务器102可以是硬件,也可以是软件。当计算机设备101和服务器102为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当计算机设备101和服务器102为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块,在此不做具体限定。
本申请的计算机设备上可以安装有各种通信客户端应用,例如:视频录制应用、视频播放应用、语音交互应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
计算机设备可以是硬件,也可以是软件。当计算机设备为硬件时,可以是具有显示屏的各种计算机设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等等。当计算机设备为软件时,可以是安装上述所列举的计算机设备中。其可以实现呈多个软件或软件模块(例如:用来提供分布式服务),也可以实现成单个软件或软件模块,在此不作具体限定。
当计算机设备为硬件时,其上还可以安装有显示设备和摄像头,显示设备显示可以是各种能实现显示功能的设备,摄像头用于采集视频流;例如:显示设备可以是阴极射线管显示器(cathode ray tube display,简称CR)、发光二极管显示器(light-emittingdiode display,简称LED)、电子墨水屏、液晶显示屏(liquid crystal display,简称LCD)、等离子显示面板(plasma display panel,简称PDP)等。用户可以利用计算机设备上的显示设备,来查看显示的文字、图片、视频等信息。
应理解,图1中的计算机设备、网络和服务器的数目仅是示意性的。根据实现需要,可以是任意数量的计算机设备、网络和服务器。
下面将结合附图2,对本申请实施例提供的计算机视觉算法的编程方法进行详细介绍。其中,本申请实施例中的计算机视觉算法的编程装置可以是图1所示的计算机设备。
请参见图2,为本申请实施例提供了一种计算机视觉算法的编程方法的流程示意图。如图2所示,本申请实施例的所述方法可以包括以下步骤:
S201、基于用户的选择指令在模块库中选择多个算法模块。
其中,用户通过计算机设备的输入单元触发选择指令,输入单元包括但不限于鼠标、键盘或触摸屏等。计算机设备配置有模块库,模块库用于保存算法模块,这些算法模块是由于不同的计算机视觉算法分割得到的各个子算法进行接口封装得到的,因此模块库中的算法模块的编程语言、配置环境和流程框架可能不同。模块库是一种数据库,一般为关系型数据库,模块库中的各个算法模块可以通过可视化的方式在用户界面上显示,以便用户通过可视化的方式从模块库中选择多个算法模块。
举例来说,计算机设备通过显示单元显示编辑界面,编辑界面包括画布和工具栏,模块库设置与工具栏中,用户生成选择指令的方式时:通过鼠标按住模块库中的某个算法模块拖入到画布中,画布中显示用户当前选择的算法模块。
在一个或多个可能的实施例中,S201之前,还包括:
将第二计算机视觉算法拆分为多个子算法;
将多个子算法进行接口封装得到多个算法模块;其中,各个算法模块配置有输入接口和输出接口;
将封装后的算法模块加入到模块库中。
其中,计算机设备将第二计算机视觉算法拆分为多个子算法,拆分的粒度可以根据实际需求而定,较大的粒度便于实现宏观系统,较小粒度便于实现系统调优和性能调优。根据各个子算法的功能编写源代码,然后将各个子算法的源代码进行接口封装得到算法模块,算法模块对外提供输入接口和输出接口,软件开发者可以通过输入接口和输出接口的参数来调用该算法模块,而不用算法模块是如何实现的,然后将封装后的算法模块加入到模块库中,以便后续给其他计算机视觉算法进行复用,提高编程效率。
例如:目标检测算法FastR-CNN划分为如下的子算法:提取神经网络特征、使用RPN(region proposal network,区域候选网络)生成建议窗口、使用ROI Pooling生成固定尺寸的特征图、使用softmax进行分类、使用探测边框回归进行检测框定位,计算机设备根据上述的子算法进行接口封装得到算法模块。又例如:实例分割算法划分为如下的子算法:目标检测、语义分割和物体分类,计算机设备根据上述的子算法进行接口封装得到算法模块。
进一步的,在子算法的接口封装后,计算机设备测量各个算法模块的执行效率信息,执行效率信息表示执行时间、内存占用率和CPU占用率,然后将执行效率信息写入到算法模块的说明文档,以便在利用该算法模块组合新的计算机视觉算法时,可以准确的测量其执行效率和优化执行效率。
S202、对选择的算法模块进行组合连接生成流程图。
其中,用户根据第一计算机视觉算法的需求,对选择的算法模块进行组合连接生成流程图,流程图表示选择的算法模块之间的执行顺序,前面的算法模块先于后面的算法模块执行。可选的,由于相邻的两个算法模块之间的参数不匹配,造成两个算法模块之间无法直接连接,即两个算法模块之间无法直接进行通信,因此本申请通过在两个算法模块之间配置中间件,该中间件实现两个算法模块之间参数类型的转换,参数不匹配包括参数数量和/或参数名称不同。
在一个或多个可能的实施例中,S202具体包括:
获取待连接的第一算法模块和第二算法模块;其中,第一算法模块为第二算法模块的上一算法模块;
判断第一算法模块的输出接口和第二算法模块的输入接口的参数是否匹配;
若为是,将第一算法模块和第二算法模块进行连接;
若为否,在第一算法模块和第二算法模块之间配置中间件,以及将第一算法模块通过该中间件与第二算法模块连接。
其中,计算机设备检测到第一算法模块和第二算法模块之间的连接指令时,该连接指令可由用户通过输入单元触发,例如:用户通过鼠标选择工具栏中的连线工具在第一算法模块和第二算法模块之间绘制连接线时触发该连接指令,然后计算机设备第一算法模块和第二算法模块的位置关系或连接线的箭头方向,确定第一算法模块为第二算法模块的上一算法模块,各个算法模块设置有输入接口和输出接口,计算机设备判断第一算法模块的输出接口和第二算法模块的输入接口的参数是否匹配,参数匹配指的是两个接口的参数数量和参数名称相同,若判断结果为时,将第一算法模块和第二算法模块进行连接,完成连接线的绘制。若判断结果为否,在第一算法模块和第二算法模块之间配置中间件,配置中间件的方法可以是:计算机设备自动根据两个接口的参数进行配置,中间件的输入接口和第一算法模块的输出接口的参数是匹配的,中间件的输出接口和第二算法模块的输入接口的参数是匹配的。或者,计算机设备在编辑界面上显示中间件的弹窗,以便提示用户在编辑界面中编辑中间件的代码,然后将编辑好的代码进行接口封装得到中间件。
进一步的,若模块库中不存在流程图中所需的算法模块,此时可以根据功能需求自定义中间件,来实现相应的功能,例如:判断、循环或其他功能等。
例如:参见图3所示的在编辑界面中绘制的流程图,该流程图中同时包括在模块库中选择的算法模块:提取ResNet-101特征、RPN生成建议窗口、提取FPN特征,剩下的均为用户自定义的中间件。中间件本质也是一种算法模块,只不过该算法模块只用户自定义的。流程图中相邻的两个算法模块的接口的参数是匹配的。
S203、对流程图进行可行性检查。
其中,可行性检查的内容包括:流程图的设计是否合规、各个算法模块之间的参数是否匹配以及算法模块的执行环境是否合规等。
进一步的,在可行性检查通过后,计算机设备还可以测量流程图的执行效率,若满足预设的效率指标,后再生成项目文件,各个算法模块设置有执行效率信息,获取执行效率信息计算整体的执行效率。
S204、可行性检查通过后,生成项目文件。
其中,通过可行性检查后,计算机设备根据使用者绘制的流程图,使用低代码工具自动生成项目代码,并满足一定的架构形式。项目文件中包括:所有使用到算法模块的相关模型、源代码、说明文档和测试数据,低代码工具自动生成的项目代码文件,以及快速启动文件。用户可根据快速启动文件,便捷地运行程序示例。生成的代码文件包含用户自制的中间件,用户可在此基础上进行后续开发,最终满足所需实现的功能需求。
本申请的实施例在对计算机视觉算法进行编程时,在模块库中选择算法模块,模块库中的算法模块时基于计算机视觉算法的可拆分性,将子算法封装成的模块,然后将选择的算法模块模块通过低代码拼接组合的到流程图,对流程图进行校验后生成项目文件,从而实现计算机视觉算法的快速编程,通过算法模块的复用,提高计算机视觉算法的编程效率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参见图4,其示出了本申请一个示例性实施例提供的计算机视觉算法的编程装置的结构示意图,以下简称装置4。该装置4可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分。装置4包括:选择单元401、连接单元402、检查单元403、生成单元404。
选择单元401,用于基于用户的选择指令在模块库中选择多个算法模块;
连接单元402,用于对选择的算法模块进行组合连接生成第一计算机视觉算法的流程图;
检查单元403,用于对所述流程图进行可行性检查;
生成单元404,用于可行性检查通过后,生成项目文件;其中,所述项目文件包括各个视觉算法模块的源代码、说明文档、测试数据和项目代码,所述项目代码是使用低代码工具根据所述流程图生成的。
在一个或多个可能的实施例中,所述对选择的算法模块进行组合连接,包括:
确定待连接的第一算法模块和第二算法模块;其中,所述第一算法模块为所述第二算法模块的上一算法模块;
判断所述第一算法模块的输出接口和所述第二算法模块的输出接口的参数是否匹配;
若为是,将所述第一算法模块和所述第二算法模块进行连接;
若为否,配置中间件,以及将所述第一算法模块通过该中间件与所述第二算法模块连接;
其中,所述中间件的输入接口和所述第一算法模块的输出接口的参数匹配,所述中间件的输出接口和所述第二算法模块的输入接口的参数匹配。
在一个或多个可能的实施例中,还包括:
复用单元,用于将第二计算机视觉算法拆分为多个子算法;
将多个子算法进行接口封装得到多个算法模块;其中,各个算法模块配置有输入接口和输出接口;
将封装后的算法模块加入到模块库中。
在一个或多个可能的实施例中,还包括:
测量单元,用于测量封装后的各个算法模块的执行效率信息;其中,所述执行效率信息表示执行时间、内存占用率和CPU占用率;
将所述执行效率信息写入到算法模块的说明文档中。
在一个或多个可能的实施例中,测量单元还用于:
测量所述流程图的执行效率,确定执行效率满足预设的效率指标。
在一个或多个可能的实施例中,所述模块库中至少两个算法模块的源代码使用不同编程语言。
在一个或多个可能的实施例中,所述基于用户的选择指令在模块库中选择多个算法模块,包括:
通过显示单元显示编辑界面;其中,所述编辑界面包括画布和工具栏,模块库设置于所述工具栏中;
通过用户的选择指令将所述模块库中的算法模块拖拽至所述画布中。
需要说明的是,上述实施例提供的装置4在执行计算机视觉算法的编程方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成上述的全部或者部分功能。另外,上述实施例提供的计算机视觉算法的编程装置与计算机视觉算法的编程方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图2所示实施例的方法步骤,具体执行过程可以参见图2所示实施例的具体说明,在此不进行赘述。
本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的计算机视觉算法的编程方法。
请参见图5,为本申请实施例提供了一种计算机设备的结构示意图。如图5所示,所述计算机设备500可以包括:至少一个处理器501,至少一个网络接口504,用户接口503,存储器505,至少一个通信总线502。
其中,通信总线502用于实现这些组件之间的连接通信。
其中,用户接口503可以包括显示屏(Display)、摄像头(Camera),可选用户接口503还可以包括标准的有线接口、无线接口。
其中,网络接口504可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器501可以包括一个或者多个处理核心。处理器501利用各种接口和线路连接整个计算机设备500内的各个部分,通过运行或执行存储在存储器505内的指令、程序、代码集或指令集,以及调用存储在存储器505内的数据,执行计算机设备500的各种功能和处理数据。可选的,处理器501可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器501可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器501中,单独通过一块芯片进行实现。
其中,存储器505可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器505包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器505可用于存储指令、程序、代码、代码集或指令集。存储器505可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器505可选的还可以是至少一个位于远离前述处理器501的存储装置。如图5所示,作为一种计算机存储介质的存储器505中可以包括操作系统、网络通信模块、用户接口模块以及应用程序。
在图5所示的计算机设备500中,用户接口503主要用于为用户提供输入的接口,获取用户输入的数据;而处理器501可以用于调用存储器505中存储的应用程序,并具体执行如图2所示的方法,具体过程可参照图2所示,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
- 计算机视觉算法的编程方法、装置、存储介质及计算机设备
- 存储器编程方法、装置、电子设备及计算机可读存储介质