人工智能新组合玩法——PYNQ-Z1 FPGA开发板+Intel Movidius NCS

2018年04月26日 作者:学雷锋

Intel Movidius神经计算棒是一个USB外型的神经网络计算加速引擎,基于Myriad 2芯片,这是Intel收购的Movidius公司的推出的VPU(Visual Processing Unit), 用于加速神经网络计算,适用于低功耗需求的应用。Movidius NCS可以配合单板计算机板如树莓派、BeagleBone、Up Board等使用,当然,还有一些特殊的板子如本文的主角PYNQ-Z1。目前上面这些板子都可以单独运行神经网络软件,但是在速度上并不是很快,所以它们在快速移植应用的领域潜力不大,但是如果配合一根Movidius NCS,所有复杂的神经网络计算都可以传输到Myriad 2芯片上,这就可以实现极其快速的推断时间。

为什么Movidius NCS与PYNQ-Z1 FPGA开发板特别适合?目前,人工智能和神经网络正在许多应用中找到新的用途,但其中最大、发展最快的是计算机视觉。PYNQ-Z1是当今开发嵌入式视觉应用程序的最佳平台之一,原因如下:它具有HDMI输入和HDMI输出,并且它具有FPGA架构,可用于硬件加速图像处理算法。所以,尝试将这些匹配起来,看看可以实现哪些好玩、有趣的内容。

在开始之前可能很多工程师还有疑问:为什么不直接在Zynq FPGA上加速神经网络?这不才是在PYNQ-Z1开发板上实现加速神经网络的的理想方式嘛,况且之前就有过在赛灵思FPGA上完成的项目(QNN和BNN项目)。不幸的是,神经网络非常耗费资源,PYNQ-Z1拥有成本较低的Zynq器件之一,其中FPGA资源可能对神经网络有一定的限制(这是一个非常普遍的陈述,但显然取决于你希望的网络来做)。在笔者看来,PYNQ-Z1上的FPGA资源更好的利用方式是用于图像处理,以支持外部实现的神经网络,例如NCS。

安装硬件

OK,言归正传,我们来看看如何在PYNQ-Z1 FPGA开发板上实现NCS运行。首先,您要将Movidius NCS连接到PYNQ-Z1开发板,但要做到这一点,您需要一个带电的 USB集线器,因为功耗问题,因为你会发现PYNQ-Z1本身无法为NCS提供足够的电流。笔者首先尝试没有USB集线器的情况下PYNQ-Z1甚至不会启动。是的,所以说这篇文章的封面图是有误导性的,但它更简单,它让你感兴趣,不是吗?

设置PYNQ-Z1的MicroSD卡

你需要在PYNQ-Z1上安装大量Linux和Python软件包,因此建议为PYNQ-NCS项目使用单独的、全新的MicroSD卡,使用Win32DiskImager将预编译的PYNQ镜像烧录。

安装依赖关系

启动PYNQ-Z1,然后当LED闪烁时,打开Web浏览器访问Jupyter(http:// pynq:9090)。使用密码“xilinx”登录Jupyter,然后从屏幕右侧的下拉菜单中选择New-> Terminal。在此Linux终端中,你可以使用以下命令安装依赖项。请注意,你应该已经以root身份登录,因此不需要在这些命令中使用“sudo”:

apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev
apt-get install -y  libopencv-dev libhdf5-serial-dev 
apt-get install -y protobuf-compiler byacc libgflags-dev 
apt-get install -y libgoogle-glog-dev liblmdb-dev libxslt-dev

为了节省时间,这些命令仅安装尚未构建到预编译的PYNQ-Z1镜像中的软件包。如果你不是从标准的PYNQ-Z1镜像开始,那么安装Raspberry Pi的Movidius指南(它们与PYNQ-Z1相同)中显示的所有依赖关系可能会更好。

1 2 3

相关文章