一种基于异构计算的卷积神经网络算法设计实现方法与流程

文档序号:14872306发布日期:2018-07-07 01:15阅读:432来源:国知局

本发明属于异构计算、图像识别技术领域,具体为一种基于异构计算的卷积神经网络算法设计和实现方法。



背景技术:

随着计算能力的提高和科学计算的发展,图像识别技术的应用日益广泛。传统的图像识别技术在面对类别数量大、环境较为复杂的情况时,识别效果往往很难令人满意。基于卷积神经网络的深度学习算法模型成为人工智能领域的研究热点,深度学习系统对比传统的图像识别方法无需进行复杂的图像预处理过程,并且网络可以自行学习归纳特征而无需人工设计特征,其识别效果远远大于传统网络的识别率。

卷积神经网络(convolutionalneuralnetwork,cnn)受神经科学研究的启发。经过20多年的演变,已成为当前图像识别领域的研究热点,它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。这个优点在网络的输入是多维图像时表现的更为明显,图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。

在实现卷积神经网络算法模型中,卷积计算占整个算法模型90%的计算量,因此卷积层的高效计算是大幅提升cnn算法模型计算效率的关键,通过硬件加速实现卷积计算是一种有效途径。

当前,普遍以isa架构为基础的gpu完成卷积神经网络计算的软件实现,取得令人瞩目的高效率和高性能的结果,然而gpu逻辑规模有限,核心利用率低、缓存小,高能耗,难以进入消费者使用的应用领域。fpga具有高性能并行计算和低功耗的优点,在fpga上实现卷积神经网络算法是该领域的必然发展方向。

虽然卷积神经网络具有识别率高的优点,但其计算量十分巨大,选用的平台如果不适当,则会影响卷积神经网络算法实现的性能。所以实现卷积神经网络具有很大的挑战,主要包括以下几个方面:

(1)卷积神经网络算法目前还处于研究阶段,若要大规模产业化还需进行大量的算法优化。若要大规模产业化,则需对卷积神经网络算法有非常深入的了解。

(2)fpga的开发相对于传统pc、单片机的开发有很大不同。fpga以并行运算为主,以硬件描述语言来实现;相比于pc或单片机的顺序操作有很大区别,造成了fpga开发难度大。

(3)在fpga上实现卷积神经网络算法,需要有大量的fpga工程经验。fpga在时序上的约束以及跨时钟域的处理都是工程搭建中的难点。



技术实现要素:

本发明方法的目的是寻找一种快速探索出卷积神经网络模型的设计方案,以解决目前卷积神经网络算法在硬件上开发难度大、周期长以及基于gpu、cpu实现卷积神经网络算法功耗大、效率低的问题。

本发明搭建了通用的sdsoc硬件平台,后期可以快速的在此硬件平台上实现相关的图像处理项目。

本发明提供了基于sdsoc的卷积神经网络算法实现的设计方法,实现的硬件平台是zynq-7020可编程片上soc,硬件平台内置fpga和arm处理。本发明首先是在pc上设计和训练卷积神经网络模型,接着通过vivado和petlinux工具搭建通用的图像处理sdsoc硬件平台,然后在arm上对输入图像数据进行预处理,将处理完的数据传输到fpga进行卷积运算,卷积运算得到的特征图数据传回arm进行池化层运算和分类运算。具体包括以下4个过程:

1、在pc上设计和训练网络模型

(1)在深度学习工具caffe上设计网络模型;

(2)训练网络模型及测试网络模型;

(3)提取网络模型参数。

2、在sdsoc上搭建软硬平台

(1)通过vivado工具搭建通用的硬件平台;

(2)在petlinux上利用vivado工程生成sdsoc所需硬件平台文件;

(3)在sdsoc上搭建软件平台。

3、卷积神经网络模型预处理

(1)对输入数据进行归一化处理;

(2)通过axi总线将预处理完成数据传输至pl端;

(3)pl端将预处理数据缓存在块随机存储器。

4、卷积网络算法代码软硬件分区

通过sdsoc软件将卷积神经网络将最计算量最大的卷积运算映射到fpga中去实现,其下池化层和分类层在arm中实现。

(1)卷积运算

卷积运算即二维卷积运算,其计算方式为第i行第j列的卷积结果zij,x为输入图像,卷积核尺寸为k2大小。表达式为。在计算一个像素点的卷积结果yn,m时,计算单元先获得输入像素点xm,n以及周围k2-1邻域的k2个数据,然后与卷积核中的k2个权值相对应相乘再累加,将得到的数据缓存到blockram中。

(2)池化层计算

将blockram的数据传送到arm端进行池化层计算,池化层采用取最大值的方案。输入数据为4x4,采样核的size为2,stride为2。输入数据大小类似卷积层的计算法,(input_width+2*pad-pool_size)/stride+1。

(3)分类计算

分类计算在arm端采用softmax完成数据分类计算,将得到的分类结果进行输出。

本发明的主要特点有:

(1)快速的对卷积神经网络算法实现方案进行设计和实现;

(2)完成基于sdsoc平台的通用图像处理硬件平台;

(3)在低端的异构平台上实现了卷积神经网络算法的实现;

(4)采用zynq-7020芯片,具有体积小,功耗低,效率高的特点,可广泛应用于嵌入式系统领域。

本发明利用zynq中fpga快速并行处理和极低功耗的高性能计算实现卷积神经网络算法中复杂度最高的计算部分,在保证算法正确率的前提下,大幅度的提升算法的效率。利用sdsoc开发方式相比于传统的vivado+sdk的开发方式周期更短,更快地探索出性能最佳的系统设计方案。

附图说明

图1卷积神经网络算法实现系统框图。

图2vivado搭建的通用sdsoc图像处理硬件平台。

图3sdsoc硬件平台文件。

图4pc端卷积神经网络算法模型中的卷积运算。

图5pc端卷积神经网络算法模型中的池化运算。

具体实施方式

一种基于异构计算的卷积神经网络算法设计实现方法。考虑了卷积神经网络的算法实现效率、性能、功耗以及开发周期等因素。结合附图1所示,其具体实现步骤如下:

1、首先arm端通过spi总线驱动摄像头采集数据;

2、采集到的bayer格式图像数据转化为rgb格式的图像数据;

3、将fpga端的数据通过axi总线传输到arm端,进行ddr3缓存;

4、在arm端从ddr3中取数据进行图像预处理;

5、将预处理的数据传输到fpga端,进行卷积神经网络算法中卷积运算;

6、将卷积运算结果再次传输到arm端进行池化层计算;

7、实现完成池化层运算后,进行分类运算,分类运算在arm端利用softmax运算完成数据分类计算;

8、最后通过将分类运算的结果通过hdmi接口输出并进行分类。

一种基于异构计算的卷积神经网络算法设计实现方法。结合附图2所示,首先需要搭建基于sdsoc的通用图像处理硬件平台,先是利用vivado软件将基本的硬件平台搭建起来,其中中断接口预留给sdsoc软件自动布局布线。接着将该工程导入linux系统中,通过petlinux工具生成相关的sdsoc硬件平台的文件,其生成的文件具体见附图3。

一种基于异构计算的卷积神经网络算法设计实现方法。在pc端设计卷积神经网络算法模型,其中一个卷积层见附图4。

一种基于异构计算的卷积神经网络算法设计实现方法。在pc端设计卷积神经网络算法模型,其中一个池化层见附图5。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1