简介&准备
PYNQ™-Z2 是一款基于Xilinx Zynq系列的SoC,其最重要的特点就是基于Pynq设计了一套使用Python与FPGA结合的框架。(具体也可以参考官网www.pynq.io)
架构简介
PYNQ基于ZYNQ,而在这一片SoC中,Xilinx将ARM与FPGA结合在一起,也就是所谓的PS(Process System)端和PL(Programmable Logic)端,PS-PL使用片内AXI总线连接。
而利用ZYNQ的主要思想也就是在PS端处理控制逻辑在PL端负责神经网络的加速运算,之间通过AXI通信。当然也可以把PYNQ当树莓派使用,例如插个Intel神经加速棒来进行深度学习加速,但片载的FPGA不就浪费了:sweat:
硬件规格
ZYNQ XC7Z020-1CLG400C
• 650MHz 双核 Cortex-A9 处理器
• DDR3 8路DMA的内存控制器和四个高性能AXI3接口(High PerformanceAXI3 Slave ports)
• 高带宽外设控制器:
1G Ethernet, USB 2.0, SDIO
• 低带宽外设控制器:
SPI, UART, CAN, I2C
• JTAG, Quad-SPI flash 和 MicroSD card
• 可编程逻辑能力相当于ARTIX-7 FPGA
• 13,300 个逻辑片(logic slices), 每个都拥有四个6输入LUT和8个触发器
• 630 KB BRAM
• 4个时钟管理片,每个片都有一个锁相环(PLL)和混合模式时钟管理器(MMCM)
• 220个DSP
• 片上模数转换器 (XADC)
内存
• 带有16位总线@1050Mbps的512MB DDR3
• 16MB Quad-SPI闪存,具有出厂编程的全球唯一标识符(兼容48位EUI-48/64™)
• MicroSD插槽(TF卡)
电源
• 可以由USB或任何7V-15V电源供电
详细可参阅官网Tul Pynq-Z2
资料下载
开始
系统镜像烧写
首先下载上面提到的系统镜像,在这里推荐使用Etcher工具,基于Node.js编写跨平台易用,方便。在这里当然也可以使用DD工具。
Ethcer 下载地址
Select Image 选择刚刚下好的镜像,选择一张32G TF卡点击Flash 烧写即可
获取PYNQ地址
将PYNQ插入路由器DHCP会自动分配IP,到路由器中查看pynq地址。
安装QNN库
我们使用SSH进入系统安装需要的库。
PYNQ ssh web 账户密码默认均为xilinx
ssh xilinx@192.168.x.x
登陆进PYNQ后我们在这里安装QNN
sudo pip3 install git+https://github.com/Xilinx/QNN-MO-PYNQ.git
登陆PYNQ WEB
我们这里访问PYNQ的IP地址。PYNQ采用了jupyter作为他PYNQ代码查看编辑的工具。在这里我们大开QNN
选择Tiny Yolo(目标检测网络)
这里是Xilinx为PYNQ移植的Tiny Yolo网络
最后一张为能效对比
总结
最后我们可以看出PYNQ以不到5w的功耗,将在ARM上要运算一分钟的Tiny Yolo加速至不到1s,虽然精度与速度差强人意,但这个成绩在嵌入式上已经得到了极大的提高。
博主您好,我最近准备在PYNQ上做目标检测, 看到了您的这篇博客,想请问这个基于PYNQ的YOLO模型如何去训练呢?想要训练自己的数据集然后检测目标
如果说仅仅是应用的话,推荐你玩一下DPU,最近在PYNQ上也有版本了,不过不是Z2。https://github.com/Xilinx/DPU-PYNQ