关键词:
嵌入式系统
神经网络
二值化
硬件加速器
摘要:
随着边缘计算和人工智能的飞速发展,智能边缘计算已经渗透到各种各样的日常生活中,例如智能摄像头、智能家居等。边缘设备的优势是比云端更加靠近用户,能够提供及时的数据处理,通常为嵌入式设备。嵌入式设备通常具备低功耗和低资源消耗的特点。但随着神经网络的发展,网络模型的参数量往往都非常巨大,并且层数很深,这为其在边缘嵌入式设备上的部署和运行造成了挑战。为了实现嵌入式设备能够部署大规模的深度神经网络,本文重点研究了面向嵌入式系统的神经网络二值化方法。首先,不同于传统研究的解决分类问题的神经网络二值化方法,本文针对多输入多输出的回归问题,提出了一种面向回归问题的神经网络二值量化方法,将二值量化推广到更多的机器学习领域。本文通过对实际回归应用的需求和不同量化神经网络的比较分析,选择将权重进行1/-1二值化。用FPGA设计了1/-1二值化方法的专用加速器,通过并行计算和流水线来加速计算。最后,在电磁信号数据集上进行实验验证。结果表明,通过1/-1二值化可以将网络模型大小压缩到原有模型的3.9%,加速器的推断计算时间为2.5毫秒,FPS达到392.6,FPGA板上资源(包括查找表、触发器和存储器等)中需求最大的查找表只用了16.28%,FPGA加速器功耗仅为3.994W。然后,为了解决1/-1二值量化无法用1位二进制数准确表示的问题,提出了一种0/1与1/-1的神经网络混合量化方法。该方法不仅可以用1位准确表示0/1二值权重,而且可以使神经网络的乘加运算变为更省时的加法运算。该方法用深度可分离卷积代替常规卷积,通过混合量化解决了0/1二值神经网络无法进行减法的问题。在量化函数中引入训练阈值,让网络自适应确定量化边界。针对0/1二值神经网络参数易训练过大和空间学习能力下降的问题,使用Tais()激活函数代替Re LU()激活函数,并优化最大池化层。在MNIST和CIFAR-10数据集上进行实验验证,结果表明在MNIST和CIFAR-10数据集上混合量化神经网络的模型减少率比1/-1二值神经网络的分别多1.9%和5.3%,减少的网络计算量分别多86.9%和88.4%,而混合量化神经网络的精度只比1/-1二值神经网络分别低0.4%和2%。最后,为0/1与1/-1混合量化方法提供硬件加速支持,设计了一种基于FPGA的神经网络专用加速器。分析了不同数据类型表示对硬件的影响,使用移动滤波窗口加速深度卷积,在输出维度进行并行计算加速逐点卷积,使用加法树加速池化层,通过流水线设计加速全连接层。通过实验表明,在120MHZ频率下,FPGA专用加速器可以达到431.2GOPS,并且功耗仅为4.75W,加速器的推断计算时间为1.8us。