1.一种基于软硬件联合学习的神经网络设计与优化方法,其特征在于,该方法包括如下步骤:步骤S1):神经网络结构规律统计:
分别探讨节点数、结构块数、通道数、输入图像分辨率、参数量与准确率之间的关系,并统计不同神经网络结构下,网络总层数、输入图像分辨率和宽度的规律情况;
步骤S2):FPGA硬件特性预测:
将普通卷积和深度可分离卷积在FPGA上进行对比,探寻最佳的卷积方式,并根据FPG A的性能表现主要参数,提出性能预测函数,其中,FPGA的性能表现主要参数包括延迟时钟周期、触发器FF、查找表LUT;
步骤S3):FPGA神经网络结构空间设计:
在步骤S1)神经网络结构规律统计以及步骤S2)FPGA硬件特性预测的基础上,总结统计规律,得到搜索空间;
步骤S4):基于步骤S3)获取的搜索空间,在该搜索空间中运用软硬件联合学习方法,结合随机搜索和分块监督搜索,获得最优神经网络模型;
其中,所述步骤S1)具体包括如下步骤:
步骤S11):参数量
在选取现有的13个模型Vgg16,SqueezeNet,EfficientNet B0,EfficientNet B4,ResNe t‑50,ResNeXt‑50,ResNeSt‑50,CSP ResneXt‑50,RepVGG,MobileNet‑V2,MnasNet‑A3,MixNet‑M,ECANet‑50基础上,进一步选取与该13个模型在结构上有相同之处的101个模型,分别对比这101个模型中每一个模型的参数量与Top‑1准确率之间的关系,其中,参数量的单位为million,简称M;
随着模型的参数量的增加,模型的Top‑1准确率呈现先上升再平缓的趋势;对于一个参数量大于10M的模型来说,参数量与Top‑1准确率之间的相关性系数为0.222,其中,相关性系数的计算公式为:其中,Xj″为自变量,这里代表参数量,Yj″为因变量,这里代表Top‑1准确率, 和 分别表示参数量与Top‑1准确率的平均值,r为最终得到的相关性系数,n表示测试的模型总数;
只选择所述101个模型中参数量小于40M的模型,得到60个模型,分别对比这60个模型中每一个模型的参数量与Top‑1准确率之间的关系,通过公式(1)得到此时参数量与Top‑1准确率之间的相关性系数为0.552;
只选择以上60个模型中参数量小于10M的模型,得到34个模型,分别对比这34个模型中每一个模型的参数量与Top‑1准确率之间的关系,通过公式(1)得到这34个模型中参数量与Top‑1准确率之间的相关性系数为0.680;
综上,设计神经网络的过程中将把参数量设置在(0,10M)范围内;
步骤S12):网络总层数
网络总层数仅指带权重层的总和,包括卷积层和全连接层,将选取的13个模型Vgg16,SqueezeNet,EfficientNet B0,EfficientNet B4,ResNet‑50,ResNeXt‑50,ResNeSt‑50,CSP ResneXt‑50,RepVGG,MobileNet‑V2,MnasNet‑A3,MixNet‑M,ECANet‑50分别标记为模型a,b,c,d,e,f,g,h,i,j,k,l,m;绘制这13个模型中网络总层数与Top‑1准确率之间的关系图,对于轻量化模型来说需要更多的网络总层数,但是随着网络总层数增加,精度提升收益降低,根据绘制的网络总层数与Top‑1准确率之间的关系图,神经网络模型的网络总层数限定在[25,90]之间;
步骤S13):输入图像分辨率
选用不同数据集的常用输入图像分辨率;
步骤S14):结构块特性
步骤S141):结构块宽度
结构块宽度分为三个子概念,第一个是结构块输出通道数,第二个是结构块中最大输出通道数,第三个是结构块中最大横向节点数;其中,结构块输出通道数表示每一个结构块的filter数量,结构块中最大输出通道数表示在一个结构块中由于存在通道数的扩展,因此以一个结构块的最大输出通道数作为一种神经网络宽度的表征,结构块中最大横向节点数表示一个结构块内部分支数量,并且结构块内部分支数量乘以每个分支的通道数即可得到该结构块输出通道数;
在规律分析中,由于神经网络在靠中间的层宽度变化更明显,下文的统计中主要选用所述13个模型中每个模型的第4个结构块进行比较,其中Vgg16,SqueezeNet,EfficientNet B0,EfficientNet B4,ResNet‑50,ResNeXt‑50,ResNeSt‑50,CSP ResneXt‑50,RepVGG,Mo bileNet‑V2,MnasNet‑A3,MixNet‑M,ECA‑Net50这13个模型分别有5、8、7、7、4、4、4、4、5、7、
7、6、4个结构块;
a)仅考察神经网络的结构块输出通道数:选取所述13个模型中每个模型的第4个结构块的输出通道数与Top‑1准确率之间的关系,得到第4个结构块的输出通道数与Top‑1准确率的相关性系数为0.2;
b)仅考察结构块中最大输出通道数,以第4个结构块为例,带入公式(1),得到结构块中最大输出通道数与Top‑1准确率之间的相关性系数为0.28;
c)仅考察结构块中最大横向节点数,则第4个结构块中的最大横向节点数与Top‑1准确率之间的相关性系数为0.17,与前两个因素结构块输出通道数和结构块中最大输出通道数相比相关性更低;
d)考察结构块中最大输出通道数与输出通道数相比是否有扩张,即是否存在倒残差结构,结果表明Top‑1准确率与是否存在扩张的相关性系数为0.23;
e)考察结构块之间的宽度扩张比,对选取的所述13个模型的前4个结构块的每两个结构块之间的输出通道数之比取均值,结果表明结构块之间的宽度扩张比与Top‑1准确率之间的相关性系数为0.61;
综上,在设计神经网络宽度上将搜索多个神经网络宽度和最大输出通道数与输出通道数之比,即扩张比,而最大横向节点数不做设定;且由于结构块之间的宽度扩张比与Top‑1准确率之间有比结构块三种宽度以及是否存在扩张与Top‑1准确率之间更高的相关性,因此宽度扩张比将设定在[1.5,2]之间;
步骤S142):结构块深度
一个结构块类似于一个小型网络,取所述13个模型中前4个结构块中每个结构块的深度,统计其与Top‑1准确率之间的关系,得到第1‑4个结构块深度与Top‑1准确率之间的相关性系数分别为:0.37、0.49、0.57和0.47;
步骤S143):结构块总节点数
由于一个结构块中节点可以横向排列,其结果已经在结构块宽度部分讨论,节点也纵向排列形成多个层,其结果已经在结构块深度部分讨论,这里不区分宽度与深度统计结构块总的节点数,且由于每个神经网络中结构块总节点数类似,仅选用第4个结构块,整体结果表明在总节点数为[4,14]范围内,总节点数增加,Top‑1准确率增加;
步骤S144):结构块内跳接操作
所述13个模型中前4个结构块中跳接操作的数量与Top‑1准确率的相关性系数分别为:
0.076、0.26、0.23和0.26;
步骤S145):结构块内注意力机制
分析选取的13个模型可知,引入注意力机制能够提升神经网络模型的准确性;
步骤S15):卷积核特性
不同卷积核之间的特征提取能力与硬件特性之间的关系并没有一个明确的结论,具体设计时面对众多的卷积选择需要通过神经网络搜索的方式来进行选择,此外,对于卷积核的大小选择也是通过神经网络搜索来进行选择;
所述步骤S4)具体包括如下步骤:
步骤S41):确定随机搜索与分块监督搜索相结合的搜索方式,方法如下:
随机搜索主要指对各项参数进行随机组合,得到神经网络模型的结构,在通过随机搜索得到不同的神经网络模型中,进一步提出分块监督搜索的方法,对每个神经网络模型的每一个结构块进行训练,以加快神经网络模型训练的速度;
神经网络的本质是多个操作的集合,表示为:
(j′) (i′,j′) (i′)
x =∑i′<j′o (x ) (6)
(j′) (i′,j′) (i′)
其中,x 表示经过一系列操作o 之后的一层特征图,x 代表第i′层操作的输
(i′,j′)
入,o 表示从神经网络模型的第i′层到第j′层的总操作;
(i′,j′ (i′) (i′)
令∑i′<j′o )(x )=F(i′,j′)(x ),则一个结构块的输出表示为:(out) (in)
x =F(out‑1,out)(…F(in+1,in+2)((F(in,in+1)(x )))) (7)(in) (in) (out)
其中x 表示该结构块的输入,采用定义好x 和x 的方式,中间层通过随机搜索得
(in) (out)
到,从而得到神经网络模型的整个结构块,而x 和x 通过已经训练好的模型MnasNet得(in) (out)到,x 和x 采用的维度与MnasNet相同,MnasNet的结构块数量为7,要得到的神经网络模型中第一个与最后一个结构块采用与MnasNet相同的定义,则需要搜索的结构块数量为
5,其中每个结构块的内部模块数量为2‑5,内部模块由随机搜索生成,需要搜索的总模块平
16
均数量为17,总的搜索空间大小为10 ;
随机搜索与分块监督搜索结合搜索的方式如下:首先选择分块监督搜索的监督模型,通过监督模型得到需要搜索结构块的输入输出大小;然后,通过随机搜索的方式定义结构块中的层数、最大输出通道数与输出通道数之比和卷积核大小;将随机搜索得到的结构块进行训练并对误差进行排序,进而在得到的每个阶段的结构块中选取备选结构块;
步骤S42):在随机搜索和分块监督搜索的基础上,提出软硬件联合学习方法,具体方法为:根据模型统计规律以及硬件特性,针对性地构建搜索空间,并通过随机搜索采样得到一组结构块,依次为Block X1,Block X2,…,Block XN,利用分块监督搜索的方式对随机得到的结构块进行训练,对于监督网络的每一个结构块Block Xi,i=1,2,…,N,都对应着多个随机Block,将多个随机Block按损失函数公式计算出的损失函数值进行排序,其中损失函数值最小的前3个随机Block进入到Block Xi的备选Block集合;再通过FPGA的硬件特性预测器,得到Block Xi的每个备选Block相关参数;匹配好硬件特性的备选Block进入到最终的结构选择中,通过最优结构组合与排序,得到最终的最优神经网络模型。
2.根据权利要求1所述的基于软硬件联合学习的神经网络设计与优化方法,其特征在于,所述步骤S2)具体包括如下步骤:步骤S21):在FPGA上进行普通卷积和深度可分离卷积的性能对比,方法如下:
通过仿真软件和板上测试的方式进行上述两种卷积的对比,采用的仿真与综合工具为Xilinx VIVADO HLS,选用目标板卡为ZCU102,为节省资源仿真资源,选用输入图像分辨率为112×112,输入通道数为3,输出通道数为16,卷积核大小为3×3的运算为例,普通卷积和深度可分离卷积的运行时间分别为1.423秒和0.260秒;
对于仿真的结果来看,查找表LUT,触发器FF与神经网络参数量之间的相关性系数分别为0.419,0.396,这一部分的资源预估需要采用查表的方式进行计算;
对于仿真的结果,通过公式(1)得到神经网络参数量与时钟周期之间的相关性系数为
0.371;
每秒所执行的浮点运算次数FLOPS与时钟周期之间存在线性关系,带入公式(1),得到FLOPS与时钟周期之间的相关性系数为0.999,因此在进行建模时将直接采用FLOPS对时钟周期进行预测;
对FPGA性能表现的主要参数:延迟时钟周期、FF、LUT进行了实验,因为深度可分离卷积的计算量更小,在FPGA的设计上均选用深度可分离卷积,此外,由于FPGA上运行时间与FLOPS高度相关,因此根据轻量化网络的常见计算量规模,将FLOPS限定在500M以内;
步骤S22):在步骤S21)的基础上提出性能预测函数,方法如下:
针对FPGA性能表现的主要参数:延迟时钟周期、FF、LUT,结合以上步骤S21)的结果,提出以下的性能预测函数:Performance(Convk′)=[αLat(Convk′),βRes(Convk′)] (2)其中,Convk′代表神经网络第k′个卷积操作,Lat(Convk′)代表该卷积操作Convk′的总体延迟,Res(Convk′)代表该卷积操作Convk′的资源消耗,α、β分别代表设计时预设的Lat(Convk′)和Res(Convk′)重要程度系数,[x1,x2]表示向量;
总体延迟通过每次操作的延迟周期数及数据传递时间来估计,延迟周期数直接采用
FLOPS进行计算;另外数据的传递分为两部分,一是神经网络模型参数的载入,另一部分是中间结果的传递;神经网络模型参数的载入用参数量大小来反映,中间数据的传递涉及神经网络模型每个结构块的输出大小,这一部分在FLOPS中有所体现,不重复考虑,因此,卷积操作Convk′的总体延迟表示如下:Lat(Convk′)=[μFLOPS(Convk′),σParams(Convk′)] (3)其中,FLOPS(Convk′)代表该卷积操作Convk′的每秒所执行的浮点运算次数,Params(Convk′)代表该卷积操作Convk′的参数量,μ、σ分别代表设计时预设的FLOPS(Convk′)和Params(Convk′)重要程度系数;
由于资源消耗主要包含LUT和FF,因此卷积操作Convk′的资源消耗表示如下:Res(Convk′)=[εLUT(Convk′),τFF(Convk′)] (4)其中,LUT(Convk′)代表该卷积操作Convk′的显示查找表结果,FF(Convk′)代表该卷积操作Convk′的触发器资源消耗,ε、τ分别代表设计时预设的LUT(Convk′)和FF(Convk′)重要程度系数;
一个神经网络模型在FPGA上的性能表现整体表示为:
n′表示该神经网络模型中卷积操作总数,A代表该神经网络模型结构,γ、η是μ、σ分别与α相乘的结果,θ、是ε、τ分别与β相乘得到的系数,用以代表每部分重要性程度,当某一部分需要重点优化时通过调整相应的系数来获得需要的结果,由于式(5)中各项量纲不同,系数项需要根据每项量纲做归一化处理。
3.根据权利要求2所述的基于软硬件联合学习的神经网络设计与优化方法,其特征在于,所述步骤S3)中总结统计规律如下:(1)将神经网络参数量控制在(0,10M)范围内,且根据FPGA上仿真结果可知,控制参数量的同时能够控制FPGA运行时间;
(2)神经网络的网络总层数控制在[25,90]范围内;
(3)输入图像分辨率设置为常用分辨率,不做调整;
(4)结构块设置中,结构块之间的宽度扩张比设定在[1.5,2],结构块最大输出通道数与输出通道数之比设定在{1,3,6},最大横向节点数不做设定,结构块中引入注意力机制;
(5)卷积核大小选用3×3,5×5,或7×7;
(6)卷积核采用深度可分离卷积。
4.根据权利要求3所述的基于软硬件联合学习的神经网络设计与优化方法,其特征在于,所述步骤S42)中分块监督搜索部分训练方式如下:首先选中ImageNet数据集中每个类别的30%作为训练集,称为ImageNet‑mid;随机搜索针对每个结构块中每个内部模块进行采样组合得到一个完整的结构块,然后利用MnasNet在ImageNet‑mid的输出进行监督学习;通过选择损失函数值最小的3个随机Block作为备选Block;
任意一个结构块Block Xi的第i″个随机Block输入为 标签为 输出为 搜索训练过程中的损失函数定义如下:
其中Wii″代表Block Xi的第i″个随机Block的整体权重,Aii″代表Block Xi的第i″个随机Block的结构参数,N′代表输出 的神经元的数量,每次训练会通过梯度自动更新Wii″;
将Block Xi的每个随机Block的Losstrain进行排序得到损失函数值最小的3个随机Block作为Block Xi的备选Block后,每次分别从Block X1~Block XN中任意选择一个备选Block,将选择出的各结构块Block X1‑Block XN的备选Block按照预先已经确定好的顺序进行组合,得到完整的神经网络模型结构,然后通过FPGA硬件特性预测进一步筛选;将备选Block中的卷积方式进行统计,然后自动生成Xilinx HLS的仿真结果,在进行FPGA硬件特性预测时,对相应的项进行查表加和;
最后筛选出最优神经网络模型结构A,如下式:
s.t.LUT(A)<C1
FF(A)<C2
其中,ρ用于控制损失函数值在总体约束中的占比, 表示
Block Xi的任意一个备选Block的损失函数,C1,C2为目标FPGA的资源限制,两者均为常数,Ai代表Block Xi的任意一个备选Block的结构参数,Performance(Ai)表示Block Xi的任意一个备选Block在FPGA上的性能表现;LUT(A)和FF(A)分别为查找表和触发器,代表着资源2
消耗;||*||表示2‑范数,||*||表示2‑范数的平方,J表示得到的完整的神经网络模型结构的损失函数;A表示J取最小值时得到的最优神经网络模型结构;由于公式(10)中各项量纲不同,因此系数项需要根据每项量纲做归一化处理;
由于Block Xi选择不同的备选Block进行组合得到的神经网络有多个,通过按需调整公式(10)中各项系数得到每个神经网络的J值,然后J值最小的一个神经网络作为最优神经网络模型结构。
5.根据权利要求1‑4任意一项所述的基于软硬件联合学习的神经网络设计与优化方
法,其特征在于,所述101个模型的名称分别为:KDforAA(EfficientNet‑B8),Fix‑EfficientNet‑B8(MaxUp+CutMix),AdvProp(EfficientNet‑B8),KDforAA(EfficientNet‑B7),AdvProp(EfficientNet‑B7),DeiT‑B 384,EfficientNet‑B7(RandAugment),BoTNet T7,EfficientNet‑B7,TResNet‑XL,LambdaResNet200,BoTNet T7‑320,DeiT‑B,FixEfficientNetB4,EfficientNet‑B6,BoTNet T6,LambdaResNet152,FixPNASNet‑5,NFNet‑F0,BoTNet T5,EfficientNet‑B5,Oct‑ResNet‑152(SE),PNASNet‑5,BoTNet T4,NASNET‑A(6),EfficientNet‑B4,DeiT‑S,SENet‑152,BoTNet T3,PyConvResNet‑101,SENet‑101,DPN‑131(320x320),EfficientNet‑B3,ResNeXt‑101 64x4,NAT‑M4,iAFF‑ResNeXt‑50‑32x4d,FixEfficientNet‑B0,Inception ResNet V2,DPN‑131(224x224)(80M),ResNet‑101,RegNetY‑8.0GF,SKNet‑101,CSPResNeXt‑50(Mish+Aug),EfficientNet‑B2,SENet‑50,TinyNet(GhostNet),RegNetY‑4.0GF,LIP‑ResNet‑101,FixResNet‑50,Xception,SpineNet‑143,ECA‑Net(ResNet‑152),MixNet‑L,ResNet‑50,EfficientNet‑B1,RegNetY‑1.6GF,RepVGG‑B2,ECA‑Net(ResNet‑101),HCGNet‑B,RepVGG‑B2g4,ResNet‑101,ResNet‑50(LIP Bottleneck‑256),WRN‑50‑2‑bottleneck,ACNet(ResNet‑50),ECA‑Net(ResNet‑50),ResNet‑50‑D,GreedyNAS‑A,MixNet‑M,SCARLET‑A,GreedyNAS‑B,MnasNet‑A3,LIP‑DenseNet‑BC‑121,MUXNet‑l,DeiT‑Ti,EfficientNet‑B0,SCARLET‑B,RegNetY‑800MF,GreedyNAS‑C,MoGA‑A,MixNet‑S,GhostNet,MnasNet‑A2,SCARLET‑C,RegNetY‑600MF,MUXNet‑m,MnasNet‑A1,MobileNet V3‑Large 1.0,FBNet‑C,Inception V2,DY‑MobileNetV2×1.0,Wide ResNet‑50(edge‑popup),DY‑MobileNetV2×
0.75,DY‑ResNet‑18,ECA‑Net(MobileNetV2),MUXNet‑s,DY‑MobileNetV3‑Small,DY‑MobileNetV2×0.5,DY‑ResNet‑10,MUXNet‑xs,DY‑MobileNetV2×0.35,AlexNet。