论文部分内容阅读
随着智能化的发展,低成本、低功耗的硬件平台设备已经逐步成为人们智能化生活的重要需求之一。卷积神经网络(Convolution Neural Network,CNN)是一种很常见的神经网络结构,它的主要优势体现在图像的特征抽取方面。在FPGA上实现CNN具有高性能,可重配置,开发周期短等优势。然而,由于CNN模型中存在大量的浮点型参数以及较多的乘法运算,使得在FPGA上实现CNN不仅对FPGA提出了较高的存储要求,而且在推算的过程中需要大量的能耗。针对CNN本身在硬件实现的过程中存在的局限性,本文选择了裁剪的方法对CNN进行压缩,从而减小CNN中的参数量。为了避免常用的权重裁剪法会在FPGA上引入稀疏矩阵的问题,使用了卷积核裁剪法。对于固定数量的PE,卷积核裁剪法能够有效的减少需要进行并行计算的次数。在本文中提出了一种更为精确的衡量卷积核重要性的方式,使用对L1范数和标准差进行加权求和的方式来计算每个卷积核的重要性,并对重要性较低的卷积核进行裁剪。本课题分别对VGG16以及ResNet18/34进行了实验,在几乎没有精度损失的前提条件下,在卷积层的裁剪率分别能够达到60%和40%。受到神经网络“不可解释性”的影响,神经网络的裁剪方法,多为基于“数学假设”的基础之上对神经网络中的权重或卷积核重要性进行计算。本文提出了通过最大化激活图对CNN进行可视化的方法对CNN进行裁剪,通过最大化激活图观察到了卷积核在训练任务中提取到的特征。在本文中使用图像熵的方法描述最大化激活图包含的信息量,并作为衡量卷积核重要性的标准。在进行实验的过程中,我们使用分层裁剪的方法对在CIFAR10上进行训练的VGG16网络进行了裁剪实验,并对实验结果进行了分析和讨论。为了验证算法的有效性,在本课题中使用HLS实现了一个VGG网络的变形,并查看了裁剪之前和裁剪之后网络所占用的资源,经过裁剪之后的网络能够将BRAM的占用率从203%降低为76%。通过Vivado进行功耗估算得出,经过裁剪之后的网络功耗节省了十倍。另外,裁剪之前的网络和裁剪之后的网络的精度差异不大,裁剪前的网络精度为83.04%,裁剪之后的网络精度为82.37%。