MMPose安装记录

2023-10-27

参考:GitHub - open-mmlab/mmpose: OpenMMLab Pose Estimation Toolbox and Benchmark.

一、依赖环境

        MMPose 适用于 Linux、Windows 和 macOS。它需要 Python 3.7+、CUDA 9.2+ 和 PyTorch 1.6+。我的环境:

Windows 11

Python 3.9

CUDA 11.6

PyTorch 1.13

        考虑到我的base环境已经配置好了cuda,因此创建一个clone了base环境的虚拟环境。

1、创建一个 conda 虚拟环境并激活它。

conda create --name mmpose--clone base
conda activate mmpose

2、使用MIM安装MMEngine和MMCV

pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"

3、安装MMdet

        MMPose 中的一些推理示例脚本需要使用MMDetection(mmdet) 检测人体。如果想运行这些示例脚本,可以通过运行以下命令安装 mmdet:(建议安装)

mim install "mmdet>=3.0.0"

二、从源码安装MMPose

        官方文档:如果基于 MMPose 框架开发自己的任务,需要添加新的功能,比如新的模型或是数据集,或者使用我们提供的各种工具。如果只是希望调用 MMPose 的接口,或者在自己的项目中导入 MMPose 中的模块。直接使用 mim 安装即可。即按照以下命令安装即可。

mim install "mmpose>=1.0.0"

        从源码按如下方式安装 mmpose:

cd E:\pythonproject\
git clone https://github.com/open-mmlab/mmpose.git
cd mmpose
pip install -r requirements.txt
pip install -v -e .
# "-v" 表示输出更多安装相关的信息
# "-e" 表示以可编辑形式安装,这样可以在不重新安装的情况下,让本地修改直接生效

        我的MMPose路径如下: 

         注:对于安装慢的问题建议科学上网。

三、验证安装

1、验证安装包都是否可用

# 检查 Pytorch
import torch, torchvision
print('Pytorch 版本', torch.__version__)
print('torchvision版本', torchvision.__version__)
print('CUDA 是否可用',torch.cuda.is_available())

# 检查 mmcv
from mmcv.ops import get_compiling_cuda_version, get_compiler_version
print('CUDA版本', get_compiling_cuda_version())
print('编译器版本', get_compiler_version())

# 检查 mmpose
import mmpose
print('mmpose版本', mmpose.__version__)
Pytorch 版本 1.13.1+cu116
torchvision版本 0.14.1+cu116
CUDA 是否可用 True
CUDA版本 11.6
编译器版本 MSVC 192829924
mmpose版本 1.0.0

2、demo测试是否可用

(1)需要下载配置文件和模型权重文件

mim download mmpose --config td-hm_hrnet-w48_8xb32-210e_coco-256x192  --dest .

        完成之后,您会在当前目录下找到这两个文件:td-hm_hrnet-w48_8xb32-210e_coco-256x192.py 和 td-hm_hrnet-w48_8xb32-210e_coco-256x192-0e67c616_20220913.pth, 分别是配置文件和对应的模型权重文件。

  (2)验证推理示例

python demo/image_demo.py \
    tests/data/coco/000000000785.jpg \
    td-hm_hrnet-w48_8xb32-210e_coco-256x192.py \
    hrnet_w48_coco_256x192-b9e0b3ab_20200708.pth \
    --out-file vis_results.jpg \
    --draw-heatmap

        运行上述命令后代码会将预测的关键点和热图绘制在图像中的人体上,并保存到当前文件夹的 vis_results.jpg中

# 测试手部关键点
python demo/topdown_demo_with_mmdet.py \
    demo/mmdetection_cfg/cascade_rcnn_x101_64x4d_fpn_1class.py  \
    https://download.openmmlab.com/mmpose/mmdet_pretrained/cascade_rcnn_x101_64x4d_fpn_20e_onehand10k-dac19597_20201030.pth \
    configs/hand_2d_keypoint/topdown_heatmap/onehand10k/td-hm_hrnetv2-w18_8xb64-210e_onehand10k-256x256.py \
    https://download.openmmlab.com/mmpose/hand/hrnetv2/hrnetv2_w18_onehand10k_256x256-30bc9c6b_20210330.pth \
    --input tests/data/onehand10k/1402.jpg \
    --output-root vis_results \
    --draw-heatmap

四、问题记录

1、ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject

        更新numpy到最新版本。

pip install --upgrade numpy

2、cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1255: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'

        可能opencv没配好,但是不影响MMPose的使用,在跑demo的时候把--show去掉就好了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MMPose安装记录 的相关文章

