论文部分内容阅读
相较传统的图像处理方法,深度神经网络的效率和准确率都得到了显著的提升,在很多应用中都可以发挥明显的作用。然而,卷积神经网络计算非常密集,CPU等通用处理器难以对卷积计算进行并行加速,效率十分低下,在应用中会产生延迟。而高端的GPU在计算卷积神经网络时虽然效率尚可,但它的高功耗限制了它在移动端平台的应用。比如自动驾驶和机器人这样的移动端平台,对低延迟和低功耗都有很高的要求,CPU和GPU在实现这些应用时都不是最佳选择。而FPGA内部集成了大量DSP资源,由于无需指令,它可以充分发挥浮点计算能力,使得在加速数据密集型计算时拥有巨大优势,且与高端的GPU相比时,FPGA的功耗相对低很多。但是,VGG等大型卷积神经网络由于巨大的参数量和计算量,很难在资源受限的FPGA上实现。而轻量型网络MobileNetV2采用深度可分离卷积代替普通卷积,显著降低计算量和参数量,大大降低了对资源的需求,让我们看到了复杂的卷积神经网络在移动端平台上实现的可能性。所以,研究MobileNetV2这种轻量化卷积神经网络模型的计算加速对于复杂的卷积神经网络在移动端的实现具有十分重大的意义。在上述背景下,论文设计并实现了一种轻量化卷积神经网络加速器,通过针对深度可分离卷积改进结构、流水式设计和提高网络并行性等方法提高加速器的计算速度。论文的主要工作包括:使用cifar-10数据集在keras框架上完成了对MobileNetV2网络的权重训练,保存训练时准确率最高的权重用于加速器的前传网络实现。详细分析了各种并行方式的数据搬运方式和所需的存储、带宽,选用特征图卷积窗口内部9个数的并行和8个特征图并行的方式进行并行计算。结合使用的FPGA的资源和特性,完成了卷积模块的设计,针对深度可分离卷积进行了数据搬运上的优化,测试得出,实现深度可分离结构相对于普通卷积结构大约可以提升6.05倍速度。设计了一种高性能的卷积神经网络加速器结构,其中加入了一体化卷积运算单元阵列和交替缓冲器,并使用了数据压缩的方法,这种结构可以批量地进行卷积运算,减少参数加载引起的延时,并很好地节省了存储,显著提升了效率。基于Altera开发平台实现了对MobileNetV2前传网络的加速并对资源使用情况及设计性能进行了分析。MobileNetV2在DE1-SoC上实现了96.61%的图片分类准确率,运算单张图片耗时5.2ms。相比Cortex-A9的98.52%的准确率和每张图18.3ms的分类速度,该加速器在只损失了1.91%的准确率的情况下,提升了约3.52倍的速度。