论文复现--lightweight-human-pose-estimation-3d-demo.pytorch(单视角多人3D实时动作捕捉DEMO)

分类:动作捕捉
github地址:https://github.com/Daniil-Osokin/lightweight-human-pose-estimation-3d-demo.pytorch
所需环境:
Windows10,conda 4.13.0;

目录

  • conda环境配置
  • 安装Pytorch全家桶
  • 安装TensorRT(可选)
  • 安装torch2trt(可选)
  • 模型转换为TensorRT兼容格式(可选)
  • 运行指令
  • 运行结果
  • conda list
    • 以下是执行setup失败后的尝试 实际上不需要编译setup也可执行demo 只是实时性不好(但是我需要的是算法 读者不用看以下部分 这是我自己的记录)
      • Opencv4.8.0配置环境变量
      • Cmake3.27配置环境变量
  • 参考链接

conda环境配置

conda create -n lwmhpe3d python=3.8
conda activate lwmhpe3d
D:
cd D:\WLm_Project\MotionCatch\lwmhpe3d

安装Pytorch全家桶

pip install "torch-1.13.1+cu116-cp38-cp38-win_amd64.whl"# 离线安装 需要预先下载
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
cd lwmhpe3d
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

安装TensorRT(可选)

python -m pip install nvidia-pyindex
# nvidia官网下载TensorRT-8.6.1.6.Windows10.x86_64.cuda-11.8.zip:https://developer.nvidia.com/nvidia-tensorrt-8x-download
# 下载完成后 移动并解压缩
cd D:\WLm_Project\MotionCatch\lwmhpe3d\TensorRT-8.6.1.6.Windows10.x86_64.cuda-11.8\TensorRT-8.6.1.6\python
# 因为是python3.8环境 要安装这个
pip install tensorrt-8.6.1-cp38-none-win_amd64.whl

在这里插入图片描述
在这里插入图片描述
安装成功
在这里插入图片描述

将这tensorRT的三个文件夹复制到CUDA下( 记得复制之前CUDA的原始三个文件夹做好副本 注意路径)
在这里插入图片描述
在这里插入图片描述

安装torch2trt(可选)

cd D:\WLm_Project\MotionCatch\lwmhpe3d
git clone https://github.com/NVIDIA-AI-IOT/torch2trt
cd torch2trt
pip3 install packaging -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -e .

在这里插入图片描述

模型转换为TensorRT兼容格式(可选)

# 转换human-pose-estimation-3d.pth为human-pose-estimation-3d-trt.pth
python scripts/convert_to_trt.py --checkpoint-path human-pose-estimation-3d.pth

很奇怪 我的convert_to_trt.py没法找到上级目录中models与modules的文件
在这里插入图片描述

简单粗暴的解决办法是: 把lwmhpe3d\lwmhpe3d\models和lwmhpe3d\lwmhpe3d\modules的所有文件都复制到lwmhpe3d\lwmhpe3d\scripts下

并修改convert_to_trt.py ; with_mobilenet.py脚本 使python脚本变为同级文件夹寻址:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运行指令

# 构建pose_extractor模块:
cd D:\WLm_Project\MotionCatch\lwmhpe3d\lwmhpe3d
# python setup.py build_ext
# 将构建文件夹添加到PYTHONPATH:
# export PYTHONPATH=pose_extractor/build/:$PYTHONPATH# 安装完依赖项后可以直接运行 无需编译
# 使用GPU
python demo.py --model human-pose-estimation-3d.pth --video 0 --device GPU# 使用tensorRT(可选)
python demo.py --model human-pose-estimation-3d-trt.pth --use-tensorrt --video 0

使用tensorRT运行指令报错:

