论文复现--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.rhkb.cn/news/130851.html

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

相关文章

嘉泰实业:真实低门槛,安全有保障

在互联网金融大行其道的当下&#xff0c;无论用户是多么的青睐、喜爱这种便捷的理财方式&#xff0c;也一定得把资金安全放在心上。要投就投那些实力背景雄厚&#xff0c;诚信经营的平台&#xff0c;可以选择投资用户基数庞大的理财老品牌&#xff0c;也可以选择发展势头迅猛的…

在 Arweave 中轻松管理文件:借助 4EVERLAND 完成 Web3 前端Path Manifests的终极指南

为什么使用Path Manifests&#xff1f; 当在 IPFS 上发布 NFT 时&#xff0c;图片和元数据会被上传到 IPFS 网络以获得一个根 CID&#xff0c;其形式如下&#xff1a; ipfs://bafybeic36ik6cngu37xbzmpytuvyo7z3lyeen44clkkxq5d263zj4nkzr4 通过使用这个根 CID&#xff0c;每…

【性能测试】Jmeter插件之ServerAgent服务器性能监控工具的安装和使用

文章目录 安装插件安装ServerAgent 安装插件 1、在Jmeter官网&#xff1a;https://jmeter-plugins.org/wiki/PluginsManager/ 下载插件管理器Plugins-manager.jar 2、将JAR包放入到lib\ext目录下 3、重启Jmeter&#xff0c;可以在选项下看到Plugins Manager选项 4、安装…

大功率光伏应用不同多电平变换器拓扑的比较研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

java面试题记录

一、多线程、高并发&#xff1a; 1.1 什么是死锁&#xff0c;怎样解决死锁问题&#xff1f; 死锁指的是由于两个或两个以上的线程互相持有对方所需要的资源&#xff0c;同时等待获取对方释放自己所需要的资源&#xff0c;导致这些线程处于等待中而无法往下进行的状态。 精简描述…

计算机二级公共基础知识-2023

计算机基础知识&#xff1a; 计算机的发展&#xff1a; 第一台电子计算机eniac 埃尼阿克 1946 第一台存储程序计算机 edvac 艾迪瓦克 根据电子元器件的发展分类 1.电子管 2.晶体管 3.集成电路 4.超大规模继承电路 按照电脑的用途可以分为 专用计算机 专门用于处理…

CAD ObjectArx 二次开发 创建工具栏实现点击button出现抽屉式菜单

实现在CAD中创建工具栏并添加菜单命令&#xff0c;如下图 参照文章&#xff1a; cad—菜单&#xff0c;工具栏&#xff0c;屏幕菜单&#xff0c;增强工具栏 主要实现路径是通过创建一个可停靠窗口&#xff0c;并在其中创建toolbutton并给button点击事件添加命令&#xff0c;将…

简易yum仓库搭建

目录 一、实验准备 二、获取yum仓库、安装httpd 三、客户机配置yum源 四、测试、验证 一、实验准备 准备两台主机&#xff1a; 192.168.115.148 &#xff1a;安装http 、作为yum仓库、挂载默认光盘 192.168.115.148 &#xff1a;作为客户机使用yum仓库、不挂载光盘 二、…

Spring MVC:请求转发与请求重定向

Spring MVC 请求转发请求重定向附 请求转发 转发&#xff08; forward &#xff09;&#xff0c;指服务器接收请求后&#xff0c;从一个资源跳转到另一个资源中。请求转发是一次请求&#xff0c;不会改变浏览器的请求地址。 简单示例&#xff1a; 1.通过 String 类型的返回值…

【爬虫】8.1. 深度使用tesseract-OCR技术识别图形验证码

深度使用tesseract-OCR技术识别图形验证码 文章目录 深度使用tesseract-OCR技术识别图形验证码1. OCR技术2. 准备工作3. 简单作用了解3.1. 验证码图片爬取-screenshot_as_png3.2. 识别测试-image_to_string3.2.1. 正确识别3.2.2. 错误识别3.2.3. 灰度调节 3.3. 识别实战-使用im…

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

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

Jmeter系列进阶-获取图片验证码(4)

安装工具 通过ocrserver工具识别图片验证码&#xff0c;解压后 .exe双击启动即可。 jmeter中使用 &#xff08;1&#xff09;HTTP请求获取验证码 &#xff08;2&#xff09;在获取验证码图片的接口下面添加监听器》保存响应到文件&#xff1b;如下图&#xff1a; &#x…

stu01-IDEA怎么创建一个HTML项目

1.打开idea&#xff0c;依次点击file→new→project 2.点击Java&#xff0c;选择你的jdk&#xff0c;没有下载的点击“Download JDK”/已经下载有JDK但在这里没显示的→点击“Add JDK”&#xff0c;选择你安装的JDK的路径&#xff0c;然后next 3.next 4.起好名字&#xff0c;我…

Python基于Flask的高校舆情分析,舆情监控可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 运行效果图 基于Python的微博大数据舆情分析&#xff0c;舆论情感分析可视化系统 系统介绍 微博舆情分析系…

线性回归方程

性回归是利用数理统计中的回归分析来确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法&#xff0c;是变量间的相关关系中最重要的一部分&#xff0c;主要考查概率与统计知识&#xff0c;考察学生的阅读能力、数据处理能力及运算能力&#xff0c;题目难度中等&…

基于 Flink CDC 高效构建入湖通道

本文整理自阿里云 Flink 数据通道负责人、Flink CDC 开源社区负责人&#xff0c; Apache Flink PMC Member & Committer 徐榜江&#xff08;雪尽&#xff09;&#xff0c;在 Streaming Lakehouse Meetup 的分享。内容主要分为四个部分&#xff1a; Flink CDC 核心技术解析数…

基于springboot+vue的大学社团管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

sqli第一关

1.在下使用火狐访问sqlilabs靶场并使用burpsuite代理火狐。左为sqlilabs第一关&#xff0c;右为burpsuite。 2.输入?id1 and 11 与?id1 and 12试试 可以看出没有变化哈&#xff0c;明显我们输入的语句被过滤了。在?id1后面尝试各种字符&#xff0c;发现单引号 包…

企业架构LNMP学习笔记18

nginx的日志&#xff1a; 日志类型&#xff1a; access.log 访问日志、查看统计用户的访问信息&#xff0c;流量。 error.log 错误日志&#xff0c;错误信息&#xff0c;重写信息。 access.log日志文件内容示例&#xff1a; 192.168.17.1 - - [06/Sep/2023:20:37:39 0800] …

数据库系统概念学习1

第一章 引言 数据库管理系统是由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。这个数据集合通常称为数据库 特定时刻存储在数据库中的信息的集合称为数据库的一个实例&#xff0c;而数据库的总体设计称为数据库模式 数据库结构的基础是数据模型&#xff0c;…