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

发布时间:2018/8/25 浏览数:2521

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相同)中显示的所有依赖关系可能会更好。

安装NCS SDK(仅限API模式)

该NCS SDK包含了一个工具包和API。该工具包用于分析,编译和调整神经网络,而API则用于将应用程序与NCS连接,这里只安装API。我们通常会在开发PC上安装Toolkit,但这篇文章不会详细讨论这些细节。Jupyter中的终端通常会让你进入/home/xilinx目录。您可以从该目录运行以下命令来下载NC SDK和NC App Zoo。

mkdir workspace
cd workspace
git clone https://github.com/movidius/ncsdk
git clone https://github.com/movidius/ncappzoo

进入API源代码目录。

cd ncsdk/api/src

在这个目录中有一个用于编译和安装API的Makefile。我们需要对其进行小小的修改,以便将Python库安装到Python 3.6而不是Python 3.5。Makefile使用vi编辑器打开进行编辑。


vi Makefile

一旦进入vi编辑器,按“i”命令开始插入文本,使用箭头向下导航到对“python3”的引用,将光标放在它的末尾,并在该引用的末尾添加“.6”(它应该读取“python3.6”)。然后按ESC退出插入模式并输入“:x”(冒号然后x),然后按ENTER保存该文件。

现在我们可以编译并安装API。

make
make install

安装NC App Zoo
在NCS App Zoo含有大量的可以借鉴的例子应用,我们将使用其中的一个与我们的NCS一起进行简单的测试。

cd ../../../ncappzoo/apps/hello_ncs_py

我们将再次修改这个目录下的Makefile文件,用“python3.6”代替“python3”,修改并保存。

vi Makefile

运行该示例。

make run

可以看到以下输出:

making run
python3.6 hello_ncs.py;
Hello NCS! Device opened normally.
Goodbye NCS! Device closed normally.
NCS device working.

现在我们可以尝试PYNQ-Z1的YOLO项目,并使用预先编译好的Graph文件(通常我们必须在PC机上使用NCS工具包编译graph文件)。首先克隆YOLO作为PYNQ-Z1项目。

cd /home/xilinx/jupyter_notebooks
git clone https://github.com/fpgadeveloper/pynq-ncs-yolo.git

然后我们下载编译好的graph文件。

cd pynq-ncs-yolo
wget "http://fpgadeveloper.com/downloads/2018_04_19/graph"

现在我们可以运行YOLO单镜像示例。

cd py_examples
python3.6 yolo_example.py ../graph ../images/dog.jpg ../images/dog_output.jpg

你应该得到这个输出:

Device 0 Address: 1.4 - VID/PID 03e7:2150
Starting wait for connect with 2000ms timeout
Found Address: 1.4 - VID/PID 03e7:2150
Found EP 0x81 : max packet size is 512 bytes
Found EP 0x01 : max packet size is 512 bytes
Found and opened device
Performing bulk write of 865724 bytes...
Successfully sent 865724 bytes of data in 211.110297 ms (3.910841 MB/s)
Boot successful, device address 1.4
Found Address: 1.4 - VID/PID 03e7:f63b
done
Booted 1.4 -> VSC
total time is " milliseconds 285.022
(768, 576)
    class : car , [x,y,w,h]=[566,131,276,128], Confidence = 0.29101133346557617
    class : bicycle , [x,y,w,h]=[384,290,455,340], Confidence = 0.24596166610717773
root@pynq:/home/xilinx/jupyter_notebooks/pynq-ncs-yolo/py_examples#

在Jupyter中,您将能够浏览输出图像并查看它(/pynq-ncs/yolo/images/dog_output.jpg)。

最终,你应该能在PYNQ-Z1开发板上运行YOLO项目,视频演示如下。

在视频中,当我们不用软件进行任何调整大小的操作时,我们会得到约3fps的视频。当我们在软件中进行大小调整时,帧频下降到大约1.5fps。如果我们将调整大小的操作放到FPGA上运行,我们会将帧速率提高到3fps,如果我们使用线程和Zynq-7000 SoC中的第二个处理器,我们应该能够将其提升到6fps。

Copyright 2017-2024 © 嘉兴麦特莱博软件开发工作室
  • 网站备案号:浙ICP备18008591号-1