CN114021711A - 卷积神经网络部署方法、装置、计算机设备及存储介质 - Google Patents

卷积神经网络部署方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN114021711A
CN114021711A CN202111290658.7A CN202111290658A CN114021711A CN 114021711 A CN114021711 A CN 114021711A CN 202111290658 A CN202111290658 A CN 202111290658A CN 114021711 A CN114021711 A CN 114021711A
Authority
CN
China
Prior art keywords
data
instruction
convolutional neural
ddr
neural network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111290658.7A
Other languages
English (en)
Inventor
梁俊杰
朱明程
李昆华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen University
Original Assignee
Shenzhen University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen University filed Critical Shenzhen University
Priority to CN202111290658.7A priority Critical patent/CN114021711A/zh
Publication of CN114021711A publication Critical patent/CN114021711A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本申请实施例属于人工智能中的移动端部署技术领域,涉及一种应用于移动终端的卷积神经网络部署方法、装置、计算机设备及存储介质。本申请可以在无任何硬件知识的情况下,通过修改指令集与数据结构实现在不同时间快速部署不同结构的卷积神经网络,或对一个已部署的网络进行结构上的修改,标准卷积与深度可分离卷积使用几乎相同的硬件资源完成,在提高通用性的同时,大大降低了硬件资源的消耗,通过卷积的分块与分组,实现了在有限硬件资源上计算几乎任意特征图尺寸、层数、核大小、卷积步长的卷积。

Description

卷积神经网络部署方法、装置、计算机设备及存储介质
技术领域
本申请涉及人工智能中的移动端部署技术领域,尤其涉及一种应用于移动终端的卷积神经网络部署方法、装置、计算机设备及存储介质。
背景技术
目前,针对于图像处理方面的AI技术中,如目标识别或物体检测等任务,卷积神经网络的性能普遍优于其他类型的神经网络,所以卷积神经网络的使用更多。AI技术落地方式有CPU、GPU、ASIC或FPGA。CPU作为通用处理器,除了要满足计算要求,同时还要满足响应人机交互的应用,以及处理任务之间的同步与协调,这种硬件结构在面对数据计算需求大于控制指令需求的卷积神经网络模型时,不能很好的处理。GPU在设计上突出计算输出最大化,几乎将所有的空间都给了ALU,所以GPU的算力优势十分明显,但因其面积、功耗、能效比使得GPU无法在小体积、低功耗的移动式终端进行部署;ASIC芯片为算法而定制,不会有冗余,功耗低,能效比高,但开发周期长,又因其定制性,生产之后其内部结构无法改变,缺乏灵活性,不利于对目前发展迅速的卷积神经网络进行加速,且在小规模部署应用上,成本巨大。相比于GPU,FPGA的体积更小,功耗更低,流水线并行与数据并行能力更强。相比于CPU,FPGA有更强的算力;相比于GPU,FPGA体积更小、功耗更低;相比于ASCI,FPGA在小规模部署上成本更低。
由于具体任务不同,卷积神经网络的结构也不同,例如:卷积计算方式、特征图尺寸、层数、核大小、卷积步长、激活函数、池化等等。一般地,神经网络在FPGA上的部署方式,大多是根据其网络结构设计硬件结构,部署完成后便只能够加速该种结构的网络。若要加速另一结构不同的网络,就只能重新进行硬件设计,该过程对于FPGA设计者来说比较容易,但大部分情况下,该FPGA板卡的使用者并非其设计者,对使用者来说很难去完成硬件设计过程,由此可见,传统的神经网络部署方式存在通用性较弱的问题。
发明内容
本申请实施例的目的在于提出一种应用于移动终端的卷积神经网络部署方法、装置、计算机设备及存储介质,以解决传统的神经网络部署方式存在通用性较弱的问题。
为了解决上述技术问题,本申请实施例提供一种应用于移动终端的卷积神经网络部署方法,采用了如下所述的技术方案:
接收携带有待部署模型参数以及指令的卷积神经网络部署请求;
根据PCIe接口将所述待部署模型参数以及所述指令传输至DDR;
从所述DDR的指令区域读取第一条指令;
根据所述第一条指令以及计数器从所述DDR的权重区域读取第一权重数据,并存储至Wt_RAM;
根据所述第一条指令以及所述计数器从所述DDR的特征图一区读取输入特征图数据,并存储至Fin_RAM;
根据所述第一条指令以及所述计数器从所述DDR的偏置区域读取偏置数据,并存储至Bias_FIFO;
根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作,并将所述Fout_RAM的数据写回所述DDR的特征图二区;
当完成所述指令区域中所有指令的所述卷积计算操作后,得到推理结果;
根据所述PCIe接口输出所述DDR的推理结果。
为了解决上述技术问题,本申请实施例还提供一种应用于移动终端的卷积神经网络部署装置,采用了如下所述的技术方案:
请求接收模块,用于接收携带有待部署模型参数以及指令的卷积神经网络部署请求;
数据传输模块,用于根据PCIe接口将所述待部署模型参数以及所述指令传输至DDR;
指令读取模块,用于从所述DDR的指令区域读取第一条指令;
权重数据读取模块,用于根据所述第一条指令以及计数器从所述DDR的权重区域读取第一权重数据,并存储至Wt_RAM;
输入特征图读取模块,用于根据所述第一条指令以及所述计数器从所述DDR的特征图一区读取输入特征图数据,并存储至Fin_RAM;
偏置数据读取模块,用于根据所述第一条指令以及所述计数器从所述DDR的偏置区域读取偏置数据,并存储至Bias_FIFO;
卷积计算模块,用于根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作,并将所述Fout_RAM的数据写回所述DDR的特征图二区;
推理结果获取模块,用于当完成所述指令区域中所有指令的所述卷积计算操作后,得到推理结果;
输出模块,用于根据所述PCIe接口输出所述DDR的推理结果。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上所述的应用于移动终端的卷积神经网络部署方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上所述的应用于移动终端的卷积神经网络部署方法的步骤。
与现有技术相比,本申请实施例主要有以下有益效果:
本申请提供了一种应用于移动终端的卷积神经网络部署方法,包括:接收携带有待部署模型参数以及指令的卷积神经网络部署请求;根据PCIe接口将所述待部署模型参数以及所述指令传输至DDR;从所述DDR的指令区域读取第一条指令;根据所述第一条指令以及计数器从所述DDR的权重区域读取第一权重数据,并存储至Wt_RAM;根据所述第一条指令以及所述计数器从所述DDR的特征图一区读取输入特征图数据,并存储至Fin_RAM;根据所述第一条指令以及所述计数器从所述DDR的偏置区域读取偏置数据,并存储至Bias_FIFO;根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作,并将所述Fout_RAM的数据写回所述DDR的特征图二区;当完成所述指令区域中所有指令的所述卷积计算操作后,得到推理结果;根据所述PCIe接口输出所述DDR的推理结果。本申请可以在无任何硬件知识的情况下,通过修改指令集与数据结构实现在不同时间快速部署不同结构的卷积神经网络,或对一个已部署的网络进行结构上的修改,标准卷积与深度可分离卷积使用几乎相同的硬件资源完成,在提高通用性的同时,大大降低了硬件资源的消耗,通过卷积的分块与分组,实现了在有限硬件资源上计算几乎任意特征图尺寸、层数、核大小、卷积步长的卷积。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2是本申请实施例一提供的应用于移动终端的卷积神经网络部署方法的实现流程图;
图3是本申请实施例一提供的通用卷积神经网络加速系统框图;
图4是本申请实施例一提供的通用卷积计算模块中Conv子模块的结构示意图;
图5是本申请实施例一提供的通用卷积计算模块中Pooling子模块的结构示意图;
图6是本申请实施例二提供的应用于移动终端的卷积神经网络部署装置的结构示意图:
图7是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的应用于移动终端的卷积神经网络部署方法一般由服务器/终端设备执行,相应地,应用于移动终端的卷积神经网络部署装置一般设置于服务器/终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了本申请实施例一提供的应用于移动终端的卷积神经网络部署方法的实现流程图,为了便于说明,仅示出与本申请相关的部分。
上述的应用于移动终端的卷积神经网络部署方法,包括以下步骤:
在步骤S101中,接收携带有待部署模型参数以及指令的卷积神经网络部署请求;
在步骤S102中,根据PCIe接口将待部署模型参数以及指令传输至DDR;
在步骤S103中,从DDR的指令区域读取第一条指令;
在步骤S104中,根据第一条指令以及计数器从DDR的权重区域读取第一权重数据,并存储至Wt_RAM;
在步骤S105中,根据第一条指令以及计数器从DDR的特征图一区读取输入特征图数据,并存储至Fin_RAM;
在步骤S106中,根据第一条指令以及计数器从DDR的偏置区域读取偏置数据,并存储至Bias_FIFO;
在步骤S107中,根据权重数据、输入特征图数据以及偏置数据进行卷积计算操作,并将Fout_RAM的数据写回DDR的特征图二区;
在步骤S108中,当完成指令区域中所有指令的卷积计算操作后,得到推理结果;
在步骤S109中,根据PCIe接口输出DDR的推理结果。
在本申请实施例中,根据权重数据、输入特征图数据以及偏置数据进行卷积计算操作的步骤,具体包括:
(1)根据输出特征图尺寸、计数器以及是否池化确定输出特征图数据在Fout_RAM内的地址;
(2)根据输入特征图尺寸、卷积核尺寸、padding值以及计数器确定Fin_RAM的读数据地址;
(3)根据计数器确定Wt_RAM的读数据地址;
(4)根据计数器确定Bias_FIFO的读数据地址;
(5)根据计数器确定本次卷积计算操作是否结束。
在本申请实施例中,参阅图3所示的通用卷积神经网络加速系统框图,DDR内存储某一层的输入特征图与输出特征图、所有层的权重与偏置以及控制整个推理过程的指令集,Top_Ctrl模块将指令解码后,根据解码后的指令控制DDR与RAM、FIFO间的数据交互,通用卷积计算模块为设计的核心,通过指令可实现特征图尺寸、层数、核大小、卷积步长可变,激活、池化使能与否可选的标准卷积或深度可分离卷积。Wt_RAM、Fin_RAM、Fout_RAM使用了片上RAM资源,Bias_FIFO由于数据位宽较大,使用LUT实现。Top_Ctrl模块通过状态机来实现具体功能,通过片外信号Start判断何时启动整个系统。
在本申请实施例中,由于FPGA上的RAM资源非常有限,若某一层的参数量很大,RAM无法同时将其存储时难以进行计算,故将卷积进行分块与分组。神经网络中卷积层的卷积计算可理解为:一个三维数组A(输入特征图)经过一个四维数组B(权重)后得到一个新的三维数组C(输出特征图)。卷积的计算拆解可理解为:从一个大的三维数组A中取出一个小的三维数组a,从一个大的四维数组B中取出一个小的四维数组b,a经过b后得到c,多个c经过组合后得到C,这样的过程即DDR与RAM、FIFO间数据交互的过程,具体的数据拆解方式体现在指令中。
在本申请实施例中,参阅图4示出的通用卷积计算模块中Conv子模块的结构示意图,该模块可实现标准卷积计算与深度可分离卷积计算。除图中所示的数据流向外,寄存器组中的数据来源于Wt_RAM,乘法器阵列中的数据来源于Fin_RAM,累加阵列中的数据来源于Bias_FIFO。寄存器组内共两组寄存器,通过乒乓操作,一个寄存器组接收RAM内数据,一个寄存器组向下传输数据。乘法器阵列内为8bits乘法器,非脉动阵列,即所有乘法器输出同时有效。加法树阵列内,级数由乘法器阵列内乘法器个数决定,其中还包含数据的截位与饱和操作。累加阵列内,累加次数由指令提供,具体的,由卷积的分块与分组情况、核大小决定,其中也包含数据的截位与饱和操作。
在本申请实施例中,做标准卷积时,乘法器阵列输出结果经加法树阵列、累加阵列后得到与输入数据同类型的输出数据;做深度卷积时,乘法器阵列失能一部分乘法器,输出结果跳过加法树阵列,经累加阵列后得到与输入数据同类型的输出数据;做点卷积时,与标准卷积无异。
在本申请实施例中,图5示出了通用卷积计算模块中Pooling子模块的结构示意图,池化方式为2X2、步长为2的最大值池化。池化过程分为行池化与列池化,行池化的结果需要进行行缓存。由于设计的通用性要求,输出特征图的行尺寸是设计时无法预知的,一般的,需要保证足够大的行缓存才能满足设计的通用性要求,但这种方法在行尺寸很小时会产生很大的存储空间的浪费。本发明中,通过对卷积过程中计算顺序的改变,固定了行缓存的大小,在行尺寸几倍于行缓存的情况下,依然能完成卷积计算。
在本申请实施例中,Pooling模块输出结果即该层的输出特征图数据,其数据结构与输入特征图数据结构相同,可直接作为下一层的输入参与计算。
在本申请实施例中,通过可变的指令控制不变的硬件实现设计的通用性,指令主要用以控制模块计算各级存储单元输入输出数据的读写地址以及卷积计算单元的计算模式。各级存储单元输入、输出数据地址计算依赖于FPGA内部的计数器、地址计算单元以及指令中包含的计数器计数信息,如输入特征图、输出特征图、权重、偏置的各参数信息,分块与分组信息,卷积、激活、池化、全连接信息等。
在本申请实施例中,指令集生成过程可视为卷积的预分块与分组过程,该过程由上位机实现。上位机根据欲部署的卷积神经网络结构、FPGA上各级存储单元容量以及设计的硬件结构,在保证各数据均不会溢出其各自的存储区域情况下,进行指令集的生成。同时,这使得卷积的分块与分组会有无限种组合。
在本申请实施例中,由于卷积的分块与分组,若不改变一般的权重数据、原始图像数据的排序方式,将使得DDR读写数据地址不连续,降低DDR读写效率;由于Conv子模块中乘法器阵列的结构特点,若不对权重数据、输入特征图数据的结构做相应变换,将增大RAM读写地址的计算难度与计算次数。在本发明中,对上述问题均进行了相应优化。
综上所述,本申请提供了一种应用于移动终端的卷积神经网络部署方法,包括:接收携带有待部署模型参数以及指令的卷积神经网络部署请求;根据PCIe接口将待部署模型参数以及指令传输至DDR;从DDR的指令区域读取第一条指令;根据第一条指令以及计数器从DDR的权重区域读取第一权重数据,并存储至Wt_RAM;根据第一条指令以及计数器从DDR的特征图一区读取输入特征图数据,并存储至Fin_RAM;根据第一条指令以及计数器从DDR的偏置区域读取偏置数据,并存储至Bias_FIFO;根据权重数据、输入特征图数据以及偏置数据进行卷积计算操作,并将Fout_RAM的数据写回DDR的特征图二区;当完成指令区域中所有指令的卷积计算操作后,得到推理结果;根据PCIe接口输出DDR的推理结果。本申请可以在无任何硬件知识的情况下,通过修改指令集与数据结构实现在不同时间快速部署不同结构的卷积神经网络,或对一个已部署的网络进行结构上的修改,标准卷积与深度可分离卷积使用几乎相同的硬件资源完成,在提高通用性的同时,大大降低了硬件资源的消耗,通过卷积的分块与分组,实现了在有限硬件资源上计算几乎任意特征图尺寸、层数、核大小、卷积步长的卷积。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
实施例二
进一步参考图6,作为对上述图2所示方法的实现,本申请提供了一种应用于移动终端的卷积神经网络部署装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图7所示,本实施例的应用于移动终端的卷积神经网络部署装置100包括:请求接收模块310、数据传输模块320、指令读取模块330、权重数据读取模块340、输入特征图读取模块350、偏置数据读取模块360、卷积计算模块370、推理结果获取模块380以及输出模块390。其中:
请求接收模块310,用于接收携带有待部署模型参数以及指令的卷积神经网络部署请求;
数据传输模块320,用于根据PCIe接口将待部署模型参数以及指令传输至DDR;
指令读取模块330,用于从DDR的指令区域读取第一条指令;
权重数据读取模块340,用于根据第一条指令以及计数器从DDR的权重区域读取第一权重数据,并存储至Wt_RAM;
输入特征图读取模块350,用于根据第一条指令以及计数器从DDR的特征图一区读取输入特征图数据,并存储至Fin_RAM;
偏置数据读取模块360,用于根据第一条指令以及计数器从DDR的偏置区域读取偏置数据,并存储至Bias_FIFO;
卷积计算模块370,用于根据权重数据、输入特征图数据以及偏置数据进行卷积计算操作,并将Fout_RAM的数据写回DDR的特征图二区;
推理结果获取模块380,用于当完成指令区域中所有指令的卷积计算操作后,得到推理结果;
输出模块390,用于根据PCIe接口输出DDR的推理结果。
在本申请实施例中,卷积计算模块370包括:第一卷积计算子模块、第二卷积计算子模块、第三卷积计算子模块、第四卷积计算子模块以及第五卷积计算子模块,其中:
第一卷积计算子模块,用于根据输出特征图尺寸、计数器以及是否池化确定输出特征图数据在Fout_RAM内的地址;
第二卷积计算子模块,用于根据输入特征图尺寸、卷积核尺寸、padding值以及计数器确定Fin_RAM的读数据地址;
第三卷积计算子模块,用于根据计数器确定Wt_RAM的读数据地址;
第四卷积计算子模块,用于根据计数器确定Bias_FIFO的读数据地址;
第五卷积计算子模块,用于根据计数器确定本次卷积计算操作是否结束。
在本申请实施例中,参阅图3所示的通用卷积神经网络加速系统框图,DDR内存储某一层的输入特征图与输出特征图、所有层的权重与偏置以及控制整个推理过程的指令集,Top_Ctrl模块将指令解码后,根据解码后的指令控制DDR与RAM、FIFO间的数据交互,通用卷积计算模块为设计的核心,通过指令可实现特征图尺寸、层数、核大小、卷积步长可变,激活、池化使能与否可选的标准卷积或深度可分离卷积。Wt_RAM、Fin_RAM、Fout_RAM使用了片上RAM资源,Bias_FIFO由于数据位宽较大,使用LUT实现。Top_Ctrl模块通过状态机来实现具体功能,通过片外信号Start判断何时启动整个系统。
在本申请实施例中,由于FPGA上的RAM资源非常有限,若某一层的参数量很大,RAM无法同时将其存储时难以进行计算,故将卷积进行分块与分组。神经网络中卷积层的卷积计算可理解为:一个三维数组A(输入特征图)经过一个四维数组B(权重)后得到一个新的三维数组C(输出特征图)。卷积的计算拆解可理解为:从一个大的三维数组A中取出一个小的三维数组a,从一个大的四维数组B中取出一个小的四维数组b,a经过b后得到c,多个c经过组合后得到C,这样的过程即DDR与RAM、FIFO间数据交互的过程,具体的数据拆解方式体现在指令中。
在本申请实施例中,参阅图4示出的通用卷积计算模块中Conv子模块的结构示意图,该模块可实现标准卷积计算与深度可分离卷积计算。除图中所示的数据流向外,寄存器组中的数据来源于Wt_RAM,乘法器阵列中的数据来源于Fin_RAM,累加阵列中的数据来源于Bias_FIFO。寄存器组内共两组寄存器,通过乒乓操作,一个寄存器组接收RAM内数据,一个寄存器组向下传输数据。乘法器阵列内为8bits乘法器,非脉动阵列,即所有乘法器输出同时有效。加法树阵列内,级数由乘法器阵列内乘法器个数决定,其中还包含数据的截位与饱和操作。累加阵列内,累加次数由指令提供,具体的,由卷积的分块与分组情况、核大小决定,其中也包含数据的截位与饱和操作。
在本申请实施例中,做标准卷积时,乘法器阵列输出结果经加法树阵列、累加阵列后得到与输入数据同类型的输出数据;做深度卷积时,乘法器阵列失能一部分乘法器,输出结果跳过加法树阵列,经累加阵列后得到与输入数据同类型的输出数据;做点卷积时,与标准卷积无异。
在本申请实施例中,图5示出了通用卷积计算模块中Pooling子模块的结构示意图,池化方式为2X2、步长为2的最大值池化。池化过程分为行池化与列池化,行池化的结果需要进行行缓存。由于设计的通用性要求,输出特征图的行尺寸是设计时无法预知的,一般的,需要保证足够大的行缓存才能满足设计的通用性要求,但这种方法在行尺寸很小时会产生很大的存储空间的浪费。本发明中,通过对卷积过程中计算顺序的改变,固定了行缓存的大小,在行尺寸几倍于行缓存的情况下,依然能完成卷积计算。
在本申请实施例中,Pooling模块输出结果即该层的输出特征图数据,其数据结构与输入特征图数据结构相同,可直接作为下一层的输入参与计算。
在本申请实施例中,通过可变的指令控制不变的硬件实现设计的通用性,指令主要用以控制模块计算各级存储单元输入输出数据的读写地址以及卷积计算单元的计算模式。各级存储单元输入、输出数据地址计算依赖于FPGA内部的计数器、地址计算单元以及指令中包含的计数器计数信息,如输入特征图、输出特征图、权重、偏置的各参数信息,分块与分组信息,卷积、激活、池化、全连接信息等。
在本申请实施例中,指令集生成过程可视为卷积的预分块与分组过程,该过程由上位机实现。上位机根据欲部署的卷积神经网络结构、FPGA上各级存储单元容量以及设计的硬件结构,在保证各数据均不会溢出其各自的存储区域情况下,进行指令集的生成。同时,这使得卷积的分块与分组会有无限种组合。
在本申请实施例中,由于卷积的分块与分组,若不改变一般的权重数据、原始图像数据的排序方式,将使得DDR读写数据地址不连续,降低DDR读写效率;由于Conv子模块中乘法器阵列的结构特点,若不对权重数据、输入特征图数据的结构做相应变换,将增大RAM读写地址的计算难度与计算次数。在本发明中,对上述问题均进行了相应优化。
综上所述,本申请提供了一种应用于移动终端的卷积神经网络部署装置,具体包括:请求接收模块,用于接收携带有待部署模型参数以及指令的卷积神经网络部署请求;数据传输模块,用于根据PCIe接口将待部署模型参数以及指令传输至DDR;指令读取模块,用于从DDR的指令区域读取第一条指令;权重数据读取模块,用于根据第一条指令以及计数器从DDR的权重区域读取第一权重数据,并存储至Wt_RAM;输入特征图读取模块,用于根据第一条指令以及计数器从DDR的特征图一区读取输入特征图数据,并存储至Fin_RAM;偏置数据读取模块,用于根据第一条指令以及计数器从DDR的偏置区域读取偏置数据,并存储至Bias_FIFO;卷积计算模块,用于根据权重数据、输入特征图数据以及偏置数据进行卷积计算操作,并将Fout_RAM的数据写回DDR的特征图二区;推理结果获取模块,用于当完成指令区域中所有指令的卷积计算操作后,得到推理结果;输出模块,用于根据PCIe接口输出DDR的推理结果。本申请可以在无任何硬件知识的情况下,通过修改指令集与数据结构实现在不同时间快速部署不同结构的卷积神经网络,或对一个已部署的网络进行结构上的修改,标准卷积与深度可分离卷积使用几乎相同的硬件资源完成,在提高通用性的同时,大大降低了硬件资源的消耗,通过卷积的分块与分组,实现了在有限硬件资源上计算几乎任意特征图尺寸、层数、核大小、卷积步长的卷积。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图7,图7为本实施例计算机设备基本结构框图。
所述计算机设备200包括通过系统总线相互通信连接存储器210、处理器220、网络接口230。需要指出的是,图中仅示出了具有组件210-230的计算机设备200,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器210至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器210可以是所述计算机设备200的内部存储单元,例如该计算机设备200的硬盘或内存。在另一些实施例中,所述存储器210也可以是所述计算机设备200的外部存储设备,例如该计算机设备200上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器210还可以既包括所述计算机设备200的内部存储单元也包括其外部存储设备。本实施例中,所述存储器210通常用于存储安装于所述计算机设备200的操作系统和各类应用软件,例如应用于移动终端的卷积神经网络部署方法的计算机可读指令等。此外,所述存储器210还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器220在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器220通常用于控制所述计算机设备200的总体操作。本实施例中,所述处理器220用于运行所述存储器210中存储的计算机可读指令或者处理数据,例如运行所述应用于移动终端的卷积神经网络部署方法的计算机可读指令。
所述网络接口230可包括无线网络接口或有线网络接口,该网络接口230通常用于在所述计算机设备200与其他电子设备之间建立通信连接。
本申请提供的计算机设备,本申请可以在无任何硬件知识的情况下,通过修改指令集与数据结构实现在不同时间快速部署不同结构的卷积神经网络,或对一个已部署的网络进行结构上的修改,标准卷积与深度可分离卷积使用几乎相同的硬件资源完成,在提高通用性的同时,大大降低了硬件资源的消耗,通过卷积的分块与分组,实现了在有限硬件资源上计算几乎任意特征图尺寸、层数、核大小、卷积步长的卷积。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的应用于移动终端的卷积神经网络部署方法的步骤。
本申请提供的计算机可读存储介质,本申请可以在无任何硬件知识的情况下,通过修改指令集与数据结构实现在不同时间快速部署不同结构的卷积神经网络,或对一个已部署的网络进行结构上的修改,标准卷积与深度可分离卷积使用几乎相同的硬件资源完成,在提高通用性的同时,大大降低了硬件资源的消耗,通过卷积的分块与分组,实现了在有限硬件资源上计算几乎任意特征图尺寸、层数、核大小、卷积步长的卷积。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

Claims (10)

1.一种应用于移动终端的卷积神经网络部署方法,其特征在于,包括下述步骤:
接收携带有待部署模型参数以及指令的卷积神经网络部署请求;
根据PCIe接口将所述待部署模型参数以及所述指令传输至DDR;
从所述DDR的指令区域读取第一条指令;
根据所述第一条指令以及计数器从所述DDR的权重区域读取第一权重数据,并存储至Wt_RAM;
根据所述第一条指令以及所述计数器从所述DDR的特征图一区读取输入特征图数据,并存储至Fin_RAM;
根据所述第一条指令以及所述计数器从所述DDR的偏置区域读取偏置数据,并存储至Bias_FIFO;
根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作,并将所述Fout_RAM的数据写回所述DDR的特征图二区;
当完成所述指令区域中所有指令的所述卷积计算操作后,得到推理结果;
根据所述PCIe接口输出所述DDR的推理结果。
2.根据权利要求1所述的应用于移动终端的卷积神经网络部署方法,其特征在于,所述根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作的步骤具体包括:
根据输出特征图尺寸、所述计数器以及是否池化确定输出特征图数据在所述Fout_RAM内的地址。
3.根据权利要求1所述的应用于移动终端的卷积神经网络部署方法,其特征在于,所述根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作的步骤具体还包括:
根据输入特征图尺寸、卷积核尺寸、padding值以及所述计数器确定所述Fin_RAM的读数据地址。
4.根据权利要求1所述的应用于移动终端的卷积神经网络部署方法,其特征在于,所述根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作的步骤具体还包括:
根据所述计数器确定所述Wt_RAM的读数据地址。
5.根据权利要求1所述的应用于移动终端的卷积神经网络部署方法,其特征在于,所述根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作的步骤具体还包括:
根据所述计数器确定所述Bias_FIFO的读数据地址。
6.根据权利要求1所述的应用于移动终端的卷积神经网络部署方法,其特征在于,所述根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作的步骤具体还包括:
根据所述计数器确定本次所述卷积计算操作是否结束。
7.一种应用于移动终端的卷积神经网络部署装置,其特征在于,包括:
请求接收模块,用于接收携带有待部署模型参数以及指令的卷积神经网络部署请求;
数据传输模块,用于根据PCIe接口将所述待部署模型参数以及所述指令传输至DDR;
指令读取模块,用于从所述DDR的指令区域读取第一条指令;
权重数据读取模块,用于根据所述第一条指令以及计数器从所述DDR的权重区域读取第一权重数据,并存储至Wt_RAM;
输入特征图读取模块,用于根据所述第一条指令以及所述计数器从所述DDR的特征图一区读取输入特征图数据,并存储至Fin_RAM;
偏置数据读取模块,用于根据所述第一条指令以及所述计数器从所述DDR的偏置区域读取偏置数据,并存储至Bias_FIFO;
卷积计算模块,用于根据所述权重数据、所述输入特征图数据以及所述偏置数据进行卷积计算操作,并将所述Fout_RAM的数据写回所述DDR的特征图二区;
推理结果获取模块,用于当完成所述指令区域中所有指令的所述卷积计算操作后,得到推理结果;
输出模块,用于根据所述PCIe接口输出所述DDR的推理结果。
8.根据权利要求7所述的应用于移动终端的卷积神经网络部署装置,其特征在于,所述卷积计算模块包括:
第一卷积计算子模块,用于根据输出特征图尺寸、所述计数器以及是否池化确定输出特征图数据在所述Fout_RAM内的地址。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至6中任一项所述的应用于移动终端的卷积神经网络部署方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至6中任一项所述的应用于移动终端的卷积神经网络部署方法的步骤。
CN202111290658.7A 2021-11-02 2021-11-02 卷积神经网络部署方法、装置、计算机设备及存储介质 Pending CN114021711A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111290658.7A CN114021711A (zh) 2021-11-02 2021-11-02 卷积神经网络部署方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111290658.7A CN114021711A (zh) 2021-11-02 2021-11-02 卷积神经网络部署方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN114021711A true CN114021711A (zh) 2022-02-08

