CN109754084A - 网络结构的处理方法、装置及相关产品 - Google Patents
网络结构的处理方法、装置及相关产品 Download PDFInfo
- Publication number
- CN109754084A CN109754084A CN201811646113.3A CN201811646113A CN109754084A CN 109754084 A CN109754084 A CN 109754084A CN 201811646113 A CN201811646113 A CN 201811646113A CN 109754084 A CN109754084 A CN 109754084A
- Authority
- CN
- China
- Prior art keywords
- layer
- layers
- network structure
- parameter
- optimization
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及一种网络结构的处理方法、装置及相关产品,包括:计算机设备获取优化指令;再根据该优化指令中的优化级别对网络结构执行相应的优化处理操作,得到优化后的网络结构。本申请提出的网络结构的处理方法可以减小资源开销,并提高网络结构对图像的检测速率。
Description
技术领域
本申请涉及信息处理技术领域,尤其涉及一种网络结构的处理方法、装置及相关产品。
背景技术
随着机器学习网络技术的不断发展,人们对机器学习网络的性能要求也越来越高,例如,机器学习网络的性能包括资源开销、运算时间、运算速率、可靠性、运算精度等。
由于检测网络SSD在图像检测领域因其具有较高的检测精度,成为了目前常用到的一种机器学习网络,且该检测网络SSD用于实现图像的检测与识别。现有的检测网络SSD中包括各种类型的网络结构层,以及各网络结构层下的数据变换操作层。在MLU芯片内,因为特殊的数据摆放等原因使得某些数据变化操作层不需要强制执行,这种情况下这样的网络结构层统称为冗余层。例如:Permute、Reshape、Flatten等数据变化操作层。如果冗余层存在于检测网络SSD中,导致数据处理时资源开销很大、且检测速率降低的问题。
发明内容
基于此,本申请提供了一种能够有效减小资源开销,且提高检测速率的网络结构的处理方法、装置及相关产品。
第一方面,本申请实施例提供了一种网络结构的处理方法,所述包括:
获取优化指令;
根据所述优化指令中的优化级别对网络结构进行优化处理。
第二方面,本申请实施例提供了一种网络结构的处理装置,所述装置包括:
获取模块,用于获取优化指令;
优化模块,用于根据所述优化指令中的优化级别对网络结构进行优化处理。
第三方面,本申请实施例提供了一种机器学习芯片,该机器学习芯片包括上述第二方面所述的网络结构的处理装置。
第四方面,本申请实施例提供了一种芯片封装结构,该芯片封装结构包括上述第三方面所述的机器学习芯片。
第五方面,本申请实施例提供了一种板卡,该板卡包括上述第四方面所述的芯片封装结构。
第六方面,本申请实施例提供了一种电子设备,该电子设备包括上述第五方面所述的板卡。
本申请提供的一种网络结构的处理方法、装置及相关产品,由于在该网络结构的处理方法中包括用于对网络结构进行优化的优化指令,且该优化指令中的优化级别实现了对网络结构的不同优化操作,因此,相比于现有的网络结构,进行优化处理后的网络结构的复杂度较低,所以减小了系统资源开销,从而提高网络网络结构的检测速率。
附图说明
图1为一个实施例提供的一种计算机设备的内部结构示意图;
图2为一个实施例提供的一种网络结构的处理方法的流程图;
图3为一个实施例提供的一种卷积神经网络优化系统示意图;
图4为一个实施例提供的一种卷积神经网络结构的优化处理方法的流程图;
图4A为一个实施例提供的一种卷积神经网络结构的示意图;
图5为一个实施例提供的一种卷积神经网络结构的优化处理方法的流程图;
图5A为一个实施例提供的一种卷积神经网络结构的示意图;
图6为一个实施例提供的一种卷积神经网络结构的优化处理方法的流程图;
图6A为一个实施例提供的一种卷积神经网络结构的示意图;
图7为一个实施例提供的一种卷积神经网络结构的优化处理方法的流程图;
图8为一个实施例提供的一种卷积神经网络结构的优化处理方法的流程图;
图9为一个实施例提供的一种网络结构的处理方法的流程图;
图10为图9实施例中步骤702的一种实现方式的流程图;
图11为图9实施例中步骤704的一种实现方式的流程图;
图12为一个实施例提供的一种网络结构的处理方法的流程图;
图13为一个实施例提供的一种优化前的网络结构示意图;
图14为一个实施例提供的一种优化后的网络结构示意图;
图15为一个实施例提供的一种网络结构的处理装置结构示意图;
图16为一个实施例提供的一种板卡结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请提供的网络结构的处理方法,可以应用于如图1所示的计算机设备中。该计算机设备可以是终端,其内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种网络结构的处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图2为一个实施例提供的一种网络结构的处理方法的流程图。该方法的执行主体为图1中的计算机设备,该方法涉及的是计算机设备对网络结构进行优化的具体过程。如图2所示,该方法具体包括以下步骤:
步骤102,获取优化指令。
其中,优化指令用于指示计算机设备对网络结构进行优化操作;
当计算机设备需要使用网络结构检测图像时,计算机设备可以先获取用户输入的优化指令,再根据该优化指令指示的方法,对该网络结构进行优化处理,具体的,计算机设备可以对网络结构的结构进行优化,可选的,还可以同时对网络结构的结构,以及网络结构中包含的各模型参数进行优化。
需要说明的是,计算机设备获取优化指令的方法可以有很多种,例如,用户可以在计算机设备上通过编辑命令的方式输入优化指令,可选的,用户也可以在计算机设备上通过设置参数的方式输入优化指令,例如,当计算机设备基于Caffe框架下使用网络结构检测图像时,计算机设备可以在Caffe.proto中加入一个表示优化级别的参数opt_level,当该参数opt_level取不同的值时,该参数代表不同的优化级别。基于上述应用,计算机设备可以通过设置参数opt_level的取值,对应获取优化指令。例如,当opt_level的取值被设置为0时,计算机设备对网络结构不做任何优化,直接使用初始设计的网络结构对图像进行检测;当opt_level的取值被设置为1时,计算机设备只对网络结构的结构进行优化;当opt_level的取值被设置为2,且网络结构满足预设的ConvBnScale优化条件时,例如:网络结构中存在卷积层和Batch Norm层两层连续的结构、卷积层和Scale层两层连续的结构以及卷积层、Batch Norm层和Scale三层连续的结构中的至少任一种网络结构时。计算机设备不仅要对网络结构的结构进行优化,而且还要对网络结构中包含的模型参数进行优化,但是当网络结构不满足预设的ConvBnScale优化条件时,计算机设备仅对网络结构的结构进行优化。
步骤104,根据优化指令中的优化级别对网络结构进行优化处理。
其中,优化级别用于指示计算机设备对网络结构进行优化的具体方法。优化级别可以包括多种优化级别,且不同的优化级别可以代表不同的优化方法。优化指令中包含有优化级别,以指示计算机设备对网络结构进行相应级别的优化操作。
在实际应用中,用户可以根据实际应用需求预先设置好优化级别,再将携带有该优化级别的优化指令输入到计算机设备上,当计算机设备获取到该优化指令时,可以根据用户设置的优化级别确定对网络结构执行哪种优化操作,然后再采用相应的优化操作方法对网络结构进行优化处理,以得到能够满足用户需求的网络结构。
本申请提供的一种网络结构的处理方法、装置及相关产品,由于在该网络结构的处理方法中包括用于对网络结构进行优化的优化指令,且该优化指令中的优化级别实现了对网络结构的不同优化操作,因此,相比于现有的网络结构,进行优化处理后的网络结构的复杂度较低,所以减小了系统资源开销,从而提高网络网络结构的检测速率。
可选的,如上述实施例所述,优化指令中的优化级别可以为多种优化级别,当优化级别为第一优化级别时,删除网络结构中的冗余层,获得第一优化网络结构。
其中,第一优化级别用于指示计算机设备对网络结构进行结构优化的操作。冗余层可以是网络结构中包含的一个结构层,也可以是网络结构中包含的多个结构层。在实际应用中,冗余层可以是根据实际应用需求,或是用户对网络结构的功能需求,预先设定的需要被删除的结构层。例如,其可以是默认框配置层、拼接层等。可选的,在MLU芯片内,冗余层还可以是因为特殊的数据摆放等原因使得某些数据变化操作层不需要强制执行,这种情况下的冗余层可以为一些数据变化操作层。例如,Permute、Reshape、Flatten等数据变化操作层。第一优化网络结构表示进行结构优化处理后的网络结构。
当计算机设备获取到的优化级别为第一优化级别,并执行对网络结构的结构优化操作时,计算机设备可以先根据实际应用需求或用户对网络结构的功能需求,确定网络结构中冗余层有哪些,再相应删除这些冗余层,然后重新调整删除掉冗余层的网络结构,从而得到能够满足实际应用需求的第一优化网络结构。
可选的,当优化级别为第二优化级别时,且网络结构中存在卷积层和Batch Norm层两层连续的结构、卷积层和Scale层两层连续的结构以及卷积层、Batch Norm层和Scale三层连续的结构中的至少任一种网络结构时,删除网络结构中的冗余层,对卷积层的模型参数进行优化,获得第二优化网络结构。
其中,第二优化级别用于指示计算机设备对网络结构中的卷积层的模型参数进行优化的操作。现有的卷积神经网络结构中通常可以包括卷积层和Batch Norm层两层连续的结构,也可以包括卷积层和Scale层两层连续的结构,还可以包括卷积层、Batch Norm层和Scale三层连续的结构,实现对输入的图像数据进行检测。
当计算机设备根据获取到的第二优化级别的指示,对一个网络结构进行优化处理时,具体的,计算机设备可以先检测该网络结构中所包含的结构类型,若该网络结构中包含卷积层和Batch Norm层两层连续的结构,卷积层和Scale层两层连续的结构,卷积层、BatchNorm层和Scale三层连续的结构这三种结构中的任意一种,或者这三种结构中的任意两种,甚至三种,则计算机设备执行上述步骤104,得到第一优化网络结构,再对第一优化网络结构中的卷积层的模型参数进行优化,获得第二优化网络结构,即相当于计算机即对网络结构的结构进行了优化,还对该网络结构中的卷积层的模型参数进行了优化。
可选的,当优化级别为第二优化级别时,还存在另一种应用,即当网络结构中不存在卷积层和Batch Norm层两层连续的结构、卷积层和Scale层两层连续的结构以及卷积层、Batch Norm层和Scale三层连续的结构中的任一种网络结构时,删除网络结构中的冗余层,获得第一优化网络结构。
本事实例涉及的是计算机设备获取到第二优化级别,且网络结构中不存在卷积层和Batch Norm层两层连续的结构,卷积层和Scale层两层连续的结构,卷积层、Batch Norm层和Scale层三层连续的结构中的任意一种时的情况,在这种应用下,计算机设备直接执行上述步骤104,对网络结构进行优化,并得到第一优化网络结构,即只实现对网络结构的结构优化处理。
针对上述实施例中涉及到的对网络结构中的模型参数进行优化的过程,以下实施例将以一种卷积神经网络为例进行说明。该卷积神经网络优化方法,可以应用于如图3所示的卷积神经网络优化系统100中。该卷积神经网络优化系统100包括:存储器110和处理器120,存储器110上存储有处理器120可执行的指令;存储器110可以进行片内存储,也可以进行片外存储;处理器120包括多个处理器核,每一处理器核可以通过内总线进行通信,执行不同的任务。
可选的,当上述卷积神经网络结构中存在卷积层和Batch Norm层两层连续的结构时,在一个实施例中,提供了一种卷积神经网络结构的优化处理方法。如图4所示,该方法在如图3所示的卷积神经网络优化系统100上运行,该方法包括以下步骤:
步骤202,获取配置参数。
其中,配置参数包括Batch Norm层的第一训练参数及Batch Norm层的第二训练参数。具体地,可以从Caffe模型中获取用于执行Batch Norm层的卷积计算的第一训练参数及第二训练参数。
进一步,Caffe指的是卷积神经网络框架,即一种常用的深度学习框架。Caffe的源码文件支持配置和更改,也就是说,在配置Caffe的过程中可以对模型进行重新定义和优化。Caffe模型指的是利用机器学习算法通过训练得到的数学模型。
步骤204,将所述Batch Norm层的第一训练参数与卷积层的权值参数融合,得到第一融合结果。
具体地,可以将步骤202中获取到的Batch Norm层的第一训练参数与卷积层的权值参数进行融合计算,得到第一融合结果。
作为一种可选的实施方式,所述Batch Norm层的第一训练参数包括用于执行Batch Norm层的卷积计算的至少一个第一训练子参数。
具体的,若Batch Norm层的第一训练参数包括多个第一训练子参数,则将BatchNorm层的所有第一训练子参数与卷积层的权值参数进行融合计算。
步骤206,将所述Batch Norm层的第二训练参数与卷积层的偏置参数融合,得到第二融合结果。
具体地,可以将步骤202中获取到的Batch Norm层的第二训练参数与卷积层的偏置参数进行融合计算,得到第二融合结果。
作为一种可选的实施方式,所述Batch Norm层的第二训练参数包括用于执行Batch Norm层的卷积计算的至少一个第二训练子参数。
具体的,若Batch Norm层的第二训练参数包括多个第二训练子参数,则将BatchNorm层的所有第二训练子参数与卷积层的偏置参数进行融合计算。
步骤208,根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化。
具体地,可以根据步骤204中得到的第一融合结果和步骤206中得到的第二融合结果,完成对该卷积神经网络的优化。
上述卷积神经网络优化方法中,通过将Batch Norm层的计算过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除冗余神经网络层,能够简化网络结构,提升网络运行速度。
在其中一个实施例中,将所述Batch Norm层的第一训练参数以及所述卷积层的权值参数进行乘法运算,得到所述第一融合结果。
其中,如图4A所示的包括卷积层Convolution和Batch Norm层的两层连续结构可以被优化为一层Convolution,即将Batch Norm层的计算融合到Convolution层,就可以删除Batch Norm层。
Batch Norm层主要对输入数据进行归一化处理,即其中,x表示Batch Norm层的输入数据;xnorm表示经过归一化处理后的Batch Norm层的输出数据;μ表示累计计算的均值;σ表示累计计算的方差。
所谓归一化处理主要是为了简化数据处理过程,能够将输入数据映射到[0,1]或[-1,1]的区间内,把有量纲的表达式变换成为无量纲的表达式,成为纯量,便于不同单位或量级的指标能够进行比较和加权,从而使数据处理更加便捷、快速。
举例说明,Batch Norm层的计算公式为经简化处理,获得公式(1)。请参阅公式(1):
Batch Norm层的训练过程是从总样本中提取mini-batch个样本进行多次前向训练,并通过滑动平均的方式,更新Caffe模型中的计算参数。
具体地,为了将Batch Norm层的计算过程融合到Convolution层中,可以获取用于执行Batch Norm层的卷积计算的第一训练参数及用于执行Batch Norm层的卷积计算的第二训练参数。其中,请参阅公式(1),用于执行Batch Norm层的卷积计算的第一训练参数包括多个第一训练子参数(alpha,var,scale),用于执行Batch Norm层的卷积计算的第二训练参数包括多个第二训练子参数(alpha,mean,var,scale,beta)。
其中,上述第一训练参数或第二训练参数(alpha,mean,var,scale,beta)为向量。Caffe模型中的每一类第一训练参数或第二训练参数不止一个,例如:若Caffe模型中的第一训练子参数alpha有多个,则获取Caffe模型中的所有alpha。
具体地,请继续参阅公式(1),将第一训练参数中的多个第一训练子参数(alpha,var,scale)与Convolution层的权值weights进行乘法运算,也就是说,将公式(1)中的数据部分与Convolution层的权值weights相乘,得到第一融合结果
在其中一个实施例中,将所述Batch Norm层的第二训练参数以及所述卷积层的偏置参数进行加法运算,得到所述第二融合结果。
举例说明,请继续参阅公式(1),将Batch Norm层的第二训练参数中的多个第二训练子参数(alpha,mean,var,scale,beta)与Convolution层的偏置bias进行加法运算,也就是说,将公式(1)中的数据部分与Convolution层的偏置bias相加,得到第二融合结果
在其中一个实施例中,删除所述Batch Norm层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
其中,在多层神经网络中,Batch Norm层是对于模型推理贡献不大的网络结构。例如:轻量化卷积神经网络Mobile Net中,存在大量连续的Convolution,Batch Norm层结构,在进行前向传播时,Batch Norm层的构建和执行消耗了大量计算资源,反而让网络结构重复、复杂,因此,通过步骤204和步骤206将Batch Norm层的卷积计算融合到卷积层之后,可以将Batch Norm层删除。
进一步,可以将卷积层的权值参数更改为步骤204中得到的第一融合结果,请参阅公式(1),将卷积层的权值参数更改第一融合结果可以将卷积层的偏置参数更改为步骤206中得到的第二融合结果,请继续参阅公式(1),将卷积层的偏置参数更改第二融合结果从而将Batch Norm层执行的归一化处理过程融合到Convolution层中,删除Batch Norm层,完成了卷积层Convolution和Batch Norm层的两层连续结构的优化。上述卷积神经网络优化方法中,通过将Batch Norm层的归一化数据处理过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除Batch Norm层,能够简化网络结构,提升网络运行速度。
作为一种可选的实施方式,若卷积神经网络包括多个Batch Norm层,则每一BatchNorm层都执行上述优化过程,将多个Batch Norm层的归一化处理过程均融合到Convolution层中,从而可以删除多个冗余的Batch Norm层,使网络结构更加清晰,同时大幅度提升网络性能。
可选的,当卷积神经网络结构中存在卷积层和Scale层两层连续的结构时,在一个实施例中,提供了一种卷积神经网络结构的优化方法。如图5所示,该方法在如图3所示的卷积神经网络优化系统100上运行,该方法包括以下步骤:
步骤302,获取配置参数。
其中,配置参数包括Scale层的第一训练参数及Scale层的第二训练参数。具体地,可以从Caffe模型中获取用于执行Scale层的卷积计算的第一训练参数及第二训练参数。
步骤304,将所述Scale层的第一训练参数与卷积层的权值参数融合,得到第一融合结果。
具体地,可以将步骤302中获取到的Scale层的第一训练参数与卷积层的权值参数进行融合计算,得到第一融合结果。
作为一种可选的实施方式,所述Scale层的第一训练参数包括用于执行Scale层的卷积计算的至少一个第一训练子参数。
具体的,若Scale层的第一训练参数包括多个第一训练子参数,则将Scale层的所有第一训练子参数与卷积层的权值参数进行融合计算。
步骤306,将所述Scale层的第二训练参数与卷积层的偏置参数融合,得到第二融合结果。
具体地,可以将步骤302中获取到的Scale层的第二训练参数与卷积层的偏置参数进行融合计算,得到第二融合结果。
作为一种可选的实施方式,所述Scale层的第二训练参数包括用于执行Scale层的卷积计算的至少一个第二训练子参数。
具体的,若Scale层的第二训练参数包括多个第二训练子参数,则将Scale层的所有第二训练子参数与卷积层的偏置参数进行融合计算。
步骤308,根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化。
具体地,可以根据步骤304中得到的第一融合结果和步骤306中得到的第二融合结果,完成对该卷积神经网络的优化。
上述卷积神经网络优化方法中,通过将Scale层的计算过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除冗余神经网络层,能够简化网络结构,提升网络运行速度。
在其中一个实施例中,将所述Scale层的第一训练参数以及所述卷积层的权值参数进行乘法运算,得到所述第一融合结果。
其中,如图5A所示的包括卷积层Convolution和Scale层的两层连续结构可以被优化为一层Convolution,即将Scale层的计算融合到Convolution层,就可以删除Scale层。
Scale层主要对归一化后的数据进行缩放和平移,即y=γ*xnorm+β,其中,xnorm表示经过归一化处理后的Scale层的输入数据;γ表示缩放量;β表示平移量。
举例说明,Scale层的计算公式请参阅公式(2):
alpha*x+beta (2);
具体地,为了将Scale层的计算过程融合到Convolution层中,可以获取用于执行Scale层的卷积计算的第一训练参数及用于执行Scale层的卷积计算的第二训练参数。其中,请参阅公式(2),用于执行Scale层的卷积计算的第一训练参数包括一个第一训练子参数(alpha),用于执行Scale层的卷积计算的第二训练参数包括一个第二训练子参数(beta)。
其中,上述第一训练参数或第二训练参数(alpha,beta)为向量。Caffe模型中的每一类第一训练参数或第二训练参数不止一个,例如:若Caffe模型中的第一训练子参数alpha有多个,则获取Caffe模型中的所有alpha。
具体地,请继续参阅公式(2),将权值参数中的第一训练子参数(alpha)与Convolution层的权值weights进行乘法运算,也就是说,将公式(2)中的alpha与Convolution层的权值weights相乘,得到第一融合结果alpha*weights。
在其中一个实施例中,将所述Scale层的第二训练参数以及所述卷积层的偏置参数进行加法运算,得到所述第二融合结果。
举例说明,请继续参阅公式(2),将Scale层的第二训练参数中的第二训练子参数(beta)与Convolution层的偏置bias进行加法运算,也就是说,将公式(2)中的beta与Convolution层的偏置bias相加,得到第二融合结果beta+bias。
在其中一个实施例中,删除所述Scale层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
其中,在多层神经网络中,Scale层是对于模型训练贡献不大的网络结构。例如:轻量化卷积神经网络MobileNet中,存在大量连续的Convolution,Scale层结构,在进行前向传播时,Scale层在执行卷积计算过程中并没有起到太大作用,反而让网络结构重复、复杂,因此,通过步骤304和步骤306将Scale层的卷积计算融合到卷积层之后,可以将Scale层删除。
进一步,可以将卷积层的权值参数更改为步骤304中得到的第一融合结果,请参阅公式(1),将卷积层的权值参数更改第一融合结果alpha*weights;可以将卷积层的偏置参数更改为步骤306中得到的第二融合结果,请继续参阅公式(1),将卷积层的偏置参数更改第二融合结果-beta+bias。从而将Scale层执行的归一化处理过程融合到Convolution层中,删除Scale层,完成了卷积层Convolution和Scale层的两层连续结构的优化。
上述卷积神经网络优化方法中,通过将Scale层的归一化数据处理过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除Scale层,能够简化网络结构,提升网络运行速度。作为一种可选的实施方式,若卷积神经网络包括多个Scale层,则每一Scale层都执行上述优化过程,将多个Scale层的缩放和平移处理过程均融合到Convolution层中,从而可以删除多个冗余的Scale层,使网络结构更加清晰,同时大幅度提升网络性能。
可选的,当卷积神经网络结构中存在卷积层、Batch Norm层和Scale三层连续的结构时,在一个实施例中,提供了一种卷积神经网络结构的优化方法。如图6所示,该方法在如图3所示的卷积神经网络优化系统100上运行,该方法包括以下步骤:
步骤402,获取第一配置参数及第二配置参数。
其中,第一配置参数包括Batch Norm层的第一训练参数及Batch Norm层的第二训练参数;第二配置参数包括Scale层的第一训练参数及Scale层的第二训练参数。
具体地,可以从Caffe模型中获取用于执行Batch Norm层的卷积计算的第一训练参数及第二训练参数,也可以从Caffe模型中获取用于执行Scale层的卷积计算的第一训练参数及第二训练参数。
步骤404,将所述Batch Norm层的第一训练参数以及所述Scale层的第一训练参数与卷积层的权值参数融合,得到第一融合结果。
具体地,可以将步骤402中获取到的Batch Norm层的第一训练参数以及Scale层的第一训练参数与卷积层的权值参数进行融合计算,得到第一融合结果。
作为一种可选的实施方式,所述Batch Norm层的第一训练参数包括用于执行Batch Norm层的卷积计算的至少一个第一训练子参数。所述Scale层的第一训练参数包括用于执行Scale层的卷积计算的至少一个第一训练子参数。
具体的,若Batch Norm层的第一训练参数包括多个第一训练子参数,则将BatchNorm层的所有第一训练子参数与卷积层的权值参数进行融合计算。若Scale层的第一训练参数包括多个第一训练子参数,则将Scale层的所有第一训练子参数与卷积层的权值参数进行融合计算。
步骤406,将所述Batch Norm层的第二训练参数以及所述Scale层的第二训练参数与卷积层的偏置参数融合,得到第二融合结果。
具体地,可以将步骤402中获取到的Batch Norm层的第二训练参数以及Scale层的第二训练参数与卷积层的偏置参数进行融合计算,得到第二融合结果。
作为一种可选的实施方式,所述Batch Norm层的第二训练参数包括用于执行Batch Norm层的卷积计算的至少一个第二训练子参数。所述Scale层的第二训练参数包括用于执行Scale层的卷积计算的至少一个第二训练子参数。
具体的,若Batch Norm层的第二训练参数包括多个第二训练子参数,则将BatchNorm层的所有第二训练子参数与卷积层的偏置参数进行融合计算。若Scale层的第二训练参数包括多个第二训练子参数,则将Scale层的所有第二训练子参数与卷积层的偏置参数进行融合计算。
步骤408,根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化。
上述卷积神经网络优化方法中,通过将Batch Norm层和Scale层的计算过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除冗余神经网络层,能够简化网络结构,提升网络运行速度。
在其中一个实施例中,将所述Batch Norm层的第一训练参数、所述Scale层的第一训练参数以及所述卷积层的权值参数进行乘法运算,得到所述第一融合结果。
其中,如图6A所示的包括卷积层Convolution、Batch Norm层和Scale层的三层连续结构可以被优化为一层Convolution,即将Batch Norm层和Scale层的计算分别融合到Convolution层,就可以删除Batch Norm层和Scale层。另外,图6A仅仅示出了神经网络中Convolution、Batch Norm层和Scale层三层之间的一种位置关系,本技术方案适用于将图6A中的Batch Norm层和Scale层位置交换一下的示例。
具体地,为了将Batch Norm层和Scale层的计算过程都融合到Convolution层中,可以获取用于执行Batch Norm层的卷积计算的第一训练参数、用于执行Batch Norm层的卷积计算的第二训练参数、用于执行Scale层的卷积计算的第一训练参数以及用于执行Scale层的卷积计算的第二训练参数。
举例说明,请参阅公式(1)和公式(2),将Batch Norm层的第一训练参数中的多个第一训练子参数(alpha,sqrt,vat,scale)以及Scale层的第一训练参数中的第一训练子参数(alpha),与Convolution层的权值weights进行乘法运算,也就是说,将公式(1)中的数据部分以及公式(2)中的alpha,与Convolution层的权值weights相乘,得到第一融合结果
在其中一个实施例中,将所述Batch Norm层的第二训练参数、所述Scale层的第二训练参数以及所述卷积层的偏置参数进行加法运算,得到所述第二融合结果。
举例说明,请继续参阅公式(1),将Batch Norm层的第二训练参数中的多个第二训练子参数(alpha,mean,var,scale,beta)以及Scale层的第二训练参数中的第二训练子参数(beta),与Convolution层的偏置bias进行加法运算,也就是说,将公式(1)中的数据部分以及公式(2)中的beta,与Convolution层的偏置bias相加,得到第二融合结果
在其中一个实施例中,删除所述Batch Norm层和所述Scale层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
其中,在多层神经网络中,Batch Norm层和Scale层是对于模型训练贡献不大的网络结构。例如:轻量化卷积神经网络Mobile Net中,存在大量连续的Convolution,BatchNorm,Scale层结构,在进行前向传播时,Batch Norm层和Scale层在执行卷积计算过程中并没有起到太大作用,反而让网络结构重复、复杂,因此,通过步骤404和步骤406将BatchNorm层和Scale层的卷积计算融合到卷积层之后,可以将Batch Norm层和Scale层删除。
进一步,可以将卷积层的权值参数更改为步骤404中得到的第一融合结果,请参阅公式(1),将卷积层的权值参数更改第一融合结果可以将卷积层的偏置参数更改为步骤406中得到的第二融合结果,请继续参阅公式(1),将卷积层的偏置参数更改第二融合结果从而将Batch Norm层和Scale层执行的归一化处理过程都融合到Convolution层中,删除Batch Norm层和Scale层,完成了卷积层Convolution、Batch Norm层和Scale层的三层连续结构的优化。
上述卷积神经网络优化方法中,通过将Batch Norm层和Scale层的归一化数据处理过程都融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除Batch Norm层和Scale层,能够简化网络结构,提升网络运行速度。
基于上述实施例,本申请还提供了一种卷积神经网络优化方法,该方法在如图3所示的卷积神经网络优化系统上运行,该方法包括将卷积层的输入数据分别与所述第一融合结果和所述第二融合结果进行卷积计算,得到卷积层的输出结果。如图7所示,具体包括以下步骤:
步骤502,将所述输入数据与所述第一融合结果进行乘法运算,得到第一运算结果。
作为一种可选的实施方式,在如图4所示的Batch Norm层融合到卷积层的两层卷积神经网络的优化方法中,请参阅公式(1),将卷积层的输入数据x与第一融合结果进行乘法运算,得到第一运算结果
作为一种可选的实施方式,在如图5所示的Scale层融合到卷积层的两层卷积神经网络的优化方法中,请参阅公式(2),将卷积层的输入数据x与第一融合结果alpha*weights进行乘法运算,得到第一运算结果x*alpha*weights。
作为一种可选的实施方式,在如图6所示的Batch Norm层和Scale层都融合到卷积层的三层卷积神经网络的优化方法中,请参阅公式(1)和公式(2),将卷积层的输入数据x与第一融合结果进行乘法运算,得到第一运算结果
步骤504,将所述第一运算结果与所述第二融合结果进行加法运算,得到所述输出结果。
作为一种可选的实施方式,在如图4所示的Batch Norm层融合到卷积层的两层卷积神经网络的优化方法中,请参阅公式(1),第二融合结果为将第一运算结果与第二融合结果进行加法运算,得到输出结果为:
作为一种可选的实施方式,在如图5所示的Scale层融合到卷积层的两层卷积神经网络的优化方法中,请参阅公式(2),第二融合结果为beta+bias,将第一运算结果x*alpha*weights与第二融合结果beta+bias,进行加法运算,得到输出结果x*alpha*weights+beta+bias。
作为一种可选的实施方式,在如图6所示的Batch Norm层和Scale层都融合到卷积层的三层卷积神经网络的优化方法中,请参阅公式(1)和公式(2),第二融合结果将第一运算结果 与二融合结果进行加法运算,得到输出结果:
上述卷积神经网络优化方法中,将卷积层的输入数据分别与第一融合结果和第二融合结果进行卷积计算,能够在计算不会溢出的前提下保证优化后的网络精度不受损失,从而提升网络运行速度。
可选的,如图8所示,本申请还提供了另一种卷积神经网络优化方法,该方法在如图3所示的卷积神经网络优化系统上运行,具体包括以下步骤:
步骤602,获取配置参数。
其中,所述配置参数包括第一训练参数及第二训练参数。该第一训练参数包括一个或多个第一训练子参数,该第二训练参数包括一个或多个第二训练子参数。
步骤604,将所述第一训练参数与卷积层的权值参数融合,得到第一融合结果。
具体地,可以将步骤602中获取到的第一训练参数和卷积层的权值参数进行融合计算,得到第一融合结果。
作为一种可选的实施方式,可以将第一训练参数与卷积层的权值参数进行乘法运算,得到第一融合结果。
具体的,若第一训练参数包括多个第一训练子参数,则将所有第一训练子参数与卷积层的权值参数进行乘法运算。
步骤606,将所述第二训练参数与卷积层的偏置参数融合,得到第二融合结果。
具体地,可以将步骤602中获取到的第二训练参数和卷积层的偏置参数进行相应的融合计算,得到第二融合结果。
作为一种可选的实施方式,可以将第二训练参数与卷积层的偏置参数进行加法运算,得到第二融合结果。
具体的,若第二训练参数包括多个第二训练子参数,则将所有第二训练子参数与卷积层的偏置参数进行加法运算。
步骤608,根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化。
具体地,可以根据步骤604中得到的第一融合结果和步骤606中得到的第二融合结果,完成对该卷积神经网络的优化。
作为一种可选的实施方式,删除冗余神经网络层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
其中,冗余神经网络层指的是部署在多层神经网络中,但对于模型推理贡献不大的网络结构。例如:轻量化卷积神经网络Mobile Net中,存在大量连续的Convolution层、Batch Norm层、Scale层结构,在进行前向传播时,Batch Norm层和Scale层在执行卷积计算过程中并没有起到太大作用,反而让网络结构重复、复杂。因此,可以把Batch Norm层和Scale层看做冗余神经网络层。但是,冗余神经网络层并不限于Batch Norm层和Scale层。
进一步,可以将卷积层的权值参数更改为步骤604中得到的第一融合结果;可以将卷积层的偏置参数更改为步骤606中得到的第二融合结果。从而将冗余神经网络层的数据处理过程融合到Convolution层中,删除冗余神经网络层,完成了卷积层Convolution和冗余神经网络层的结构优化。
上述卷积神经网络优化方法中,通过将冗余神经网络层的计算过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除冗余神经网络层,能够简化网络结构,提升网络运行速度。
在Mobile Net中,通过在Caffe的源码文件caffe.proto中加入新的网络参数,如opt_level,用于表示网络优化级别。通过设置该参数值,从而自动检测卷积神经网络的网络结构,并根据设置的参数值,自动调用相应的卷积神经网络优化方法,能够节省用户的学习成本,在提高易用性的同时保留了用户选择的权利。
综上所述的对网络结构的处理方法,上述的网络结构的优化处理方法实现了计算机设备根据第二优化级别对网络结构的一次或两次的优化处理。在两次的优化处理中,第一次优化处理是对网络结构的结构优化处理,简化了网络结构的复杂度,提升了网络的检测速率;第二次优化处理是对网络结构中的模型参数的优化处理,使得到了最优的网络模型,进一步的提升了网络的检测精度。需要说明的是,具体计算机设备是执行两次优化处理还是只执行一次优化处理,是由网络结构中包含的结构类型确定的,如上述所述的那三种结构,具体结构内容参见上述实施例,不再累赘说明。
另外,上述所有实施例中涉及到的优化级别,由于可以包括多种优化级别,且每种优化级别对应不同的优化操作方法,因此,本申请提出的网络结构的处理方法通过优化级别的设置,为用户提供了灵活选择优化方法的设置功能,即用户可以根据实际应用需求设置不同的优化级别,完成对网络结构的优化处理操作。
图9为一个实施例提供的一种网络结构的处理方法的流程图,该实施例涉及的是计算机设备对网络结构中的冗余层进行删除处理的具体过程。如图9所示,具体步骤包括:
步骤702,判断网络结构中是否存在检测输出层。
其中,检测输出层是网络结构中用于输出检测结果的一种结构层。
本实施例中,当计算机设备对网络结构作删除处理时,可以先在网络结构中查找是否存在检测输出层,若存在检测输出层,则说明该网络结构中包含有冗余层,需要做删除处理;若不存在检测输出层,则说明该网络结构中没有包含冗余层,不需要做删除处。因此,基于上述描述,当计算机设备每次对网络结构作结构优化处理时,可以先判断网络结构中是否包含检测输出层,以使计算机设备确定是否进行删除冗余层的操作。需要说明的是,上述的检测输出层是网络中普遍存在的一种结构层,只用来输出网络结构的检测结果。
步骤704,若存在检测输出层,则识别网络结构中的冗余层。
本实施例中,当网络结构中存在检测输出层时,计算机设备可以对网络结构中的冗余层作进一步的删除处理,具体的,计算机设备可以先查看用户预先定义好的需要被删除的冗余层有哪些,再根据这些冗余层的类型,或冗余层的标识,在网络结构中查找与上述冗余层的类型或冗余层的标识一致的结构层,进而识别出需要被删除的冗余层。
步骤706,根据识别结果删除网络结构中的冗余层,并在网络结构中添加ssd检测层;其中,ssd检测层用于设置默认框、拼接特征图、以及输出检测结果。
其中,ssd检测层是网络结构中用于输出检测结果的结构层,其还可以根据实际应用需求具有其它冗余层的功能,与步骤702中的检测输出层不同。
本实施例中,当计算机设备识别出网络结构中的各冗余层后,可以直接删除掉冗余层,重新调整该网络结构,得到一个新的网络结构,再在该新的网络结构中添加一个用于输出检测结果的ssd检测层,得到第一优化网络结构。需要说明的是,为了确保第一优化网络结构具有与原来未被优化的网络结构相同的功能与检测精度,因此,本实施例中添加的ssd检测层不仅能够用于输出检测结果,还可以具有实现那些被删除的冗余层所具有的功能,例如,根据输入的图像特征信息生成图像上的默认框的功能,以及具有将输入的多个特征图进行拼接处理的功能等。
上述实施例中,在网络结构中添加了ssd检测层,实现了那些被删除的冗余层所具有的功能。因此,本申请提出的网络结构的处理方法,在保持网络结构的功能不变的基础上,实现了对网络结构的删除处理,简化了该网络结构,因此,该网络结构所占系统资源较少,从而提高了该网络结构的检测速率。
图10为图9实施例中步骤702的一种实现方式的流程图,该实施例涉及的是计算机设备查找网络结构中的检测输出层的具体过程。如图10所示,上述步骤702“判断网络结构中是否存在检测输出层”,包括:
步骤802,获取网络结构中的最后一层结构层的类型信息。
其中,类型信息用于区分网络结构中的各层结构层,其可以用数字、字母、代码等表示。类型信息可以由用户预先定义,并存储在相应的数据库中,以便之后使用。
在实际应用中,用户可以预先定义网络结构中的每一层结构层的类型信息,以区分网络结构中的每一层结构层的类型。当计算机设备判断网络结构中是否存在检测输出层时,由于检测输出层一般是在网络结构中的最后一层,所以,当计算机设备判断网络结构中是否存在检测输出层时,可以直接判断最后一层结构层是否为检测输出层即可。判断的方法可以是,计算机设备可以先获取网络结构中的最后一层结构层的类型信息,再根据该类型信息做判断。
步骤804,根据类型信息,判断最后一层结构层是否为检测输出层。
当计算机设备获取到网络结构中的最后一层结构层的类型信息时,可以将该类型信息与检测输出层的类型信息进行比较,若一致,则说明最后一层结构层是检测输出层,若不一致,则说明最后一层结构层不是检测输出层。
图11为图9实施例中步骤704的一种实现方式的流程图,该实施例涉及的是计算机设备识别网络结构中的冗余层的具体过程。如图11所示,上述步骤704“识别网络结构中的冗余层”,包括:
步骤902,按照预设的查找路径,以检测输出层为起点,获取与检测输出层连接的所有路径上包含的各层结构层的类型信息。
其中,查找路径表示计算机设备查找网络结构中的某一目标结构层时的查找路线,且该查找路线可以根据实际网络结构中各结构层之间的连接关系预先定义。
当计算机设备识别网络结构中的冗余层时,可以先确定检测输出层在网络结构中的位置,再以该位置为起点,沿着预设的查找路径查找该路径上包含的所有结构层,并同时获取各结构层的类型信息。需要说明的是,网络结构中可以包含多条与检测输出层连接的路径,当网络结构中包含有多条与检测输出层连接的路径时,计算机设备在沿着一条预设的查找路径完成该查找路径上的各结构层的识别工作后,可以再根据设定的查找顺序,继续沿着另一条与检测输出层连接的查找路径继续完成这一条查找路径上的各结构层的识别工作,直到计算机设备沿最后一条与检测输出层连接的查找路径完成识别工作为止。
步骤904,根据各层的类型信息,识别网络结构中的冗余层。
当计算机设备获取到网络结构中所有结构层的类型信息时,可以将各结构层的类型信息与冗余层的类型信息进行一对一的比较分析,若存在与冗余层的类型信息相一致的结构层,则可以确定该结构层为冗余层。
图12为一个实施例提供的一种网络结构的处理方法的流程图,该实施例涉及的是计算机设备对网络结构中的冗余层进行删除处理的具体过程。如图12所示,具体步骤包括:
步骤1002,删除网络结构中的各冗余层,将网络结构中的除冗余层以外的其它结构层的连接关系进行更新,得到删除后的网络结构。
当计算机设备确定了网络结构中的冗余层时,可以直接删除掉这些冗余层,具体的,可以是断开网络结构中各结构层与冗余层之间的连接关系,再重新调整网络结构中除去冗余层后的各结构层之间的连接关系,对网络结构进行更新,得到删除后的网络结构。
步骤1004,将删除后的网络结构中的检测输出层替换为ssd检测层。
当计算机设备删除掉网络结构中的冗余层,并得到删除后的网络结构后,可以继续从中查找检测输出层,并将查找到的检测输出层从删除后的网络结构中删除掉,同时在检测输出层原来所在的位置上添加ssd检测层,用来代替被删除的检测输出层实现输出检测结果的功能,还用于实现那些被删除的冗余层所具有的功能。当计算机设备添加了ssd检测层后,再重新调整网络结构中ssd检测层与各结构层之间的连接关系,得到第一优化网络结构。
可选的,在一种网络结构中,该网络结构中的冗余层可以包括默认框设置层、拼接层、Permute层、以及Flatten层。
其中,默认框设置层具有部署特征图中每个像素点处的默认框的功能。拼接层具有将两个以上的特征图进行拼接处理的功能。Permute层具有置换索引轴顺序的功能。Flatten层具有扁平参数维度功能。
参见图13所示的网络结构,该网络结构为优化前的网络结构,该网络结构中的冗余层包括:输入层与检测输出层之间的默认框设置层和拼接层;池化层与检测输出层之间的默认框设置层和拼接层;第一卷积层与检测输出层之间的Permute层、Flatten层、以及拼接层;第二卷积层与检测输出层之间的Permute层、Flatten层、以及拼接层;第三卷积层与检测输出层之间的Permute层、Flatten层、以及拼接层;第四卷积层与检测输出层之间的Permute层、Flatten层、以及拼接层。
可选的,第一优化网络结构,如图14所示,可以包括:输入层、激活算子层、第一卷积层、第二卷积层、池化层、第三卷积层、第四卷积层、以及ssd检测层。
其中,输入层的输出端分别与激活算子层的输入端、第一卷积层的输入端、第二卷积层的输入端、以及ssd检测层的输入端连接;激活算子层的输出端与池化层的输入端连接;池化层的输出端分别与第三卷积层的输入端和第四卷积层的输入端连接;第一卷积层的输出端、第二卷积层的输出端、第三卷积层的输出端、以及第四卷积层的输出端分别与ssd检测层的输入端连接。
上述的输入层用于接收图像数据,并从中提取图像的特征信息;激活算子层用于将线性的特征信息转换成非线性的特征信息;第一卷积层用于根据接收到的特征信息计算特征图的置信度;第二卷积层用于根据接收到的特征信息计算特征图的位置信息;池化层用于对特征信息进行压缩处理,提取主要特征信息;第三卷积层用于根据接收到的主要特征信息获取主要特征图的置信度;第四卷积层用于根据接收到的主要特征信息获取主要特征图的位置。
可选的,当计算机设备将上述图13所示的网络结构中的冗余层删除掉,并添加ssd检测层后,可以得到如图14所示的第一优化网络结构。该第一网络结构的工作流程为:输入层接收被检测的图像数据,并提取其中的特征信息,再将特征信息分别传送给与之连接的激活算子层、第一卷积层、第二卷积层、以及ssd检测层进行数据处理。激活算子层在接收到特征信息时,对其进行非线性转换,得到非线性的特征信息,并将非线性的特征信息输入到与之连接的池化层;池化层再从非线性的特征信息中提取主要特征信息,并分别传送给与池化层连接的第三卷积层和第四卷积层,使第三卷积层根据接收到的主要特征信息计算特征图的置信度,并将得到的置信度传送给ssd检测层进行输出,以及使第四卷积层根据接收到的主要特征信息计算特征图的位置信息,并将得到的位置信息传送给ssd检测层进行输出;第一卷积层在接收到特征信息时,可以根据该特征信息计算特征图的置信度,并将得到的置信度传送给ssd检测层进行输出;第二卷积层在接收到特征信息时,可以根据该特征信息计算特征图的位置信息,并将得到的位置信息传送给ssd检测层进行输出。最终ssd检测层可以对输入层输出的数据、第一卷积层输出的数据、第二卷积层输出的数据、第三卷积层输出的数据、以及第四卷积层输出的数据进行拼接处理,得到包括特征图置信度和位置的最终输出检测结果。
对比图13中所示的网络结构与图14所示的第一优化网络结构,可以看出,利用本申请提出的网络结构的处理方法得到的第一优化网络结构的组成结构层数量比较少,所以对应的硬件资源开销比较小,从而提高了网络结构的检测速率。
应该理解的是,虽然图2-12的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-12中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行。
在一个实施例中,如图15所示,提供了一种网络结构的处理装置,包括:获取模块11和优化模块12,其中:
获取模块11,用于获取优化指令;
优化模块12,用于根据所述优化指令中的优化级别对网络结构进行优化处理。
上述实施例提供的一种网络结构的处理装置,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,本申请还提供了一种机器学习芯片,其包括了上述网络结构的处理装置。
在一个实施例中,本申请还提供了一种芯片封装结构,其包括了上述芯片。
在一个实施例中,本申请还提供了一种板卡,其包括了上述芯片封装结构。参照图16所示,上述板卡除了包括上述芯片封装结构81以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件82、接口装置83和控制器件84;所述存储器件82与所述芯片封装结构81内的机器学习芯片811通过总线连接,用于存储数据,所述存储器件82可以包括多组存储单元821。每一组所述存储单元821与所述机器学习芯片811通过总线连接。可以理解,每一组所述存储单元821可以是DDR SDRAM(Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述机器学习芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置83与所述芯片封装结构81内的机器学习芯片811电连接。所述接口装置83用于实现所述机器学习芯片811与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置83可以为标准PCIE(peripheral componentinterconnect express,一种高速串行计算机扩展总线标准)接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述机器学习芯片,实现数据转移。优选的,当采用PCIE3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置83还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口装置能够实现转接功能即可。另外,所述机器学习芯片811的计算结果仍由所述接口装置83传送回外部设备(例如服务器)。
所述控制器件84与所述机器学习芯片811电连接。所述控制器件84用于对所述芯片的状态进行监控。具体的,所述机器学习芯片811与所述控制器件84可以通过SPI(SerialPeripheral Interface,串行外设接口)接口电连接。所述控制器件可以包括单片机(MicroController Unit,MCU)。如所述机器学习芯片可以包括多个数据处理装置和/或组合处理装置,可以带动多个负载。因此,所述机器学习芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制器件84可以实现对所述机器学习芯片中多个数据处理装置和/或组合处理装置的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的全部或部分处理过程是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:RandomAccess Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (17)
1.一种网络结构的处理方法,其特征在于,所述包括:
获取优化指令;
根据所述优化指令中的优化级别对网络结构进行优化处理。
2.如权利要求1所述的方法,其特征在于,根据所述优化指令中的优化级别对网络结构进行优化处理的步骤包括:
所述优化级别为第一优化级别时,删除所述网络结构中的冗余层,获得第一优化网络结构。
3.如权利要求1所述的方法,其特征在于,根据所述优化指令中的优化级别对网络结构进行优化处理的步骤包括:
所述优化为第二优化级别时,所述网络结构中存在卷积层和Batch Norm层两层连续的结构、卷积层和Scale层两层连续的结构以及卷积层、Batch Norm层和Scale三层连续的结构中的至少任一种网络结构时,删除所述网络结构中的冗余层,对所述卷积层的模型参数进行优化,获得第二优化网络结构。
4.如权利要求1所述的方法,其特征在于,根据所述优化指令中的优化级别对网络结构进行优化处理的步骤包括:
所述优化级别为第二优化级别时,所述网络结构中不存在卷积层和Batch Norm层两层连续的结构、卷积层和Scale层两层连续的结构以及卷积层、Batch Norm层和Scale三层连续的结构中的任一种网络结构时,删除所述网络结构中的冗余层,获得第一优化网络结构。
5.根据权利要求2、3或4所述的方法,其特征在于,删除所述网络结构中的冗余层,包括:
判断所述网络结构中是否存在检测输出层;
若存在所述检测输出层,则识别所述网络结构中的所述冗余层;
根据识别结果删除所述网络结构中的所述冗余层,并在所述网络结构中添加ssd检测层;其中,所述ssd检测层用于设置默认框、拼接特征图、以及输出检测结果。
6.根据权利要求5所述的方法,其特征在于,判断所述网络结构中是否存在检测输出层,包括:
获取所述网络结构中的最后一层结构层的类型信息;
根据所述类型信息,判断所述最后一层结构层是否为所述检测输出层。
7.根据权利要求5所述的方法,其特征在于,识别所述网络结构中的所述冗余层,包括:
按照预设的查找路径,以所述检测输出层为起点,获取与所述检测输出层连接的所有路径上包含的各层结构层的类型信息;
根据所述各层结构层的类型信息,识别所述网络结构中的冗余层。
8.根据权利要求5所述的方法,其特征在于,删除所述网络结构中的冗余层,还包括:
删除所述网络结构中的冗余层,将所述网络结构中的除所述冗余层以外的其它结构层的连接关系进行更新,得到删除后的网络结构;
将所述删除后的网络结构中的所述检测输出层替换为所述ssd检测层。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述冗余层包括默认框设置层、拼接层、Permute层、以及Flatten层。
10.根据权利要求3所述的方法,其特征在于,对所述卷积层的模型参数进行优化,包括:
获取第一配置参数及第二配置参数,其中,所述第一配置参数包括Batch Norm层的第一训练参数及Batch Norm层的第二训练参数;所述第二配置参数包括Scale层的第一训练参数及Scale层的第二训练参数;
将所述Batch Norm层的第一训练参数以及所述Scale层的第一训练参数与卷积层的权值参数融合,得到第一融合结果;
将所述Batch Norm层的第二训练参数以及所述Scale层的第二训练参数与卷积层的偏置参数融合,得到第二融合结果;
根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化。
11.根据权利要求3所述的方法,其特征在于,对所述卷积层的模型参数进行优化,包括:
获取配置参数,其中,所述配置参数包括Batch Norm层的第一训练参数及Batch Norm层的第二训练参数;
将所述Batch Norm层的第一训练参数与卷积层的权值参数融合,得到第一融合结果;
将所述Batch Norm层的第二训练参数与卷积层的偏置参数融合,得到第二融合结果;
根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化。
12.根据权利要求3所述的方法,其特征在于,对所述卷积层的模型参数进行优化,包括:
获取配置参数,其中,所述配置参数包括Scale层的第一训练参数及Scale层的第二训练参数;
将所述Scale层的第一训练参数与卷积层的权值参数融合,得到第一融合结果;
将所述Scale层的第二训练参数与卷积层的偏置参数融合,得到第二融合结果;
根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化。
13.一种网络结构的处理装置,其特征在于,所述装置包括:
获取模块,获取优化指令;
优化模块,用于根据所述优化指令中的优化级别对网络结构进行优化处理。
14.一种机器学习芯片,其特征在于,所述机器学习芯片包括如权利要求13所述的图像检测的装置。
15.一种芯片封装结构,其特征在于,所述芯片封装结构包括如权利要求13所述的机器学习芯片。
16.一种板卡,其特征在于,所述板卡包括如权利要求15所述的芯片封装结构。
17.一种电子设备,其特征在于,所述电子设备包括如权利要求16所述的板卡。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811646113.3A CN109754084B (zh) | 2018-12-29 | 2018-12-29 | 网络结构的处理方法、装置及相关产品 |
US16/713,748 US11544567B2 (en) | 2018-12-29 | 2019-12-13 | Network structure processing method and device and related products |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811646113.3A CN109754084B (zh) | 2018-12-29 | 2018-12-29 | 网络结构的处理方法、装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109754084A true CN109754084A (zh) | 2019-05-14 |
CN109754084B CN109754084B (zh) | 2020-06-12 |
Family
ID=66405039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811646113.3A Active CN109754084B (zh) | 2018-12-29 | 2018-12-29 | 网络结构的处理方法、装置及相关产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11544567B2 (zh) |
CN (1) | CN109754084B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116309582A (zh) * | 2023-05-19 | 2023-06-23 | 之江实验室 | 一种便携式超声扫描图像的识别方法、装置及电子设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112116081B (zh) * | 2020-09-29 | 2023-09-08 | 杭州海康威视数字技术股份有限公司 | 一种深度学习网络的优化方法及装置 |
CN114916928B (zh) * | 2022-05-12 | 2023-08-04 | 电子科技大学 | 一种人体姿态多通道卷积神经网络检测方法 |
CN116363428A (zh) * | 2023-03-28 | 2023-06-30 | 北京百度网讯科技有限公司 | 模型微调方法、图像处理方法、装置及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103113A (zh) * | 2017-03-23 | 2017-08-29 | 中国科学院计算技术研究所 | 面向神经网络处理器的自动化设计方法、装置及优化方法 |
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
CN108230354A (zh) * | 2017-05-18 | 2018-06-29 | 深圳市商汤科技有限公司 | 目标跟踪、网络训练方法、装置、电子设备和存储介质 |
CN108701250A (zh) * | 2017-10-16 | 2018-10-23 | 深圳市大疆创新科技有限公司 | 数据定点化方法和装置 |
CN108804077A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
US20180357540A1 (en) * | 2017-06-09 | 2018-12-13 | Korea Advanced Institute Of Science And Technology | Electronic apparatus and method for optimizing trained model |
CN109063829A (zh) * | 2018-06-22 | 2018-12-21 | 泰康保险集团股份有限公司 | 神经网络构建方法、装置、计算机设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019241921A1 (en) * | 2018-06-20 | 2019-12-26 | Huawei Technologies Co., Ltd. | Systems and methods for automated compiling |
US11734783B2 (en) * | 2019-06-11 | 2023-08-22 | Tata Consultancy Services Limited | System and method for detecting on-street parking violations |
-
2018
- 2018-12-29 CN CN201811646113.3A patent/CN109754084B/zh active Active
-
2019
- 2019-12-13 US US16/713,748 patent/US11544567B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103113A (zh) * | 2017-03-23 | 2017-08-29 | 中国科学院计算技术研究所 | 面向神经网络处理器的自动化设计方法、装置及优化方法 |
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
CN108804077A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
CN108230354A (zh) * | 2017-05-18 | 2018-06-29 | 深圳市商汤科技有限公司 | 目标跟踪、网络训练方法、装置、电子设备和存储介质 |
US20180357540A1 (en) * | 2017-06-09 | 2018-12-13 | Korea Advanced Institute Of Science And Technology | Electronic apparatus and method for optimizing trained model |
CN108701250A (zh) * | 2017-10-16 | 2018-10-23 | 深圳市大疆创新科技有限公司 | 数据定点化方法和装置 |
CN109063829A (zh) * | 2018-06-22 | 2018-12-21 | 泰康保险集团股份有限公司 | 神经网络构建方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
WEI LIU等: ""SSD: Single Shot MultiBox Detector"", 《ECCV 2016: COMPUTER VISION》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116309582A (zh) * | 2023-05-19 | 2023-06-23 | 之江实验室 | 一种便携式超声扫描图像的识别方法、装置及电子设备 |
CN116309582B (zh) * | 2023-05-19 | 2023-08-11 | 之江实验室 | 一种便携式超声扫描图像的识别方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US11544567B2 (en) | 2023-01-03 |
US20200210837A1 (en) | 2020-07-02 |
CN109754084B (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109754084A (zh) | 网络结构的处理方法、装置及相关产品 | |
CN107832845A (zh) | 一种信息处理方法及相关产品 | |
CN108694441B (zh) | 一种网络处理器和网络运算方法 | |
CN110119807B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN113191479B (zh) | 联合学习的方法、系统、节点及存储介质 | |
CN111966361B (zh) | 用于确定待部署模型的方法、装置、设备及其存储介质 | |
WO2023207487A1 (zh) | 一种电路走线确定方法及相关设备 | |
CN109670581B (zh) | 一种计算装置及板卡 | |
CN109753319B (zh) | 一种释放动态链接库的装置及相关产品 | |
CN109086871A (zh) | 神经网络的训练方法、装置、电子设备和计算机可读介质 | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
CN109726800B (zh) | 运算方法、装置及相关产品 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN109635706A (zh) | 基于神经网络的手势识别方法、设备、存储介质及装置 | |
CN110083532B (zh) | 基于深度学习框架的融合模式下运行错误定位方法及装置 | |
CN111368967B (zh) | 一种神经网络计算装置和方法 | |
CN109740746A (zh) | 运算方法、装置及相关产品 | |
CN111368990B (zh) | 一种神经网络计算装置和方法 | |
CN111258641B (zh) | 运算方法、装置及相关产品 | |
CN115329924A (zh) | 神经网络结构确定方法及装置以及相关产品 | |
CN111047030A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111723920A (zh) | 人工智能计算装置及相关产品 | |
CN111026440B (zh) | 运算方法、装置、计算机设备和存储介质 | |
WO2021017546A1 (zh) | 神经网络量化方法、装置、芯片、电子设备及板卡 | |
CN111338694B (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 | ||
CB02 | Change of applicant information |
Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |