FPGA上实现YOLOv5的一般过程

在FPGA上实现YOLOv5

YOLO算法现在被工业界广泛的应用,虽说现在有很多的NPU供我们使用,但是我们为了自己去实现一个NPU所以在本文中去实现了一个可以在FPGA上运行的YOLOv5。

YOLOv5的开源代码链接为

https://github.com/ultralytics/yolov5


为了在FPGA中实现YOLOv5,我们首先在VOC数据集上面进行算法的训练,得到训练后的文件,并对训练后的文件进行8bit量化操作

得到三个权重文件。

之后为了将这个权重文件发送到FPGA上,所以我们再次使用python去解析这个权重文件,然后按照我们的FPGA加速器的架构对权重进行重组

解析的Python文件示意如下

得到的权重数据示意如下:

之后呢再来看一下yolov5的网络结构

放大一个局部来看一下,可以看到就是一些卷积,cat等操作

所以我们在FPGA实现的时候也是去实现这些基本的算子

FPGA上实现的结构图如下所示

在每个算子里面都是分为in_buf,out_buf,和控制模块计算模块组成

然后每个模块会有一堆的控制信号来控制整个NPU的运行

总的控制由AXI Lite逻辑组成的寄存器模块来进行控制

最后实现的效果如下

相关推荐
星夜离尘562 小时前
FPGA 定点数缩位:截断、舍入与饱和,避免溢出回绕
fpga开发·定点数
星夜离尘563 小时前
I²C总线卡死:先分清SCL拉低、SDA拉低,再谈9个时钟恢复
fpga开发·verilog·i2c
鸥梨菌Honevid7 小时前
STA 与 CDC
fpga开发
科恒盛远7 小时前
ZU902 与 FMC200 高速采集示波器实测
fpga开发
NamoAmitabha1287 小时前
日常问答1---deepseek
fpga开发
AI棒棒牛8 小时前
YOLO26 改进:融合 LW-DETR 思想的轻量 TokenMixer,让 Neck 从局部堆叠走向局部-全局协同!嘎嘎创新!
人工智能·深度学习·yolo·目标检测
鸥梨菌Honevid9 小时前
异步FIFO为什么用打两拍的格雷码?
fpga开发
Reload.9 小时前
深度学习-极验叠字点选-yolo-模型调优-高阶数学-opencv
人工智能·深度学习·opencv·yolo·计算机视觉·视觉检测
努力搬砖的小H9 小时前
FPGA应用技巧之AXI4-FULL-MASTER IP FDMA(Fast Direct Memory)详细介绍
经验分享·fpga开发·fdma·axi总线·米联客