Custom keypoints example
[1]:
import json
import logging
import faster_coco_eval
from faster_coco_eval import COCO, COCOeval_faster
from faster_coco_eval.extra import Curves
print(f"{faster_coco_eval.__version__=}")
logging.root.setLevel("INFO")
logging.debug("Запись.")
faster_coco_eval.__version__='1.5.5'
[2]:
prepared_coco_in_dict = COCO.load_json("../tests/synth_test_dataset/test.json")
prepared_anns = COCO.load_json("../tests/synth_test_dataset/result_data.json")
[3]:
iouType = "keypoints"
[4]:
cocoGt = COCO(prepared_coco_in_dict)
cocoDt = cocoGt.loadRes(prepared_anns)
cocoEval = COCOeval_faster(
cocoGt, cocoDt, iouType, extra_calc=True, kpt_oks_sigmas=[0.01] * 4
)
cocoEval.evaluate()
cocoEval.accumulate()
cocoEval.summarize()
[5]:
cocoEval.stats_as_dict
[5]:
{'AP_all': 0.8877048841154976,
'AP_50': 1.0,
'AP_75': 1.0,
'AP_medium': -1.0,
'AP_large': 0.8877048841154976,
'AR_all': 0.9267605633802816,
'AR_second': 1.0,
'AR_third': 1.0,
'AR_medium': -1.0,
'AR_large': 0.9267605633802816,
'mIoU': 0.9378257896663419,
'mAUC_50': 1.0}
[6]:
cur = Curves(cocoGt, cocoDt, iouType=iouType, kpt_oks_sigmas=[0.025] * 4)
cur.plot_ced_metric()
cur.plot_f1_confidence()
[7]:
from faster_coco_eval.extra import PreviewResults
preview = PreviewResults(cur.cocoGt, cur.cocoDt, iouType=iouType, kpt_oks_sigmas=[0.01] * 4)
[8]:
imgs = []
for img_id, anns in cur.cocoDt.img_ann_map.items():
for ann in anns:
if ann.get("mae", 0) > 3.5:
imgs.append([img_id, ann.get("mae", 0)])
imgs.sort(key=lambda x: x[1], reverse=True)
print(imgs)
imgs = [i[0] for i in imgs]
imgs
[[3966, 4.620729166666656], [3848, 4.237343749999997], [4022, 3.8133333333333326], [3816, 3.8036979166666605]]
[8]:
[3966, 3848, 4022, 3816]
[9]:
preview.display_tp_fp_fn(
data_folder="../tests/synth_test_dataset/",
image_ids=imgs,
display_gt=True,
)
[ ]: