当前位置: 首页 > news >正文

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

【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安装、使用教程

http://www.lryc.cn/news/29289.html

相关文章:

  • IDEA 每次新建工程都要重新配置 Maven 解决方案
  • 【C++修炼之路】25.哈希应用--布隆过滤器
  • linux入门---权限
  • Unity记录2.1-动作-多段跳、蹬墙跳、墙体滑落
  • Spring Boot结合IDEA自带Maven插件快速切换profile | Spring Cloud 10
  • ES 7.7.0 数据迁移
  • 【玩转c++】vector讲解和模拟底层实现
  • 基本类型、包装类型、引用类型、String等作为实参传递后值会不会改变?
  • Tomcat服务器配置以及问题解决方案
  • 【Node.js】HTTP协议、HTTP的请求报文和响应报文
  • CodeForce 455A. Boredom
  • geoserver之BlobStores使用
  • 跨域问题以及Ajax和Axios的区别
  • 现代卷积神经网络(AlexNet)
  • 单向非循环链表
  • Vue2的基本内容(一)
  • 蚁群算法优化最优值
  • Docker镜像的内部机制
  • 每日的时间安排规划
  • 【C++】类和对象——六大默认成员函数
  • 远程debug被arthas watch了的idea
  • Cesium实现的光柱效果
  • 你最爱记混的slice()和splice()
  • 【LeetCode】剑指 Offer(15)
  • 【刷题笔记】之二分查找(搜索插入位置。在排序数组中查找元素的第一个和最后一个位置、x的平方根、有效的完全平方数)
  • 一起Talk Android吧(第五百一十五回:绘制向外扩散的水波纹)
  • 基于粒子群改进的支持向量机SVM的情感分类识别,pso-svm情感分类识别
  • 【python中的列表和元组】
  • 世界顶级五大女程序媛,不仅技术强还都是美女
  • Linux- 系统随你玩之--文件管理-双生姐妹花