论文部分内容阅读
卷积神经网络(Convolutional Neural Network,CNN)是人工神经网络的一个重要分支,是近几年随着深度学习概念的提出,才开始广受关注的一种机器学习方法,是一种以卷积运算为核心的神经网络。不同于传统的基于预定义规则的特征提取方法,CNN可以直接从大规模输入图像中“学习”不同特定目标的特征,而不需人工干预,现已广泛应用于目标检测、模式识别、机器视觉、以及大数据视频处理等领域。随着物联网和嵌入式技术的日渐成熟,让终端具有智能的数据判断能力,和智能化的数据采集和实时决策能力,已成为一种趋势,即,智能边缘计算。智能边缘计算中的核心问题就是将智能处理功能迁移到终端。而基于神经网络的机器学习技术,正是使嵌入式设备具有数据识别和智能处理能力的方法。然而,神经网络更高的计算复杂度和计算参数规模将给嵌入式设备带来新的挑战。而现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA),具有高密度并行计算能力和低功耗的特点,正好适合于嵌入式设备对于新型智能化的应用需求,以及在功耗、体积和成本方面的需求,也正是当下深度神经网络计算和优化的主要实验平台。然而,现有的优化研究主要是针对单路CNN模型的优化。而未来,在FPGA集成度不断增大,CNN网络模型不断优化的前提下,在一个FPGA系统中实现多路CNN模型的并行运算,可能会是一种趋势。面向未来嵌入式领域多路CNN模型的并行计算需求,本文深入研究FPGA内部资源的并行计算能力,从最基础的二进制乘法理论为研究的着手点,以多项式代数乘法为分析方法,对FPGA最低层的DSP(Digital Signal Processor)乘法器资源、逻辑资源和存储资源进行并行优化研究。然后结合CNN的计算和数据存储特征展开基于FPGA的多路CNN的并行计算方法研究。最终提出一种高性能、低功耗的多路CNN并行系统设计和实现方法。具体内容如下:(1)针对单个DSP乘法器在低精度乘法计算中的低吞吐量问题,提出了一种基于单个DSP的多路乘法并行计算方法,有效的提高了单DSP乘法器整数或半精度浮点数的乘法计算的吞吐量。该方法以二进制乘法、多项式代数乘法理论为依据,主要是利用DSP乘法器的输入位宽不均匀特性,采用在高位输入中预留空精度位的方法,实现单时钟周期多路乘法的并行计算,包括低精度整数和半精度浮点数的并行计算。针对并行乘法计算过程中部分积求和产生的溢出位问题,提出了一种基于集合理论的求解方法。而后,基于此求解方法,提出了一种面向单个DSP乘法器的多路乘法并行参数搜索算法和并行参数优化模型,实现了对不同乘法有效位的最优并行参数搜索,并验证了该算法和优化模型的有效性。(2)针对现有CNN模型参数量化方法计算误差高,识别精度明显降低的问题,提出了一种双路CNN网络并行计算结构,该结构通过设计一种高效的浮点参数量化方法,支持在单个算法IP中的双路CNN模型的并行计算,通过双路模型的对比识别,可以明显提高FPGA中CNN模型的识别准确率。该量化方法还能够提高系统的计算性能,同时降低系统的资源使用。不同于其它优化方法,本文针对多路CNN的并行计算,以16位半精度浮点数为原型,采用8位精度量化的尾数有效位,支持在单个DSP乘法器上的双路CNN网络参数的并行计算。此外,又提出了一种基于指数分段的半精度浮点数规格化方法,实现同定点数之间的快速格式转换,使模型支持以标准半精度浮点数进行参数训练和输入,不需要额外的数据格式转换操作。采用以上量化方法的CNN模型几乎具有同原浮点模型相同的识别准确度。再有,因为在一个算法IP中同时支持双路不同CNN模型的对比识别,该方法还能够实现比单路原浮点CNN模型更高的识别准确度。(3)针对多路CNN系统DDR参数访问带宽的限制问题,提出了一种多路CNN算法IP的数据共享策略,该策略通过设计一种基于通道广播的参数共享方法,有效的提高了多路CNN算法IP的数据传输效率。该数据共享策略面向DDR存储系统和多路相同CNN算法IP之间的数据搬运,其中,CNN算法IP的网络参数一样。在这种情况下,本文创新性的提出一种基于通道广播的数据共享策略,通过设计并实现一种可配置多路复用DMA IP,利用FPGA中的逻辑资源,将单路DMA数据广播到多路CNN算法IP中,缓解DDR数据访问带宽的瓶颈问题,有效的提高了多路CNN并行系统的数据传输效率。(4)基于以上三个研究内容,提出了一种多路CNN算法IP的并行系统设计框架。主要解决了双并行CNN模型的训练,参数精度量化和并行计算,IP封装和系统集成,以及软件驱动和应用接口等,FPGA软硬系统设计和集成方法的问题。实验表明,本文提出的多路CNN算法IP的并行计算方法,比传统的独享DMA方式,具有更低的系统资源使用率和功耗,同时基于通道广播的参数共享方法可以明显提高多路CNN系统的数据传输效率和系统识别性能。以上研究工作包括多路CNN的并行计算,参数量化和数据共享策略,涵盖了FPGA底层计算资源到多路CNN算法IP整个系统的优化设计和集成方法,希望能够为未来基于FPGA的多路CNN并行优化方法的研究提供支撑和参考。