- 题目:Synetgy: Algorithm-hardware Co-design for ConvNet Accelerators on Embedded FPGAs
- 时间:2019
- 会议:FPGA
- 研究机构:伯克利/清华
- 博客参考:https://zhuanlan.zhihu.com/p/91064128
- Github:https://github.com/Yang-YiFan/DiracDeltaNet
1 abstract & introduction
本篇论文的主要贡献:
- 基于ShuffleNetV2设计了一个新的网络模型:DiracDeltaNet
- 通过软硬件协同的思想,以及对应的accelerator:Synetgy
2 网络设计
2.1 ShuffleNetV2
ShuffleNetV2有这几个特点:
- 模型较小,计算量较小
- 采用了concatenative skip连接而不是additive skip连接
2.2 网络主要的改进
- 3x3卷积换成了shift模块和1x1卷积
3x3卷积是9个数变成1个数,shift就是从9个数中按照规则copy1个数作为输出 - 3x3max-pooling换成2x2最大池化
- channel shuffle顺序更换:方便硬件实现
2.3 网络量化
权重按照这个公式量化
activation参考了论文Pact: Parameterized clipping activation for quantized neural networks 2018,采用这个公式量化:
重训练参考论文Towards Effective Low-bitwidth Convolutional Neural Networks 2017 arXiv,每次重训练50epoch,一直量化到权重1bit,activation4bit
3 accelerator结构
利用了HLS生成硬件,硬件需要完成的运算:
- 1x1卷积
- 2x2最大池化
- shift
- shuffle和concatenation
硬件不支持的运算:
- 全连接层则用1x1卷积运算完成
- shuffle操作用CPU-based memory copy
- 平均池化用ARM
3.1 软件接口
开发板为Xilinx Zynq UltraScale+ MPSoC,ARM上跑linux系统,通过基于PYNQ部署,并且在ARM上计算最后7x7的平均池化