資料介紹
描述
抽象的
簡介:最新的深度學習模型與最先進的硬件相結合,可以實時執行人體姿態估計 (HPE)。HPE 是指根據圖像數據估計人體的運動學模型。瑞士東部應用科學大學 ( OST )的人工智能跨學科中心 ( ICAI ) 與瑞士 VRM合作,采用了著名的OpenPoseHPE 的網絡,并使其計算效率更高。讓我們將此項目的網絡稱為 ICAIPose。當前的原型使用具有一流和計算密集型深度學習模型的多攝像頭系統,可在多個圖形處理單元(GPU)上運行,具有足夠的性能。
為了在治療環境中廣泛采用 HPE,需要一個小型且具有成本效益的系統。因此,姿勢跟蹤系統應該在邊緣設備上運行。
目標:在這個項目中,ICAIPose 應該在 AMD-Xilinx 的 FPGA 邊緣設備 Kria KV 260 上實現。由于 ICAIPose 是為 GPU 設計的,因此在 FPGA 上運行這樣一個給定的網絡所需的努力和性能影響是主要關注點。
方法:該應用程序需要一個攝像頭接口和一個深度學習處理單元。為了測試這些硬件部件,使用這些部件的給定示例項目首先在 Kria 板上運行。然后,使用 AMD-Xilinx 的 Vitis AI 為 FPGA 上的深度學習處理器單元 (DPU) 編譯 ICAIPose 網絡,并對網絡進行微調。隨附的 Vitis AI 運行時引擎及其 Python API 通過 FPGA 微處理器上的嵌入式 Linux 與 DPU 進行通信。
結論:ICAIPose 是一個非常大的神經網絡,具有超過 100 個 GOps 來處理一幀。然而,在 KV260 上可以實現每秒 8 幀的吞吐量。基于 GPU 的 NVIDIA Jetson Xavier NX 的成本是 Kria 主板的兩倍多,它實現了相似的幀速率。
ICAIPose 在具有良好性能的邊緣設備上的成功實施為在治療環境中的廣泛應用開辟了領域。
AMD-Xilinx 的 Vitis AI 框架已經過廣泛測試并顯示出其優勢,但也存在一些初期問題。對于在 FPGA 上運行深度神經網絡,Vitis AI 是一個在開發時間和性能之間取得良好平衡的框架。在用 HDL 或 HLS 實現硬件加速算法之前應該考慮這一點。
先決條件
- 安裝了 Vitis AI 的 Linux 主機 PC
- 了解 Vitis AI 工作流程
- KV260 上網
基礎知識
HPE 網絡的通常輸出是給定人體姿勢關鍵點的置信度圖。對于單個HPE的任務,找到置信度圖的最大值并分配相應的關鍵點。
相機接口
相機接口是設計的重要組成部分。Kria KV260 Basic Accessory Pack 包含一個小型相機。
AMD-Xilinx 為Kria? KV260 Vision AI Starter Kit Applications提供了一個示例應用程序。
智能相機應用程序的模塊設計表明,硬件平臺包含了我們這個項目所需的一切,包括相機的硬件接口和 DPU。此示例應用程序可用作基礎設計,以使用相機運行自定義 Vitis AI 模型。
對基礎設計的修改
首先,仔細檢查所有版本以確保它們匹配:
- 對于 Vitis AI 1.4 和以前的版本,KV260 的板映像為 2020.2
- 這需要使用 Smartcamera 應用程序,該應用程序也使用 2020.2 板映像(不是最新版本)。
- 2020.2智能相機平臺的Vitis AI版本為Vitis AI 1.3.0
按照此說明在 KV260 上安裝 smartcamera 應用程序(直到第 5 節)。
通過 UART/JTAG 連接時,檢查以太網 (eth0) 端口的分配 IP 地址。
ifconfig
該命令的輸出類似于:
eth0 Link encap:Ethernet HWaddr 00:0a:35:00:22:01
inet addr:152.96.212.163 Bcast:152.96.212.255 Mask:255.255.255
inet6 addr: fe80::20a:35ff:fe00:2201/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:67 errors:0 dropped:0 overruns:0 frame:0
TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9478 (9.2 KiB) TX bytes:5806 (5.6 KiB)
Interrupt:44
在這種情況下,IP 地址是152.96.212.163
.
使用此地址從主機 PC(連接到與 KV260 相同的網絡)通過網絡連接ssh
到 KV260。
ssh petalinux@
要運行所有 Vitis AI 示例,必須在 KV260 上進行一些進一步的安裝。確保設備已連接到互聯網。
X11-轉發
sudo dnf install packagegroup-petalinux-x11
設置顯示環境
export DISPLAY=:0.0
葡萄籽油
sudo dnf install packagegroup-petalinux-vitisai
開放式CV
sudo dnf install packagegroup-petalinux-opencv
柏油
sudo dnf install xz
Vitis AI 運行時
sudo wget https://www.xilinx.com/bin/public/openDownload?filename=vitis-ai-runtime-1.3.0.tar.gz
sudo tar -xzvf openDownload\?filename\=vitis-ai-runtime-1.3.0.tar.gz
cd vitis-ai-runtime-1.3.0/aarch64/centos/
sudo bash setup.sh
Vitis AI 運行時 (VART) 需要DPU.xclbin
文件中vart.conf
文件的位置。但相應的xclbin
文件是來自 smartcam 應用程序的文件。
使用以下命令更改和 xclbin 文件。vart.conf
echo "firmware: /lib/firmware/xilinx/kv260-smartcam/kv260-smartcam.xclbin" | sudo tee /etc/vart.conf
sudo cp /lib/firmware/xilinx/kv260-smartcam/kv260-smartcam.xclbin /usr/lib/
sudo mv /usr/lib/kv260-smartcam.xclbin /usr/lib/dpu.xclbin
在運行 Vitis AI 示例之前,必須加載相應的 smartcam 應用程序(每次啟動后)。
sudo xmutil unloadapp
sudo xmutil loadapp kv260-smartcam
加載 KV260-smartcam 應用程序后,可以使用以下 GStreamer 命令使用 X11-forwarding 測試相機:
gst-launch-1.0 mediasrcbin media-device=/dev/media0 v4l2src0::io-mode=dmabuf v4l2src0::stride-align=256 ! video/x-raw, width=256, height=256, format=NV12, framerate=30/1 ! videoconvert! ximagesink
如果通過 HDMI(本例中為 1920x1200)連接顯示器,則也可以測試相機。請根據您連接的顯示器更改寬度和高度參數
gst-launch-1.0 mediasrcbin media-device=/dev/media0 v4l2src0::io-mode=dmabuf v4l2src0::stride-align=256 ! video/x-raw, width=1920, height=1200, format=NV12, framerate=30/1 ! kmssink driver-name=xlnx plane-id=39 sync=false fullscreen-overlay=true
Vitis AI 模型動物園
在下一個項目步驟中,將結合 Vitis AI 對攝像頭系統進行測試。借助來自Vitis AI Model Zoo的大量預訓練神經網絡,可以選擇一個示例。
Hourglass 是一個 HPE 網絡,具有以下屬性:
cf_hourglass_mpii_256_256_10.2G_2.0
- 描述:帶有沙漏的姿勢估計模型
- 輸入尺寸:256x256
- 浮動操作:10.2G
- 任務:姿態估計
- 框架:咖啡
- 修剪:'不'
- 最新版本:Vitis AI 2.0
KV260 模型的預編譯版本已使用 Vitis AI 2.0 和 DPU 配置進行編譯B4096
。
我們使用 DPU 配置B3136
。caffe
因此,必須使用相應 DPU 和正確的 Vitis AI 版本 1.3.0(Docker 映像:)的工作流重新編譯沙漏模型xilinx/vitis-ai-cpu:1.3.411
。
DPU 指紋和相應的arch.json
文件可以在smartcam 文檔中找到。
{
"fingerprint":"0x1000020F6014406"
}
新編譯的文件模型可以保存在 KV260 上。
Vitis AI 庫提供的測試應用程序 ( test_video_hourglass
) 用于運行模型。為此,請使用此項目中提供的預構建文件或使用 KV260 主機 PC 上的交叉編譯系統環境編譯測試應用程序(遵循 Vitis AI說明)。
下載并解壓 KV260 上的預構建文件。
wget https://github.com/Nunigan/HardwareAcceleratedPoseTracking/raw/main/prebuilt.tar.xz
tar -xf prebuilt.tar.xz
轉到沙漏文件夾
cd prebuilt/hourglass/
來自相機接口的 GStreamer 字符串用作輸入設備。使用以下命令,程序以兩個線程運行。
./test_video_hourglass hourglass_kv.xmodel "mediasrcbin media-device=/dev/media0 v4l2src0::io-mode=dmabuf v4l2src0::stride-align=256 ! video/x-raw, width=256, height=256, format=NV12, framerate=30/1 ! videoconvert ! appsink" -t 2
沙漏以 30 fps 運行。請注意,限制因素是相機而不是神經網絡。
葡萄籽油
該項目的主要部分是使用為傳統 GPU 實現和 Tensorflow 設計的神經網絡,并嘗試在 FPGA 上運行它。
ICAIPose 是一個相當大的網絡,具有大約 1100 萬個可學習參數并103 GOps
用于處理圖像。
原始網絡由以下層組成:
-
Conv2D
-
PReLU activation function
-
Concatenate
-
UpSampling2D
-
DepthwiseConv2D
-
MaxPooling2D
對于 Vitis AI 的使用,必須檢查 Vitis AI 是否支持神經網絡的所有層(請參閱相應的用戶指南)。
PReLU
支持除激活函數之外的所有層。“Parametric ReLU”與函數非常相似Leaky ReLU
(見下圖),只是泄漏項是一個可學習的參數。Vitis AI 支持Leaky ReLU
0.1 的固定泄漏項。
引入Leaky ReLU
激活功能帶來了一些挑戰。
結果
了解網絡在 FPGA 上運行的速度很有趣,但重要的是了解是否由于量化而損失了一些 HPE 性能。
吞吐量性能
-
ICAIPose (256x256, 103 GOps): 8 fps
在B3136
DPU 和時鐘頻率為 的情況下300 MHz
,給出了理論吞吐量940 GOps/s
。
因此,結果在預期范圍內(回想一下:103 GOps
對于一張圖像)。
作為比較,NVIDIA Jetson Xavier NX 比 KV260 更昂貴,并且具有顯著更高的理論吞吐量(21 TOps),達到了 8 fps 的相同吞吐量。
人體姿勢估計性能
該數據集提供了 2000 多張圖像和相應的理想置信度圖,用于測試 HPE 性能。
歸一化置信度圖的均方誤差 (MSE) 是通過對每個像素之間的差異求平方和求和來計算的。下圖顯示了一個示例。左側圖像的均值是給定輸入的 MSE。
我們現在可以比較量化網絡和浮點網絡之間的 MSE。作為附加信息,顯示了具有PReLU
激活功能的原始網絡的 MSE。
所有圖像的 MSE:
-
Float: 0.8109
-
Quantized INT8: 0.9332
-
PReLU: 0.9348
從PRelu
到Leaky ReLU
激活函數的變化甚至提高了網絡性能。量化對 有影響MSE
,但影響很小。量化的網絡執行以及未量化的PReLU
網絡
結論
AMD-Xilinx 的 Vitis AI 框架經過廣泛測試,顯示出其優勢和一些初期問題。即使 FPGA 板更便宜,也可以將目標設備從 GPU 更改為 FPGA,而不會損失顯著的性能。Vitis AI 允許在沒有 HDL 或 HLS 知識的情況下為 FPGA 設計高效的深度神經網絡。
Kria KV260 Vision AI Starter Kit 是從 Vitis AI 開始的絕佳選擇。提供的攝像頭可以在 petalinux 環境中輕松使用。
參考
致謝
特別感謝ICAI和瑞士 VRM提供了經過培訓的 ICAIpose 版本。
感謝微電子和嵌入式系統研究所作為學生項目的一部分支持這一挑戰。
修訂記錄
- 2022 年 3 月 14 日 - 初始版本
- Alveo卡的區塊鏈硬件加速器解決方案 0次下載
- 移動和嵌入式人體姿態估計 3次下載
- 基于視點與姿態估計的視頻監控行人再識別 5次下載
- 基于編解碼殘差的人體姿態估計方法 2次下載
- 基于深度學習的二維人體姿態估計算法 7次下載
- 收藏!姿態估計開源項目匯總資料下載 8次下載
- 基于深度學習的二維人體姿態估計方法 5次下載
- 一種采用深度殘差網絡的頭部姿態估計方法 8次下載
- 利用硬件加速器提高仿真速度時的驗證平臺考慮 3次下載
- MD5算法硬件加速模型 0次下載
- 基于硬件加速系統的PCIe-SRIO橋的邏輯結構 13次下載
- UVM驗證平臺執行硬件加速 14次下載
- 基于硬件加速的實時仿真平臺構建技術 1次下載
- 基于FPGA Nios-Ⅱ的矩陣運算硬件加速器設計 89次下載
- 數字集成電路設計中的硬件加速驗證技術 16次下載
- 使用愛芯派Pro開發板部署人體姿態估計模型 425次閱讀
- 基于PoseDiffusion相機姿態估計方法 733次閱讀
- 利用opencv+openpose實現人體姿態檢測 2082次閱讀
- Meta研究:基于頭顯攝像頭進行姿態估計的方法和優缺點 452次閱讀
- 基于OnePose的無CAD模型的物體姿態估計 1249次閱讀
- 如何確定一個硬件加速應用 388次閱讀
- firefly神經網絡硬件加速簡介 1705次閱讀
- LSTM的硬件加速方式 2801次閱讀
- 基于增強通道和空間信息的人體姿態估計網絡 3774次閱讀
- FPGA的CNN實現硬件加速需要考慮這些因素 3606次閱讀
- 一種基于六自由度IMU和動力學的車身姿態和側向速度估計方法 8996次閱讀
- 憶芯科技利用Veloce 硬件加速仿真平臺進行高速企業級固態硬盤存儲設計 1620次閱讀
- Veloce仿真環境下的SoC端到端硬件加速器功能驗證 3160次閱讀
- FAIR和INRIA的合作提出人體姿勢估計新模型,適用于人體3D表面構建 5516次閱讀
- 用于軟件驗證的硬件加速仿真之一:物理和虛擬探針 1844次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多