掌桥专利:专业的专利平台
掌桥专利
首页

卷积神经网络特征提取方法、系统、嵌入式设备及介质

文献发布时间:2023-06-19 10:05:17


卷积神经网络特征提取方法、系统、嵌入式设备及介质

技术领域

本发明属于计算机视觉技术领域,尤其涉及一种卷积神经网络特征提取方法、系统、嵌入式设备及介质。

背景技术

目前,随着人工智能技术的发展,特别是深度学习神经网络技术的快速成熟,大量的现代人工智能技术,被应用到了电子产品当中。其中,CNN深度卷积神经网络算法,更是应用到了图像处理的各个方面:人体骨骼识别、车牌识别、人脸识别、自动驾驶行人检测等等。在CNN深度卷积神经网络获得广泛应用的同时,也面临了一些技术上的难题。其中,深度卷积神经网络算法,在嵌入式设备上运行,因嵌入式设备计算能力不足,导致神经网络算法在嵌入式上难以应用是其中的问题之一。

关于在嵌入式设备上,使用CNN深度卷积神经网络,现有的技术,一般采用高性能GPU或者NPU加速,抑或是牺牲运行速率和识别精度,对神经网络进行剪枝,以此提高运行速率。GPU和NPU都是通过加载整个神经网络模型,并且支持CNN卷积神经网络以外的神经网络运算。但高性能GPU价格过于昂贵,NPU目前对主流神经网络框架支持还不够完善,对神经网络进行裁剪,又会导致识别精度下降,达不到用户业务需求。此外,迁移学习目前用于神经网络训练阶段居多,在FPGA可编程逻辑门器件上,实现卷积神经网络迁移学习的前向推断研究比较少,大部分芯片器件都在构建通用的神经网络加速器。

通过上述分析,现有技术存在的问题及缺陷为:现有嵌入式设备利用神经网络算法进行特征提取时,计算复杂度高,计算能力不足,特征提取效率不高。

现有技术计算能力不足的问题。因为目前大部分神经网络,在没有神经网络加速的情况下,都很难在嵌入式设备上运行。特别是类似电脑端上运行的大型神经网络模型。

解决以上问题及缺陷的难度为:

人员需求上,开发工程师需要精通神经网络,特别是神经网络底层原理和实现,同时精通FPGA开发,神经网络最近几年才兴起,这样的人才,在人才市场上不多。技术上,FPGA上的特征提取器,输出的是大型特征向量矩阵,而不是通常的最后结果,所以开发过程中,调试起来没有那么直观和简便。

解决以上问题及缺陷的意义为:

使用FPGA实现神经网络特征提取功能,CPU实现神经网络输出逻辑计算,这种技术方案,避免了通用神经网络开发的高难度的同时,保留了一定的通用性和灵活性。这样,使得大型神经网络,也可以快速有效的在嵌入式设备上部署。

目前已经公开的论文、技术方案,大多称为“卷积神经网络加速器”,大概有三种:

①通用类型:实现所有类型的卷积神经网络计算,比如google的TPU、英伟达的GPU。

②模型转换:这种方式,通过模型转换,在特定逻辑单元上运行整个模型,缺点是,很多新的神经网络模型不被支持。

③FPGA:现有的FPGA方案,基本都是实现整个模型,让整个模型在FPGA中运行。

现有技术中,需要工程师既精通FPGA,又要精通神经网络。如果公司拥有大量这样的工程师,方案③是没有问题的。问题就在于,方案③的做法,只要神经网络发生更改,FPGA就要改动,而FPGA的开发周期,又要比软件的开发周期长,难度大。本发明发现:卷积神经网络中的特征提取器,基本是不修改的,大部分开发,修改的是神经网络后面的层,后面的层计算量一般也没有那么大。此外,以前特征提取器不成熟,近些年,特征提取器在千万级的图片集中,得到有效训练,基本稳定不变。

发明内容

针对现有技术存在的问题,本发明提供了一种卷积神经网络特征提取方法、系统、嵌入式设备及介质,具体涉及一种基于迁移学习的加速卷积神经网络特征提取方法。

本发明是这样实现的,一种基于迁移学习的加速卷积神经网络特征提取方法,所述基于迁移学习的加速卷积神经网络特征提取方法包括:

首先,利用FPGA可编程逻辑门器件,通过Verilog编程构建通过迁移学习选取的CNN神经网络层,得到一个通过硬件实现的CNN神经网络特征提取器;其次,创建一个在CPU上运行的的卷积神经网络;最后,将构建的CNN神经网络特征提取器和CPU中的卷积神经网络进行拼接,得到特征提取卷积神经网络,利用得到的特征提取卷积神经网络进行特征提取即可。

进一步,所述基于迁移学习的加速卷积神经网络特征提取方法包括以下步骤:

步骤一,选取已经在大型数据集训练过的神经网络模型;基于迁移学习选取神经网络前面的层作为迁移层并去除选取的神经网络的后面层;利用FPGA Verilog编程在FPGA上通过编程实现选取的迁移层,得到卷积神经网络特征提取器;

步骤二,提取在大型训练集上训练得到的模型权重;将对应层的权重,通过变量的形式,在FPGA中进行赋值,得到使用FPGA硬件加速的卷积神经网络提取器;

步骤三,加载步骤二提取的预训练好的模型权重,对模型进行初始化;并冻结神经网络迁移层,对非迁移层的卷积神经网络进行模型训练;得到训练好的卷积神经网络模型;

步骤四,通过将FPGA硬件加速的卷积神经网络提取器输出的卷积神经网络特征图作为训练好的卷积神经网络模型的输入将FPGA硬件加速的卷积神经网络提取器与训练好的卷积神经网络模型进行拼接,即可得特征提取结果。

进一步,步骤二中,所述使用FPGA硬件加速的卷积神经网络提取器输入为图片数据,输出为卷积神经网络特征图。

进一步,步骤二中,所述FPGA硬件加速的卷积神经网络提取器由多个block卷积神经网络块组成,所述每个block由多个卷积层、池化层、归一化层组成。

进一步,步骤四中,所述通过将FPGA硬件加速的卷积神经网络提取器输出的卷积神经网络特征图作为训练好的卷积神经网络模型的输入将FPGA硬件加速的卷积神经网络提取器与训练好的卷积神经网络模型进行拼接得特征提取结果包括:

将待识别图片输入FPGA硬件加速的卷积神经网络提取器,经过迁移运算,得到多个block输出的卷积神经网络特征图,并将所述block输出的卷积神经网络特征图作为FPGA硬件加速的卷积神经网络提取器的输出;

利用训练好的卷积神经网络模型读取FPGA硬件加速的卷积神经网络提取器输出的卷积神经网络特征图,作为训练好的卷积神经网络模型的输入,所述卷积神经网络模型的输出即为特征提取结果。

本发明的另一目的在于提供一种实施所述基于迁移学习的加速卷积神经网络特征提取方法的基于迁移学习的加速卷积神经网络特征提取系统,所述基于迁移学习的加速卷积神经网络特征提取系统包括:

模型选取模块,用于从现有的公开的全球领先的卷积神经网络模型中,选取其中一个模型;

迁移层选取模块,用于从已选取的模型中,利用迁移学习原理,选取相应的神经网络层作为迁移层;

卷积神经网络特征提取器构建模块,用于使用FPGA Verilog编程,在FPGA上通过编程实现选取的迁移层,得到卷积神经网络特征提取器;

神经网络训练模块,用于迁移学习,通过冻结迁移层,训练非迁移层卷积神经网络,进行神经网络模型训练;

