一种基于卷积神经网络的参数填充方法与装置转让专利

申请号 : CN201910974233.4

文献号 : CN110472700B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈海波

申请人 : 深兰人工智能芯片研究院(江苏)有限公司

摘要 :

本申请提供一种基于卷积神经网络的参数填充方法与装置。该方法可以灵活的调整卷积神经网络的参数,同时对不同参数下确定的卷积神经网络的权重的形状和偏置项的形状进行填充,使得基于填充后的权重和偏置项对输入图像卷积处理得到的特征图形状与官方原配置得到的特征图形状一样,适用于按原配置设计的FPGA,无需重新设计FPGA、节省资源;且填充后权重和偏置项得到的特征图经过后续处理得到的最终预测结果与未填充前得到特征图经过后续处理得到的最终预测结果相同。

权利要求 :

1.一种基于卷积神经网络的参数填充方法,其特征在于,所述方法包括:

确定第一参数和第二参数,所述第一参数和所述第二参数用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,当输入图像输入到所述第一卷积神经网络时,所述第一权重和所述第一偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第一特征图;

确定改变后第一参数和/或第二参数的取值,基于改变后的第一参数和第二参数,确定第二卷积神经网络的第二权重的形状和第二偏置项的形状,所述第二权重和所述第二偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第二特征图;分析所述第二特征图的形状与所述第一特征图的形状,确定第二特征图的需重建形状;

根据所述需重建形状,对所述第二权重和所述第二偏置项填充特定形状的特定值,以使当所述输入图像输入所述第二卷积神经网络时,填充后的所述第二权重和所述第二偏置项对所述输入图像进行卷积得到第三特征图,所述第三特征图与所述第一特征图的形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过所述后续处理得到的最终预测结果相同。

2.如权利要求1所述的方法,其特征在于,所述第一权重包括F个滤波器,所述第一偏置项包括G个数值;对所述第二权重和所述第二偏置项进行填充,包括:对所述第二权重填充特定形状的特定值,使得填充后的所述第二权重中的滤波器个数等于所述F,使得所述第三特征图与所述第一特征图形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同;

对所述第二偏置项填充特定形状的特定值,使得填充后的所述第二偏置项中的数值个数等于所述G,使得所述第三特征图与所述第一特征图形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。

3.如权利要求2所述的方法,其特征在于,所述第一参数和所述第二参数是用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,包括:通过所述第一参数和所述第二参数以及如下公式,确定所述第一卷积神经网络的第一权重的形状和所述第一偏置项的形状:weight[anchors*(5+classes),K,1,1];

bias[anchors*(5+classes)];

其中,所述anchors是所述第一参数,所述classes是所述第二参数,所述weight是所述第一权重,所述bias是所述第一偏置项,所述weight[anchors*(5+classes),K,1,1]表示所述第一权重包括anchors*(5+classes)个形状为[K,1,1]的滤波器,所述滤波器的高度和宽度均为1;所述K是所述滤波器的深度;所述bias[anchors*(5+classes)]用于表示所述第一偏置项包括anchors*(5+classes)个数值。

4.如权利要求2所述的方法,其特征在于,所述第一权重和所述第一偏置项对所述输入图像进行卷积生成与所述输入图像对应的第一特征图,包括:通过所述第一权重和所述第一偏置项以及如下公式,生成所述输入图像对应的所述第一特征图:输入图像[B,C_in,H_in,W_in]*weight[anchors*(5+classes),K,1,1]+bias[anchors*(5+classes)]=特征图[B,C_out,H_out,W_out];

其中,所述输入图像[B,C_in,H_in,W_in]用于表征B个形状为[C_in,H_in,W_in]的图像;所述B是Batchsize,所述C_in是所述输入图像的通道数,所述H_in是所述输入图像的高度,所述W_in是所述输入图像的宽度;所述weight[anchors*(5+classes),K,1,1]用于表示所述第一权重包括anchors*(5+classes)个形状为[K,1,1]的滤波器,所述滤波器的高度和宽度均为1;所述K是所述滤波器的深度;K=C_in;所述anchors是所述第一参数,所述classes是所述第二参数,所述weight是所述第一权重;

所述bias[anchors*(5+classes)]表示所述第一偏置项包括anchors*(5+classes)个数值;

所述特征图[B,C_out,H_out,W_out]表示B个形状为[C_out,H_out,W_out]的第一特征图;所述C_out是所述第一特征图的通道数,C_out=anchors*(5+classes);所述H_out是所述第一特征图的高度,所述W_out是所述第一特征图的宽度。

5.如权利要求3所述的方法,其特征在于,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:weight[M*(5+N),K,1,1];

bias[M*(5+N)];

根据所述公式,得到第二特征图形状为[H_out,W_out,1*(5+N)];

分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:

确定需要将第所述第二特征图[H_out,W_out,1*(5+N)]重建成[H_out,W_out,P*(5+Q)];

确定所述第二特征图需重建形状为[H_out,W_out,(P*(5+Q))-(1*(5+N))];

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

6.如权利要求3所述的方法,其特征在于,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:weight[M*(5+N),K,1,1];

bias[M*(5+N)];

根据所述公式,得到第二特征图形状为[H_out,W_out,M*(5+N)];

分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:

确定需要将第所述第二特征图[H_out,W_out,M*(5+N)]重建成[H_out,W_out,P*(5+Q)];

确定所述第二特征图需重建形状包括:

将所述第二特征图拆分成M部分,所述M部分中除去最后一部分之外的其它部分中每部分需重建形状为[H_out,W_out,((P*(5+Q))/P)-(1*(5+N))],最后一部分需重建形状为[H_out,W_out,((P*(5+Q))*(M/P))-(1*(5+N))];

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

7.如权利要求3所述的方法,其特征在于,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:weight[anchors*(5+N),K,1,1];

bias[anchors*(5+N)];

根据所述公式,得到第二特征图形状为[H_out,W_out,P*(5+N)];

分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:

确定需要将所述第二特征图[H_out,W_out,P*(5+N)]重建成[H_out,W_out,P*(5+Q)];

确定所述第二特征图需重建形状包括:

将所述第二特征图拆分成P部分,每部分后面需重建形状为[H_out,W_out,(((P*(5+Q))/P)-(1*(5+N))];

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

8.如权利要求5所述的方法,其特征在于,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[M*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:对所述第二权重填充所述特定形状为[P*(5+Q)-(1*(5+N)),K,1,1]的所述特定值,即填充((P*(5+Q))-(1*(5+N)))个形状为[K,1,1]的特定值滤波器;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

9.如权利要求5所述的方法,其特征在于,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[M*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,该方法包括:对所述第二偏置项bias填充所述特定形状为[(P*(5+Q))-(1*(5+N))]的所述特定值;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

10.如权利要求6所述的方法,其特征在于,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[M*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:将weight拆分成M部分,所述M部分中除去最后一部分之外的其它部分中每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))/P)-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器,所述最后一部分填充所述特定形状为[((P*(5+Q))*(M/P))-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))*(M/P))-(1*(5+N)) )个形状为[K,1,1]的所述特定值滤波器;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

11.如权利要求6所述的方法,其特征在于,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[M*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:将bias拆分成M部分;所述M部分中除去最后一部分之外的其它部分中每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N))]的所述特定值,最后一部分填充所属特定形状为[((P*(5+Q))*(M/P))-(1*(5+N))]的所述特定值;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

12.如权利要求7所述的方法,其特征在于,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[anchors*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:将所述weight拆分成P部分,每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))/P)-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

13.如权利要求7所述的方法,其特征在于,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[anchors*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:将所述bias拆分成P部分,每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N))]的所述特定值;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

14.一种基于卷积神经网络的参数填充装置,其特征在于,包括:

确定模块,用于确定第一参数和第二参数,所述第一参数和所述第二参数用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,当输入图像输入到所述第一卷积神经网络时,所述第一权重和所述第一偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第一特征图;

所述确定模块,还用于改变第一参数和/或第二参数的取值,基于改变后的第一参数和第二参数,确定第二卷积神经网络的第二权重的形状和第二偏置项的形状,当输入图像输入到所述第二卷积神经网络时,所述第二权重和所述第二偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第二特征图;

分析模块,用于分析所述第二特征图的形状与所述第一特征图的形状,确定第二特征图的需重建形状;

填充模块,用于根据所述需重建形状对所述第二权重和所述第二偏置项填充特定形状的特定值,以使当所述输入图像输入所述第二卷积神经网络时,填充后的所述第二权重和所述第二偏置项对所述输入图像进行卷积得到第三特征图,所述第三特征图与所述第一特征图的形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。

15.如权利要求14所述的装置,其特征在于,所述第一权重包括F个滤波器,所述第一偏置项包括G个数值;所述填充模块用于对所述第二权重和所述第二偏置项进行填充,具体用于:对所述第二权重填充特定形状的特定值,使得填充后的所述第二权重中的滤波器个数等于所述F,使得第三特征图与第一特征图形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同;

对所述第二偏置项填充特定形状的特定值,使得填充后的所述第二偏置项中的数值个数等于所述G,使得第三特征图与第一特征图形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。

16.如权利要求15所述的装置,其特征在于,所述第一参数和所述第二参数是用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,包括:通过所述第一参数和所述第二参数以及如下公式,确定所述第一卷积神经网络的第一权重的形状和所述第一偏置项的形状:weight[anchors*(5+classes),K,1,1];

bias[anchors*(5+classes)];

其中,所述anchors是所述第一参数,所述classes是所述第二参数,所述weight是所述第一权重,所述bias是所述第一偏置项,所述weight[anchors*(5+classes),K,1,1]用于表示所述第一权重包括anchors*(5+classes)个形状为[K,1,1]的滤波器,所述滤波器的高度和宽度均为1;所述K是所述滤波器的深度;所述bias[anchors*(5+classes)]用于表示所述第一偏置项包括anchors*(5+classes)个数值。

17.如权利要求15所述的装置,其特征在于,所述第一权重和所述第一偏置项对所述输入图像进行卷积生成与所述输入图像对应的第一特征图,包括:通过所述第一权重和所述第一偏置项以及如下公式,生成所述输入图像的第一特征图:

输入图像[B,C_in,H_in,W_in]*weight[anchors*(5+classes),K,1,1]+bias[anchors*(5+classes)]=特征图[B,C_out,H_out,W_out];

其中,所述输入图像[B,C_in,H_in,W_in]用于表征B个形状为[C_in,H_in,W_in]的图像;所述B是Batchsize,所述C_in是所述输入图像的通道数,所述H_in是所述输入图像的高度,所述W_in是所述输入图像的宽度;

所述weight[anchors*(5+classes),K,1,1]用于表示所述第一权重包括anchors*(5+classes)个形状为[K,1,1]的滤波器,所述滤波器的高度和宽度均为1;所述K是所述滤波器的深度;K=C_in;所述anchors是所述第一参数,所述classes是所述第二参数,所述weight是所述第一权重;

所述bias[anchors*(5+classes)]表示所述第一偏置项包括anchors*(5+classes)个数值,所述bias是所述第一偏置项;

所述特征图[B,C_out,H_out,W_out]表示B个形状为[C_out,H_out,W_out]的第一特征图;所述C_out是所述第一特征图的通道数,C_out=anchors*(5+classes);所述H_out是所述第一特征图的高度,所述W_out是所述第一特征图的宽度。

18.如权利要求16所述的装置,其特征在于,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:weight[M*(5+N),K,1,1];

bias[M*(5+N)];

根据所述公式,得到第二特征图形状为[H_out,W_out,1*(5+N)];

分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:

确定需要将第所述第二特征图[H_out,W_out,1*(5+N)]重建成[H_out,W_out,P*(5+Q)];

确定所述第二特征图需重建形状为[H_out,W_out,(P*(5+Q))-(1*(5+N))];

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

19.如权利要求16所述的装置,其特征在于,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:weight[M*(5+N),K,1,1];

bias[M*(5+N)];

根据所述公式,得到第二特征图形状为[H_out,W_out,M*(5+N)];

分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:

确定需要将第所述第二特征图[H_out,W_out,M*(5+N)]重建成[H_out,W_out,P*(5+Q)];

确定所述第二特征图需重建形状包括:

将所述第二特征图拆分成M部分,所述M部分中除去最后一部分之外的其它部分中每部分需重建形状为[H_out,W_out,((P*(5+Q))/P)-(1*(5+N))],最后一部分需重建形状为[H_out,W_out,((P*(5+Q))*(M/P))-(1*(5+N))];

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

20.如权利要求16所述的装置,其特征在于,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:weight[anchors*(5+N),K,1,1];

bias[anchors*(5+N)];

根据所述公式,得到第二特征图形状为[H_out,W_out,P*(5+N)];

分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:

确定需要将所述第二特征图[H_out,W_out,P*(5+N)]重建成[H_out,W_out,P*(5+Q)];

确定所述第二特征图需重建形状包括:

将所述第二特征图拆分成P部分,每部分后面需重建形状为[H_out,W_out,(((P*(5+Q))/P)-(1*(5+N))];

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

21.如权利要求18所述的装置,其特征在于,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[M*(5+N),K,

1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:

对所述第二权重填充所述特定形状为[P*(5+Q)-(1*(5+N)),K,1,1]的所述特定值,即填充((P*(5+Q))-(1*(5+N)))个形状为[K,1,1]的特定值滤波器;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

22.如权利要求18所述的装置,其特征在于,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[M*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:对所述第二偏置项bias填充所述特定形状为[(P*(5+Q))-(1*(5+N))]的所述特定值;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

23.如权利要求19所述的装置,其特征在于,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[M*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:将weight拆分成M部分,所述M部分中除去最后一部分之外的其它部分中每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))/P)-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器,所述最后一部分填充所述特定形状为[((P*(5+Q))*(M/P))-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))*(M/P))-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

24.如权利要求19所述的装置,其特征在于,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[M*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:将bias拆分成M部分;所述M部分中除去最后一部分之外的其它部分中每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N))]的所述特定值,最后一部分填充所属特定形状为[((P*(5+Q))*(M/P))-(1*(5+N))]的所述特定值;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

25.如权利要求20所述的装置,其特征在于,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[anchors*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:将所述weight拆分成P部分,每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))/P)-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

26.如权利要求20所述的装置,其特征在于,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[anchors*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:将所述bias拆分成P部分,每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N))]的所述特定值;

其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。

27.一种电子设备,其特征在于,包括至少一个处理器和存储器;

所述存储器用于存储一个或多个计算机程序;当所述存储器存储的一个或多个计算机程序被所述至少一个处理器执行时,使得所述电子设备能够实现如权利要求1-13任一所述的方法。

28.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至13任一所述的方法。

说明书 :

一种基于卷积神经网络的参数填充方法与装置

技术领域

[0001] 本申请涉及现场可编程门阵列FPGA实现卷积神经网络领域,尤其涉及一种基于卷积神经网络的参数填充方法与装置。

背景技术

[0002] 随着人工智能的不断发展,人工智能在机器视觉、语音识别以及自然语言处理等领域都取得了重大突破。卷积神经网络(Convolutional Neural Network,CNN)在人工智能领域受到越来越多的青睐,它是深度学习技术中极具代表性的学习算法之一,它利用空间关系,采用权值共享网络结构,使之更类似于生物神经网络,降低了网络模型的复杂度并减少了权值的数量,提高了一般算法的训练性能。卷积神经网络的这些优点使得它成为当前语音分析和图像识别领域的研究热点。
[0003] 随着网络变得越来越大、越来越复杂,我们需要大量的计算资源来对其进行训练,因此人们纷纷将注意力转向现场可编程门阵列(Field Programmable Gate Array,FPGA)器件,FPGA不仅具有软件的可编程性和灵活性,同时又有专用集成电路(Application Specific Integrated Circuit,ASIC)高吞吐和低延迟的特性,而且由于具有丰富的I/O接口,FPGA还非常适合用作CNN硬件加速器。CNN硬件加速器提供更多更先进的特性,比如图像分类、物体识别和追踪、人脸和语音识别、自然语言处理等,将先进的人工智能网络应用到自动化生产、控制等场景中,提高相关行业的生产力为用户带来更好的服务。
[0004] 现有技术中,FPGA往往是依据某一神经网络的固定网络结构(参数结构),也就是网络的固定配置,实现该网络对图像或视频流进行物体检测或目标识别等。一旦按照实际应用调整该卷积神经网络的相关配置参数重新训练,得到稍异于原结构(一般指官方网络结构)的新结构时,那么这套按照该固定配置实现的FPGA将无法重复利用,需要重新设计。FPGA内部算法、计算单元、主控调度单元需要大量改动,耗费大量资源。

发明内容

[0005] 本申请提出一种基于卷积神经网络的参数填充方法,该方法可以灵活的调整卷积神经网络的参数,通过分析不同于原结构的特征图,对不同于原结构(一般指官方网络结构)的参数进行填充,使其形状和原结构的形状相同,进而生成和原结构形状相同的特征图,并且不改变自身的后续效果,可以直接用于按原网络结构设计好FPGA,无需重新设计、节省资源。
[0006] 第一方面,本申请提供一种基于卷积神经网络的参数填充方法,该方法包括:
[0007] 确定第一参数和第二参数,所述第一参数和所述第二参数用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,当输入图像输入到所述第一卷积神经网络时,所述第一权重和所述第一偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第一特征图;
[0008] 确定改变后第一参数和/或第二参数的取值,基于改变后的第一参数和第二参数,确定第二卷积神经网络的第二权重的形状和第二偏置项的形状,所述第二权重和所述第二偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第二特征图;分析所述第二特征图的形状与所述第一特征图的形状,确定第二特征图的需重建形状;
[0009] 根据所述需重建形状,对所述第二权重和所述第二偏置项填充特定形状的特定值,以使当所述输入图像输入所述第二卷积神经网络时,填充后的所述第二权重和所述第二偏置项对所述输入图像进行卷积得到第三特征图,所述第三特征图与所述第一特征图的形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过所述后续处理得到的最终预测结果相同。
[0010] 可选的,所述第一权重包括F个滤波器,所述第一偏置项包括G个数值;对所述第二权重和所述第二偏置项进行填充,包括:
[0011] 对所述第二权重填充特定形状的特定值,使得填充后的所述第二权重中的滤波器个数等于所述F,使得所述第三特征图与所述第一特征图形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同;
[0012] 对所述第二偏置项填充特定形状的特定值,使得填充后的所述第二偏置项中的数值个数等于所述G,使得所述第三特征图与所述第一特征图形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。
[0013] 可选的,所述第一参数和所述第二参数是用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,包括:
[0014] 通过所述第一参数和所述第二参数以及如下公式,确定所述第一卷积神经网络的第一权重的形状和所述第一偏置项的形状:
[0015] weight[anchors*(5+classes),K,1,1];
[0016] bias[anchors*(5+classes)];
[0017] 其中,所述anchors是所述第一参数,所述classes是所述第二参数,所述weight是所述第一权重,bias是所述第一偏置项,所述K是所述滤波器的深度。
[0018] 可选的,所述第一权重和所述第一偏置项对所述输入图像进行卷积生成与所述输入图像对应的第一特征图,包括:
[0019] 通过所述第一权重和所述第一偏置项以及如下公式,生成所述输入图像对应的所述第一特征图:
[0020] 输入图像[B,C_in,H_in,W_in]*weight[anchors*(5+classes),K,1,1]+bias[anchors*(5+classes)]=特征图[B,C_out,H_out,W_out];
[0021] 其中,所述B是Batchsize,C_in是所述输入图像的通道数,所述H_in是所述输入图像的高度,所述W_in是所述输入图像的宽度;所述anchors是所述第一参数,所述classes是所述第二参数,所述weight是所述第一权重,所述bias是所述第一偏置项;所述K是所述第一权重中的滤波器的通道数,K=C_in;所述C_out是所述第一特征图的通道数,C_out=anchors*(5+classes);所述H_out是所述第一特征图的高度,所述W_out是所述第一特征图的宽度。
[0022] 可选的,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:
[0023] weight[M*(5+N),K,1,1];
[0024] bias[M*(5+N)];
[0025] 根据所述公式,得到第二特征图形状为[H_out,W_out,1*(5+N)];
[0026] 分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:
[0027] 确定需要将第所述第二特征图[H_out,W_out,1*(5+N)]重建成[H_out,W_out,P*(5+Q)];
[0028] 确定所述第二特征图需重建形状为[H_out,W_out,(P*(5+Q))-(1*(5+N))];
[0029] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0030] 可选的,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:
[0031] weight[M*(5+N),K,1,1];
[0032] bias[M*(5+N)];
[0033] 根据所述公式,得到第二特征图形状为[H_out,W_out,M*(5+N)];
[0034] 分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:
[0035] 确定需要将第所述第二特征图[H_out,W_out,M*(5+N)]重建成[H_out,W_out,P*(5+Q)];
[0036] 确定所述第二特征图需重建形状包括:
[0037] 将所述第二特征图拆分成M部分,所述M部分中除去最后一部分之外的其它部分中每部分需重建形状为[H_out,W_out,((P*(5+Q))/P)-(1*(5+N))],最后一部分需重建形状为[H_out,W_out,((P*(5+Q))*(M/P))-(1*(5+N))];
[0038] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0039] 可选的,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:
[0040] weight[anchors*(5+N),K,1,1];
[0041] bias[anchors*(5+N)];
[0042] 根据所述公式,得到第二特征图形状为[H_out,W_out,P*(5+N)];
[0043] 分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:
[0044] 确定需要将所述第二特征图[H_out,W_out,P*(5+N)]重建成[H_out,W_out,P*(5+Q)];
[0045] 确定所述第二特征图需重建形状包括:
[0046] 将所述第二特征图拆分成P部分,每部分后面需重建形状为[H_out,W_out,(((P*(5+Q))/P)-(1*(5+N))];
[0047] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0048] 可选的,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[M*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:
[0049] 对所述第二权重填充所述特定形状为[P*(5+Q)-(1*(5+N)),k,1,1]的所述特定值,即填充((P*(5+Q))-(1*(5+N)))个形状为[K,1,1]的特定值滤波器;
[0050] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0051] 可选的,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[M*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:
[0052] 对所述第二偏置项bias填充所述特定形状为[(P*(5+Q))-(1*(5+N))]的所述特定值;
[0053] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0054] 可选的,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[M*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:
[0055] 将weight拆分成M部分,所述M部分中除去最后一部分之外的其它部分中每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))/P)-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器,所述最后一部分填充所述特定形状为[((P*(5+Q))*(M/P))-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))*(M/P))-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器;
[0056] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0057] 可选的,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[M*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:
[0058] 将bias拆分成M部分;所述M部分中除去最后一部分之外的其它部分中每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N))]的所述特定值,最后一部分填充所属特定形状为[((P*(5+Q))*(M/P))-(1*(5+N))]的所述特定值;
[0059] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0060] 可选的,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[anchors*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:
[0061] 将所述weight拆分成P部分,每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))/P)-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器;
[0062] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0063] 可选的,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[anchors*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:
[0064] 将所述bias拆分成P部分,每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N))]的所述特定值;
[0065] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0066] 第二方面,还提供了一种基于卷积神经网络的参数填充装置,包括:
[0067] 确定模块,用于确定第一参数和第二参数,所述第一参数和所述第二参数用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,当输入图像输入到所述第一卷积神经网络时,所述第一权重和所述第一偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第一特征图;
[0068] 所述确定模块,还用于改变第一参数和/或第二参数的取值,基于改变后的第一参数和第二参数,确定第二卷积神经网络的第二权重的形状和第二偏置项的形状,当输入图像输入到所述第二卷积神经网络时,所述第二权重和所述第二偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第二特征图;
[0069] 分析模块,用于分析所述第二特征图的形状与所述第一特征图的形状,确定第二特征图的需重建形状;
[0070] 填充模块,用于根据所述需重建形状对所述第二权重和所述第二偏置项填充特定形状的特定值,以使当所述输入图像输入所述第二卷积神经网络时,填充后的所述第二权重和所述第二偏置项对所述输入图像进行卷积得到第三特征图,所述第三特征图与所述第一特征图的形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。
[0071] 可选的,所述装置用于对所述第二权重和所述第二偏置项进行填充时,具体用于包括:
[0072] 对所述第二权重填充特定形状的特定值,使得填充后的所述第二权重中的滤波器个数等于所述F,使得第三特征图与第一特征图形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同;
[0073] 对所述第二偏置项填充特定形状的特定值,使得填充后的所述第二偏置项中的数值个数等于所述G,使得第三特征图与第一特征图形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。
[0074] 可选的,所述第一参数和所述第二参数是用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,包括:
[0075] 通过所述第一参数和所述第二参数以及如下公式,确定所述第一卷积神经网络的第一权重的形状和所述第一偏置项的形状:
[0076] weight[anchors*(5+classes),K,1,1];
[0077] bias[anchors*(5+classes)];
[0078] 其中,所述anchors是所述第一参数,所述classes是所述第二参数,所述weight是所述第一权重,bias是所述第一偏置项,所述K是所述滤波器的深度。
[0079] 可选的,所述第一权重和所述第一偏置项对所述输入图像进行卷积生成与所述输入图像对应的第一特征图,包括:
[0080] 通过所述第一权重和所述第一偏置项以及如下公式,生成所述输入图像的第一特征图:
[0081] 输入图像[B,C_in,H_in,W_in]*weight[anchors*(5+classes),K,1,1]+bias[anchors*(5+classes)]=特征图[B,C_out,H_out,W_out];
[0082] 其中,所述B是Batchsize,C_in是所述输入图像的通道数,所述H_in是所述输入图像的高度,所述W_in是所述输入图像的宽度;所述anchors是所述第一参数,所述classes是所述第二参数,所述weight是所述第一权重,所述bias是所述第一偏置项;所述K是所述第一权重中的滤波器的通道数,K=C_in;所述C_out是所述第一特征图的通道数,C_out=anchors*(5+classes);所述H_out是所述第一特征图的高度,所述W_out是所述第一特征图的宽度。
[0083] 可选的,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:
[0084] weight[M*(5+N),K,1,1];
[0085] bias[M*(5+N)];
[0086] 根据所述公式,得到第二特征图形状为[H_out,W_out,1*(5+N)];
[0087] 分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:
[0088] 确定需要将第所述第二特征图[H_out,W_out,1*(5+N)]重建成[H_out,W_out,P*(5+Q)];
[0089] 确定所述第二特征图需重建形状为[H_out,W_out,(P*(5+Q))-(1*(5+N))];
[0090] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0091] 可选的,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:
[0092] weight[M*(5+N),K,1,1];
[0093] bias[M*(5+N)];
[0094] 根据所述公式,得到第二特征图形状为[H_out,W_out,M*(5+N)];
[0095] 分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:
[0096] 确定需要将第所述第二特征图[H_out,W_out,M*(5+N)]重建成[H_out,W_out,P*(5+Q)];
[0097] 确定所述第二特征图需重建形状包括:
[0098] 将所述第二特征图拆分成M部分,所述M部分中除去最后一部分之外的其它部分中每部分需重建形状为[H_out,W_out,((P*(5+Q))/P)-(1*(5+N))],最后一部分需重建形状为[H_out,W_out,((P*(5+Q))*(M/P))-(1*(5+N))];
[0099] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0100] 可选的,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;基于改变后的所述第一参数和所述第二参数确定的所述第二卷积神经网络的所述第二权重的形状和所述第二偏置项的形状为:
[0101] weight[anchors*(5+N),K,1,1];
[0102] bias[anchors*(5+N)];
[0103] 根据所述公式,得到第二特征图形状为[H_out,W_out,P*(5+N)];
[0104] 分析所述第二特征图与所述第一特征图形状确定第二特征图需重建形状,包括:
[0105] 确定需要将所述第二特征图[H_out,W_out,P*(5+N)]重建成[H_out,W_out,P*(5+Q)];
[0106] 确定所述第二特征图需重建形状包括:
[0107] 将所述第二特征图拆分成P部分,每部分后面需重建形状为[H_out,W_out,(((P*(5+Q))/P)-(1*(5+N))];
[0108] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0109] 可选的,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[M*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:
[0110] 对所述第二权重填充所述特定形状为[P*(5+Q)-(1*(5+N)),k,1,1]的所述特定值,即填充((P*(5+Q))-(1*(5+N)))个形状为[K,1,1]的特定值滤波器;
[0111] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0112] 可选的,当所述anchors改变为M,且M=1,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[M*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:
[0113] 对所述第二偏置项bias填充所述特定形状为[(P*(5+Q))-(1*(5+N))]的所述特定值;
[0114] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0115] 可选的,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[M*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:
[0116] 将weight拆分成M部分,所述M部分中除去最后一部分之外的其它部分中每部分填充所述特定形状为[((P*(5+Q))/P)_-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))/P)-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器,所述最后一部分填充所述特定形状为[((P*(5+Q))*(M/P))-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))*(M/P))-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器;
[0117] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0118] 可选的,当所述anchors改变为M,且M为不等于1的正整数,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[M*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:
[0119] 将bias拆分成M部分;所述M部分中除去最后一部分之外的其它部分中每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N))]的所述特定值,最后一部分填充所属特定形状为[((P*(5+Q))*(M/P))-(1*(5+N))]的所述特定值;
[0120] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0121] 可选的,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二权重为weight[anchors*(5+N),K,1,1],依据所述第二特征图需重建形状,对所述第二权重进行填充,包括:
[0122] 将所述weight拆分成P部分,每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N)),K,1,1]的所述特定值,即填充(((P*(5+Q))/P)-(1*(5+N)))个形状为[K,1,1]的所述特定值滤波器;
[0123] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0124] 可选的,当所述anchors=P,所述classes改变为N,且N为(0,80]之间的任意正整数时;所述第二偏置项为bias[anchors*(5+N)],依据所述第二特征图需重建形状,对所述第二偏置项进行填充,包括:
[0125] 将所述bias拆分成P部分,每部分填充所述特定形状为[((P*(5+Q))/P)-(1*(5+N))]的所述特定值;
[0126] 其中,所述P是所述anchors改变之前的取值,所述Q是所述classes改变之前的取值。
[0127] 第三方面,本申请实施例还提供一种电子设备。该电子设备包括至少一个处理器和存储器;所述存储器用于存储一个或多个计算机程序;当所述存储器存储的一个或多个计算机程序被所述至少一个处理器执行时,使得所述电子设备能够实现上述第一方面及其第一方面任一可能设计的技术方案。
[0128] 第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行本申请实施例第一方面及其第一方面任一可能设计的技术方案。
[0129] 第五方面,本申请实施例的中一种程序产品,包括指令,当所述程序产品在电子设备上运行时,使得所述电子设备执行本申请实施例第一方面及其第一方面任一可能设计的技术方案。
[0130] 本申请中,所述电子设备可以改变用于确定第一卷积神经网络的第一参数和第二参数的取值,或者,FPGA可以接收其它设备发送的第一参数和第二参数改变之后的值。以确定的第二卷积神经网络的第二权重的形状(shape)和第二偏置项的形状(shape),分析第二特征图需重建部分,然后对第二权重和第二偏置项进行填充。填充之后的第二权重和第二偏置项可生成第三特征图,且所述第三特征图与第一参数和第二参数未改变之前的第一卷积神经网络对应的第一特征图形状(shape)相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。该方法可以灵活的调整卷积神经网络的参数,适用于按原配置设计的FPGA,无需重新设计FPGA、节省资源。

附图说明

[0131] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0132] 图1为本申请提供的一种卷积神经网络的参数填充方法的流程示意图;
[0133] 图2为本申请提供的anchors=3,classes=80时所述第一卷积神经网络的第一特征图生成示意图;
[0134] 图3A为本申请提供的anchors=1,classes=(0,80]时所述第二卷积神经网络的第二特征图生成示意图;
[0135] 图3B为本申请提供的anchors=1,classes=(0,80]时所述第二卷积神经网络的权重和偏置项填充之后得到第三特征图生成示意图;
[0136] 图4A为本申请提供的anchors=2,classes=(0,80]时所述第二卷积神经网络的第二特征图生成示意图;
[0137] 图4B为本申请提供的anchors=2,classes=(0,80]时所述第二卷积神经网络的权重和偏置项填充之后得到第三特征图生成示意图;
[0138] 图5A为本申请提供的anchors=3,classes=(0,80]时所述第二卷积神经网络的第二特征图生成示意图;
[0139] 图5B为本申请提供的anchors=3,classes=(0,80]时所述第二卷积神经网络的权重和偏置项填充得到第三特征图生成示意图;
[0140] 图6为本申请提供的一种卷积神经网络的参数填充装置示意图。

具体实施方式

[0141] 为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,能够以不同于此处的顺序执行所示出或描述的步骤。
[0142] 本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0143] 本申请实施例中,“至少一个”可以表示一个或者至少两个,例如可以是一个、两个、三个或者更多个,本申请实施例不做限制。
[0144] 另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
[0145] 以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
[0146] (1)卷积神经网络
[0147] 卷积神经网络是一种有监督的网络,卷积神经网络从本质上来看是一种输入到输出的映射,它通过用大量的样本进行网络训练,构造输入和输出之间的映射关系。
[0148] 在本申请实施例中,卷积神经网络指的是yolov3/yolov3-tiny网络得到输出特征图对应的卷积层。卷积神经网络可以包括权重以及偏置项。其中,权重可以表述为weight[F,C,H,W],也就是说权重由F个大小为[C,H,W]的滤波器组成,偏置项为bias[G],由G个数值组成。其中C表示滤波器的深度,H表示滤波器的高度,W表示滤波器的宽度。其中,当输入图像输入到卷积神经网络时,滤波器可以对输入图像作卷积处理。
[0149] 例如,在yolov3-tiny算法中,上述F=G=anchors*(5+classes)=P*(5+Q),其中P=3,Q=80,F=G=255;即滤波器的个数是255,C可以是512、256。在yolov3算法中,C可以是1024,512,256。
[0150] (2)输入图像
[0151] 在本申请实施例中,卷积神经网络层是yolov3或yolov3-tiny中的得到输出结果的卷积层,输入图像是所述卷积神经网络层的上一层的输出结果。
[0152] (3)anchors
[0153] anchors是确定所述卷积神经网络层中滤波器以及偏置个数的一个参数,下文简称anchors为第一参数,是根据自行训练需要选定的值,本申请实施例不作限定。
[0154] (4)classes
[0155] classes是确定所述卷积神经网络层中滤波器以及偏置个数的一个参数,下文简称classes为第二参数,是根据自行训练需要选定的值,本申请实施例不作限定。
[0156] (5)官方卷积神经网络
[0157] 如前文所述,卷积神经网络参数可以包括权重和偏置项,权重的形状可以是基于anchors和classes确定的,权重可以表示为weight[anchors*(5+classes),K,1,1],偏置项可以表示为bias[anchors*(5+classes)]。
[0158] (6)后续处理
[0159] 后续处理是指卷积神经网络对所述第三特征图进行一系列的处理,比如sigmoid,非极大值抑制等等。例如,所述第三特征图经过yolov3后续处理得到的预测结果与第二特征图经过yolov3后续处理得到的预测结果一样。
[0160] 在本申请实施例中,官方卷积神经网络可以是anchors=P=3,classes=Q=80时对应的卷积神经网络,也就是说,官方卷积神经网络是anchors和classes等于特定值时的卷积神经网络。
[0161] 本申请实施例还提供了一种神经网络芯片即FPGA,其作为一种计算密集型加速部件,通过将算法映射到FPGA上的并行硬件进行加速。FPGA上所设计的各个硬件模块可以并行执行。各个硬件模块输入输出的相互连接以及FPGA所提供的流水结构可以很好地和卷积网络算法相匹配,充分利用算法网络结构内部的并行性在提高运算速度的同时缩小了能耗。
[0162] 本申请实施例提供一种卷积神经网络的参数填充方法,该方法可以适用于电子设备,例如电脑。请参见图1,该方法的流程描述如下:
[0163] S101:确定第一参数和第二参数,所述第一参数和所述第二参数用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,所述第一权重和所述第一偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第一特征图。
[0164] 所述第一参数和所述第二参数是用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,该方法包括:
[0165] 通过所述第一参数和所述第二参数以及如下公式,确定所述第一权重的形状和所述第一偏置项的形状:
[0166] weight[anchors*(5+classes),K,1,1];
[0167] bias[anchors*(5+classes)];
[0168] 其中,所述anchors是所述第一参数,所述classes是所述第二参数,weight是所述第一权重,bias是所述第一偏置项,所述K是所述滤波器的深度。
[0169] 进一步地,所述第一权重和所述第一偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第一特征图,该方法包括:
[0170] 通过所述第一权重和所述第一偏置项以及如下公式,生成所述输入图像的第一特征图;
[0171] 输入图像[B,C_in,H_in,W_in]*weight[anchors*(5+classes),K,1,1]+bias[anchors*(5+classes)]=特征图[B,C_out,H_out,W_out];
[0172] 其中,所述特征图的形状可以表示为[H_out,W_out,C_out],所述B是Batchsize,C_in是所述输入图像的通道数,所述H_in是所述输入图像的高度,所述W_in是所述输入图像的宽度。所述anchors是所述第一参数,所述classes是所述第二参数,所述weight是所述第一权重,所述bias是所述第一偏置项;所述K是所述第一权重中的滤波器的通道数,K=C_in,所述C_out是所述第一特征图的通道数,C_out=anchors*(5+classes),所述H_out是所述第一特征图的高度,所述W_out是所述第一特征图的宽度,所述C_out,H_out,W_out的顺序本申请实施例不做具体的限定。
[0173] 所述第一特征图在yolov3算法中可以是三个特征图,在yolov3-tiny算法中可以是两个特征图,下文的实施例均以yolov3-tiny算法中的一个特征图为例。
[0174] 在官方卷积神经网络中,请参见图2,所述第一参数anchors=P=3,所述第二参数classes=Q=80,基于所述第一参数和第二参数确定的所述第一卷积神经网络的第一权重的形状和第一偏置项的形状为:
[0175] weight[3*(5+80),K,1,1]
[0176] bias[3*(5+80)]
[0177] 其中,所述第一卷积神经网络为yolov3-tiny算法的最后一层网络结构且包含F个[K,1,1]形状的滤波器和G个bias的数值,其中F=G=3*(5+80)=255,滤波器的深度为K可以是512,256。在yolov3算法中,K可以是1024,512,256。
[0178] 在此实施例中,通过如下公式得到所述第一特征图:
[0179] 输入图像[B,C_in,H_in,W_in]*weight[anchors*(5+classes),K,1,1][0180] +bias[anchors*(5+classes)]=特征图[B,C_out,H_out,W_out];
[0181] 得到的特征图的深度、高度和宽度分别为C_out、H_out、W_out,其中两组特征图的形状可以表示为[13,13,255],[26,26,255],本申请的实施例均以形状为[13,13,255]的特征图作为本申请所述第一特征图进行描述。
[0182] S102:改变第一参数和/或第二参数的取值,基于改变后的第一参数和第二参数,确定第二卷积神经网络的第二权重的形状和第二偏置项的形状与得到的第二特征图的形状,分析第二特征图与第一特征图的形状差异部分;
[0183] 如前文所述,官方卷积神经网络中第一参数(anchors)是固定值3,第二参数(classes)是固定值80。本申请中,S102中,可以将第一参数改变为1、2,将第二参数改变为(0,80]内的整数,本申请实施例不作限定。
[0184] 第一参数和/或第二参数改变会产生以下三种情况,本申请以下内容针对这三种情况进行介绍。
[0185] 基于所述第二权重和所述第二偏置项对所述输入图像进行卷积得到第二特征图的处理方式可以类似于上述第一权重和第一偏置项对输入图像的处理得到第一特征图的方式,在此不重复赘述。
[0186] 以下内容将给出具体的例子以介绍上述的方案。
[0187] 第一种情况,请参见图3A,图3A为本申请提供的anchors=1,classes=(0,80]时所述第二卷积神经网络的第二特征图生成示意图;当anchors改变为1(即M=1),所述classes改变为N,其中,N是介于(0,80]的整数,基于所述第一参数和第二参数确定的所述第二卷积神经网络的第二权重的形状和第二偏置项的形状为:
[0188] weight[1*(5+N),512,1,1];
[0189] bias[1*(5+N)];
[0190] 根据所述第二权重和所述第二偏置项得到第二特征图,第二特征图形状表示成[13,13,1*(5+N)]。
[0191] 如图3A所示,权重与偏置项及特征图形状与官方(如图2所示)不同。
[0192] 所以,本申请实施例需要将第二特征图的形状[13,13,1*(5+N)]重建成[13,13,255]。如图3B所示,图3B为本申请提供的anchors=1,classes=(0,80]时所述第二卷积神经网络的权重和偏置项填充之后得到第三特征图生成示意图,在第二特征图需重建形状为[13,13,255-(1*(5+N))]。
[0193] 第二种情况,参见图4A,图4A为本申请提供的anchors=2,classes=(0,80]时所述第二卷积神经网络的第二特征图生成示意图;当所述anchors改变为2(M=2),所述classes改变为N,其中,N是介于(0,80]的整数,基于所述第一参数和第二参数确定的所述第二卷积神经网络的第二权重的形状和第二偏置项的形状为:
[0194] weight[2*(5+N),512,1,1];
[0195] bias[2*(5+N)];
[0196] 根据所述第二权重和所述第二偏置项得到第二特征图,第二特征图形状表示成[13,13,2*(5+N)]。
[0197] 如图4A所示,权重与偏置项及特征图形状与第一特征图形状(如图2所示)不同。
[0198] 所以,本申请实施例需要将第二特征图的形状[13,13,2*(5+N)]重建成[13,13,255]。如图4B所示,图4B为本申请提供的anchors=2,classes=(0,80]时所述第二卷积神经网络的权重和偏置项填充之后得到第三特征图生成示意图;将第二特征图拆分成两部分,第一部分后面重建形状为[13,13,((255/3))-(1*(5+N))],最后一部分填充形状为[13,13,(255*(2/3))-(1*(5+N))]。
[0199] 第三种情况,参见图5A,图5A为本申请提供的anchors=3,classes=(0,80]时所述第二卷积神经网络的第二特征图生成示意图;所述anchors=P=3,所述classes改变为N,其中N是介于(0,80]的整数时,基于所述第一参数和第二参数确定的所述第二卷积神经网络的第二权重的形状和第二偏置项的形状为:
[0200] weight[3*(5+N),K,1,1];
[0201] bias[3*(5+N)];
[0202] 根据所述第二权重和所述第二偏置项得到第二特征图,第二特征图形状表示成[13,13,3*(5+N)];
[0203] 如图5A所示,权重与偏置项及特征图形状与官方(如图2所示)不同。
[0204] 所以,如图5B所示,图5B为本申请提供的anchors=3,classes=(0,80]时所述第二卷积神经网络的权重和偏置项填充得到第三特征图生成示意图;本申请实施例需要将第二特征图[13,13,3*(5+N)]重建成[13,13,255]。将第二特征图拆分成3部分,每部分后面重建形状为[13,13,((255/3))-(1*(5+N))]。
[0205] S103:改变第一参数和/或第二参数的取值,根据第二特征图需重建部分,对对应所述第二权重和所述第二偏置项进行填充。
[0206] 如前文所述,官方卷积神经网络中第一参数(anchors)是固定值3,第二参数(classes)是固定值80。本申请中,S103中,可以将第一参数改变为1、2,将第二参数改变为(0,80]内的整数,本申请实施例不作限定。
[0207] 由于改变第一参数和/或第二参数的取值,第一参数和或第二参数的必然会引起基于其确定的第二卷积神经网络的第二权重的形状和第二偏置项的形状不同于官方卷积神经网络中的第一权重的形状和第一偏置项的形状,所以基于第二卷积神经网络对输入图像进行卷积得到的第二特征图,与基于官方卷积神经网络对输入图像进行卷积得到的第一特征图形状不同,所以,需要对第二卷积神经网络中的第二权重和第二偏置项进行填充,实现第二特征图重建得到第三特征图,所述第三特征图与所述第一特征图的形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。
[0208] 依据对应情况第二特征图需重建部分,填充所述第二权重和所述第二偏置项,基于填充之后的所述第二权重和所述第二偏置项对所述输入图像进行卷积得到的第三特征图,所述第三特征图与第一特征图形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。
[0209] 示例性的,得到第三特征图的方式可以类似于得到第一特征图的方式,在此不重复赘述。
[0210] 以下内容将给出具体的填充例子以介绍上述的方案。
[0211] 请参见图3A,当anchors改变为1(即M=1),所述classes改变为N,其中,N是介于(0,80]的整数,得到第二权重为weight[1*(5+N),512,1,1],第二偏置项为bias[1*(5+N)]。
[0212] 依据对应第二特征图需重建部分,本申请实施例将weight由[1*(5+N),512,1,1]填充成[255,512,1,1],如图3B所示,在weight后面填充形状为[1*(5+N),512,1,1]的值,即填充(255-(1*(5+N))个形状为[512,1,1]的滤波器,填充部分为图3B所示的虚线框部分。
[0213] 将bias由[1*(5+N)]填充成[255],如图3B所示,在bias后面填充形状为[(255-(1*(5+N))]的数值,填充部分为图3B所示的阴影部分。
[0214] 所填充值由网络后续处理决定,为了避免对有效结果产生影响,weight填充0值,同时应使得:y=sigmoid(x),x即填充值,x越小,y就越小,y要尽可能小,所以bias填充当前数据类型的最小值。假设bias的当前数据类型是int16,其数据范围为[-32768,32767],则填充最小值-32768。填充值数据类型与当前weight、bias数据类型相同。
[0215] 如图3B所示,填充后的weight和bias的形状与图2所示的weight和bias的形状一致,生成的特征图如图3B所示,形状与图2所示的特征图的形状一致,可应用于按官方配置设计的FPGA。
[0216] 参见图4A,当所述anchors改变为2(M=2),所述classes改变为N,其中,N是介于(0,80]的整数,得到第二权重的形状为weight[2*(5+N),512,1,1],第二偏置项的形状为bias[2*(5+N)]。
[0217] 依据对应第二特征图需重建部分,本实施例将weight[2*(5+N),512,1,1]填充成[255,512,1,1],如图4B所示,将weight拆分成两部分,第一部分后面填充形状为[(255/3)-(1*(5+N)),512,1,1]的值,即填充[(255/3)-(1*(5+N))]个形状为[512,1,1]的滤波器,最后一部分填充形状为[(255*(2/3))-(1*(5+N)),512,1,1]的值,即填充(255*(2/3))-(1*(5+N))个形状为[512,1,1]的滤波器,填充部分为图4B所示的虚线框部分。
[0218] 将bias由[2*(5+N)]填充成[255],如图4B所示,将bias拆分成两部分,第一部分填充形状为[((255/3)-(1*(5+N))]的数值,最后一部分填充形状为[((255*(2/3))-(1*(5+N))]的数值,填充部分为图4B所示的阴影部分。
[0219] 所填充值由网络后续处理决定,为了避免对有效结果产生影响,weight填充0值,同时应使得:y=sigmoid(x)尽可能小,又x即填充值,x越小,y就越小,所以bias填充当前数据类型的最小值。假设bias的当前数据类型是int16,其数据范围为[-32768,32767],则填充最小值-32768。填充值数据类型与当前weight、bias数据类型相同。
[0220] 如图4B所示,填充后的weight和bias的形状与图2所示的weight和bias的形状一致,生成的特征图如图4B所示,形状与图2所示的特征图的形状一致,可应用于按官方配置设计的FPGA。
[0221] 参见图5A,所述anchors=P=3,所述classes改变为N时,其中N是介于(0,80]的整数,得到第二权重的形状为weight[3*(5+N),K,1,1],第二偏置项的形状为bias[3*(5+N)]。
[0222] 依据对应第二特征图需重建部分,本实施例将weight[3*(5+N),512,1,1]填充成[255,512,1,1],如图5B所示,将weight拆分成3部分,每部分填充形状为[((255/3)-(1*(5+N)),512,1,1]的值,即填充((255/3)-(1*(5+N))个形状为[512,1,1]的滤波器,填充部分为图5B所示的虚线框部分。
[0223] 将bias由[3*(5+N)]填充成[255],如图5B所示,将bias拆分成3部分,每部分填充形状为[(255/3)-(1*(5+N))]的数值,填充部分为图5B所示的阴影部分。
[0224] 所填充值由网络后续处理决定,为了避免对有效结果产生影响,weight填充0值,同时应使得:y=sigmoid(x)尽可能小,又x即填充值,x越小,y就越小,所以bias填充当前数据类型的最小值。假设bias的当前数据类型是int16,其数据范围为[-32768,32767],则填充最小值-32768。填充值数据类型与当前weight、bias数据类型相同。
[0225] 如图5B所示,填充后的weight和bias的形状与图2所示的weight和bias的形状一致,生成的特征图如图5B所示,形状与图2所示的特征图的形状一致,可应用于按官方配置设计的FPGA。
[0226] 本申请实施例中待检测的图像和所述第二权重和第二偏置项输入按官方形状的权重和偏置项的配置好的FPGA,可正常运行且结果相同。
[0227] 图6为本申请实施例提供的一种基于卷积神经网络的参数填充装置示意图,该装置包括:
[0228] 确定模块601,用于确定第一参数和第二参数,所述第一参数和所述第二参数用于确定第一卷积神经网络的第一权重的形状和第一偏置项的形状,当所述输入图像输入到所述第一卷积神经网络时,所述第一权重和所述第一偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第一特征图;
[0229] 分析模块602,用于改变第一参数和/或第二参数的取值,基于改变后的第一参数和第二参数,确定第二卷积神经网络的第二权重的形状和第二偏置项的形状,当所述输入图像输入到所述第二卷积神经网络时,所述第一权重和所述第一偏置项用于对所述输入图像进行卷积生成与所述输入图像对应的第二特征图,用于分析所述第二特征图的形状与所述第一特征图的形状,确定第二特征图的需重建形状;
[0230] 填充模块603,用于对所述第二权重和所述第二偏置项进行填充,以使当所述输入图像输入所述第二卷积神经网络时,填充后的所述第二权重和所述第二偏置项对所述输入图像进行卷积得到第三特征图,所述第三特征图与所述第一特征图的形状相同,且所述第三特征图经过后续处理得到的最终预测结果与所述第二特征图经过后续处理得到的最终预测结果相同。
[0231] 参见图3A,当anchors改变为1(即M=1),所述classes改变为N,其中,N是介于(0,80]的整数,得到第二权重为weight[1*(5+N),512,1,1],第二偏置项为bias[1*(5+N)]。
[0232] 依据对应第二特征图需重建部分,本申请实施例将weight由[1*(5+N),512,1,1]填充成[255,512,1,1],如图3B所示,在weight后面填充形状为[1*(5+N),512,1,1]的值,即填充(255-(1*(5+N)))个形状为[512,1,1]的滤波器,填充部分为图3B所示的虚线框部分。
[0233] 将bias由[1*(5+N)]填充成[255],如图3B所示,在bias后面填充形状为[(255-(1*(5+N))]的数值,填充部分为图3B所示的阴影部分。
[0234] 所填充值由网络后续处理决定,为了避免对有效结果产生影响,weight填充0值,同时应使得:y=sigmoid(x)尽可能小,又x即填充值,x越小,y就越小,所以bias填充当前数据类型的最小值。假设bias的当前数据类型是int16,其数据范围为[-32768,32767],则填充最小值-32768。填充值数据类型与当前weight、bias数据类型相同。
[0235] 如图3B所示,填充后的weight和bias的形状与图2所示的weight和bias的形状一致,生成的特征图如图3B所示,形状与图2所示的特征图的形状一致,可应用于按官方配置设计的FPGA。
[0236] 参见图4A,当所述anchors改变为2(M=2),所述classes改变为N,其中,N是介于(0,80]的整数,得到第二权重的形状为weight[2*(5+N),512,1,1],第二偏置项的形状为bias[2*(5+N)]。
[0237] 依据对应第二特征图需重建部分,本实施例将weight[2*(5+N),512,1,1]填充成[255,512,1,1],如图4B所示,将weight拆分成两部分,第一部分后面填充形状为[(255/3)-(1*(5+N)),512,1,1]的值,即填充((255/3)-(1*(5+N)))个形状为[512,1,1]滤波器,最后一部分填充形状为[(255*(2/3))-(1*(5+N)),512,1,1]的值,即填充((255*(2/3))-(1*(5+N)))个形状为[512,1,1]滤波器,填充部分为图4B所示的虚线框部分。
[0238] 将bias由[2*(5+N)]填充成[255],如图4B所示,将bias拆分成两部分,第一部分填充形状为[((255/3)-(1*(5+N))]的数值,最后一部分填充形状为[((255*(2/3))-(1*(5+N))]的数值,填充部分为图4B所示的阴影部分。
[0239] 所填充值由网络后续处理决定,为了避免对有效结果产生影响,weight填充0值,同时应使得:y=sigmoid(x)尽可能小,又x即填充值,x越小,y就越小,所以bias填充当前数据类型的最小值。假设bias的当前数据类型是int16,其数据范围为[-32768,32767],则填充最小值-32768。填充值数据类型与当前weight、bias数据类型相同。
[0240] 如图4B所示,填充后的weight和bias的形状与图2所示的weight和bias的形状一致,生成的特征图如图4B所示,形状与图2所示的特征图的形状一致,可应用于按官方配置设计的FPGA。
[0241] 参见图5A,所述anchors=P=3,所述classes改变为N时,其中N是介于(0,80]的整数,得到第二权重的形状为weight([3*(5+N),K,1,1],第二偏置项的形状为bias([3*(5+N)]。
[0242] 依据对应第二特征图需重建部分,本实施例将weight[3*(5+N),512,1,1]填充成[255,512,1,1],如图5B所示,将weight拆分成3部分,每部分填充形状为[((255/3)-(1*(5+N)),512,1,1]的值,即填充((255/3)-(1*(5+N))个形状为[512,1,1]滤波器,填充部分为图5B所示的虚线框部分。
[0243] 将bias由[3*(5+N)]填充成[255],如图5B所示,将bias拆分成3部分,每部分填充形状为[(255/3)-(1*(5+N))]的数值,填充部分为图5B所示的阴影部分。
[0244] 所填充值由网络后续处理决定,为了避免对有效结果产生影响,weight填充0值,同时应使得:y=sigmoid(x)尽可能小,又x即填充值,x越小,y就越小,所以bias填充当前数据类型的最小值。假设bias的当前数据类型是int16,其数据范围为[-32768,32767],则填充最小值-32768。填充值数据类型与当前weight、bias数据类型相同。
[0245] 如图5B所示,填充后的weight和bias的形状与图2所示的weight和bias的形状一致,生成的特征图如图5B所示,形状与图2所示的特征图的形状一致,可应用于按官方配置设计的FPGA。
[0246] 以上所述,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本申请实施例的方法,不应理解为对本申请实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本申请实施例的保护范围之内。
[0247] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0248] 本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0249] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0250] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0251] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。