参考: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去掉就好了。