Family

ID=80059771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111290658.7A Pending CN114021711A (zh) 2021-11-02 2021-11-02 卷积神经网络部署方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN114021711A (zh)

Similar Documents

Publication Publication Date Title
CN103189853B (zh) 用于提供高效情境分类的方法和装置
US9575634B2 (en) Techniques for asynchronous rendering
US20230026006A1 (en) Convolution computation engine, artificial intelligence chip, and data processing method
CN110363303B (zh) 智能分配模型训练内存方法、装置及计算机可读存储介质
CN109271587A (zh) 一种页面生成方法和装置
CN109902282B (zh) 一种文字排版方法、装置和存储介质
CN110187880A (zh) 一种同类元素识别方法、装置和计算设备
CN109491742A (zh) 页面表格渲染方法及装置
CN112948126A (zh) 数据处理方法、装置及芯片
CN113918356B (zh) 基于cuda数据快速同步方法、装置、计算机设备及存储介质
CN117555459A (zh) 一种应用组处理方法、装置、存储介质及电子设备
CN114021711A (zh) 卷积神经网络部署方法、装置、计算机设备及存储介质
CN114419322B (zh) 一种图像实例分割方法、装置、电子设备及存储介质
CN113139490B (zh) 一种图像特征匹配方法、装置、计算机设备及存储介质
CN108351888B (zh) 生成可推迟数据流
CN112487314A (zh) 基于知识图谱的住建搜索方法、装置及存储介质
CN111813988A (zh) 用于图像特征库的hnsw节点删除方法、系统、设备和介质
CN117519996B (zh) 一种数据处理方法、装置、设备以及存储介质
CN115841587B (zh) 图像分类任务的特征提取方法、装置、设备及存储介质
CN118035618B (zh) 数据处理器、数据处理方法、电子设备、存储介质
CN117553808B (zh) 基于深度学习的机器人定位导航方法、装置、设备及介质
CN117688193B (zh) 图文统一编码方法、装置、计算机设备及介质
CN206249163U (zh) 一种手机应用电脑
CN117193880A (zh) 应用程序的代码加载方法、装置、设备及存储介质
CN118113376A (zh) 用于控制矿灯的应用程序启动方法及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination