上述对cnn卷积神经网络进行介绍,接下来对YOLO进行总结,并研究下怎么在FPGA怎么实现的方案。
对于一个7*7*30的输出 拥有49个cell 每一个cell都有两个bbox两个框,并且两个框所包含的信息拥有30个 4个坐标信息和一个置信度5个,剩下就是20个类别。
FPGA关于YOLO的部署
1.1部署总共有四种方法:
1.编写完整的网络结构的电路进行映射,也就是基本都用pL来进行处理,图片或者视频的采集以及中间的算法,卷积,激励池化等都在PL进行编写
2.编写部件级加速器(函数\IP可调用的方法\系统调用)部分映射 一部分算法的加速在PL,其他的一些在PS。
3.编写分块级 亚加速器(函数VIP\可调凡的方法\系统调用)部分分块映射
4.多板子分布式映射
1.2工程的具体步骤
1.2.1 :数据的采集
能够采集到的数据 视频和图像
视频 :1.pl 传感器读入 ov5640 存在
ps的DDR中
pl的ddr以及bram
2PSusb摄像头读入免驱
图像: 1.SD卡的读入
2网口,
3串口
4 ps主程序运行时读入 在写进程的时候写入
1.2.2 : 数据怎么输入至YOLO模块
在pl测的时候通过自己定义的在pl测进行处理,还有就是ps通过AXI协议把获取的数据送到ps进行接下来 的处理。
1.PL到PS:自定义总线或直接读取模块。
2.PS到PL:高性能传输接口,如AXI Stream和DMA。
3.DMA:直接内存访问,用于PL和PS之间的数据传输。
4.AXI Stream:用于高性能数据传输,支持流式数据传输。
1.2.3 YOLO内部怎么在PL实现
这是基本在pl侧进行处理 主要取决于网络结构
以上的block都在pl进行处理,在编写代码的时候,需要有有效数据位这样能够知道在哪些地方数据是有效的。需要考虑时序,表示在什么时间点干什么事。
在传输数据的时候会出现很多数据并行处理,这时需要用buffering来进行缓存。
1.2.3.1FPGA 设计,Buffering(缓冲)
是一个关键的技术,用于优化数据传输