一 YOLOV5s
本设计以YOLOV5s部署于FPGA上为例进行分析概述。YOLOV5s网络主要包括backbone、neck、head三部分。
涉及的关键算子:
- Conv:卷积,包括3*3、1*1,stride=1/2
- Concat:
- Upsample:
- Pooling:
- ADD
二 评估
硬件加速器资源和网络部署评估。FPGA以Ultra96为例, ZU3EG资源如下图所示。
网络量化为INT8,结合硬件资源BRAM、DSPs及通信带宽,我们评估将YOLOV5s部署到ZU3上,300MHz主频下性能大概可以做到16FPS(该硬件架构下,理论最高28FPS)。
三 具体部署--待续
1、硬件框架
神经网络加速器硬件架构如上,包括指令调度/控制、片内/片外数据通信模块、计算引擎、缓存单元及NPU配置寄存器等,接口采用标准的AXI与外部缓存DDR/Hyperram进行通信,采用AXI-Lite用于访问配置和状态寄存器。
卷积类型:常规卷积、深度可分离卷积;支持Upsample/pooling/reorg/concat/route及各种ReLu函数,可扩展支持INT4/INT8/INT16多精度量化。
特点就是专门设计了指令集架构,支持多种指令,同时支持不同指令之间的串行/并行执行,可不依赖于CPU进行控制。
为了便于部署,采用算法与硬件、算法与编译器、编译器与硬件的协同设计。
通过在软件层面进行训练-量化-和指令编译生成,支持算法快速迭代和应用快速部署应用。
在硬件层面支持扩展和算子扩充,以适应不断迭代的神经网络新算法。
2、模拟器验证
模拟器主要是为了快速验证量化后的网络推理过程,同时对资源和性能进行快速评估,毕竟基于FPGA的仿真验证实在是效率有点低。因此专门利用python搭建了针对底层硬件NPU架构设计的神经网络模拟器。
3、FPGA仿真验证
4、实际硬件部署
DEMO演示包括sensor采集、图像预处理、神经网络加速及后处理和显示。
四 结论