#!/usr/bin/env bash
# val.py on COCO val2017 (5000 images) for the released YOLOv9-S/M/C/E converted weights, with the README's
# settings (img 640, batch 32, conf 0.001, iou 0.7, --save-json); mAP from pycocotools. Batch 16 for E, which
# does not fit in 16 GB at batch 32.
ROW=/var/tmp/kv-repro/044-WongKinYiu-yolov9
export HOME=$ROW/data/home TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD=1
for m in s m c e; do
  echo "KVERITAS_PHASE name=yolov9_$m"
  (cd $ROW/data && sha256sum yolov9-$m-converted.pt)
  bs=32; [ $m = e ] && bs=16
  python val.py --data data/coco.yaml --img 640 --batch $bs --conf 0.001 --iou 0.7 --device 0 \
    --weights $ROW/data/yolov9-$m-converted.pt --save-json --project $ROW/data/runs --name yolov9-$m 2>&1 | tr '\r' '\n' | grep -v "it/s\]\|s/it\]" | tee $ROW/data/val-$m.log
  ap=$(grep -oP "Average Precision  \(AP\) @\[ IoU=0.50:0.95 \| area=   all \| maxDets=100 \] = \K[0-9.]+" $ROW/data/val-$m.log) || exit 1
  ap50=$(grep -oP "Average Precision  \(AP\) @\[ IoU=0.50      \| area=   all \| maxDets=100 \] = \K[0-9.]+" $ROW/data/val-$m.log) || exit 1
  echo "KVERITAS_METRIC name=yolov9_${m}_coco_map50_95 value=$ap"
  echo "KVERITAS_CLAIM metric=yolov9_${m}_coco_map50_95 value=$ap"
  echo "KVERITAS_CLAIM metric=yolov9_${m}_coco_map50 value=$ap50"
done
