本文转载自: FPGA2嵌入式微信公众号
1. yolov3-tiny模型
yolo是目前目标检测落地到硬件中比较常用的AI模型,因为yolo标准版模型参数和计算量太大,所以目前暂时在zynq020上移植的是tiny版本,这里选用yolov3-tiny来移植,输入模型的图像源320x320@15Hz,模型各层如下(其中C是训练时的类别):

2. 模型pytorch处理
yolo模型需要经过训练(检测多少个类别)和int8量化(暂时未使用剪枝、压缩处理),然后生成权重等参数,再测试量化后的检测精度(基本和官网量化前的精度相差不大),大致流程如下:
1. 根据种类(如下图)选择数据集;
2. 训练;
3. int8量化和再训练;
4. 测试精度(如下图);
5. 最终得到权重等参数。


3. 模型RTL移植
yolo在pytorch处理后获得权重参数,然后根据权重等参数编写RTL代码,实现FPGA的本地推断,设计主要包括:
在zynq中,FPGA主频150MHz,达到AI速度320x320@15Hz,精度和上位机精度一致,zynq资源消耗及布局布线后时序如下:



4. 模型RTL验证
对编写的RTL验证采用Python + bat脚本的自动化测试平台(只需修改TB,单击exe即可打印仿真结果来分析),保证FPGA仿真输出的模型各个层的结果与Pytorch量化后的输出结果完全一致:

5. 上板测试及升级
在主频150MHz无时序报错情况下上板测试,解决了以下问题,最终达到和上位机一致的效果。
后期升级可优化的空间:
