資料介紹
描述
介紹
今天的家庭擁有越來越多的智能設(shè)備,從電視到燈,再到百葉窗等等。如果我們要處理我們已經(jīng)生成的這些數(shù)據(jù),并用它來控制物聯(lián)網(wǎng)設(shè)備會怎樣?
幸運的是,借助強大的新型邊緣計算設(shè)備,例如 Xilinx 的 Kria KV260,此類應(yīng)用變得越來越可行。
感謝 Xilinx 在 Xilinx 自適應(yīng)計算挑戰(zhàn)賽中提供 KV260 入門套件。
大綱
在本教程中,我們將了解如何使用 Vitis-AI 1.4 工具量化和編譯預(yù)訓(xùn)練的 PyTorch 模型以在 Xilinx Kria KV260 SOM 上運行。然后我們將看看如何使用 Ubuntu 設(shè)置我們的 KV260,并安裝 PYNQ DPU Overlay。這將允許我們使用 Python 代碼在 KV260 上運行我們編譯的模型。
最后,我將使用該模型檢測來自 USB 網(wǎng)絡(luò)攝像頭的一些手勢,然后根據(jù)模型的輸出,通過我的本地 WiFi 網(wǎng)絡(luò)向我的 FireTV 棒發(fā)送一些命令,以允許我使用手勢導(dǎo)航菜單.
此項目的所有代碼以及其他提示、技巧和故障排除都可以在此項目的GitHub 頁面上找到。
本教程假設(shè)您熟悉以下概念:
- Python、PyTorch、虛擬環(huán)境/Conda
- 基本機器學(xué)習(xí)概念和術(shù)語
- 適用于 Linux 2 (WSL2) 的 Ubuntu / Linux / Windows 子系統(tǒng)
- SSH(X11 轉(zhuǎn)發(fā),可選)
- 碼頭工人(最?。?/font>
量化和編譯我們的預(yù)訓(xùn)練模型
對于本教程,我們將假設(shè)我們已經(jīng)有一個預(yù)訓(xùn)練的 PyTorch 模型,其權(quán)重保存到 .pt /.pth 文件中。
注意:我們將使用運行舊版本 PyTorch 的 Vitis-AI 1.4。您需要確保您的模型與 torch==1.4.0 兼容,如果您使用更新版本的 PyTorch 訓(xùn)練模型,這可能需要使用 _use_new_zipfile_serialization=False保存您的.pt文件
如果您想從頭開始構(gòu)建和訓(xùn)練模型,這里有大量教程,以及免費的計算資源,例如 Google Colab,允許免費(有限)使用 GPU 進行訓(xùn)練和實驗。
注意:本教程側(cè)重于將 PyTorch 模型轉(zhuǎn)換為 xmodel,但我們在此處安裝的 docker 工具也具有將 TensorFlow 和 Caffe 模型轉(zhuǎn)換為 xmodel 的功能。請參閱賽靈思文檔。一旦模型被量化并編譯為 KV260 的 xmodel,本教程后面的部分就可以按原樣使用,不管我們的浮點模型最初是用什么格式構(gòu)建的。
我將使用一個自定義模型,該模型是我在電視前的數(shù)據(jù)集上訓(xùn)練的,執(zhí)行我想使用的不同手勢。
該模型能夠預(yù)測六種不同的手勢:上、下、左、右、手掌和拳頭。我們將使用這些手勢在我的電視上導(dǎo)航菜單。
該模型處理形狀為 [1, 63] 的輸入向量,該向量對應(yīng)于 21 個手部關(guān)鍵點的 x、y、z 坐標(biāo)的扁平數(shù)組,我們在預(yù)處理步驟中使用MediaPipe提取該數(shù)組(稍后會詳細(xì)介紹)。模型輸出一個 [1, 6] 向量,我們可以取它的 softmax 來確定每個類的概率,取最大條目作為我們的預(yù)測輸出。
GitHub 頁面上提供了預(yù)訓(xùn)練模型(.pt和 KV260 編譯版本)供您試用。請記住,您的里程可能會因其有效性而有所不同,因為它專門針對我的硬件設(shè)置和環(huán)境進行了培訓(xùn)。
1. 安裝Xilinx Vitis-AI 工具
對于這一步,我們將從賽靈思下載一個 docker 鏡像,并在其中運行幾個命令。您需要一臺裝有 Linux 或能夠運行 Linux VM 的計算機。在此示例中,我將使用帶有 WSL2 Ubuntu 20.04 的 Windows 10。
1.安裝Docker
- 在 Windows 上,確保接受 Docker 使用 WSL2 運行的權(quán)限
2. 打開 Linux 終端并克隆https://github.com/Xilinx/Vitis-AI存儲庫。
3. 拉取正確版本的 Vitis-AI docker 鏡像。對于這個項目,我們需要 Vitis-AI 1.4。請注意,Docker 映像有GPU 版本和CPU 版本。如果您的系統(tǒng)中沒有 cuda GPU,則必須使用 CPU 版本。
# pick the correct version
docker pull xilinx/vitis-ai-cpu:1.4.1.978 # CPU version
docker pull xilinx/vitis-ai:1.4.1.978 # GPU version
4. 導(dǎo)航到我們之前克隆的 repo,并docker_run.sh
使用您要運行的 docker 的標(biāo)簽調(diào)用腳本。前任:
peter@PeterDesktop:/mnt/d/Vitis-AI$ ./docker_run.sh xilinx/vitis-ai-cpu:1.4.1.978
-
注意:如果 bash 腳本出錯,您可能需要更改行尾
docker_run.sh
以兼容 Unix(在 notepad++ 中打開并將左下角的選項更改為 LF 并保存)
有關(guān)更多詳細(xì)信息,請參閱Xilinx 安裝文檔。
接受提示,你應(yīng)該會看到一個漂亮的小 Vitis-AI 文字藝術(shù)。
==========================================
__ ___ _ _ _____
\ \ / (_) | (_) /\ |_ _|
\ \ / / _| |_ _ ___ ______ / \ | |
\ \/ / | | __| / __|______/ /\ \ | |
\ / | | |_| \__ \ / ____ \ _| |_
\/ |_|\__|_|___/ /_/ \_\_____|
==========================================
Docker Image Version: 1.4.1.978
Vitis AI Git Hash: 9f3d6db
Build Date: 2021-10-08
2.量化模型
KV260 旨在內(nèi)部使用整數(shù)來完成所有神經(jīng)網(wǎng)絡(luò)計算。這與 GPU 的工作方式不同,后者使用浮點值。要將我們的模型和權(quán)重轉(zhuǎn)換為在 FPGA 上工作,我們需要執(zhí)行一個稱為量化的步驟。
我們將使用量化模型的工具組織在 conda 虛擬環(huán)境中。要激活它,我們運行:
conda activate vitis-ai-pytorch
請注意,此 conda env 運行 PyTorch==1.4.0。可能不支持來自更新版本的 PyTorch 的 Pytorch 模型中的某些操作。
量化將由使用賽靈思 pytorch_nndct.apis
Python 庫的 Python 腳本完成。我使用的腳本來自鏈接的model_data/quantize.py
GitHub Repo。它應(yīng)該很容易適應(yīng)model_data/quantize.py
您自己的模型和數(shù)據(jù)集。
要運行這個腳本,我們需要三件事:
- 預(yù)訓(xùn)練網(wǎng)絡(luò)的權(quán)重(a.pt 文件)
- 模型的 float / PyTorch 定義(繼承自 torch.nn.Module 的類)
- 一個小的測試數(shù)據(jù)集(200-1000張圖像,用于檢查量化模型的準(zhǔn)確性。量化過程可能會顯著降低模型的性能對于某些模型。這實際上是可選的。如果我們想跳過這一步,我們可以在導(dǎo)出之前使用隨機輸入轉(zhuǎn)發(fā)一次量化模型。
要訪問這些文件,我們需要將它們(quantize.py文件、模型權(quán)重、模型定義和測試集)放在 docker 可見的目錄中。在這種情況下,我們將使用Vitis-AI/data
我們之前克隆的 repo 中的目錄,該目錄通過我們用來啟動它的 bash 腳本設(shè)置為對 docker 可見。
然后從運行 docker 的終端,我們可以調(diào)用 python 腳本:
(vitis-ai-pytorch) Vitis-AI /workspace/data > python quantize.py
運行此腳本后,我們應(yīng)該會在data
名為 的目錄中看到一個新文件夾quantize_result
,其中包含一個_int.xmodel
文件。如果是這種情況,我們準(zhǔn)備進入下一步。如果發(fā)生問題,請參閱故障排除部分。
補充閱讀:Xilinx PyTorch 量化文檔
3.編譯模型
現(xiàn)在我們的模型已經(jīng)量化為 Xilinx 中間表示 (XIR).xmodel 文件,我們需要針對我們要使用的特定硬件對其進行編譯:KV260。
從 docker conda env 內(nèi)部,我們將運行vai_c_xir
編譯器工具,它需要以下結(jié)構(gòu):
vai_c_xir -x /PATH/TO/quantized.xmodel -a /PATH/TO/arch.json -o /OUTPUTPATH -n NETNAME
-
-x :量化模型的路徑,如果您按照前面的說明進行操作,則應(yīng)該是該路徑。
data/quantize_result/_int.xmodel
-
-a:目標(biāo)架構(gòu) json。對于 KV260,這將是:
/opt/vitis_ai/compiler/arch/DPUCZDX8G/KV260/arch.json
-
-o:要輸出模型的目錄。建議:
.
-
-n:您希望編譯模型具有的文件名。前任:
mymodel_kv260
警告:注意它所說的輸出行DPU subgraph number X
。這一定是1。否則,我們在KV260上嘗試運行編譯好的模型時,就會出現(xiàn)問題。如果這不是 1,請參閱故障排除部分。
如果運行成功,您應(yīng)該會看到名為 mymodel_kv260.xmodel
這是編譯好的模型。將其復(fù)制到 KV260 的可訪問位置。我們將在以下部分中使用 Python 腳本加載和運行它。
故障排除
如果您嘗試量化、編譯和運行自己的模型,那么這個量化/編譯部分可能是您遇到最多問題的地方。查看GitHub 存儲庫中的故障排除指南以獲得一些幫助。
使用 Ubuntu、PYNQ 和 Mediapipe 設(shè)置 KV260
對于這一步,我們將按照PYNQ Kria GitHub repo上提供的說明開始。簡而言之,步驟是:
1. 用 Ubuntu 鏡像刷寫 microSD 卡。
2. SSH進入KV260
3. 克隆 PYNQ Kria 存儲庫。
4. 運行提供的安裝腳本。
PYNQ 安裝將創(chuàng)建一個名為 pynq-venv 的虛擬環(huán)境,其中包含所有 Vitis-AI 1.4 工具(VART、XIR、DPU Overlay),用于通過方便的 Python API 運行已編譯的 xmodel。
最后,我們還要做一件事:將 Mediapipe 安裝到 pynq-venv。
Mediapipe 沒有安裝 aarch64 pip,因此我們必須自己在 KV260 上編譯輪子(說明),或者您可以使用我在該項目的 GitHub 存儲庫中提供的輪子。
要安裝 wheel 文件,首先我們必須以 root 身份激活 pynq-venv,然后運行 ??pip install:
sudo -i
source /etc/profile.d/pynq_venv.sh
pip install path/to/mediapose/wheel
使用 PYNQ DPU Overlay 運行我們編譯的模型
為了運行我們編譯的模型,并處理輸出以控制我的 FireTV 棒,我編寫了一個名為app_kv260.py
.
我們將在上一節(jié)中準(zhǔn)備好的文件中運行這個腳本。pynq-venv
要激活 venv 并運行 python 腳本,我們將使用以下命令。
sudo -i
source /etc/profile.d/pynq_venv.sh
xauth merge /home/ubuntu/.Xauthority # optional enable X11 forwarding (ignore warning)
python
我還包括了一個啟用 X11 轉(zhuǎn)發(fā)的行,這將允許我們在我們用來通過 SSH 連接到 Kria 的計算機上看到來自 OpenCV 的顯示。
這些是使用我們的模型設(shè)置 DPU 和運行推理的關(guān)鍵線。
# Set up DPU
overlay = DpuOverlay("dpu.bit")
# Path to your compiled x model
path = '/home/ubuntu/my_model.xmodel'
# gives an assertion error if DPU subgraph number > 1
overlay.load_model(path)
dpu = overlay.runner
# Set up space in memory for input and output of DPU
inputTensors = dpu.get_input_tensors()
outputTensors = dpu.get_output_tensors()
shapeIn = tuple(inputTensors[0].dims)
shapeOut = tuple(outputTensors[0].dims)
input_data = [np.empty(shapeIn, dtype=np.float32, order="C")]
output_data = [np.empty(shapeOut, dtype=np.float32, order="C")]
# Load in input data, and run inference
x = get_input_data() # generic function to get input data
input_data[0] = x
job_id = dpu.execute_async(input_data, output_data)
dpu.wait(job_id)
y = output_data[0]
process_output(y) # generic output function to process output
這是可視化器輸出的示例,表明它能夠正確分類一些手勢。
該應(yīng)用程序以大約 3 FPS 的速度運行,這足以與菜單 UI 進行實時交互。這實際上是我最初的計劃,但我無法找到一個可使用 Vitis-AI 軟件量化的預(yù)訓(xùn)練模型(例如,我無法使用 OpenPose和 Vitis 玩得很好)。更具挑戰(zhàn)性,但這將允許更自然的手勢,如上下滑動、“點擊”輕敲動作或轉(zhuǎn)動想象中的音量旋鈕,以控制不同的功能。
結(jié)論
KV260 是一款出色的硬件,用于執(zhí)行計算機視覺任務(wù)的推理。開始有點棘手,但希望這個項目能給你一些指導(dǎo)!我期待 Xilinx 即將對 Vitis-AI 工作流程進行改進,并希望未來能有更多以愛好者為中心的硬件。
故障排除
請查看GitHub 存儲庫中的故障排除部分。(這個頁面有點長)
- Kria KV260視覺AI入門套件用戶指南
- 適用于AWS IoT Greengrass的Xilinx KV260入門指南
- 創(chuàng)建自定義Kria KV260加速ML應(yīng)用程序
- 使用KV260進行事故檢測
- Vitis ai 1.4 KV260鏡像開源
- 在KV260上運行Yolov4 tiny
- Xilinx KV260 Vitis-AI 1.4人臉檢測
- 為Kria KV260添加USB WiFi
- Kria KV260 AI視覺套件入門
- Xilinx Kria KV260套件的第一個硬件項目
- Vivado 2021.1中的Kria KV260入門
- 使用Xilinx Kria KV260進行AI火災(zāi)探測
- Kria KV260上的動態(tài)交通燈系統(tǒng)
- 如何使用Linux操作系統(tǒng)進行智能家居的設(shè)計 12次下載
- 智能家居服務(wù)是什么?為什么需要關(guān)注它?
- 石英晶振在智能家居設(shè)備中的應(yīng)用 445次閱讀
- 繼電器在智能家居中的應(yīng)用 1030次閱讀
- Python智能家居系統(tǒng)代碼介紹 1418次閱讀
- 智能家居控制系統(tǒng)原理與應(yīng)用 3055次閱讀
- 如何在KV260上快速體驗Vitsi AI圖像分類示例程序 1665次閱讀
- 如何保護智能家居電路 984次閱讀
- 一文帶你了解智能家居控制系統(tǒng) 3138次閱讀
- 亞馬遜推出基于Zigbee無線技術(shù)的語音服務(wù)設(shè)備 可服務(wù)千萬計智能家居設(shè)備 5484次閱讀
- 智能控制系統(tǒng)有哪些(家居) 1.3w次閱讀
- 智能家居安全隱患有哪些_智能家居不為人知的恐怖一面_使用智能家居應(yīng)注意什么 4350次閱讀
- 智能家居控制系統(tǒng)詳解_智能家居控制系統(tǒng)工作原理_智能家居控制系統(tǒng)有哪些 4.4w次閱讀
- 科普丨智能家居控制系統(tǒng)是啥 2183次閱讀
- 詳解智能家居的控制系統(tǒng)工作原理 1.1w次閱讀
- 智能家居控制系統(tǒng)工作原理 4635次閱讀
- 基于Linux的智能家居管理方案 5415次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多