本技术涉及卷积神经网络加速器,特别涉及一种基于zynq的卷积神经加速器实现装置及方法。
背景技术:
1、随着现代设备算力的提升和模型结构的持续优化,卷积神经网络在机器视觉任务上获得了接近甚至优于人类视觉的识别能力,展现了其巨大的应用潜力与价值。在终端设备上部署卷积神经网络仍存在一定挑战,由于多数终端设备的计算能力和存储容量相对有限,无法满足部署卷积神经网络的资源条件。为了改善这一情况,通过设计专用的卷积神经网络硬件加速器,从而降低模型部署的硬件需求。目前,常见神经网络加速器架构中,硬件实现的方案主要包括cpu、gpu、asic和fpga四种。
2、cpu由于其硬件架构的限制,在加速效率难以有显著提升,而gpu在运行时功耗较高,不适合终端设备使用。asic虽然具有高性能、高能效比等优点,但开发周期长,流片成本高。相比之下,fpga以其功耗低、可重构等优点被视为一种颇具吸引力的解决方案。然而,传统fpga在任务调动和数据流分配时需要使用slice硬件集成,指令集构建速度偏慢。
技术实现思路
1、本技术提供了一种基于zynq的卷积神经加速器实现装置及方法,可用于解决传统fpga在任务调动和数据流分配时需要使用slice硬件集成,指令集构建速度偏慢的技术问题。
2、本技术提供一种基于zynq的卷积神经加速器实现装置,装置基于zynq异构芯片实现;
3、所述卷积神经网络加速器实现装置包括加速子系统、控制子系统和存储子系统;
4、加速子系统包含卷积运算模块、采样运算模块;
5、控制子系统包含数据流控制模块、驱动模块和参数配置模块;
6、存储子系统包括片外存储模块和片内存储模块;
7、其中,控制子系统与加速子系统相接,控制子系统与存储系统相接,存储子系统与加速子系统相接。
8、进一步地,所述加速子系统设置于zynq异构芯片可编程逻辑端;
9、所述控制子系统设置于zynq异构芯片处理器系统端;
10、所述存储子系统设置于zynq异构芯片两片ddr3芯片内。
11、进一步地,所述加卷积运算模块包括四层级处理单元;
12、其中,第一层级处理单元用于缓存输入数据、权重数据、偏执数据和控制指令;第一层级缓存的控制指令包括输入数据长度、输入数据宽度、输入数据通道数、权重数据长度、权重数据宽度、输出数据通道数、是否使用激活函数七个控制参数;第一层级处理单元所有的数据宽度为设置为8bit
13、第二、第三和第四层级数据宽度设置为16bit;
14、第二层级处理单元用于遍历输出通道、输入通道、输入数据长度、输入数据宽度、卷积核长度、卷积核宽度并实现卷积运算;
15、第三层级处理单元用于对卷积运算结果执行激活运算,激活函数包含relu、leakyrelu和sigmoid三种;
16、第四层级处理单元用于并行输出激活运算结果;
17、第一层级处理单元和第二层级处理单元基于乒乓缓冲实现数据流传输,第二层级处理单元和第三层级处理单元基于并行通道实现数据流传输,第三层级处理单元和第四层级处理单元基于乒乓缓冲实现数据流传输。
18、进一步地,所述加采样运算模块包括三层级处理单元;
19、其中,第一层级处理单元用于并行缓存输入数据和控制指令;第二层级处理单元用于根据控制指令选择采样算法进行采样运算;
20、其中,采样算法包含最邻近插值、反池化两种上采用算法,和最大池化、最小池化、平均池化三种下采样算法;第三层级处理单元负责输出采样运算结果,各处理单元基于流水线实现数据传输。
21、第一层级处理单元数据宽度为设置为8bit。当第二层级处理单元控制指令设置为0时,代表当前采样模式为上采样,对应采样算法为最邻近差值;当控制指令设置为1时,代表当前采样模式为上采样,对应采样算法为反池化;当控制指令设置为2时,代表当前采样模式为下采样,对应采样算法为最大池化;当控制指令设置为3时,代表当前采样模式为下采样,对应采样算法为最小池化;当控制指令设置为4时,代表当前采样模式为下采样,对应采样算法为平均池化;当控制指令设置为其它数字时,采样模式与控制指令为0时相同。
22、进一步地,所述数据流控制模块从sd卡内加载由pc训练得到的权重参数和偏执参数到片外存储模块内,并根据参数配置模块指令控制片外存储模块和片内存储模块的数据流走向。
23、进一步地,所述驱动模块基于opencv进行usb摄像头驱动和hdmi显示屏驱动,用于接入摄像头输入数据和输出数据到显示屏;
24、基于mmio进行对加速子系统内两个模块的读写驱动,用于传输输入数据、权重参数、偏执参数和控制指令。
25、进一步地,所述参数配置模块从sd卡读取卷积神经网络结构文件并生成控制指令和配置参数发送到数据流控制模块和驱动模块。
26、进一步地,加速子系统内的卷积运算模块具有数据输入、权重输入、偏执收入、数据输出和控制指令5个数据接口;
27、其中数据输入、权重输入、偏执收入、数据输出四个接口均设置为指针变量,通过axi4总线与片外存储器的交互,而控制信号设置为常数变量,通过一根axi4_lite总线上与片外存储器的交互。
28、加速子系统内的采样运算模块具有数据输入、数据输出和控制指令3个数据接口;其中输入数据和数据输出接口设置为指针变量,通过axi4总线与片外存储器的交互,控制指令设置为常数变量,通过一根axi4_lite总线交互。
29、进一步地,加速子系统内的卷积运算模块和采样模块卷积运算模块和采样模块的程序封装时自动插入的32位的控制寄存器用于指示当前模块状态;
30、基于mmio进行对加速子系统内两个模块的读写驱动,单次运算过程中,控制指令只传输一次,使用mmio.write函数传递实际参数;输入数据、权重参数、偏执参数,使用mmio.write函数传递的是输入数据、权重参数、偏执参数数组在片外存储器上的物理地址。
31、本技术还提供一种基于zynq的卷积神经加速器实现方法,方法包括:
32、步骤1,模型训练:在pc端训练好待加速的卷积神经网络获取权重和偏执参数;
33、步骤2,模型量化:对模型进行量化,将浮点型的权重和偏执参数转换为定点数;
34、步骤3,模型加载:将pc端得到的卷积神经网络结构文件和量化好的权重、偏执文件转移到sd卡内部,接着使用控制子系统的数据流控制模块将sd卡内的权重、偏执文件缓存至片外存储模块,等待运算时加速子系统调用;
35、步骤4,模型加载完成以后,在处理器系统端使用写好的摄像头驱动和显示屏驱动显示屏和摄像头,摄像头驱动完成以后自动捕捉图像数据并传入片外存储内部等待加速子模块调用;
36、步骤5,启动加速器:进行输入图像预处理、模型前向推理和输出图像后处理;
37、其中输入图像预处理包括:
38、使用resize函数将摄像头输入的图像修改为符合神经网络需求的尺寸;然后对图像归一化操作,将图像的像素值缩放至-1到1的区间内;
39、在模型前向推理包括:使用参数配置模块读取sd卡内部卷积神经网络结构文件并生成对应的控制参数,然后加载归一化后的图像数据进行前向推理;在前向推理过程中调用加速子系统内的模块进行运算时需要先通过mmio接口传递控制参数,再通过数据流控制模块将输入数据、权重数据和偏执数据加载至片内存储器供加速子模块调用;运算完成后,使用数据流控制模块将运算结果从片内存储器加载至片外存储器等待下一次调用,重复以上步骤直至前向推理过程结束得到最终的输出数据。
40、输出图像后处理包括,执行阈值处理、非极大值抑制操作提取有用的信息;阈值处理用于删除小于设定阈值的参数,非极大值抑制保留剩余参数内的最大值;
41、步骤6:将输出结果通过hdmi接口传输到外接显示屏
42、基于zynq异构芯片实现的卷积神经网络加速器,将网络内运算占比较大的卷积层和采样层放置在可编程逻辑端,通过搭建乒乓缓冲、多通道并行、流水线架构、数据位宽裁剪等方式优化层内数据处理过程实现运算加速。将卷积神经网络数据流调度任务放置于处理器系统端借助软件语言编写层间数据调度指令,实现卷积神经网络前向推理。在识别精度满足并且要求的情况下,完成了卷积神经网络的加速任务,峰值算力达到29gops,功耗仅3.705w。其中,加速器部分功耗2.622w,占用lut45957个,dsp211个,bram55个,与桌面级cpu和gpu相比,具有较高的能效比。本装置可根据实际需求对各个子模块进行调整,以适用于其他zynq芯片。
1.一种基于zynq的卷积神经加速器实现装置,其特征在于,所述装置基于zynq异构芯片实现;
2.根据权利要求1所述的装置,其特征在于,所述加速子系统设置于zynq异构芯片可编程逻辑端;
3.根据权利要求2所述的装置,其特征在于,
4.根据权利要求2所述的装置,其特征在于,所述加采样运算模块包括三层级处理单元;
5.根据权利要求2所述的装置,其特征在于,所述数据流控制模块从sd卡内加载由pc训练得到的权重参数和偏执参数到片外存储模块内,并根据参数配置模块指令控制片外存储模块和片内存储模块的数据流走向。
6.根据权利要求2所述的装置,其特征在于,所述驱动模块基于opencv进行usb摄像头驱动和hdmi显示屏驱动,用于接入摄像头输入数据和输出数据到显示屏;
7.根据权利要求2所述的装置,其特征在于,所述参数配置模块从sd卡读取卷积神经网络结构文件并生成控制指令和配置参数发送到数据流控制模块和驱动模块。
8.根据权利要求2所述的装置,其特征在于,加速子系统内的卷积运算模块具有数据输入、权重输入、偏执收入、数据输出和控制指令5个数据接口;
9.根据权利要求2所述的装置,其特征在于,加速子系统内的卷积运算模块和采样模块卷积运算模块和采样模块的程序封装时自动插入的32位的控制寄存器用于指示当前模块状态;
10.一种基于zynq的卷积神经加速器实现方法,方法基于权利要求1至9中的任一装置实现,其特征在于,所述方法包括:
