0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用PYNQ和Vitis AI的智能辦公解決方案

XILINX開發(fā)者社區(qū) ? 來源:XILINX開發(fā)者社區(qū) ? 作者: 賽靈思開發(fā)者 ? 2021-11-12 10:08 ? 次閱讀

本文投稿作者: zst123 (github.com/zst123)

信息通信電子愛好者, 熱衷于鉆研新技術(shù)。

使用 Ultra96-V2 進(jìn)行邊緣 AI 和圖像處理的分布式移動辦公辦公室管理可擴(kuò)展解決方案。

項目簡介

在這個項目中,我將創(chuàng)建一款用于智能辦公室移動辦公布局的應(yīng)用。

現(xiàn)代辦公室正在廣泛采用“移動辦公”的概念。通過“先到先得”的方式能夠更有效地利用共享的空間和辦公桌。然而,其中面臨的問題在于,員工可能會浪費(fèi)更多時間來尋找空置的辦公桌。此外,跟蹤占用率并在預(yù)訂就系統(tǒng)中進(jìn)行更新的工作也很單調(diào)乏味。借助基于邊緣的圖像處理功能,我們能夠檢測區(qū)域內(nèi)的人員并確定辦公桌是否被占用。

在技術(shù)方面,我將使用 Ultra96-V2 演示 Vitis AI 模型庫和面向 PYNQ 的 DPU IP 核的編譯流程。我將從零開始進(jìn)行編譯,這樣將更方便在以后修改硬件設(shè)計,我感覺獲取環(huán)境設(shè)置的過程有些混亂,所以我會為大家一步一步地進(jìn)行記錄。

PYNQ & Vitis AI 工作流程說明

在開始之前,有一點(diǎn)很重要,我們需要知道 Ultra96-V2 使用的是賽靈思 Zynq UltraScale+ MPSoC。我們可以把它稱為基于 ARMFPGA,這意味著它既包含處理系統(tǒng) (PS),也包含可編程邏輯 (PL)。

我將會使用 PYNQ,我們需要制作在 PS 上運(yùn)行的 Python 腳本。使用預(yù)編譯的 PYNQ 疊加(或比特流),我們可以在 PL 中配置深度學(xué)習(xí)處理器單元 (DPU)。在 PS 上運(yùn)行的軟件可以使用 DPU 來加速圖像識別任務(wù)。

使用的額外硬件

除了 Ultra96-V2 軟件包以外,您可能還需要以下這些額外的硬件。

1.USB 攝像頭

我使用的是 Logitech C170 USB 攝像頭。

通常,大多數(shù) Logitech 網(wǎng)絡(luò)攝像頭應(yīng)該開箱即用。其他帶有 Linux 驅(qū)動程序的品牌也應(yīng)該能夠很好地工作。

2.有源 Mini-DisplayPort 適配器

我使用的是 PowerColour Active Mini Displayport to Single-Link DVI 適配器。

Ultra96-V2 只輸出純 DisplayPort 信號,因此需要配備有源適配器。

為了獲得更好的搜索結(jié)果,您可以嘗試搜索“兼容 ATI Eyefinity”的適配器。眾所周知,Eyefinity 適配器是有源的。

請注意:如果您有預(yù)算限制,可以不用這些。

例如,可以使用 IP 攝像頭作為替代, 有一些應(yīng)用可以將您的智能手機(jī)用作 IP 攝像頭。如果您使用 USB 或遠(yuǎn)程 SSH 進(jìn)行連接,則可能不需要 mini-DP 適配器。

準(zhǔn)備 PYNQ 鏡像

我們首先將 PYNQ 加載到電路板上,并做一些測試。您可以從從官方網(wǎng)站下載 Avnet Ultra96-V2 v2.5 PYNQ 鏡像。

http://www.pynq.io/board.html

您可以在社區(qū)版塊下面找到它。

根據(jù)這些說明將鏡像寫入 SD 卡中。

https://pynq.readthedocs.io/en/latest/appendix.html#writing-the-sd-card

