FPGA及深度残差网络实现方法、系统、计算机介质与流程

文档序号:17994871发布日期:2019-06-22 01:06阅读:453来源:国知局
FPGA及深度残差网络实现方法、系统、计算机介质与流程

本申请涉及软件技术领域,更具体地说,涉及fpga及深度残差网络实现方法、系统、计算机介质。



背景技术:

深度残差网络在深度学习中起着重要作用,并且由于其高识别率而被广泛用于图像分类。然而,随着数据中心和嵌入式系统中数据量的增加,性能和功耗成为深度残差网络发展的制约因素,使得深度残差网络的适用性降低。

为了提高深度残差网络的适用性,现有的一种解决方式是采用gpu(graphicsprocessingunit,图形处理器)来异构加速深度残差网络。然而,采用gpu异构加速深度残差网络的方法中仍存在功耗较大的问题。

综上所述,如何提供一种功耗低且适用性好的深度残差网络是目前本领域技术人员亟待解决的问题。



技术实现要素:

本申请的目的是提供一种深度残差网络实现系统,其能在一定程度上解决如何提供一种功耗低且适用性好的深度残差网络的技术问题。本申请还提供了一种fpga及深度残差网络实现方法、计算机可读存储介质。

为了实现上述目的,本申请提供如下技术方案:

一种深度残差网络实现系统,应用于fpga,包括:

权重缓冲模块,用于缓存与所述fpga连接的主机端设备发送的权重数据;

特征数据缓冲模块,用于缓存所述主机端设备发送的特征数据和内存写回模块发送的数据;

内存读取模块,用于在每个运算时刻,在所述权重缓冲模块中读取目标权重数据,在所述特征数据缓冲模块中读取目标特征数据;

winograd变换模块,用于对所述目标权重数据和所述目标特征数据进行winograd变换,得到变换权重数据和变换特征数据;以及对卷积模块的卷积运算结果进行winograd变换,得到变换结果;

所述卷积模块,用于对所述变换权重数据和所述变换特征数据进行卷积运算,得到卷积运算结果;

标准化模块,用于对所述变换结果进行标准化处理,得到标准化处理结果;

残差模块,用于读取所述特征数据缓冲模块中的第一特征数据,并对所述标准化处理结果和所述第一特征数据进行加和,得到残差处理结果;

激活模块,用于对所述残差处理结果进行激活处理,得到激活处理结果;

最大池化模块,用于对所述激活处理结果进行最大池化处理,得到最大池化处理结果;

所述内存写回模块,用于将所述最大池化处理结果写回所述特征数据缓冲模块。

优选的,所述winograd变换模块包括:

第一winograd变换单元,用于将所述目标特征数据作为所述变换特征数据;

第二winograd变换单元,用于对所述目标权重数据进行复制,得到所述变换权重数据;

第三winograd变换单元,用于将所述卷积运算结果作为所述变换结果。

优选的,所述winograd变换模块进行winograd变换的算法包括f(2,3)winograd变换算法。

优选的,还包括:

控制模块,用于控制所述内存读取模块、所述卷积模块、所述winograd变换模块、所述标准化模块、所述残差模块、所述激活模块、所述最大池化模块及所述内存写回模块的工作状态。

一种深度残差网络实现方法,应用于fpga,包括:

缓存与所述fpga连接的主机端设备发送的权重数据和特征数据;

在每个运算时刻,在缓存的所述权重数据所述特征数据中,读取目标权重数据和目标特征数据;

对所述目标权重数据和所述目标特征数据进行winograd变换,得到变换权重数据和变换特征数据;

对所述变换权重数据和所述变换特征数据进行卷积运算,得到卷积运算结果;

对所述卷积运算结果进行winograd变换,得到变换结果;

对所述变换结果进行标准化处理,得到标准化处理结果;

读取缓存的特征数据中的第一特征数据,并对所述标准化处理结果和所述第一特征数据进行加和,得到残差处理结果;

对所述残差处理结果进行激活处理,得到激活处理结果;

对所述激活处理结果进行最大池化处理,得到最大池化处理结果;

将所述最大池化处理结果缓存至所述特征数据的缓存区。

一种fpga,包括:

存储单元,用于存储计算机程序;

处理单元,用于执行所述计算机程序时实现如上所述的深度残差网络实现方法的步骤。

一种计算机可读存储介质,应用于fpga,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的深度残差网络实现方法的步骤。

一种深度残差网络实现方法,应用于与所述的fpga连接的主机端设备,包括:

发送权重数据和特征数据至所述fpga;

接收所述fpga对所述权重数据和所述特征数据进行深度残差运算的运算结果;

对所述运算结果进行均值池化处理,得到均值池化处理结果;

对所述均值池化处理结果进行softmax运算,得到softmax运算结果。

优选的,所述发送权重数据和特征数据至所述fpga,包括:

按照所述fpga的数据格式,对所述权重数据和所述特征数据进行重组;

发送重组后的权重数据和特征数据至所述fpga。

优选的,所述主机端设备和所述fpga间通过pcie进行数据传输。

本申请提供的一种深度残差网络实现系统,应用于fpga,包括权重缓冲模块,用于缓存与fpga连接的主机端设备发送的权重数据;特征数据缓冲模块,用于缓存主机端设备发送的特征数据和内存写回模块发送的数据;内存读取模块,用于在每个运算时刻,在权重缓冲模块中读取目标权重数据,在特征数据缓冲模块中读取目标特征数据;winograd变换模块,用于对目标权重数据和目标特征数据进行winograd变换,得到变换权重数据和变换特征数据;以及对卷积模块的卷积运算结果进行winograd变换,得到变换结果;卷积模块,用于对变换权重数据和变换特征数据进行卷积运算,得到卷积运算结果;标准化模块,用于对变换结果进行标准化处理,得到标准化处理结果;残差模块,用于读取特征数据缓冲模块中的第一特征数据,并对标准化处理结果和第一特征数据进行加和,得到残差处理结果;激活模块,用于对残差处理结果进行激活处理,得到激活处理结果;最大池化模块,用于对激活处理结果进行最大池化处理,得到最大池化处理结果;内存写回模块,用于将最大池化处理结果写回特征数据缓冲模块。本申请提供的一种深度残差网络实现系统,借助fpga实现了深度残差网络,由于fpga低延迟和低功耗的特点,借助fpga实现的深度残差网络也具有低延迟和低功耗的特点,相应的,适用性较好。本申请提供的一种fpga及深度残差网络实现方法、计算机可读存储介质也解决了相应技术问题。

附图说明

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

图1为本申请实施例提供的一种深度残差网络实现系统的结构示意图;

图2为本申请实施例提供的一种深度残差网络实现方法的第一流程图;

图3为本申请实施例提供的一种fpga的结构示意图;

图4为本申请实施例提供的一种fpga的另一结构示意图;

图5为本申请实施例提供的一种深度残差网络实现方法的第二流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

深度残差网络在深度学习中起着重要作用,并且由于其高识别率而被广泛用于图像分类。然而,随着数据中心和嵌入式系统中数据量的增加,性能和功耗成为深度残差网络发展的制约因素,使得深度残差网络的适用性降低。为了提高深度残差网络的适用性,现有的一种解决方式是采用gpu(graphicsprocessingunit,图形处理器)来异构加速深度残差网络。然而,采用gpu异构加速深度残差网络的方法中仍存在功耗较大的问题。本申请提供的一种深度残差网络实现系统解决了如何提供一种功耗低且适用性好的深度残差网络的技术问题。

请参阅图1,图1为本申请实施例提供的一种深度残差网络实现系统的结构示意图。

本申请实施例提供的一种深度残差网络实现系统100,应用于fpga(field-programmablegatearray,现场可编程门阵列),可以包括:

权重缓冲模块101,用于缓存与fpga连接的主机端设备发送的权重数据;

特征数据缓冲模块102,用于缓存主机端设备发送的特征数据和内存写回模块发送的数据;

内存读取模块103,用于在每个运算时刻,在权重缓冲模块101中读取目标权重数据,在特征数据缓冲模块102中读取目标特征数据;

winograd变换模块104,用于对目标权重数据和目标特征数据进行winograd变换,得到变换权重数据和变换特征数据;以及对卷积模块105的卷积运算结果进行winograd变换,得到变换结果;

卷积模块105,用于对变换权重数据和变换特征数据进行卷积运算,得到卷积运算结果;

标准化模块106,用于对变换结果进行标准化处理,得到标准化处理结果;

残差模块107,用于读取特征数据缓冲模块102中的第一特征数据,并对标准化处理结果和第一特征数据进行加和,得到残差处理结果;

激活模块108,用于对残差处理结果进行激活处理,得到激活处理结果;

最大池化模块109,用于对激活处理结果进行最大池化处理,得到最大池化处理结果;

内存写回模块110,用于将最大池化处理结果写回特征数据缓冲模块102。

具体应用场景中,本申请提供的一种深度残差网络实现系统中,各个模块间的连接方式可以根据实际需要确定,比如各个模块间可以采用无线方式连接,也可以采用有线方式连接等。权重缓冲模块及特征数据缓冲模块所应用的存储介质也可以根据实际需要确定,比如其可以为ddr(doubledatarate,双倍速率同步动态随机存储器)等。

具体应用场景中,卷积模块的卷积运算可以由pe阵列计算,pe阵列可以是菊花链连接结构。此外,单pe结构可以是乘法器、累加器(mac)单元和高速缓存的阵列。累加器用于使winograd变换后的矢量化特征数据和滤波器参数相乘,累加器累积中间结果直到卷积完成,最后,累积结果还需要winograd变换获得真实的卷积结果。

具体应用场景中,标准化模块可以通过公式y=(x-mu)/sqrt(sigma)及z=alpha*y+bias来实现标准化,其中,公式y=(x-mu)/sqrt(sigma)描述了批量归一化操作,x表示卷积结果,mu和sigma表示相应系数;公式z=alpha*y+bias描述了伸缩运算,alpha表示比例系数,bias表示偏置系数。

本申请提供的一种深度残差网络实现系统,应用于fpga,包括权重缓冲模块,用于缓存与fpga连接的主机端设备发送的权重数据;特征数据缓冲模块,用于缓存主机端设备发送的特征数据和内存写回模块发送的数据;内存读取模块,用于在每个运算时刻,在权重缓冲模块中读取目标权重数据,在特征数据缓冲模块中读取目标特征数据;winograd变换模块,用于对目标权重数据和目标特征数据进行winograd变换,得到变换权重数据和变换特征数据;以及对卷积模块的卷积运算结果进行winograd变换,得到变换结果;卷积模块,用于对变换权重数据和变换特征数据进行卷积运算,得到卷积运算结果;标准化模块,用于对变换结果进行标准化处理,得到标准化处理结果;残差模块,用于读取特征数据缓冲模块中的第一特征数据,并对标准化处理结果和第一特征数据进行加和,得到残差处理结果;激活模块,用于对残差处理结果进行激活处理,得到激活处理结果;最大池化模块,用于对激活处理结果进行最大池化处理,得到最大池化处理结果;内存写回模块,用于将最大池化处理结果写回特征数据缓冲模块。本申请提供的一种深度残差网络实现系统,借助fpga实现了深度残差网络,由于fpga低延迟和低功耗的特点,借助fpga实现的深度残差网络也具有低延迟和低功耗的特点,相应的,适用性较好。

本申请实施例提供的一种深度残差网络实现系统中,winograd变换模块可以包括:第一winograd变换单元,用于将目标特征数据作为变换特征数据;第二winograd变换单元,用于对目标权重数据进行复制,得到变换权重数据;第三winograd变换单元,用于将卷积运算结果作为变换结果。

也即本申请实施例提供的一种深度残差网络实现系统对winograd变换过程进行了改进,与现有的将目标特征数据winograd变换为变换特征数据,将目标权重数据winograd变换为变换权重数据,将卷积运算结果winograd变换为变换结果的技术相比,过程简便,运算速度快,可以提高卷积模块的数据吞吐量。具体的,在卷积模块进行1×1卷积运算时,可以优先使用本申请改进后的winograd变换方法进行运算。

