diff --git a/README.md b/README.md index 1a8d479..a2ca16c 100644 --- a/README.md +++ b/README.md @@ -237,7 +237,7 @@ Browser TypeScript port (`web/`, published as `@rollingcat/spoof-detector`): - [ ] amispoof.com domain (currently `/amispoof/` slug on fivucsas.com). - [ ] iBeta PAD-Level-1 browser-bundle submission package. -Live tester: https://amispoof.fivucsas.com/ (the old https://fivucsas.com/amispoof/ now 301s) — **19 analyzers + 3 gates + 15-axis passive liveness-proof scorer** running entirely client-side. Default-on: 17 analyzers covering the original ten plus the seven blendshape/3D-pose unlocks (eyebrow motion, blink symmetry, gaze, expression dynamics, 3D pose consistency, behavioural pattern, plus temporal + background grid brought across from `src/`). Opt-in extras: background motion (MediaPipe SelfieSegmenter), hand tracking (HandLandmarker), voice-activity + audio-mouth-sync (Web Audio API). Session recording + JSON replay shipped 2026-05-17. See `web/amispoof/README.md` for the deployment runbook and `ROADMAP.md` "Browser Port v0.1.0" for the full module inventory. +Live tester: https://amispoof.fivucsas.com/ (the old https://fivucsas.com/amispoof/ now 301s) — **23 analyzers + 3 gates + 18-axis passive liveness-proof scorer** running entirely client-side. Default-on: 20 analyzers covering the original ten plus the blendshape/3D-pose unlocks (eyebrow motion, blink symmetry, gaze, expression dynamics, 3D pose consistency, behavioural pattern), temporal + background grid brought across from `src/`, and background motion (MediaPipe SelfieSegmenter). Opt-in extras: hand tracking (HandLandmarker), voice-activity + audio-mouth-sync (Web Audio API). Session recording + JSON replay shipped 2026-05-17. See `web/amispoof/README.md` for the deployment runbook and `ROADMAP.md` "Browser Port v0.1.0" for the full module inventory. ## Academic paper diff --git a/ROADMAP.md b/ROADMAP.md index d2bc632..1c79d80 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -61,7 +61,7 @@ quality gate, not LIVE/SPOOF); doc + paper audit; PR + production deploy | Surface | State | |---|---| -| **Browser bundle** (`@rollingcat/spoof-detector` on npm, live at amispoof.fivucsas.com) | **Production** — 19 analyzers, 15-axis proof scorer, 185-pt ceiling; 6.7–9.5 fps Pixel-class Android, 25–30 fps desktop Chrome WebGPU; 217 vitest green | +| **Browser bundle** (`@rollingcat/spoof-detector` on npm, live at amispoof.fivucsas.com) | **Production** — 23 analyzers, 18-axis proof scorer, 185-pt ceiling; 6.7–9.5 fps Pixel-class Android, 25–30 fps desktop Chrome WebGPU; 217 vitest green | | **Python reference** (`src/`) | **Production** — calibration source-of-truth + ISO/IEC 30107-3 benchmark harness for §6–§8 of the paper; 138 pytest green | | **Paper** (`paper/sections/`) | **Browser-first reframe** complete (PR #45); §0/§1/§10 lead with the client-side bundle, Python framed as starting-point + evaluation reference; §7.6 updated with measured browser-port perf numbers | | **iBeta PAD-Level-1 submission package** | Scoped to the Python pipeline; re-scope to the browser bundle is a planned next iteration | diff --git a/web/amispoof/.htaccess b/web/amispoof/.htaccess index 3d36a40..e8bf554 100644 --- a/web/amispoof/.htaccess +++ b/web/amispoof/.htaccess @@ -11,7 +11,7 @@ # X-Robots-Tag intentionally NOT set — /amispoof/ is now publicly # indexable per the SEO update (2026-05-16). The page-level meta robots # + JSON-LD SoftwareApplication + Open Graph tags are in index.html. - Header always set Permissions-Policy 'camera=(self), microphone=()' + Header always set Permissions-Policy 'camera=(self), microphone=(self)' # Cross-origin isolation → SharedArrayBuffer → multi-threaded ORT WASM. # Without these, the live domain runs single-threaded (the local server.mjs diff --git a/web/amispoof/README.md b/web/amispoof/README.md index 98a98bc..c6b51a5 100644 --- a/web/amispoof/README.md +++ b/web/amispoof/README.md @@ -74,7 +74,7 @@ Both are aggressively cacheable via jsdelivr's `Cache-Control: public, max-age=3 - **Verdict** (LIVE / SPOOF) with confidence percentage and peak-sensitive session memory — one sustained spoof burst flips and keeps the verdict. -- **Twelve analyzers** with live score 0–100, grouped image-track vs +- **23 analyzers** with live score 0–100, grouped image-track vs video-track per the paper's hybrid architecture: - **Image** — MiniFASNet (w 5.0), Device boundary (0.5), Background grid (1.5), Texture (0.0 by default), Moire (0.0), Screen diff --git a/web/amispoof/index.html b/web/amispoof/index.html index 983cbe6..c103fe5 100644 --- a/web/amispoof/index.html +++ b/web/amispoof/index.html @@ -8,7 +8,7 @@ - + @@ -91,7 +91,7 @@ "name": "Am I spoof?", "acceptedAnswer": { "@type": "Answer", - "text": "amispoof answers the question in your browser in a few seconds — open https://amispoof.fivucsas.com/, grant camera access, and the page runs 19 anti-spoof analyzers + a 15-axis passive liveness-proof scorer on your face. The verdict (LIVE or SPOOF) appears in real time with per-axis evidence. Nothing is uploaded — all inference happens client-side in WebAssembly." + "text": "amispoof answers the question in your browser in a few seconds — open https://amispoof.fivucsas.com/, grant camera access, and the page runs 23 anti-spoof analyzers (20 active by default) + an 18-axis passive liveness-proof scorer on your face. The verdict (LIVE or SPOOF) appears in real time with per-axis evidence. Nothing is uploaded — all inference happens client-side in WebAssembly." } }, {