神经网络模型拼接模块,用于通过将FPGA硬件加速的卷积神经网络提取器输出的卷积神经网络特征图作为训练好的卷积神经网络模型的输入将FPGA硬件加速的卷积神经网络提取器与训练好的卷积神经网络模型进行拼接;

特征提取模块,用于利用拼接得到的完整的神经网络模型进行特征提取。

本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:

利用选取的CNN神经网络层获取通过硬件实现的CNN神经网络特征提取器;

创建在CPU上运行的的卷积神经网络;

将获取的CNN神经网络特征提取器和CPU中的卷积神经网络进行拼接,得到特征提取卷积神经网络,利用得到的所述特征提取卷积神经网络进行特征提取。

本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述的方法。

本发明的另一目的在于提供一种嵌入式设备,所述嵌入式设备用于实现所述的方法。

本发明的另一目的在于提供一种卷积神经网络特征提取器,利用迁移学习技术,在FPGA上构建卷积神经网络特征提取器,将所述卷积神经网络特征提取器输出的特征图输入到CPU上的神经网络中。

结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供了一种基于迁移学习的加速卷积神经网络特征提取的方法,使用FPGA加速卷积神经网络,以此解决深度卷积神经网络在嵌入式设备上运行带来的计算能力不足的问题。

本发明可以根据业务需求,进行修改和训练CPU上的神经网络模型,能够在不需实现繁杂的通用神经网络的前提下,利于FPGA的并行计算能力,实现对特定卷积神经网络进行加速,而利于CPU的通用性实现鲁棒性和灵活性。

本发明有效解决了在嵌入式设备中,运行卷积神经网络算法时,嵌入式设备的运算能力不足的问题,有效提高神经网络特征提取的效率。本发明特别针对卷积神经网络,利用迁移学习原理,在FPGA上实现一个专用的卷积神经网络特征提取器,在利用FPGA硬件实现加速的同时,还可以轻易修改非迁移层的神经网络,相比其它现有技术,可用性更高,易用性更强。

本发明利用迁移学习技术,在FPGA上实现一个专用的卷积神经网络特征提取器,将特征提取器输出的特征图输入到CPU上的神经网络中,以此提高神经网络的运行速率,解决嵌入式系统因计算能力不足,导致运行神经网络效率低下的问题。

对比的技术效果或者实验效果如图6。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的基于迁移学习的加速卷积神经网络特征提取方法原理图。

图2是本发明实施例提供的基于迁移学习的加速卷积神经网络特征提取方法流程图。

图3是本发明实施例提供的卷积神经网络模型的示意图。

图4是本发明实施例提供的神经网络模型拼接的示意图。

图5是本发明实施例提供的基于迁移学习的加速卷积神经网络特征提取系统结构示意图;

图中:1、模型选取模块;2、迁移层选取模块;3、卷积神经网络特征提取器构建模块;4、神经网络训练模块;5、神经网络模型拼接模块;6、特征提取模块。

图6是本发明实施例提供的是yolov4神经网络在不同器件上运行的结果图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

针对现有技术存在的问题,本发明提供了一种卷积神经网络特征提取方法、系统、嵌入式设备及介质,下面结合附图对本发明作详细的描述。

如图1所示,本发明实施例提供的基于迁移学习的加速卷积神经网络特征提取方法包括:

首先,利用FPGA可编程逻辑门器件,通过Verilog编程构建通过迁移学习选取的CNN神经网络层,得到一个通过硬件实现的CNN神经网络特征提取器;其次,创建一个在CPU上运行的的卷积神经网络;最后,将构建的CNN神经网络特征提取器和CPU中的卷积神经网络进行拼接,得到特征提取卷积神经网络,利用得到的特征提取卷积神经网络进行特征提取即可。

如图2所示,本发明实施例提供的基于迁移学习的加速卷积神经网络特征提取方法包括以下步骤:

S101,选取已经在大型数据集训练过的神经网络模型;基于迁移学习选取神经网络前面的层作为迁移层并去除选取的神经网络的后面层;利用FPGA Verilog编程在FPGA上通过编程实现选取的迁移层,得到卷积神经网络特征提取器;