插入您的 SD 卡,在 Ubuntu 上,您將能夠在磁盤 應(yīng)用中看到您安裝的主板。

在這種情況下,器件名稱是 /dev/sdb

c0fb525a-42bb-11ec-b939-dac502259ad0.png

卸載分區(qū):

$ umount /dev/sdb

在處理下一個命令的器件名稱時要非常小心,我們將要使用 PYNQ 鏡像覆蓋 SD 卡內(nèi)容。

您可以使用 dd 命令將 PYNQ 鏡像寫入 SD 卡中,我決定使用 dcfldd 來顯示進(jìn)度:

$ sudo dcfldd bs=4M if=ultra96v2_v2.5.img of=/dev/sdb

1536 blocks (6144Mb) written.

1574+1 records in

1574+1 records out

啟動 PYNQ

插入 SD 卡并按下電源按鈕,以啟動電路板。

c14d82fa-42bb-11ec-b939-dac502259ad0.png

將 Micro USB 電纜從您的 PC 連接到 Ultra96-V2,您將在您的 PC 上看到一個新的以太網(wǎng)接口。

您現(xiàn)在可以通過此鏈接在瀏覽器中訪問 Jupyter Notebook http://192.168.2.1:9090

如果需要密碼,那就是“xilinx”

連接到 WiFi

我們需要將電路板連接到 Wifi,因為我們將下載一些東西。如果您有 USB-to-Ethernet 適配器,您也可以使用它,并跳過這個部分。

帶有腳本的 Jupyter Notebook 可以幫助您連接到 Wifi。導(dǎo)航到

notebooks/common/wifi.ipynb,在這里您可以將腳本修改為您自己的 Wifi 憑證。

或者,如果您熟悉 Linux 系統(tǒng),您也可以發(fā)出以下命令:

# Scan Wifi

$ ifconfig wlan0 up

$ iwlist wlan0 scan

# Connect to WEP access point

$ iwconfig wlan0 essid “YOUR_SSID_NAME” key s:YOUR_PASSWORD

# Connect to WPA access point

$ wpa_passphrase YOUR_SSID_NAME YOUR_PASSWORD 》 /etc/wpa_supplicant.conf

$ sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlan0 -B

在這里,我們可以從 Web 界面打開一個新的終端:

c220478a-42bb-11ec-b939-dac502259ad0.png

使用 Vitis AI 升級到最新的PYNQ

在后續(xù)步驟中,我們將在終端中發(fā)出一些命令,以便下載和安裝大量軟件包, 這估計需要 1 個小時的時間。

我建議安裝 USB 風(fēng)扇或任何散熱裝置,因為 Ultra96-V2 會變得非常得燙手。當(dāng)它很熱時,處理器將開始減少熱量并減慢進(jìn)程。

從 Jupyter Notebooks 打開終端。

從 Github Repo 下載并編譯 Vitis AI PYNQ DPU。這個步驟是使用 Vitis-AI 來升級 PYNQ(可能需要大約一個小時才能完成):

$ git clone --recursive --shallow-submodules https://github.com/Xilinx/DPU-PYNQ.git

$ cd DPU-PYNQ/upgrade

$ make

安裝 pynq-dpu python 包:

pip3 install pynq-dpu

將 pynq-dpu notebooks 下載到您的主文件夾中

cd $PYNQ_JUPYTER_NOTEBOOKS

pynq get-notebooks pynq-dpu -p 。

測試 USB 網(wǎng)絡(luò)攝像頭功能

連接您的 USB 網(wǎng)絡(luò)攝像頭并測試功能:

這里我使用的是 Logitech C170,PYNQ 可以自動檢測到它,您可以使用此命令進(jìn)行確認(rèn)。

$ lsusb

Bus 001 Device 004: ID 046d:082b Logitech, Inc. Webcam C170

在 Jupyter 中,通過。/notebooks/common/usb_webcam.ipynb 打開 notebook,您可以運(yùn)行它,以查看您的網(wǎng)絡(luò)攝像頭是否正常工作。

