а天堂中文地址在线|中国白嫩的18sex少妇hd|91网址视频|裸体芭蕾性xxx|性欧美最猛

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

發(fā)布時(shí)間:2018/8/25 瀏覽數(shù):3014

Intel Movidius神經(jīng)計(jì)算棒是一個(gè)USB外型的神經(jīng)網(wǎng)絡(luò)計(jì)算加速引擎,基于Myriad 2芯片,這是Intel收購的Movidius公司的推出的VPU(Visual Processing Unit), 用于加速神經(jīng)網(wǎng)絡(luò)計(jì)算,適用于低功耗需求的應(yīng)用。Movidius NCS可以配合單板計(jì)算機(jī)板如樹莓派、BeagleBone、Up Board等使用,當(dāng)然,還有一些特殊的板子如本文的主角PYNQ-Z1。目前上面這些板子都可以單獨(dú)運(yùn)行神經(jīng)網(wǎng)絡(luò)軟件,但是在速度上并不是很快,所以它們在快速移植應(yīng)用的領(lǐng)域潛力不大,但是如果配合一根Movidius NCS,所有復(fù)雜的神經(jīng)網(wǎng)絡(luò)計(jì)算都可以傳輸?shù)組yriad 2芯片上,這就可以實(shí)現(xiàn)極其快速的推斷時(shí)間。

為什么Movidius NCS與PYNQ-Z1 FPGA開發(fā)板特別適合?目前,人工智能和神經(jīng)網(wǎng)絡(luò)正在許多應(yīng)用中找到新的用途,但其中最大、發(fā)展最快的是計(jì)算機(jī)視覺。PYNQ-Z1是當(dāng)今開發(fā)嵌入式視覺應(yīng)用程序的最佳平臺之一,原因如下:它具有HDMI輸入和HDMI輸出,并且它具有FPGA架構(gòu),可用于硬件加速圖像處理算法。所以,嘗試將這些匹配起來,看看可以實(shí)現(xiàn)哪些好玩、有趣的內(nèi)容。

在開始之前可能很多工程師還有疑問:為什么不直接在Zynq FPGA上加速神經(jīng)網(wǎng)絡(luò)?這不才是在PYNQ-Z1開發(fā)板上實(shí)現(xiàn)加速神經(jīng)網(wǎng)絡(luò)的的理想方式嘛,況且之前就有過在賽靈思FPGA上完成的項(xiàng)目(QNN和BNN項(xiàng)目)。不幸的是,神經(jīng)網(wǎng)絡(luò)非常耗費(fèi)資源,PYNQ-Z1擁有成本較低的Zynq器件之一,其中FPGA資源可能對神經(jīng)網(wǎng)絡(luò)有一定的限制(這是一個(gè)非常普遍的陳述,但顯然取決于你希望的網(wǎng)絡(luò)來做)。在筆者看來,PYNQ-Z1上的FPGA資源更好的利用方式是用于圖像處理,以支持外部實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò),例如NCS。

安裝硬件

OK,言歸正傳,我們來看看如何在PYNQ-Z1 FPGA開發(fā)板上實(shí)現(xiàn)NCS運(yùn)行。首先,您要將Movidius NCS連接到PYNQ-Z1開發(fā)板,但要做到這一點(diǎn),您需要一個(gè)帶電的 USB集線器,因?yàn)楣膯栴},因?yàn)槟銜l(fā)現(xiàn)PYNQ-Z1本身無法為NCS提供足夠的電流。筆者首先嘗試沒有USB集線器的情況下PYNQ-Z1甚至不會啟動(dòng)。是的,所以說這篇文章的封面圖是有誤導(dǎo)性的,但它更簡單,它讓你感興趣,不是嗎?

設(shè)置PYNQ-Z1的MicroSD卡

你需要在PYNQ-Z1上安裝大量Linux和Python軟件包,因此建議為PYNQ-NCS項(xiàng)目使用單獨(dú)的、全新的MicroSD卡,使用Win32DiskImager將預(yù)編譯的PYNQ鏡像燒錄。

安裝依賴關(guān)系

