#!/usr/bin/env bash
# demo/test_ap_on_coco.py: zero-shot COCO val2017 box AP for GroundingDINO-T (SwinT OGC config, released weights),
# all 80 category names as the text prompt, top 300 boxes; AP from pycocotools.
ROW=/var/tmp/kv-repro/045-IDEA-Research-GroundingDINO
export HOME=$ROW/data/home HF_HUB_OFFLINE=1 PYTHONUNBUFFERED=1 TOKENIZERS_PARALLELISM=false
(cd $ROW/data && sha256sum groundingdino_swint_ogc.pth coco/instances_val2017.json)
echo "KVERITAS_PHASE name=coco_zero_shot"
python demo/test_ap_on_coco.py -c groundingdino/config/GroundingDINO_SwinT_OGC.py -p $ROW/data/groundingdino_swint_ogc.pth \
  --anno_path $ROW/data/coco/instances_val2017.json --image_dir $ROW/data/coco/val2017 2>&1 | tee $ROW/data/eval.log
python - $ROW/data/eval.log <<'PY'
import ast, re, sys
s = ast.literal_eval(re.search(r"Final results: (\[.*\])", open(sys.argv[1]).read()).group(1))
for name, v in zip(["ap", "ap50", "ap75", "ap_small", "ap_medium", "ap_large"], s[:6]):
    print(f"KVERITAS_METRIC name=coco_val2017_{name} value={v:.4f}")
    print(f"KVERITAS_CLAIM metric=coco_val2017_{name} value={v:.4f}")
PY
