关键词:
嵌入式
卷积神经网络
MobileNet
低功耗
实时
摘要:
随着卷积神经网络(CNN)技术的不断发展,为完成更复杂的特征提取任务、获得更高的识别精度,CNN的层次越来越深,计算量与参数量也越来越大,这使CNN算法对所部署设备的计算资源、内存资源以及能量资源有越来越高的需求。然而,在许多现实应用中,需要广泛地将CNN技术应用到计算资源、内存资源以及能量资源受限的移动嵌入式设备中,而且这些设备往往有着实时性、低功耗的要求。因此,对CNN的计算速度、计算能效以及内存消耗量进行优化,使其实时、低功耗地部署在移动嵌入式设备上,具有重要的研究意义。针对上述挑战,本文采用软、硬件两方面协同优化设计的研究思想,针对MobileNet模型设计了FPGA加速器,并对模型进行了轻量化改进,具体研究工作:(1)针对移动嵌入式设备计算资源、能量资源受限,但同时又要求实时、低功耗地运行CNN的挑战,本文采用HDL硬件描述语言,基于可编程FPGA,设计了一种高度匹配MobileNet算法计算特性的专用硬件加速架构,通过硬件实现算法,降低了MobileNet的计算时延与能耗。针对移动嵌入式设备存储资源受限的问题,该加速器的架构设计采用了资源可复用和可配置的模块化思想,从而有效降低了其内存资源消耗量,使得具有27层网络的MobileNet前向传播算法也能在资源高度受限的FPGA开发板上部署。(2)在许多卷积神经网络算法中,卷积层计算量占总计算量的90%以上,因此提高卷积计算速度是加速器设计的重要目标。为提升MobileNet加速器的卷积计算速度,本文首先分析了模型中三类卷积计算的并行计算特性。然后,分别为这三种卷积计算定制了独立专用的并行化加速方案。上述独立定制方式,提升了卷积计算的速度,但却增加了卷积运算模块的资源消耗量。因此,本文进一步采用通用模块设计思想,针对三种卷积计算的共性运算环节,设计出可供三种卷积共享使用的通用卷积计算引擎,以及对应三种并行化加速方案的专用访问控制模块,从而实现了以较低的资源消耗量,提升卷积计算模块计算速度的目标。(3)针对MobileNet模型参数量以及特征图数据量占用的存储资源多,从而导致数据传输时延高、能耗高的问题,本文采用软硬件协同优化的思想,实施了适用于上述硬件加速器的模型轻量化策略。首先,基于FPGA硬件加速器的结构特性,对适于在FPGA加速器中应用的轻量化方法进行了评估。然后,依据评估结果,实施了结构化剪枝、BN层隐藏和参数量化等轻量化方法,从而从软件优化的角度,进一步降低了模型的内存消耗量和计算量,使MobileNet更适用于在实时、低功耗且内存资源受限的移动嵌入式设备上使用。在实验环节,本文采用HDL硬件描述语言,基于Intel Cyclone V FPGA,使用上述设计方案,实现了一个MobileNet硬件加速器。实验结果表明,在50MHz时钟频率下,整个加速器的功耗仅为0.919W。当设置卷积计算引擎的并行度为8时,得到的图像识别帧率为43.10fps。采用多种模型轻量化方法后,可进一步将识别帧率提高到50.18fps。为评估该FPGA加速器的性能,首先将其与CPU和GPU的计算性能进行了比较。实验结果表明,执行相同的MobileNet模型时,本加速器的速度/功耗为Intel i7-7700 CPU的354.5倍,是GTX1050 GPU的19.3倍。与相关研究工作中的FPGA加速器的性能相比,本文设计的加速器占用的资源量相对较少,在图像识别帧率(fps)方面具有一定的优势。尽管受限于板上的计算资源,该加速器在计算性能(GFLOPS)方面,略逊于其他FPGA加速器,但在功耗以及性能功耗比方面则具有明显优势。上述实验结果表明,本文设计的FPGA加速器适用于部署在移动嵌入式设备上,应对嵌入式应用实时性、低功耗的挑战。