Lite-HRNet是开高效姿态估计算法,只有20多M参数,放到移动设备上很方便。
Lite-HRNet
mmpose是商汤开源的用于姿态估计的库,对很多姿态估计算法都进行过了封装,且提供了相应的模型参数文件,使用起来十分方便。2018年出了一篇HRNet用来人体关键点估计的论文,刷新了COCO数据集和其它数据集的关键点检测分数。不过原本的HRNet使用pytorch进行编程,代码量还是不少,看的也是云里雾里,最近我校自动化学院出了一篇Lite-HRNet论文,发表在CVPR2021上,且模型使用商汤的mmpose和mmcv来进行编写,模型结构代码量只有900多行,结合论文很容易理解。
Lite-HRNet使用shuffleNet module和conditional channel weighting来优化1*1卷积计算量,使得模型参数和计算量大大减少,整个模型只有20多M,效果用起来也非常好。不过目前商汤官方mmpose还没把Lite-HRNet加入其中,后续估计在新版中加入。由于Lite-HRNet的代码完全遵循商汤的mmpose规范来写,因此自己能够很轻松的将Lite-HRNet注册到mmpose中进行调用。
原始的hrnet如下
litehrnet如下
其中conditional channel weighting内部结构如下图(b),其中图(a)是标准的shuffle net模块:
Lite-HRNet代码注释版
1 | import torch |
将Lite-HRNet模块注册到mmpose
1.按照mmpose官方教程https://github.com/open-mmlab/mmpose/blob/master/docs/install.md先安装好相关的库,但是可能使用opencv会报错,需要先安装下opencv-contrib-python
1 | pip install opencv-contrib-python |
安装好mmpose所依赖的库之后,先不要运行python setup.py develop
,因为需要先把Lite-HRNet的代码(上面的代码)放到mmpose项目中进行注册才有使用。
2.git clone整个mmpose库到本地后,将Lite-HRNet/models/backbones/litehrnet.py中开头的几个import进行修改
1 | from mmpose.models.registry import BACKBONES |
然后将修改后的litehrnet.py放到mmpose项目的mmpose/mmpose/models/backbones/目录下,并在mmpose/mmpose/models/backbones/__init__.py中注册LiteHRNet模块,即在mmpose/mmpose/models/backbones/__init__.py增加和修改如下代码:
1 | from .litehrnet import LiteHRNet |
3.按照官方安装教程安装运行python setup.py develop
,这样后续就能使用商汤的demo来调用LiteHRNet。
4.按照官方教程运行姿态跟踪的demo mmpose/2d_pose_tracking_demo.md at master · open-mmlab/mmpose (github.com)。需要先进入mmpose项目根目录下,因为mmpose安装在本地的位置,没有到python解释器的位置
1 | python demo/top_down_video_demo_with_mmdet.py demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py your_faster_rcnn_path/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth your_litehrnet_config/litehrnet_30_coco_384x288.py your_litehrnet_path/litehrnet_stem_32_s3_module_383_b2_fuse_reduce_8_w40_320_head_bs32_lr2e-3_aug_r30s25_val_gtbox_coco_384x288.pth --video-path your_src_video_path/wind.mp4 --out-video-root your_dest_video_root |
其中faster-rcnn按照官方提供地址下载到本地即可http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth,姿态检测的网络配置参数就选择LiteHRNet项目Lite-HRNet/configs/top_down/lite_hrnet/coco/litehrnet_30_coco_384x288.py文件,并使用对应的ckpt代码参数文件即可:
onedirve地址https://1drv.ms/u/s!AvreNzlRJaHneJJYbKPmep86U3o?e=pbBP5B
googledrive地址https://drive.google.com/file/d/1nx7AT1DMJRuiYNPcI7EqBp6yJN63ewE1/view?usp=sharing
效果展示
最后是视频效果,这里给出我的视频中一张图片效果