[09/06/2023-09:32:05] [TRT] [E] 3: [executionContext.cpp::nvinfer1::rt::ExecutionContext::validateInputBindings::2083] Error Code 3: API Usage Error (Parameter check failed at: executionContext.cpp::nvinfer1::rt::ExecutionContext::validateInputBindings::2083, condition: profileMinDims.d[i] <= dimensions.d[i]. Supplied binding dimension [1,3,256,336] for bindings[0] exceed min ~ max range at index 3, maximum dimension in profile is 448, minimum dimension in profile is 448, but supplied dimension is 336.

在这里插入图片描述

这个问题 作者在github上有说明

TensorRT does not support dynamic network input size reshape. Make sure you have set proper network input height, width with --height and --width options during conversion (if not, there will be no detections). Default values work for a usual video with 16:9 aspect ratio (1280x720, 1920x1080). You can check the network input size with print(scaled_img.shape) in the demo.py
TensorRT 不支持动态网络输入大小重塑。确保您在转换过程中设置了正确的网络输入高度、宽度和–height选项–width(如果没有,将不会进行检测)。默认值适用于宽高比为 16:9 的普通视频(1280x720、1920x1080)。print(scaled_img.shape)您可以在 demo.py 中检查网络输入大小

可以在demo.py中加入打印语句
在这里插入图片描述
运行GPU推理时果然显示
在这里插入图片描述

所以需要手动更改这个值 在convert_to_trt.py的位置如下:将448改成336即可

在这里插入图片描述
再次运行使用TensorRT推理指令即可成功!

运行结果

esc退出

GPU运行
在这里插入图片描述
TensorRT加速

在这里插入图片描述

TensorRT的FPS提升了一倍 接近60帧 然而GPU只有30帧 虽然视觉上差不了太多

conda list

# packages in environment at D:\Anaconda3\envs\lwmhpe3d:
#
# Name                    Version                   Build  Channel
ca-certificates           2023.05.30           haa95532_0
certifi                   2023.7.22                pypi_0    pypi
charset-normalizer        3.2.0                    pypi_0    pypi
idna                      3.4                      pypi_0    pypi
libffi                    3.4.4                hd77b12b_0
numpy                     1.24.4                   pypi_0    pypi
nvidia-pyindex            1.0.9                    pypi_0    pypi
onnx                      1.14.1                   pypi_0    pypi
opencv-python             4.8.0.76                 pypi_0    pypi
openssl                   3.0.10               h2bbff1b_2
packaging                 23.1                     pypi_0    pypi
pillow                    10.0.0                   pypi_0    pypi
pip                       23.2.1           py38haa95532_0
protobuf                  4.24.2                   pypi_0    pypi
python                    3.8.17               h1aa4202_0
requests                  2.31.0                   pypi_0    pypi
setuptools                68.0.0           py38haa95532_0
sqlite                    3.41.2               h2bbff1b_0
tensorrt                  8.6.1                    pypi_0    pypi
torch                     1.13.1+cu116             pypi_0    pypi
torch2trt                 0.4.0                     dev_0    <develop>
torchaudio                0.13.1+cu116             pypi_0    pypi
torchvision               0.14.1+cu116             pypi_0    pypi
typing-extensions         4.7.1                    pypi_0    pypi
urllib3                   2.0.4                    pypi_0    pypi
vc                        14.2                 h21ff451_1
vs2015_runtime            14.27.29016          h5e58377_2
wheel                     0.38.4           py38haa95532_0

以下是执行setup失败后的尝试 实际上不需要编译setup也可执行demo 只是实时性不好(但是我需要的是算法 读者不用看以下部分 这是我自己的记录)

官网要求:

Python 3.5(或更高版本 )–>环境是3.8
CMake 3.10(或更高版本 )–>环境是3.27
C++ 编译器(g++ 或 MSVC ) -->环境是C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
OpenCV 4.0(或更高版本)–>环境是4.8.0

Opencv4.8.0配置环境变量

需要提前编译好并配置环境变量

https://github.com/opencv/opencv

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
无法解决的问题:
在这里插入图片描述

Cmake3.27配置环境变量

直接下载压缩包 将bin下的exe存在的路径按下图添加到path环境变量

https://cmake.org

在这里插入图片描述

cmake --version# 需要先配置环境变量

在这里插入图片描述

参考链接

1.windows下cmake的安装与环境变量配置教程
2.Windows下Visual Studio 编译OpenCV详细教程(win10+vs2017+opencv4.5.2)(OpenCV最新版)(特别适合无法科学上网的童鞋们)
3.OpenCV 文件下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/77320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++设计模式_05_Observer 观察者模式

接上篇&#xff0c;本篇将会介绍C设计模式中的Observer 观察者模式&#xff0c;和前2篇模板方法Template Method及Strategy 策略模式一样&#xff0c;仍属于“组件协作”模式。Observer 在某些领域也叫做 Event 。 文章目录 1. 动机&#xff08; Motivation&#xff09;2. 代码…

红帽 RHEL 源码限制成契机,AlmaLinux 获捐更可“做自己”

红帽在两个月前发布公告声称&#xff0c;将限制对 Red Hat Enterprise Linux (RHEL) 源代码的访问&#xff0c;早前曾报道&#xff0c;此举导致 AlmaLinux 、Rocky Linux 等 Linux 发行版未来发展严重受阻。 对于这一决策&#xff0c;AlmaLinux OS 基金会主席 Benny Vasquez 此…

few shot目标检测survey paper笔记(整体概念)

paper: Few-Shot Object Detection: A Comprehensive Survey (CVPR2021) 深度学习提高了目标检测的精度&#xff0c;但是它需要大量的训练数据。 对于训练数据集中没有见过的目标&#xff0c;是检测不了的&#xff0c;所以就限制了在实际中的应用。 如果想让模型去识别新的目标…

element-table 行的拖拽更改顺序(无需下载sortableJs

样例展示&#xff1a;vueelement 通过阅读element文档我们发现element并不提供拖拽相关的api 本博客通过element提供的行类名 注册函数 实现行与行的拖拽 1.设置el-table 的行样式类名 这里是用的是 function <el-table:data"outputData":row-class-name&qu…

H.265 视频在浏览器中的播放问题探究

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

2023/9/12 -- C++/QT

作业 实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c; 公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性&#xf…

X86_64函数调用汇编程序分(2)

X86_64函数调用汇编程序分&#xff08;2&#xff09; 1 X86_64寄存器使用标准2 leaveq和retq指令2.1 leaveq2.2 retq 3 执行leaveq和retq之后栈的结构3.1 执行leaveq之后栈的结构3.1.1 test_fun_b函数执行leaveq之前的栈结构示意图3.1.2 test_fun_b函数执行leaveq之后的栈结构示…

Charles的Map Remote功能

1、charles的Map Remote功能&#xff08;指定的网络请求重定向到另一个网址&#xff09;&#xff0c;说白了就是你本来要请求A接口拿数据&#xff0c;重定向后&#xff0c;你实际请求的是B接口&#xff0c;拿到的是B接口返回的数据。 入口Tools->Map Remote 本次测试过程中…

第三节:在WORD为应用主窗口下关闭EXCEL的操作(2)

【分享成果&#xff0c;随喜正能量】凡事好坏&#xff0c;多半自作自受&#xff0c;既不是神为我们安排&#xff0c;也不是天意偏私袒护。业力之前&#xff0c;机会均等&#xff0c;毫无特殊例外&#xff1b;好坏与否&#xff0c;端看自己是否能应机把握&#xff0c;随缘得度。…

Trinitycore学习之在vscode查看远端服务器上源码配置

1&#xff1a;安装vscode&#xff0c;去官网下载&#xff0c;这里下载windows版本安装包 .zip https://code.visualstudio.com/Download 2&#xff1a;安装后&#xff0c;安装扩展chinese&#xff0c;使用中文设置&#xff0c;需要重启vscode。 3&#xff1a;安装ssh相关插件…

Springmvc之JSR303和拦截器

JSR303拦截器 1.JSR303 什么是JSR303 JSR是Java Specification Requests的缩写&#xff0c;意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR&#xff0c;以向Java平台增添新的API和服务。JSR已成为Java界的…

06目标检测-One-stage的目标检测算法

一、 One-stage目标检测算法 使用CNN卷积特征直接回归物体的类别概率和位置坐标值&#xff08;无region proposal&#xff09;准确度低&#xff0c;速度相对two-stage快 二、One-stage基本流程 输入图片------对图片进行深度特征的提取&#xff08;主干神经网络&#…

苹果数据恢复软件:Omni Recover Mac

Omni Recover是一款十分实用的Mac数据恢复软件&#xff0c;为用户提供了简单、安全、快速和高效的数据恢复服务。如果您遇到了Mac或iOS设备中的数据丢失和误删情况&#xff0c;不要着急&#xff0c;不妨尝试一下Omni Recover&#xff0c;相信它一定会给您带来惊喜。 首先&…

CSS选择器

基本选择器 通配选择器 可以选中所有的HTML元素&#xff0c;清除样式时可以使用 * {color: orange;font-size: 40px; }元素选择器 为元素统一设置样式&#xff0c;故无法实现差异化设置 /* 为所有h1元素添加样式 */ h1 {color: red;font-size: 60px; }/* 为所有p元素添加样…

【C++ • STL • 力扣】详解string相关OJ

文章目录 1、仅仅翻转字母2、字符串中的第一个唯一字符3、字符串里最后一个单词的长度4、验证一个字符串是否是回文5、字符串相加总结 ヾ(๑╹◡╹)&#xff89;" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)&#xff89;" 1、仅仅翻转字母 力扣链接 代码1展示&…

ENVI_IDL: 基础语法详解

01 题目 02 代码说明 题目本身很简单&#xff0c;但是我自己加了一些东西进去增加难度。主要包括print函数的封装、格式化字符串&#xff0c;但是不影响代码的阅读。&#xff08;注&#xff1a;对于没有语言基础的人而言相对阅读困难&#xff0c;但是由于IDL是解释型语言&…

antd react 文件上传只允许上传一个文件且上传后隐藏上传按钮

antd react 文件上传只允许上传一个文件且上传后隐藏上传按钮 效果图代码解析 效果图 代码解析 import { Form, Upload, message } from antd; import { PlusOutlined } from ant-design/icons; import { useState, useEffect } from react; import { BASE_URL } from /utils/…

网络爬虫-----初识爬虫

目录 1. 什么是爬虫&#xff1f; 1.1 初识网络爬虫 1.1.1 百度新闻案例说明 1.1.2 网站排名&#xff08;访问权重pv&#xff09; 2. 爬虫的领域&#xff08;为什么学习爬虫 ?&#xff09; 2.1 数据的来源 2.2 爬虫等于黑客吗&#xff1f; 2.3 大数据和爬虫又有啥关系&…

stm32---基本定时器(TIM6,TIM7)

STM32F1的定时器非常多&#xff0c;由两个基本定时器&#xff08;TIM6&#xff0c;TIM7&#xff09;、4个通用定时器&#xff08;TIM2-TIM5&#xff09;和两个高级定时器&#xff08;TIM&#xff11;&#xff0c;TIM&#xff18;&#xff09;组成。基本定时器的功能最为简单&am…

〔022〕Stable Diffusion 之 生成视频 篇

✨ 目录 &#x1f388; 视频转换 / mov2mov&#x1f388; 视频转换前奏准备&#x1f388; 视频转换 mov2mov 使用&#x1f388; 视频转换 mov2mov 效果预览&#x1f388; 视频无限缩放 / Infinite Zoom&#x1f388; 视频无限缩放 Infinite Zoom 使用 &#x1f388; 视频转换 /…