实际应用场景中,现有的winograd变换所应用的算法为f(4,3)winograd变换,然而,在fpga中,pe可以处理向量化的特征数据,w_vector*c_vector表示区块大小,w_vector表示特征像素的宽度,c_vector表示深度,在fpga架构中,c_vector是固定值等于8,w_vector=6对应于f(4,3)winograd变换,由于采用半精度浮点数据类型,需要每周期获取w_vector*c_vector*2byte=96byte的块,可以达到238mhzfpga时钟频率,因此带宽要求为96byte*frequency=22.8gb/s,但是一个缓冲模块仅提供15gb/s的带宽,缓冲模块的带宽成为瓶颈,为了降低带宽要求,winograd变换模块进行winograd变换的算法可以选用f(2,3)winograd变换算法。

实际应用场景中,为了满足对深度残差网络实现系统中各个模块的控制,本申请实施例提供的一种深度残差网络实现系统中还可以包括:控制模块,用于控制内存读取模块、卷积模块、winograd变换模块、标准化模块、残差模块、激活模块、最大池化模块及内存写回模块的工作状态。具体应用场景中,控制模块还可以控制权重缓冲模块和特征数据缓冲模块各自的数据读取过程等,比如计算每次读取数据时的起始地址等。

本申请还提供了一种深度残差网络实现方法,其具有本申请实施例提供的一种深度残差网络实现系统具有的对应效果。请参阅图2,图2为本申请实施例提供的一种深度残差网络实现方法的第一流程图。

本申请实施例提供的一种深度残差网络实现方法,应用于fpga,可以包括如下步骤:

步骤s101:缓存与fpga连接的主机端设备发送的权重数据和特征数据;

步骤s102:在每个运算时刻,在缓存的权重数据特征数据中,读取目标权重数据和目标特征数据;

步骤s103:对目标权重数据和目标特征数据进行winograd变换,得到变换权重数据和变换特征数据;

步骤s104:对变换权重数据和变换特征数据进行卷积运算,得到卷积运算结果;

步骤s105:对卷积运算结果进行winograd变换,得到变换结果;

步骤s106:对变换结果进行标准化处理,得到标准化处理结果;

步骤s107:读取缓存的特征数据中的第一特征数据,并对标准化处理结果和第一特征数据进行加和,得到残差处理结果;

步骤s108:对残差处理结果进行激活处理,得到激活处理结果;

步骤s109:对激活处理结果进行最大池化处理,得到最大池化处理结果;

步骤s110:将最大池化处理结果缓存至特征数据的缓存区。

本申请实施例提供的一种深度残差网络实现方法中,对目标权重数据和目标特征数据进行winograd变换,得到变换权重数据和变换特征数据的过程可以具体为:将目标特征数据作为变换特征数据,对目标权重数据进行复制,得到变换权重数据;相应的,对卷积运算结果进行winograd变换,得到变换结果的过程可以具体为:将卷积运算结果作为变换结果。

本申请实施例提供的一种深度残差网络实现方法中,进行winograd变换的算法包括f(2,3)winograd变换算法。

本申请还提供了一种fpga和计算机可读存储介质,其均具有本申请实施例提供的一种深度残差网络实现系统具有的对应效果。请参阅图3,图3为本申请实施例提供的一种fpga的结构示意图。

本申请实施例提供的一种fpga,包括存储单元201和处理单元202,存储单元201中存储有计算机程序,处理单元202执行存储单元201中存储的计算机程序时实现以下步骤:

缓存与fpga连接的主机端设备发送的权重数据和特征数据;

在每个运算时刻,在缓存的权重数据特征数据中,读取目标权重数据和目标特征数据;

对目标权重数据和目标特征数据进行winograd变换,得到变换权重数据和变换特征数据;

对变换权重数据和变换特征数据进行卷积运算,得到卷积运算结果;

对卷积运算结果进行winograd变换,得到变换结果;

对变换结果进行标准化处理,得到标准化处理结果;

