MMPose的官方文档对于怎么安装其实写得非常清楚,所以本篇文章其实相当于一个过程记录。
python 3.7.6
pytorch 1.13
cuda 11.6
windows 11
首先安装openmim
pip install -U openmim
安装完成后再使用openmim安装mmcv
mim install mmcv-full
官方给出了两种安装模式:
从源码安装(推荐):如果基于 MMPose 框架开发自己的任务,需要添加新的功能,比如新的模型或是数据集,或者使用我们提供的各种工具。
作为 Python 包安装:只是希望调用 MMPose 的接口,或者在自己的项目中导入 MMPose 中的模块。
1)从源码安装需要我们从github上下载源代码:
git clone https://github.com/open-mmlab/mmpose.git
cd mmpose
pip install -r requirements.txt
pip install -v -e .
# "-v" 表示输出更多安装相关的信息
# "-e" 表示以可编辑形式安装,这样可以在不重新安装的情况下,让本地修改直接生效
2)作为 Python 包安装
直接使用pip指令即可
pip install mmpose
因为听说Lite-HRNet虽然浮点运算很低,但是实际运行起来并没有比HRNet快多少,所以这里运行了一下两个网络,并比较了一下推理时间。
首先需要下载两个模型的权重,下面给出两个网络的信息,这里分别下载HRNetW32_256x192(108M)的权重和LiteHRNet-18_256x192(4.82M)的权重
Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log |
---|---|---|---|---|---|---|---|---|
pose_hrnet_w32 | 256x192 | 0.746 | 0.904 | 0.819 | 0.799 | 0.942 | ckpt | log |
pose_hrnet_w32 | 384x288 | 0.760 | 0.906 | 0.829 | 0.810 | 0.943 | ckpt | log |
pose_hrnet_w48 | 256x192 | 0.756 | 0.907 | 0.825 | 0.806 | 0.942 | ckpt | log |
pose_hrnet_w48 | 384x288 | 0.767 | 0.910 | 0.831 | 0.816 | 0.946 | ckpt | log |
Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log |
---|---|---|---|---|---|---|---|---|
LiteHRNet-18 | 256x192 | 0.643 | 0.868 | 0.720 | 0.706 | 0.912 | ckpt | log |
LiteHRNet-18 | 384x288 | 0.677 | 0.878 | 0.746 | 0.735 | 0.920 | ckpt | log |
LiteHRNet-30 | 256x192 | 0.675 | 0.881 | 0.754 | 0.736 | 0.924 | ckpt | log |
LiteHRNet-30 | 384x288 | 0.700 | 0.884 | 0.776 | 0.758 | 0.928 | ckpt | log |
这里选择了一个42秒共1266帧的视频做测试,在RTX 2080S上,两个模型的表现如下(上为lite-hrnet):
load checkpoint from local path: hrnet_w32_coco_256x192-c78dce93_20200708.pth
Running inference...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ] 1265/1266, 5.7 task/s, elapsed: 221s, ETA: 0s
load checkpoint from local path: litehrnet18_coco_256x192-6bace359_20211230.pth
Running inference...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ] 1265/1266, 5.2 task/s, elapsed: 242s, ETA: 0s
可以发现lite-hrnet的推理速度(242s)确实不如hrnet(221s),考虑到lite-hrnet可能在cpu上表现会更好,下面在cpu上进行了测试(i5-12400)。为了节约时间,这里将上一个视频剪短到了3s,共89帧。模型表现如下:
load checkpoint from local path: hrnet_w32_coco_256x192-c78dce93_20200708.pth
Running inference...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 89/89, 0.3 task/s, elapsed: 330s, ETA: 0s
load checkpoint from local path: litehrnet18_coco_256x192-6bace359_20211230.pth
Running inference...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 89/89, 0.3 task/s, elapsed: 259s, ETA: 0s
可以看到lite-hrnets)确实要比hrnets)推理速度要快。但是也并没有像论文里浮点运算的差距,这很难不让人对论文的产生怀疑。