CN115293337A - 构建神经网络的方法、装置、计算设备及存储介质 - Google Patents
构建神经网络的方法、装置、计算设备及存储介质 Download PDFInfo
- Publication number
- CN115293337A CN115293337A CN202211224361.5A CN202211224361A CN115293337A CN 115293337 A CN115293337 A CN 115293337A CN 202211224361 A CN202211224361 A CN 202211224361A CN 115293337 A CN115293337 A CN 115293337A
- Authority
- CN
- China
- Prior art keywords
- branch
- path
- convolution
- network
- block
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 53
- 238000003860 storage Methods 0.000 title claims abstract description 7
- 238000012549 training Methods 0.000 claims abstract description 150
- 238000012795 verification Methods 0.000 claims abstract description 14
- 238000013139 quantization Methods 0.000 claims description 44
- 239000011159 matrix material Substances 0.000 claims description 32
- 238000003062 neural network model Methods 0.000 claims description 29
- 238000010606 normalization Methods 0.000 claims description 21
- 238000010200 validation analysis Methods 0.000 claims description 18
- 238000006243 chemical reaction Methods 0.000 claims description 15
- 230000000717 retained effect Effects 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 7
- 238000005457 optimization Methods 0.000 claims description 7
- 230000001131 transforming effect Effects 0.000 claims 4
- 230000000875 corresponding effect Effects 0.000 description 40
- 238000001514 detection method Methods 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 12
- 230000004927 fusion Effects 0.000 description 11
- 230000000670 limiting effect Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000013459 approach Methods 0.000 description 8
- 230000004913 activation Effects 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000011478 gradient descent method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000003709 image segmentation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101100446506 Mus musculus Fgf3 gene Proteins 0.000 description 1
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012821 model calculation Methods 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
Images
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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及构建神经网络的方法、装置、计算设备及存储介质。该方法包括:根据目标硬件平台关于计算量和参数量的要求将超网络的基础结构构建为多个块的堆叠;将每个块设置为多分支块并对每个分支赋予分支权重,将每个分支设置为多路径分支并对每个路径赋予路径权重,对超网络进行第一阶段的训练以在每次迭代内通过训练集更新卷积权重并通过验证集更新分支权重,对每个块仅保留满足预设分支权重要求的分支以得到中间网络,对中间网络进行第二阶段的训练以在每次迭代内通过训练集更新卷积权重并通过验证集更新路径权重,对每个分支仅保留路径权重最大的路径以得到子网络,通过重参数化将子网络转换为单分支结构以用于目标硬件平台。
Description
技术领域
本公开涉及神经网络技术领域,并且更具体地,涉及一种为目标硬件平台构建神经网络的方法、装置、计算设备及存储介质。
背景技术
随着深度学习技术的发展,出现了越来越多的复杂神经网络,以追求更高的精度以及在硬件平台上更快的运行速度。很多复杂神经网络是针对特定芯片进行了对应的优化,而无法在其它芯片上保持同样的性能。目前市场上大部分芯片对于mobilenetv2以后的神经网络的支持度普遍不高。尤其是在mobile系列之后发展出来的新型神经网络,不仅有着跳接上的革新,还在挤压激励(Squeeze-and-excitation,SE)模块、洗牌(Shuffle)模块、转换器(Transformer)结构、倒残差结构、自注意力机制等方面取得了长足的进步,但是这些新颖的模块和结构需要特定的加速器等硬件支持才能达到理想的效果,所以它们在很多芯片上难以正常发挥。换言之,这些新颖的模块和结构相比于简单的卷积网络虽然可能促进实现了改进的性能,但是对硬件支持提出了更高要求,导致对不同芯片的兼容度低。
另一方面,神经网络的多分支结构也在不断发展。分支数量决定了在训练时神经网络所能表达特征的能力。若分支数量太多则影响训练效率,若分支数量太少则影响神经网络的精度等性能。进一步地,即使在分支数量确定的情况下,实施不同操作的分支的不同组合也对神经网络的精度等性能有很大影响。通常,具有多分支结构的神经网络相较于具有单分支结构的神经网络能提供更高的精度,但是具有更低的推理速度,而且往往需要占用更大的内存空间和带宽。
发明内容
根据本公开的第一方面,提供了一种为目标硬件平台构建神经网络的方法,包括:将超网络的基础结构构建为多个块的堆叠,使得所述超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量和参数量满足所述目标硬件平台关于计算量和参数量的要求;以及通过以下操作从所述超网络得到子网络,并将得到的子网络用于所述目标硬件平台:将所述超网络的每个块设置为具有预设最大可用分支数量的多分支块并对每个分支赋予相应的分支权重,将每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于所述目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重,对所述超网络进行第一阶段的训练以使得在所述第一阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和路径权重不变的情况下更新分支权重,并且在所述第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络,对所述中间网络进行第二阶段的训练以使得在所述第二阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在所述第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到子网络,以及通过重参数化的方式将所述子网络的每个多分支块的多个分支合并为一个分支来将所述子网络转换为单分支结构。
根据本公开的第二方面,提供了一种为目标硬件平台构建神经网络的装置,包括超网络构建模块和子网络构建模块。超网络构建模块被配置为将超网络的基础结构构建为多个块的堆叠,使得所述超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量和参数量满足所述目标硬件平台关于计算量和参数量的要求。子网络构建模块被配置为通过以下操作从所述超网络得到子网络,并将得到的子网络用于所述目标硬件平台:将所述超网络的每个块设置为具有预设最大可用分支数量的多分支块并对每个分支赋予相应的分支权重;将每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于所述目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重;对所述超网络进行第一阶段的训练以使得在所述第一阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和路径权重不变的情况下更新分支权重,并且在所述第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络;对所述中间网络进行第二阶段的训练以使得在所述第二阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在所述第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到所述子网络;以及通过重参数化的方式将所述子网络的每个多分支块的多个分支合并为一个分支来将所述子网络转换为单分支结构。
根据本公开的第三方面,提供了一种为目标硬件平台构建神经网络的计算设备,包括:一个或多个处理器;以及存储计算机可执行指令的存储器,所述计算机可执行指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行根据本公开的第一方面的任一实施例所述的为目标硬件平台构建神经网络的方法。
根据本公开的第四方面,提供了一种其上存储有计算机可执行指令的非瞬态存储介质,所述计算机可执行指令在被计算机执行时使得计算机执行根据本公开的第一方面的任一实施例所述的为目标硬件平台构建神经网络的方法。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得更为清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1示意性示出了神经网络模型的示例结构;
图2示意性示出了神经网络的单分支结构与多分支结构的几种示例;
图3是示出了根据本公开的一些实施例的为目标硬件平台构建神经网络的方法的流程图;
图4A和图4B分别是示出了根据本公开的一些实施例的从超网络得到子网络的方法步骤的流程图;
图5A至图5F示意性示出了根据本公开的一些实施例的从超网络的步长(Stride)为1的多分支块训练得到子网络的对应的步长为1的单分支块的一种示例过程;
图6A至图6E示意性示出了根据本公开的一些实施例的从超网络的步长为2的多分支块训练得到子网络的对应的步长为2的单分支块的一种示例过程;
图7A至图7D示意性示出了根据本公开的一些实施例的从超网络的步长为1的多分支块训练得到子网络的对应的步长为1的单分支块的另一种示例过程;
图8A和图8B示意性示出了根据本公开的一些实施例的对子网络进行量化训练的过程,其中图8A示出了步长为1的块的情况,图8B示出了步长为2的块的情况;
图9是示出了根据本公开的一些实施例的为目标硬件平台构建神经网络的装置的示意框图;
图10是示出了根据本公开的一些实施例的为目标硬件平台构建神经网络的计算设备的示意框图。
注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应当注意,除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本公开的示例性方式,而不是穷尽的方式。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
图1示意性示出了卷积神经网络模型的示例结构。通常来讲,卷积神经网络模型可以包括主干(Backbone)和头部(Head)。主干或者说主干网络是用于提取特征的网络,例如mobilenetv2、resnet18、darknet53等。如图1所示,主干可以包括多个阶段(Stage),每个阶段可以包括多个块(Block),每个块可以包括多个层(Layer)。例如,块通常可以包括卷积层、批量归一化(Batch-normalization,BN)层和激活函数(诸如但不限于ReLU)层的组合。应理解,图1中所示的阶段、块、层的数量仅仅是示意性的而非限制性的。头部用于利用所提取的特征进行预测,例如在目标检测任务中头部可以用于解码目标框以预测目标的位置。在一些示例中,神经网络模型还可以包括在主干和头部之间的颈部(Neck),以便更好地利用主干所提取的特征,例如在目标检测任务中颈部可以用于聚合主干所提取的特征以供头部使用。
图2的(1)部分图示了图1中的主干网络的示例单分支结构,其中多个块(…、a、b、c、…)彼此直接堆叠。图2的(2)部分和(3)部分分别图示了图1中的主干网络的示例多分支结构,在图2的(2)部分中从块a到块c包括途经块b的第一分支和途经块b'的第二分支,在图2的(3)部分中从块a到块c包括途经块b的第一分支和不途经任何块的第三分支。通常,具有多分支结构的神经网络(2)、(3)相较于具有单分支结构(1)的神经网络具有更高的精度,但是具有更低的推理速度,而且往往需要占用更大的内存空间。特别是具有多分支结构的神经网络(3)需要将第三分支上的结果暂存下来再与第一分支的结果融合,导致更多的内存占用和更高的带宽。
为了更好地兼容市场上的各种可用芯片以在不同芯片上都能保持优化的性能(例如推理速度等),本申请的发明人着力于改进最简单的卷积神经网络。具体地,本申请的发明人结合了卷积神经网络的单分支结构与多分支结构各自的优点,在用于目标硬件平台的神经网络的搜索和训练过程中采用多分支结构以增加特征提取的多样性从而训练得到精度更高的神经网络,并在部署时通过重参数化的方式将多分支结构转换为单分支结构,以使得训练好的神经网络具有卷积块的直接简单堆叠结构,从而具有提升的推理速度和减少的内存及带宽占用,实现了计算量和参数量的轻量化。特别地,本申请的发明人提供了改进的搜索和训练方法,其能够在用于目标硬件平台的神经网络的搜索和训练过程中合适地确定多分支结构的每个多分支块的最终分支数量及每个分支的具体操作。此外,通过重参数化的方式将多分支结构转换为单分支结构后,神经网络往往是浮点型的,可以对其进行量化操作以符合某些硬件平台的要求和/或进一步减少计算量。本申请的发明人提供了改进的量化训练方法,其在前向传播时遵循转换后的单分支结构以保证量化尺度(Scale)的统一并且在反向传播时遵循转换前的多分支结构进行多分支梯度聚合以进一步提高精度。
下面将结合附图详细描述根据本公开的各种实施例的为目标硬件平台构建神经网络的方法。应注意,本文所述“超网络”和“子网络”都是指主干网络。在后文中,将以mobilenetv2网络架构作为非限制性示例对“超网络”和“子网络”进行说明。另外,本文所述“目标硬件平台”例如可以是但不限于是以中央处理器(Central Processing Unit,CPU)、张量处理器(Tensor Processing Unit,TPU)、图形处理器(Graphics Processing Unit,GPU)或神经网络处理器(Neural network Processing Unit,NPU)为核心运算部件的硬件平台。
图3图示了根据本公开的一些实施例的为目标硬件平台构建神经网络的方法100。方法100首先可以包括根据目标硬件平台关于计算量和参数量的要求构建超网络。具体地,方法100包括在步骤S120处,将超网络的基础结构构建为多个块的堆叠,使得超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量和参数量满足目标硬件平台关于计算量和参数量的要求。换言之,可以将超网络的基础结构构建为多个块的堆叠,使得超网络在所构建的基础结构被融合为单分支结构后,可以在推理时满足目标硬件平台关于计算量和参数量的要求。
本文所述“多个块的堆叠”例如如图2的(1)部分所示,其为卷积块的直接简单堆叠,而没有倒残差结构、SE模块、自注意力机制等复杂结构。过往经验证明,倒残差结构、SE模块和自注意力机制等复杂结构或多或少地会增加网络耗时。此外,本文所述“单分支块”是指具有单个分支的块,并且“多分支块”指具有多个分支的块。本文所述“单路径分支”是指具有单个路径的分支,并且“多路径分支”指具有多个路径的分支。
在一些实施例中,适用于目标硬件平台的最大卷积核可以根据目标硬件平台的规格信息来确定,例如该目标硬件平台能够支持什么尺寸的卷积核等。不同芯片所能提供的硬件支持可以不同,不同芯片可以被定制化设计成提供不同感受野。在一些实施例中,适用于目标硬件平台的最大卷积核可以是通过以下操作确定的:使相同的测试神经网络模型分别在包括多种不同候选尺寸中的每种候选尺寸的卷积核的情况下在目标硬件平台上进行测试,以得到与每种候选尺寸对应的性能指标;以及选择与满足预设性能指标要求的性能指标对应的候选尺寸中的最大候选尺寸的卷积核作为适用于目标硬件平台的最大卷积核。卷积核的尺寸通常为奇数。这是因为相较于偶数,奇数更便于进行补边(Padding),易于找到卷积锚点,效率更高。测试神经网络模型可以是任何合适的神经网络模型,只要控制除了卷积核尺寸不同以外其余结构都相同即可。在一些示例中,测试神经网络模型可以是通过将上述超网络与可选的颈部、头部组装在一起得到的神经网络模型。性能指标例如可以是测试神经网络模型的通过在目标硬件平台上进行测试而确定的计算效率、延迟(Latency)、精度增益等性能参数中的一者或多者(例如,多者的加权组合)。可以根据实际需要具体设置预设性能指标要求。
作为非限制性示例,假设卷积核的候选尺寸包括7×7、5×5、3×3、1×1,如果7×7卷积核能实现2%的精度增益但是有12秒的延迟,5×5卷积核能实现1%的精度增益但是有4秒的延迟,3×3卷积核能实现0.5%的精度增益但是有1秒的延迟,1×1卷积核能实现0.1%的精度增益但是有0.5秒的延迟,那么由于精度增益的些微不足可以通过补充训练数据量来弥补,那么对于本领域技术人员而言,延迟可能是更为关注的性能指标,因而可以将预设性能指标要求设置为“延迟不超过2秒”,则与满足预设性能指标要求的性能指标对应的候选尺寸中的最大候选尺寸是3×3,于是将3×3卷积核作为适用于目标硬件平台的最大卷积核。在这种情况下,超网络的每个块被设置为包括被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径分支的单分支块意味着,超网络的每个块被设置为只有单个分支,并且该单个分支只进行3×3卷积操作这一种卷积操作,这也意味着超网络将在推理时只进行3×3卷积操作。
目标硬件平台关于计算量和参数量的要求可以由目标硬件平台上的计算资源和内存空间决定。可以根据具体需要设置在什么样的情况下满足目标硬件平台关于计算量和参数量的要求。在一些实施例中,步骤S120中的使得超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量和参数量满足目标硬件平台关于计算量和参数量的要求可以包括:使得超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量与目标硬件平台允许的最大计算量之差在预设计算量容差范围内;并且使得超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的参数量与目标硬件平台允许的最大参数量之差在预设参数量容差范围内。容易理解,当没有达到目标硬件平台允许的最大计算量和最大参数量时,要求计算量之差/参数量之差落入相应容差范围是为了避免未充分利用目标硬件平台上的计算资源和内存空间;当超过目标硬件平台允许的最大计算量和最大参数量时,要求计算量之差/参数量之差落入相应容差范围可以是提前考虑了后续量化操作对模型计算量和参数量的影响,因此只要浮点模型的计算量和参数量超出目标硬件平台允许的最大计算量和最大参数量的程度是可容许的,即其对应的量化模型的计算量和参数量可由目标硬件平台支持,那么这也是满足目标硬件平台关于计算量和参数量的要求的。可见,提供预设计算量容差范围和预设参数量容差范围有助于充分利用目标硬件平台上的计算资源和内存空间。
网络结构参数是用于限定神经网络的结构的参数,包括但不限于主干深度(其指主干所包括的阶段的数量)、阶段深度(其指阶段所包括的块的数量)、通道宽度(其指块所包括的通道数量)、分支宽度(其指块所包括的分支的数量)、卷积核尺寸(其定义块所执行的卷积操作)等。本领域技术人员明白,对于一个结构已知的神经网络,只要通过一次前向传播就能测试出该神经网络对应的计算量和参数量。由于本公开最终会通过重参数化的方式将利用多分支训练的神经网络转换为单分支结构,因此在考虑最终运行时实际使用的最大计算量/最大参数量时仅需考虑超网络的每个块被设置为单分支块并且包括被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况。在这种情况下构建超网络的基础结构时,可以根据目标硬件平台关于计算量和参数量的要求具体进一步设计超网络的除分支宽度(已确定为1)和卷积核尺寸(已确定为适用于目标硬件平台的最大卷积核)之外的其它网络结构参数,例如主干深度、阶段深度、通道宽度等,以使得具有所构建的基础结构的超网络在通过前向传播所测试出的计算量和参数量满足目标硬件平台关于计算量和参数量的要求。例如,继续以前述示例为例,假设适用于目标硬件平台的最大卷积核是3×3卷积核,针对mobilenetv2网络架构可以设计7个阶段并且总共17个块直接彼此堆叠,每个块可以视为3×3卷积层、BN层和激活函数(诸如但不限于ReLU)层的组合,而且在这个示例中,在mobilenetv2的17个块中,有5个块用于降采样并且步长为2,其余12个块的步长为1。可以理解,在用于降采样的块中设置步长为2仅仅是示例性的而非限制性的,其步长也可以设置为3或更大。
在步骤S120确定好超网络的基础结构之后,方法100还包括在步骤140处从超网络得到子网络以及在步骤S160处将得到的子网络用于目标硬件平台。
在步骤140中,除分支宽度以及每个分支所执行的具体操作(简称为分支操作)之外,超网络的基础结构保持为在步骤S120中确定的那样不变。换言之,步骤140所得到的子网络与步骤120所构建的超网络的区别只在于每个块的分支宽度和每个分支的分支操作,而步骤S140正是用于在训练网络的同时搜索合适分支宽度和分支操作的步骤。
例如,如图4A所示,步骤S140可以包括在步骤S1402处,将超网络的每个块设置为具有预设最大可用分支数量的多分支块,并对每个分支赋予相应的分支权重。
可以根据具体需要合理设置预设最大可用分支数量。由于分支数量越大则训练时占用的内存空间越多,导致每次训练的批量处理大小(Batch Size)受到限制,而批量处理大小如果太小则降低精度。因此,在一些实施例中,预设最大可用分支数量可以被设置为使得能够实现预设批量处理大小的最大分支数量。例如,在本文的mobilenetv2说明性示例中,预设批量处理大小可以被设置为64,预设最大可用分支数量可以相应被设置为5。
如图4A所示,步骤S140还包括在步骤S1404处,将每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重。
卷积操作实际上例如是将输入x线性变换为输出y=wx+b,其中w为卷积权重(Weight)并且b为卷积偏置(Bias)。在一些情况下b例如可以为0,即不存在卷积偏置。“不进行卷积操作”可以视为一种特殊情况的卷积操作,其相当于恒等映射操作(在w=1且b=0时y=x),该恒等映射操作可以视为以单位阵为卷积核的特殊1×1卷积。因此,所述不同操作可以视为不同尺度的卷积操作,并且较小尺度的卷积操作可以等价转换为较大尺度的卷积操作,例如可以通过将所述较小尺度的卷积操作所对应的线性变换参数矩阵(通常指卷积权重矩阵,以及在一些情况下还包括卷积偏置矩阵)用零补边至所述较大尺度以将所述较小尺度的卷积操作等价转换为所述较大尺度的卷积操作,下文将对此进行更具体的描述。
在一些实施例中,多路径分支可以包括:被配置为实施通过适用于目标硬件平台的最大卷积核进行的第一卷积操作和批量归一化操作的第一路径;被配置为实施通过小于最大卷积核的较小卷积核进行的第二卷积操作和批量归一化操作的第二路径;以及被配置为实施批量归一化操作的第三路径。在一些实施例中,对用于实现降采样的块所设置的多路径分支不包括被配置为实施批量归一化操作的第三路径。之所以对于用于降采样的块的每个分支不设置第三路径是因为单纯实施BN操作无法实现降采样。例如,继续以前述示例为例,假设适用于目标硬件平台的最大卷积核是3×3卷积核,那么对于mobilenetv2的12个步长为1的块中的每个块的每个分支,可以设置以下三个路径:“3×3卷积操作+BN操作”的第一路径、“1×1卷积操作+BN操作”的第二路径、“BN操作”的第三路径;对于mobilenetv2的5个步长为2的块中的每个块的每个分支,可以设置以下两个路径:“3×3卷积操作+BN操作”的第一路径、“1×1卷积操作+BN操作”的第二路径。由此,整个mobilenetv2超网络共计17×5=85个分支,共计12×5×3+5×5×2=230个路径。
可以理解,如果适用于目标硬件平台的最大卷积核是5×5卷积核,则对于mobilenetv2的12个步长为1的块中的每个块的每个分支,可以设置以下四个路径:“5×5卷积操作+BN操作”的第一路径、“3×3卷积操作+BN操作”的第二路径、“1×1卷积操作+BN操作”的第三路径、“BN操作”的第四路径;对于mobilenetv2的5个步长为2的块中的每个块的每个分支,可以设置以下三个路径:“5×5卷积操作+BN操作”的第一路径、“3×3卷积操作+BN操作”的第二路径、“1×1卷积操作+BN操作”的第三路径。依次类推,可以类似地,考虑适用于目标硬件平台的最大卷积核是7×7卷积核或更大卷积核时的情形。当存在多种小于适用于目标硬件平台的最大卷积核的较小卷积核时,可以选择该多种较小卷积核中的一些或全部来为分支设计候选操作路径。为便于讨论,以下仍以适用于目标硬件平台的最大卷积核是3×3卷积核作为非限制性示例进行说明。
例如,参考图5A,考虑mobilenetv2超网络中的12个步长为1的块中的每个块被设置为具有5个分支的多分支块,并且每个分支被赋予相应的分支权重αf(f=1,2,3,4,5,f是分支的编号)。另外,每个分支被设置为具有被配置为实施不同操作的3个路径的多路径分支,这3个路径分别被配置为实施3×3卷积操作、1×1卷积操作、不进行卷积操作(相当于恒等映射操作,该恒等映射操作可以视为以单位阵为卷积核的特殊1×1卷积),1×1卷积操作和恒等映射操作都可等价转换为3×3卷积操作,并且每个路径被赋予相应的路径权重βfr(r=1,2,3,r是路径的编号)。
还例如,参考图6A,考虑mobilenetv2超网络中的5个步长为2的块中的每个块被设置为具有5个分支的多分支块,并且每个分支被赋予相应的分支权重αf(f=1,2,3,4,5,f是分支的编号)。另外,每个分支被设置为具有被配置为实施不同操作的2个路径的多路径分支,这2个路径分别被配置为实施3×3卷积操作和1×1卷积操作,1×1卷积操作可等价转换为3×3卷积操作,并且每个路径被赋予相应的路径权重βfr(r=1,2,r是路径的编号)。
如图5A和图6A所示,在每个分支的各路径中在卷积操作之后分别进行相应的BN操作,然后才将各路径的输出融合(融合操作如“+”所示),而不是在将各路径的卷积操作结果融合之后再统一进行BN操作。这是因为BN操作主要是为了进行数据统计(归一化),而不同尺度的卷积操作结果所处的值域可能是不一样的。出于说明目的,假设3×3卷积操作结果所处的值域是[-1,1],1×1卷积操作结果所处的值域是[-100,100],如果先将各路径的卷积操作结果融合之后再统一进行BN操作则会导致3×3卷积操作结果基本没有贡献,但是如果在每个分支的各路径中在卷积操作之后分别进行相应的BN操作以将卷积操作结果归一化然后再将各路径的归一化卷积操作结果融合,则可以充分利用不同尺度的卷积操作多样化地提取特征。另外,还如图5A和图6A所示,激活操作(图中非限制性地图示为ReLU层)放在将所有分支的输出融合的融合操作后进行,而既没有放在每个分支的各路径内的BN操作后,也没有放在每个分支内的将所有路径的输出融合的融合操作后,这是因为激活操作往往是非线性操作,将其放入各分支后会导致无法将多分支合并为单分支。通过将激活操作在将所有分支的输出融合的融合操作后进行,可以保证对每个分支具有共同的评判标准,换言之,可以保证对每个分支具有同样量级的输入。
接下来,返回参考图4A,步骤S140还包括在步骤S1406处,对超网络进行第一阶段的训练,以使得在第一阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重,并通过验证集在固定卷积权重和路径权重不变的情况下更新分支权重,并且在第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络。应注意,在通过验证集更新分支权重时,卷积权重不变意味着卷积层中的权重固定,而BN层中的参数是不固定的,BN层会正常统计每批数据的方差和均值以用于归一化。
所述“训练”可以采用任何合适的神经网络训练方式,包括但不限于有监督学习、自监督学习、无监督学习等,在此不作特别限制。可以将训练数据按照合适比例划分为训练集和验证集,并将训练集用于更新卷积权重,将验证集用于更新分支权重,以将卷积权重和分支权重相互解耦并分时进行更新。可以采用任何合适类型的训练数据,例如图像、音频等。此处使用的训练数据可以来自任何现有的数据库(例如但不限于ImageNet数据库,其包括约100万训练集和5万验证集),而无需与下游任务相关(此时下游任务甚至可以是未知的)。当然,在一些情况下,也可以使训练数据与下游任务相关,例如可以与下游任务的数据的分布相同或相似,这在一定程度上可以提高精度。例如,当已知下游任务为目标检测任务时,可以将标注后的训练图像划分为训练集和验证集来分时更新卷积权重和分支权重。
在第一阶段,卷积权重、分支权重、路径权重中的每一者的初始值可以根据需要任意设置,例如可以采用随机初始化、全零初始化等方式。另外还需注意的是,虽然在步骤S1406中主要提到的网络参数是卷积权重,但是可以理解,在存在卷积偏置的情况下,还可以在更新卷积权重的同时更新卷积偏置,也就是说,步骤S1406可以相应调整为:对超网络进行第一阶段的训练,以使得在第一阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重和卷积偏置,并通过验证集在固定卷积权重及卷积偏置和路径权重不变的情况下更新分支权重,并且在第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络。由于在存在卷积偏置的情况下卷积偏置的更新可以跟随卷积权重一起进行,因此后文不再特意描述卷积偏置以免模糊本公开的重点。
在一些实施例中,可以通过松弛优化的方式融合每个多分支块的各个分支的前向输出以得到该多分支块的前向输出,该多分支块的前向输出通过下式计算:
其中,i、j分别代表该多分支块的输入节点和输出节点,x代表该多分支块的输入,代表该多分支块的分支集合,o、o’分别代表该多分支块的分支集合中的相应分支,代表该多分支块的o分支的分支权重,代表该多分支块的o’分支的分支权重,o(x)代表该多分支块的o分支的前向输出,代表该多分支块的前向输出。例如,o(x)=w o x+ b o ,w o 是o分支的卷积权重,b o 是o分支的卷积偏置。由此,每个多分支块的前向输出可以等于各分支的前向输出的连续松弛优化之和。通过这样计算前向输出可以相应计算损失函数,然后可以利用梯度更新方法(例如梯度下降法)来分时更新卷积权重和分支权重。
当然,以上松弛优化的融合方式是示例性的而非限制性的,也可以采取其它合适的融合方式融合每个多分支块的各个分支的前向输出以得到该多分支块的前向输出,例如但不限于直接按照分支权重加权融合(例如,)、或者按照其它方式归一化分支权重后按照归一化的分支权重加权融合(例如,)等。一般来讲,类似于softmax形式的融合方式相较于其他形式可以是更建议的,因为类似于softmax形式的融合方式通常不会导致解不连续和离散的目标函数求导,从而具有较好的效果。
例如,参考图5A,对于mobilenetv2超网络中的步长为1的某个多分支块,当第一阶段的训练完成时,α1=0.41,α2=0.53,α3=0.26,α4=0.79,α5=0.88。当预设分支权重要求为大于0.5时,对于该多分支块保留第2、4、5分支而丢弃第1、3分支,得到的中间网络如图5B所示。
还例如,参考图6A,对于mobilenetv2超网络中的步长为2的某个多分支块,当第一阶段的训练完成时,α1=0.61,α2=0.13,α3=0.75,α4=0.49,α5=0.32。当预设分支权重要求为大于0.5时,对于该多分支块保留第1、3分支而丢弃第2、4、5分支,得到的中间网络如图6B所示。
由此,在第一阶段的训练完成后,中间网络的每个块所包括的分支数量可能是不同的。
再次返回参考图4A,步骤S140还包括在步骤S1408处,对中间网络进行第二阶段的训练以使得在第二阶段的每次迭代内,通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重,并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到子网络。
由于分支操作对网络精度的影响可能相比于分支数量对网络精度的影响更高,因此在一些实施例中,第二阶段的训练周期(Epoch)的数量可以比第一阶段的训练周期的数量多,例如可以是第一阶段的训练周期的数量的两倍。
所述“训练”可以采用任何合适的神经网络训练方式,包括但不限于有监督学习、自监督学习、无监督学习等,在此不作特别限制。这里使用的训练集和验证集可以分别与步骤S1406中的训练集和验证集相同。同样可以将训练数据按照合适比例划分为训练集和验证集,并将训练集用于更新卷积权重,将验证集用于更新路径权重,以将卷积权重和路径权重相互解耦并分时进行更新。可以采用任何合适类型的训练数据,例如图像、音频等。此处使用的训练数据可以来自任何现有的数据库(例如但不限于ImageNet数据库),而无需与下游任务相关(此时下游任务甚至可以是未知的)。当然,在一些情况下,也可以使训练数据与下游任务相关,例如可以与下游任务的数据的分布相同或相似,这在一定程度上可以提高精度。例如,当已知下游任务为目标检测任务时,可以将标注后的训练图像划分为训练集和验证集来分时更新卷积权重和路径权重。
在第二阶段,卷积权重的初始值可以为第一阶段完成时的值,分支权重可以固定为第一阶段完成时的值,而路径权重的初始值可以根据需要任意设置,例如可以采用随机初始化、全零初始化等方式,或者可以设置为与第一阶段中相同的值。
在一些实施例中,可以通过松弛优化的方式融合每个分支的各个路径的前向输出以得到该分支的前向输出,该分支的前向输出通过下式计算:
其中,k、m分别代表该分支的输入节点和输出节点(例如,图5B和图6B中,5个分支的输入节点分别为k1-k5,输出节点分别为m1-m5),u代表该分支的输入,代表该分支的路径集合,p、p’分别代表该分支的路径集合中的相应路径,代表该分支的p路径的路径权重,代表该分支的p’路径的路径权重,p(u)代表该分支的p路径的前向输出,代表该分支的前向输出。例如,p(u)=w p x+b p ,w p 是p路径的卷积权重,b p 是p路径的卷积偏置。由此,每个多分支块的每个分支的前向输出可以等于该分支的各路径的前向输出的连续松弛优化之和,该多分支块的前向输出可以等于该多分支块的各分支的前向输出的连续松弛优化之和。通过这样计算前向输出可以相应计算损失函数,然后可以利用梯度更新方法(例如梯度下降法)来分时更新卷积权重和路径权重。最终,在第二阶段完成时,对于每个分支仅保留路径权重最大的那个路径作为该分支的最终分支操作,而丢弃其余路径。
当然,以上松弛优化的融合方式是示例性的而非限制性的,也可以采取其它合适的融合方式融合每个分支的各个路径的前向输出以得到该分支的前向输出,例如但不限于直接按照路径权重加权融合(例如,)、或者按照其它方式归一化路径权重后按照归一化的路径权重加权融合(例如,)等。一般来讲,类似于softmax形式的融合方式相较于其他形式可以是更建议的,因为类似于softmax形式的融合方式通常不会导致解不连续和离散的目标函数求导,从而具有较好的效果。
例如,参考图5B,对于mobilenetv2中间网络中的步长为1的某个多分支块,当第二阶段的训练完成时,对于第一阶段留下的第2分支的每个路径有β21=0.9,β22=0.7,β23=0.3,因此对于第一阶段留下的第2分支仅保留被配置为实施“3×3卷积操作+BN操作”的第一路径,类似地其余两个分支分别保留被配置为实施“1×1卷积操作+BN操作”的第二路径和被配置为实施“BN操作”的第三路径,得到的子网络如图5C所示。
还例如,参考图6B,对于mobilenetv2中间网络中的步长为2的某个多分支块,当第二阶段的训练完成时,对于第一阶段留下的第1分支的每个路径有β11=0.8,β12=0.4,因此对于第一阶段留下的第1分支仅保留被配置为实施“3×3卷积操作+BN操作”的第一路径,类似地其余一个分支保留被配置为实施“1×1卷积操作+BN操作”的第二路径,得到的子网络如图6C所示。
由此,在第二阶段的训练完成后,子网络的每个块所包括的分支数量可能是不同的,并且每个分支的分支操作可能是不同的。
仍参考图4A,步骤S140还包括在步骤S1410处,通过重参数化的方式将步骤S1408所得到的子网络的每个多分支块的多个分支合并为一个分支来将子网络转换为单分支结构。具体地,可以将该多分支块合并为被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径单分支块。由于多分支结构在部署时缓存和时长都相较于单分支结构更大,因此从硬件优化的角度出发,单分支结构可以是更好的选择。
在一些实施例中,将子网络转换为单分支结构可以包括对于子网络中的每个多分支块:如果该多分支块包括具有被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的第一卷积操作和批量归一化操作的第一路径的第一分支,则合并第一卷积操作和批量归一化操作以得到第一卷积权重矩阵,所述第一卷积权重矩阵的尺寸对应于所述最大卷积核的尺寸;如果该多分支块包括具有被配置为实施通过小于所述最大卷积核的较小卷积核进行的第二卷积操作和批量归一化操作的第二路径的第二分支,则合并第二卷积操作和批量归一化操作以得到第二卷积权重矩阵,所述第二卷积权重矩阵被用零补边以使得补边后的尺寸对应于所述最大卷积核的尺寸;如果该多分支块包括具有被配置为实施批量归一化操作的第三路径的第三分支,则合并恒等映射操作和批量归一化操作以得到第三卷积权重矩阵,所述第三卷积权重矩阵被用零补边以使得补边后的尺寸对应于所述最大卷积核的尺寸;根据该多分支块中的所述第一分支的第一数量、所述第二分支的第二数量和所述第三分支的第三数量将所述第一数量的所述第一卷积权重矩阵、所述第二数量的所述第二卷积权重矩阵和所述第三数量的所述第三卷积权重矩阵合并为合并卷积权重矩阵,所述合并卷积权重矩阵的尺寸对应于所述最大卷积核的尺寸;将该多分支块替换为包括被配置为实施通过所述最大卷积核进行的卷积操作的单路径分支的单分支块,并根据所述合并卷积权重矩阵设置该单分支块的卷积权重。在一些示例中,还可以进一步根据该多分支块中的所述第一分支、所述第二分支和所述第三分支中的每一者的分支权重,将第一数量的所述第一卷积权重矩阵、第二数量的所述第二卷积权重矩阵和第三数量的所述第三卷积权重矩阵按照相应的分支权重合并为合并卷积权重矩阵,例如但不限于直接按照分支权重加权合并,或者按照松弛优化方式或其它方式归一化分支权重后按照归一化的分支权重加权合并。
卷积操作和BN操作的合并例如可以描述如下。
对于卷积层,可以假设一个卷积核的权重为W并且偏置为B(W、B对于一个通道而言可以是二维向量,对于具有多个通道的卷积层而言可以是三维向量),卷积过程就是利用卷积核在卷积层的输入特征图中滑窗计算,假设W中一个元素为w,B中对应一个元素为b,输入特征图中对应一个元素为x,则卷积层输出中对应一个元素y conv =wx+b。
对于BN层,需要计算在一个微批量处理(Minibatch)中元素x的均值和方差,然后对于x需要减去均值除以标准差,最后利用尺度参数、偏移参数进行仿射变换即可得到最终的BN输出,,其中,,是出于数值稳定性目的而被添加到方差的常数。
例如,参考图5C,对于mobilenetv2子网络中的步长为1的某个多分支块,该多分支块包括三个分支,这三个分支的分支操作分别为“3×3卷积操作+BN操作”、“1×1卷积操作+BN操作”和“BN操作”。如图5D所示,3×3卷积的3×3卷积权重矩阵在3×3卷积操作与BN操作融合后变为第一卷积权重矩阵,1×1卷积的1×1卷积权重矩阵在1×1卷积操作与BN操作融合并且用零补边后变为第二卷积权重矩阵(替代地,也可以先用零补边再与BN操作融合),恒等映射的特殊1×1卷积权重矩阵(单位阵)在恒等映射操作与BN操作融合并且用零补边后变为第三卷积权重矩阵(替代地,也可以先用零补边再与BN操作融合)。最后,将三者合并得到转换后的单分支块的卷积权重。
可以理解,虽然图示的多分支块包括一个“3×3卷积操作+BN操作”第一分支、一个“1×1卷积操作+BN操作”第二分支和一个“BN操作”第三分支,但这仅仅是示例性的而非限制性的。在一个多分支块中,第一分支、第二分支和第三分支中的每一者的数量不一定为1,也可能为0或者大于1,因此可以将该多分支块的所有分支的卷积权重矩阵都合并在一起。假设该多分支块的第一分支集合为并且第一分支集合中的第一分支v具有分支权重和,该多分支块的第二分支集合为并且第二分支集合中的第二分支m具有分支权重和,该多分支块的第三分支集合为并且第三分支集合中的第三分支n具有分支权重和。在一些实施例中,。在一些实施例中,。图5E类似地示出了关于卷积偏置的情况,在此不再赘述。由此,图5C中的多分支块被合并为图5F中的单分支块。
还例如,参考图6C,对于mobilenetv2子网络中的步长为2的某个多分支块,该多分支块包括两个分支,这两个分支的分支操作分别为“3×3卷积操作+BN操作”、“1×1卷积操作+BN操作”。如图6D所示,3×3卷积的3×3卷积权重矩阵在3×3卷积操作与BN操作融合后变为第一卷积权重矩阵,1×1卷积的1×1卷积权重矩阵在1×1卷积操作与BN操作融合并且用零补边后变为第二卷积权重矩阵(替代地,也可以先用零补边再与BN操作融合),最后将二者合并得到转换后的单分支块的卷积权重。图6D还类似地示出了关于卷积偏置的情况,在此不再赘述。由此,图6C中的多分支块被合并为图6E中的单分支块。
替代地,在一些实施例中,还可以通过以下操作从超网络得到子网络。如图4B所示,步骤S140的替代实现方式S140’包括:在步骤S1402’处,将超网络的每个块设置为具有预设最大可用分支数量的多分支块,将该多分支块的每个分支设置为被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径分支,并对每个分支赋予相应的分支权重;在步骤S1404’处,对超网络进行第一阶段的训练以使得在第一阶段的每次迭代内通过训练集在固定分支权重不变的情况下更新卷积权重,并通过验证集在固定卷积权重不变的情况下更新分支权重,并且在第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络;在步骤S1406’处,将中间网络的每个块的每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重;在步骤S1408’处,对中间网络进行第二阶段的训练以使得在第二阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重,并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到子网络;以及在步骤S1410’处,通过重参数化的方式将子网络的每个多分支块的多个分支合并为一个分支来将子网络转换为单分支结构。
图4B所示的步骤S140’与图4A所示的步骤S140的最大区别在于,对于图4B所示的步骤S140’,在第一阶段的训练前直接将每个分支设置为被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径分支,然后在第一阶段的训练与第二阶段的训练之间再将已确定分支数量的多分支块的每个分支设置为多路径分支。相比之下,图4B所示的步骤S140’可以有效降低在第一阶段的训练期间对内存空间的占用。除此之外,步骤S140’可以类似于步骤S140,在此不再赘述。
例如,图7A至图7D图示了利用步骤S140’从超网络的步长为1的多分支块得到子网络的对应的步长为1的单分支块的过程。可以理解,从超网络的用于降采样的多分支块得到子网络的对应的用于降采样的单分支块的过程是类似的,在此不再额外赘述。如图7A所示,对于mobilenetv2超网络中的步长为1的某个多分支块,将每个分支都设置为被配置为实施“3×3卷积操作+BN操作”的单路径分支。当第一阶段的训练完成时,α1=0.51,α2=0.63,α3=0.96,α4=0.19,α5=0.38。当预设分支权重要求为大于0.5时,对于该多分支块保留第1、2、3分支而丢弃第4、5分支,并且将保留的第1、2、3分支中的每一者设置为包括“3×3卷积操作+BN操作”的路径、“1×1卷积操作+BN操作”的路径和“BN操作”的路径的多路径分支,得到的中间网络如图7B所示。当第二阶段的训练完成时,对于该多分支块的第1分支保留“1×1卷积操作+BN操作”的路径,对于该多分支块的第2分支保留“3×3卷积操作+BN操作”的路径,对于该多分支块的第3分支保留“BN操作”的路径,得到的子网络如图7C所示。最后,通过重参数化的方式将图7C的子网络转换为单分支结构,如图7D所示。
以上通过步骤S140或步骤S140’得到的具有单分支结构的子网络是浮点模型(例如,fp32)。但是,很多硬件平台要求int8以下(例如,int8、int4、int2等)的整数模型。从fp32浮点模型到int8整数模型这样的较高位的量化可能问题不大,直接利用训练后量化(Post-training Quantization,PTQ)进行校准即可。然而,对于更低位的量化而言将面临更大的精度浮动,在这种情况下PTQ可能是不够的,而需要进行量化训练。
量化操作往往涉及两个参数,量化尺度s和量化偏移z。当输入为x时,量化操作结果y QAT =x/s+z。由于在量化训练时,已经没有了多分支结构,因而在前向传播和反向传播时都遵循单分支结构,则量化后的网络精度将会由于损失的多分支的表达能力而下降。但是,如果先对多分支结构进行量化训练再转换为单分支结构以求尽可能保留多分支的表达能力,则多分支块的不同分支的量化尺度s不一致会导致量化误差变大,甚至很可能因为多分支块的不同分支的量化尺度s相差巨大而导致量化尺度s较小的分支的贡献丢失。
为此,本公开进一步提出了一种改进的量化训练方法,其直接训练已经转换为单分支结构的子网络,但是以转换前的多分支结构作为先验,从而在前向传播时遵循转换后的单分支结构以保证量化尺度的统一并且在反向传播时遵循转换前的多分支结构进行多分支梯度聚合以进一步提高精度。具体地,在一些实施例中,方法100可以在步骤S140与步骤S160之间进一步包括对转换后的子网络(具有单分支结构)进行量化训练,所述量化训练包括在每次迭代内:按照转换后的子网络的单分支结构进行前向传播;按照转换前的子网络的多分支结构进行反向传播,其中当反向传播至转换前的子网络的每个多分支块时,基于与该多分支块的各个分支相关联的权重计算缩放比例以用于缩放梯度,并通过缩放后的梯度来更新转换后的所述子网络中与该多分支块对应的单分支块的卷积权重。在这里,量化训练所使用的训练数据可以与之前步骤S140、S140’使用的训练数据相同。所采用的梯度更新方法例如可以是梯度下降法等。
这样,在一方面,由于量化训练在前向传播时遵循转换后的子网络的单分支结构,因此每个单分支块具有与单一分支对应的卷积权重w、卷积偏置b、量化尺度s和量化偏移z,故而无需担心多分支情况下多分支块的不同分支的量化尺度s不一致会导致量化误差变大、甚至不同分支的量化尺度s相差巨大而导致量化尺度s较小的分支的贡献丢失的问题;在另一方面,由于量化训练在反向传播时遵循转换前的子网络的多分支结构,因此保留了多分支的表达能力,将多分支块的不同分支的贡献按照相应权重结合到梯度中,并使用结合有各分支贡献的梯度来更新该多分支块所对应的量化模型中的单分支块的卷积权重wq、卷积偏置bq、量化尺度sq和量化偏移zq等参数。
在一些实施例中,基于与该多分支块的各个分支相关联的权重计算缩放比例包括将缩放比例计算为与该多分支块的各个分支相关联的权重的平方和。在一些实施例中,基于与该多分支块的各个分支相关联的权重计算缩放比例包括将缩放比例计算为与该多分支块的各个分支相关联的权重的绝对值之和。在一些实施例中,基于与该多分支块的各个分支相关联的权重计算缩放比例包括将缩放比例计算为与该多分支块的各个分支相关联的权重的指数函数和(例如但不限于e指数和)。
在一些实施例中,与该多分支块的各个分支相关联的权重是以下之一:该多分支块的该分支的分支权重;该多分支块的该分支的卷积权重的均值。当与该多分支块的各个分支相关联的权重是该多分支块的该分支的分支权重α时,用于缩放梯度的该缩放比例对于该块的所有通道是一样的。当与该多分支块的各个分支相关联的权重是该多分支块的该分支的卷积权重(即,具有多分支结构的子网络在第二阶段完成时的卷积权重)的均值时,用于缩放梯度的该缩放比例对于该块的所有通道可以是不同的,也就是说,可以对不同通道按不同缩放比例缩放梯度并进行量化模型参数更新,这有利于促使量化模型的精度尽可能地接近原来浮点模型的精度。在一些实施例中,当该多分支块的该分支是具有被配置为实施批量归一化操作的第三路径的第三分支时,与该多分支块的该分支相关联的权重可以被设置为单位阵。
例如,如图8A所示,对具有单分支结构的mobilenetv2子网络进行量化训练,所述量化训练包括在每次迭代内:按照转换后的子网络的单分支结构进行前向传播(如图8A左侧所示);按照转换前的子网络的多分支结构进行反向传播(如图8A右侧所示),其中当反向传播至转换前的子网络的图示多分支块(即如图5C所示的多分支块)时,基于与该多分支块的各个分支相关联的权重计算缩放比例以用于缩放梯度,并通过缩放后的梯度来更新转换后的所述子网络中与该多分支块对应的单分支块(即如图5F所示的单分支块)的卷积权重。例如,在按照分支权重计算缩放比例的情况下,缩放比例可以为,其中α2、α4分别是第2、4分支的分支权重;在按照卷积权重计算缩放比例的情况下,对于每个通道c可以有缩放比例,其中、分别是通道c的第2、4分支的卷积权重的均值;缩放后的梯度可以为,其中是损失函数。在按照分支权重计算缩放比例的情况下,可以在前述第一阶段的训练完成(即多分支结构的每个块的分支数和每个分支的分支权重确定)后并在量化训练前的任意时刻确定缩放比例;在按照卷积权重计算缩放比例的情况下,可以在前述第二阶段的训练完成(即多分支结构的每个块的分支数和每个分支的卷积权重确定)后并在量化训练前的任意时刻确定缩放比例。量化训练也是根据正常的损失函数计算,比对的基本值依然是标注的真实值,这里只是利用缩放比例强化了反向传播的梯度,对量化的网络的前向传播的计算过程没有影响。
图8A图示的是步长为1的情况。图8B图示了步长为2的情况,其中按照转换后的子网络的单分支结构进行前向传播(如图8B左侧所示);按照转换前的子网络的多分支结构进行反向传播(如图8B右侧所示),其中当反向传播至转换前的子网络的图示多分支块(即如图6C所示的多分支块)时,基于与该多分支块的各个分支相关联的权重计算缩放比例以用于缩放梯度,并通过缩放后的梯度来更新转换后的所述子网络中与该多分支块对应的单分支块(即如图6E所示的多分支块)的卷积权重。例如,在按照分支权重计算缩放比例的情况,缩放比例可以为,其中α1、α3分别是第1、3分支的分支权重;在按照卷积权重计算缩放比例的情况,对于每个通道c可以有缩放比例,其中、分别是通道c的第1、3分支的卷积权重的均值;缩放后的梯度可以为。
在一些实施例中,方法100还可以包括使得到的子网络作为主干,并与头部组装成用于目标硬件平台的下游任务的神经网络模型;利用基于所述下游任务的训练数据训练神经网络模型以更新主干和头部二者的参数,从而获得用于所述下游任务的经训练的神经网络模型。头部例如可以是分类器或检测头等。在一些示例中,可以替代地包括:使得到的子网络作为主干,并与颈部、头部组装成神经网络模型;利用基于所述下游任务的训练数据训练神经网络模型以更新主干、颈部和头部的参数,从而获得用于所述下游任务的经训练的神经网络模型。由于子网络已经过充分训练,因此在用基于所述下游任务的训练数据进行训练时,只需要较少的训练时间就能将整个神经网络模型训练好。
当子网络在第一阶段的训练、第二阶段的训练、量化训练期间都采用无标签数据进行自监督训练时,得到的子网络能够更好地和目标硬件平台可能执行的各种下游任务做到同源以兼容各种下游任务,最多只需在组装成神经网络模型时用基于下游任务的有标签数据进行参数微调即可。由于得到的子网络很好地适配于目标硬件平台,因此在目标硬件平台上部署用得到的子网络构建的神经网络模型以执行各种不同下游任务(诸如但不限于图像分类、目标检测、图像分割等)时,模型的鲁棒性更好,推理速度更快,精度更高。
子网络在第一阶段的训练、第二阶段的训练、量化训练期间采用的训练数据可以与下游任务有关或无关。当子网络在第一阶段的训练、第二阶段的训练、量化训练中的至少一者期间采用基于下游任务的训练数据(其既可以用作无标签数据以进行自监督训练,也可以用作有标签数据以进行有监督训练,等等)时,可以进一步提高精度。
在目标硬件平台上部署用得到的子网络构建的神经网络模型有利于提高硬件平台的计算利用率和成功率,相较于在目标硬件平台上部署常规神经网络模型,可以使目标硬件平台在同等计算量的情况下具有更低的功耗。
作为非限制性示例,当目标硬件平台被配置用于执行的下游任务已知为目标检测(例如,行人检测)时,可以使得到的子网络作为主干,并与可选的颈部、头部组装成神经网络模型,并利用已对目标(例如,行人)的位置进行标注的用于目标检测的训练图像来训练神经网络模型以更新主干、可选的颈部和头部的参数,从而获得用于目标检测的经训练的神经网络模型。由此,当接收到待检测的图像时,可以将所接收的待检测的图像输入用于目标检测的经训练的神经网络模型,以输出该图像中的目标(例如,行人)的位置。由于根据本公开的从子网络得到的经训练的神经网络模型良好地适配于目标硬件平台,因此其在进行目标检测时推理速度快且精度高,并且目标硬件平台在运行根据本公开的神经网络模型进行目标检测时相较于运行其它目标检测神经网络模型可以在同等计算量的情况下实现更低的功耗。在一些情况下,如果在从超网络到子网络的构建阶段和子网络的量化训练阶段就已知下游任务为目标检测,则在从超网络搜索训练得到子网络的过程(例如步骤S140、S140’)中以及在子网络的量化训练过程中的至少一者中,也可以使用上述用于目标检测的训练图像作为训练数据。通过使训练数据与目标检测下游任务相关(例如,可以使训练数据为与目标检测下游任务相关的训练图像,并且可以保证训练数据和实际使用场景分布相同),可以使根据本公开的从子网络得到的经训练的神经网络模型的精度进一步提高。可以理解,也可以向除目标检测以外的其它类型的下游任务(诸如图像分割、图像分类、关键词唤醒、声音事件检测等)应用本公开。
下面结合图9来介绍根据本公开的一些实施例的为目标硬件平台构建神经网络的装置200。如图9所示,装置200包括超网络构建模块202和子网络构建模块204。超网络构建模块202可以被配置为将超网络的基础结构构建为多个块的堆叠,使得超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量和参数量满足目标硬件平台关于计算量和参数量的要求。子网络构建模块204可以被配置为通过以下操作从超网络得到子网络,并将得到的子网络用于目标硬件平台:将超网络的每个块设置为具有预设最大可用分支数量的多分支块并对每个分支赋予相应的分支权重;将每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重;对超网络进行第一阶段的训练以使得在第一阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和路径权重不变的情况下更新分支权重,并且在所述第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络;对中间网络进行第二阶段的训练以使得在第二阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到子网络;以及通过重参数化的方式将子网络的每个多分支块的多个分支合并为一个分支来将子网络转换为单分支结构。
替代地,在一些实施例中,子网络构建模块204可以被配置为通过以下操作从超网络得到子网络:将超网络的每个块设置为具有预设最大可用分支数量的多分支块,将该多分支块的每个分支设置为被配置为实施通过适用于目标硬件平台的最大卷积核进行的卷积操作的单路径分支,并对每个分支赋予相应的分支权重;对超网络进行第一阶段的训练以使得在第一阶段的每次迭代内通过训练集在固定分支权重不变的情况下更新卷积权重并通过验证集在固定卷积权重不变的情况下更新分支权重,并且在第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络;将中间网络的每个块的每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重;对中间网络进行第二阶段的训练以使得在第二阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到子网络;以及通过重参数化的方式将子网络的每个多分支块的多个分支合并为一个分支来将子网络转换为单分支结构。
装置200的实施例基本类似于前述方法100的实施例,因此在此不再赘述,相关之处可参见方法实施例部分的说明。
本公开还提供了一种为目标硬件平台构建神经网络的计算设备,其可以包括一个或多个处理器以及存储计算机可执行指令的存储器,计算机可执行指令在被一个或多个处理器执行时使得一个或多个处理器执行根据本公开的前述任一实施例所述的为目标硬件平台构建神经网络的方法。如图10所示,计算设备300可以包括(一个或多个)处理器302以及存储计算机可执行指令的存储器304,计算机可执行指令在被(一个或多个)处理器302执行时使得(一个或多个)处理器302执行根据本公开的前述任一实施例所述的为目标硬件平台构建神经网络的方法。(一个或多个)处理器302例如可以是计算设备300的中央处理单元(CPU)。(一个或多个)处理器302可以是任何类型的通用处理器,或者可以是专门设计用于为目标硬件平台构建神经网络的处理器,诸如专用集成电路(“ASIC”)。存储器304可以包括可由(一个或多个)处理器302访问的各种计算机可读介质。在各种实施例中,本文描述的存储器304可以包括易失性和非易失性介质、可移除和不可移除介质。例如,存储器304可以包括以下的任何组合:随机存取存储器(“RAM”)、动态RAM(“DRAM”)、静态RAM(“SRAM”)、只读存储器(“ROM”)、闪存、高速缓冲存储器和/或任何其它类型的非瞬态计算机可读介质。存储器304可以存储在被处理器302执行时使得处理器302执行根据本公开的前述任一实施例所述的为目标硬件平台构建神经网络的方法的指令。
本公开还提供了一种其上存储有计算机可执行指令的非瞬态存储介质,计算机可执行指令在被计算机执行时使得计算机执行根据本公开的前述任一实施例所述的为目标硬件平台构建神经网络的方法。
基于以上,本公开提出了一种两阶段的搜索训练方式,其在第一阶段分时更新彼此解耦的卷积权重和分支权重并在第二阶段分时更新彼此结构的卷积权重和路径权重,在训练网络的同时搜索网络的每个块的合适分支数量和分支操作,还进一步通过重参数化的方式在保留多分支的表达能力的情况下将得到的网络转换为单分支结构,以在提高精度的同时减少了最终部署到目标硬件平台后在推理时的时间消耗、带宽消耗和内存消耗等。由于本公开所得到的子网络具有卷积块的简单直接堆叠结构,因此对硬件支持的要求较低,可以适用于各种芯片,从而在不同硬件平台上都能保持优化的性能。另外,本公开还提出了一种改进的量化训练方式,其在前向传播时遵循单分支结构而在反向传播时遵循该单分支结构所源自的多分支结构,通过多分支聚合梯度来将多分支的贡献结合到单分支结构的量化模型参数更新中,在量化模型降低计算量的同时提高了量化模型的精度。
说明书及权利要求中的词语“左”、“右”、“前”、“后”、“顶”、“底”、“上”、“下”、“高”、“低”等,如果存在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所示出的或另外描述的那些取向不同的其它取向上操作。例如,在附图中的装置倒转时,原先描述为在其它特征“之上”的特征,此时可以描述为在其它特征“之下”。装置还可以以其它方式定向(旋转90度或在其它方位),此时将相应地解释相对空间关系。
在说明书及权利要求中,称一个元件位于另一元件“之上”、“附接”至另一元件、“连接”至另一元件、“耦接”至另一元件、或“接触”另一元件等时,该元件可以直接位于另一元件之上、直接附接至另一元件、直接连接至另一元件、直接耦接至另一元件或直接接触另一元件,或者可以存在一个或多个中间元件。相对照的是,称一个元件“直接”位于另一元件“之上”、“直接附接”至另一元件、“直接连接”至另一元件、“直接耦接”至另一元件或“直接接触”另一元件时,将不存在中间元件。在说明书及权利要求中,一个特征布置成与另一特征“相邻”,可以指一个特征具有与相邻特征重叠的部分或者位于相邻特征上方或下方的部分。
如在此所使用的,词语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开不受在技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
如在此所使用的,词语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。词语“基本上”还允许由寄生效应、噪声以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
另外,仅仅为了参考的目的,还可以在本文中使用“第一”、“第二”等类似术语,并且因而并非意图限定。例如,除非上下文明确指出,否则涉及结构或元件的词语“第一”、“第二”和其它此类数字词语并没有暗示顺序或次序。
还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
在本公开中,术语“提供”从广义上用于涵盖获得对象的所有方式,因此“提供某对象”包括但不限于“购买”、“制备/制造”、“布置/设置”、“安装/装配”、和/或“订购”对象等。
如本文所使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任何和所有组合。本文中使用的术语只是出于描述特定实施例的目的,并不旨在限制本公开。如本文中使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚指示。
本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其它各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。可以以任何方式和/或与其它实施例的方面或元件相结合地组合以上公开的所有实施例的方面和元件,以提供多个附加实施例。因此,本说明书和附图应当被看作是说明性的,而非限制性的。
虽然已通过示例对本公开的一些特定实施例进行了详细说明,但本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限定。
Claims (16)
1.一种为目标硬件平台构建神经网络的方法,包括:
将超网络的基础结构构建为多个块的堆叠,使得所述超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量和参数量满足所述目标硬件平台关于计算量和参数量的要求;以及
通过以下操作从所述超网络得到子网络,并将得到的子网络用于所述目标硬件平台:
将所述超网络的每个块设置为具有预设最大可用分支数量的多分支块并对每个分支赋予相应的分支权重,
将每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于所述目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重,
对所述超网络进行第一阶段的训练以使得在所述第一阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和路径权重不变的情况下更新分支权重,并且在所述第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络,
对所述中间网络进行第二阶段的训练以使得在所述第二阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在所述第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到子网络,以及
通过重参数化的方式将所述子网络的每个多分支块的多个分支合并为一个分支来将所述子网络转换为单分支结构。
2.根据权利要求1所述的方法,其中,通过以下操作从所述超网络得到子网络:
将所述超网络的每个块设置为具有预设最大可用分支数量的多分支块,将该多分支块的每个分支设置为被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支,并对每个分支赋予相应的分支权重;
对所述超网络进行第一阶段的训练以使得在所述第一阶段的每次迭代内通过训练集在固定分支权重不变的情况下更新卷积权重并通过验证集在固定卷积权重不变的情况下更新分支权重,并且在所述第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络;
将所述中间网络的每个块的每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于所述目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重;
对所述中间网络进行第二阶段的训练以使得在所述第二阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在所述第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到子网络;以及
通过重参数化的方式将所述子网络的每个多分支块的多个分支合并为一个分支来将所述子网络转换为单分支结构。
3.根据权利要求1或2所述的方法,其中,使得所述超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量和参数量满足所述目标硬件平台关于计算量和参数量的要求包括:
使得所述超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量与所述目标硬件平台允许的最大计算量之差在预设计算量容差范围内;并且
使得所述超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的参数量与所述目标硬件平台允许的最大参数量之差在预设参数量容差范围内。
4.根据权利要求1或2所述的方法,其中,适用于所述目标硬件平台的最大卷积核是通过以下操作确定的:
使相同的测试神经网络模型分别在包括多种不同候选尺寸中的每种候选尺寸的卷积核的情况下在所述目标硬件平台上进行测试,以得到与每种候选尺寸对应的性能指标;以及
选择与满足预设性能指标要求的性能指标对应的候选尺寸中的最大候选尺寸的卷积核作为适用于所述目标硬件平台的最大卷积核。
5.根据权利要求1或2所述的方法,其中,所述预设最大可用分支数量被设置为使得能够实现预设批量处理大小的最大分支数量。
8.根据权利要求1或2所述的方法,其中,所述多路径分支包括:
被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的第一卷积操作和批量归一化操作的第一路径;
被配置为实施通过小于所述最大卷积核的较小卷积核进行的第二卷积操作和批量归一化操作的第二路径;以及
被配置为实施批量归一化操作的第三路径。
9.根据权利要求8所述的方法,其中,对用于实现降采样的块所设置的多路径分支不包括被配置为实施批量归一化操作的第三路径。
10.根据权利要求8所述的方法,其中,将所述子网络转换为单分支结构包括对于所述子网络中的每个多分支块:
如果该多分支块包括具有所述第一路径的第一分支,则合并第一卷积操作和批量归一化操作以得到第一卷积权重矩阵,所述第一卷积权重矩阵的尺寸对应于所述最大卷积核的尺寸;
如果该多分支块包括具有所述第二路径的第二分支,则合并第二卷积操作和批量归一化操作以得到第二卷积权重矩阵,所述第二卷积权重矩阵被用零补边以使得补边后的尺寸对应于所述最大卷积核的尺寸;
如果该多分支块包括具有所述第三路径的第三分支,则合并恒等映射操作和批量归一化操作以得到第三卷积权重矩阵,所述第三卷积权重矩阵被用零补边以使得补边后的尺寸对应于所述最大卷积核的尺寸;
根据该多分支块中的所述第一分支的第一数量、所述第二分支的第二数量和所述第三分支的第三数量将所述第一数量的所述第一卷积权重矩阵、所述第二数量的所述第二卷积权重矩阵和所述第三数量的所述第三卷积权重矩阵合并为合并卷积权重矩阵;
将该多分支块替换为包括被配置为实施通过所述最大卷积核进行的卷积操作的单路径分支的单分支块,并根据所述合并卷积权重矩阵设置该单分支块的卷积权重。
11.根据权利要求10所述的方法,还包括对转换后的所述子网络进行量化训练,所述量化训练包括在每次迭代内:
按照转换后的所述子网络的单分支结构进行前向传播;
按照转换前的所述子网络的多分支结构进行反向传播,其中当反向传播至转换前的所述子网络的每个多分支块时,基于与该多分支块的各个分支相关联的权重计算缩放比例以用于缩放梯度,并通过缩放后的梯度来更新转换后的所述子网络中与该多分支块对应的单分支块的卷积权重。
12.根据权利要求11所述的方法,其中,与该多分支块的各个分支相关联的权重是以下之一:
该多分支块的该分支的分支权重;
该多分支块的该分支的卷积权重的均值,
并且其中,当该多分支块的该分支是具有所述第三路径的第三分支时,与该多分支块的该分支相关联的权重被设置为单位阵。
13.一种为目标硬件平台构建神经网络的装置,包括:
超网络构建模块,被配置为将超网络的基础结构构建为多个块的堆叠,使得所述超网络在每个块被设置为单分支块并且包括被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支的情况下对应的计算量和参数量满足所述目标硬件平台关于计算量和参数量的要求;以及
子网络构建模块,被配置为通过以下操作从所述超网络得到子网络,并将得到的子网络用于所述目标硬件平台:
将所述超网络的每个块设置为具有预设最大可用分支数量的多分支块并对每个分支赋予相应的分支权重,
将每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于所述目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重,
对所述超网络进行第一阶段的训练以使得在所述第一阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和路径权重不变的情况下更新分支权重,并且在所述第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络,
对所述中间网络进行第二阶段的训练以使得在所述第二阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在所述第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到所述子网络,以及
通过重参数化的方式将所述子网络的每个多分支块的多个分支合并为一个分支来将所述子网络转换为单分支结构。
14.根据权利要求13所述的装置,其中,所述子网络构建模块被配置为通过以下操作从所述超网络得到子网络:
将所述超网络的每个块设置为具有预设最大可用分支数量的多分支块,将该多分支块的每个分支设置为被配置为实施通过适用于所述目标硬件平台的最大卷积核进行的卷积操作的单路径分支,并对每个分支赋予相应的分支权重;
对所述超网络进行第一阶段的训练以使得在所述第一阶段的每次迭代内通过训练集在固定分支权重不变的情况下更新卷积权重并通过验证集在固定卷积权重不变的情况下更新分支权重,并且在所述第一阶段完成后,对于每个块仅保留分支权重满足预设分支权重要求的分支从而得到中间网络;
将所述中间网络的每个块的每个分支设置为具有被配置为实施不同操作的多个路径的多路径分支,所述不同操作中的每一者能够等价转换为通过适用于所述目标硬件平台的最大卷积核进行的卷积操作,并对每个路径赋予相应的路径权重;
对所述中间网络进行第二阶段的训练以使得在所述第二阶段的每次迭代内通过训练集在固定分支权重和路径权重不变的情况下更新卷积权重并通过验证集在固定卷积权重和分支权重不变的情况下更新路径权重,并且在所述第二阶段完成后,对于每个分支仅保留具有最大路径权重的路径从而得到子网络;以及
通过重参数化的方式将所述子网络的每个多分支块的多个分支合并为一个分支来将所述子网络转换为单分支结构。
15.一种为目标硬件平台构建神经网络的计算设备,包括:
一个或多个处理器;以及
存储计算机可执行指令的存储器,所述计算机可执行指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行根据权利要求1至12中任一项所述的为目标硬件平台构建神经网络的方法。
16.一种其上存储有计算机可执行指令的非瞬态存储介质,所述计算机可执行指令在被计算机执行时使得计算机执行根据权利要求1至12中任一项所述的为目标硬件平台构建神经网络的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211224361.5A CN115293337B (zh) | 2022-10-09 | 2022-10-09 | 构建神经网络的方法、装置、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211224361.5A CN115293337B (zh) | 2022-10-09 | 2022-10-09 | 构建神经网络的方法、装置、计算设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115293337A true CN115293337A (zh) | 2022-11-04 |
CN115293337B CN115293337B (zh) | 2022-12-30 |
Family
ID=83834563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211224361.5A Active CN115293337B (zh) | 2022-10-09 | 2022-10-09 | 构建神经网络的方法、装置、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115293337B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116091372A (zh) * | 2023-01-03 | 2023-05-09 | 江南大学 | 基于层分离和重参数的红外和可见光图像融合方法 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304265A (zh) * | 2018-01-23 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置及存储介质 |
US20200250542A1 (en) * | 2019-02-02 | 2020-08-06 | Beijing Horizon Robotics Technology Research And Development Co., Ltd. | Neural Network Training Method, Neural Network Training Apparatus and Electronic Device |
US20200257960A1 (en) * | 2019-02-12 | 2020-08-13 | XNOR.ai, Inc. | Compressed convolutional neural network models |
CN111582454A (zh) * | 2020-05-09 | 2020-08-25 | 北京百度网讯科技有限公司 | 生成神经网络模型的方法和装置 |
CN111582091A (zh) * | 2020-04-27 | 2020-08-25 | 西安交通大学 | 基于多分支卷积神经网络的行人识别方法 |
CA3076424A1 (en) * | 2019-03-22 | 2020-09-22 | Royal Bank Of Canada | System and method for knowledge distillation between neural networks |
US20210350203A1 (en) * | 2020-05-07 | 2021-11-11 | Samsung Electronics Co., Ltd. | Neural architecture search based optimized dnn model generation for execution of tasks in electronic device |
CN113762479A (zh) * | 2021-09-10 | 2021-12-07 | 深圳朴生智能科技有限公司 | 一种神经网络优化方法和装置 |
CN114283320A (zh) * | 2021-12-25 | 2022-04-05 | 福州大学 | 基于全卷积的无分支结构目标检测方法 |
CN114612774A (zh) * | 2022-02-25 | 2022-06-10 | 共达地创新技术(深圳)有限公司 | 目标检测及其模型构建方法、电子设备和存储介质 |
CN114842019A (zh) * | 2022-07-06 | 2022-08-02 | 山东建筑大学 | 一种电池板表面缺陷检测方法、系统、存储介质及设备 |
CN114861890A (zh) * | 2022-07-05 | 2022-08-05 | 深圳比特微电子科技有限公司 | 构建神经网络的方法、装置、计算设备及存储介质 |
CN114882530A (zh) * | 2022-05-09 | 2022-08-09 | 东南大学 | 一种面向行人检测的轻量级卷积神经网络模型 |
-
2022
- 2022-10-09 CN CN202211224361.5A patent/CN115293337B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304265A (zh) * | 2018-01-23 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置及存储介质 |
US20200250542A1 (en) * | 2019-02-02 | 2020-08-06 | Beijing Horizon Robotics Technology Research And Development Co., Ltd. | Neural Network Training Method, Neural Network Training Apparatus and Electronic Device |
US20200257960A1 (en) * | 2019-02-12 | 2020-08-13 | XNOR.ai, Inc. | Compressed convolutional neural network models |
CA3076424A1 (en) * | 2019-03-22 | 2020-09-22 | Royal Bank Of Canada | System and method for knowledge distillation between neural networks |
CN111582091A (zh) * | 2020-04-27 | 2020-08-25 | 西安交通大学 | 基于多分支卷积神经网络的行人识别方法 |
US20210350203A1 (en) * | 2020-05-07 | 2021-11-11 | Samsung Electronics Co., Ltd. | Neural architecture search based optimized dnn model generation for execution of tasks in electronic device |
CN111582454A (zh) * | 2020-05-09 | 2020-08-25 | 北京百度网讯科技有限公司 | 生成神经网络模型的方法和装置 |
CN113762479A (zh) * | 2021-09-10 | 2021-12-07 | 深圳朴生智能科技有限公司 | 一种神经网络优化方法和装置 |
CN114283320A (zh) * | 2021-12-25 | 2022-04-05 | 福州大学 | 基于全卷积的无分支结构目标检测方法 |
CN114612774A (zh) * | 2022-02-25 | 2022-06-10 | 共达地创新技术(深圳)有限公司 | 目标检测及其模型构建方法、电子设备和存储介质 |
CN114882530A (zh) * | 2022-05-09 | 2022-08-09 | 东南大学 | 一种面向行人检测的轻量级卷积神经网络模型 |
CN114861890A (zh) * | 2022-07-05 | 2022-08-05 | 深圳比特微电子科技有限公司 | 构建神经网络的方法、装置、计算设备及存储介质 |
CN114842019A (zh) * | 2022-07-06 | 2022-08-02 | 山东建筑大学 | 一种电池板表面缺陷检测方法、系统、存储介质及设备 |
Non-Patent Citations (5)
Title |
---|
LIAM LI 等: "Geometry-Aware Gradient Algorithm for neutral architecture search", 《HTTPS://ARXIV.ORG/ABS/2004.07802 》 * |
ROBERT STEWART等: "Optimising Hardware Accelerated Neural Networks with Quantisation and a Knowledge Distillation Evolutionary Algorithm", 《ELECTRONICS 》 * |
SIMONYAN K等: "Mnasnet:Platform-aware neural architecture search for mobile", 《IEEE CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION 》 * |
冯于树: "卷积神经网络模型中的知识蒸馏研究", 《中国优秀硕士学位论文全文数据库 (社会科学Ⅱ辑)》 * |
李江昀 等: "深度神经网络模型压缩综述", 《工程科学学报 》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116091372A (zh) * | 2023-01-03 | 2023-05-09 | 江南大学 | 基于层分离和重参数的红外和可见光图像融合方法 |
CN116091372B (zh) * | 2023-01-03 | 2023-08-15 | 江南大学 | 基于层分离和重参数的红外和可见光图像融合方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115293337B (zh) | 2022-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11514324B2 (en) | Methods of optimization of computational graphs of neural networks | |
WO2022027937A1 (zh) | 一种神经网络压缩方法、装置、设备及存储介质 | |
CN115293337B (zh) | 构建神经网络的方法、装置、计算设备及存储介质 | |
Stevens et al. | Manna: An accelerator for memory-augmented neural networks | |
CN114332094A (zh) | 基于轻量级多尺度信息融合网络的语义分割方法及装置 | |
JP7099163B2 (ja) | 学習装置および学習方法 | |
CN105989375A (zh) | 对手写字符图像进行分类的分类器、分类装置和分类方法 | |
Weng et al. | S2net: Stochastic sequential pointcloud forecasting | |
Li et al. | Fast principal component analysis for hyperspectral imaging based on cloud computing | |
CN113535912B (zh) | 基于图卷积网络和注意力机制的文本关联方法及相关设备 | |
Zhang et al. | Vision transformer with convolutions architecture search | |
Kulkarni et al. | Hybrid optimization for DNN model compression and inference acceleration | |
Schindler et al. | Parameterized structured pruning for deep neural networks | |
KR20210091880A (ko) | 뉴럴 네트워크 모델 재구성 방법 및 이를 수행하는 데이터 처리 장치 | |
CN115017377B (zh) | 用于搜索目标模型的方法、装置和计算设备 | |
Cheng et al. | Arccosine kernels: Acoustic modeling with infinite neural networks | |
CN115909465A (zh) | 人脸定位检测方法、图像处理设备以及可读存储介质 | |
CN113761934B (zh) | 一种基于自注意力机制的词向量表示方法及自注意力模型 | |
CN113033653B (zh) | 一种边-云协同的深度神经网络模型训练方法 | |
CN115018059A (zh) | 数据处理方法及装置、神经网络模型、设备、介质 | |
CN115294361A (zh) | 一种特征提取的方法及装置 | |
CN115293082B (zh) | 时序预测模型的训练、预测方法、装置、设备及存储介质 | |
Bliek et al. | Online function minimization with convex random ReLU expansions | |
Gopal et al. | Mobile Vision Transformer-based Visual Object Tracking | |
Li et al. | Integration of machine learning and human learning for training optimization in robust linear regression |
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 |