前の記事
こちらの記事の続きです。
mmposeで別のモデルを使うには?
天下り的にチュートリアルを進めただけでは、別のモデルを使うにはどうしたらよいか、わかりませんね。
チュートリアルで扱ったトップダウン型の手法ではなく、ボトムアップ型のアプローチの推論を実践してみましょう。
以下のURLから、使いたいモデルを選択しました。
https://mmpose.readthedocs.io/en/latest/papers/backbones.html
今回はボトムアップ型の手法である「Associative Embedding + Higherhrnet on Coco」の中から、HigherHRNet-w48を選択しました。Archに設定ファイルへのリンクが、ckptに重みのURLがありますね。それぞれ、
- https://github.com/open-mmlab/mmpose/tree/master/configs/body/2d_kpt_sview_rgb_img/associative_embedding/coco/higherhrnet_w48_coco_512x512.py
- https://download.openmmlab.com/mmpose/bottom_up/higher_hrnet48_coco_512x512-60fedcbc_20200712.pth`
ですが、設定ファイルはclone済ですので、configs/body/2d_kpt_sview_rgb_img/associative_embedding/coco/higherhrnet_w48_coco_512x512.py
の部分さえわかればよいのです。
pose_config = 'configs/body/2d_kpt_sview_rgb_img/associative_embedding/coco/higherhrnet_w48_coco_512x512.py'
pose_checkpoint = 'https://download.openmmlab.com/mmpose/bottom_up/higher_hrnet48_coco_512x512-60fedcbc_20200712.pth'
以上のように設定しました。また、ボトムアップ型の推論には以下の関数を使いますので、importしておきましょう。
from mmpose.apis import inference_bottom_up_pose_model
続いて、モデルをロードしての推論ですが、物体検出がない分、実は簡単です。
pose_model = init_pose_model(pose_config, pose_checkpoint)
pose_results, returned_outputs = inference_bottom_up_pose_model(pose_model, img, dataset=pose_model.cfg.data.test.type)
vis_result = vis_pose_result(pose_model,
img,
pose_results,
dataset=pose_model.cfg.data.test.type,
show=False,
out_file="posed_000000197388.png")
cv2_imshow(vis_result)
皆さんはぜひ他のモデルでも試してみてくださいね。
トップダウン型の手法を使う場合で、物体検出モデルを変更したい場合はmmdetを触らないといけませんが、基本的に扱い方は同じです。以下のページから使用したい物体検出モデルの「Please refer to hogehoge for details.」から各モデルのGitHubのREADMEのページに飛び、そこから設定ファイルのパスとチェックポイントのパスを探してみてくださいね。
次の記事では3D姿勢推定でも扱いたいと思います。