Repository navigation
Replies: 2 comments
0 replies
|
The browser-versus-server inference split and the warning that accuracy figures are not directly comparable are the important engineering constraints in this eye-tracking survey. I would record inference location, frame rate, input size, p50/p95 inference latency, calibration quality, and failure rate per session. If a product adds an AI explanation or summarization step, that separate model call should have its own usage and latency budget instead of being mixed with gaze inference. I am testing an OpenAI-compatible multi-model layer around official Chinese models for workflow-level routing and observability. Are your target deployments more constrained by browser CPU latency, server inference cost, or calibration reliability? |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Open-Source Webcam Eye Tracking for Web Applications
On-screen gaze prediction — solution survey, fact sheets, and recommendations
Report version 1.1 · 6 August 2026
About This Report
What this report contains: a survey of open-source solutions that can be used to build a web application with webcam-based on-screen gaze prediction. Every solution gets a uniform fact sheet covering: runtime (does it run in the web browser, on a server, or on the desktop), reported accuracy, what benchmarks were run, what data the model was trained on, whether it uses only the camera image as input, official research articles describing the solution, a few lines on how it is built and its unique properties, plus license, maintenance status, and links. It ends with a comparison matrix, recommendations (up to 3 best solutions per runtime/use case), reference architectures, licensing guidance, and risks. A glossary of the cited research articles follows the fact sheets (§4).
How the projects were validated: every entry was checked against its primary source on 2026-08-06 — the GitHub API (stars, SPDX license, last push, archived status), the npm/PyPI registries, official documentation, and the original papers. Claims that could not be verified are explicitly flagged. Accuracy figures are as reported by the authors on their own benchmarks and are not directly comparable across datasets (centimeters on mobile phones ≠ degrees on desktop ≠ pixels on a screen).
Version history: 1.0 (2026-08-06) initial survey · 1.1 (2026-08-06) fact-sheet format with runtime/accuracy/benchmarks/training-data/input fields, links for every solution, validation methodology, recommendations per runtime · 1.2 (2026-08-06) official research articles cited per solution + glossary of articles (§4); all arXiv IDs verified via the arXiv API.
1. Executive Summary
No single maintained, permissively-licensed, drop-in library gives research-grade webcam gaze in the browser today. The field splits into three practical strategies:
Key verdicts:
webcam-eyetracker-light-opendoes (17-point calibration, ≈120 CSS px).yakhyo/gaze-estimationprovides maintained ONNX exports (runnable in-browser via onnxruntime-web/WebGPU); EyeTrax (MIT) adds calibration routines and Kalman/EMA/KDE smoothing.2. How Webcam Gaze Prediction Works (30-second primer)
getUserMedia(requires HTTPS/localhost).Two model families: geometric (pupil/iris geometry; cheap, needs good iris visibility) and appearance-based (CNN over the eye/face image; more robust, heavier — L2CS-Net, iTracker, ETH-XGaze). Good background: Appearance-based Gaze Estimation with Deep Learning (arXiv:2104.12668).
3. Solution Fact Sheets
3.1 RealEye Webcam EyeTracker Light Open
@realeye-io/webcam-eyetracker-light-open1.1.0 · demo: https://realeye-io.github.io/webcam-eyetracker-light-open/3.2 WebEyeTrack (RedForestAI)
webeyetrack0.0.2 · PyPI:webeyetrack· paper: https://arxiv.org/abs/2508.195443.3 MediaPipe Face Landmarker + custom calibration (DIY core)
@mediapipe/tasks-vision3.4 L2CS-Net / yakhyo/gaze-estimation (appearance-based engine)
3.5 EyeTrax
eyetrax· DOI: https://doi.org/10.5281/zenodo.171885373.6 EyeGestures / EyeGesturesLite (NativeSensors)
eyeGestureseyegestures.jsfrom eyegestures.com) + Python package + desktop appsnew EyeGestures('video', onPoint)delivers (x, y) + calibration state; live cursor during calibration; desktop apps (EyeFocus; EyePilot pending restore); accessibility mission.3.7 GazeTracking (antoinelame) — niche
3.8 Considered but NOT recommended today
4. Glossary of Research Articles
All articles below are cited in the solution fact sheets (§3) or the datasets section. arXiv identifiers were verified against the arXiv API on 2026-08-06; entries without an arXiv ID have no arXiv preprint (linked primary source given instead).
5. Datasets & Training Data — What the Models Were Trained On
6. Comparison Matrix (Snapshot 2026-08-06)
7. Recommended Solutions by Runtime & Use Case (up to 3 best)
8. Reference Architectures
Option A — Pure client-side, MediaPipe core (recommended default)
getUserMedia→ Face Landmarker in a Web Worker (iris + eye corners + head-pose matrix) → feature vector → per-user calibration (9–17 points) → ridge/polynomial regression (or tiny TF.js net, HueVision-style) → smoothing → heatmap/gaze plot.Option B — Turnkey: WebEyeTrack
npm package, few-shot calibration, direct (x,y) output, head-pose compensated.
Option C — Client capture + server inference (L2CS / yakhyo + EyeTrax)
Browser sends frames (throttled, e.g., 10–15 fps) over WebSocket → Python service (MediaPipe face crop → L2CS-Net/MobileOne ONNX → EyeTrax-style calibration/smoothing) → gaze coords back.
Option D — Hybrid (best bet for a serious product)
MediaPipe client-side for face/iris/head-pose features → few-shot personalization (WebEyeTrack-style on-device adaptation of a small gaze head) or a lightweight appearance model in ONNX/WebGPU. Research-quality accuracy with client-side privacy. Note: to train the base model commercially you need your own data or permission for the research datasets — plan internal data collection or synthetic-data pipelines (à la NVGaze/ETH-XGaze-style rendering, which is legal).
9. Licensing & Compliance — Read This First
10. Risks & Gotchas
detect()blocks the main thread).11. References (All Verified 2026-08-06)
Libraries / repos: github.com/brownhci/WebGazer · github.com/RedForestAI/WebEyeTrack · github.com/a20r/camgaze.js · github.com/NativeSensors/EyeGestures · github.com/NativeSensors/EyeGesturesLite · github.com/google-ai-edge/mediapipe · github.com/tensorflow/tfjs-models · github.com/simplysuvi/hue-vision · github.com/jeeliz/jeelizPupillometry · github.com/PrincetonVision/TurkerGaze · github.com/cpury/lookie-lookie · github.com/auduno/clmtrackr · github.com/eduardolundgren/tracking.js · github.com/justadudewhohacks/face-api.js · github.com/Ahmednull/L2CS-Net · github.com/yakhyo/gaze-estimation · github.com/ck-zhang/EyeTrax · github.com/swook/GazeML · github.com/antoinelame/GazeTracking · github.com/mpatacchiola/deepgaze · github.com/RealEye-io/webcam-eyetracker-light-open · github.com/esdalmaijer/PyGaze · github.com/esdalmaijer/webcam-eyetracker · github.com/AIRLegend/aitrack · github.com/tcsantini/EyeRecToo · github.com/openPupil/Open-PupilEXT · github.com/pydsgz/DeepVOG · github.com/TadasBaltrusaitis/OpenFace · github.com/pupil-labs/pupil · github.com/CSAILVision/GazeCapture · github.com/xucong-zhang/ETH-XGaze · github.com/erkil1452/gaze360 · github.com/cvlab-uob/Awesome-Gaze-Estimation · github.com/pa7/heatmap.js
Docs/papers: WebGazer IJCAI'16 (jeffhuang.com/papers/WebGazer_IJCAI16.pdf) · WebGazer drift (Papoutsaki et al., ETRA 2018, "The Eye of the Typer") · iTracker/GazeCapture CVPR'16 (arXiv:1606.05814) · L2CS-Net (arXiv:2203.03339) · WebEyeTrack (arXiv:2508.19544) · MediaPipe Face Landmarker guide (developers.google.com/edge/mediapipe/solutions/vision/face_landmarker + /web_js) · Roboflow "How to Build Real-Time Eye Tracking in the Browser" (blog.roboflow.com/build-eye-tracking-in-browser/) · Appearance-based gaze review (arXiv:2104.12668) · MPIIGaze dataset (collaborative-ai.org/research/datasets/MPIIGaze/) · EyeDiap (idiap.ch) · NVGaze (research.nvidia.com) · OpenGaze toolkit (git.hcics.simtech.uni-stuttgart.de/public-projects/opengaze) · OpenIris (PMC10925248)
Report v1.2 · 2026-08-06 · Repo metadata snapshot: 2026-08-06 (GitHub API)
All reactions