Detectron2でキーポイント検出モデル(keypoint detection model)の推論を試したメモ。以下のDetectron2 Beginner’s Tutorialを和訳して説明を加えたもの。TutorialがGoogle Colabというクラウドサービスを使ったJupyterノートブックなのでローカルマシンで動くようにPythonスクリプトを少し変更している。
過去記事のMask RCNNとスクリプト自体はほとんど同じ。違うのはモデルの設定とウェイトファイルのみ。ほとんど同じスクリプトでいろいろなモデルを試せるのはDetectron2の良いところ。
- 以下のスクリプトを~/src/detectron2/myprog/keypoint_inference.pyとして保存する。
# kepoint_inference.py
from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog
import cv2
# 画像の読み込み
im = cv2.imread("./happy_mini.jpg")
# ネットワークの設定
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-Keypoints/keypoint_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7 # set threshold for this model
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-Keypoints/keypoint_rcnn_R_50_FPN_3x.yaml")
# 推論
predictor = DefaultPredictor(cfg)
outputs = predictor(im)
# 結果の表示
v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
v = v.draw_instance_predictions(outputs["instances"].to("cpu"))
cv2.imshow('Results', v.get_image()[:, :, ::-1])
cv2.waitKey(0)
cv2.destroyAllWindows()
サンプル画像のダウンロード
- 以下の画像をダウンロードして~/src/detectron2/happy_mini.jpgとして保存する。
実 行
次のコマンドを実行すると、人間に関しては次の画像のようにKeypointが表示される。happy mimiちゃんは表示されないのね。
- $ cd ~/src/detectron2
- $ python3 ./myprog/keypoint_inference.py
終わり




コメント