【SOP】使用MMDeploy将MMAction2的模型转换为TensorRT

devtools/2024/11/14 23:07:46/

配置环境

  • MMAction2 1.2.0 配置MMAction2环境
  • CUDA 11.8 安装CUDA,cuDNN,NCCL
  • cuDNN 8.4.1 安装CUDA,cuDNN,NCCL
  • TensorRT GA 8.6 配置TensorRT环境
  • MMDeploy pip install mmdeploy
  • pytorch 2.0.1, torchvision 0.15.2 conda install -y pytorch==2.0.1 torchvision==0.15.2 pytorch-cuda=11.8 -c pytorch -c nvidia
  • numpy 1.26.3
  • pycuda 配置TensorRT环境(只需要推理的时候使用,仅仅转换的话不需要)

执行一个MMAction2的Demo

执行 demo/demo.py ,并使用 tsm 配置文件。

python demo/demo.py "configs/recognition/tsm/tsm_imagenet-pretrained-r50_8xb16-1x1x16-50e_kinetics400-rgb.py" "../mmaction2 Ckpt/tsm_imagenet-pretrained-r50_8xb16-1x1x16-50e_kinetics400-rgb_20220831-042b1748.pth" "demo/demo.mp4" "tools/data/kinetics/label_map_k400.txt"

将Demo转为TensorRT

Clone the mmdeploy repo: git clone -b main https://github.com/open-mmlab/mmdeploy.git

假设当前路径是:

在这里插入图片描述

其中 Ckpt 存放了 .pth 文件,将要生成的 .onnx.engine 也会放在 Ckpt 中。.engine 就是转换好的 TensorRT 文件。

执行下面的指令完成TensorRT转换:

cd mmdeploy
python tools/deploy.py "configs/mmaction/video-recognition/video-recognition_2d_tensorrt_static-224x224.py" "../mmaction2/configs/recognition/tsm/tsm_imagenet-pretrained-r50_8xb16-1x1x16-50e_kinetics400-rgb.py" "../Ckpt/tsm_imagenet-pretrained-r50_8xb16-1x1x16-50e_kinetics400-rgb_20220831-042b1748.pth" "tests/data/arm_wrestling.mp4" --work-dir "../Ckpt/tsm_trt" --device cuda:0 --show --dump-info

会遇到报错:

Error Code 4: Internal Error (input: kMIN dimensions in profile 0 are [1,250,3,224,224] but input has static dimensions [1,160,3,224,224].)

Because the shape in mmdeploy/configs/mmaction/video-recognition/video-recognition_2d_tensorrt_static-224x224.py is default as [1, 250, 3, 224, 224], while the shape of tests/data/arm_wrestling.mp4 is [1, 160, 3, 224, 224]. The shapes should be the same.

修改 [1, 250, 3, 224, 224][1, 160, 3, 224, 224] 后即可。


http://www.ppmy.cn/devtools/111367.html

相关文章

三维坐标变换

(一些困惑梳理记录) “坐标转换”的区分 1、坐标系基底变换 2、目标描述向量变换 总的来说, A属于1、坐标系基底变换, B中所述方法,可用于1、坐标系基底变换,也可用于2、目标描述向量变换&#xff0c…

计算机网络(网络层)

网络层的主要任务是实现网络互联,进而实现数据包在个网络中间的传输。 网络层主要解决的问题 (1)网络层向运输层提供怎样的服务 (2)网络层寻址问题 (3)路由选择问题 网路层提供的两种服务 …

OpenCV结构分析与形状描述符(13)拟合椭圆函数fitEllipseDirect()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆拟合一组2D点。它返回一个内切于该椭圆的旋转矩形。使用了由[91]提出的直接…

【vulhub】thinkphp5 2-rce 5.0.23-rce 5-rce 漏洞复现

2-rec 1.启动环境 cd /.../vulhub/thinkphp/2-rce # cd进入2-rce靶场文件环境下 docker-compose up -d # docker-compose启动靶场 docker ps -a # 查看开启的靶场信息2.访问192.168.146.136:8080网页 3.构造payload http://192.168.146.136:80…

【idea-安装】

JetBrains官⽹ : https://www.jetbrains.com/ 1.下载idea安装包,下载旧一些的版本,避免新版本的不稳定。 下载下来的安装包是exe格式的,直接点击运行。 点击Next 2.选择要下载的位置,点击下一步。 3.选择⽣成快捷⽅式和建⽴⽂件…

零日攻击如何防御

引言 随着网络技术的飞速发展,网络安全问题日益严峻。零日攻击(Zero-day attack)作为网络安全领域的一种高级威胁,对组织和个人的网络安全构成了巨大挑战。本文将深入探讨零日攻击的原理、危害以及有效的防范措施。 零日攻击的原…

使用OpenCV进行模糊检测(拉普拉斯算子)

参考: 使用OpenCV进行模糊检测(拉普拉斯算子) 代码: # import the necessary packages from imutils import paths import argparse import cv2 import osdef variance_of_laplacian(image):# compute the Laplacian of the ima…

【数据库】MySQL-基础篇-多表查询

专栏文章索引:数据库 有问题可私聊:QQ:3375119339 目录 一、多表关系 1.一对多 2.多对多 3.一对一 二、多表查询概述 1.数据准备 2.概述 3.分类 三、内连接 1.隐式内连接 2.显式内连接 3.案例 四、外连接 1.左外连接 2.右外连…