Spaces:
Sleeping
Sleeping
| """End-to-end smoke test of the post-R0 pipeline. | |
| Calls preprocess_image_and_predict on each bundled sample face. After | |
| R0 the function uses the MediaPipe Face Landmarker (tasks API) for | |
| face detection + bbox, and the upstream ResNet50 + Grad-CAM for | |
| emotion classification. This exercises both halves of the new | |
| pipeline together. | |
| Run from repo root: `cd ~/Code/research/totes-emosh && uv run python scratch/smoke_upstream.py` | |
| """ | |
| from __future__ import annotations | |
| import os | |
| import sys | |
| from pathlib import Path | |
| from PIL import Image | |
| ROOT = Path(__file__).parent.parent | |
| os.chdir(ROOT) | |
| sys.path.insert(0, str(ROOT)) | |
| def main() -> None: | |
| from app.app_utils import preprocess_image_and_predict | |
| images_dir = ROOT / "images" | |
| samples = sorted( | |
| p for p in images_dir.glob("*.png") | |
| if p.stem not in {"LMLLOGO", "LMLOBS"} | |
| ) | |
| print(f"{'sample':<14} {'top-1':<14} {'p':>5} {'top-2':<14} {'p':>5} {'top-3':<14} {'p':>5}") | |
| print("-" * 90) | |
| for sample in samples: | |
| img = Image.open(sample).convert("RGB") | |
| face, _heatmap, confidences = preprocess_image_and_predict(img) | |
| if confidences is None: | |
| print(f"{sample.stem:<14} NO FACE") | |
| continue | |
| ranked = sorted(confidences.items(), key=lambda x: -x[1]) | |
| top3 = ranked[:3] | |
| row = [sample.stem.ljust(14)] | |
| for label, p in top3: | |
| row.append(f"{label:<14} {p:.3f}") | |
| print(" ".join(row)) | |
| if __name__ == "__main__": | |
| main() | |