現(xiàn)在,我們已經(jīng)驗證了該電路板功能齊全。我們可以從 Vitis AI 庫編譯 PYNQ DPU 鏡像和模型。

準(zhǔn)備編譯環(huán)境

我們需要安裝賽靈思 Vitis 和賽靈思運(yùn)行時 (XRT) 2020.1 版本。對于 Vitis 和 XRT 2020.1,受支持的最新操作系統(tǒng)是 Ubuntu 18.04.2 LTS。

Ubuntu 20.04 不受支持,所以我無法成功安裝。因此,我在虛擬機(jī)中安裝了所有東西。

通過此鏈接下載賽靈思運(yùn)行時 (XRT) 的 .deb 文件

https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-platforms.html

使用此命令來進(jìn)行安裝:

sudo apt install 。/xrt_202010.2.6.655_18.04-amd64-xrt.deb

接下來,下載賽靈思統(tǒng)一 Web 安裝程序,它將安裝 Vitis 2020.1。您需要注冊一個賽靈思帳戶。請遵循此網(wǎng)站上的說明

https://www.xilinx.com/html_docs/xilinx2020_1/vitis_doc/juk1557377661419.html

將 swappiness 設(shè)置為較低的值也很有幫助,因為構(gòu)建過程中會使用大量的 RAM。它會告知操作系統(tǒng)在換出到硬盤之前可以使用更多的 RAM。

https://askubuntu.com/questions/103915/how-do-i-configure-swappiness

如需更改系統(tǒng) swappiness 值,通過 root 權(quán)限打開 /etc/sysctl.conf

sudo gedit /etc/sysctl.con

然后,通過添加此行來更改 swappiness。我選擇將該值設(shè)置為 1。這意味著在將 RAM 交換到硬盤之前,系統(tǒng)將使用高達(dá) 99% 的 RAM(剩余 1%)。

c3992154-42bb-11ec-b939-dac502259ad0.png

應(yīng)用更改。

sudo sysctl -p

c3c539d8-42bb-11ec-b939-dac502259ad0.png

現(xiàn)在我們準(zhǔn)備開始編譯……

為 Ultra96-V2 編譯 DPU-PYNQ

我們將仔細(xì)參考本指南:

https://github.com/Xilinx/DPU-PYNQ/blob/master/boards/README.md

首先,從賽靈思 DPU-PYNQ 庫中復(fù)制構(gòu)建文件

git clone --recursive --shallow-submodules https://github.com/Xilinx/DPU-PYNQ.git

cd DPU-PYNQ/boards

我們必須對構(gòu)建文件進(jìn)行一些更改,因為它們最初是在 Vitis 2019.2 中設(shè)計的,但現(xiàn)在我們正在使用新版本進(jìn)行編譯。

在 boards 文件夾中,編輯 check_env.sh

搜索 2019.2,將其改為 2020.1

c442498c-42bb-11ec-b939-dac502259ad0.png

同樣轉(zhuǎn)至 /vitis-ai-git/DPU-TRD/dpu_ip/dpu_eu_v3_2_0,并編輯 component.xml

搜索 2019.2,將其改為 2020.1

c4f0dcfe-42bb-11ec-b939-dac502259ad0.png

最后,如果您想對 DPU IP 配置進(jìn)行任何更改,請轉(zhuǎn)至 boards/Ultra96/dpu_conf.vh。

在這個案例中,我將存儲器更改為 RAM_USAGE_HIGH。

c561595c-42bb-11ec-b939-dac502259ad0.png

我們準(zhǔn)備好開始編譯了:

打開一個終端,并獲取賽靈思工具

source /opt/Xilinx/Vitis/2020.1/settings64.sh

source /opt/xilinx/xrt/setup.sh

開始編譯(請注意: Ultra96 和 Ultra96-V2 可以使用相同的方法)

$ make BOARD=Ultra96

