【mmdeploy部署系列】使用Tensorrt加速部署mmpose人体姿态库
创始人
2024-05-28 17:22:09
0

【mmdeploy部署系列】使用Tensorrt加速部署mmpose人体姿态库

  • 0.引言
  • 1.安装mmcv
  • 2.使用mmpose
    • (1)安装mmpose
    • (2)运行mmpose
  • 3.使用mmdeploy
    • (1)安装ppl.cv
    • (2)编译安装mmdeploy
    • (3)转换模型
    • (4)运行程序
  • 参考文章

0.引言

mmdeploy 是 OpenMMLab 模型部署工具箱,为各算法库提供统一的部署体验。基于 mmdeploy,开发者可以轻松从训练 repo 生成指定硬件所需 SDK,省去大量适配时间。
今天尝试了一下mmdeploy部署mmpose,配置环境一不小心就陷进去了,建议小白按我的版本来搭配,mmpose和mmdeploy都选用的是最高版本,搭配的mmcv是2.x版本,不加版本号都是耍流氓,被各种默认版本号坑惨了
mmcv-v1.x和v2.x版本区别:

  • 在mmcv-v1.x中,cuda版本的叫mmcv-full,cpu版本的叫mmcv;
  • 在mmcv-v2.x版本中,mmcv-full被重新命名为mmcv,因此cuda版本的直接安装mmcv就可以。

在这里插入图片描述
目前已支持的仓库如下:

  • mmcls
  • mmdet
  • mmseg
  • mmedit
  • mmocr
  • mmpose
  • mmdet3d
  • mmrotate
  • mmaction2

本机环境

  • ubuntu20.04
  • CUDA11.3
  • Tensorrt8.4.3.1
  • pytorch1.12.0
  • torchvision0.13.0

1.安装mmcv

在本文中需要安装mmcv-2.x版本,之前尝试了mmcv-1.x搭配mmpose0.x和mmdeploy0.x版本,结果各种报错,建议还是按照mmcv-2.x版本

pip install openmim
mim install mmcv==2.0.0rc1

2.使用mmpose

(1)安装mmpose

在这里我们安装的mmpose版本号是v1.0.0rc0

git clone https://github.com/open-mmlab/mmpose.git -b v1.0.0rc0
cd mmpose
pip install -r requirements.txt
pip install -v -e .
# 默认会安装numpy最新版本,但是最新版本会出现一大堆问题,建议安装numpy==1.23.1版本
pip install numpy==1.23.1

(2)运行mmpose

我们使用mmpose仓库中的一个自上而下的demo来测试我们的安装是否成功,将里面的内容替换为自己的配置项就可以运行啦~

python demo/image_demo.py \
/home/lzj/Desktop/12.jpg \
configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w48_8xb32-210e_coco-256x192.py \
https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w48_coco_256x192-b9e0b3ab_20200708.pth \
--out-file demo_result.jpg \
--draw-heatmap

运行后的结果如下,它会将人体骨骼点与热力图拼接在一张图上进行输出
在这里插入图片描述

当然也可以使用api的形式进行调用

from mmpose.apis import inference_topdown, init_model
from mmpose.utils import register_all_modulesregister_all_modules()config_file = 'configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w48_8xb32-210e_coco-256x192.py'
checkpoint_file = 'https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w48_coco_256x192-b9e0b3ab_20200708.pth'
model = init_model(config_file, checkpoint_file, device='cuda:0')  # or device='cpu'# 准备一张有人的照片,把这个路径改为自己的图片路径
results = inference_topdown(model, '1.jpg')

3.使用mmdeploy

前期的准备工作具体可以参看官方文档,包括cmake 3.14+/gcc 7+/PyTorch 1.8.0+/opencv 3+
mmdeploy官网文档

(1)安装ppl.cv

ppl.cv是商汤自研的高性能图像处理库,其中包含OpenPPL团队在场景落地中总结出的一组常用图像处理和其他cv操作,可以在深度学习推理的整个pipeline中优化相关的图像预处理部分,与推理引擎ppl.nn组合完成深度学习推理的全流程。mmdeploy依赖于ppl.cv,因此需要先安装ppl.cv库:

git clone https://github.com/openppl-public/ppl.cv.git
cd ppl.cv
export PPLCV_DIR=$(pwd)
git checkout tags/v0.7.0 -b v0.7.0
./build.sh cuda

(2)编译安装mmdeploy

git clone https://github.com/open-mmlab/mmdeploy.git -b v1.0.0rc3
cd mmdeploy/
git submodule update --recursive
mkdir -p build && cd build
# 编译安装,其中-DTENSORRT_DIR和-Dpplcv_DIR需要分别换成自己的tensorrt地址和ppl.cv地址
cmake -DMMDEPLOY_BUILD_SDK=ON \
-DMMDEPLOY_TARGET_DEVICES="cpu;cuda" \
-DMMDEPLOY_TARGET_BACKENDS='trt' \
-DTENSORRT_DIR=/opt/TensorRT-8.4.3.1 \
-Dpplcv_DIR=/home/xx/ppl.cv/cuda-build/install/lib/cmake/ppl \
-DMMDEPLOY_CODEBASES=all \
-DMMDEPLOY_BUILD_SDK_PYTHON_API=ON ..
make -j$(nproc)

(3)转换模型

返回mmdeploy根目录,执行转换模型脚本,注意需要将路径更换为自己主机的路径

python tools/deploy.py \
configs/mmpose/pose-detection_tensorrt_static-256x192.py \
/home/xx/mmpose/configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w48_8xb32-210e_coco-256x192.py \
https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w48_coco_256x192-b9e0b3ab_20200708.pth \
demo/resources/human-pose.jpg \
--work-dir work-dirs/mmpose/topdown/hrnet/trt \
--device cuda --dump-info

转换后的模型在work-dirs/mmpose/topdown/hrnet/trt路径下
在这里插入图片描述

(4)运行程序

在根目录下新建一个trt_demo.py的文件,将下述代码复制进去,注意修改参数

from mmdeploy_python import PoseDetector
import cv2
# 第一个参数是模型转换命令中 --work-dir选项的值
detector = PoseDetector(model_path='work-dirs/mmpose/topdown/hrnet/trt', device_name='cuda', device_id=0)# 需要读取自己路径下的图片
img = cv2.imread('demo/resources/human-pose.jpg')
result = detector(img)
_, point_num, _ = result.shape
points = result[:, :, :2].reshape(point_num, 2)
for [x, y] in points.astype(int):cv2.circle(img, (x, y), 1, (0, 255, 0), 2)cv2.imwrite('output_pose.png', img)

运行程序后,会在根目录下生成一个output_pose.png的图片,会将人的关键点画出来

# 设置环境变量 
export PYTHONPATH=/home/xx/mmdeploy/build/lib/ 
# 执行脚本
python trt_demo.py

在这里插入图片描述

参考文章

1.手把手教你在 ubuntu 上使用 MMDeploy
2.open-mmlab / mmpose安装、使用教程

相关内容

热门资讯

安卓系统怎么关钥匙,轻松掌握钥... 手机里的安卓系统,是不是有时候让你觉得有点儿头疼?比如,当你想关掉手机,却发现钥匙在哪里呢?别急,今...
安卓系统有隐私空间,打造安全私... 你知道吗?在智能手机的世界里,安卓系统可是个超级明星呢!它不仅功能强大,而且现在还悄悄地给你准备了一...
安卓系统设置角标,打造专属通知... 你有没有发现,手机上的安卓系统设置里有个神奇的小功能——角标?这个小东西虽然不起眼,但作用可大了去了...
安卓系统定位信息查询,揭秘移动... 你有没有想过,你的手机里藏着多少秘密?尤其是那个安卓系统,它可是个超级侦探,随时随地都在帮你定位。今...
安卓刷入系统恢复,轻松实现设备... 手机系统崩溃了?别慌!安卓刷入系统恢复大法来啦! 手机,这个我们生活中不可或缺的小伙伴,有时候也会闹...
安卓系统限制无法录音,探索无法... 你有没有遇到过这种情况?手机里明明装了录音软件,却突然发现,哎呀妈呀,竟然无法录音了!这可真是让人头...
怎么降级手机系统安卓,操作指南... 手机系统升级了,新功能层出不穷,但有时候,你可能会觉得,这系统太卡了,想回到那个流畅如丝的年代。别急...
米oa系统是安卓系统吗,深入解... 亲爱的读者,你是否曾好奇过,米OA系统是不是安卓系统的一员?这个问题,就像是一颗好奇的种子,悄悄地在...
手机刷安卓车载系统,手机刷机后... 你有没有发现,现在开车的时候,手机和车载系统之间的互动越来越紧密了呢?想象当你驾驶着爱车,一边享受着...
vivo安卓怎么降系统,viv... 手机用久了,是不是觉得系统越来越卡,运行速度大不如前?别急,今天就来教你怎么给vivo安卓手机降降级...
nova 4刷安卓系统,体验全... 最近手机界可是热闹非凡呢!听说华为nova 4要刷安卓系统了,这可真是让人兴奋不已。你有没有想过,你...
如果当初没有安卓系统,科技世界... 想象如果没有安卓系统,我们的生活会是怎样的呢?是不是觉得有点不可思议?别急,让我们一起穿越时空,探索...
安卓电视装win系统,系统转换... 亲爱的读者们,你是否曾想过,在你的安卓电视上装一个Windows系统,让它瞬间变身成为一台功能强大的...
安卓手机还原系统好处,重拾流畅... 你有没有遇到过安卓手机卡顿、运行缓慢的情况?别急,今天就来给你揭秘一下安卓手机还原系统的那些好处,让...
安卓系统能跑win吗,探索跨平... 你有没有想过,你的安卓手机里能不能装上Windows系统呢?这听起来是不是有点像科幻电影里的情节?别...
安卓车载系统蓝牙设置,畅享智能... 你有没有发现,现在开车的时候,手机和车载系统之间的互动越来越频繁了呢?这不,今天就来给你详细说说安卓...
奥利奥安卓系统,探索新一代智能... 你有没有想过,一块小小的奥利奥饼干竟然能和强大的安卓系统扯上关系?没错,今天就要来聊聊这个跨界组合,...
微信使用安卓系统,功能解析与操... 你有没有发现,现在用微信的人越来越多了呢?尤其是安卓系统的用户,简直就像潮水一样涌来。今天,就让我带...
体验最新原生安卓系统,极致体验... 你有没有想过,手机系统就像是我们生活的调味品,有时候换一种口味,生活都会变得有趣起来呢?最近,我体验...
安卓系统能玩原神,尽享奇幻冒险... 你有没有想过,在安卓系统上也能畅玩《原神》这样的热门游戏呢?没错,就是那个画面精美、角色丰富、玩法多...