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