啟動(dòng)PYNQ-Z1,然后當(dāng)LED閃爍時(shí),打開Web瀏覽器訪問Jupyter(http:// pynq:9090)。使用密碼“xilinx”登錄Jupyter,然后從屏幕右側(cè)的下拉菜單中選擇New-> Terminal。在此Linux終端中,你可以使用以下命令安裝依賴項(xiàng)。請注意,你應(yīng)該已經(jīng)以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

為了節(jié)省時(shí)間,這些命令僅安裝尚未構(gòu)建到預(yù)編譯的PYNQ-Z1鏡像中的軟件包。如果你不是從標(biāo)準(zhǔn)的PYNQ-Z1鏡像開始,那么安裝Raspberry Pi的Movidius指南(它們與PYNQ-Z1相同)中顯示的所有依賴關(guān)系可能會更好。

安裝NCS SDK(僅限API模式)

該NCS SDK包含了一個(gè)工具包和API。該工具包用于分析,編譯和調(diào)整神經(jīng)網(wǎng)絡(luò),而API則用于將應(yīng)用程序與NCS連接,這里只安裝API。我們通常會在開發(fā)PC上安裝Toolkit,但這篇文章不會詳細(xì)討論這些細(xì)節(jié)。Jupyter中的終端通常會讓你進(jìn)入/home/xilinx目錄。您可以從該目錄運(yùn)行以下命令來下載NC SDK和NC App Zoo。

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

進(jìn)入API源代碼目錄。

cd ncsdk/api/src

在這個(gè)目錄中有一個(gè)用于編譯和安裝API的Makefile。我們需要對其進(jìn)行小小的修改,以便將Python庫安裝到Python 3.6而不是Python 3.5。Makefile使用vi編輯器打開進(jìn)行編輯。


vi Makefile

一旦進(jìn)入vi編輯器,按“i”命令開始插入文本,使用箭頭向下導(dǎo)航到對“python3”的引用,將光標(biāo)放在它的末尾,并在該引用的末尾添加“.6”(它應(yīng)該讀取“python3.6”)。然后按ESC退出插入模式并輸入“:x”(冒號然后x),然后按ENTER保存該文件。

現(xiàn)在我們可以編譯并安裝API。

make
make install

安裝NC App Zoo
在NCS App Zoo含有大量的可以借鑒的例子應(yīng)用,我們將使用其中的一個(gè)與我們的NCS一起進(jìn)行簡單的測試。

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

我們將再次修改這個(gè)目錄下的Makefile文件,用“python3.6”代替“python3”,修改并保存。

vi Makefile

運(yùn)行該示例。

make run

可以看到以下輸出:

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

現(xiàn)在我們可以嘗試PYNQ-Z1的YOLO項(xiàng)目,并使用預(yù)先編譯好的Graph文件(通常我們必須在PC機(jī)上使用NCS工具包編譯graph文件)。首先克隆YOLO作為PYNQ-Z1項(xiàng)目。

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"

現(xiàn)在我們可以運(yùn)行YOLO單鏡像示例。

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

你應(yīng)該得到這個(gè)輸出:

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中,您將能夠?yàn)g覽輸出圖像并查看它(/pynq-ncs/yolo/images/dog_output.jpg)。

最終,你應(yīng)該能在PYNQ-Z1開發(fā)板上運(yùn)行YOLO項(xiàng)目,視頻演示如下。

在視頻中,當(dāng)我們不用軟件進(jìn)行任何調(diào)整大小的操作時(shí),我們會得到約3fps的視頻。當(dāng)我們在軟件中進(jìn)行大小調(diào)整時(shí),幀頻下降到大約1.5fps。如果我們將調(diào)整大小的操作放到FPGA上運(yùn)行,我們會將幀速率提高到3fps,如果我們使用線程和Zynq-7000 SoC中的第二個(gè)處理器,我們應(yīng)該能夠?qū)⑵涮嵘?fps。

Copyright 2017-2025 © 嘉興麥特萊博軟件開發(fā)工作室
  • 網(wǎng)站備案號:浙ICP備18008591號-1