亚洲天堂网_国产中出_日韩激情网_97se.com_中国亚洲老少妇色视频

MATLAB代做|人工智能新組合玩法——PYNQ-Z1 FPGA開發板+Intel Movidius NCS

發布時間:2018/8/25 瀏覽數:2954

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-2025 © 嘉興麥特萊博軟件開發工作室
  • 網站備案號:浙ICP備18008591號-1