读取缓存的特征数据中的第一特征数据,并对标准化处理结果和第一特征数据进行加和,得到残差处理结果;

对残差处理结果进行激活处理,得到激活处理结果;

对激活处理结果进行最大池化处理,得到最大池化处理结果;

将最大池化处理结果缓存至特征数据的缓存区。

本申请实施例提供的一种fpga,包括存储单元201和处理单元202,存储单元201中存储有计算机子程序,处理单元202执行存储单元201中存储的计算机子程序时具体实现以下步骤:将目标特征数据作为变换特征数据,对目标权重数据进行复制,得到变换权重数据;相应的,将卷积运算结果作为变换结果。

本申请实施例提供的一种fpga,包括存储单元201和处理单元202,存储单元201中存储有计算机子程序,处理单元202执行存储单元201中存储的计算机子程序时具体实现以下步骤:采用f(2,3)winograd变换算法进行winograd变换。

请参阅图4,本申请实施例提供的另一种fpga中还可以包括:与处理单元202连接的输入端口203,用于传输外界输入的命令至处理单元202;与处理单元202连接的显示单元204,用于显示处理单元202的处理结果至外界;与处理单元202连接的通信模块205,用于实现fpga与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(hml)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线连接:无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术。

本申请实施例提供的一种计算机可读存储介质,应用于fpga,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

缓存与fpga连接的主机端设备发送的权重数据和特征数据;

在每个运算时刻,在缓存的权重数据特征数据中,读取目标权重数据和目标特征数据;

对目标权重数据和目标特征数据进行winograd变换,得到变换权重数据和变换特征数据;

对变换权重数据和变换特征数据进行卷积运算,得到卷积运算结果;

对卷积运算结果进行winograd变换,得到变换结果;

对变换结果进行标准化处理,得到标准化处理结果;

读取缓存的特征数据中的第一特征数据,并对标准化处理结果和第一特征数据进行加和,得到残差处理结果;

对残差处理结果进行激活处理,得到激活处理结果;

对激活处理结果进行最大池化处理,得到最大池化处理结果;

将最大池化处理结果缓存至特征数据的缓存区。

本申请实施例提供的一种计算机可读存储介质,应用于fpga,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现以下步骤:将目标特征数据作为变换特征数据,对目标权重数据进行复制,得到变换权重数据;相应的,将卷积运算结果作为变换结果。

本申请实施例提供的一种计算机可读存储介质,应用于fpga,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现以下步骤:采用f(2,3)winograd变换算法进行winograd变换。

请参阅图5,图5为本申请实施例提供的一种深度残差网络实现方法的第二流程图。

本申请实施例提供的一种深度残差网络实现方法,应用于与上面所描述的fpga连接的主机端设备,可以包括以下步骤:

步骤s201:发送权重数据和特征数据至fpga;

步骤s202:接收fpga对权重数据和特征数据进行深度残差运算的运算结果;

步骤s203:对运算结果进行均值池化处理,得到均值池化处理结果;

步骤s204:对均值池化处理结果进行softmax运算,得到softmax运算结果。

不难理解,本申请实施例提供的一种深度残差网络实现方法中,将最大池化过程交由fpga中执行,将均值池化过程交由主机端设备执行,既可以简化fpga的硬件架构,又可以提高均值池化处理的性能。具体应用场景中,主机端设备在得到softmax运算结果后,还可以进行识别率计算、性能分析等计算工作。

本申请实施例提供的一种应用于主机端设备的深度残差网络实现方法中,发送权重数据和特征数据至fpga的过程可以具体为:按照fpga的数据格式,对权重数据和特征数据进行重组;发送重组后的权重数据和特征数据至fpga。

本申请实施例提供的一种应用于主机端设备的深度残差网络实现方法中,主机端设备和fpga间可以通过pcie进行数据传输。

本申请所涉及的计算机可读存储介质包括随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质。

本申请实施例提供的一种fpga及深度残差网络实现方法、计算机可读存储介质中相关部分的说明请参见本申请实施例提供的一种深度残差网络实现系统中对应部分的详细说明,在此不再赘述。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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