卷积神经网络图像识别算法的FPGA加速优化研究
2021-11-06马晓光蒋占军
马晓光,蒋占军
(兰州交通大学 电子与信息工程学院,兰州 730070)
随着人工智能技术的飞速发展,深度学习技术已日渐普及,卷积神经网络(convolutional neural network,CNN)作为深度学习中的一个重要算法,已广泛地应用于计算机图像处理、自然语言识别和文档分析等领域[1-3].
早期的卷积神经网络多是由CPU执行的,但随着应用需求越来越复杂,CPU计算显得缓慢低效.目前实现CNN加速的平台主要有图形处理器(graphics processing unit,GPU)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)三类,其中FPGA平台因为体积小、功耗低、灵活性高等特点,已逐渐成为卷积神经网络硬件加速常用的研究平台[4].
卷积神经网络的FPGA加速研究主要集中在并行计算和内存带宽优化两方面,其中并行计算主要通过设计卷积层间并行、卷积内计算并行和输出通道并行3种方式来实现加速.例如文献[5]提出了一种全并行乘法-加法树模块加速卷积运算等,此类单纯的硬件并行加速方法资源占用较多、带宽需求较大,实际应用中仍需做相应的改进.内存带宽优化通常采用一些优化算法定量分析计算吞吐量和所需内存的带宽,确定最佳性能进而解决资源占用量大的问题,例如基于天花板模型(roofline model)的设计方案等[6].但是此类方案在不同层间需要重新配置,灵活性稍显不足.在加速算法设计方面,一般采用通用矩阵乘法算法(general matrix multiplication,GEMM)将矩阵转换为向量,并对每个向量一对一计算,最后将向量计算结果用in2col函数输出并转换为矩阵[7].但并未减少计算量,同……
