Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down
2 changes: 1 addition & 1 deletion web/amispoof/.htaccess
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion web/amispoof/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 5 additions & 5 deletions web/amispoof/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<!-- Primary SEO -->
<meta
name="description"
content="Am I spoof? amispoof answers the question in the browser. Open face anti-spoof + liveness tester — 19 analyzers (MiniFASNet, blink, rPPG, gaze, blendshapes, 3D pose, audio-mouth sync, ...) + 15-axis passive liveness-proof scorer running entirely client-side. No server, no upload. Point your camera at a printed photo or another screen and watch the LIVE / SPOOF verdict flip in seconds."
content="Am I spoof? amispoof answers the question in the browser. Open face anti-spoof + liveness tester — 23 analyzers (20 active by default; hand & voice/audio opt-in — MiniFASNet, blink, rPPG, gaze, blendshapes, 3D pose, audio-mouth sync, ...) + 18-axis passive liveness-proof scorer running entirely client-side. No server, no upload. Point your camera at a printed photo or another screen and watch the LIVE / SPOOF verdict flip in seconds."
/>
Comment on lines 9 to 12
Comment on lines 9 to 12
<meta
name="keywords"
Expand All @@ -27,21 +27,21 @@
<meta property="og:title" content="Am I Spoof? — Live browser face anti-spoof + liveness tester" />
<meta
property="og:description"
content="Am I spoof? amispoof answers it in the browser. 19 analyzers, 3 gates, and a 15-axis passive liveness-proof scorer via onnxruntime-web + MediaPipe. Test printed-photo, phone-screen replay, deepfake, occlusion and dark-room attacks against a live LIVE/SPOOF verdict in seconds. No server, no upload."
content="Am I spoof? amispoof answers it in the browser. 23 analyzers (20 active by default; hand & voice/audio opt-in), 3 gates, and an 18-axis passive liveness-proof scorer via onnxruntime-web + MediaPipe. Test printed-photo, phone-screen replay, deepfake, occlusion and dark-room attacks against a live LIVE/SPOOF verdict in seconds. No server, no upload."
/>
Comment on lines 28 to 31
Comment on lines 28 to 31
<meta property="og:locale" content="en_US" />
<meta property="og:image" content="https://amispoof.fivucsas.com/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:alt" content="amispoof — browser face anti-spoof + liveness proof. LIVE verdict at 97% confidence with per-analyzer scores and a 15-axis passive liveness-proof scorer." />
<meta property="og:image:alt" content="amispoof — browser face anti-spoof + liveness proof. LIVE verdict at 97% confidence with per-analyzer scores and an 18-axis passive liveness-proof scorer." />

<!-- Twitter / X card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Am I Spoof? — Browser face anti-spoof + liveness tester" />
<meta
name="twitter:description"
content="19-analyzer face anti-spoof + 15-axis liveness-proof pipeline running entirely in the browser. No server, no GPU, no upload. Open the page, point your camera at a photo, watch the verdict flip."
content="23-analyzer face anti-spoof + 18-axis liveness-proof pipeline running entirely in the browser. No server, no GPU, no upload. Open the page, point your camera at a photo, watch the verdict flip."
/>
<meta name="twitter:image" content="https://amispoof.fivucsas.com/og-image.png" />
<meta name="twitter:image:alt" content="amispoof verdict panel showing LIVE at 97% confidence, with the per-analyzer scores for MiniFASNet, blink symmetry, gaze, eyebrow motion, 3D pose, and behavioural pattern." />
Expand Down Expand Up @@ -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."
}
Comment on lines 91 to 95
Comment on lines 91 to 95
},
{
Expand Down