過了一段時間后,構(gòu)建再次失敗了,因為它檢查到版本是 2019.2,而不是 2020.1。

查看 DPU-PYNQ/boards 目錄。這是因為有一個名為 PYNQ-derivative-overlays 的新文件夾。構(gòu)建腳本復(fù)制了另一個名為 PYNQ-derivative-overlays 的存儲庫。它負(fù)責(zé)將 DPU IP 置于 PYNQ 基礎(chǔ)疊加之上。

轉(zhuǎn)至 PYNQ-derivative-overlays/dpu/ 并編輯 dpu.tcl

同樣地,將 2019.2 更改為 2020.1

c5ff29ca-42bb-11ec-b939-dac502259ad0.png

然后繼續(xù)制作過程。

$ make BOARD=Ultra96

c63bf04e-42bb-11ec-b939-dac502259ad0.png

綜合過程所花的時間最長,可能需要一個小時

完成后,您將看到以下文件, 這些文件是面向 PYNQ 的比特流疊加。

我會將這些文件上傳到 Juypyter 實例中,放在一個名為 mymodel 的文件夾中。

在右上角,單擊“新建 》 文件夾”

然后在文件夾中,單擊“上傳”并選擇 3 個文件。

從 Vitis 模型庫編譯 YoloV3

請注意:模型是特定于您編譯的 DPU(即一種 DPU 配置的模型與另一種不兼容)。例如,這意味著如果您更改編譯時使用的內(nèi)核數(shù)量,您還必須重新編譯模型。

準(zhǔn)備 docker 文件

cd DPU-PYNQ/host

mkdir -p docker

cp -rf 。。/vitis-ai-git/docker_run.sh 。

cp -rf 。。/vitis-ai-git/docker/PROMPT.txt docker

chmod u+x docker_run.sh

安裝 docker

sudo apt install docker -y

sudo groupadd docker

newgrp docker

運(yùn)行 docker 實例

。/docker_run.sh xilinx/vitis-ai-cpu:latest

c742406a-42bb-11ec-b939-dac502259ad0.png

進(jìn)入實例后,您可以編譯模型

cp 。。/boards/Ultra96/dpu.hwh 。/

。/compile.sh Ultra96 tf_yolov3_voc_416_416_65.63G_1.1

c7a7a4c8-42bb-11ec-b939-dac502259ad0.png

完成后,您將在目錄中看到模型 dpu_tf_yolov3.elf

也將其上傳到您的 Jupyter 實例:

Notebook 示例

pynq_dpu/dpu_yolo_v3.ipynb 中有一個示例,它可以測試 YoloV3 模型

現(xiàn)在制作副本(文件 》 制作副本),并修改代碼以指向 mymodel 文件夾,其中包含我們自己編譯的比特流和模型

c85bde3e-42bb-11ec-b939-dac502259ad0.png

運(yùn)行所有單元(單元 》 運(yùn)行所有)

c8686b0e-42bb-11ec-b939-dac502259ad0.png

驗證鏡像已經(jīng)分類成功

我們終于準(zhǔn)備好創(chuàng)建我們的應(yīng)用了!

應(yīng)用代碼

最后,在完成了所有的硬件設(shè)置和測試后,我編寫了軟件代碼來創(chuàng)建我自己的智能辦公室移動辦公應(yīng)用。

它由 2 個并行運(yùn)行的 Jupyter Notebooks 組成。第一個負(fù)責(zé)設(shè)置 PYNQ 疊加和處理視頻饋送。第二個將利用數(shù)據(jù)顯示基于座位可用性的控制面板。

結(jié)論

我希望這篇文章對您來說已經(jīng)足夠全面詳細(xì)了。這是我第一次使用賽靈思硬件來了解邊緣上的 FPGA 和 AI。因此,在開始時,最難的部分是使用開發(fā)工具和適應(yīng)環(huán)境,因此,我盡力詳細(xì)地展示了盡可能多的設(shè)置過程。感謝您閱讀完全文!

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1643

    文章

    21974

    瀏覽量

    614369
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9312

    瀏覽量

    375210
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    34324

    瀏覽量

    275514
  • DPU
    DPU
    +關(guān)注

    關(guān)注

    0

    文章

    390

    瀏覽量

    24712
  • PYNQ
    +關(guān)注

    關(guān)注

    4

    文章

    62

    瀏覽量

    3053

原文標(biāo)題:月度項目 | 采用 PYNQ 和 Vitis AI 的智能辦公解決方案

文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    智能深度學(xué)習(xí)的AI攝像機(jī)模組方案

    一、方案簡介 AI攝像機(jī)模組主要定位為行業(yè)AI攝像機(jī)模組,廣泛應(yīng)用在泛安防行業(yè),實現(xiàn)人臉識別、人臉抓拍、電動車識別、車牌識別等功能,用于實現(xiàn)身份驗證、人員、車輛等管理。感算商城聯(lián)合知名方案
    發(fā)表于 03-21 11:28

    九聯(lián)科技AI解決方案接入AI大模型

    在人工智能技術(shù)迅猛發(fā)展的今天,九聯(lián)科技憑借其領(lǐng)先的物聯(lián)網(wǎng)通信模組技術(shù)和創(chuàng)新的AI應(yīng)用方案,再次走在了行業(yè)的前沿。日前,九聯(lián)科技AI解決方案
    的頭像 發(fā)表于 03-07 17:21 ?589次閱讀

    啟明智顯AI(人工智能解決方案加速傳統(tǒng)企業(yè)智能化轉(zhuǎn)型

    啟明智顯AI解決方案,將AI技術(shù)深入傳統(tǒng)行業(yè),支持多模態(tài)交互、生成式AIoT、靈活調(diào)用AI能力,通過快捷、經(jīng)濟(jì)的方案助力企業(yè)實現(xiàn)
    的頭像 發(fā)表于 02-27 17:33 ?645次閱讀
    啟明智顯<b class='flag-5'>AI</b>(人工<b class='flag-5'>智能</b>)<b class='flag-5'>解決方案</b>加速傳統(tǒng)企業(yè)<b class='flag-5'>智能</b>化轉(zhuǎn)型

    啟明智顯AI解決方案,用AI生活助手角度打開AI智能體的一天

    啟明智顯AI解決方案打造AI生活助手,用AI智能體的角度看AI
    的頭像 發(fā)表于 02-26 14:43 ?529次閱讀
    啟明智顯<b class='flag-5'>AI</b><b class='flag-5'>解決方案</b>,用<b class='flag-5'>AI</b>生活助手角度打開<b class='flag-5'>AI</b><b class='flag-5'>智能</b>體的一天

    啟明智顯助力傳統(tǒng)行業(yè)AI智能硬件升級解決方案

    啟明智顯AI智能解決方案,助力傳統(tǒng)行業(yè)中智能升級,玩具、擺件、智能家居等多領(lǐng)域應(yīng)用
    的頭像 發(fā)表于 02-24 16:30 ?616次閱讀
    啟明智顯助力傳統(tǒng)行業(yè)<b class='flag-5'>AI</b><b class='flag-5'>智能</b>硬件升級<b class='flag-5'>解決方案</b>

    廣和通正式推出AI玩具大模型解決方案

    廣和通近期推出了一款創(chuàng)新的AI玩具大模型解決方案,該方案深度融合了豆包等AI大模型,并內(nèi)置了廣和通Cat.1模組,為智能玩具的
    的頭像 發(fā)表于 01-24 10:36 ?1084次閱讀

    廣和通發(fā)布AI玩具大模型解決方案

    近日,廣和通推出了一項專為AI玩具設(shè)計的創(chuàng)新解決方案——AI玩具大模型解決方案。該方案深度融合了豆包等領(lǐng)先的
    的頭像 發(fā)表于 01-21 14:45 ?1106次閱讀

    廣和通推出AI玩具大模型解決方案

    廣和通推出AI玩具大模型解決方案,該方案深度融合豆包等AI大模型、內(nèi)置廣和通Cat.1模組,助力智能玩具實現(xiàn)
    的頭像 發(fā)表于 01-21 10:27 ?679次閱讀

    移遠(yuǎn)通信推出AI智能玩具解決方案

    為了滿足玩具廠商日益增長的智能化升級需求,移遠(yuǎn)通信近日宣布推出了一款針對玩具市場的AI智能解決方案。該方案旨在通過AI大模型的賦能,為傳統(tǒng)玩
    的頭像 發(fā)表于 01-16 11:33 ?809次閱讀

    黑芝麻智能與RockAI發(fā)布AI Agent解決方案

    黑芝麻智能與RockAI聯(lián)合發(fā)布基于武當(dāng)C1200家族芯片的AI Agent解決方案,該方案將部署于未來的智能座艙應(yīng)用中。
    的頭像 發(fā)表于 01-10 16:33 ?651次閱讀

    企業(yè)AI解決方案包括哪些內(nèi)容

    企業(yè)AI解決方案是一種集成了人工智能技術(shù)的綜合性方案,旨在提高企業(yè)運(yùn)營效率、降低成本、優(yōu)化業(yè)務(wù)流程,并提升企業(yè)的整體競爭力。那么,企業(yè)AI
    的頭像 發(fā)表于 01-10 10:15 ?398次閱讀

    廣和通發(fā)布AI Buddy產(chǎn)品及解決方案,創(chuàng)新AI智能終端

    1月9日,在2025國際消費(fèi)電子展覽會(CES)期間,廣和通發(fā)布集智能語音交互及翻譯、4G/5G全球漫游、隨身熱點(diǎn)、智能娛樂、充電續(xù)航等功能于一體的AIBuddy(AI陪伴)產(chǎn)品及解決方案
    的頭像 發(fā)表于 01-09 18:24 ?628次閱讀
    廣和通發(fā)布<b class='flag-5'>AI</b> Buddy產(chǎn)品及<b class='flag-5'>解決方案</b>,創(chuàng)新<b class='flag-5'>AI</b><b class='flag-5'>智能</b>終端

    ai煙火檢測解決方案

    在當(dāng)今社會,火災(zāi)已成為威脅公共安全的重要隱患之一,其突發(fā)性與破壞性給人們的生命財產(chǎn)安全帶來了巨大挑戰(zhàn)。為有效應(yīng)對這一難題,遠(yuǎn)景達(dá)ai煙火檢測解決方案應(yīng)運(yùn)而生,以其前沿的邊緣計算與人工智能技術(shù),為火災(zāi)
    的頭像 發(fā)表于 08-19 16:07 ?516次閱讀
    <b class='flag-5'>ai</b>煙火檢測<b class='flag-5'>解決方案</b>

    使用PYNQ訓(xùn)練和實現(xiàn)BNN

    使用 PYNQ 可以輕松在 FPGA 上實現(xiàn)加速 AI/ML,而無需編寫一行 HDL!讓我們看看如何做到這一點(diǎn)。
    的頭像 發(fā)表于 08-05 17:15 ?975次閱讀
    使用<b class='flag-5'>PYNQ</b>訓(xùn)練和實現(xiàn)BNN

    智慧辦公樓宇革新:HEDV行業(yè)級本地部署解決方案,引領(lǐng)辦公新紀(jì)元

    智能化、高效化、節(jié)能化和舒適化。那么,如何結(jié)合創(chuàng)新技術(shù)搭建出符合客戶需求的個性化智慧辦公樓宇解決方案呢?選擇涂鴉HEDV本地化部署解決方案,為您全方位賦能!基于輕量級
    的頭像 發(fā)表于 08-02 08:15 ?1125次閱讀
    智慧<b class='flag-5'>辦公</b>樓宇革新:HEDV行業(yè)級本地部署<b class='flag-5'>解決方案</b>,引領(lǐng)<b class='flag-5'>辦公</b>新紀(jì)元

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品