文章目录
- 题目:Inference of Quantized Neural Networks on Heterogeneous All-Programmable Devices
- 时间:2018
- 会议:DAT
- 研究机构:赛灵思
1 缩写 & 引用
FINN: A framework for fast, scalable binarized neural network inference 2017 FPGA
Accelerating binarized convolutional neural networks with software-programmable FPGAs 2017 FPGA
2 abstract & introduction
这篇论文描述了一个实时的目标检测的视频流,跑在Zynq UltraScale+(XCZU3EG),实现了16FPS,网络是基于Tiny YOLO进行修改
3 构建tincy yolo
3.1 优化1:定点化+FINN:1fps
所有的feature map value是3bit,权重是-1或者1,输入层和输出层是8bit
中间四层最大池化和六层卷积层用FINN-based QNN实现
因为板子资源不够,不能层与层之间流水,只能一层计算完再计算下一层,latency会很大
然后这部分集成到Darknet,因为FINN是HLS的库函数,只需要在layer description中把函数指针重定向到库函数。
3.2 优化2:NEON向量化:2.5fps
开始一些跑在CPU的代码,Darknet并没有进行优化,就是简单的im2col然后变成矩阵乘法,这里用ARM的NEON进行优化,本周就是SIMD向量化的计算,然后把矩阵slice成竖直的条条,可以增加数据的局部性
3.3 优化3:网络结构tiny-yolo->tincy-yolo:5fps
3.4 优化4:并行化
开发板是Zynq UltraScale+ XCZU3EG,包括了四核ARM Cortex-A53和双核ARM Cortex-R5,而多核可以并行操作。通过线程池来实现并行