本文投稿作者: zst123 (github.com/zst123)
使用 Ultra96-V2 進行邊緣 AI 和圖像處理的分布式移動辦公辦公室管理可擴展解決方案。
項目簡介
在這個項目中,我將創建一款用于智能辦公室移動辦公布局的應用。
現代辦公室正在廣泛采用“移動辦公”的概念。通過“先到先得”的方式能夠更有效地利用共享的空間和辦公桌。然而,其中面臨的問題在于,員工可能會浪費更多時間來尋找空置的辦公桌。此外,跟蹤占用率并在預訂就系統中進行更新的工作也很單調乏味。借助基于邊緣的圖像處理功能,我們能夠檢測區域內的人員并確定辦公桌是否被占用。
在技術方面,我將使用 Ultra96-V2 演示 Vitis AI 模型庫和面向 PYNQ 的 DPU IP 核的編譯流程。我將從零開始進行編譯,這樣將更方便在以后修改硬件設計,我感覺獲取環境設置的過程有些混亂,所以我會為大家一步一步地進行記錄。
PYNQ & Vitis AI 工作流程說明
在開始之前,有一點很重要,我們需要知道 Ultra96-V2 使用的是賽靈思 Zynq UltraScale+ MPSoC。我們可以把它稱為基于 ARM 的 FPGA,這意味著它既包含處理系統 (PS),也包含可編程邏輯 (PL)。
我將會使用 PYNQ,我們需要制作在 PS 上運行的 Python 腳本。使用預編譯的 PYNQ 疊加(或比特流),我們可以在 PL 中配置深度學習處理器單元 (DPU)。在 PS 上運行的軟件可以使用 DPU 來加速圖像識別任務。
使用的額外硬件
除了 Ultra96-V2 軟件包以外,您可能還需要以下這些額外的硬件。
1.USB 攝像頭
我使用的是 Logitech C170 USB 攝像頭。
通常,大多數 Logitech 網絡攝像頭應該開箱即用。其他帶有 Linux 驅動程序的品牌也應該能夠很好地工作。
2.有源 Mini-DisplayPort 適配器
我使用的是 PowerColour Active Mini Displayport to Single-Link DVI 適配器。
Ultra96-V2 只輸出純 DisplayPort 信號,因此需要配備有源適配器。
為了獲得更好的搜索結果,您可以嘗試搜索“兼容 ATI Eyefinity”的適配器。眾所周知,Eyefinity 適配器是有源的。
請注意:如果您有預算限制,可以不用這些。
例如,可以使用 IP 攝像頭作為替代, 有一些應用可以將您的智能手機用作 IP 攝像頭。如果您使用 USB 或遠程 SSH 進行連接,則可能不需要 mini-DP 適配器。
準備 PYNQ 鏡像
我們首先將 PYNQ 加載到電路板上,并做一些測試。您可以從從官方網站下載 Avnet Ultra96-V2 v2.5 PYNQ 鏡像。
http://www.pynq.io/board.html
您可以在社區版塊下面找到它。
根據這些說明將鏡像寫入 SD 卡中。
https://pynq.readthedocs.io/en/latest/appendix.html#writing-the-sd-card
插入您的 SD 卡,在 Ubuntu 上,您將能夠在磁盤 應用中看到您安裝的主板。
在這種情況下,器件名稱是 /dev/sdb
卸載分區:
$ umount /dev/sdb
在處理下一個命令的器件名稱時要非常小心,我們將要使用 PYNQ 鏡像覆蓋 SD 卡內容。
您可以使用 dd 命令將 PYNQ 鏡像寫入 SD 卡中,我決定使用 dcfldd 來顯示進度:
$ 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 卡并按下電源按鈕,以啟動電路板。
將 Micro USB 電纜從您的 PC 連接到 Ultra96-V2,您將在您的 PC 上看到一個新的以太網接口。
您現在可以通過此鏈接在瀏覽器中訪問 Jupyter Notebook http://192.168.2.1:9090
如果需要密碼,那就是“xilinx”
連接到 WiFi
我們需要將電路板連接到 Wifi,因為我們將下載一些東西。如果您有 USB-to-Ethernet 適配器,您也可以使用它,并跳過這個部分。
帶有腳本的 Jupyter Notebook 可以幫助您連接到 Wifi。導航到
notebooks/common/wifi.ipynb,在這里您可以將腳本修改為您自己的 Wifi 憑證。
或者,如果您熟悉 Linux 系統,您也可以發出以下命令:
# 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 界面打開一個新的終端:
使用 Vitis AI 升級到最新的PYNQ
在后續步驟中,我們將在終端中發出一些命令,以便下載和安裝大量軟件包, 這估計需要 1 個小時的時間。
我建議安裝 USB 風扇或任何散熱裝置,因為 Ultra96-V2 會變得非常得燙手。當它很熱時,處理器將開始減少熱量并減慢進程。
從 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 網絡攝像頭功能
連接您的 USB 網絡攝像頭并測試功能:
這里我使用的是 Logitech C170,PYNQ 可以自動檢測到它,您可以使用此命令進行確認。
$ lsusb
Bus 001 Device 004: ID 046d:082b Logitech, Inc. Webcam C170
在 Jupyter 中,通過。/notebooks/common/usb_webcam.ipynb 打開 notebook,您可以運行它,以查看您的網絡攝像頭是否正常工作。
現在,我們已經驗證了該電路板功能齊全。我們可以從 Vitis AI 庫編譯 PYNQ DPU 鏡像和模型。
準備編譯環境
我們需要安裝賽靈思 Vitis 和賽靈思運行時 (XRT) 2020.1 版本。對于 Vitis 和 XRT 2020.1,受支持的最新操作系統是 Ubuntu 18.04.2 LTS。
Ubuntu 20.04 不受支持,所以我無法成功安裝。因此,我在虛擬機中安裝了所有東西。
通過此鏈接下載賽靈思運行時 (XRT) 的 .deb 文件
https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-platforms.html
使用此命令來進行安裝:
sudo apt install 。/xrt_202010.2.6.655_18.04-amd64-xrt.deb
接下來,下載賽靈思統一 Web 安裝程序,它將安裝 Vitis 2020.1。您需要注冊一個賽靈思帳戶。請遵循此網站上的說明
https://www.xilinx.com/html_docs/xilinx2020_1/vitis_doc/juk1557377661419.html
將 swappiness 設置為較低的值也很有幫助,因為構建過程中會使用大量的 RAM。它會告知操作系統在換出到硬盤之前可以使用更多的 RAM。
https://askubuntu.com/questions/103915/how-do-i-configure-swappiness
如需更改系統 swappiness 值,通過 root 權限打開 /etc/sysctl.conf
sudo gedit /etc/sysctl.con
然后,通過添加此行來更改 swappiness。我選擇將該值設置為 1。這意味著在將 RAM 交換到硬盤之前,系統將使用高達 99% 的 RAM(剩余 1%)。
應用更改。
sudo sysctl -p
現在我們準備開始編譯……
為 Ultra96-V2 編譯 DPU-PYNQ
我們將仔細參考本指南:
https://github.com/Xilinx/DPU-PYNQ/blob/master/boards/README.md
首先,從賽靈思 DPU-PYNQ 庫中復制構建文件
git clone --recursive --shallow-submodules https://github.com/Xilinx/DPU-PYNQ.git
cd DPU-PYNQ/boards
我們必須對構建文件進行一些更改,因為它們最初是在 Vitis 2019.2 中設計的,但現在我們正在使用新版本進行編譯。
在 boards 文件夾中,編輯 check_env.sh
搜索 2019.2,將其改為 2020.1
同樣轉至 /vitis-ai-git/DPU-TRD/dpu_ip/dpu_eu_v3_2_0,并編輯 component.xml
搜索 2019.2,將其改為 2020.1
最后,如果您想對 DPU IP 配置進行任何更改,請轉至 boards/Ultra96/dpu_conf.vh。
在這個案例中,我將存儲器更改為 RAM_USAGE_HIGH。
我們準備好開始編譯了:
打開一個終端,并獲取賽靈思工具
source /opt/Xilinx/Vitis/2020.1/settings64.sh
source /opt/xilinx/xrt/setup.sh
開始編譯(請注意: Ultra96 和 Ultra96-V2 可以使用相同的方法)
$ make BOARD=Ultra96
過了一段時間后,構建再次失敗了,因為它檢查到版本是 2019.2,而不是 2020.1。
查看 DPU-PYNQ/boards 目錄。這是因為有一個名為 PYNQ-derivative-overlays 的新文件夾。構建腳本復制了另一個名為 PYNQ-derivative-overlays 的存儲庫。它負責將 DPU IP 置于 PYNQ 基礎疊加之上。
轉至 PYNQ-derivative-overlays/dpu/ 并編輯 dpu.tcl
同樣地,將 2019.2 更改為 2020.1
然后繼續制作過程。
$ make BOARD=Ultra96
綜合過程所花的時間最長,可能需要一個小時
完成后,您將看到以下文件, 這些文件是面向 PYNQ 的比特流疊加。
我會將這些文件上傳到 Juypyter 實例中,放在一個名為 mymodel 的文件夾中。
在右上角,單擊“新建 》 文件夾”
然后在文件夾中,單擊“上傳”并選擇 3 個文件。
從 Vitis 模型庫編譯 YoloV3
請注意:模型是特定于您編譯的 DPU(即一種 DPU 配置的模型與另一種不兼容)。例如,這意味著如果您更改編譯時使用的內核數量,您還必須重新編譯模型。
準備 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
運行 docker 實例
。/docker_run.sh xilinx/vitis-ai-cpu:latest
進入實例后,您可以編譯模型
cp 。。/boards/Ultra96/dpu.hwh 。/
。/compile.sh Ultra96 tf_yolov3_voc_416_416_65.63G_1.1
完成后,您將在目錄中看到模型 dpu_tf_yolov3.elf
也將其上傳到您的 Jupyter 實例:
Notebook 示例
pynq_dpu/dpu_yolo_v3.ipynb 中有一個示例,它可以測試 YoloV3 模型
現在制作副本(文件 》 制作副本),并修改代碼以指向 mymodel 文件夾,其中包含我們自己編譯的比特流和模型
運行所有單元(單元 》 運行所有)
驗證鏡像已經分類成功
我們終于準備好創建我們的應用了!
應用代碼
最后,在完成了所有的硬件設置和測試后,我編寫了軟件代碼來創建我自己的智能辦公室移動辦公應用。
它由 2 個并行運行的 Jupyter Notebooks 組成。第一個負責設置 PYNQ 疊加和處理視頻饋送。第二個將利用數據顯示基于座位可用性的控制面板。
結論
我希望這篇文章對您來說已經足夠全面詳細了。這是我第一次使用賽靈思硬件來了解邊緣上的 FPGA 和 AI。因此,在開始時,最難的部分是使用開發工具和適應環境,因此,我盡力詳細地展示了盡可能多的設置過程。感謝您閱讀完全文!
編輯:jq
-
FPGA
+關注
關注
1629文章
21736瀏覽量
603419 -
ARM
+關注
關注
134文章
9097瀏覽量
367581 -
AI
+關注
關注
87文章
30896瀏覽量
269108 -
DPU
+關注
關注
0文章
358瀏覽量
24182 -
PYNQ
+關注
關注
4文章
62瀏覽量
2908
原文標題:月度項目 | 采用 PYNQ 和 Vitis AI 的智能辦公解決方案
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論