关键词:
二值卷积神经网络
卷积核的分解
特征堆叠
注意力机制
FPGA
摘要:
近年来,卷积神经网络被广泛应用于各个领域。为了提高网络的性能,研究者们通常会加深或加宽网络。然而,网络性能在提高的同时,网络整体的计算量和参数数量也在快速增加,这极大阻碍其在资源有限的移动端上的应用。二值化是解决上述问题的一种较好的方法,但由于二值化直接将网络的权重和卷积层的输入特征映射为1bit数据,造成网络精度的大幅下降,导致其难以投入实际应用。基于此,本文在Res Net-18网络结构的基础上进行修改,提出了BNSC-Net(Binary Convolutional Neural Network with Numerous Skip Connections)网络,提升了二值卷积神经网络的精度。并且,为了充分发挥二值卷积神经网络的优势,本文针对二值卷积神经网络中各个模块,提出了不同的硬件优化方法,最后分别在FPGA上进行仿真验证。为提升二值卷积神经网络的性能,本文基于Res Net-18网络结构,做出以下四点改进:(1)将网络中的3×3卷积核分解为3×1和1×3卷积核的串接,并将每个卷积层的输入特征与输出特征进行跳接操作;(2)引入特征堆叠操作,将网络中每个Unit的输入特征与输出特征进行通道堆叠操作,使特征得到重复利用;(3)引入通道注意力和空间注意力机制,使得BNSC-Net能够在有限的特征信息中充分利用重要的特征;(4)将STE(StraightThrough-Estimator)的更新区间从[-1,1]扩大到[-2,2],使得网络中更多的权重得到更新。基于上述四个改进方法,本文所提出的BNSC-Net在CIFAR-10和Image Net数据集上取得较高的准确率。同时,为分析BNSC-Net在实际工业场景数据上的分类能力,本文在NEUCLS数据集上进行验证,结果表明BNSC-Net可对NEU-CLS实现较好的分类。此外,本文对二值卷积神经网络在FPGA上的实现方法进行初步尝试。具体地,本文基于HLS开发方式,利用Xilinx SDx开发工具,在FPGA上对二值卷积神经网络中的各个模块进行仿真验证。针对不同的模块,本文采用了不同的优化方法。具体的,在二值卷积层,为充分利用资源并降低二值卷积层的整体计算时间,本文采用三种优化方法:8通道并行计算、输入特征复用和流水线优化方法。在Batch Norm层,通过化简整合表达式,将4个全精度的参数数量整合为2个,可降低Batch Norm层的整体资源消耗和运行时间,提高了加速比。本文针对二值卷积神经网络的性能改进方法,在Image Net数据集上取得了59.9%的TOP-1准确率,相比于近几年其它的二值卷积神经网络,提升了2.6%。此外,本文在FPGA上初步尝试实现二值卷积神经网络,通过仿真结果验证了二值卷积神经网络硬件实现方法的可行性,为后续网络的部署奠定基础。