AVIS / docs /DEMO_SCRIPT.md
X2-0's picture
HF Clean Deploy
1c0c94d
|
Raw
History Blame Contribute Delete
5.24 kB

AVIS β€” Demo Video Script (~3.5 min)

A tight, honest walkthrough. The thesis: most teams claim all 7 violations from one photo; a real camera can't, and neither can they β€” AVIS is the system that knows the difference.


Pre-flight checklist (do this before recording)

  • .env set: HELMET_WEIGHTS=models/helmet/best.pt, PLATE_PROVIDER=fastalpr, LLM_PROVIDER=gemini, GEMINI_MODEL=gemini-2.5-flash. (Seatbelt optional: SEATBELT_CHECK=true.)
  • cd frontend && npm run build (so FastAPI serves the React app at /).
  • Start: venv\Scripts\python.exe -m uvicorn api.main:app --reload β†’ open http://127.0.0.1:8000
  • Have 3 images ready: (A) a clear motorcycle with a no-helmet rider (+plate visible), (B) a clean street photo with no violations, (C) a dark/blurry photo.
  • Quota note: helmet + plates are free/local. Triple-riding & seatbelt may make ~1 Gemini call each β€” fine for a demo; just don't spam re-uploads.
  • Optional: pre-run a couple uploads so Analytics has data to show.

Scene 1 β€” Hook (0:00–0:25)

On screen: title card β†’ the Violation Detectability Matrix (DESIGN.md Β§3).

"Every hackathon traffic project promises to catch all seven violations from a single photo. Here's the uncomfortable truth: you physically can't prove wrong-side driving or a red-light run from one still frame β€” and a real enforcement camera doesn't either. So we built AVIS: a system that detects what it can prove, and is honest about what it can't."


Scene 2 β€” The idea (0:25–1:00)

On screen: the architecture diagram (PROJECT_STATUS.md Β§2).

"AVIS is a hybrid pipeline. Deterministic computer vision does the detecting and measuring. Detections become an Evidence Graph β€” riders linked to motorcycles, drivers to cars, plates to vehicles. Pure rules read that graph and propose violations. Each gets a tier: Tier A is provable from appearance, like no-helmet; Tier C needs camera calibration; Tier D needs video. A vision-language model is used only as an auditor to verify ambiguous cases β€” never as the detector β€” and it's allowed to say 'insufficient evidence'. Only Tier A can auto-confirm. Everything else is routed to AI verification or a human."


Scene 3 β€” Live demo (1:00–2:40)

3a. A real violation (1:00–1:50)

Action: Analyze tab β†’ upload image A (camera_id = cam_demo) β†’ wait for cards.

"I'll upload a real street photo. No model training, no cloud GPU."

Point at the result, then open a violation card:

"It detected the motorcycle and rider, flagged No Helmet, and β€” this is the key part β€” it explains itself. Here's the confidence breakdown: detection, rule, and attribute scores fused into 0.9-something, above the auto-confirm threshold. The helmet read came from a local model β€” zero API calls. It cites the law: Motor Vehicles Act Β§194D, β‚Ή1000. The plate was read by an on-device OCR. And there's a tamper-evident SHA-256 evidence hash and a draft e-challan. That's a court-ready evidence package, not a black-box verdict."

3b. Abstention is a feature (1:50–2:15)

Action: upload image C (dark/blurry).

"Now a degraded photo. Instead of guessing, the quality gate makes the system abstain β€” 'I can't judge this fairly.' Abstaining beats a false accusation. That honesty is the whole point."

3c. The dashboard (2:15–2:40)

Action: Analytics tab β†’ then Review queue β†’ then Search.

"Analytics shows violations by type, by outcome, and a human-review-reduction number β€” the share resolved automatically. The review queue is the human-in-the-loop: approve or reject with a note that's written to the audit trail. And every record is searchable by type, status, or plate."


Scene 4 β€” Proof & honesty (2:40–3:05)

On screen: terminal with pytest -q (49 passed) and the eval harness file.

"Under the hood: 49 tests, clean lint and types. The evaluation harness reports per-violation precision/recall/F1, a rule-only-vs-rule-plus-VLM ablation, plate accuracy, and latency β€” and it reports Tier A separately, so we never average a hard number into an easy one. We don't show fabricated accuracy; drop in a labelled set and the numbers are real."

(If you have a labelled data/eval/ set: show python -m eval.run output here instead.)


Scene 5 β€” Close (3:05–3:30)

On screen: the e-challan card + "free / self-hostable" line.

"Everything runs on free, self-hostable components β€” one docker compose up brings up the API, worker, Postgres, Redis, and object storage. The VLM is the only external piece and it's on a free tier, behind a provider-agnostic client β€” swap in a paid model later without touching the pipeline. AVIS: it detects what it can prove, audits what's ambiguous, abstains on the rest, and explains every decision. Thanks for watching."


Backup / B-roll

  • Pre-recorded successful upload (in case of live network/quota hiccups).
  • Screenshot of a violation detail + e-challan.
  • The matrix and architecture diagrams as static slides.