随机推荐

  • 数据结构--最短路径问题(Dijkstra算法)、拓扑排序

    目录 回顾 最短路径Dijkstra算法 DAG描述表达式 DAG描述表达式的解题步骤 案例1 案例2 拓扑排序 逆拓扑排序 回顾 由path数组可以知道 先找path为 1 对应的序是号2 然后找到path为2 path2对应的序号是6
  • 安卓flutter混合开发流程和一系列问题(适合新学)

    安卓flutter混合开发流程 首先 我想说 我也是跟随大步伐开始接触安卓和flutter的混合开发 才学习的 真难啊 花费了一天多时间才配置好 还是我太笨了 惭愧 好了下面开始主题吧 首先按照流程配置安卓和lfutter module 前
  • 如何在Vue模板中渲染HTML标签?

    当你在Vue模板中需要渲染HTML标签时 你可以使用Vue的内置指令v html 这个指令可以让父组件将数据作为HTML解析并渲染到子组件中 听起来很高级 但是我会用幽默的语言和简单的例子来解释这个概念 首先 让我们来看一个简单的例子 假设
  • 【题解】百度2020校招Web前端工程师笔试卷(第二批):单选题、多选题

    题目来源 牛客网公司真题 免费模拟题库 企业面试 笔试真题 nowcoder com 若有错误请指正 单选题 1 FIFO为先进先出的顺序来完成页面的访问 而如果在采用先进先出页面淘汰算法的系统中 一进程在内存占3块 开始为空 页面访问序列
  • 数据库笔记--SQL部分

    3 SQL语言 3 3数据定义DDL 模式定义与删除 定义 REAT SCHEMA lt 模式名 gt AUTHORIZATION lt 用户名 gt 若未显示的给出模式名 默认为用户名 拓展 创建模式同时可以接受创建基本表 视图 授权 R
  • ADC读取数据时要等待转换结束(LTC2440使用AD BUSY引脚)

    AD Busy引脚的使用 数据手册上关于BUSY引脚的介绍 void ltc2440 read void int i 0 SPI1 CS Low 这里应该是SPI1 CS Low一次就可以了 SPI1 CS High 再次SPI1 CS H
  • 开发智能应用的新范式:大数据、AI和云原生如何构建智能软件

    文章目录 1 利用大数据实现智能洞察 2 集成人工智能和机器学习 3 云原生架构的弹性和灵活性 4 实现实时处理和响应 5 数据安全和隐私保护 6 可解释性和透明性 7 持续创新和迭代 8 数据伦理和合规性 个人主页 程序员 小侯 CSDN
  • Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apach

    1 启动tomcat报错的原因 可能是tomcat版本和JDK版本的兼容问题 2 下载其他版本的tomcat试试 我出错的时候是jdk1 7和tomcat9不兼容 将tomcat换成7版本的就可以啦
  • C语言 - 打印整数二进制的奇数位和偶数位

    define CRT SECURE NO WARNINGS include
  • 常用代码国家标准 目录列表

    编号 类别 中文名称 010001 GB T10114 1988 县以下行政区划代码编制规则 010002 GB T10301 1988 出国目的代码 010003 GB 11714 1997 全国组织机构代码编制规则 010004 GB
  • BTY-DNS AMA回顾:致力于创建Web3领域中的去中心化身份(DID)

    传统域名系统 DNS 是一个分层的分散信息存储 用于将用户在网络浏览器中输入可读名称 例如www baidu com 解析为IP地址 来访问互联网上的计算机 传统域名系统存在一些例如过于集中化管理 效率并不高等局限性问题 而去中心化域名正好
  • docker 配置私有仓库

    文章目录 修改配置文件 验证 修改配置文件 vim etc docker daemon json 输入内容 insecure registries 192 168 1 1 8081 添加 docker信任私有仓库地址 重启让配置生效 sys
  • Swagger

    目录 一 前言 二 Swagger介绍 三 使用 1 创建boot项目后导包springfox swagger2和springfox swagger ui 2 配置SwaggerConfig 3 注解 4 浏览器输入此连接在线查看 http
  • GAMES101-现代计算机图形学学习笔记(02)

    GAMES101 现代计算机图形学学习笔记 02 Lecture 02 Review of Linear Algebra GAMES101 现代计算机图形学学习笔记 02 向量 向量定义 向量运算 向量单位化 向量加法的两种表示形式 向量乘
  • 前端post请求方式传参参数各种格式详解,form-data,application/x-www-form-urlencoded,application/json,text/xml

    前端传参参数各种格式详解 一 form data 二 application x www form urlencoded 三 application json 四 text xml 总结 一 form data enctype 等于 mul
  • 刷脸支付互联网巨头纷纷从线上走到线下

    支付的发展 跟零售业的活跃度息息相关 伴随近几年移动支付井喷的是电商 外卖 O2O 共享经济的崛起 而随着互联网巨头纷纷从线上走到线下 开始一轮又一轮的新零售布局 新一轮崛起大概率来自于线下的消费场景 蜻蜓是支付宝在2018年年底推出的一款
  • python爬虫之requests库post请求

    作为一名数据获取者 爬取网站数据的技能是必不可少的 而其中最基础 最常用的技能就是使用 requests 库进行网页数据爬取 在 requests 库中 get 和 post 请求是最常见的两个请求方式 今天我们来详细讲解 requests
  • 直流耦合、交流耦合区分

    在示波器或者数据采集的时候 经常会遇到交流耦合与直流耦合的概念 简单来说 我们采集到的信号总不会是理想波形 例如 在采集交流信号的时候 可能会混入直流分量 而在采集直流信号的时候 也有可能混入交流分量 1 交流耦合 是指在信号与采集点之间加
  • Python 函数 pass

    函数是仅在调用时运行的代码块 可以将数据 称为参数 传递给函数 函数可以返回数据 函数是组织好的 可重复使用的 用来实现单一 或相关联功能的代码段 函数能提高应用的模块性 和代码的重复利用率 已经知道Python提供了许多内建函数 比如pr
  • MMPose安装记录

    参考 GitHub open mmlab mmpose OpenMMLab Pose Estimation Toolbox and Benchmark 一 依赖环境 MMPose 适用于 Linux Windows 和 macOS 它需要