S102,提取在大型训练集上训练得到的模型权重;将对应层的权重,通过变量的形式,在FPGA中进行赋值,得到使用FPGA硬件加速的卷积神经网络提取器;

S103,加载步骤S102提取的预训练好的模型权重,对模型进行初始化;并冻结神经网络迁移层,对非迁移层的卷积神经网络进行模型训练;得到训练好的卷积神经网络模型;

S104,通过将FPGA硬件加速的卷积神经网络提取器输出的卷积神经网络特征图作为训练好的卷积神经网络模型的输入将FPGA硬件加速的卷积神经网络提取器与训练好的卷积神经网络模型进行拼接,即可得特征提取结果。

步骤S102中,本发明实施例提供的使用FPGA硬件加速的卷积神经网络提取器输入为图片数据,输出为卷积神经网络特征图。

如图3所示,步骤S102中,本发明实施例提供的FPGA硬件加速的卷积神经网络提取器由多个block卷积神经网络块组成,所述每个block由多个卷积层、池化层、归一化层组成。

如图4所示,步骤S104中,本发明实施例提供的通过将FPGA硬件加速的卷积神经网络提取器输出的卷积神经网络特征图作为训练好的卷积神经网络模型的输入将FPGA硬件加速的卷积神经网络提取器与训练好的卷积神经网络模型进行拼接得特征提取结果包括:

将待识别图片输入FPGA硬件加速的卷积神经网络提取器,经过迁移运算,得到多个block输出的卷积神经网络特征图,并将所述block输出的卷积神经网络特征图作为FPGA硬件加速的卷积神经网络提取器的输出;

利用训练好的卷积神经网络模型读取FPGA硬件加速的卷积神经网络提取器输出的卷积神经网络特征图,作为训练好的卷积神经网络模型的输入,所述卷积神经网络模型的输出即为特征提取结果。

如图5所示,本发明实施例提供的基于迁移学习的加速卷积神经网络特征提取系统包括:

模型选取模块1,用于从现有的公开的全球领先的卷积神经网络模型中,选取其中一个模型;

迁移层选取模块2,用于从已选取的模型中,利用迁移学习原理,选取相应的神经网络层作为迁移层;

卷积神经网络特征提取器构建模块3,用于使用FPGA Verilog编程,在FPGA上通过编程实现选取的迁移层,得到卷积神经网络特征提取器;

神经网络训练模块4,用于迁移学习,通过冻结迁移层,训练非迁移层卷积神经网络,进行神经网络模型训练;

神经网络模型拼接模块5,用于通过将FPGA硬件加速的卷积神经网络提取器输出的卷积神经网络特征图作为训练好的卷积神经网络模型的输入将FPGA硬件加速的卷积神经网络提取器与训练好的卷积神经网络模型进行拼接;

特征提取模块6,用于利用拼接得到的完整的神经网络模型进行特征提取。

下面结合具体实施例对本发明的技术效果作进一步描述。

实施例1:

本发明方法提供了一个基于FPGA的卷积神经网络特征提取器,这个特征提取器,输入为图片数据,输出为神经网络特征图。本发明方法的技术包含以下步骤:

1)选取模型:选取已经在大型数据集训练过的神经网络模型,比如MobileNetV3、InceptionV3、NasNetMobile、Darknet等神经网络模型。

2)选取迁移层:在选取模型之后,利于迁移学习原理,去除神经网络模型后面层,保留神经网络前面的层。比如模型选取的是Darknet网络,Darknet主干网络有5个block残差网络块,那么,本发明选取前面的4个block残差网络块和输入层,作为迁移层,剩下的1个block和输出层将放到CPU中运行。

3)FPGA复现迁移层:选取的卷积神经网络的迁移层,一开始是在CPU/GPU上实现的,一般使用Python、C/C++、CUDA等编程语言实现,而在FPGA上,则使用Verilog语言实现。通过Verilog硬件描述语言编程,在FPGA上,实现本发明选取的卷积神经网络模型迁移层。然后,提取在大型训练集上训练得到的模型权重,把对应层的权重,通过变量的形式,在FPGA中进行赋值。这样,就得到了使用FPGA硬件加速的卷积神经网络提取器。输入为图片数据,输出为卷积神经网络特征图。由于特征提取器,是固定不变的卷积神经网络,在设计时,不需要考虑实现整个通用的神经网络,比如,实现整个caffe或者TensorFlow Lite中的所有功能对象,因此,FPGA编程设计时,将容易很多。

4)训练神经网络:迁移学习分为迁移部分和非迁移部分。神经网络模型初始化的模型权重,使用的是在大型训练集上训练得到的模型权重,这个权重和FPGA迁移层使用的是同一个模型权重。在训练阶段,先加载预训练好的模型权重,以此对模型进行初始化;然后,冻结迁移部分的神经网络,解开不迁移部分的神经网络,开始进行模型训练,直至训练完成。当用户的算法改变后,很多时候,基础算法不需要改变,只需保持迁移层不变,只改变非迁移层即可。

5)拼接神经网络:迁移层在FPGA上运行,在嵌入式设备上,一般接摄像头,输入图片数据,经过迁移层运算之后,输出卷积神经网络特征图;非迁移层,使用TensorFlow Lite这样的工具,将对应层,转换为ARM架构的CPU可以运行的神经网络模型,该网络模型在嵌入式CPU上运行。非迁移层的输入是FPGA上的卷积神经网络特征提取器的输出,而非迁移层的输出,就是整个神经网络算法的输出。

实施例2:

本发明实施例的一种基于迁移学习的加速卷积神经网络特征提取的方法,具体步骤如下:

步骤一、选取模型。从现有的公开的全球领先的卷积神经网络模型中,选取其中一个模型。

步骤二、选取迁移层。从已选取的模型中,利用迁移学习原理,选取相应的神经网络层作为迁移层。

步骤三、FPGA复现迁移层。使用FPGA Verilog编程,在FPGA上通过编程实现选取的迁移层,得到卷积神经网络特征提取器。

步骤四、训练神经网络。使用迁移学习,通过冻结迁移层,训练非迁移层卷积神经网络,完成神经网络模型训练。

步骤四、拼接神经网络。FPGA输出神经网络特征图,作为CPU上运行的神经网络的输入,将两个网络拼接在一起。

本发明方法利用深度神经网络的迁移学习,将卷积神经网络特征提取,通过FPGA编程实现,并且和CPU中的卷积神经网络进行拼接,最终,联合形成一个完整的卷积神经网络,以此解决嵌入式设备运算能力不足,导致运行卷积神经网络困难的问题。具体实施步骤如下:

步骤一、选取模型S1:

选取领先的、广泛应用的、已经在千万级大型数据集进行训练过的神经网络模型。一般从Keras或者TensorFlow的applications中选取,因为这两个框架下的神经网络模型,应用比较广泛,比如InceptionV3、MobileNetV2、NASNetMobile、NASNetLarge等,抑或是选择Darknet这种在图像检测中广泛应用的神经网络模型。这些模型都是现成的、开源免费的。

步骤二、选取迁移层S2:

如图2所示,是卷积神经网络模型的示意图。在步骤一中,本发明选取了一个卷积神经网络模型。接下来,根据迁移学习原理,本发明选择模型的输入层以及神经网络前面的block网络块,作为后续迁移学习时的迁移层。而后面的非迁移层,可以根据需要进行更改。比如,神经网络原本是用来识别图片中的苹果的,那么通过修改神经网络并重新训练,然后就可以识别人、猫、狗等其它物体。

步骤三、FPGA复现迁移层S3:

