论文地址:https://github.com/dgschwend/zynqnet/blob/master/zynqnet_report.pdf
摘要:该论文核心内容从第三章开始依次介绍了CNN的优化分析和训练,第四章FPGA加速器的设计和实现,第五章实验结果和分析。关于cnn的优化分析和训练部分,不是本博文介绍的重点,需要一些深度学习知识支撑,重点介绍一下FPGA端的实现知识。
4.2算法设计
4.2.1 需求分析
• convolutional layers
- – kernel size 1×1, padding 0
- – kernel size 3×3, padding 1
- – stride 1 or stride 2
• ReLU nonlinearities
• concatenation
• global average pooling
以上内容为FPGA端需要实现的操作。
4.2.2 算法设计
给出了多通道下卷积计算的公式。然后分析了三种卷积计算的方法:
- Matrix Multiplication 使用gemm函数,将输入输出转化为矩阵乘法的计算
- Fast Fourier Transformation 快速傅立叶变换
- Sliding-Filter 2D Convolution Approach 卷积计算直观理解上的滑窗计算方法
Zynqnet选择使用最后一种卷积计算方法,然后给出了自己的算法,实现输入图片经过神经网络进行计算的功能。
按照如下计算顺序:
每个卷积层: