资料介绍
描述
抽象的
简介:最新的深度学习模型与最先进的硬件相结合,可以实时执行人体姿态估计 (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 运行时引擎及其PythonAPI通过 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 BasicAccessory 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
该命令的输出类似于:
eth0Link encap:EthernetHWaddr00:0a:35:00:22:01inet addr:152.96.212.163Bcast:152.96.212.255Mask:255.255.255inet6addr: fe80::20a:35ff:fe00:2201/64Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500Metric:1RX packets:67errors:0dropped:0overruns:0frame:0TX packets:51errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RX bytes:9478(9.2KiB) TX bytes:5806(5.6KiB)Interrupt:44
在这种情况下,IP 地址是152.96.212.163
.
使用此地址从主机 PC(连接到与 KV260 相同的网络)通过网络连接ssh
到 KV260。
sshpetalinux@
要运行所有 Vitis AI 示例,必须在 KV260 上进行一些进一步的安装。确保设备已连接到互联网。
X11-转发
sudodnf install packagegroup-petalinux-x11
设置显示环境
exportDISPLAY=:0.0
葡萄籽油
sudo dnfinstallpackagegroup-petalinux-vitisai
开放式CV
sudo dnfinstallpackagegroup-petalinux-opencv
柏油
sudo dnfinstallxz
Vitis AI 运行时
sudowget https://www.xilinx.com/bin/public/openDownload?filename=vitis-ai-runtime-1.3.0.tar.gzsudo tar -xzvf openDownload\?filename\=vitis-ai-runtime-1.3.0.tar.gzcd 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.confsudo 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 应用程序(每次启动后)。
sudoxmutil unloadappsudo xmutil loadapp kv260-smartcam
加载 KV260-smartcam 应用程序后,可以使用以下 GStreamer 命令使用 X11-forwarding 测试相机:
gst-launch-1.0mediasrcbin media-device=/dev/media0v4l2src0::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 mediasrcbinmedia-device=/dev/media0 v4l2src0::io-mode=dmabuf v4l2src0::stride-align=256 ! video/x-raw,width=1920,height=1200,format=NV12,framerate=30/1 ! kmssinkdriver-name=xlnxplane-id=39sync=falsefullscreen-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.xztar -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 环境中轻松使用。
参考
- KV260 智能摄像机
- Vitis AI 用户指南
- Vitis AI GitHub
- 马里奥·伯杰龙 GitHub
- 英伟达Jetson Xavier NX
致谢
特别感谢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次下载 |免费
评论