CN108009634B - 一种卷积神经网络的优化方法、装置及计算机存储介质 - Google Patents

一种卷积神经网络的优化方法、装置及计算机存储介质 Download PDF

Info

Publication number
CN108009634B
CN108009634B CN201711397495.6A CN201711397495A CN108009634B CN 108009634 B CN108009634 B CN 108009634B CN 201711397495 A CN201711397495 A CN 201711397495A CN 108009634 B CN108009634 B CN 108009634B
Authority
CN
China
Prior art keywords
layer
merging
parameters
memory
cnn
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711397495.6A
Other languages
English (en)
Other versions
CN108009634A (zh
Inventor
周均扬
王欣博
阮志锋
陈术义
俞大海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Midea Group Co Ltd
Original Assignee
Midea Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Midea Group Co Ltd filed Critical Midea Group Co Ltd
Priority to CN201711397495.6A priority Critical patent/CN108009634B/zh
Publication of CN108009634A publication Critical patent/CN108009634A/zh
Application granted granted Critical
Publication of CN108009634B publication Critical patent/CN108009634B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Abstract

本发明实施例公开了一种卷积神经网络的优化方法、装置及计算机存储介质;所述方法包括:构建卷积神经网络,所述卷积神经网络至少包括四个网络层:图像输入层、至少一个卷积层、至少一个池化层和至少一个全连接层;当待检测物体数量低于预设阈值时,缩减CNN中卷积核的数量;将图像输入层输入的图像按照设定的边界判定策略划分为至少一个利用连续内存存储的内存数据段,并利用设定的连续内存拷贝函数对各内存数据段进行数据拷贝;按照设定的合并策略将批量正则化层中的原始参数与卷积层或全连接层的参数进行合并,将合并后的参数作为批量正则化层的新参数;其中,所述批量正则化层在所述卷积层或所述全连接层之后。减少通过CNN进行检测时的计算消耗。

Description

一种卷积神经网络的优化方法、装置及计算机存储介质
技术领域
本发明涉及图像处理技术领域,尤其涉及一种卷积神经网络(CNN,ConvolutionalNeural Network)的优化方法、装置及计算机存储介质。
背景技术
随着计算机技术以及信号处理技术的发展,越来越多的家电设备除了具有传统的按键操作控制之外,还能够根据用户的声音或者手势进行控制。
通过手势对家电设备进行控制,那就需要对手部等目标进行检测。目前相关的手部检测方案中,通常采用的是基于深度卷积神经网络(CNN,Convolutional NeuralNetwork)的手部检测方案,该方案设计了一个包含卷积层、池化层以及全连接层的深度卷积神经网络,对第一视角的RGB图像进行手部检测。由于该方案设置了深度较大的神经网络层,并且检测过程中需要对整个图像进行全卷积处理,因此,该方案的检测精度较高,但同时增加了计算代价,也就增加了方案在检测过程中所消耗的时间。
发明内容
为解决上述技术问题,本发明实施例期望提供一种卷积神经网络的优化方法、装置及计算机存储介质;减少通过CNN进行检测时的计算消耗。
本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种CNN的优化方法,所述方法包括:
构建卷积神经网络,所述卷积神经网络至少包括四个网络层:图像输入层、至少一个卷积层、至少一个池化层和至少一个全连接层;
当待检测物体数量低于预设阈值时,缩减所述CNN中卷积核的数量;
将所述图像输入层输入的图像按照设定的边界判定策略划分为至少一个利用连续内存存储的内存数据段,并利用设定的连续内存拷贝函数对各内存数据段进行数据拷贝;
按照设定的合并策略将批量正则化层中的原始参数与所述卷积层或所述全连接层的参数进行合并,将合并后的参数作为批量正则化层的新参数;其中,所述批量正则化层在所述卷积层或所述全连接层之后。
在上述方案中,当待检测物体数量低于预设阈值时,缩减所述CNN中卷积核的数量,包括:
当进行单类检测或少类检测时,缩减所述CNN中每层卷积核的数量为小于等于100。
在上述方案中,所述利用设定的连续内存拷贝函数对各内存数据段进行数据拷贝,包括:
利用内存拷贝函数memcpy对所有利用连续内存存储的内存数据段进行数据拷贝。
在上述方案中,所述按照设定的合并策略将批量正则化层中的原始参数与所述卷积层或所述全连接层的参数进行合并,将合并后的参数作为批量正则化层的新参数,包括:
将所述批量正则化层中的均值参数按照第一合并策略与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果;
基于所述第一合并结果,将所述批量正则化层中的方差参数按照第二合并策略与所述卷积层或所述全连接层中的偏置参数和权重参数进行合并。
在上述方案中,所述将所述批量正则化层中的均值参数按照第一合并策略与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果,包括:
基于第一表达式和第二表达式将所述批量正则化层中的均值参数与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果;
其中,所述第一表达式为Y=WX+bias,所述第二表达式为
Figure BDA0001518844090000021
其中,X为所述卷积层或所述全连接层的输入,Y为所述卷积层或所述全连接层的输出,Yb为所述批量正则化层的输出,方差variance、均值mean、beta和gamma为所述批量正则化层的参数;W为所述卷积层或所述全连接层的权值参数,bias为所述卷积层或所述全连接层的偏置参数;
所述第一合并结果如式1所示:
Figure BDA0001518844090000031
其中,
Figure BDA0001518844090000032
在上述方案中,所述基于所述第一合并结果,将所述批量正则化层中的方差参数按照第二合并策略与所述卷积层或所述全连接层中的偏置参数和权重参数进行合并,包括:
设定
Figure BDA0001518844090000033
以及
Figure BDA0001518844090000034
并根据W′和bias′对所述第一合并结果进行化简,获得Yb=W′X+bias′;
将所述W′和bias′保存至所述卷积层或所述全连接层的模型参数。
在上述方案中,所述方法还包括:
将所述卷积层中的部分计算步骤设置在所述池化层的计算步骤之后进行计算。
在上述方案中,所述方法还包括:
基于层Layer类派生用于保存CNN中各网络层输出数据Blob;
采用数据流的方式建立不同Blob之间的链接关系,搭建所述CNN。
在上述方案中,在搭建所述CNN时,所述方法还包括:
根据各网络层所需的内存大小,一次性为各网络层分配所需的内存空间;
所有数据直接由分配的内存空间中获取;
当所述数据不再使用时,不再使用的数据所占用的内存空间由后续数据覆盖。
第二方面,本发明实施例提供了一种CNN的优化装置,所述装置包括:存储器和处理器;其中,所述存储器,配置为存储能够在所述处理器上运行的计算机程序;
所述处理器,配置为在运行所述计算机程序时,执行第一方面中任一项所述方法的步骤。
第三方面,本发明实施例提供了一种计算机可读介质,所述计算机可读介质存储有CNN的优化程序,所述CNN的优化程序被至少一个处理器执行时实现如第一方面中任一项所述方法的步骤。
本发明实施例提供了一种卷积神经网络的优化方法、装置及计算机存储介质;通过多种方式针对CNN计算耗时进行优化,从而减少通过CNN进行检测时的计算消耗。
附图说明
图1为本发明实施例提供的一种CNN的优化方法流程示意图;
图2为本发明实施例提供的一种CNN网络搭建示意图;
图3为本发明实施例提供的一种CNN的优化装置组成示意图;
图4为本发明实施例提供的另一种CNN的优化装置组成示意图;
图5为本发明实施例提供的一种CNN的优化装置的具体硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例一
参见图1,其示出了本发明实施例提供的一种卷积神经网络CNN的优化方法,该方法可以包括:
S101:构建卷积神经网络,所述卷积神经网络至少包括四个网络层:图像输入层、至少一个卷积层、至少一个池化层和至少一个全连接层;
需要说明的是,本发明实施例所提供的技术方案针对已有的卷积神经网络CNN进行优化,从而能够在有限的运算能力条件下,提高CNN模型的特征表达能力,并且还能够在通过CNN检测时减少计算消耗。
S102:当待检测物体数量低于预设阈值时,缩减所述CNN中卷积核的数量;
需要说明的是,通过实验验证,可以得出下述结论:在基于卷积神经网络的单类或少类检测中,窄网络也可以获得较高的准确率。因此,在保持已有卷积神经网络CNN深度的前提下,针对单类或少类(如2至3类)检测,可以适当地缩减卷积核数目。具体来说,在尽量保证CNN网络深度的前提下,当进行单类检测或少类检测时,缩减所述CNN中每层卷积核的数量为小于等于100。从而能够减少通过CNN计算过程中的计算消耗。
S103:将所述图像输入层输入的图像按照设定的边界判定策略划分为至少一个利用连续内存存储的内存数据段,并利用设定的连续内存拷贝函数对各内存数据段进行数据拷贝;
对于S103,需要说明的是,CNN计算过程可以包括数据准备和矩阵乘法,而基于前述S102所述的卷积核数目比较少的情况下,数据准备过程在CNN计算过程中会占用较高的时间比例,目前相关的数据准备过程通常采用重排图像块为矩阵列Im2col函数进行数据拷贝,为了减少数据准备过程的时间,可以通过判断卷积计算过程中的边界参数,分析数据在内存中的排布方式,将数据准备中所有利用连续内存存储的内存数据段,均采用内存拷贝memcpy函数进行数据拷贝,避免出现循环拷贝的方式,从而降低了数据拷贝所消耗的时间。
此外,针对CNN计算过程中的矩阵乘法,可以优选地运用第三方库对矩阵乘法进行提速。威诺格拉德Winograd算法是目前最快的矩阵相乘算法,而脸书facebook开发的NNPACK加速包能够实现上述算法,并且NNPACK加速包针对X86体系处理器的数据流单指令多数据扩展指令集2(SSE2,Streaming SIMD Extensions 2)和ARM处理器的NEON指令集都做了相应优化。因此,采用NNPACK加速包对CNN计算过程中的矩阵乘法过程进行加速,从而可以提高前向速度。但是,NNPACK加速包虽然能够提升矩阵乘法速度,但是完全依靠其自身进行并行加速,CPU利用率并不高,所以我们在外围可以利用多线程方法对待检测的图像先进行拆分,再通过将拆分得到的图像块分别组合的方式进行了并行加速。
S104:按照设定的合并策略将批量正则化层中的原始参数与所述卷积层或所述全连接层的参数进行合并,将合并后的参数作为批量正则化层的新参数;其中,所述批量正则化层在所述卷积层或所述全连接层之后。
对于S104,在CNN计算过程中,批量正则化(BN,Batch Normalization)也是不可缺少的步骤之一,在CNN的卷积层和全连接层后都会添加一个BN层进行数据归一化处理,从而增强CNN的表现能力,提高深度CNN的收敛速度。而对于BN层来说,会保存方差variance、均值mean、beta和gamma这四个批量正则化层的参数对输入BN层的特征进行归一化处理,具体的归一化处理过程线性变化过程。这四个参数可以作为CNN模型参数保存在权重weight文件中。在利用CNN进行目标检测的过程中,卷积层、全连接层等也可以认为是线性变换层,因此,结合归一化处理的线性变化以及卷积层、全连接层的线性变化,可以将批量正则化层中的原始参数与所述卷积层或所述全连接层的参数进行合并。在一种可能的实现方式中,S104具体可以包括:
将所述批量正则化层中的均值参数按照第一合并策略与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果;
基于所述第一合并结果,将所述批量正则化层中的方差参数按照第二合并策略与所述卷积层或所述全连接层中的偏置参数和权重参数进行合并。
对于上述实现方式,优选地,所述将所述批量正则化层中的均值参数按照第一合并策略与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果,可以包括:
基于第一表达式和第二表达式将所述批量正则化层中的均值参数与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果;
其中,所述第一表达式为Y=WX+bias,所述第二表达式为
Figure BDA0001518844090000061
其中,X为所述卷积层或所述全连接层的输入,Y为所述卷积层或所述全连接层的输出,Yb为所述批量正则化层的输出,方差variance、均值mean、beta和gamma为所述批量正则化层的参数;W为所述卷积层或所述全连接层的权值参数,bias为所述卷积层或所述全连接层的偏置参数;
所述第一合并结果如式1所示:
Figure BDA0001518844090000062
其中,
Figure BDA0001518844090000063
基于上述优选的实现方式,所述基于所述第一合并结果,将所述批量正则化层中的方差参数按照第二合并策略与所述卷积层或所述全连接层中的偏置参数和权重参数进行合并,可以包括:
设定
Figure BDA0001518844090000064
以及
Figure BDA0001518844090000065
并根据W′和bias′对所述第一合并结果进行化简,获得Yb=W′X+bias′;
将所述W′和bias′保存至所述卷积层或所述全连接层的模型参数。
上述实现方式的具体推导过程如下:
首先基于第一表达式和第二表达式,令
Figure BDA0001518844090000066
从而将第一表达式和第二表达式合并为式1;接下来,设定
Figure BDA0001518844090000071
以及
Figure BDA0001518844090000072
并根据W′和bias′对所述第一合并结果进行化简,获得Yb=W′X+bias′。对比最后获得的表达式以及第一表达式,可以发现将所述W′和bias′进行提前计算后,保存至所述卷积层或所述全连接层的模型参数,则在新的前向计算过程中就不需再进行批量正则化的计算,从而节省了批量正则化的计算时间。
针对图1所示的技术方案,优选地,还可以将所述卷积层中的部分计算步骤设置在所述池化层的计算步骤之后进行计算,从而减少计算量。举例来说,通常卷积层后是池化Pool层,例如maxpool层,而卷积层的leaky激活函数以及偏置bias加法运算放置在池化层后进行,那么就能够减少3/4的激活函数计算和bias计算。此外,对于leaky激活函数以及maxpool层等耗时较大的计算过程,可以采用多线程的方式进行处理,从而进一步提高多核使用率,
针对图1所示的技术方案,优选地,还可以包括:
基于层Layer类派生用于保存CNN中各网络层输出数据Blob;
采用数据流的方式建立不同Blob之间的链接关系,搭建所述CNN。
举例来说,可以通过高效、轻量化的深度神经网络前向计算框架搭建CNN,可以实现CNN搭建方便、搭建的CNN可拓展性强,并可方便的导入darknet、caffe、tensorflow、keras和theano等网络模型,无需对不同深度学习框架重复优化。该框架优选地采用纯C++代码,不依赖任何三方库,方便在不同平台上的移植。并预留了GEMM和CONVOLUTION等基础函数的接口,可以方便用户针对不同平台使用如NNPACK等三方库或进行自定义优化。此外,将搭建的CNN网络通过cpp文件实现,能够实现高效的模型初始化,并能在程序发布版本中有效隐藏算法和数据的细节,避免核心算法的泄漏。具体来说,在CNN搭建过程中,可以采用与tensorflow类似的数据流图的网络搭建方式,Blob中保存各个网络层的输出数据,在网络搭建时仅需要用Layer建立不同的blob之间链接关系来搭建CNN网络。在网络层拓展时,仅需要自定义一个Layer类,实现不同Blob中的数据流转化函数,从而可以方便的增加新的网络结构,也可以方便的删除不需要的网络结构以减少程序大小。如图2所示的搭建示意,通过定义多个Layer类来派生各网络层的Blob,并建立链式连接关系。
需要说明的是,在本实施例中,Blob是一种数据结构类型,具体来说,Blob类型是(Width,Height,Channel,Number)四元组,分别表示宽度、高度、通道数、数量(或者叫种类)。
对于图1所示的技术方案,可以优选地针对CNN-YOLO 2模型进行相应的优化,从而实现在计算精度不下降的前提下,提高10倍以上的计算速度。
综上所述,图1所示的技术方案中,可以通过多种方式针对CNN计算耗时进行优化,从而减少通过CNN进行检测时的计算消耗。
实施例二
基于前述实施例相同的技术构思,参见图3,其示出了本发明实施例提供的一种CNN优化装置30,可以包括:构建部分301、第一优化部分302、第二优化部分303、第三优化部分304;其中,
构建部分301,配置为构建卷积神经网络,所述卷积神经网络至少包括四个网络层:图像输入层、至少一个卷积层、至少一个池化层和至少一个全连接层;
第一优化部分302,配置为当待检测物体数量低于预设阈值时,缩减所述CNN中卷积核的数量;
第二优化部分303,配置为将所述图像输入层输入的图像按照设定的边界判定策略划分为至少一个利用连续内存存储的内存数据段,并利用设定的连续内存拷贝函数对各内存数据段进行数据拷贝;
第三优化部分304,配置为按照设定的合并策略将批量正则化层中的原始参数与所述卷积层或所述全连接层的参数进行合并,将合并后的参数作为批量正则化层的新参数;其中,所述批量正则化层在所述卷积层或所述全连接层之后。
在一种可能的实现方式中,第一优化部分302,配置为当进行单类检测或少类检测时,缩减所述CNN中每层卷积核的数量为小于等于100。
在一种可能的实现方式中,第二优化部分303,配置为利用内存拷贝函数memcpy对所有利用连续内存存储的内存数据段进行数据拷贝。
在一种可能的实现方式中,第三优化部分304,配置为:
将所述批量正则化层中的均值参数按照第一合并策略与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果;
基于所述第一合并结果,将所述批量正则化层中的方差参数按照第二合并策略与所述卷积层或所述全连接层中的偏置参数和权重参数进行合并。
基于上述实现方式,第三优化部分304,具体配置为:
基于第一表达式和第二表达式将所述批量正则化层中的均值参数与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果;
其中,所述第一表达式为Y=WX+bias,所述第二表达式为
Figure BDA0001518844090000091
其中,X为所述卷积层或所述全连接层的输入,Y为所述卷积层或所述全连接层的输出,Yb为所述批量正则化层的输出,方差variance、均值mean、beta和gamma为所述批量正则化层的参数;W为所述卷积层或所述全连接层的权值参数,bias为所述卷积层或所述全连接层的偏置参数;
所述第一合并结果如式2所示:
Figure BDA0001518844090000092
其中,
Figure BDA0001518844090000093
基于上述实现方式,第三优化部分304,具体配置为:
设定
Figure BDA0001518844090000094
以及
Figure BDA0001518844090000095
并根据W′和bias′对所述第一合并结果进行化简,获得Yb=W′X+bias′;
将所述W′和bias′保存至所述卷积层或所述全连接层的模型参数,则在新的前向计算中不需要再进行批量正则化的计算,节省计算时间。
在一种可能的实现方式中,参见图4,所述装置30还包括:第四优化部分305,配置为将所述卷积层中的部分计算步骤设置在所述池化层的计算步骤之后进行计算。
在一种可能的实现方式中,参见图4,所述装置30还包括:第五优化部分306,配置为:
基于层Layer类派生用于保存CNN中各网络层输出数据Blob;
采用数据流的方式建立不同Blob之间的链接关系,搭建所述CNN。
在一种可能的实现方式中,参见图4,所述装置30还包括:第六优化部分307,配置为:
根据各网络层所需的内存大小,一次性为各网络层分配所需的内存空间;
所有数据直接由分配的内存空间中获取;
当所述数据不再使用时,不再使用的数据所占用的内存空间由后续数据覆盖,无需对内存进行重复的分配和释放。这样不仅减少了内容重复分配和释放所需要的计算时间,也较少了需要分配的内存大小。
可以理解地,在本实施例中,“部分”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是单元,还可以是模块也可以是非模块化的。
另外,在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本实施例提供了一种计算机可读介质,所述计算机可读介质存储有CNN的优化程序,所述CNN的优化程序被至少一个处理器执行时实现上述实施例一所述的方法的步骤。
基于上述CNN优化装置30的组成以及计算机可读介质,参见图5,其示出了本发明实施例提供的CNN优化装置30的具体硬件结构,可以包括:处理器51和配置为存储能够在处理器上运行的计算机程序的存储器52,各个组件通过总线系统53耦合在一起。可理解,总线系统53用于实现这些组件之间的连接通信。总线系统53除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统53。
其中,所述处理器51配置为运行所述计算机程序时,执行以下步骤:
构建卷积神经网络,所述卷积神经网络至少包括四个网络层:图像输入层、至少一个卷积层、至少一个池化层和至少一个全连接层;
当待检测物体数量低于预设阈值时,缩减所述CNN中卷积核的数量;
将所述图像输入层输入的图像按照设定的边界判定策略划分为至少一个利用连续内存存储的内存数据段,并利用设定的连续内存拷贝函数对各内存数据段进行数据拷贝;
按照设定的合并策略将批量正则化层中的原始参数与所述卷积层或所述全连接层的参数进行合并,将合并后的参数作为批量正则化层的新参数;其中,所述批量正则化层在所述卷积层或所述全连接层之后。
可以理解,本发明实施例中的存储器52可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本文描述的系统和方法的存储器52旨在包括但不限于这些和任意其它适合类型的存储器。
而处理器51可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器51中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器51可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器52,处理器51读取存储器52中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
具体来说,CNN优化装置30中的处理器51还配置为运行所述计算机程序时,执行前述实施例一中所述的方法步骤,这里不再进行赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (9)

1.一种卷积神经网络CNN的优化方法,其特征在于,所述方法包括:
构建卷积神经网络,所述卷积神经网络至少包括四个网络层:图像输入层、多个卷积层、多个池化层和多个全连接层;其中,将所述卷积层中的部分计算步骤设置在所述池化层的计算步骤之后进行计算;
当进行单类检测或少类检测时,缩减所述CNN中每层卷积核的数量为小于等于100;
将所述图像输入层输入的图像按照设定的边界判定策略划分为至少一个利用连续内存存储的内存数据段,并利用设定的连续内存拷贝函数对各内存数据段进行数据拷贝;
按照设定的合并策略将批量正则化层中的原始参数与所述卷积层或所述全连接层的参数进行合并,将合并后的参数作为批量正则化层的新参数;其中,所述批量正则化层在所述卷积层或所述全连接层之后。
2.根据权利要求1所述的方法,其特征在于,所述利用设定的连续内存拷贝函数对各内存数据段进行数据拷贝,包括:
利用内存拷贝函数memcpy对所有利用连续内存存储的内存数据段进行数据拷贝。
3.根据权利要求1所述的方法,其特征在于,所述按照设定的合并策略将批量正则化层中的原始参数与所述卷积层或所述全连接层的参数进行合并,将合并后的参数作为批量正则化层的新参数,包括:
将所述批量正则化层中的均值参数按照第一合并策略与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果;
基于所述第一合并结果,将所述批量正则化层中的方差参数按照第二合并策略与所述卷积层或所述全连接层中的偏置参数和权重参数进行合并。
4.根据权利要求3所述的方法,其特征在于,所述将所述批量正则化层中的均值参数按照第一合并策略与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果,包括:
基于第一表达式和第二表达式将所述批量正则化层中的均值参数与所述卷积层或所述全连接层中的偏置参数进行合并,获得第一合并结果;
其中,所述第一表达式为Y=WX+bias,所述第二表达式为
Figure FDA0002704747240000021
其中,X为所述卷积层或所述全连接层的输入,Y为所述卷积层或所述全连接层的输出,Yb为所述批量正则化层的输出,方差variance、均值mean、beta和gamma为所述批量正则化层的参数;W为所述卷积层或所述全连接层的权值参数,bias为所述卷积层或所述全连接层的偏置参数;
所述第一合并结果如式1所示:
Figure FDA0002704747240000031
其中,
Figure FDA0002704747240000032
5.根据权利要求4所述的方法,其特征在于,所述基于所述第一合并结果,将所述批量正则化层中的方差参数按照第二合并策略与所述卷积层或所述全连接层中的偏置参数和权重参数进行合并,包括:
设定
Figure FDA0002704747240000033
以及
Figure FDA0002704747240000034
并根据W′和bias′对所述第一合并结果进行化简,获得Yb=W′X+bias′;
将所述W′和bias′保存至所述卷积层或所述全连接层的模型参数。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于层Layer类派生用于保存CNN中各网络层输出数据Blob;
采用数据流的方式建立不同Blob之间的链接关系,搭建所述CNN。
7.根据权利要求1所述的方法,其特征在于,在搭建所述CNN时,所述方法还包括:
根据各网络层所需的内存大小,一次性为各网络层分配所需的内存空间;
所有数据直接由分配的内存空间中获取;
当所述数据不再使用时,不再使用的数据所占用的内存空间由后续数据覆盖。
8.一种卷积神经网络CNN的优化装置,所述装置包括:存储器和处理器;其中,所述存储器,配置为存储能够在所述处理器上运行的计算机程序;
所述处理器,配置为在运行所述计算机程序时,执行权利要求1至7任一项所述方法的步骤。
9.一种计算机可读介质,所述计算机可读介质存储有CNN的优化程序,所述CNN的优化程序被至少一个处理器执行时实现如权利要求1至7中任一项所述方法的步骤。
CN201711397495.6A 2017-12-21 2017-12-21 一种卷积神经网络的优化方法、装置及计算机存储介质 Active CN108009634B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711397495.6A CN108009634B (zh) 2017-12-21 2017-12-21 一种卷积神经网络的优化方法、装置及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711397495.6A CN108009634B (zh) 2017-12-21 2017-12-21 一种卷积神经网络的优化方法、装置及计算机存储介质

Publications (2)

Publication Number Publication Date
CN108009634A CN108009634A (zh) 2018-05-08
CN108009634B true CN108009634B (zh) 2021-05-25

Family

ID=62060524

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711397495.6A Active CN108009634B (zh) 2017-12-21 2017-12-21 一种卷积神经网络的优化方法、装置及计算机存储介质

Country Status (1)

Country Link
CN (1) CN108009634B (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110633785B (zh) * 2018-06-21 2021-01-05 清华大学 一种卷积神经网络的计算方法及系统
US11651206B2 (en) * 2018-06-27 2023-05-16 International Business Machines Corporation Multiscale feature representations for object recognition and detection
CN109165736B (zh) * 2018-08-08 2023-12-12 北京字节跳动网络技术有限公司 应用于卷积神经网络的信息处理方法和装置
CN110866589B (zh) * 2018-08-10 2023-06-30 阿里巴巴(中国)有限公司 深度神经网络模型的运行方法、装置及框架
CN109409518B (zh) * 2018-10-11 2021-05-04 北京旷视科技有限公司 神经网络模型处理方法、装置及终端
CN111126558B (zh) * 2018-10-31 2024-04-02 嘉楠明芯(北京)科技有限公司 一种卷积神经网络计算加速方法及装置、设备、介质
CN109635934A (zh) * 2018-12-27 2019-04-16 深圳云天励飞技术有限公司 一种神经网络推理结构优化方法及装置
CN109697083B (zh) * 2018-12-27 2021-07-06 深圳云天励飞技术有限公司 数据的定点化加速方法、装置、电子设备及存储介质
CN110889497B (zh) * 2018-12-29 2021-04-23 中科寒武纪科技股份有限公司 一种人工智能处理器的学习任务编译方法及相关产品
CN109768944A (zh) * 2018-12-29 2019-05-17 苏州联讯仪器有限公司 一种基于卷积神经网络的信号调制码型识别方法
CN110046705B (zh) * 2019-04-15 2022-03-22 广州异构智能科技有限公司 用于卷积神经网络的装置
CN110033086B (zh) * 2019-04-15 2022-03-22 广州异构智能科技有限公司 用于神经网络卷积运算的硬件加速器
CN110033085B (zh) * 2019-04-15 2021-08-31 广州异构智能科技有限公司 张量处理器
CN110059805B (zh) * 2019-04-15 2021-08-31 广州异构智能科技有限公司 用于二值阵列张量处理器的方法
CN110232327B (zh) * 2019-05-21 2023-04-21 浙江师范大学 一种基于梯形级联卷积神经网络的驾驶疲劳检测方法
CN110378470B (zh) * 2019-07-19 2023-08-18 Oppo广东移动通信有限公司 神经网络模型的优化方法、装置以及计算机存储介质
CN110782009B (zh) * 2019-10-17 2023-09-08 湖南大学 基于ARMv8体系的计算内核优化方法
CN112686365B (zh) * 2019-10-18 2024-03-29 华为技术有限公司 运行神经网络模型的方法、装置和计算机设备
CN111461316A (zh) * 2020-03-31 2020-07-28 中科寒武纪科技股份有限公司 计算神经网络的方法、装置、板卡及计算机可读存储介质
CN112199636B (zh) * 2020-10-15 2022-10-28 清华大学 适用于微处理器的快速卷积方法及装置
CN113159122B (zh) * 2021-03-16 2022-03-15 重庆市地理信息和遥感应用中心 基于社交媒体图像数据的城市风貌分析方法
CN112766467B (zh) * 2021-04-06 2021-08-20 深圳市一心视觉科技有限公司 基于卷积神经网络模型的图像识别方法
CN114239646B (zh) * 2021-12-01 2023-06-16 电子科技大学 一种基于复数神经网络的辐射源识别系统
CN116562338A (zh) * 2022-01-27 2023-08-08 美的集团(上海)有限公司 多分支卷积结构、神经网络模型及其确定方法、确定装置
CN114723032B (zh) * 2022-06-02 2022-09-30 浙江芯昇电子技术有限公司 一种长短期记忆神经网络硬件加速方法与计算系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106709441A (zh) * 2016-12-16 2017-05-24 北京工业大学 一种基于卷积定理的人脸验证加速方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3251059B1 (en) * 2015-01-28 2018-12-05 Google LLC Batch normalization layers
JP6450053B2 (ja) * 2015-08-15 2019-01-09 セールスフォース ドット コム インコーポレイティッド 3dバッチ正規化を伴う三次元(3d)畳み込み
CN107067011B (zh) * 2017-03-20 2019-05-03 北京邮电大学 一种基于深度学习的车辆颜色识别方法与装置
CN107341518A (zh) * 2017-07-07 2017-11-10 东华理工大学 一种基于卷积神经网络的图像分类方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106709441A (zh) * 2016-12-16 2017-05-24 北京工业大学 一种基于卷积定理的人脸验证加速方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《图像分类中的卷积神经网络方法研究》;李明威;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170215(第2期);第10页第2.2.3小节 *
《模型优化:BatchNorm合并到卷积中》;BigCow Peking;《CSDN博客:blog.csdn.net/wfei101/article/details/78635557》;20171126;第1-4页 *

Also Published As

Publication number Publication date
CN108009634A (zh) 2018-05-08

Similar Documents

Publication Publication Date Title
CN108009634B (zh) 一种卷积神经网络的优化方法、装置及计算机存储介质
US20230063274A1 (en) Computation of neural network node by neural network inference circuit
CN107844828B (zh) 神经网络中的卷积计算方法和电子设备
CN108108811B (zh) 神经网络中的卷积计算方法和电子设备
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
EP3407203A2 (en) Statically schedulable feed and drain structure for systolic array architecture
US11049013B1 (en) Encoding of weight values stored on neural network inference circuit
US20240062054A1 (en) Storage of input values across multiple cores of neural network inference circuit
US20210133278A1 (en) Piecewise quantization for neural networks
CN106909449B (zh) 一种移动终端程序的计算迁移方法与装置
US11755683B2 (en) Flexible accelerator for sparse tensors (FAST) in machine learning
US11593628B2 (en) Dynamic variable bit width neural processor
CN113010099A (zh) 有效地利用存储器空间的神经网络处理设备及其操作方法
KR102132261B1 (ko) 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기
US11222257B1 (en) Non-dot product computations on neural network inference circuit
US11568227B1 (en) Neural network inference circuit read controller with multiple operational modes
US20230306236A1 (en) Device and method for executing lstm neural network operation
US10963775B2 (en) Neural network device and method of operating neural network device
CN111984414B (zh) 一种数据处理的方法、系统、设备及可读存储介质
KR102092049B1 (ko) Simd 슬라이딩 윈도우 연산
Müller et al. Cesar: Emulating cellular networks on fpga
US20190354852A1 (en) Stress indicators associated with instances of input data for training neural networks
TW201926356A (zh) 編碼器及相關的編碼方法與快閃記憶體控制器
CN103944714A (zh) 基于ecc实现抗dpa攻击的标量乘算法的方法及装置
CN102289363A (zh) 控制数据流的方法以及计算机系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant