基于可配置卷积层的卷积神经网络的算法优化方法及装置转让专利

申请号 : CN201811525557.1

文献号 : CN109558944B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱明班华忠李志国王正李党

申请人 : 北京智芯原动科技有限公司

摘要 :

本发明提供了基于可配置卷积层的卷积神经网络的算法优化方法,该方法包括:对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积滤波优化法和基于Neon指令的定点化卷积矩阵乘优化法,对卷积层进行优化处理,获取对应卷积层的第一性能评测数据和第二性能评测数据;针对卷积神经网络的每个卷积层,如果第一性能评测数据优于第二性能评测数据,则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积滤波优化法,否则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积矩阵乘优化法;根据卷积神经网络的每个卷积层的最佳配置,对卷积神经网络进行优化处理。与现有技术相比,本发明可以有效地提升卷积神经网络的运算性能。

权利要求 :

1.基于可配置卷积层的卷积神经网络的算法优化方法,其特征在于,该方法包括:

第一步骤,对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积滤波优化法,对卷积层进行优化处理,获取对应卷积层的第一性能评测数据;

第二步骤,对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积矩阵乘优化法,对卷积层进行优化处理,获取对应卷积层的第二性能评测数据;

第三步骤,针对卷积神经网络的每个卷积层,如果第一性能评测数据优于第二性能评测数据,则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积滤波优化法,否则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积矩阵乘优化法;

第四步骤,根据卷积神经网络的每个卷积层的最佳配置,对卷积神经网络进行优化处理。

2.如权利要求1所述的方法,其特征在于,所述基于Neon指令的定点化卷积滤波优化法包括:对每个卷积层,基于Neon指令,使用定点的加载指令进行数据的并行加载操作,使用定点的乘加指令进行数据的乘加操作,获取累加数据,使用定点的存储指令对累加数据进行并行存储。

3.如权利要求1所述的方法,其特征在于,所述基于Neon指令的定点化卷积矩阵乘优化法包括:A矩阵获取步骤,将卷积层的卷积核图像进行矩阵化处理,获取对应的A矩阵,并将A矩阵列数按照4×n倍数对齐;

B矩阵获取步骤,输入待卷积图像,将待卷积输入图像进行矩阵化处理,获取对应的B矩阵,并将B矩阵行数按照4×n倍数对齐;

转置矩阵Bt获取步骤,对B矩阵进行转置变换,获取转置矩阵Bt;

行与行点积计算步骤,计算A矩阵和Bt矩阵的行与行点积;

Neon指令处理步骤,采用Neon指令进行定点化并行优化处理;

其中,所述参数n表示倍率,所述n的取值包括:1,2,4。

4.如权利要求3所述的方法,其特征在于,所述A矩阵获取步骤包括:对于卷积层中CNum个卷积核大小为N×N的卷积核图像,依次将每个卷积核图像作为一行矩阵数据,获取行数为CNum、列数为N×N的A矩阵;将A矩阵的列数扩展为4×n的倍数,扩展的每列矩阵内数值为

0。

5.如权利要求3所述的方法,其特征在于,所述B矩阵获取步骤包括:输入需要卷积层处理的待卷积图像;根据N×N的卷积核依次进行卷积滑窗处理,以获取MNum个经过卷积滑窗处理后的卷积特征子图像;依次将每个卷积特征子图像作为一列矩阵数据,获取行数为N×N、列数为MNum的B矩阵;将B矩阵的行数扩展为4×n的倍数,扩展的每行矩阵内数值为0。

6.如权利要求3所述的方法,其特征在于,所述转置矩阵Bt获取步骤包括:将B矩阵的行与列进行转置变换,以获得行数为MNum、列数为N×N扩展成4×n倍数对齐的Bt矩阵。

7.如权利要求3所述的方法,其特征在于,所述Neon指令处理步骤包括:在Neon指令中,采用定点的加载指令进行数据的并行加载操作;采用定点的乘法指令进行数据的并行乘法或乘加运算操作;采用定点的拆分指令进行结果数据的拆分获取;采用定点的加法指令进行数据的并行加法操作;采用定点的按对加指令进行相邻数据的并行累加;采用定点的存储指令对累加数据进行并行存储。

8.如权利要求1所述的方法,进一步地,所述第一性能评测数据和所述第二性能评测数据包括:运算耗时。

9.基于可配置卷积层的卷积神经网络的算法优化装置,其特征在于,该装置包括:

定点化卷积滤波优化评测模块,用于对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积滤波优化模块,对卷积层进行优化处理,获取对应卷积层的第一性能评测数据;

定点化卷积矩阵乘优化评测模块,用于对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积矩阵乘优化模块,对卷积层进行优化处理,获取对应卷积层的第二性能评测数据;

优化最佳配置获取模块,用于针对卷积神经网络的每个卷积层,如果第一性能评测数据优于第二性能数据,则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积滤波优化模块,否则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积矩阵乘优化模块;

卷积神经网络优化处理模块,用于根据卷积神经网络的每个卷积层的最佳配置,对卷积神经网络进行优化处理。

10.如权利要求9所述的装置,其特征在于,所述基于Neon指令的定点化卷积滤波优化模块包括:用于对每个卷积层,基于Neon指令,使用定点的加载指令进行数据的并行加载操作,使用定点的乘加指令进行数据的乘加操作,获取累加数据,使用定点的存储指令对累加数据进行并行存储。

11.如权利要求9所述的装置,其特征在于,所述基于Neon指令的定点化卷积矩阵乘优化模块包括:A矩阵获取模块,用于将卷积层的卷积核图像进行矩阵化处理,获取对应的A矩阵,并将A矩阵列数按照4×n倍数对齐;

B矩阵获取模块,用于输入待卷积图像,将待卷积输入图像进行矩阵化处理,获取对应的B矩阵,并将B矩阵行数按照4×n倍数对齐;

转置矩阵Bt获取模块,用于对B矩阵进行转置变换,获取转置矩阵Bt;

行与行点积计算模块,用于计算A矩阵和Bt矩阵的行与行点积;

Neon指令处理模块,用于采用Neon指令进行定点化并行优化处理;

其中,所述参数n表示倍率,所述n的取值包括:1,2,4。

12.如权利要求11所述的装置,其特征在于,所述A矩阵获取模块包括:用于对于卷积层中CNum个卷积核大小为N×N的卷积核图像,依次将每个卷积核图像作为一行矩阵数据,获取行数为CNum、列数为N×N的A矩阵;将A矩阵的列数扩展为4×n的倍数,扩展的每列矩阵内数值为0。

13.如权利要求11所述的装置,其特征在于,所述B矩阵获取模块包括:用于输入需要卷积层处理的待卷积图像;根据N×N的卷积核依次进行卷积滑窗处理,以获取MNum个经过卷积滑窗处理后的卷积特征子图像;依次将每个卷积特征子图像作为一列矩阵数据,获取行数为N×N、列数为MNum的B矩阵;将B矩阵的行数扩展为4×n的倍数,扩展的每行矩阵内数值为0。

14.如权利要求11所述的装置,其特征在于,所述转置矩阵Bt获取模块包括:用于将B矩阵的行与列进行转置变换,以获得行数为MNum、列数为N×N扩展成4×n倍数对齐的Bt矩阵。

15.如权利要求11所述的装置,其特征在于,所述Neon指令处理模块包括:用于在Neon指令中,采用定点的加载指令进行数据的并行加载操作;采用定点的乘法指令进行数据的并行乘法或乘加运算操作;采用定点的拆分指令进行结果数据的拆分获取;采用定点的加法指令进行数据的并行加法操作;采用定点的按对加指令进行相邻数据的并行累加;采用定点的存储指令对累加数据进行并行存储。

说明书 :

基于可配置卷积层的卷积神经网络的算法优化方法及装置

技术领域

[0001] 本发明涉及图像处理、视频监控以及卷积神经网络,特别涉及基于可配置卷积层的卷积神经网络的算法优化方法及装置。

背景技术

[0002] 随着人工智能的快速发展,深度学习技术被越来越多地引入到图像处理、视频分析领域中,如人机交互,环境感知,智慧商业分析,自动驾驶以及安防监控等应用场景,它们通常是嵌入式视觉的应用,要求智能分析的实时处理。其中,卷积神经网络(convolutional neural networks,简称CNN)作为深度学习的一种模型结构,尤其擅长处理图像特别是大图像的相关机器学习问题,已被广泛应用,得到最深入研究。然而深度学习算法,计算量非常大,这就对前端嵌入式运行提出了非常高的要求,这也成为嵌入式视觉的机遇与挑战。因此,深度学习针对嵌入式平台的优化,即提供客户硬件+算法一体化的最优性价比的解决方案,就成为了嵌入式视觉解决方案的核心竞争力。如何对CNN算法在嵌入式ARM平台进行效率优化,提高算法性能,就成为本领域技术人员需要解决的关键技术问题。
[0003] 目前CNN在嵌入式平台方面的优化,主要有网络结构优化,定点化(如模型量化),二值化,SIMD(如Neon),缓存(如cache命中率),多线程,异构计算等方法。其中任何一种方法都其自身的优势与局限性,在实际的CNN算法优化过程中,仅使用一种方法进行优化,其效率提升情况达到一定瓶颈,已经很难满足性能优化需求。
[0004] Neon指令是适用于ARM Cortex-A系列处理器的一种128位SIMD(Single Instruction,Multiple Data,单指令、多数据)扩展结构。从智能手机和移动计算设备到HDTV,它已被公认为是多媒体应用领域中最为优越的处理器之一。Neon指令采用专门设计,简化了软件在不同平台之间的移植,为类似Dolby Mobile的密集型多媒体应用提供了低能耗和灵活的加速功能。
[0005] 综上所述,目前需要提出一种能够提升性能优化的基于可配置卷积层的卷积神经网络的算法优化方法。

发明内容

[0006] 有鉴于此,本发明的主要目的在于降低计算资源消耗,实现卷积神经网络的算法优化。
[0007] 为达到上述目的,按照本发明的第一个方面,提供了基于可配置卷积层的卷积神经网络的算法优化方法,该方法包括:
[0008] 第一步骤,对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积滤波优化法,对卷积层进行优化处理,获取对应卷积层的第一性能评测数据;
[0009] 第二步骤,对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积矩阵乘优化法,对卷积层进行优化处理,获取对应卷积层的第二性能评测数据;
[0010] 第三步骤,针对卷积神经网络的每个卷积层,如果第一性能评测数据优于第二性能评测数据,则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积滤波优化法,否则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积矩阵乘优化法;
[0011] 第四步骤,根据卷积神经网络的每个卷积层的最佳配置,对卷积神经网络进行优化处理。
[0012] 进一步地,所述第一步骤中基于Neon指令的定点化卷积滤波优化法包括:对每个卷积层,基于Neon指令,使用定点的加载指令进行数据的并行加载操作,使用定点的乘加指令进行数据的乘加操作,获取累加数据,使用定点的存储指令对累加数据进行并行存储。
[0013] 进一步地,所述第二步骤中基于Neon指令的定点化卷积矩阵乘优化法包括:
[0014] A矩阵获取步骤,将卷积层的卷积核图像进行矩阵化处理,获取对应的A矩阵,并将A矩阵列数按照4×n倍数对齐;
[0015] B矩阵获取步骤,输入待卷积图像,将待卷积输入图像进行矩阵化处理,获取对应的B矩阵,并将B矩阵行数按照4×n倍数对齐;
[0016] 转置矩阵Bt获取步骤,对B矩阵进行转置变换,获取转置矩阵Bt;
[0017] 行与行点积计算步骤,计算A矩阵和Bt矩阵的行与行点积;
[0018] Neon指令处理步骤,采用Neon指令进行定点化并行优化处理。
[0019] 进一步地,所述A矩阵获取步骤包括:对于卷积层中CNum个卷积核大小为N×N的卷积核图像,依次将每个卷积核图像作为一行矩阵数据,获取行数为CNum、列数为N×N的A矩阵;将A矩阵的列数扩展为4×n的倍数,扩展的每列矩阵内数值为0。
[0020] 进一步地,所述B矩阵获取步骤包括:输入需要卷积层处理的待卷积图像;根据N×N的卷积核依次进行卷积滑窗处理,以获取MNum个经过卷积滑窗处理后的卷积特征子图像;依次将每个卷积特征子图像作为一列矩阵数据,获取行数为N×N、列数为MNum的B矩阵。将B矩阵的行数扩展为4×n的倍数,扩展的每行矩阵内数值为0。
[0021] 进一步地,所述转置矩阵Bt获取步骤包括:将B矩阵的行与列进行转置变换,以获得行数为MNum、列数为N×N扩展成4×n倍数对齐的Bt矩阵。
[0022] 进一步地,所述Neon指令处理步骤包括:在Neon指令中,采用定点的加载指令进行数据的并行加载操作;采用定点的乘法指令进行数据的并行乘法或乘加运算操作;采用定点的拆分指令进行结果数据的拆分获取;采用定点的加法指令进行数据的并行加法操作;采用定点的按对加指令进行相邻数据的并行累加;采用定点的存储指令对累加数据进行并行存储。
[0023] 按照本发明的另一个方面,提供了基于可配置卷积层的卷积神经网络的算法优化装置,该装置包括:
[0024] 定点化卷积滤波优化评测模块,用于对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积滤波优化模块,对卷积层进行优化处理,获取对应卷积层的第一性能评测数据;
[0025] 定点化卷积矩阵乘优化评测模块,用于对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积矩阵乘优化模块,对卷积层进行优化处理,获取对应卷积层的第二性能评测数据;
[0026] 优化最佳配置获取模块,用于针对卷积神经网络的每个卷积层,如果第一性能评测数据优于第二性能评测数据,则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积滤波优化模块,否则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积矩阵乘优化模块;
[0027] 卷积神经网络优化处理模块,用于根据卷积神经网络的每个卷积层的最佳配置,对卷积神经网络进行优化处理。
[0028] 进一步地,所述定点化卷积滤波优化评测模块中基于Neon指令的定点化卷积滤波优化模块包括:用于对每个卷积层,基于Neon指令,使用定点的加载指令进行数据的并行加载操作,使用定点的乘加指令进行数据的乘加操作,获取累加数据,使用定点的存储指令对累加数据进行并行存储。
[0029] 进一步地,所述基于Neon指令的定点化卷积矩阵乘优化模块包括:
[0030] A矩阵获取模块,用于将卷积层的卷积核图像进行矩阵化处理,获取对应的A矩阵,并将A矩阵列数按照4×n倍数对齐;
[0031] B矩阵获取模块,用于输入待卷积图像,将待卷积输入图像进行矩阵化处理,获取对应的B矩阵,并将B矩阵行数按照4×n倍数对齐;
[0032] 转置矩阵Bt获取模块,用于对B矩阵进行转置变换,获取转置矩阵Bt;
[0033] 行与行点积计算模块,用于计算A矩阵和Bt矩阵的行与行点积;
[0034] Neon指令处理模块,用于采用Neon指令进行定点化并行优化处理。
[0035] 进一步地,所述A矩阵获取模块包括:用于对于卷积层中CNum个卷积核大小为N×N的卷积核图像,依次将每个卷积核图像作为一行矩阵数据,获取行数为CNum、列数为N×N的A矩阵;将A矩阵的列数扩展为4×n的倍数,扩展的每列矩阵内数值为0。
[0036] 进一步地,所述B矩阵获取模块包括:用于输入需要卷积层处理的待卷积图像;根据N×N的卷积核依次进行卷积滑窗处理,以获取MNum个经过卷积滑窗处理后的卷积特征子图像;依次将每个卷积特征子图像作为一列矩阵数据,获取行数为N×N、列数为MNum的B矩阵。将B矩阵的行数扩展为4×n的倍数,扩展的每行矩阵内数值为0。
[0037] 所述转置矩阵Bt获取模块包括:用于将B矩阵的行与列进行转置变换,以获得行数为MNum、列数为N×N扩展成4×n倍数对齐的Bt矩阵。
[0038] 进一步地,所述Neon指令处理模块包括:用于在Neon指令中,采用定点的加载指令进行数据的并行加载操作;采用定点的乘法指令进行数据的并行乘法或乘加运算操作;采用定点的拆分指令进行结果数据的拆分获取;采用定点的加法指令进行数据的并行加法操作;采用定点的按对加指令进行相邻数据的并行累加;采用定点的存储指令对累加数据进行并行存储。
[0039] 与现有的卷积神经网络算法优化方法相比,本发明的基于可配置卷积层的卷积神经网络优化方法分别采用基于Neon指令的定点化卷积滤波优化法和基于Neon指令的定点化卷积矩阵乘优化法,对每个卷积层进行优化处理,计算对应的性能评测数据,根据性能评测数据获取各卷积层的最佳配置,按照最佳配置,对卷积神经网络进行优化处理,实现了最优的性能优化,保证了CNN算法在嵌入式ARM平台的实时性。

附图说明

[0040] 图1示出了按照本发明的基于可配置卷积层的卷积神经网络的算法优化方法的实施例的流程图。
[0041] 图2示出了按照本发明的基于可配置卷积层的卷积神经网络的算法优化装置的实施例的结构示意图。

具体实施方式

[0042] 为使本领域的技术人员能进一步了解本发明的结构、特征及其他目的,现结合所附较佳实施例详细说明如下,所说明的较佳实施例仅用于说明本发明的技术方案,并非限定本发明。
[0043] 图1给出了按照本发明的基于可配置卷积层的卷积神经网络的算法优化方法的流程图。如图1所示,按照本发明的基于可配置卷积层的卷积神经网络的算法优化方法包括:
[0044] 第一步骤S1,对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积滤波优化法S10,对卷积层进行优化处理,获取对应卷积层的第一性能评测数据;
[0045] 第二步骤S2,对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积矩阵乘优化法S20,对卷积层进行优化处理,获取对应卷积层的第二性能评测数据;
[0046] 第三步骤S3,针对卷积神经网络的每个卷积层,如果第一性能评测数据优于第二性能评测数据,则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积滤波优化法S10,否则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积矩阵乘优化法S20;
[0047] 第四步骤S4,根据卷积神经网络的每个卷积层的最佳配置,对卷积神经网络进行优化处理。
[0048] 进一步地,所述第一步骤S1中基于Neon指令的定点化卷积滤波优化法S10包括:对每个卷积层,基于Neon指令,使用定点的加载指令进行数据的并行加载操作,使用定点的乘加指令进行数据的乘加操作,获取累加数据,使用定点的存储指令对累加数据进行并行存储。
[0049] 其中,所述定点的加载指令为Neon指令中的整型的加载指令,包括:vld1_s8、vld1_s16等指令。所述定点的乘加指令为Neon指令中的整型的乘加指令,包括:vmlal_s8、vmlal_s16等指令。所述定点的存储指令为Neon指令中的整型的存储指令,包括:vst1q_s16、vst1q_s32等指令。
[0050] 示例性地,如果卷积层采用的是3×3卷积核,卷积核图像为[k1 k2 k3 k4 k5 k5 k7 k8 k9],针对每个卷积核,分别获取由8个char型数据组成的向量,即K1=[k1 k1 k1 k1 k1 k1 k1 k1],K2=[k2 k2 k2 k2 k2 k2 k2 k2],…,K9=[k9 k9 k9 k9 k9 k9 k9 k9]。对于待卷积图像,按照3×3卷积核对应位置,使用定点的加载指令vld1_s8分别加载9个向量的图像数据,即A=[a1 a2 a3 a4 a5 a6 a7 a8],B=[b1 b2 b3 b4 b5 b6 b7 b8],…,I=[i1 i2 i3 i4 i5 i6 i7 i8]。然后使用定点的乘加指令vmlal_s8进行8个char型数据向量的乘加运算:先进行乘法运算,即K1×A=[k1×a1 k1×a2 k1×a3 k1×a4 k1×a5 k1×
a6 k1×a7 k1×a8]、K2×B=[k2×b1 k2×b2 k2×b3 k2×b4 k2×b5 k2×b6 k2×b7 k2
×b8],…,K9×I=[k9×i1 k9×i2 k9×i3 k9×i4 k9×i5 k9×i6 k9×i7 k9×i8];再
进行累加求和运算Result=K1×A+K2×B+…+K9×I,Result即为卷积运算结果。最后使用定点的存储指令vst1q_s16对卷积结果Result进行存储。
[0051] 进一步地,所述第一性能评测数据包括:运算耗时。
[0052] 示例性地,对卷积神经网络的卷积层conv1、conv2、conv3等,分别采用基于Neon指令的定点化卷积滤波优化法,对卷积层进行优化处理,依次计算卷积层conv1、conv2、conv3等的运算耗时conv1_time1A、conv2_time2A、conv3_time3A等,将运算耗时conv1_time1A、conv2_time2A、conv3_time3A等分别作为卷积层conv1、conv2、conv3等的第一性能评测数据。
[0053] 进一步地,所述第二步骤S2中基于Neon指令的定点化卷积矩阵乘优化法S20包括:
[0054] A矩阵获取步骤S21,将卷积层的卷积核图像进行矩阵化处理,获取对应的A矩阵,并将A矩阵列数按照4×n倍数对齐;
[0055] B矩阵获取步骤S22,输入待卷积图像,将待卷积输入图像进行矩阵化处理,获取对应的B矩阵,并将B矩阵行数按照4×n倍数对齐;
[0056] 转置矩阵Bt获取步骤S23,对B矩阵进行转置变换,获取转置矩阵Bt;
[0057] 行与行点积计算步骤S24,计算A矩阵和Bt矩阵的行与行点积;
[0058] Neon指令处理步骤S25,采用Neon指令进行定点化并行优化处理。
[0059] 进一步地,所述A矩阵获取步骤S21包括:对于卷积层中CNum个卷积核大小为N×N的卷积核图像,依次将每个卷积核图像作为一行矩阵数据,获取行数为CNum、列数为N×N的A矩阵;将A矩阵的列数扩展为4×n的倍数,扩展的每列矩阵内数值为0。
[0060] 其中,所述参数n表示倍率,所述n的取值包括:1,2,4。进一步地,当处理int型数据时,n取为1;当处理short型数据时,n取为2;当处理char型数据时,n取为2或者4。
[0061] 示例性地,对于卷积层中16个3×3的卷积核图像,分别将第i个卷积核图像作为第i行的矩阵数据,i={0,1,2,…,15},则可以得到行数为16、列数为9的A矩阵。当n为1时,将A矩阵的列数扩展为4的倍数,即将A矩阵的列数由原来的9扩展为12,扩展的第10~12列矩阵内数值都为0;当n为2、4时,分别将A矩阵的列数扩展为8、16的倍数,即将A矩阵的列数由原来的9扩展为16,扩展的第10~16列矩阵内数值都为0。
[0062] 进一步地,所述B矩阵获取步骤S22包括:输入需要卷积层处理的待卷积图像;根据N×N的卷积核依次进行卷积滑窗处理,以获取MNum个经过卷积滑窗处理后的卷积特征子图像;依次将每个卷积特征子图像作为一列矩阵数据,获取行数为N×N、列数为MNum的B矩阵。将B矩阵的行数扩展为4×n的倍数,扩展的每行矩阵内数值为0。
[0063] 示例性地,对输入图像进行3×3的卷积核滑窗处理,以获取经过卷积滑窗处理后的卷积特征子图像;分别将第j个卷积特征子图像作为第j列的矩阵数据,j={0,1,2,…,MNum},则可以得到列数为MNum、行数为9的B矩阵。当n为1时,将B矩阵的行数扩展为4的倍数,即将B矩阵的行数由原来的9扩展为12,扩展的第10~12列矩阵内数值为0;当n为2、4时,分别将B矩阵的行数扩展为8、16的倍数,即将B矩阵的行数由原来的9扩展为16,扩展的第10~16列矩阵内数值为0。
[0064] 进一步地,所述转置矩阵Bt获取步骤S23包括:将B矩阵的行与列进行转置变换,以获得行数为MNum、列数为N×N扩展成4×n倍数对齐的Bt矩阵。
[0065] 进一步地,所述Neon指令处理步骤S25包括:在Neon指令中,采用定点的加载指令进行数据的并行加载操作;采用定点的乘法指令进行数据的并行乘法或乘加运算操作;采用定点的拆分指令进行结果数据的拆分获取;采用定点的加法指令进行数据的并行加法操作;采用定点的按对加指令进行相邻数据的并行累加;采用定点的存储指令对累加数据进行并行存储。
[0066] 其中,所述定点的加载指令为Neon指令中的整型的加载指令,包括:vld1_s8、vld1_s16、vld1q_s16、vld1q_s32等指令。所述定点的乘加指令为Neon指令中的整型的乘加指令,包括:vmlal_s8、vmull_s8等指令。所述定点的拆分指令为Neon指令中的整型的拆分指令,包括:vget_low_s16、vget_high_s16、vget_low_s32、vget_high_s32等指令。所述定点的加法指令为Neon指令中的整型的加法指令,包括:vqadd_s16、vqadd_s32等指令。所述定点的按对加指令为Neon指令中的整型的按对加指令,包括:vpadd_s16、vpadd_s32等指令。所述定点的存储指令为Neon指令中的整型的存储指令,包括:vst1q_s16、vst1q_s32等指令。
[0067] 示例性地,对于8×8的A矩阵和Bt矩阵,A矩阵的第一行向量为[a1 a2 a3 … a8],Bt矩阵的第一行向量为[b1 b2 b3 … b8],在Neon指令中,采用定点的加载指令vld1_s8可以并行取数,一次指令同时实现8个char型数据的加载,如64位寄存器Va分别用于存储a1、a2、a3、a4、a5、a6、a7、a8上述8个char型数据,64位寄存器Vb分别用于存储b1、b2、b3、b4、b5、b6、b7、b8上述8个char型数据。采用定点的乘加指令vmlal_s8实现8个char型数据的乘法运算操作Va×b=[a1×b1 a2×b2 a3×b3 a4×b4 a5×b5 a6×b6 a7×b7 a8×b8]。采用定点的拆分指令vget_low_s16获取a1×b1、a2×b2、a3×b3、a4×b4上述4个short型数据,采用定点的拆分指令vget_high_s16获取a5×b5、a6×b6、a7×b7、a8×b8上述4个short型数据。首先采用定点的加法指令vqadd_s16分别实现以下4个short型数据的相加:a1×b1+a5×b5、a2×b2+a6×b6、a3×b3+a7×b7、a4×b4+a8×b8;然后采用定点的按对加指令vpadd_s16分别实现以下2个short型数据的相邻累加:a1×b1+a5×b5+a2×b2+a6×b6、a3×b3+a7×b7+a4×b4+a8×b8;再对2个short型数据相邻累加结果进行求和,得到累加数据Result=a1×b1+a5×b5+a2×b2+a6×b6+a3×b3+a7×b7+a4×b4+a8×b8。最后采用定点的存储指令vst1q_s16对累加数据Result进行存储。
[0068] 进一步地,所述第二性能评测数据包括:运算耗时。
[0069] 示例性地,所述性能评测数据采用运算耗时。对卷积神经网络的卷积层conv1、conv2、conv3等,分别采用基于Neon指令的定点化卷积矩阵乘优化法,对卷积层进行优化处理,依次计算卷积层conv1、conv2、conv3等的运算耗时conv1_time1B、conv2_time2B、conv3_time3B等,将运算耗时conv1_time1B、conv2_time2B、conv3_time3B等分别作为卷积层conv1、conv2、conv3等的第二性能评测数据。
[0070] 示例性地,所述第三步骤S3包括:所述性能评测数据采用运算耗时。对卷积神经网络的卷积层conv1、conv2、conv3,对应的第一性能评测数据分别为conv1_time1A、conv2_time2A、conv3_time3A,对应的第二性能评测数据分别为conv1_time1B、conv2_time2B、conv3_time3B,如果conv1_time1Aconv2_time2B、conv3_time3A
[0071] 示例性地,所述第四步骤S4包括:对卷积神经网络的卷积层conv1、conv2、conv3,如果卷积层conv1和卷积层conv3的最佳配置为基于Neon指令的定点化卷积滤波优化法,卷积层conv2的最佳配置为基于Neon指令的定点化卷积矩阵乘优化法,则分别对卷积神经网络的卷积层conv1采用基于Neon指令的定点化卷积滤波优化法、卷积神经网络的卷积层conv2采用基于Neon指令的定点化卷积矩阵乘优化法、卷积神经网络的卷积层conv3采用基于Neon指令的定点化卷积滤波优化法进行优化处理。
[0072] 图2给出了按照本发明的基于可配置卷积层的卷积神经网络的算法优化装置的第一实施例的结构示意图。如图2所示,按照本发明的基于可配置卷积层的卷积神经网络的算法优化装置包括:
[0073] 定点化卷积滤波优化评测模块1,用于对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积滤波优化模块10,对卷积层进行优化处理,获取对应卷积层的第一性能评测数据;
[0074] 定点化卷积矩阵乘优化评测模块2,用于对卷积神经网络的每个卷积层,分别采用基于Neon指令的定点化卷积矩阵乘优化模块20,对卷积层进行优化处理,获取对应卷积层的第二性能评测数据;
[0075] 优化最佳配置获取模块3,用于针对卷积神经网络的每个卷积层,如果第一性能评测数据优于第二性能评测数据,则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积滤波优化模块,否则认为对应的卷积层最佳配置为基于Neon指令的定点化卷积矩阵乘优化模块;
[0076] 卷积神经网络优化处理模块4,用于根据卷积神经网络的每个卷积层的最佳配置,对卷积神经网络进行优化处理。
[0077] 进一步地,所述定点化卷积滤波优化评测模块1中基于Neon指令的定点化卷积滤波优化模块10包括:用于对每个卷积层,基于Neon指令,使用定点的加载指令进行数据的并行加载操作,使用定点的乘加指令进行数据的乘加操作,获取累加数据,使用定点的存储指令对累加数据进行并行存储。
[0078] 其中,所述定点的加载指令为Neon指令中的整型的加载指令,包括:vld1_s8、vld1_s16等指令。所述定点的乘加指令为Neon指令中的整型的乘加指令,包括:vmlal_s8、vmlal_s16等指令。所述定点的存储指令为Neon指令中的整型的存储指令,包括:vst1q_s16、vst1q_s32等指令。
[0079] 进一步地,所述第一性能评测数据和第二性能评测数据包括:运算耗时。
[0080] 进一步地,所述定点化卷积矩阵乘优化评测模块2中基于Neon指令的定点化卷积矩阵乘优化模块20包括:
[0081] A矩阵获取模块21,用于将卷积层的卷积核图像进行矩阵化处理,获取对应的A矩阵,并将A矩阵列数按照4×n倍数对齐;
[0082] B矩阵获取模块22,用于输入待卷积图像,将待卷积输入图像进行矩阵化处理,获取对应的B矩阵,并将B矩阵行数按照4×n倍数对齐;
[0083] 转置矩阵Bt获取模块23,用于对B矩阵进行转置变换,获取转置矩阵Bt;
[0084] 行与行点积计算模块24,用于计算A矩阵和Bt矩阵的行与行点积;
[0085] Neon指令处理模块25,用于采用Neon指令进行定点化并行优化处理。
[0086] 进一步地,所述A矩阵获取模块21包括:用于对于卷积层中CNum个卷积核大小为N×N的卷积核图像,依次将每个卷积核图像作为一行矩阵数据,获取行数为CNum、列数为N×N的A矩阵;将A矩阵的列数扩展为4×n的倍数,扩展的每列矩阵内数值为0。
[0087] 其中,所述参数n表示倍率,所述n的取值包括:1,2,4。进一步地,当处理int型数据时,n取为1;当处理short型数据时,n取为2;当处理char型数据时,n取为4。
[0088] 进一步地,所述B矩阵获取模块22包括:用于输入需要卷积层处理的待卷积图像;根据N×N的卷积核依次进行卷积滑窗处理,以获取MNum个经过卷积滑窗处理后的卷积特征子图像;依次将每个卷积特征子图像作为一列矩阵数据,获取行数为N×N、列数为MNum的B矩阵。将B矩阵的行数扩展为4×n的倍数,扩展的每行矩阵内数值为0。
[0089] 所述转置矩阵Bt获取模块23包括:用于将B矩阵的行与列进行转置变换,以获得行数为MNum、列数为N×N扩展成4×n倍数对齐的Bt矩阵。
[0090] 进一步地,所述Neon指令处理模块25包括:用于在Neon指令中,采用定点的加载指令进行数据的并行加载操作;采用定点的乘法指令进行数据的并行乘法或乘加运算操作;采用定点的拆分指令进行结果数据的拆分获取;采用定点的加法指令进行数据的并行加法操作;采用定点的按对加指令进行相邻数据的并行累加;采用定点的存储指令对累加数据进行并行存储。
[0091] 其中,所述定点的加载指令为Neon指令中的整型的加载指令,包括:vld1_s8、vld1_s16、vld1q_s16、vld1q_s32等指令。所述定点的乘加指令为Neon指令中的整型的乘加指令,包括:vmlal_s8、vmull_s8等指令。所述定点的拆分指令为Neon指令中的整型的拆分指令,包括:vget_low_s16、vget_high_s16、vget_low_s32、vget_high_s32等指令。所述定点的加法指令为Neon指令中的整型的加法指令,包括:vqadd_s16、vqadd_s32等指令。所述定点的按对加指令为Neon指令中的整型的按对加指令,包括:vpadd_s16、vpadd_s32等指令。所述定点的存储指令为Neon指令中的整型的存储指令,包括:vst1q_s16、vst1q_s32等指令。
[0092] 与现有的卷积神经网络算法优化方法相比,本发明的基于可配置卷积层的卷积神经网络优化方法分别采用基于Neon指令的定点化卷积滤波优化法和基于Neon指令的定点化卷积矩阵乘优化法,对每个卷积层进行优化处理,计算对应的性能评测数据,根据性能评测数据获取各卷积层的最佳配置,按照最佳配置,对卷积神经网络进行优化处理,实现了最优的性能优化,保证了卷积神经网络算法在嵌入式ARM平台的实时性。
[0093] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,应当理解,本发明并不限于这里所描述的实现方案,这些实现方案描述的目的在于帮助本领域中的技术人员实践本发明。任何本领域中的技术人员很容易在不脱离本发明精神和范围的情况下进行进一步的改进和完善,因此本发明只受到本发明权利要求的内容和范围的限制,其意图涵盖所有包括在由所附权利要求所限定的本发明精神和范围内的备选方案和等同方案。