Liveness detection basics: stopping a photo from unlocking a face check

Passive and active liveness, what attacks each stops, how to combine a small anti-spoofing model with motion challenges in the browser, and how to measure false accepts honestly.

At an Integral Startup Foundation hackathon
At an Integral Startup Foundation hackathon

A recognition model will happily match a printed photograph of you to your enrolled embedding. It was trained to recognise faces, not to notice paper. Liveness detection is the layer that asks "is there a live person here?" and FaceVision runs it in the browser alongside recognition.

Two families of liveness

  • Passive — a model looks at a single frame or a short clip for signs of a spoof: paper texture, screen moiré, unnatural depth cues. Frictionless for the user; only as good as its training data.
  • Active — the user is asked to do something: blink, turn their head, follow a dot. Cheap to implement with landmarks, hard to fool with a static photo, defeatable by a video replay unless the challenge is random.

Combine them

A passive check on every frame plus a randomised active challenge at enrolment and for high-value actions covers the common attacks: printed photos, phone screens, and pre-recorded videos. Neither alone does. Keep the challenge short — two actions — or users abandon the flow.

Doing it in the browser

Landmark tracking from the detector already gives you eye openness and head pose, so blink and turn challenges cost nothing extra. A small passive anti-spoofing model in ONNX runs in a worker alongside recognition. Frames stay on the device, which matters: liveness is where you would otherwise be streaming a user's face to a server continuously.

Measuring it honestly

  1. Collect real spoof attempts — photos on paper, on a phone, a video on a laptop — from several people and devices.
  2. Report the spoof acceptance rate and the live rejection rate separately. A system that rejects 20% of real users is not "secure", it is unusable.
  3. Re-test whenever you change cameras, lighting assumptions or the model.

Liveness is the part of a face project that shows a reviewer you thought about how it would be attacked. Recognition gets the demo; liveness gets the job.

LivenessAnti-spoofingFace recognitionSecurity
Pranjul Rathour
Pranjul Rathour
GenAI Engineer · Kanpur, Uttar Pradesh, India

GenAI engineer and AI product builder with 2+ years shipping production-grade AI systems: RAG pipelines, fine-tuned LLMs, hybrid retrieval and multi-modal apps across vision, speech and OCR, architected end to end from ingestion to deployment. Leads engineering for SCULT INDIA's 14-member team, founded the 500+ member TechVerse Enclave community and has mentored 200+ students. Three hackathon first prizes: Changethon 2025 (IIT Roorkee), Product Genesis at Vividhotsava 2025 (CSJMU Kanpur) and BYTEBATTLE (MeetKats).

Open to GenAI roles, hackathon judging, mentorship sessions and guest talks at colleges. Email pranjulrathour41@gmail.com.

Keep reading

More on Vision & speech

All Vision & speech posts →
Campus talks · hackathon judging · mentoring

Want this as a live session at your college?

Open to GenAI roles, hackathon judging, mentorship sessions and guest talks at colleges.

Pranjul Rathour, GenAI engineer in Kanpur