如图2所示,是卷积神经网络模型的示意图。在选取卷积神经网络迁移层之后,那就要在FPGA中实现迁移层的卷积神经网络。在电脑端,使用通用的神经网络框架构建神经网络模型时,一般使用的是Python、C/C++、Java、Go等软件编程语言进行构建神经网络,这是通过软件编程的方式,在通用芯片处理器上,构建本发明的神经网络模型。现在,本发明需要使用Verilog硬件描述语言,通过设计电子系统的方式,在FPGA上构建本发明的神经网络的迁移层。现代FPGA可编程逻辑门器件,支持让本发明相对轻松地在FPGA上构建CNN卷积神经网络。使用FPGA实现的迁移层神经网络,还需要加载神经网络参数,而神经网络参数的参数值,是通过在大型数据集上训练得到的,本发明可以自行训练,也可以使用公开的训练好的权重,将对应的值一一赋值到对应的神经网络单元的变量中即可。在FPGA上赋值后的迁移层神经网络这个整体,就是本发明的卷积神经网络特征提取器。作为FPGA中的卷积神经网络,以及网络中的参数值,一旦确定,将不再改变。这也将意味着,用户将不再需要训练这部分神经网络,前向推断中,算法使用者可以很容易地读取输出的特征图,作为自己神经网络的输入。很多时候,深度卷积神经网络90%以上计算量,都在特征提取上。这样,本发明就实现了神经网络加速。

步骤四、训练神经网络S4:

如图2所示,是卷积神经网络模型的示意图。在训练神经网络时,本发明要始终冻结神经网络的迁移层,如果不冻结,那么神经网络在训练时,权重参数将会发生改变,导致和FPGA上的参数不一致,卷积神经网络识别将会失败。非迁移层,将解开训练。卷积神经网络的冻结和解开训练,在主流的神经网络框架中,可以轻松实现设置。训练过程和通常的迁移学习的训练保持一致,在用户选择的数据集上,进行训练即可。

步骤四、拼接神经网络S5:

如图3所示,是卷积神经网络模型拼接的示意图。首先,卷积神经网络特征提取器,在FPGA中运行。特征提取器,由多个block卷积神经网络块组成,而每个block则有多个卷积层、池化层、归一化层等组成。这里,本发明将多个block输出的特征图,作为输出。然后,卷积神经网络2,在CPU上运行。根据训练时的神经网络结构,读取一个或者多个特征图,作为卷积神经网络2的输入。最后,卷积神经网络2输出的结果,就是本发明算法的识别结果。神经网络2,从x86架构CPU中,迁移到ARM结构的CPU中运行,是比较容易的,比如使用TensorFlow Lite里的相关转换功能。至此,本发明将结构基本不变的卷积神经网络,固化到FPGA可编程逻辑门器件中加速,将卷积神经网络时常发生改变的部分,放到CPU上运行。这样,既实现了对神经网络加速,又可以根据业务需要,较轻易的修改网络输出结果。

如图6是yolov4神经网络在不同器件上运行的结果,这些器件都是嵌入式设备常见的芯片。横轴是平均准确率AP,纵轴是识别帧率FPS。从中可以看出:①在CPU上,完整的yolov4神经网络,基本上无法运行;②NVIDIA GPU Jetson AGX Xavier上,运行稳定;③FPGA Full Model,是将整个神经网络运行在FPGA上,由于FPGA的并行运算以及高度定制化,使得其识别帧率较高,速度平稳不掉速;④FPGA Transfer Learning是我们的方案,特征提取器的神经网络在FPGA中运行,用户定制化的输出层在CPU上运行,在达到一定准确率的情况下,确保了神经网络识别的帧率满足要求。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。

相关技术
  • 卷积神经网络特征提取方法、系统、嵌入式设备及介质
  • 基于卷积神经网络的特征点提取方法、设备及存储介质
技术分类

06120112409523