docs: four focused findings pages (best model, gallery scope, expansion, deep dive)

Splits the rep4 write-up's key findings into their own linkable pages:
- best-model.md: calibration curves first (discriminative power, independent
  of any threshold), then F1 on the benchmark — LVFace-B Glint360K wins both.
- gallery-scope.md: whole vs. cast-restricted gallery, isolated from model and
  expansion choice — restriction wins on every axis, but isn't a shipped
  runtime feature yet.
- pose-expansion.md: the training-set expand_gallery effect, and the held-out
  replication attempt that found it doesn't reproduce (5 films, 2 models,
  after catching and fixing a replay-timeout truncation bug and a bbox
  first-match-instead-of-best-match bug in the comparison harness itself). An
  honest null result, with the methodology errors documented since they're
  exactly the kind that manufacture a false "it works!" finding.
- lvface-deep-dive.md: the winning model's held-out generalization gap, its
  two failure modes (frozen-bbox ghost tracks), and a verified case (cross-
  checked against Jellyfin's independent cast metadata) where LVFace
  correctly identified an actor that X-Ray's ground truth failed to credit.

Adds a "report-highlights" artifact-registry package (scripts/artifacts/
push_artifacts.sh, pull_artifacts.sh) for hand-picked illustrative frames that
aren't reproducible via the automated best/worst montage selection, and wires
pulling it into scripts/docs/build_site.sh.
This commit is contained in:
2026-07-19 19:40:19 +02:00
parent d340da755a
commit 4925443e56
9 changed files with 384 additions and 13 deletions
+17 -1
View File
@@ -10,6 +10,7 @@
# scripts/artifacts/pull_artifacts.sh galleries [version]
# scripts/artifacts/pull_artifacts.sh montage-frames <film-slug> [version]
# scripts/artifacts/pull_artifacts.sh experiment-data [version]
# scripts/artifacts/pull_artifacts.sh report-highlights <name> [version]
# version defaults to "latest" (newest uploaded version, by created_at).
set -euo pipefail
@@ -74,10 +75,19 @@ pull_experiment_data() {
rm "$tmp"
}
pull_report_highlight() {
local version="$1" name="$2"
local dest="${REPO_ROOT}/docs/assets/images"
mkdir -p "$dest"
echo "=== report-highlights/${name} (version ${version}) ==="
curl -sf "${DL_BASE}/generic/report-highlights/${version}/${name}" -o "${dest}/${name}"
}
if [ $# -eq 0 ]; then
echo "usage: $0 galleries [version]" >&2
echo " $0 montage-frames <film-slug> [version]" >&2
echo " $0 experiment-data [version]" >&2
echo " $0 report-highlights <name> [version]" >&2
exit 1
fi
@@ -99,8 +109,14 @@ case "$TARGET" in
[ "$VERSION" = "latest" ] && VERSION="$(resolve_latest_version experiment-data)"
pull_experiment_data "$VERSION"
;;
report-highlights)
NAME="${2:?usage: $0 report-highlights <name> [version]}"
VERSION="${3:-latest}"
[ "$VERSION" = "latest" ] && VERSION="$(resolve_latest_version report-highlights)"
pull_report_highlight "$VERSION" "$NAME"
;;
*)
echo "unknown target: $TARGET (expected galleries, montage-frames, or experiment-data)" >&2
echo "unknown target: $TARGET (expected galleries, montage-frames, experiment-data, or report-highlights)" >&2
exit 1
;;
esac
+21 -6
View File
@@ -11,12 +11,16 @@
# scripts/artifacts/push_artifacts.sh galleries
# scripts/artifacts/push_artifacts.sh montage-frames
# scripts/artifacts/push_artifacts.sh experiment-data
# scripts/artifacts/push_artifacts.sh galleries montage-frames experiment-data
# scripts/artifacts/push_artifacts.sh report-highlights
# scripts/artifacts/push_artifacts.sh galleries montage-frames experiment-data report-highlights
#
# Package layout (owner=dtourolle, repo=scene-actor-extraction):
# generic/galleries/<version>/gallery_<model>.h5 (one file per model)
# generic/montage-frames/<version>/<film-slug>.zip (zipped per-film frames)
# generic/experiment-data/<version>/experiment-data.zip (manifests/trajectories/results)
# generic/report-highlights/<version>/<name>.jpg (individual, hand-picked
# illustrative frames referenced by docs/*.md that aren't reproducible via
# the automated best/worst montage selection — see scripts/docs/build_site.sh)
# version = current git short SHA, so artifacts are traceable to the code that
# produced them. Re-running with the same SHA overwrites that version's files.
set -euo pipefail
@@ -95,17 +99,28 @@ push_experiment_data() {
upload "experiment-data" "experiment-data.zip" "$zipfile"
}
push_report_highlights() {
echo "=== report-highlights (version ${VERSION}) ==="
local src="${REPO_ROOT}/experiments/results/holdout/montage/many_saints/out_of_cast_fpi/10_t003641.jpg"
if [ ! -f "$src" ]; then
echo " [warn] $src not found, skipping" >&2
return
fi
upload "report-highlights" "germar_beats_xray.jpg" "$src"
}
if [ $# -eq 0 ]; then
echo "usage: $0 <galleries|montage-frames|experiment-data> [...]" >&2
echo "usage: $0 <galleries|montage-frames|experiment-data|report-highlights> [...]" >&2
exit 1
fi
for target in "$@"; do
case "$target" in
galleries) push_galleries ;;
montage-frames) push_montage_frames ;;
experiment-data) push_experiment_data ;;
*) echo "unknown target: $target (expected galleries, montage-frames, or experiment-data)" >&2; exit 1 ;;
galleries) push_galleries ;;
montage-frames) push_montage_frames ;;
experiment-data) push_experiment_data ;;
report-highlights) push_report_highlights ;;
*) echo "unknown target: $target (expected galleries, montage-frames, experiment-data, or report-highlights)" >&2; exit 1 ;;
esac
done
+5
View File
@@ -26,6 +26,11 @@ cp -v "${FRAMES_ROOT}/many_saints/fpi/fpi_t03543.jpg" \
cp -v "${FRAMES_ROOT}/downton_abbey/fpi/fpi_t07242.jpg" \
"${ASSETS_DIR}/downton_abbey_ghost_fpi.jpg"
if [ ! -f "${ASSETS_DIR}/germar_beats_xray.jpg" ]; then
echo "==> pulling report-highlights/germar_beats_xray.jpg..."
scripts/artifacts/pull_artifacts.sh report-highlights germar_beats_xray.jpg
fi
if [ ! -d experiments/galleries ] || [ -z "$(ls -A experiments/galleries 2>/dev/null)" ]; then
echo "==> pulling galleries (not found locally)..."
scripts/artifacts/pull_artifacts.sh galleries