CN112990440B - 用于神经网络模型的数据量化方法、可读介质和电子设备 - Google Patents
用于神经网络模型的数据量化方法、可读介质和电子设备 Download PDFInfo
- Publication number
- CN112990440B CN112990440B CN202110360854.0A CN202110360854A CN112990440B CN 112990440 B CN112990440 B CN 112990440B CN 202110360854 A CN202110360854 A CN 202110360854A CN 112990440 B CN112990440 B CN 112990440B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- quantization
- splicing
- output
- 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
Links
- 238000013139 quantization Methods 0.000 title claims abstract description 190
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000003062 neural network model Methods 0.000 title claims abstract description 79
- 238000003491 array Methods 0.000 claims abstract description 63
- 238000012545 processing Methods 0.000 claims abstract description 62
- 230000015654 memory Effects 0.000 claims description 85
- 238000004364 calculation method Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 20
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 4
- 238000007493 shaping process Methods 0.000 claims 3
- 238000011176 pooling Methods 0.000 description 46
- 238000013528 artificial neural network Methods 0.000 description 26
- 238000007667 floating Methods 0.000 description 17
- 238000003860 storage Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 10
- 102100037224 Noncompact myelin-associated protein Human genes 0.000 description 9
- 101710184695 Noncompact myelin-associated protein Proteins 0.000 description 9
- 230000004913 activation Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000005764 inhibitory process Effects 0.000 description 9
- 238000010295 mobile communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000002787 reinforcement Effects 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 108700032832 MP-33 Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
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/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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/40—Image enhancement or restoration using histogram techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/161—Detection; Localisation; Normalisation
- G06V40/166—Detection; Localisation; Normalisation using acquisition arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/168—Feature extraction; Face representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/172—Classification, e.g. identification
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C9/00—Individual registration on entry or exit
- G07C9/30—Individual registration on entry or exit not involving the use of a pass
- G07C9/32—Individual registration on entry or exit not involving the use of a pass in combination with an identity check
- G07C9/37—Individual registration on entry or exit not involving the use of a pass in combination with an identity check using biometric data, e.g. fingerprints, iris scans or voice recognition
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Multimedia (AREA)
- Biomedical Technology (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Analysis (AREA)
Abstract
本申请涉及一种用于神经网络模型的数据量化方法、可读介质和电子设备。神经网络模型包括多个数据处理节点和拼接节点,多个数据处理节点分布于拼接节点的多个输入分支上。该方法包括:判断拼接节点的各输入分支是否存在满足预设条件的数据处理节点;在确定出拼接节点的各输入分支均存在满足预设条件的数据处理节点的情况下,汇总各输入分支中向拼接节点输出数据阵列的数据处理节点所输出的多个数据阵列,并基于汇总的多个数据阵列确定各输入分支进行数据量化所采用的公共量化系数。采用本申请的技术方案可以神经网络模型的数据量化的速度,降低计算量。
Description
技术领域
本申请涉及机器学习领域,特别涉及一种用于神经网络模型的数据量化方法、可读介质和电子设备。
背景技术
随着人工智能(Artificial Intelligence,AI)技术的快速发展,神经网络(例如,深度神经网络)近年来在计算机视觉、语音、自然语言、强化学习等领域中取得了非常好的效果。随着神经网络算法的发展,算法的复杂度越来越高,为了提高识别度,模型的规模在逐渐增大,相应地,部署有神经网络模型的设备的功耗和运算资源的消耗也越来大。尤其对于一些运算资源有限的边缘设备,提高神经网络模型的运算速度,节约运算时间,降低功耗尤为重要。
发明内容
本申请实施例提供了一种用于神经网络模型的数据量化方法、可读介质和电子设备。本申请的技术方案只需要计算出神经网络模型的拼接节点的其中一个输入分支的输出张量的量化系数,然后将该量化系数作为其他所有输入分支的输出张量的量化系数;或者只需要计算出部分输入分支的输出张量的量化系数,然后基于部分输入分支的输出张量的量化系数确定出所有输入分支的输出张量的公共量化系数;又或者,只需要一次计算出各输入分支的输出张量公共的量化系数,即不再计算拼接节点的其中一个分支或多个分支各自单独的量化系数,以该公共的量化系数作为拼接节点的所有输入分支的输出张量的量化系数。即只需要执行很少的运算指令,就可以快速对拼接节点的各个量化系数进行统一设定。本申请的技术方案可以提高计算速度,降低计算量。
第一方面,本申请实施例提供了一种用于神经网络模型的数据量化方法,神经网络模型包括多个数据处理节点和拼接节点,多个数据处理节点分布于拼接节点的多个输入分支上;并且该方法包括:
判断拼接节点的各输入分支是否存在满足预设条件的数据处理节点;
在确定出拼接节点的各输入分支均存在满足预设条件的数据处理节点的情况下,汇总各输入分支中向拼接节点输出数据阵列的数据处理节点所输出的多个数据阵列,并基于汇总的多个数据阵列确定各输入分支进行数据量化所采用的公共量化系数。
其中,多个数据处理节点包括神经网络模型中的各个网络层,例如卷积层、池化层;拼接节点是指神经网模型中执行拼接运算的节点。
在上述第一方面的一种可能的实现中,上述方法还包括:满足预设条件的数据处理节点为输入数据阵列的量化系数与输出数据阵列的量化系数不同的数据处理节点。
例如,卷积层的输入数据阵列的量化系数与输出数据阵列的量化系数不同,则卷积层为满足预设条件的数据处理节点;而池化层的输入数据阵列的量化系数与输出数据阵列的量化系数相同,则池化层为不满足预设条件的数据处理节点。
在上述第一方面的一种可能的实现中,上述基于汇总的多个数据阵列确定各输入分支进行数据量化所采用的公共量化系数,包括:
确定出汇总的多个数据阵列的最大值、最小值、平均值以及方差中的至少一个;并且,
基于确定出的最大值、最小值、平均值以及方差中的至少一个,确定出各输入分支进行数据量化所采用的公共量化系数。
在上述第一方面的一种可能的实现中,上述基于汇总的多个数据阵列确定各输入分支进行数据量化所采用的公共量化系数,包括:
确定出汇总的多个数据阵列的统计直方图;
基于统计直方图确定出各输入分支进行数据量化所采用的公共量化系数。
在上述第一方面的一种可能的实现中,上述方法还包括:
基于校准算法对确定出的统计直方图进行降噪;
基于降噪后的统计直方图确定出各输入分支进行数据量化所采用的公共量化系数。
在上述第一方面的一种可能的实现中,上述方法还包括:通过以下公式基于汇总的多个数据阵列确定各输入分支进行数据量化所采用的公共量化系数qx:
其中,xf为汇总的多个数据阵列;n表示将汇总的多个数据阵列xf量化为n个比特位的整数域的数据阵列xq;maxxf为汇总的多个数据阵列的最大值;minxf为汇总的多个数据阵列的最小值。
在上述第一方面的一种可能的实现中,上述方法还包括:在拼接节点多个输入分支中有一个输入分支不存在满足预设条件的数据处理节点的情况下,获取不存在满足预设条件的数据处理节点的输入分支中,向拼接节点输出数据阵列的数据处理节点的输出数据阵列,并基于获取的输出数据阵列确定拼接节点的各输入分支进行数据量化所采用的公共量化系数。
在上述第一方面的一种可能的实现中,上述获取的输出数据阵列确定拼接节点的各输入分支进行数据量化所采用的公共量化系数,包括:
确定出将不存在满足预设条件的数据处理节点的输入分支中向拼接节点输出数据阵列的数据处理节点的输出数据阵列进行数据量化所采用的量化系数;
将确定出的不存在满足预设条件的数据处理节点的输入分支中向拼接节点输出数据阵列的数据处理节点的输出数据阵列的量化系数,作为将拼接节点的各输入分支进行数据量化所采用的公共量化系数。
在上述第一方面的一种可能的实现中,上述方法还包括:
在确定出拼接节点的部分输入分支不存在满足预设条件的数据处理节点的情况下,基于部分输入分支中向拼接节点输出数据阵列的数据处理节点的输出数据阵列,确定拼接节点的各输入分支进行数据量化所采用的公共量化系数。
在上述第一方面的一种可能的实现中,上述部分输入分支中向拼接节点输出数据阵列的数据处理节点的输出数据阵列,确定拼接节点的各输入分支进行数据量化所采用的公共量化系数,包括:
分别计算出至少两个输入分支中向拼接节点输出数据阵列的数据处理节点的输出数据阵列进行数据量化所采用的量化系数;
将计算出的对应于至少两个输入分支的各个量化系数映射为同一个量化系数;
将同一个量化系数确定为拼接节点的各输入分支进行数据量化所采用的公共量化系数。
在上述第一方面的一种可能的实现中,上述将同一个量化系数确定为拼接节点的各输入分支进行数据量化所采用的公共量化系数,包括:
将计算出的对应于至少两个输入分支的各个量化系数通过乘法运算以及移位运算映射为同一个量化系数。
在上述第一方面的一种可能的实现中,上述方法还包括:
确定拼接节点的输出数据阵列占用的内存空间;
将采用公共量化系数对拼接节点的各输入分支中向拼接节点输出数据阵列的数据处理节点所输出的数据阵列分别进行量化后的数据阵列复制到拼接节点的输出数据阵列占用的内存空间中。
在上述第一方面的一种可能的实现中,上述方法还包括:通过以下方式确定拼接节点的输出数据阵列占用的内存空间:
分别计算出采用公共量化系数将各输入分支中向拼接节点输出数据阵列的数据处理节点所输出的数据阵列进行量化后的数据阵列占用的内存空间;
将计算出的对应于各输入分支的内存空间相加,得到拼接节点的输出数据阵列的内存空间。
第二方面,本申请实施例提供了一种可读介质,可读介质上存储有指令,该指令在电子设备上执行时使电子设备执行上述第一方面以及第一方面的各种可能实现中的任意一种用于神经网络模型的数据量化方法。
第三方面,本申请实施例提供了一种电子设备,包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及
处理器,是电子设备的处理器之一,用于执行上述第一方面以及第一方面的各种可能实现中的任意一种用于神经网络模型的数据量化方法。
附图说明
图1(a)根据本申请的一些实施例,示出了一种人脸识别门禁的应用场景图;
图1(b)根据本申请的一些实施例,示出了服务器采用本申请提供的量化方法对拼接节点C进行数据拼接的过程示意图;
图2根据本申请的一些实施例,示出了一种本申请提供的神经网络的量化方案适用的服务器的结构框图;
图3根据本申请的一些实施例,示出了一种神经网络模型的网络结构图;
图4根据本申请的一些实施例,示出了相关技术中的一种神经网络模型的量化方法流程图;
图5根据本申请的一些实施例,示出了本申请提供的一种神经网络模型的量化方法流程图;
图6根据本申请的一些实施例,示出了一种卷积、池化运算的过程示意图;
图7根据本申请的一些实施例,示出了本申请提供的一种服务器对神经网络模型的拼接节点处,各个输入分支的输出张量的量化以及拼接流程图;
图8根据本申请的一些实施例,示出了一种数据张量的统计直方图;
图9根据本申请的一些实施例,示出了一种人脸识别门禁的硬件结构框图。
具体实施方式
本申请的说明性实施例包括但不限于用于神经网络模型的数据量化方法、可读介质和电子设备。
本申请实施例涉及神经网络,为了更好地理解本申请实施例的方案,下面先对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
深度神经网络(Deep Neural Network,DNN),也称多层神经网络,可以理解为具有多层中间层的神经网络。例如,DNN可以包括卷积神经网络(convolutional neuralnetwork,CNN)和循环神经网络(recurrent neural network,RNN)。CNN是一种带有卷积结构的深度神经网络。主要包括卷积层,池化层、全连接层。当卷积神经网络的输入为图像时,卷积层用于通过卷积操作提取图像特征;池化层通过对特征图的局部区域进行池化操作,常用的池化操作有均值池化和最大值池化;全连接层位于特征提取之后,用于输出结果。
拼接算子,可以将多个数据阵列进行拼接,得到一个覆盖前述多个数据阵列的所有数据的数据阵列,以使拼接后得到的数据阵列表征的信息更加丰富。例如,拼接节点执行拼接运算,该节点包括多个输入分支,拼接节点将各个输入分支输出的数据阵列进行拼接,以将各个输入分支输出的数据阵列组合起来,得到表征的信息更加丰富的数据阵列。可以理解的是,每个输入分支输出的数据阵列是该分支上最接近拼接节点的节点输出的数据阵列。
具体地,例如,参考图3,拼接节点C1对最大池化层MP11、卷积层CV12以及卷积层CV13的输出数据阵列进行拼接,则拼接节点C1的输出数据阵列中的数据,即为将最大池化层MP11、卷积层CV12以及卷积层CV13的输出数据阵列的所有数据组合在一起的数据。
量化,是指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。例如,对于深度神经网络来说,量化是指将神经网络的浮点型参数以及各网络层在前向运算过程中的激活响应(即各网络层在前向运算过程中的输出数据阵列)量化为定点的整型参数,即将浮点型的各网络层的权重、偏差以及各网络层的输出数据阵列量化为定点的整型数。
量化系数,即为将浮点型的数据映射到定点的整型数所使用的缩放系数。例如,将深度神经网络的全精度的32位浮点型参数映射到8比特的二进制整型参数所使用的缩放系数。可以理解,本申请中的数据阵列可以包括一维数据、二维数据矩阵、三维以及三维以上的张量类型的数据(为了方便描述,以下简称“张量”)等。在以下的方案介绍中,均以张量为例,对涉及深度神经网络各层的输入或输出的数据处理进行说明。
在以下的方案介绍中,均以涉及拼接算子的深度神经网络(Deep NeuralNetworks,DNN)为例,对本申请实施例的技术方案进行说明。可以理解的是,除了深度神经网络,本申请的技术方案还可以适用于其他涉及拼接算子的神经网络,本申请对此不作限定。
可以理解,本申请提供的神经网络模型的量化方法可以在各种电子设备上实施,包括但不限于,服务器、多个服务器组成的分布式服务器集群、手机、平板电脑、人脸识别门禁、膝上型计算机、台式计算机、可穿戴设备、头戴式显示器、移动电子邮件设备、便携式游戏机、便携式音乐播放器、阅读器设备、个人数字助理、虚拟现实或者增强现实设备、其中嵌入或耦接有一个或多个处理器的电视机等电子设备等。
特别地,本申请提供的神经网络模型的量化方法适用于边缘设备,边缘计算是在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的分布式开放平台(架构),就近提供边缘智能服务,满能够足实时业务、数据优化、应用智能、安全与隐私保护等方面的关键需求。例如,边缘设备可以是交换机、路由器、在视频监控系统中靠近视频数据源(网络智能摄像头)端能够对视频数据执行边缘计算的设备等等。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施例作进一步地详细介绍。
为了便于说明本申请的技术方案,下面以人脸识别门禁的应用场景为例进行说明,但是可以理解,本申请的技术方案还适用于其他应用场景中,不限于此。
可以理解的是,通常情况下,对于人脸识别门禁的应用场景,涉及到的神经网络模型的输入一般为图像数据阵列,由于图像数据阵列一般为三维或三维以上的张量,因此,下文均以张量来指代图像数据。
图1(a)根据本申请的一些实施例,示出了一种人脸识别门禁的应用场景图。其中包括人脸识别门禁200、服务器100以及用户。由于人脸识别门禁200的运算能力有限,被部署到人脸识别门禁200的用于人脸识别的神经网络模型300可以是:通过采集的大量的人脸图像对部署到服务器100的神经网络模型300进行训练,模型训练好之后,服务器100基于校准数据集,通过执行本申请提供的神经网络的量化方案将浮点型的神经网络模型300的参数量化为整型参数,然后将完成量化的具有整型参数的神经网络模型300移植到人脸识别门禁200。当用户欲通过人脸识别门禁200“刷脸”进入一场所时,人脸识别门禁200通过采集用户的人脸图像,将该图像数据阵列做整型量化,而后对量化后的图像数据阵列经过神经网模型300的各个网络层的计算,得到人脸识别结果,从而判断是否为用户打开门禁。
其中,校准数据集可以为在涉及人脸识别的应用场景中采集的大量的人脸图像,也可以为数据库中保存的大量的人脸图像,还可以是其他类型的数据集,例如Cifar10数据集(一种包括10个类别的RGB(Red:红、Green:绿、Blue:蓝)彩色图片的小型数据集)。
此外,神经网络模型300中需要被量化的参数包括神经网络模型300各网络层的权重、偏差以及各网络层在前向运算过程中的激活响应(即各网络层在前向运算过程中的输出数据阵列)量化为定点的整型参数。
此外,可以理解的是,本申请方案适用的神经网络模型300可以为具有拼接算子节点的任意类型的神经网络模型。
在一些实施例中,服务器100通过执行本申请提供的神经网络的量化方案将浮点型的神经网络模型300的参数量化为整型参数的过程包括:服务器100采用浮点型的校准数据集通过本申请提供的量化方案对具有浮点型参数的神经网络模型300做前向运算,计算出神经网络模型300的各层的浮点型激活响应,然后将浮点型的各层的权重、偏差以及激活响应基于相应的量化系数进行量化。
具体地,拼接节点为了提高计算速度,服务器100将该节点的各输入分支的输出张量的量化系数进行统一设定。例如,可以只计算拼接节点的其中一个输入分支的输出张量的量化系数,然后将该量化系数作为其他所有分支的输出张量的量化系数。又例如,将拼接节点的各输入分支的输出张量进行汇总,然后基于汇总的输出张量计算出各输入分支的输出张量在进行量化时所采用的公共量化系数,不再计算其中一个分支或多个分支的输出张量各自单独的量化系数。
在基于统一设定的量化系数对拼接节点的各输入分支的输出张量进行量化后,使得服务器100在神经网络模型的拼接节点处对张量进行拼接时,可以直接将各个拼接节点的各个输入分支的输出张量复制到已经在服务器100的内存中分配好的存储空间中,实现各输入分支输出张量的拼接。例如,提前分配好拼接节点的输出张量的内存空间(即拼接节点的各个输入分支的输出张量串联后的数据所占的内存空间),将拼接节点的各个输入分支的输出张量拷贝到提前分配好的存储空间中,即可实现各个输入分支的输出张量的拼接。
本申请的技术方案只需要计算出拼接节点的其中一个输入分支的输出张量的量化系数,然后将该量化系数作为其他所有输入分支的输出张量的量化系数;或者只需要计算出部分输入分支的输出张量的量化系数,然后基于部分输入分支的输出张量的量化系数确定出所有输入分支的输出张量的公共量化系数;又或者,只需要一次计算出各输入分支的输出张量公共的量化系数,即不再计算拼接节点的其中一个分支或多个分支各自单独的量化系数,以该公共的量化系数作为拼接节点的所有输入分支的输出张量的量化系数。即服务器100只需要执行很少的运算指令,就可以快速对拼接节点的各个量化系数进行统一设定。避免了现有技术中存在的由于拼接节点的各输入分支的输出张量的量化系数不同,为了实现各输入分支的输出张量在拼接节点处的拼接,需要引入额外的运算,频繁调用服务器100的运算指令,分别计算出各个输入分支的输出张量的量化系数,再将计算出的各个量化系数分别进行复杂的乘法运算以及移位运算,以将各输入分支的输出张量的量化系数对齐到相同的量化系数,然后再对量化后的各个输出张量进行拼接。相比现有技术,本申请的技术方案可以提高20%的计算速度,降低约10%的内存消耗。
例如,在图1(b)所示的实施例中,拼接节点C包括第一输入分支、第二输入分支以及第三输入分支。服务器100将拼接节点C的第一输入分支、第二输入分支以及第三输入分支的输出张量按照本申请提供的量化方法进行量化。量化后的第一输入分支、第二输入分支以及第三输入分支的输出张量在服务器100的内存中占用的内存空间分别为M1、M2以及M3,则服务器100计算出拼接节点C所占用的内存空间M=M1+M2+M3,从而服务器100将第一输入分支、第二输入分支以及第三输入分支的输出张量在拼接节点C处进行拼接时,直接将从内存空间M1、M2以及M3中读取的数据复制到提前计算好的拼接节点C所占用的内存空间M1+M2+M3里,即可实现在拼接节点C处的数据拼接。
图2根据本申请的一些实施例,示出了一种本申请提供的神经网络的量化方案适用的服务器100的结构框图。具体地,如图2所示,服务器100包括一个或多个处理器104,与处理器104中的至少一个连接的系统控制逻辑108,与系统控制逻辑108连接的系统内存112,与系统控制逻辑108连接的非易失性存储器(NVM)116,以及与系统控制逻辑108连接的网络接口220。
在一些实施例中,处理器104可以包括一个或多个单核或多核处理器。在一些实施例中,处理器104可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。在服务器100采用增强型基站(Evolved Node B,ENB)或无线接入网(Radio Access Network,RAN)控制器的实施例中,处理器104可以被配置为执行各种符合的实施例。
在一些实施例中,处理器104可以用于调用神经网络模型,用于图像识别。具体地,例如,处理器104可以获取输入的图像数据,将图像数据输入神经网络模型300,通过对神经网络模型300的各个涉及拼接节点的各个输入分支的输出张量量化系数进行统一设定,并基于该统一设定的量化系数对各个输入分支的输出张量进行量化后,使得在神经网络模型300的拼接节点处进行输出张量的拼接时,可以直接将各个拼接算子的各个输入分支的输出张量复制到已经在系统内存112中分配好的存储空间中,实现数据的拼接。处理器104还可以周期性更新上述神经网络模型300,以便于较好的适应对神经网络模型300的各种实际需求的变化。
在一些实施例中,系统控制逻辑108可以包括任意合适的接口控制器,以向处理器104中的至少一个和/或与系统控制逻辑108通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,系统控制逻辑108可以包括一个或多个存储器控制器,以提供连接到系统内存112的接口。系统内存112可以用于加载以及存储数据和/或指令。在一些实施例中服务器100的内存112可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(DRAM)。在一些实施例中,系统内存112可以用于加载或者存储实施上述神经网络模型300的指令,或者系统内存112可以用于加载或者存储实施利用上述神经网络模型300的应用程序的指令。
NVM/存储器116可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM/存储器116可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(Hard Disk Drive,HDD),光盘(Compact Disc,CD)驱动器,数字通用光盘(Digital Versatile Disc,DVD)驱动器中的至少一个。NVM/存储器116还可以用于存储上述神经网络模型300各层的参数的量化系数。
NVM/存储器116可以包括安装服务器100的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口220通过网络访问NVM/存储116。
特别地,系统内存112和NVM/存储器116可以分别包括:指令124的暂时副本和永久副本。指令124可以包括:由处理器104中的至少一个执行时导致服务器100实施如图7所示的方法的指令。在一些实施例中,指令124、硬件、固件和/或其软件组件可另外地/替代地置于系统控制逻辑108,网络接口220和/或处理器104中。
网络接口220可以包括收发器,用于为服务器100提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口220可以集成于服务器100的其他组件。例如,网络接口220可以集成于处理器104的,系统内存112,NVM/存储器116,和具有指令的固件设备(未示出)中的至少一种,当处理器104中的至少一个执行所述指令时,服务器100实现如图7所示的方法。
网络接口220可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口220可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
在一些实施例中,处理器104中的至少一个可以与用于系统控制逻辑108的一个或多个控制器的逻辑封装在一起,以形成系统封装(SIP)。在一些实施例中,处理器104中的至少一个可以与用于系统控制逻辑108的一个或多个控制器的逻辑集成在同一管芯上,以形成片上系统(SOC)。
服务器100可以进一步包括:输入/输出(I/O)设备132。I/O设备132可以包括用户界面,使得用户能够与服务器100进行交互;外围组件接口的设计使得外围组件也能够与服务器100交互。
可以理解的是,本发明实施例示意的结构并不构成对服务器100的具体限定。在本申请另一些实施例中,服务器100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
可以理解,本申请实施例提供的神经网络模型300的量化方法适用的神经网络模型300的示例性应用包括但不限于图像识别、语音识别、自然语言处理、强化学习等。
下面根据本申请的一些实施例,以图像识别为例,例如人脸识别,详细说明相关技术方案中采用图1(a)所示的服务器100,对图3所示的神经网络模型300进行量化的技术方案。
如图3所示,神经网络模型300包括输入层、多个卷积层、多个池化层、多个拼接节点以及全连接层、输出层。在以下描述中,层与节点的意思相同。
其中,输入层可以用于获取待识别图像数据,并将获取到的待处理图像数据交由卷积层/池化层进行处理,可以得到图像的识别结果。
而卷积层本质上为一个权重矩阵(也称卷积核),通常被预先设定。用于对输入层获取的图像数据进行卷积运算,提取出图像中的特征。在图3所示的实施例中,神经网络模型300具有多个卷积层,通过多个卷积层对输入图像数据分别进行特征提取,可以得到多个对应该图像的不同特征的数据阵列。例如一个卷积核用来提取图像的水平边缘信息,一个卷积核用来提取图像的垂直边缘信息,一个卷积核用来提取图像的颜色信息,一个卷积核用来提取图像的纹理信息等。初始的卷积层(例如卷积层CV0)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着神经网络模型300深度的加深,越往后的卷积层(例如卷积层CV322)提取到的特征越复杂。
池化层可以包括平均池化层和最大池化层等,以用于对输入图像进行采样得到较小尺寸的图像。平均池化层可以用于对图像数据的设定范围取平均值;最大池化层可以用于对图像数据的设定范围取最大值,以减小数据量。
拼接节点用于对通过卷积层或池化层输出的对应图像的不同特征的数据阵列进行拼接,以得到能够更加丰富的表征图像的特征的数据阵列。
全连接层用于对输入图像进行分类,输出层用于输出分类结果。
需要说明的是,如图3所示的神经网络模型300仅作为一种深度神经网络模型的示例,在具体应用中,本申请方案适用的深度神经网络结构可以为具有拼接节点的任意形式的深度神经网络,本申请对此不作限定。
在相关技术方案中,通常为了降低运行神经网络模型300的服务器100的计算开销,会将神经网络模型300的各个网络层中用于参与前向运算的浮点型参数以及各网络层的激活响应(即各网络层的输出)量化为整型数。例如,将全精度的32位的浮点数量化为8比特的二进制整型数。在涉及拼接节点C1、C2、C3的神经网络模型300中,由于拼接节点C1、C2、C3均包括多个输入分支,并且各输入分支的输出张量的量化系数不同,无法直接对采用不同量化系数量化的输出张量进行拼接。
在相关技术方案中,为了实现各输入分支的输出张量在拼接节点C1、C2、C3处的拼接,需要引入额外的运算,分别计算出拼接节点C1、C2、C3各个输入分支的输出张量的量化系数,再将计算出的各个量化系数分别进行复杂的乘法运算以及移位运算,将拼接节点C1、C2、C3的各输入分支的输出张量的量化系数对齐到相同的量化系数,然后再对量化后的各个张量进行拼接。
拼接节点具体地,例如,图4示出了在相关技术方案中,神经网络模型300的量化过程。如图4所示,神经网络模型300的量化过程包括:
步骤401:统计神经网络模型300中每层的参数,以及每层的激活响应值的最大值及最小值。其中,每层的参数包括权重和偏差;每层的激活相应值即为每层的输出值。
步骤402:根据统计出的最大值及最小值计算每层的参数的量化系数。其中,每层的每个节点都有单独的量化系数Si。
步骤403:针对拼接节点,按照设定规则,从其各输入分支的量化系数集合{S}中选择一个参考值Si,计算其它所有分支的量化系数Sj相对于该参考值的比值,即Si/Sj.
步骤404:对拼接节点的以上所有Si/Sj,计算其近似值Mj/(2^Nj),其中Mj和Nj均为整数。
步骤405:对拼接节点的各输入分支的输出张量Tj,做Tj’=(Tj*Mj)<<Nj运算。即将拼接节点的各输入分支的输出张量的量化系数进行乘法运算以及移位运算,以将各输入分支的输出张量的量化系数对齐到同一量化系数。即在分别计算出拼接节点各个输入分支的输出张量的量化系数之后,分别对各个输入分支的输出张量的量化系数进行复杂的乘法以及移位运算,使各个输入分支的输出张量的量化系数相同,以进行后续的拼接操作。
步骤406:将拼接节点的各输入分支的输出张量执行拼接运算,得到拼接节点的输出。例如,拼接节点执行Concat算法(一种数据拼接算法),得到拼接节点的输出张量为Conca(Tj1’,Tj2’,…,)。其中,Tj1’为该拼接节点的第一个分支的输出张量,Tj2’为该拼接节点的第二个分支的输出张量。
从图4所示的相关技术方案中的量化过程中可以看出,在相关技术方案中,涉及到拼接算子的节点处进行量化时,由于拼接算子的不同输入分支的输出张量的量化系数不同,不能直接通过拼接算法进行数据的拼接。因此,为了实现在拼接节点处进行数据的拼接,需要引入额外的运算,分别计算出各个输入分支的输出张量的量化系数,再将计算出的各个量化系数分别进行复杂的乘法运算以及移位运算,以将各输入分支的输出张量的量化系数对齐到相同的量化系数,然后再对量化后的各个输出张量进行拼接。服务器100在执行图4所示的量化方法时,需要频繁调用运算指令,且计算复杂度高,计算时间长,功耗高,响应慢,不利于节能降耗。
为了解决例如图4所示的相关技术方案中,在涉及拼接节点的神经网络模型300的量化过程中存在的,诸如功耗高、响应慢、不利于节能降耗等问题,本申请提出了一种神经网络模型的量化方法。
以下将参考图1(a)、图3、图5至图8,以服务器100对将要部署到人脸识别门禁的神经网络模型300进行量化为例,对本申请提供的神经网络模型300的量化方法进行介绍。
可以理解的是,用户希望人脸识别门禁200的使用成本以及价格越低越好,这一需求使得研发人员在开发人脸识别门禁200的过程中不得不考虑功耗,以及人脸识别门禁200搭载的处理器104的运算能力。例如,处理器104只能提供8比特整型数的乘加运算能力,因此,需要在将神经网络模型300部署到人脸识别门禁200之前,将神经网络模型300的浮点型参数量化为8比特整型数。
在一些实施例中,可以由运算能力及性能较高的服务器100来执行本申请提供的神经网络模型的量化方法,对即将部署到人脸识别门禁200的神经网络模型300进行量化。
具体地,如图5所示,本申请提供的神经网络模型的量化方法包括以下步骤:
步骤501:服务器100通过校准数据集对神经网络模型300(为了方便描述,以下简称“模型300”)做前向运算,并记录各网络层输出张量的关键统计信息。
其中,校准数据集中的数据为浮点型的数据。在一些实施例中,校准数据集可以为在涉及人脸识别的应用场景中采集的大量的人脸图像样本的数据。例如,校准数据集为三维的张量类型的数据,对应人脸图像样本的三维特征:HWC,其中,H为人脸图像样本的垂直方向的像素个数;W为人脸图像样本的水平方向的像素个数;C为人脸图像样本的颜色信息,例如C为RGB颜色空间的红、绿、蓝三种颜色通道的数据。
在一些实施例中,各网络层输出张量的关键统计信息为输出张量的最大值、最小值等。可以理解的是,由于未量化的模型300的参数均为浮点型的参数,并且输入模型300的校准数据集也为浮点型的数据,因此,模型300的各层的输出张量也为浮点型数据。
需要说明的是,在采用校准数据集对模型300做前向运算的过程中,主要涉及校准数据集与模型的卷积层的卷积运算,以及和池化层的池化运算。模型300中的多个卷积层、池化层的计算方法类似,并且,由于校准数据集中数据的维度为三维或三维以上,为了简化说明,以下参考图4和图5,示例性地以一个卷积层以及一个池化层的计算过程来介绍人脸图像样本数据的一个维度的卷积和池化过程。
例如,将校准数据通过图3所示的输入层输入模型300。卷积层CV0为图5所示的2*2的卷积核、最大池化层MP11采用如图6所示的2*2的最大池化运算方法。通过该卷积核对如图6所示的图像的一个维度的特征数据做卷积运算,步长为1。具体地,从特征数据的第一行的第一块2*2的数据开始和2*2的卷积核做卷积运算,然后将滑动窗口向右平移一个数据宽度,继续做卷积预算,当第一行计算完之后,将滑动窗口向下平移一个数据宽度,以此类推,直到将图示特征数据全部和2*2的卷积核做完卷积运算,得到如图6所示的3*3的卷积结果,即特征图A。然后将得到的特征图A,采用如图6所示的2*2的最大池化运算得到如图6所示的2*2的池化结果,即特征图B。在图6所示的实施例中,卷积层CV0的激活响应为特征图A,特征图A的最大值为1,最小值为-1;最大池化层MP11的激活响应为特征图B,特征图B的最大值为1,最小值为0。
可以理解的是,以上运算过程所涉及的图像的特征数据、卷积核的大小、步长以及池化层计算方法仅仅是一种示例性的说明,本申请对此不作限定。
步骤502:服务器100将模型300的各网络层的权重、偏差进行量化。
在一些实施例中,模型300的各层的权重和偏差的量化方法可以为:分别统计出浮点型的权重和偏差的最大值、最小值,而后根据统计出的最大值、最小值以及预设的量化值域,分别得到各个权重和偏差的量化系数,从而基于得到的量化系数,将各个权重和偏差量化为整型数。例如,将全精度的32位的浮点型的权重、偏差映射为8比特的二进制整型数。
步骤503:服务器100将模型300的各网络层的输出张量进行量化。
其中,模型300的网络层包括执行拼接操作的层(即拼接节点)以及其他不执行拼接操作的层。执行拼接操作的层即为执行拼接运算的网络层,通常包括多个输入分支。例如,在图3所示的实施例中,执行拼接操作的层包括拼接节点C1、拼接节点C2以及拼接节点C3。不执行拼接操作的层即为不执行拼接运算的网络层,通常只有一个输入分支,即该网络层的唯一输入即为该网络层相邻上一层的输出。例如,在图3所示的实施例中,不执行拼接操作的层包括卷积层、池化层等。
在一些实施例中,对于模型300中的各个不执行拼接操作的层,例如,卷积层和池化层,服务器100分别计算出这些层的输出张量的关键统计信息,例如,输出张量的最大值、最小值,而后根据输出张量的关键统计信息计算出该输出张量的量化系数,再根据计算出的量化系数对输出张量进行量化。
例如,在图3所示的实施例中,假设卷积层CV0对输入的校准数据进行卷积后,卷积层CV0的输出张量的其中一个维度的数据为图6所示的特征图A,参考图6可知,特征图A中的最大值为1,最小值为-1,将-1到1量化为8比特的整型数,即将-1到1的浮点数映射为(-128,127)的整型数,也即将-1到1区间内的数据分成256等份,量化系数为127,对于将浮点数基于量化系数进行量化的过程中,将浮点数的小数部分进行四舍五入处理。
又例如,在图3所示的实施例中,假设最大池化层MP11的输出张量为特征图B,参考图6可知,特征图B的最大值为1,最小值为0,即将0到1的浮点数映射为(0,255)的整型数,也即将0到1区间内的数据分成256等份,量化系数为255。
特别地,在一些实施例中,对于模型300中的拼接节点,为了减少计算量,提高计算速度,服务器100将该节点的各输入分支的输出张量的量化系数进行统一设定。例如,可以只计算拼接节点的其中一个输入分支的输出张量的量化系数,然后将该量化系数作为其他所有输入分支的输出张量的量化系数,然后基于该量化系数对拼接节点的各个输入分支的输出张量进行量化。
又例如,在一些实施例中,对于模型300中的拼接节点,将拼接节点的各输入分支的输出张量进行汇总,然后基于汇总的输出张量计算出各输入分支的输出张量在进行量化时所采用的公共的量化系数,即不再计算其中一个分支或多个分支的输出张量各自单独的量化系数,
可以理解的是,由于拼接节点只对各输入分支的输出张量进行组合,并不进行其他运算,因此,拼接节点的输出与拼接节点的输入(即各输入分支的输出张量)相同。进而,对拼接节点的各输入分支的输出张量进行量化,也即对拼接节点的输出张量进行了量化。关于拼接节点的各输入分支的输出张量的量化的详细过程请参考下文中涉及的图7以及关于图7的文字部分的内容。
在一些实施例中,服务器100可以提前分配好每个拼接节点的输出张量的内存空间(即拼接节点的各个输入分支的输出张量串联后的数据所占的内存空间),将每个拼接节点的各个输入分支的输出张量拷贝到提前分配好的输出张量的内存空间,即可实现各个输入分支的输出张量的拼接。使得服务器100在拼接节点处执行拼接运算时,避免了现有技术中存在的由于拼接节点的各输入分支的输出张量的量化系数不同,为了实现各输入分支的输出张量在拼接节点处的拼接,需要引入额外的运算,分别计算出各个输入分支的输出张量的量化系数,再将计算出的各个量化系数分别进行复杂的乘法运算以及移位运算,以将各输入分支的输出张量的量化系数对齐到相同的量化系数,然后再对量化后的各个输出张量进行拼接。。
此外,可以理解的是,在服务器100将模型300按照本申请提供的量化方法完成量化之后,可以将模型300通过网络接口220发送给人脸识别门禁200,人脸识别门禁200接收到模型300之后,可以编译生成应用程序包,例如Android应用程序包(Androidapplication package,APK)文件,然后将APK文件安装到人脸识别门禁200中。在对用户进行人脸识别时,人脸识别门禁200只需要采集用户的人脸图像,然后将采集的人脸图像数据映射为整型数,然后依次经过量化后的具有整型参数的模型300的各个网络层的计算,最终得到人脸识别结果。
在将模型300部署到人脸识别门禁200中之后,人脸识别门禁200中运行模型300进行人脸识别时,在模型300的计算过程中,只涉及到整型数的乘、加、读、写等运算,例如,人脸图像的数据张量和卷积层的卷积运算(乘加运算);在拼接节点处,从为该节点的各个输入分支的数量提前分配好的内存空间中读取数据,然后再将读取的数据写入到为该节点的输出张量提前分配的内存空间中。可以理解的是,拼接节点的输出张量的内存空间即为:拼接节点的各个输入分支的输出张量串联后的数据张量所占的内存空间。
如此,可以降低人脸识别门禁200在人脸识别过程中的计算量,并且可以降低功耗。经验证,本申请方案相比现有技术可以提高20%的计算速度,降低约10%的内存消耗。
以下将参考图3、图7和图8,对上述步骤503中涉及的服务器100对模型300的每个拼接节点的各个输入分支的输出张量的量化系数进行统一设定,基于为每个拼接节点的各个输入分支的输出张量统一设定的同一量化系数,对各个输入分支的输出张量进行量化,再将量化后的各个输入分支的输出张量进行拼接,得到拼接节点的输出张量的过程进行详细介绍。具体地,如图7所示,服务器100对模型300的拼接节点处各个输入分支的输出张量的量化以及拼接过程包括以下步骤:
步骤701:服务器100以模型300的每个拼接节点为起点,向模型300的输入层遍历,确定出对应于每个拼接节点的所有输入分支的公共父节点。
其中,拼接节点的所有输入分支的公共父节点即为:该拼接节点的所有输入分支均包括的并且距离该拼接节点最近的节点。
例如,在图3所示的实施例中,拼接节点C1具有三个输入分支,分别为:分支R11、分支R12以及分支R13。其中,分支R11包括卷积层CV0、最大池化层MP11;分支R12包括卷积层CV0、卷积层CV12;分支R13包括卷积层CV0、卷积层CV13。即拼接节点C1的三个输入分支均包括卷积层CV0,因此,不难理解,服务器100可以将卷积层CV0确定为拼接节点C1的三个输入分支的公共父节点。
又例如,在图3所示的实施例中,拼接节点C2也具有三个输入分支,分别为:分支R21、分支R22以及分支R23。其中,分支R21包括拼接节点C1、卷积层CV21;分支R22包括拼接节点C1、卷积层CV221、卷积层CV222;分支R23包括平均池化层AP23、卷积层CV23。即拼接节点C2的三个输入分支均包括拼接节点C1,因此,不难理解,服务器100可以将拼接节点C1确定为拼接节点C2的三个输入分支的公共父节点。此外,不难理解,拼接节点C3的三个输入分支R31、R32、R33的公共父节点为拼接节点C2。
步骤702:服务器100基于确定出的对应于每个拼接节点的所有输入分支的公共父节点,确定出每个拼接节点与相应的公共父节点之间的路径集合。
例如,在图3所示的实施例中,与拼接节点C1对应的公共父节点为卷积层CV0,则拼接节点C1与卷积层CV0之间有三条路径。例如,该三条路径分别被记为L11、L12、L13,相应的路径集合为{L11、L12、L13},则路径L11包括最大池化层MP11;路径L12包括卷积层CV12;路径L13包括卷积层CV13。
又例如,在图3所示的实施例中,与拼接节点C2对应的公共父节点为拼接节点C1,则拼接节点C2与拼接节点C1之间有三条路径。例如,该三条路径分别被记为L21、L22、L23,相应的路径集合为{L21、L22、L23},则路径L21包括卷积层CV21;路径L22包括卷积层CV221、卷积层CV222;路径L23包括平均池化层AP23、卷积层CV23。
此外,不难理解,与拼接节点C3对应的公共父节点为拼接节点C2,则拼接节点C3与拼接节点C2之间有三条路径。例如,该三条路径分别被记为L31、L32、L33,相应的路径集合为{L31、L32、L33},则路径L31包括最大池化层MP31;路径L32包括卷积层CV321、卷积层CV322;路径L33包括最大池化层MP33。
步骤703:服务器100针对每个拼接节点,从拼接节点至相应的公共父节点的方向遍历路径集合中的每条路径,确定出每条路径中的目标节点,并记录每条路径中的目标节点数量。
在一些实施例中,每条路径中的目标节点为:该路径上需要被量化的节点中,距离拼接节点最近的节点。
在一些实施例中,每条路径上需要被量化的节点是通过以下方式确定出的:
若该路径上的一个节点的输入张量的量化系数与该节点的输出张量的量化系数不同,则确定该节点需要被量化;否则,确定该节点不需要被量化。
例如,假设图3中的拼接节点C1与卷积层CV0之间的路径L12上的卷积层CV12的输入张量为图6所示的图像特征数据,卷积层CV12为图6所示的卷积核,卷积层CV12的输出张量为图5所示的卷积结果。不难理解,卷积层CV12的输入张量的最大值为1,最小值为0,若将输入张量量化为8比特的整型数,即将0到1的浮点数映射为(0,255)的整型数,也即将0到1区间内的数据分成256等份,量化系数为255;而卷积层CV12的输出张量(即卷积结果)的最大值为1,最小值为-1,若将输出张量量化为8比特的整型数,即将-1到1的浮点数映射为(-128,127)的整型数,也即将-1到1区间内的数据分成256等份,量化系数为127。由此可见,卷积层CV12的输入张量和输出张量的量化系数不同,则服务器100可以确定出卷积层CV12需要被量化。并且,进一步地,由于卷积层CV12所在的路径L12只有卷积层CV12,因此,服务器100可以更进一步地确定出卷积层CV12为路径L12中的目标节点。
此外,在一些实施例中,由于池化层的输入张量的量化系数输出张量的量化系数相同,因此在本申请方案中,可以将池化层确定为不需要量化操作的节点。
步骤704:服务器100基于记录的对应于每个拼接节点的每条路径中的目标节点数量,判断对应于每个拼接节点的各个路径中是否存在不具备目标节点的路径。若是,则表明拼接节点存在不具备目标节点的路径,进入步骤705;否则,表明拼接节点的各个路径都具备目标节点,进入步骤708。
步骤705:服务器100确定出对应于每个拼接节点的不具备目标节点的路径的数量,若该数量为1,则表明相应的拼接节点只有一条路径不具备目标节点,进入步骤706;若该数量大于1,则表明相应的拼接节点存在多条路径不具备目标节点,进入步骤707。
步骤706:服务器100在不具备目标节点的一条路径中,将距离相应拼接节点最近的节点的量化系数确定为该拼接节点的所有路径的统一量化系数。
可以理解的是,模型300中的拼接节点是对采用统一量化系数对与该拼接节点相应的所有路径的输出张量进行量化后的数据进行拼接,并且各个路径的输出张量为各个路径中距离拼接节点最近的节点的输出张量。因此,为了得到拼接节点的各个路径的输出张量的统一量化系数,并且尽量降低计算量,在服务器100确定出模型300的拼接节点只有一条路径不具备目标节点的情况下,可以将该路径中最接近拼接节点的一个节点的输出张量的量化系数作为其他所有分支的输出张量的量化系数。
即服务器100只需要计算出拼接节点的其中一个路径的输出张量的量化系数,然后将该量化系数作为其他所有路径的输出张量的量化系数,然后基于该量化系数对拼接节点的各个路径的输出张量进行量化。避免了现有技术中存在的由于拼接节点的各路径的输出张量的量化系数不同,为了实现各路径的输出张量在拼接节点处的拼接,需要引入额外的运算,频繁调用服务器100的运算指令,分别计算出各个路径的输出张量的量化系数,再将计算出的各个量化系数分别进行复杂的乘法运算以及移位运算,以将各路径的输出张量的量化系数对齐到相同的量化系数,然后再对量化后的各个输出张量进行拼接。相比现有技术,本方案可以减少计算量,提高计算速度。
例如,在图3所示的实施例中,拼接节点C1的三条路径中,路径L11只有一个最大池化层MP11,由前述分析可知,池化层被确定为不需要被量化的节点,因此路径L11即为拼接节点C1的不具备目标节点的路径。则将路径L11中的最接近拼接节点C1的最大池化层MP11的输出张量的量化系数S11作为路径L12、路径L13的统一量化系数。
步骤707:服务器100在拼接节点与该拼接节点的多条不具备目标节点的路径之间添加一新的拼接节点,并且将添加的新的拼接节点的量化系数作为该节点的所有路径的统一量化系数。
即服务器100只需要计算出拼接节点的部分路径的输出张量的量化系数,然后将部分路径的输出张量的量化系数进行乘法运算以及移位运算,对齐到统一量化系数,然后基于该量化系数对拼接节点的各个路径的输出张量进行量化。避免了现有技术中存在的由于拼接节点的各路径的输出张量的量化系数不同,为了实现各路径的输出张量在拼接节点处的拼接,需要引入额外的运算,频繁调用服务器100的运算指令,分别计算出各个路径的输出张量的量化系数,再将计算出的各个量化系数分别进行复杂的乘法运算以及移位运算,以将各路径的输出张量的量化系数对齐到相同的量化系数,然后再对量化后的各个输出张量进行拼接。相比现有技术,本方案可以减少计算量,提高计算速度。
在一些实施例中,添加的新的拼接节点的量化系数可以通过图4所示的方法中的步骤403至405的方法获得的。例如,假设服务器100确定出一拼接节点具有两条不具备目标节点的路径,记为:路径1和路径2。服务器100计算出路径1和路径2的两个输出张量(即路径1和路径2中最接近拼接节点的一个节点的输出张量)的量化系数,记为:s1和s2。然后将s1和s2基于乘法运算以及移位运算,对齐到同一个缩放系数s,即将缩放系数s作为拼接节点的所有路径的输出张量的量化系数。
需要说明的是,前述新的拼接节点只是为了便于服务器100计算统一量化系数而添加的一种执行拼接运算的一种运算逻辑,而非在模型300中添加一个真实的拼接节点。
需要说明的是,拼接节点的多条路径不具备目标节点的情况出现的概率较小,所以在实际应用中,并不会由于添加新的拼接节点,针对新的拼接节点进行量化系数的对齐时,增加额外的运算量。
步骤708:服务器100分别确定出每个拼接节点的各个路径的输出张量的公共最大值、公共最小值,并根据统计出的公共最大值、公共最小值,确定出每个拼接节点的各个路径的输出张量的统一量化系数。
即服务器100只需要一次计算出拼接节点的各路径的输出张量公共的量化系数,即不再计算拼接节点的其中一个分支或多个分支各自单独的量化系数,以该公共的量化系数作为拼接节点的所有路径的输出张量的量化系数,然后基于该公共的量化系数对拼接节点的各个路径的输出张量进行量化。避免了现有技术中存在的由于拼接节点的各路径的输出张量的量化系数不同,为了实现各路径的输出张量在拼接节点处的拼接,需要引入额外的运算,频繁调用服务器100的运算指令,分别计算出各个路径的输出张量的量化系数,再将计算出的各个量化系数分别进行复杂的乘法运算以及移位运算,以将各路径的输出张量的量化系数对齐到相同的量化系数,然后再对量化后的各个输出张量进行拼接。相比现有技术,本方案可以减少计算量,提高计算速度。
可以理解的是,在一些实施例中,拼接节点的各个路径的输出张量即为拼接节点的各个路径中距离该拼接节点最近的节点的输出张量。在一些实施例中,拼接节点的各个路径中距离拼接节点最近的节点为卷积层。在一些实施例中,拼接节点的各个路径中距离拼接节点最近的节点为池化层,例如最大池化层、平均池化层。
需要说明的是,每个拼接节点的各个路径的输出张量的统一量化系数是指:将拼接节点的各个路径的最后一个节点的输出张量进行汇总,然后将汇总后的张量进行数据量化时所采用的量化系数(简称“拼接节点的统一量化系数”)
在一些实施例中,假设将拼接节点的各个路径的输出张量进行汇总,汇总后的输出张量为xf,汇总后的输出张量xf的公共最大值为maxxf、公共最小值为minxf,则服务器100可以基于以下公式将实数域的输出张量xf量化为n个比特位的整数域的输出张量xq:
其中,round表示取整运算,即将的计算结果进行四舍五入;
即为将实数域的汇总后的输出张量xf量化为n个比特位的整数域的输出张量xq的量化系数qx(即前述拼接节点的统一量化系数)。
可以理解的是,以上公式只是示例性地对示出了服务器100基于拼接节点的各个路径的输出张量的公共最大值、公共最小值,对各个路径的输出张量进行量化的方式,在其他实施例中,服务器100还可以根据其他方式基于拼接节点的各个路径的输出张量的公共最大值、公共最小值,对各个路径的输出张量进行量化,不限于此。
例如,在一些实施例中,为了更加直观地展示前述统计出的公共最大值,公共最小值,服务器100可以统计出每个拼接节点的各个路径的输出张量的直方图,从直方图中确定出各个路径的输出张量的公共最大值、公共最小值。
例如,在图3所示的实施例中,拼接节点C2的三条路径L21、L22、L23均具有目标节点,路径L21、L22、L23对应的目标节点分别为:卷积层CV21、卷积层CV222、卷积层CV23。假设卷积层CV21、卷积层CV222、卷积层CV23的输出张量的统计直方图为图8所示的直方图,其中横轴为卷积层CV21、卷积层CV222、卷积层CV23的输出张量的取值,纵轴为卷积层CV21、卷积层CV222、卷积层CV23的输出张量落入横轴的各个取值范围内的个数。
在一些实施例中,可以直接将图8所示的统计直方图中的最大值和最小值分别确定为卷积层CV21、卷积层CV222、卷积层CV23的输出张量的公共最大值MA、公共最小值MI,然后通过MA、MI计算出量化系数。例如,MA为23,MI为0,将浮点数的卷积层CV21、卷积层CV222、卷积层CV23的输出张量量化为8比特的整型数,即将0到23范围内的浮点数量化为(0,255)的整型数,也即将0到23区间内的数据分成256等份,量化系数约为11。因此,可以将11确定为卷积层CV21、卷积层CV222、卷积层CV23的输出张量的统一量化系数。
在一些实施例中,为了使统计出的直方图更加准确地反映出相应的拼接节点的各个路径的输出张量的数据分布,对数据进行降噪,服务器100还可以基于校准算法,例如KL散度(Kullback-Leibler Divergence)校准算法,对每个拼接节点的各个路径的输出张量的直方图进行数据校准。从而得到更加准确的公共最大值、公共最小值,进而得到更加准确的统一量化系数。
步骤709:服务器100基于确定出的对应于每个拼接节点的统一量化系数,将拼接节点的各个路径的输出张量量化为整型数,并且计算出量化后的每个拼接节点的各个路径的输出张量占用的内存空间。
例如,在图3所示的实施例中,拼接节点C2的三条路径L21、L22、L23对应的目标节点分别为:卷积层CV21、卷积层CV222、卷积层CV23。并且量化后的卷积层CV21、卷积层CV222、卷积层CV23的输出张量占用的内存空间分别为M1、M2、M3。
步骤710:服务器100基于计算出的每个拼接节点的各个路径的输出张量占用的内存空间,确定出每个拼接节点的输出张量的内存空间。
可以理解的是,拼接节点对各个路径的输出张量进行拼接,即将各个路径输出的张量类型的数据进行组合,因此,拼接节点将各个路径的输出张量进行拼接后的数据(即拼接节点的输出张量)占用的内存空间即为:各个路径的输出张量占用的内存空间之和。
例如,在图3所示的实施例中,假设对应拼接节点C2的量化后的卷积层CV21、卷积层CV222、卷积层CV23的输出张量占用的内存空间分别为M1、M2、M3,则拼接节点C2的输出张量占用的内存空间即为:M=M1+M2+M3。
步骤711:服务器100将量化后的每个拼接节点的各个路径的输出张量写入确定出的拼接节点的输出张量的内存空间,以实现每个拼接节点处的数据的拼接。
例如,在一些实施例中,服务器100从拼接节点的各个路径的输出张量的内存空间中读取数据,然后将读取的数据写入提前为拼接节点分配好的输出张量的内存空间中,实现数据拼接。
例如,在图3所示的实施例中,假设拼接节点C2的输出张量的内存空间为M1+M2+M3、首地址为B,则服务器100将从拼接节点C2的量化后的卷积层CV21、卷积层CV222、卷积层CV23的输出张量占用的内存空间M1、M2、M3中读取的数据,写入服务器100的B+M1+M2+M3内存空间处即可。
至此,服务器100通过本申请提供的量化方法完成了对模型300的量化拼接操作。结合以上内容可知,服务器100通过本申请提供的量化方法对模型300中量化的过程中,针对拼接节点的量化,服务器100只需要计算出拼接节点的其中一个路径的输出张量的量化系数,然后将该量化系数作为其他所有路径的输出张量的量化系数;或者只需要计算出部分路径的输出张量的量化系数,然后基于部分路径的输出张量的量化系数确定出所有路径的输出张量的公共量化系数;又或者,只需要一次计算出各路径的输出张量公共的量化系数,即不再计算拼接节点的其中一个分支或多个分支各自单独的量化系数,以该公共的量化系数作为拼接节点的所有路径的输出张量的量化系数。即服务器100只需要执行很少的运算指令,就可以快速对拼接节点的各个量化系数进行统一设定,避免了现有技术中存在的由于拼接节点的各路径的输出张量的量化系数不同,为了实现各路径的输出张量在拼接节点处的拼接,需要引入额外的运算,频繁调用服务器100的运算指令,分别计算出各个路径的输出张量的量化系数,再将计算出的各个量化系数分别进行复杂的乘法运算以及移位运算,以将各路径的输出张量的量化系数对齐到相同的量化系数,然后再对量化后的各个输出张量进行拼接。本申请方案相比现有技术可以提高20%的计算速度,降低约10%的内存消耗。
图9根据本申请的一些实施例,示出了一种人脸识别门禁200的硬件结构框图。人脸识别门禁200能够运行通过本申请实施例提供的神经网络模型的量化方法量化后的模型300,以进行人脸识别。在图9中,相似的部件具有同样的附图标记。如图9所示,人脸识别门禁200可以包括处理器210、电源模块240、存储器280、摄像头270、移动通信模块230、无线通信模块220、传感器模块290、音频模块250、接口模块260以及显示屏202等。
可以理解的是,本发明实施例示意的结构并不构成对人脸识别门禁200的具体限定。在本申请另一些实施例中,人脸识别门禁200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如,可以包括中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、数字信号处理器(Digital Signal Processor,DSP)、微处理器(Micro-programmed Control Unit,MCU)、人工智能(Artificial Intelligence,AI)处理器或可编程逻辑器件(Field ProgrammableGate Array,FPGA)等的处理模块或处理电路。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
例如,在本申请的一些实例中,处理器210可以用来对输入的图像进行量化处理,然后运行模型300的程序代码,对输入的图像数据作为模型300的输入,通过前向运算后输入计算结果,即人脸识别结果。
存储器280可用于存储数据、软件程序以及模块。具体的,存储器280可以包括程序存储区2801和数据存储区2802。在申请实施例中,程序存储区2801可以用于存储人脸识别模型(模型300)的程序代码;数据存储区2802可以用于存储人脸识别模型(模型300)的各个参数的量化系数。
电源模块240可以包括电源、电源管理部件等。电源可以为电池。电源管理部件用于管理电源的充电和电源向其他模块的供电。充电管理模块用于从充电器接收充电输入;电源管理模块用于连接电源,充电管理模块与处理器210。
移动通信模块230可以包括但不限于天线、功率放大器、滤波器、低噪声放大器(Low Noise Amplify,LNA)等。移动通信模块230可以提供应用在人脸识别门禁200上的包括2G/3G/4G/5G等无线通信的解决方案。在一些实施例中,移动通信模块230的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块230至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
无线通信模块220可以包括天线,并经由天线实现对电磁波的收发。无线通信模块220可以提供应用在人脸识别门禁200上的包括无线局域网(Wireless Local AreaNetworks,WLAN)(如无线保真(Wireless Fidelity,Wi-Fi)网络),蓝牙(Bluetooth,BT),全球导航卫星系统(Global Navigation Satellite System,GNSS),调频(FrequencyModulation,FM),近距离无线通信技术(Near Field Communication,NFC),红外技术(Infrared,IR)等无线通信的解决方案。人脸识别门禁200可以通过无线通信技术与网络以及其他设备进行通信。
例如,在本申请的一些实施例中,人脸识别门禁200可以通过无线局域网和服务器100通信,接收由服务器100发送的训练好并且采用本申请方案量化好的模型300,以通过编译生成应用程序包,实现人脸识别功能。
在一些实施例中,人脸识别门禁200的移动通信模块230和无线通信模块220也可以位于同一模块中。
摄像头270用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件把光信号转换成电信号,之后将电信号传递给ISP(Image Signal Processor,图像信号处理器)转换成数字图像信号。人脸识别门禁200可以通过ISP,摄像头270,视频编解码器,GPU(Graphic Processing Unit,图形处理器),显示屏202以及应用处理器等实现拍摄功能。
例如,在本申请的一些实施例中,用户在使用人脸识别门禁200进行刷脸时,人脸识别门禁200通过摄像头270拍摄用户的脸部照片,然后输入被移植到人脸识别门禁200的模型300进行人脸识别。
显示屏202包括显示面板。在本申请的一些实施例中,显示屏202用于显示人脸识别门禁200的识别结果。在其他实施例中,显示屏202还可以显示用户面部的预览图像。
传感器模块290可以包括接近光传感器、压力传感器,距离传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
音频模块250可以将数字音频信息转换成模拟音频信号输出,或者将模拟音频输入转换为数字音频信号。在一些实施例中,音频模块250可以包括扬声器、听筒、麦克风以及耳机接口。
例如,在本申请的一些实施例中,用户在使用人脸识别门禁200进行人脸识别时,可以通过扬声器听到播放的人脸识别结果,或者是否能够通行的语音内容。
接口模块260包括外部存储器接口、通用串行总线(Universal Serial Bus,USB)接口及用户标识模块(Subscriber Identification Module,SIM)卡接口等。
在一些实施例中,人脸识别门禁200还包括按键,例如音量键、开/关机键等。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(Application Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、可擦除可编程只读存储器(Erasable Programmable Read OnlyMemory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (15)
1.一种用于神经网络模型的数据量化方法,其特征在于,所述方法包括:
将校准数据集输入神经网络模型,所述校准数据集包括图像数据;所述神经网络模型包括多个数据处理节点和拼接节点,并且所述多个数据处理节点分布于所述拼接节点的多个输入分支上;
判断所述拼接节点的各所述输入分支是否存在满足预设条件的数据处理节点;
在确定出所述拼接节点的各所述输入分支均存在满足预设条件的数据处理节点的情况下,汇总各所述输入分支中向所述拼接节点输出数据阵列的数据处理节点所输出的多个数据阵列,并基于汇总的多个数据阵列确定所述各输入分支进行数据量化所采用的公共量化系数;其中,所述多个数据阵列为基于所述校准数据集对所述神经网络模型进行前向运算获取的;
基于所述公共量化系数对所述各输入分支进行量化,获取量化后的神经网络模型;
获取图像数据,并将所述图像数据映射为整形数,基于所述量化后的神经网络模型对所述整形数计算,获取计算结果;
其中,基于所述量化后的神经网络模型对所述整形数计算的过程中,在拼接节点处,从第一内存空间中读取数据,并将读取的数据写入第二内存空间,所述第一内存空间是为所述拼接节点的各个输入分支的张量提前分配的内存空间,所述第二内存空间是为所述拼接节点的输出张量提前分配的内存空间。
2.根据权利要求1所述的方法,其特征在于,所述满足预设条件的数据处理节点为输入数据阵列的量化系数与输出数据阵列的量化系数不同的数据处理节点。
3.根据权利要求1或2所述的方法,其特征在于,所述基于汇总的多个数据阵列确定所述各输入分支进行数据量化所采用的公共量化系数,包括:
确定出汇总的多个数据阵列的最大值、最小值、平均值以及方差中的至少一个;并且,
基于确定出的最大值、最小值、平均值以及方差中的至少一个,确定出所述各输入分支进行数据量化所采用的公共量化系数。
4.根据权利要求1或2所述的方法,其特征在于,所述基于汇总的多个数据阵列确定所述各输入分支进行数据量化所采用的公共量化系数,包括:
确定出汇总的所述多个数据阵列的统计直方图;
基于所述统计直方图确定出所述各输入分支进行数据量化所采用的公共量化系数。
5.根据权利要求4所述的方法,其特征在于,还包括:
基于校准算法对确定出的所述统计直方图进行降噪;
基于降噪后的所述统计直方图确定出所述各输入分支进行数据量化所采用的公共量化系数。
6.根据权利要求1或2所述的方法,其特征在于,还包括:通过以下公式基于汇总的多个数据阵列确定所述各输入分支进行数据量化所采用的公共量化系数:
其中,为汇总的多个数据阵列;/>表示将汇总的多个数据阵列/>量化为/>个比特位的整数域的数据阵列/>;/>为汇总的多个数据阵列的最大值;/>为汇总的多个数据阵列的最小值。
7.根据权利要求1所述的方法,其特征在于,还包括:
在所述拼接节点多个输入分支中有一个输入分支不存在满足预设条件的数据处理节点的情况下,获取不存在满足预设条件的数据处理节点的输入分支中,向所述拼接节点输出数据阵列的数据处理节点的输出数据阵列,并基于获取的所述输出数据阵列确定所述拼接节点的各输入分支进行数据量化所采用的公共量化系数。
8.根据权利要求7所述的方法,其特征在于,所述基于获取的所述输出数据阵列确定所述拼接节点的各输入分支进行数据量化所采用的公共量化系数,包括:
确定出将不存在满足预设条件的数据处理节点的输入分支中向所述拼接节点输出数据阵列的数据处理节点的输出数据阵列进行数据量化所采用的量化系数;
将确定出的所述不存在满足预设条件的数据处理节点的输入分支中向所述拼接节点输出数据阵列的数据处理节点的输出数据阵列的量化系数,作为将所述拼接节点的各输入分支进行数据量化所采用的公共量化系数。
9.根据权利要求1所述的方法,其特征在于,还包括:
在确定出所述拼接节点的部分输入分支不存在满足预设条件的数据处理节点的情况下,基于部分输入分支中向所述拼接节点输出数据阵列的数据处理节点的输出数据阵列,确定所述拼接节点的各输入分支进行数据量化所采用的公共量化系数。
10.根据权利要求9所述的方法,其特征在于,基于所述部分输入分支中向所述拼接节点输出数据阵列的数据处理节点的输出数据阵列,确定所述拼接节点的各输入分支进行数据量化所采用的公共量化系数,包括:
分别计算出至少两个输入分支中向所述拼接节点输出数据阵列的数据处理节点的输出数据阵列进行数据量化所采用的量化系数;
将计算出的对应于所述至少两个输入分支的各个所述量化系数映射为同一个量化系数;
将所述同一个量化系数确定为所述拼接节点的各输入分支进行数据量化所采用的公共量化系数。
11.根据权利要求10所述的方法,其特征在于,所述将所述同一个量化系数确定为所述拼接节点的各输入分支进行数据量化所采用的公共量化系数包括:
将计算出的对应于所述至少两个输入分支的各个所述量化系数通过乘法运算以及移位运算映射为同一个量化系数。
12.根据权利要求1任一项所述的方法,其特征在于,还包括:
确定所述拼接节点的输出数据阵列占用的内存空间;
将采用所述公共量化系数对所述拼接节点的所述各输入分支中向所述拼接节点输出数据阵列的数据处理节点所输出的数据阵列分别进行量化后的数据阵列复制到所述拼接节点的输出数据阵列占用的内存空间中。
13.根据权利要求12所述的方法,其特征在于,通过以下方式确定所述拼接节点的输出数据阵列占用的内存空间:
分别计算出采用所述公共量化系数将所述各输入分支中向所述拼接节点输出数据阵列的数据处理节点所输出的数据阵列进行量化后的数据阵列占用的内存空间;
将计算出的对应于各所述输入分支的所述内存空间相加,得到所述拼接节点的输出数据阵列的内存空间。
14.一种可读介质,其特征在于,所述可读介质上存储有指令,该指令在电子设备上执行时使电子设备执行权利要求1-13中任一项所述的用于神经网络模型的数据量化方法。
15.一种电子设备,其特征在于,包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及
处理器,当所述指令被一个或多个处理器执行时,所述处理器用于执行权利要求1-13中任一项所述的用于神经网络模型的数据量化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110360854.0A CN112990440B (zh) | 2021-04-02 | 2021-04-02 | 用于神经网络模型的数据量化方法、可读介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110360854.0A CN112990440B (zh) | 2021-04-02 | 2021-04-02 | 用于神经网络模型的数据量化方法、可读介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112990440A CN112990440A (zh) | 2021-06-18 |
CN112990440B true CN112990440B (zh) | 2023-09-19 |
Family
ID=76339027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110360854.0A Active CN112990440B (zh) | 2021-04-02 | 2021-04-02 | 用于神经网络模型的数据量化方法、可读介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112990440B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118384B (zh) * | 2021-12-09 | 2024-06-04 | 安谋科技(中国)有限公司 | 神经网络模型的量化方法、可读介质和电子设备 |
CN114239803B (zh) * | 2021-12-13 | 2024-06-18 | 北京地平线机器人技术研发有限公司 | 神经网络模型的编译方法和装置、电子设备和存储介质 |
CN116108896B (zh) * | 2023-04-11 | 2023-07-07 | 上海登临科技有限公司 | 模型量化方法、装置、介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106791882A (zh) * | 2016-12-05 | 2017-05-31 | Tcl集团股份有限公司 | 一种图像的编码加密方法及装置 |
CN111126557A (zh) * | 2018-10-31 | 2020-05-08 | 阿里巴巴集团控股有限公司 | 神经网络量化、应用方法、装置和计算设备 |
CN111260022A (zh) * | 2019-11-22 | 2020-06-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络全int8定点量化的方法 |
CN111753953A (zh) * | 2020-05-13 | 2020-10-09 | 北京迈格威科技有限公司 | 一种用于获取神经网络架构的方法及装置 |
CN112269595A (zh) * | 2020-10-28 | 2021-01-26 | 清华大学 | 图像处理方法、装置、计算机设备及存储介质 |
-
2021
- 2021-04-02 CN CN202110360854.0A patent/CN112990440B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106791882A (zh) * | 2016-12-05 | 2017-05-31 | Tcl集团股份有限公司 | 一种图像的编码加密方法及装置 |
CN111126557A (zh) * | 2018-10-31 | 2020-05-08 | 阿里巴巴集团控股有限公司 | 神经网络量化、应用方法、装置和计算设备 |
CN111260022A (zh) * | 2019-11-22 | 2020-06-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络全int8定点量化的方法 |
CN111753953A (zh) * | 2020-05-13 | 2020-10-09 | 北京迈格威科技有限公司 | 一种用于获取神经网络架构的方法及装置 |
CN112269595A (zh) * | 2020-10-28 | 2021-01-26 | 清华大学 | 图像处理方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于模糊C均值聚类及学习向量量化神经网络的负荷同时系数预测模型;李江等;《南京理工大学学报》;567-574 * |
Also Published As
Publication number | Publication date |
---|---|
CN112990440A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112990440B (zh) | 用于神经网络模型的数据量化方法、可读介质和电子设备 | |
CN111476309B (zh) | 图像处理方法、模型训练方法、装置、设备及可读介质 | |
CN111062871A (zh) | 一种图像处理方法、装置、计算机设备及可读存储介质 | |
US11663806B2 (en) | Saliency of an object for image processing operations | |
US20230334890A1 (en) | Pedestrian re-identification method and device | |
CN113505848B (zh) | 模型训练方法和装置 | |
CN112733970B (zh) | 图像分类模型处理方法、图像分类方法及装置 | |
CN109982088B (zh) | 图像处理方法及装置 | |
CN110689478B (zh) | 图像风格化处理方法、装置、电子设备及可读介质 | |
CN110211017B (zh) | 图像处理方法、装置及电子设备 | |
CN111915689B (zh) | 用于生成目标函数的方法、装置、电子设备和计算机可读介质 | |
CN114420135A (zh) | 基于注意力机制的声纹识别方法及装置 | |
CN114282587A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN112561779B (zh) | 图像风格化处理方法、装置、设备及存储介质 | |
WO2023040813A1 (zh) | 人脸图像处理方法、装置、设备及介质 | |
CN113762585B (zh) | 数据的处理方法、账号类型的识别方法及装置 | |
CN115937020A (zh) | 图像处理方法、装置、设备、介质和程序产品 | |
CN117437411A (zh) | 语义分割模型训练方法、装置、电子设备及存储介质 | |
CN115830362A (zh) | 图像处理方法、装置、设备、介质及产品 | |
CN115705482A (zh) | 模型量化方法、装置、计算机设备及存储介质 | |
CN114898282A (zh) | 图像处理方法及装置 | |
CN110969217A (zh) | 基于卷积神经网络进行图像处理的方法和装置 | |
CN112561778B (zh) | 图像风格化处理方法、装置、设备及存储介质 | |
CN111814807B (zh) | 用于处理图像的方法、装置、电子设备和计算机可读介质 | |
CN114429420B (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 |