chore(experiments): X-Ray rerun and opencv5 dump runners
- run_xray_lvface_opencv5.sh: end-to-end X-Ray benchmark (scene_analyze per film → sample_eval) on the current build with LVFace-B. - dump_lvface_opencv5.sh: fresh LVFace-B embedding dumps (plain front-half, histogram cuts baked in) for the optimizer replay corpus. No decode-fps cap — that only mattered under parallel dumping; serial it just halved throughput. - .gitignore: ignore build-*/ out-of-tree build dirs.
This commit is contained in:
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env bash
|
||||
# Re-benchmark the feature/opencv5 pipeline against Amazon X-Ray, all 9 films, LVFace-B.
|
||||
# Full end-to-end scene_analyze (decode→detect→scene→embed→match→presence) — NOT a replay,
|
||||
# because the framework changed enough that old embedding dumps no longer represent the front half.
|
||||
# Outputs land in experiments/results/xray_opencv5_lvface/ (durable; /tmp gets wiped).
|
||||
set -uo pipefail
|
||||
|
||||
REPO="/home/dtourolle/Development/scene-actor-extraction"
|
||||
cd "$REPO"
|
||||
|
||||
ARC="models/LVFace-B_Glint360K.onnx"
|
||||
GAL="experiments/galleries/gallery_LVFace-B_Glint360K.h5"
|
||||
OUT="experiments/results/xray_opencv5_lvface"
|
||||
mkdir -p "$OUT"
|
||||
|
||||
BIN="build/scene_analyze"
|
||||
LUT="experiments/file-lut.json"
|
||||
FILMS="experiments/manifests/films.json"
|
||||
|
||||
# film slugs and their xray dirs, from films.json
|
||||
mapfile -t ROWS < <(python3 -c '
|
||||
import json
|
||||
for f in json.load(open("'"$FILMS"'")):
|
||||
print(f["slug"] + "\t" + f["xray"])
|
||||
')
|
||||
|
||||
echo "=== X-Ray re-benchmark (feature/opencv5, LVFace-B) — $(date) ===" | tee "$OUT/run.log"
|
||||
|
||||
for row in "${ROWS[@]}"; do
|
||||
slug="${row%%$'\t'*}"
|
||||
xray="${row#*$'\t'}"
|
||||
movie="$(python3 -c 'import json,sys; print(json.load(open("'"$LUT"'"))["'"$slug"'"])')"
|
||||
pred="$OUT/${slug}.json"
|
||||
|
||||
echo "" | tee -a "$OUT/run.log"
|
||||
echo ">>> $slug" | tee -a "$OUT/run.log"
|
||||
if [ ! -f "$movie" ]; then
|
||||
echo " SKIP: movie missing: $movie" | tee -a "$OUT/run.log"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Run the full pipeline (serial — ROCm GPU wedges at concurrency>2-3).
|
||||
"$BIN" --movie "$movie" --arcface "$ARC" --gallery "$GAL" \
|
||||
--output "$pred" >"$OUT/${slug}.pipeline.log" 2>&1
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ] || [ ! -f "$pred" ]; then
|
||||
echo " PIPELINE FAILED (rc=$rc) — see ${slug}.pipeline.log" | tee -a "$OUT/run.log"
|
||||
continue
|
||||
fi
|
||||
echo " pipeline ok" | tee -a "$OUT/run.log"
|
||||
|
||||
# Score against X-Ray, masked to gallery∩GT, 1s grid.
|
||||
python scripts/validation/sample_eval.py \
|
||||
--pred "$pred" --xray "$xray" --gallery "$GAL" --step 1.0 \
|
||||
>"$OUT/${slug}.eval.txt" 2>&1
|
||||
tail -8 "$OUT/${slug}.eval.txt" | tee -a "$OUT/run.log"
|
||||
done
|
||||
|
||||
echo "" | tee -a "$OUT/run.log"
|
||||
echo "=== DONE — $(date) ===" | tee -a "$OUT/run.log"
|
||||
Reference in New Issue
Block a user