Detectron2-關鍵點模型輸出

 

[須注意Detectron2輸出資料和coco標註資料有差異]

模型輸出:pred_boxes、scores、pred_classes、pred_keypoints
此案例較常調用pred_boxes(判斷是否過於靠近ROI)和pred_keypoints(判斷是否有危險動作or溺水)

調用box

#提取bounding box
Box=outputs["instances"].pred_boxes
box=Box.tensor.cpu()
box=box.numpy()

根據COCO格式輸出邊界框格式為[左上x 位置,左上y 位置,寬度,高度]。
而Detectron2為pred_boxes:x0_min, y0_min, x0_max, y0_max], [.......],[xn_min, yn_min, xn_max, yn_max

調用keypoint

#提取keypoint
key = outputs["instances"].pred_keypoints.cpu()
Keypoints=key.data.numpy()

若畫面中僅一位人員,其keypoint輸出應為:

[[[1.4401215e+02 6.2059574e+01 3.1292382e-01]
  [1.5147527e+02 5.4588280e+01 1.9459458e-01]
  [1.3752248e+02 5.4588280e+01 2.7202889e-01]
  [1.6997083e+02 6.0760220e+01 5.2661333e-02]
  [1.2746349e+02 6.0435383e+01 7.3776595e-02]
  [1.6380565e+02 9.6817345e+01 4.2605755e-01]
  [1.2778798e+02 9.8766380e+01 3.7693325e-01]
  [1.7224222e+02 1.2897641e+02 4.3600988e-01]
  [1.1351069e+02 1.3060060e+02 6.1754507e-01]
  [1.7775845e+02 1.5821191e+02 4.6285039e-01]
  [9.4041672e+01 1.0688736e+02 5.8092594e-01]
  [1.5764046e+02 1.5723740e+02 2.9843822e-01]
  [1.3395316e+02 1.5788708e+02 3.0446079e-01]
  [1.5958736e+02 1.9102065e+02 3.1526136e-01]
  [1.3330418e+02 1.9199518e+02 3.5163110e-01]
  [1.5828943e+02 2.2577843e+02 3.1912750e-01]
  [1.3395316e+02 2.2642812e+02 3.2153082e-01]]

**無論畫面上是否呈現其他關節點,模型都會進行預測
根據coco格式單點輸出原應為:[x,y,k]
x 和 y 表示圖像中的像素位置。
v 表示可見性—— v=0:未標記(此時 x=y=0),v=1:標記但不可見,v=2:標記且可見

EX:229, 256, 2 表示在像素 x=229, y=256 處有一個關鍵點,2 表示它是一個可見的關鍵點

但detectron2有經過三個骨幹去預測,且增加偏移量0.5,所以輸出都不會是整數(!)
根據推算後的detectron2格式單點輸出原應為:[平均後x,平均後y,可信度]

可視化

用於圖片的可視化可參照實例分割的模型輸出
用於影片的可視化(目前尚未更改至同類別有同樣顏色,待補充)

from detectron2.utils.video_visualizer import VideoVisualizer
from detectron2.utils.visualizer import ColorMode, Visualizer, GenericMask

v = VideoVisualizer(MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), ColorMode.IMAGE)
#先定義video可視化方法及顏色
.
.
.
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
visualization = v.draw_instance_predictions(frame, outputs["instances"].to("cpu"))
visualization = cv2.cvtColor(visualization.get_image(), cv2.COLOR_RGB2BGR)

留言

這個網誌中的熱門文章

Python-相關係數矩陣實作(python-correlation matrix )

ASP.NET-後端將值傳給javascript

ASP.NET-FileUpload上傳後自動觸發button click(FileUpload upload auto trigger button click)