本节我们继续通过 demo 脚本演示对单张图片或者视频的 2D 手部关键点的识别。同样的,用户仍要确保开发环境已经安装了 3.0 版本以上的 MMDetection 。
我们在 mmdet model zoo 提供了预训练好的手部 Bounding Box 预测模型,用户可以前往下载。
python demo/topdown_demo_with_mmdet.py \
${MMDET_CONFIG_FILE} ${MMDET_CHECKPOINT_FILE} \
${MMPOSE_CONFIG_FILE} ${MMPOSE_CHECKPOINT_FILE} \
--input ${INPUT_PATH} [--output-root ${OUTPUT_DIR}] \
[--show] [--device ${GPU_ID or CPU}] [--save-predictions] \
[--draw-heatmap ${DRAW_HEATMAP}] [--radius ${KPT_RADIUS}] \
[--kpt-thr ${KPT_SCORE_THR}] [--bbox-thr ${BBOX_SCORE_THR}]
用户可以在 model zoo 获取预训练好的关键点识别模型。
这里我们用 onehand10k model 来进行演示:
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/9.jpg \
--show --draw-heatmap
可视化结果如下:
如果使用了 heatmap-based 模型同时设置了 --draw-heatmap
,预测的热图也会跟随关键点一同可视化出来。
如果想本地保存可视化结果可使用如下命令:
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/9.jpg \
--output-root vis_results --show --draw-heatmap
如果想本地保存预测结果,需要添加 --save-predictions
。
如果想用 CPU 进行 demo 需添加 --device cpu
:
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/9.jpg \
--show --draw-heatmap --device cpu
视频和图片使用了同样的接口,区别在于视频推理时 ${INPUT_PATH}
既可以是本地视频文件的路径也可以是视频文件的 URL 地址。
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 demo/resources/<demo_hand.mp4> \
--output-root vis_results --show --draw-heatmap
这段视频可以在 Google Drive 下载到。
Inferencer 提供一个更便捷的推理接口,使得用户可以绕过模型的配置文件和 checkpoint 路径直接使用 model aliases ,支持包括图片路径、视频路径、图片文件夹路径和 webcams 在内的多种输入方式,例如可以这样使用:
python demo/inferencer_demo.py tests/data/onehand10k \
--pose2d hand --vis-out-dir vis_results/onehand10k \
--bbox-thr 0.5 --kpt-thr 0.05
该命令会对输入的 tests/data/onehand10k
下所有的图片进行推理并且把可视化结果都存入 vis_results/onehand10k
文件夹下。
除此之外, Inferencer 也支持保存预测的姿态结果。具体信息可在 Inferencer 文档 查看。
对于 2D 手部关键点预测模型,用户可以通过修改配置文件中的 model.test_cfg.flip_test=False
来加速,如 onehand10k_hrnetv2 所示。