CN112947899A - 深度学习模型转换方法、系统及装置 - Google Patents
深度学习模型转换方法、系统及装置 Download PDFInfo
- Publication number
- CN112947899A CN112947899A CN201911267114.1A CN201911267114A CN112947899A CN 112947899 A CN112947899 A CN 112947899A CN 201911267114 A CN201911267114 A CN 201911267114A CN 112947899 A CN112947899 A CN 112947899A
- Authority
- CN
- China
- Prior art keywords
- model
- layer
- deep learning
- representation format
- intermediate representation
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Image Analysis (AREA)
Abstract
本申请实施例提供一种深度学习模型转换方法、系统及装置,该方法包括:获取第一模型的中间表示格式,所述第一模型为在第一深度学习框架下可识别的模型,所述第一模型中包括公共层和自定义层,所述中间表示格式为多个深度学习框架下进行模型转换的统一表示格式,所述公共层为多个深度学习框架中均包括的层,即开源支持的层,所述自定义层为根据所述第一模型的功能进行配置得到的层,所述多个深度学习框架包括所述第一深度学习框架和第二深度学习框架;根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,所述第二模型为在所述第二深度学习框架下可识别的模型。本申请实施例能够实现针对包括自定义层的深度学习模型的转换。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种深度学习模型转换方法、系统及装置。
背景技术
深度学习模型是机器学习的一种,深度学习能够获得样本数据的内置规律和表示层次,在机器学习、搜索技术等多个领域具有重要的应用。
深度学习框架是用于开发深度学习模型而产生的,深度学习框架有多种,例如包括Caffe、TensorFlow、Torch等等。由于不同的深度学习框架对数据信息的存储方式和解析方式存在较大差异,因此需要根据处理器的硬件结构差异将深度学习模型在不同的深度学习框架下进行转换,以提高处理器的运算效率。
上述方案将深度学习模型在不同的深度学习框架下进行转换时,只能针对由深度学习框架下已定义的功能层进行转换,而不能针对自定义的功能层进行转换。
发明内容
本申请实施例提供一种深度学习模型转换方法、系统及装置,以解决根据处理器的硬件结构差异将深度学习模型在不同的深度学习框架下进行转换,不能针对自定义层进行模型转换的问题。
第一方面,本申请实施例提供一种深度学习模型转换方法,包括:
获取第一模型的中间表示格式,所述第一模型为在第一深度学习框架下可识别的模型,所述第一模型中包括公共层和自定义层,所述中间表示格式为多个深度学习框架下进行模型转换的统一表示格式,所述公共层为多个深度学习框架中均包括的层,所述自定义层为根据所述第一模型的功能进行配置得到的层,所述多个深度学习框架包括所述第一深度学习框架和第二深度学习框架;
根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,所述第二模型为在所述第二深度学习框架下可识别的模型。
在一种可能的实现方式中,所述获取第一模型的中间表示格式,包括:
获取所述第一模型的计算图,所述计算图用于指示所述第一模型的各公共层和各自定义层之间的连接关系;
获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述计算图为粗粒度计算图或细粒度计算图,所述获取所述第一模型的计算图,包括:
获取所述第一模型的粗粒度计算图,其中,所述粗粒度计算图中包括多个层节点、以及层节点之间的连接关系,每个所述层节点为一个所述公共层或一个所述自定义层;或者,
获取所述第一模型的细粒度计算图,其中,所述细粒度计算图中包括多个计算节点、以及计算节点之间的连接关系,每个所述计算节点为一个子运算,所述子运算为所述自定义层的部分或所述公共层的部分。
在一种可能的实现方式中,所述计算图为粗粒度计算图,所述获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式,包括:
获取多个中间表示格式节点和所述第一模型中的参数信息;
根据所述粗粒度计算图获取各公共层和各自定义层之间的第一连接关系;
根据所述第一模型中的参数信息和所述第一连接关系,对所述多个中间表示格式节点进行配置,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述计算图为细粒度计算图,所述获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式,包括:
获取多个中间表示格式节点、第一参数信息和第二参数信息,所述第一参数信息为各公共层的参数信息,所述第二参数信息为各自定义层的参数信息;
对所述公共层对应的子运算进行融合,得到所述公共层对应的中间表示格式节点;
对所述自定义层对应的子运算进行融合,得到所述自定义层对应的中间表示格式节点;
根据所述细粒度计算图获取各子运算之间的第二连接关系;
根据所述第一参数信息、所述第二参数信息和所述第二连接关系,对所述公共层对应的中间表示格式节点和所述自定义层对应的中间表示格式节点分别进行配置,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述第二连接关系包括所述公共层对应的子运算之间的第三连接关系、所述自定义层对应的子运算之间的第四连接关系以及所述公共层和所述自定义层之间的第五连接关系,所述根据所述第一参数信息、所述第二参数信息和所述第二连接关系,对所述公共层对应的中间表示格式节点和所述自定义层对应的中间表示格式节点分别进行配置,得到所述第一模型的中间表示格式,包括:
根据所述第一参数信息和所述第三连接关系,对所述公共层对应的中间表示格式节点进行配置,得到所述公共层对应的中间表示格式;
根据所述第二参数信息和所述第四连接关系,对所述自定义层对应的中间表示格式节点进行配置,得到所述自定义层对应的中间表示格式;
根据所述第五连接关系、所述公共层对应的中间表示格式和所述自定义层对应的中间表示格式,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,在获取第一模型的中间格式之前,所述方法还包括:
根据预设规则配置所述第一模型的初始自定义层;
获取调整指令,根据所述调整指令对所述初始自定义层进行调整,得到所述自定义层。
在一种可能的实现方式中,在获取第一模型的中间表示格式之前,所述方法还包括:
接收客户端发送的请求指令,所述请求指令用于请求具有第一功能的所述第二模型,所述第一功能为所述第一模型的功能。
在一种可能的实现方式中,所述根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,包括:
根据所述第一模型的中间表示格式获取所述第二深度学习框架下的多个功能层;
根据所述第一模型的所述参数信息,对所述第二深度学习框架下的多个功能层进行配置,得到所述第二模型。
第二方面,本申请实施例提供一种深度学习模型转换系统,包括第一处理器和第二处理器,其中:
所述第一处理器和所述第二处理器为中央处理器CPU、图形处理器GPU、图像信号处理器ISP中的任意两个;
所述第一处理器用于将第一深度学习框架下可识别的第一人脸检测模型发送给所述第二处理器;
所述第二处理器用于根据第一方面任一项所述的方法,将所述第一深度学习框架下可识别的第一人脸检测模型转换为第二深度学习框架下可识别的第二人脸检测模型。
第三方面,本申请实施例提供一种深度学习模型转换装置,包括:
获取模块,用于获取模块,用于获取第一模型的中间表示格式,所述第一模型为在第一深度学习框架下可识别的模型,所述第一模型中包括公共层和自定义层,所述中间表示格式为多个深度学习框架下进行模型转换的统一表示格式,所述公共层为多个深度学习框架中均包括的层,所述自定义层为根据所述第一模型的功能进行配置得到的层,所述多个深度学习框架包括所述第一深度学习框架和第二深度学习框架;
处理模块,用于根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,所述第二模型为在所述第二深度学习框架下可识别的模型。
在一种可能的实现方式中,所述获取模块具体用于:
获取所述第一模型的计算图,所述计算图用于指示所述第一模型的各公共层和各自定义层之间的连接关系;
获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述计算图为粗粒度计算图或细粒度计算图,所述获取模块具体用于:
获取所述第一模型的粗粒度计算图,其中,所述粗粒度计算图中包括多个层节点、以及层节点之间的连接关系,每个所述层节点为一个所述公共层或一个所述自定义层;或者,
获取所述第一模型的细粒度计算图,其中,所述细粒度计算图中包括多个计算节点、以及计算节点之间的连接关系,每个所述计算节点为一个子运算,所述子运算为所述自定义层的部分或所述公共层的部分。
在一种可能的实现方式中,所述计算图为粗粒度计算图,所述获取模块具体用于:
获取多个中间表示格式节点和所述第一模型中的参数信息;
根据所述粗粒度计算图获取各公共层和各自定义层之间的第一连接关系;
根据所述第一模型中的参数信息和所述第一连接关系,对所述多个中间表示格式节点进行配置,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述计算图为细粒度计算图,所述获取模块具体用于:
获取多个中间表示格式节点、第一参数信息和第二参数信息,所述第一参数信息为各公共层的参数信息,所述第二参数信息为各自定义层的参数信息;
对所述公共层对应的子运算进行融合,得到所述公共层对应的中间表示格式节点;
对所述自定义层对应的子运算进行融合,得到所述自定义层对应的中间表示格式节点;
根据所述细粒度计算图获取各子运算之间的第二连接关系;
根据所述第一参数信息、所述第二参数信息和所述第二连接关系,对所述公共层对应的中间表示格式节点和所述自定义层对应的中间表示格式节点分别进行配置,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述第二连接关系包括所述公共层对应的子运算之间的第三连接关系、所述自定义层对应的子运算之间的第四连接关系以及所述公共层和所述自定义层之间的第五连接关系,所述获取模块具体用于:
根据所述第一参数信息和所述第三连接关系,对所述公共层对应的中间表示格式节点进行配置,得到所述公共层对应的中间表示格式;
根据所述第二参数信息和所述第四连接关系,对所述自定义层对应的中间表示格式节点进行配置,得到所述自定义层对应的中间表示格式;
根据所述第五连接关系、所述公共层对应的中间表示格式和所述自定义层对应的中间表示格式,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述获取模块还用于,在获取第一模型的中间格式之前:
根据预设规则配置所述第一模型的初始自定义层;
获取调整指令,根据所述调整指令对所述初始自定义层进行调整,得到所述自定义层。
在一种可能的实现方式中,所述获取模块还用于,在获取第一模型的中间表示格式之前:
接收客户端发送的请求指令,所述请求指令用于请求具有第一功能的所述第二模型,所述第一功能为所述第一模型的功能。
在一种可能的实现方式中,所述处理模块具体用于:
根据所述第一模型的中间表示格式获取所述第二深度学习框架下的多个功能层;
根据所述第一模型的所述参数信息,对所述第二深度学习框架下的多个功能层进行配置,得到所述第二模型。
第四方面,本申请实施例提供一种深度学习模型转换设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行:
获取第一模型的中间表示格式,所述第一模型为在第一深度学习框架下可识别的模型,所述第一模型中包括公共层和自定义层,所述中间表示格式为多个深度学习框架下进行模型转换的统一表示格式,所述公共层为多个深度学习框架中均包括的层,所述自定义层为根据所述第一模型的功能进行配置得到的层,所述多个深度学习框架包括所述第一深度学习框架和第二深度学习框架;
根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,所述第二模型为在所述第二深度学习框架下可识别的模型。
在一种可能的实现方式中,所述处理器具体执行:
获取所述第一模型的计算图,所述计算图用于指示所述第一模型的各公共层和各自定义层之间的连接关系;
获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述计算图为粗粒度计算图或细粒度计算图,所述处理器具体执行:
获取所述第一模型的粗粒度计算图,其中,所述粗粒度计算图中包括多个层节点、以及层节点之间的连接关系,每个所述层节点为一个所述公共层或一个所述自定义层;或者,
获取所述第一模型的细粒度计算图,其中,所述细粒度计算图中包括多个计算节点、以及计算节点之间的连接关系,每个所述计算节点为一个子运算,所述子运算为所述自定义层的部分或所述公共层的部分。
在一种可能的实现方式中,所述计算图为粗粒度计算图,所述处理器具体执行:
获取多个中间表示格式节点和所述第一模型中的参数信息;
根据所述粗粒度计算图获取各公共层和各自定义层之间的第一连接关系;
根据所述第一模型中的参数信息和所述第一连接关系,对所述多个中间表示格式节点进行配置,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述计算图为细粒度计算图,所述处理器具体执行:
获取多个中间表示格式节点、第一参数信息和第二参数信息,所述第一参数信息为各公共层的参数信息,所述第二参数信息为各自定义层的参数信息;
对所述公共层对应的子运算进行融合,得到所述公共层对应的中间表示格式节点;
对所述自定义层对应的子运算进行融合,得到所述自定义层对应的中间表示格式节点;
根据所述细粒度计算图获取各子运算之间的第二连接关系;
根据所述第一参数信息、所述第二参数信息和所述第二连接关系,对所述公共层对应的中间表示格式节点和所述自定义层对应的中间表示格式节点分别进行配置,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述第二连接关系包括所述公共层对应的子运算之间的第三连接关系、所述自定义层对应的子运算之间的第四连接关系以及所述公共层和所述自定义层之间的第五连接关系,所述处理器具体执行:
根据所述第一参数信息和所述第三连接关系,对所述公共层对应的中间表示格式节点进行配置,得到所述公共层对应的中间表示格式;
根据所述第二参数信息和所述第四连接关系,对所述自定义层对应的中间表示格式节点进行配置,得到所述自定义层对应的中间表示格式;
根据所述第五连接关系、所述公共层对应的中间表示格式和所述自定义层对应的中间表示格式,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,在获取第一模型的中间格式之前,所述处理器还执行:
根据预设规则配置所述第一模型的初始自定义层;
获取调整指令,根据所述调整指令对所述初始自定义层进行调整,得到所述自定义层。
在一种可能的实现方式中,在获取第一模型的中间表示格式之前,所述处理器还执行:
接收客户端发送的请求指令,所述请求指令用于请求具有第一功能的所述第二模型,所述第一功能为所述第一模型的功能。
在一种可能的实现方式中,所述处理器具体执行:
根据所述第一模型的中间表示格式获取所述第二深度学习框架下的多个功能层;
根据所述第一模型的所述参数信息,对所述第二深度学习框架下的多个功能层进行配置,得到所述第二模型。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面任一项所述的深度学习模型转换方法。
本申请实施例提供的深度学习模型转换方法、系统及装置,首先获取第一模型的中间表示格式,然后根据第一模型的中间表示格式和第二深度学习框架,得到第二模型,本申请实施例中的第一模型包括公共层和自定义层,且第一模型为第一深度学习框架下可识别的模型,在将第一模型转换为中间表示格式后,由于中间表示格式为各个深度学习框架下进行模型转换的统一表示格式,因此,根据中间表示格式,能够将第一模型中的公共层和自定义层转换到第二深度学习框架下,形成第二深度学习框架下可识别的模型,不仅能够对公共层进行转换,也能够对自定义层进行转换。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的深度学习模型转换的应用场景示意图;
图2为本申请实施例提供的深度学习模型转换方法的流程示意图;
图3为本申请实施例提供的模型转换框架示意图;
图4为本申请又一实施例提供的深度学习模型转换方法的流程示意图;
图5为本申请实施例提供的公共层转换示意图;
图6为本申请实施例提供的公共层计算图;
图7为本申请实施例提供的各层转换示意图一;
图8为本申请实施例提供的粗粒度计算图;
图9为本申请实施例提供的各层转换示意图二;
图10为本申请实施例提供的细粒度计算图;
图11为本申请实施例提供的深度学习模型转换系统的结构示意图;
图12为本申请实施例提供的深度学习模型转换装置的结构示意图;
图13为本申请实施例提供的深度学习模型转换设备的硬件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请实施例涉及的概念进行解释说明。
IR:intermediate representation,中间表示格式,本申请实施例中所指的中间表示格式是一种在多个深度学习框架下进行模型转换的统一表示格式,可使得模型在不同的框架之间进行转移。
深度学习模块:基于深度学习的神经网络的结构的二进制表示。
深度学习框架:是为了提高深度学习模型的开发效率而产生的一种框架,其中包括许多功能层的定义,可根据实际需要调用不同的功能层得到不同的深度学习模型,从而实现不同的功能,常用的深度学习的框架包含pytorch、caffe、mxnet等等。
模型转换:不同深度学习框架的模型不兼容,需要将一种深度学习框架的模型转换为另一个深度学习框架下能识别的模型,即进行模型转换。
自定义层:与公共层对应,公共层为深度学习框架下已定义的的功能层,例如神经网络中包含的基础的卷积、池化等层,算法人员也会根据需要定义自己的计算方式,自定的计算方法即为自定义层。
CPU:Central Processing Unit,中央处理器。
GPU:Graphics Processing Unit,图形处理器。
ISP:Imaging Signal Processing,图像信号处理器。
AI:Artificial Intelligence,人工智能。
图1为本申请实施例提供的深度学习模型转换的应用场景示意图,如图1所示,包括服务器11和处理器122,其中处理器122安装于人脸检测识别设备12中,人间检测识别设备12中还包括人脸采集单元121,服务器11和人脸检测识别设备12通过有线或无线网络连接。
在服务器11中,有一个已训练好的人脸识别的第一模型,其中第一模型是在第一深度学习框架下可识别的模型,而第一深度学习框架与处理器122的硬件结构特点的适应性较差,导致第一模型直接运行在处理器122上时处理器122的运算效率低下。此时需要进行不同深度学习框架下的模型转换,将第一深度学习框架下的第一模型转换为第二深度学习框架下的第二模型,其中,第一模型和第二模型实现的功能一致,均为人脸检测和识别。因此,在服务器11中,可以将第一深度学习框架下的第一模型转换为第一模型的中间表示格式,然后根据第一模型的中间表示格式和第二深度学习框架,得到第二模型。第二模型为第二深度学习框架下可识别的模型,因此可以直接运行在处理器122上,使得安装了处理器122的人脸检测识别设备具备人脸检测和识别功能。通过人脸采集单元121采集人脸图像,然后发送给处理122进行人脸检测和识别
需要说明的是,上述人脸检测识别设备仅仅是一种举例,第一模型可以为一种具备人脸检测和识别的模型,也可以为具备其他功能的模型,例如图像识别模型、车辆检测模型等等,相应的,根据第一模型得到的第二模型也具备和第一模型相同的功能。在一些实施例中,服务器11和处理器122可以是独立的两个具备运算功能的处理器,也可以是合成为一个的处理器,当服务器11和处理器122为同一处理器时,上述模型转换的过程在该处理器中完成。
下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的深度学习模型转换方法的流程示意图,如图2所示,包括:
S21,获取第一模型的中间表示格式,所述第一模型为在第一深度学习框架下可识别的模型,所述第一模型中包括公共层和自定义层,所述中间表示格式为多个深度学习框架下进行模型转换的统一表示格式,所述公共层为多个深度学习框架中均包括的层,所述自定义层为根据所述第一模型的功能进行配置得到的层,所述多个深度学习框架包括所述第一深度学习框架和第二深度学习框架;
在不同的深度学习框架下可识别的模型不同,这是由于不同的深度学习框架对数据信息的存储方式和解析方式不同造成的,因此,在第一深度学习框架下可识别的第一模型,在第二深度学习框架下可能就变成不可识别的了,这就是不同深度学习框架的模型不兼容的问题。
而由于不同的处理器之间的硬件结构不同,因此不同的深度学习框架在不同的处理器上的数据处理和数据调度也不同,若能够根据处理器的结构特点来将一种模型从一种深度学习框架下转换到另一种与该处理器的结构相适应的深度学习框架下,则能够显著提高处理器的运算效率。
第一模型是由多个功能层组成的,而深度学习框架则是为了便于进行深度学习模型的开发而产生的,在深度学习框架中,定义了多个标准功能层,例如包括内存层、卷积层、池化层、全连接层等等。而在深度学习框架中开发深度学习模型,则可以直接利用该深度学习框架中的各个功能层进行有序连接,然后通过样本集对其进行训练,得到具备某种功能的深度学习模型,其中,第一模型即是在第一深度学习框架下根据上述方式得到的一个深度学习模型。在第一模型中,包括公共层和自定义层,其中,公共层是多个深度学习框架中均包括的层,在不同的深度学习框架中均支持公共层,即,公共层为开源支持的层。各个不同的深度学习框架中均可获取到公共层,而无需进行自定义。公共层在不同的深度学习框架中的不同之处仅在于不同的深度学习框架下公共层中的数据存储和解析的方式不同。而自定义层则是根据实际需要或者第一模型需要实现的功能而进行定义的一些运算的集合,自定义层可以有一个或多个,公共层和自定义层进行有序连接,从而形成第一模型。
中间表示格式是一种通用的表示格式,是在各个深度学习框架下进行模型转换的统一表示格式。第一模型的中间表示格式中,表达了第一模型中包括的各个层,包括所有的公共层和自定义层,同时也包括了各层之间的连接关系以及第一模型的参数信息。
中间表示格式能够使得模型在不同的框架之间进行转移,中间模式定义了一种在不同的深度学习框架之间均通用的模型表示格式,因而能够根据中间表示格式实现模型在不同的深度学习框架之间的转换。中间表示格式可以预先进行定义,也可以使用开源的中间表示格式,例如,一种可能的中间表示格式为开放神经网络交换(Open Neural NetworkExchange,ONNX)格式,ONNX格式是一个用于表示深度学习模型的标准,能够在不同的深度学习框架之间进行模型转换。可以理解的是,ONNX格式仅仅为中间表示格式的一种举例,并不构成对中间表示格式的限定。
S22,根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,所述第二模型为在所述第二深度学习框架下可识别的模型。
得到了第一模型的中间表示格式后,由于中间表示格式能够被各个深度学习框架进行识别,因此根据第一模型的中间表示格式和第二深度学习框架,能够得到第二模型。
其中,第二模型中也包括公共层和自定义层,第二模型中各个层的连接关系与第一模型中各个层的连接关系也相同,第二模型中的参数信息也与第一模型中的参数信息相同。所不同的是,第二模型是在第二深度学习框架下可识别的模型,第二模型的数据信息的存储方式和解析方式与第一模型不同。
图3为本申请实施例提供的模型转换框架示意图,如图3所示,包括第一深度学习框架、中间表示格式和第二深度学习框架,其中,第一深度学习框架例如可以为caffe框架、mxnet框架、pytorch框架、keras框架等等,第二深度学习框架也可以为caffe框架、mxnet框架、pytorch框架、keras框架等等,即,第一深度学习框架可以为多种深度学习框架中的一种,而第二深度学习框架为多种深度学习框架中与第一深度学习框架不同的一种,图3中示出的深度学习框架仅仅是一种举例,本申请实施例对此不作特别限定。
根据上述方法,将第一深度学习框架下的第一模型转换成了第二深度学习框架下的第二模型,从而能够在与第二深度学习框架相适应的处理器上运行第二模型。
本申请实施例提供的深度学习模型转换方法,首先获取第一模型的中间表示格式,然后根据第一模型的中间表示格式和第二深度学习框架,得到第二模型,本申请实施例中的第一模型包括公共层和自定义层,且第一模型为第一深度学习框架下可识别的模型,在将第一模型转换为中间表示格式后,由于中间表示格式为各个深度学习框架下进行模型转换的统一格式,因此,根据中间表示格式,能够将第一模型中的公共层和自定义层转换到第二深度学习框架下,形成第二深度学习框架下可识别的模型,不仅能够对公共层进行转换,也能够对自定义层进行转换。
下面将结合附图和具体的实施例,对本申请的方案进行详细说明。
图4为本申请又一实施例提供的深度学习模型转换方法的流程示意图,如图4所示,包括:
S41,获取所述第一模型的计算图,所述计算图用于指示所述第一模型的各公共层和各自定义层之间的连接关系。
在一种可选实施例中,自定义层为根据第一模型的功能进行配置得到的层,可以通过预设规则配置第一模型的初始自定义层,然后用户通过客户端发送调整指令,处理器根据调整指令对初始自定义层进行调整,得到第一模型的自定义层。其中,对初始自定义层的调整可以包括自定义层的参数、结构等等。其中,对初始自定义层的调整为一个可选的步骤,也可以不对初始自定义层进行调整,直接根据预设规则配置得到。
S42,获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式。
第一模型的计算图中有多个节点,每个节点代表一个层级或者一个子运算。第一模型的计算图可以为粗粒度计算图或细粒度计算图,其中,粗粒度计算图中的每个节点代表一个公共层或一个自定义层,而细粒度计算图中的每个节点代表一个子运算,该子运算为公共层的子运算或自定义层的子运算。第一模型的计算图为粗粒度计算图还是细粒度计算图是由第一深度学习框架决定的。
图5为本申请实施例提供的公共层转换示意图,如图5所示,针对公共层的转换,主要包括如下步骤:
S51,加载第一模型。
调用第一深度学习框架下的代码来加载第一模型,用于得到第一模型中的层级结构。图5示例的模型中仅包括公共层。
S52,构建计算图。
计算图为一种表示第一模型的层级结构的文件,计算图中包括多个节点,每个节点表示一个公共层,节点之间有连线,通过节点之间的连线来表示各公共层之间的层级结构。图6为本申请实施例提供的公共层计算图,如图6所示,包括一个输入层,该输入层与一个卷积层连接,卷积层与另外两个卷积层连接,在这两个卷积层的下方分别连接一个池化层,两个池化层与一个全连接层连接,根据图6所示的各个节点以及节点之间的连线,可以获知对应的第一模型的层级结构。图6中的计算图仅仅为一种示例,并不对计算图的具体结构进行限定。
S53,计算图优化。
计算图优化主要是针对计算图中的部分节点而言的,在计算图中,可能存在一个或几个孤立的节点,这一个或几个孤立的节点对整个计算图或整个模型的作用较小,此时可以将这一个或几个孤立的节点去掉,即为计算图的优化。计算图的优化仅仅针对部分计算图而言,并非每个计算图均需要进行优化步骤。
S54,遍历计算节点。
通过遍历计算图上的计算节点来调用rename函数,从而可以将计算节点转换为IR节点。
S55,rename处理。
Rename处理主要是用于创建IR节点,提取超参数和学习参数,其中,超参数为用于定义网络模型、定义公共层等不变的参数,学习参数为需要通过训练模型学习得到的参数,是变化的。创建了IR节点,提取了超参数和学习参数,然后对各参数信息进行整合后,添加输入边,其中输入边为IR节点之间的层级结构。在添加输入边之后,得到中间表示格式IR。
S56,生成IR。
根据如上的步骤,得到了中间表示格式IR,实现了从第一深度学习框架下第一模型到中间表示格式的转换。
图5和图6所述的实施例是针对第一模型中仅包括公共层或仅针对公共层的处理方式,对于自定义层,对应在计算图中为一个或多个节点。
计算图可以分为粗粒度计算图和细粒度计算图,下面将结合附图对这两种表示方式进行说明。
对于计算图为粗粒度计算图的情形,获取第一模型的中间表示格式的方法是,首先获取多个中间表示格式节点和第一模型中的参数信息;然后根据粗粒度计算图获取各公共层和各自定义层之间的第一连接关系;最后根据第一模型中的参数信息和第一连接关系,对多个中间表示格式节点进行配置,得到第一模型的中间表示格式。
下面将结合图7对该过程进行说明。图7为本申请实施例提供的各层转换示意图一,在本申请实施例中,计算图为粗粒度计算图,如图7所示,包括:
S71,加载第一模型。
调用第一深度学习框架下的代码来加载第一模型,用于得到第一模型中的层级结构。图7示例的第一模型中包括公共层和自定义层。
S72,构建计算图。
计算图为表示第一模型的层级结构的文件,本申请实施例中的计算图为粗粒度计算图,粗粒度计算图指的是计算图中的每个层节点代表一个层级的计算图,粗粒度计算图中包括多个层节点,每个层节点表示一个公共层或一个自定义层,层节点之间有连线,通过层节点之间的连线来表示各公共层和各自定义层之间的层级结构,层节点之间的连线即表示第一连接关系。
本申请实施例中,由于第一模型包括公共层和自定义层,因此在构建计算图时,包括公共层和自定义层的构建,此处仅以自定义层的粗粒度计算图进行说明。首先,对自定义层进行捕获,对基本的运算,例如矩阵乘、加减等运算,不进行捕获,每个捕获的自定义层生成相应的单个层节点,相应的生成的计算图即为粗粒度计算图,然后对自定义层进行rename操作,之后,将公共层的计算节点和自定义层的计算节点作相同的后续处理。
图8为本申请实施例提供的粗粒度计算图,如图8所示,包括一个输入层,该输入层与一个卷积层连接,卷积层与另外两个卷积层连接,在这两个卷积层的下方,其中一个卷积层连接一个池化层,另一个卷积层连接一个卷积层和自定义层,卷积层和自定义层又连接一个池化层,最后两个池化层与一个全连接层连接,根据图8所示的各个层节点以及层节点之间的连线,可以获知对应的第一模型的层级结构。图8中的计算图仅仅为一种示例,并不对计算图的具体结构进行限定。
S73,计算图优化。
获取到第一模型的粗粒度计算图后,可进行计算图的优化,去除孤立的层节点。如上所述,计算图的优化仅针对部分计算图,而并非每个计算图都需要执行此步骤。
S74,遍历计算节点。
遍历粗粒度计算图中的层节点,来调用rename函数,从而可以将层节点转换为IR节点。
S75,rename处理。
本申请实施例中,rename处理用于创建IR节点,每个IR节点代表一个公共层或一个自定义层,然后获取第一模型中的参数信息,即提取公共层和自定义层的超参数和学习参数,其中,超参数为用于定义网络模型、定义公共层等不变的参数,学习参数为需要通过训练模型学习得到的参数,是变化的。创建了IR节点,提取了超参数和学习参数,然后对各参数信息进行整合后,添加输入边,其中输入边为IR节点之间的层级结构。在添加输入边之后,根据第一模型中的参数信息和第一连接关系,对多个中间表示格式节点进行配置,得到第一模型的中间表示格式。
S76,生成IR。
根据如上的步骤,得到了中间表示格式IR,实现了从第一深度学习框架下第一模型到中间表示格式的转换。
对于计算图为细粒度计算图的情形,获取第一模型的中间表示格式的方法是,首先获取多个中间表示格式节点、第一参数信息和第二参数信息,第一参数信息为各公共层的参数信息,第二参数信息为各自定义层的参数信息;对公共层对应的子运算进行融合,得到公共层对应的中间表示格式节点,对自定义层对应的子运算进行融合,得到自定义层对应的中间表示格式节点;然后根据细粒度计算图获取各子运算之间的第二连接关系;最后根据第一参数信息、第二参数信息和第二连接关系,对公共层对应的中间表示格式节点和自定义层对应的中间表示格式节点分别进行配置,得到第一模型的中间表示格式。
由于细粒度计算图中的任意一个子运算可能为公共层对应的子运算,也可能为自定义层对应的子运算,因此各子运算之间的第二连接关系包括了公共层对应的子运算之间的第三连接关系、自定义层对应的子运算之间的第四连接关系以及公共层和自定义层之间的第五连接关系。
在根据第一参数信息、第二参数信息和第二连接关系对多个中间表示格式节点进行配置的过程中,首先根据第一参数信息和第三连接关系,对公共层对应的中间表示格式节点进行配置,得到公共层对应的中间表示格式,其中,第一参数信息为各公共层的参数信息。然后根据第二参数信息和第四连接关系,对自定义层对应的中间表示格式节点进行配置,得到自定义层对应的中间表示格式,其中,第二参数信息为各自定义层的参数信息。最后根据第五连接关系、公共层对应的中间表示格式和自定义层对应的中间表示格式,得到第一模型的中间表示格式。
下面将结合图9对该过程进行说明。图9为本申请实施例提供的各层转换示意图二,在本申请实施例中,计算图为细粒度计算图,如图9所示,包括:
S91,加载第一模型。
调用第一深度学习框架下的代码来加载第一模型,用于得到第一模型中的层级结构。图9示例的第一模型中包括公共层和自定义层。
S92,构建计算图。
计算图为表示第一模型的层级结构的文件,本申请实施例中的计算图为细粒度计算图,细粒度计算图指的是每一个OP(子运算)都会生成一个对应的计算节点,从而形成细粒度计算图,计算节点之间有连线,通过计算节点之间的连线来表示各计算节点之间的层级结构,计算节点之间的连线即表示第二连接关系。
本申请实施例中,由于第一模型包括公共层和自定义层,因此在构建计算图时,包括公共层和自定义层的构建。针对公共层,同样在构建计算图后,公共层的rename处理流程包括创建IR节点,然后根据公共层的实现逻辑提取超参数和学习参数。当构建的计算图为细粒度计算图时,公共层在计算图中对应的部分也是细粒度的。此处仅以自定义层的处理过程为例进行说明。
由于生成的计算图是细粒度计算图,自定义层的每一个op都会生成一个计算节点,然后为自定义层实现一个rename,自定义层的rename处理流程是创建IR,根据自定义层的逻辑,在得到第一模型对应的细粒度计算图后,对于自定义层,在细粒度计算图中为多个计算节点,每个计算节点包括该自定义层的标识符信息。在对细粒度计算图进行遍历的过程中,当遍历到某一个属于自定义层的计算节点时,根据该计算节点上对应的自定义层的标识符信息,从整个细粒度计算图中获取到所有属于该自定义层的计算节点,并获取该自定义层的计算节点中的参数,包括学习参数和超参数。最后,根据这些学习参数和超参数,以及获取到的计算节点,进行融合操作,得到该自定义层。
图10为本申请实施例提供的细粒度计算图,如图10左边所示,包括一个输入层,该输入层与一个卷积层连接,卷积层与另外两个卷积层连接,在这两个卷积层的下方,其中一个卷积层连接一个池化层,另一个卷积层连接两个OP,两个OP又连接一个池化层,最后两个池化层与一个全连接层连接,根据图10所示的各个层节点以及层节点之间的连线,可以获知对应的第一模型的层级结构,其中两个OP属于一个自定义层中。因此,在进行模型转换时,将这两个OP转换成一个自定义层,如图10右边所示,得到转换后的IR节点。图10中的计算图仅仅为一种示例,并不对计算图的具体结构进行限定。
S93,计算图优化。
获取到第一模型的细粒度计算图后,可进行计算图的优化,去除孤立的层节点。如上所述,计算图的优化仅针对部分计算图,而并非每个计算图都需要执行此步骤。
S94,遍历计算节点。
遍历细粒度计算图中的层节点,来调用rename函数,从而可以将层节点转换为IR节点。
S95,rename处理。
自定义层rename执行完毕,后面依次遍历自定义层的OP添加输入,OP为自定义层添加输入时,OP的rename只执行输入添加,创建节点以及提取学习参数都不执行,自定义层添加输入时要进行过滤,只添加表示非本层的输入,因为有些OP是输入是其他OP的输出而非自定义层的输入,自定义层的rename的触发是当自定义层第一个OP的rename触发时触发。
公共层的rename处理与图5实施例中的处理方式类似,此处不再赘述。
S96,生成IR。
根据如上的步骤,得到了中间表示格式IR,实现了从第一深度学习框架下第一模型到中间表示格式的转换。
S43,根据第一模型的中间表示格式获取第二深度学习框架下的多个功能层。
完成第一深度学习框架下的第一模型转换为第一模型的中间表示格式后,接下来就是将第一模型的中间表示格式中的各功能层根据相应的第二深度学习框架调用第二深度学习框架下的功能层生成代码,即,根据第一模型的中间表示格式得到第二深度学习框架下的多个功能层。
S44,根据第一模型的所述参数信息,对第二深度学习框架下的多个功能层进行配置,得到第二模型。
得到第二深度学习框架下的多个功能层后,得到了第二深度学习框架下的相应代码,然后运行相应代码,根据第一模型的参数信息作为输入或各功能层的参数,依次遍历各个功能层,逐个添加各个层对应第二深度学习框架的功能层,生成第二深度学习框架下的代码。最后,运行第二深度学习框架下的代码,以及相应的模型参数,得到第二深度学习框架下的第二模型。
本申请实施例中,各种深度学习框架下的模型生成构建计算图时,自定义层既支持生成粗粒度计算图也支持细粒度计算图(OP的组合)。本申请的方案,基于中间表示格式,支持自定义层的多对多深度学习模型转换,该方法适用于mxnet、caffe、pytorch、TensorFlow、keras等主流深度学习框架生成的模型之间相互转换,例如pytorch2caffe和TensorFlow2caffe。转换本质上是根据各个深度学习框架的原理和特点实现不同框架问模型文件的格式转换,原则上只需要在中央处理器(Central Processing Unit,CPU)上运行,如果算法实现本身是图形处理器(Graphics Processing Unit,GPU)实现的也可以在GPU的硬件上运行,该方法可以应用在人脸检测、识别、车辆检测和行为分析等应用下的不同深度学习框架下的模型转换。
本申请的方案可应用于AI开放平台中,AI开放平台中可提供文字识别、语言处理、人脸识别等交互技术工具,结合编程语言进行后台估计,提高软件的开发效率,实现软件开发的多样性和可实现性。
将本申请实施例提供的方案应用于AI开放平台时,在获取第一模型的中间表示格式之前,具体的,用户可以通过客户端向AI开放平台发送请求指令,请求指令用于请求具有第一功能的第二模型,其中第一功能为第一模型的功能。第一模型可以为在第一深度学习框架下预先训练好的模型,然后AI开放平台接收客户端发送的请求指令,根据请求指令得到具有第一功能的第二模型。
以AI开放平台在零售行业的应用为例,由于零售行业的货物量巨大,货架商品的盘点和补货的工作量十分繁杂,如果能够通过摄像机对货架上的商品存量进行检测并提醒补货,则会大大减小人员的工作量。基于此,用户需要一个具备商品存量检测功能的模型,即第二模型,此时的第一功能即为商品存量检测。
此时,可以首先创建第一模型,并根据部分训练样本对第一模型进行训练,得到具备第一功能的第一模型,其中,训练样本可以采用进行数据标定后的样本图像,数据标定指的是标注样本图像中商品的选择和分类。
得到第一模型后,可将第一模型部署到摄像机中,使得摄像机具备第一功能。进一步的,由于第一模型为第一深度学习框架下的模型,而摄像机中的处理器可能和AI平台中的不同,因此,可采用本申请的方案进行模型转换,根据客户端发送的请求指令,在AI开放平台上将第一模型转换为第二深度学习框架下的第二模型,以更好的适配摄像机的处理器。最后,将第二模型部署于摄像机中,此时,该摄像机可以通过拍摄商场的商品照片进行商品检测及缺货提醒。
在本申请的可选实施例中,用户可以指一个用户账号。
本申请实施例提供的深度学习模型转换方法,首先获取第一模型的中间表示格式,然后根据第一模型的中间表示格式和第二深度学习框架,得到第二模型,本申请实施例中的第一模型包括公共层和自定义层,且第一模型为第一深度学习框架下可识别的模型,在将第一模型转换为中间表示格式后,由于中间表示格式为各个深度学习框架下进行模型转换的统一表示格式,因此,根据中间表示格式,能够将第一模型中的公共层和自定义层转换到第二深度学习框架下,形成第二深度学习框架下可识别的模型,不仅能够对公共层进行转换,也能够对自定义层进行转换。
图11为本申请实施例提供的深度学习模型转换系统的结构示意图,如图11所示,包括第一处理器111和第二处理器112,其中:
所述第一处理器111和所述第二处理器112为中央处理器CPU、图形处理器GPU、图像信号处理器ISP中的任意两个;
所述第一处理器111用于将第一深度学习框架下可识别的第一人脸检测模型发送给所述第二处理器112;
所述第二处理器112用于根据上述实施例中任一项所述的方法,将所述第一深度学习框架下可识别的第一人脸检测模型转换为第二深度学习框架下可识别的第二人脸检测模型。
CPU为电子计算机的核心设备,能够解释计算机指令并处理计算机软件中的数据,主要应用于计算机设备。GPU是一种在个人电脑、工作站和一些移动设备上进行图像和图形相关运算工作的微处理器,主要针对的是图像和图像的处理。ISP是一种运用于摄像机或者具备拍摄功能的设备上的一种处理器,主要是对摄像机中的图像信号进行处理。
本申请实施例中,第一处理器111和第二处理器112为两个不同的处理器,通过本申请的方案,实现不同的处理器下的模型的转换。以第一处理器111为CPU、第二处理器112为ISP为例,第一人脸检测模型为第一深度学习框架下可识别的模型,可运行于CPU上,实现人脸检测的功能。
当想在摄像机上实现人脸检测时,若将第一深度学习框架下的第一人脸检测模型直接部署于摄像机上,由于CPU和摄像机中的ISP这两种处理器的硬件结构差异,可能导致第一深度学习框架下的第一人脸检测模型在ISP上运行的效率较低。此时,CPU可以将第一人脸检测模型发送给ISP,ISP根据上述实施例中的方法将第一深度学习框架下可识别的第一人脸检测模型转换为第二深度学习框架下可识别的第二人脸检测模型,并在ISP上部署运行。此时,部署了第二人脸检测模型的摄像机即可实现人脸检测功能。
图12为本申请实施例提供的深度学习模型转换装置的结构示意图,如图12所示,包括获取模块121和处理模块122,其中:
获取模块121用于获取模块,用于获取第一模型的中间表示格式,所述第一模型为在第一深度学习框架下可识别的模型,所述第一模型中包括公共层和自定义层,所述中间表示格式为多个深度学习框架下进行模型转换的统一表示格式,所述公共层为多个深度学习框架中均包括的层,所述自定义层为根据所述第一模型的功能进行配置得到的层,所述多个深度学习框架包括所述第一深度学习框架和第二深度学习框架;
处理模块122用于根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,所述第二模型为在所述第二深度学习框架下可识别的模型。
在一种可能的实现方式中,所述获取模块121具体用于:
获取所述第一模型的计算图,所述计算图用于指示所述第一模型的各公共层和各自定义层之间的连接关系;
获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述计算图为粗粒度计算图或细粒度计算图,所述获取模块121具体用于:
获取所述第一模型的粗粒度计算图,其中,所述粗粒度计算图中包括多个层节点、以及层节点之间的连接关系,每个所述层节点为一个所述公共层或一个所述自定义层;或者,
获取所述第一模型的细粒度计算图,其中,所述细粒度计算图中包括多个计算节点、以及计算节点之间的连接关系,每个所述计算节点为一个子运算,所述子运算为所述自定义层的部分或所述公共层的部分。
在一种可能的实现方式中,所述计算图为粗粒度计算图,所述获取模块121具体用于:
获取多个中间表示格式节点和所述第一模型中的参数信息;
根据所述粗粒度计算图获取各公共层和各自定义层之间的第一连接关系;
根据所述第一模型中的参数信息和所述第一连接关系,对所述多个中间表示格式节点进行配置,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述计算图为细粒度计算图,所述获取模块121具体用于:
获取多个中间表示格式节点、第一参数信息和第二参数信息,所述第一参数信息为各公共层的参数信息,所述第二参数信息为各自定义层的参数信息;
对所述公共层对应的子运算进行融合,得到所述公共层对应的中间表示格式节点;
对所述自定义层对应的子运算进行融合,得到所述自定义层对应的中间表示格式节点;
根据所述细粒度计算图获取各子运算之间的第二连接关系;
根据所述第一参数信息、所述第二参数信息和所述第二连接关系,对所述公共层对应的中间表示格式节点和所述自定义层对应的中间表示格式节点分别进行配置,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述第二连接关系包括所述公共层对应的子运算之间的第三连接关系、所述自定义层对应的子运算之间的第四连接关系以及所述公共层和所述自定义层之间的第五连接关系,所述获取模块121具体用于:
根据所述第一参数信息和所述第三连接关系,对所述公共层对应的中间表示格式节点进行配置,得到所述公共层对应的中间表示格式;
根据所述第二参数信息和所述第四连接关系,对所述自定义层对应的中间表示格式节点进行配置,得到所述自定义层对应的中间表示格式;
根据所述第五连接关系、所述公共层对应的中间表示格式和所述自定义层对应的中间表示格式,得到所述第一模型的中间表示格式。
在一种可能的实现方式中,所述获取模块121还用于,在获取第一模型的中间格式之前:
根据预设规则配置所述第一模型的初始自定义层;
获取调整指令,根据所述调整指令对所述初始自定义层进行调整,得到所述自定义层。
在一种可能的实现方式中,所述获取模块121还用于,在获取第一模型的中间表示格式之前:
接收客户端发送的请求指令,所述请求指令用于请求具有第一功能的所述第二模型,所述第一功能为所述第一模型的功能。
在一种可能的实现方式中,所述处理模块122具体用于:
根据所述第一模型的中间表示格式获取所述第二深度学习框架下的多个功能层;
根据所述第一模型的所述参数信息,对所述第二深度学习框架下的多个功能层进行配置,得到所述第二模型。
本申请实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图13为本申请实施例提供的深度学习模型转换设备的硬件结构示意图,如图13所示,该深度学习模型转换设备包括:至少一个处理器131和存储器132。其中,处理器131和存储器132通过总线133连接。
可选地,该模型确定还包括通信部件。例如,通信部件可以包括接收器和/或发送器。
在具体实现过程中,至少一个处理器131执行所述存储器132存储的计算机执行指令,使得至少一个处理器131执行如上的深度学习模型转换方法。
处理器131的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述图13所示的实施例中,应理解,处理器可以是中央处理单元(英文:CentralProcessing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:DigitalSignal Processor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的深度学习模型转换方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (11)
1.一种深度学习模型转换方法,其特征在于,包括:
获取第一模型的中间表示格式,所述第一模型为在第一深度学习框架下可识别的模型,所述第一模型中包括公共层和自定义层,所述中间表示格式为多个深度学习框架下进行模型转换的统一表示格式,所述公共层为多个深度学习框架中均包括的层,所述自定义层为根据所述第一模型的功能进行配置得到的层,所述多个深度学习框架包括所述第一深度学习框架和第二深度学习框架;
根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,所述第二模型为在所述第二深度学习框架下可识别的模型。
2.根据权利要求1所述的方法,其特征在于,所述获取第一模型的中间表示格式,包括:
获取所述第一模型的计算图,所述计算图用于指示所述第一模型的各公共层和各自定义层之间的连接关系;
获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式。
3.根据权利要求2所述的方法,其特征在于,所述计算图为粗粒度计算图或细粒度计算图,所述获取所述第一模型的计算图,包括:
获取所述第一模型的粗粒度计算图,其中,所述粗粒度计算图中包括多个层节点、以及层节点之间的连接关系,每个所述层节点为一个所述公共层或一个所述自定义层;或者,
获取所述第一模型的细粒度计算图,其中,所述细粒度计算图中包括多个计算节点、以及计算节点之间的连接关系,每个所述计算节点为一个子运算,所述子运算为所述自定义层的部分或所述公共层的部分。
4.根据权利要求3所述的方法,其特征在于,所述计算图为粗粒度计算图,所述获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式,包括:
获取多个中间表示格式节点和所述第一模型中的参数信息;
根据所述粗粒度计算图获取各公共层和各自定义层之间的第一连接关系;
根据所述第一模型中的参数信息和所述第一连接关系,对所述多个中间表示格式节点进行配置,得到所述第一模型的中间表示格式。
5.根据权利要求3所述的方法,其特征在于,所述计算图为细粒度计算图,所述获取所述第一模型中的参数信息,根据所述参数信息和所述计算图,得到所述第一模型的中间表示格式,包括:
获取多个中间表示格式节点、第一参数信息和第二参数信息,所述第一参数信息为各公共层的参数信息,所述第二参数信息为各自定义层的参数信息;
对所述公共层对应的子运算进行融合,得到所述公共层对应的中间表示格式节点;
对所述自定义层对应的子运算进行融合,得到所述自定义层对应的中间表示格式节点;
根据所述细粒度计算图获取各子运算之间的第二连接关系;
根据所述第一参数信息、所述第二参数信息和所述第二连接关系,对所述公共层对应的中间表示格式节点和所述自定义层对应的中间表示格式节点分别进行配置,得到所述第一模型的中间表示格式。
6.根据权利要求5所述的方法,其特征在于,所述第二连接关系包括所述公共层对应的子运算之间的第三连接关系、所述自定义层对应的子运算之间的第四连接关系以及所述公共层和所述自定义层之间的第五连接关系,所述根据所述第一参数信息、所述第二参数信息和所述第二连接关系,对所述公共层对应的中间表示格式节点和所述自定义层对应的中间表示格式节点分别进行配置,得到所述第一模型的中间表示格式,包括:
根据所述第一参数信息和所述第三连接关系,对所述公共层对应的中间表示格式节点进行配置,得到所述公共层对应的中间表示格式;
根据所述第二参数信息和所述第四连接关系,对所述自定义层对应的中间表示格式节点进行配置,得到所述自定义层对应的中间表示格式;
根据所述第五连接关系、所述公共层对应的中间表示格式和所述自定义层对应的中间表示格式,得到所述第一模型的中间表示格式。
7.根据权利要求1-6任一项所述的方法,其特征在于,在获取第一模型的中间格式之前,所述方法还包括:
根据预设规则配置所述第一模型的初始自定义层;
获取调整指令,根据所述调整指令对所述初始自定义层进行调整,得到所述自定义层。
8.根据权利要求1-6任一项所述的方法,其特征在于,在获取第一模型的中间表示格式之前,所述方法还包括:
接收客户端发送的请求指令,所述请求指令用于请求具有第一功能的所述第二模型,所述第一功能为所述第一模型的功能。
9.根据权利要求2-6任一项所述的方法,其特征在于,所述根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,包括:
根据所述第一模型的中间表示格式获取所述第二深度学习框架下的多个功能层;
根据所述第一模型的所述参数信息,对所述第二深度学习框架下的多个功能层进行配置,得到所述第二模型。
10.一种深度学习模型转换系统,其特征在于,包括第一处理器和第二处理器,其中:
所述第一处理器和所述第二处理器为中央处理器CPU、图形处理器GPU、图像信号处理器ISP中的任意两个;
所述第一处理器用于将第一深度学习框架下可识别的第一人脸检测模型发送给所述第二处理器;
所述第二处理器用于根据权利要求1-9任一项所述的方法,将所述第一深度学习框架下可识别的第一人脸检测模型转换为第二深度学习框架下可识别的第二人脸检测模型。
11.一种深度学习模型转换装置,其特征在于,包括:
获取模块,用于获取第一模型的中间表示格式,所述第一模型为在第一深度学习框架下可识别的模型,所述第一模型中包括公共层和自定义层,所述中间表示格式为多个深度学习框架下进行模型转换的统一表示格式,所述公共层为多个深度学习框架中均包括的层,所述自定义层为根据所述第一模型的功能进行配置得到的层,所述多个深度学习框架包括所述第一深度学习框架和第二深度学习框架;
处理模块,用于根据所述第一模型的中间表示格式和所述第二深度学习框架,得到第二模型,所述第二模型为在所述第二深度学习框架下可识别的模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911267114.1A CN112947899B (zh) | 2019-12-11 | 2019-12-11 | 深度学习模型转换方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911267114.1A CN112947899B (zh) | 2019-12-11 | 2019-12-11 | 深度学习模型转换方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112947899A true CN112947899A (zh) | 2021-06-11 |
CN112947899B CN112947899B (zh) | 2023-09-26 |
Family
ID=76233941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911267114.1A Active CN112947899B (zh) | 2019-12-11 | 2019-12-11 | 深度学习模型转换方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112947899B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113885845A (zh) * | 2021-09-30 | 2022-01-04 | 苏州浪潮智能科技有限公司 | 深度学习编译器的计算图的生成方法、系统、设备及介质 |
WO2023088268A1 (zh) * | 2021-11-16 | 2023-05-25 | 维沃移动通信有限公司 | Ai信息的传输方法和设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480789A (zh) * | 2017-08-07 | 2017-12-15 | 北京中星微电子有限公司 | 一种深度学习模型的高效转换方法及装置 |
US20180136912A1 (en) * | 2016-11-17 | 2018-05-17 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
CN108415807A (zh) * | 2018-02-12 | 2018-08-17 | 成都睿码科技有限责任公司 | 一种爬取监控电子设备是否浏览不良信息的方法 |
US20180307978A1 (en) * | 2017-04-19 | 2018-10-25 | International Business Machines Corporation | Multi-Modal Construction of Deep Learning Networks |
CN108764487A (zh) * | 2018-05-29 | 2018-11-06 | 北京百度网讯科技有限公司 | 用于生成模型的方法和装置、用于识别信息的方法和装置 |
CN108985448A (zh) * | 2018-06-06 | 2018-12-11 | 北京大学 | 神经网络表示标准框架结构 |
KR20190015797A (ko) * | 2017-08-07 | 2019-02-15 | 강준철 | 인공지능(ai)을 통한 딥러닝훈련모듈과, 순위화프레임워크모듈을 활용하여, 법률전문가에게 최적화된 모범답안을 제시하는 한편, 법률정보를 의미 벡터로 변환하여, 데이터베이스에 저장하고, 이에 대한 문자열 사전모듈을 활용한 온라인 법률정보사전을 제공하는 시스템 및 그 방법 |
CN110472518A (zh) * | 2019-07-24 | 2019-11-19 | 杭州晟元数据安全技术股份有限公司 | 一种基于全卷积网络的指纹图像质量判断方法 |
CN110503644A (zh) * | 2019-08-27 | 2019-11-26 | 广东工业大学 | 基于移动平台的缺陷检测实现方法、缺陷检测方法及相关设备 |
CN110532291A (zh) * | 2019-07-25 | 2019-12-03 | 中国科学院计算技术研究所 | 基于最小执行代价的深度学习框架间模型转换方法及系统 |
CN110533162A (zh) * | 2019-07-25 | 2019-12-03 | 中国科学院计算技术研究所 | 一种自动生成深度学习框架间操作映射的方法及系统 |
-
2019
- 2019-12-11 CN CN201911267114.1A patent/CN112947899B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180136912A1 (en) * | 2016-11-17 | 2018-05-17 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
US20180307978A1 (en) * | 2017-04-19 | 2018-10-25 | International Business Machines Corporation | Multi-Modal Construction of Deep Learning Networks |
CN107480789A (zh) * | 2017-08-07 | 2017-12-15 | 北京中星微电子有限公司 | 一种深度学习模型的高效转换方法及装置 |
KR20190015797A (ko) * | 2017-08-07 | 2019-02-15 | 강준철 | 인공지능(ai)을 통한 딥러닝훈련모듈과, 순위화프레임워크모듈을 활용하여, 법률전문가에게 최적화된 모범답안을 제시하는 한편, 법률정보를 의미 벡터로 변환하여, 데이터베이스에 저장하고, 이에 대한 문자열 사전모듈을 활용한 온라인 법률정보사전을 제공하는 시스템 및 그 방법 |
CN108415807A (zh) * | 2018-02-12 | 2018-08-17 | 成都睿码科技有限责任公司 | 一种爬取监控电子设备是否浏览不良信息的方法 |
CN108764487A (zh) * | 2018-05-29 | 2018-11-06 | 北京百度网讯科技有限公司 | 用于生成模型的方法和装置、用于识别信息的方法和装置 |
US20190370685A1 (en) * | 2018-05-29 | 2019-12-05 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for generating model, method and apparatus for recognizing information |
CN108985448A (zh) * | 2018-06-06 | 2018-12-11 | 北京大学 | 神经网络表示标准框架结构 |
CN110472518A (zh) * | 2019-07-24 | 2019-11-19 | 杭州晟元数据安全技术股份有限公司 | 一种基于全卷积网络的指纹图像质量判断方法 |
CN110532291A (zh) * | 2019-07-25 | 2019-12-03 | 中国科学院计算技术研究所 | 基于最小执行代价的深度学习框架间模型转换方法及系统 |
CN110533162A (zh) * | 2019-07-25 | 2019-12-03 | 中国科学院计算技术研究所 | 一种自动生成深度学习框架间操作映射的方法及系统 |
CN110503644A (zh) * | 2019-08-27 | 2019-11-26 | 广东工业大学 | 基于移动平台的缺陷检测实现方法、缺陷检测方法及相关设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113885845A (zh) * | 2021-09-30 | 2022-01-04 | 苏州浪潮智能科技有限公司 | 深度学习编译器的计算图的生成方法、系统、设备及介质 |
CN113885845B (zh) * | 2021-09-30 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 深度学习编译器的计算图的生成方法、系统、设备及介质 |
WO2023088268A1 (zh) * | 2021-11-16 | 2023-05-25 | 维沃移动通信有限公司 | Ai信息的传输方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112947899B (zh) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11328523B2 (en) | Image composites using a generative neural network | |
AU2019451948B2 (en) | Real-time video ultra resolution | |
US20230153622A1 (en) | Method, Apparatus, and Computing Device for Updating AI Model, and Storage Medium | |
CN112651438A (zh) | 多类别图像的分类方法、装置、终端设备和存储介质 | |
CN111340745B (zh) | 一种图像生成方法、装置、存储介质及电子设备 | |
CN113657560B (zh) | 基于节点分类的弱监督图像语义分割方法及系统 | |
KR20200068050A (ko) | 인공지능 수행을 위한 학습 데이터 생성장치 및 방법 | |
US20210166058A1 (en) | Image generation method and computing device | |
JP2015106382A (ja) | 画像処理装置、画像処理方法およびプログラム | |
CN112947899A (zh) | 深度学习模型转换方法、系统及装置 | |
CN111369258A (zh) | 实体对象类型的预测方法、装置及设备 | |
CN113574566A (zh) | 目标检测网络构建优化方法、装置、设备、介质及产品 | |
JP6031210B1 (ja) | 販売予測装置、販売予測方法、およびプログラム | |
CN111274981A (zh) | 目标检测网络构建方法及装置、目标检测方法 | |
CN116071279A (zh) | 图像处理方法、装置、计算机设备和存储介质 | |
Dou et al. | Background subtraction based on circulant matrix | |
CN111160638A (zh) | 一种转化预估方法及装置 | |
CN111726592B (zh) | 获取图像信号处理器的架构的方法和装置 | |
US11361189B2 (en) | Image generation method and computing device | |
CN117275086A (zh) | 手势识别方法、装置、计算机设备、存储介质 | |
CN111428741A (zh) | 网络社区的发现方法、装置、电子设备及可读存储介质 | |
CN116402090B (zh) | 神经网络计算图的处理方法、装置和设备 | |
CN116664240B (zh) | 基于图神经网络的购物行为预测方法、系统、存储介质及终端 | |
CN116560674A (zh) | 一种兼容多框架的深度学习模型导出至onnx的方法和装置 | |
WO2024102527A1 (en) | Adaptive mixed-resolution processing using a vision transformer |
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 |