Downloads · 30 days
0
Sanyam10101/Eye_MosueX
Eye_MosueX is a image classification model from Sanyam10101. Use it when you need a label for an image. It is set up for onnx. The card lists the license as mit.
A webcam-based gaze tracking system that turns any consumer laptop into a UX research tool. Browse a website, and get back a heatmap, an attention timeline, and a ranked list of which page elements actually held your…
Downloads · 30 days
0
Access
Public
Updated Jul 23, 2026
Repo size
52.9 MB
Likes
0
Public
Click a slice to open those files.
.pt17.9 MB · 34%
From the Hugging Face model README
A webcam-based gaze tracking system that turns any consumer laptop into a UX research tool. Browse a website, and get back a heatmap, an attention timeline, and a ranked list of which page elements actually held your gaze.
No specialist hardware — just a webcam.
This is a local desktop app, not a hosted demo. It needs a physical webcam, a native window, and full-screen capture — none of which exist on a server, so it cannot run as a Hugging Face Space. Clone it and run it on your own machine.
git clone https://huggingface.co/<your-username>/insightux
cd insightux
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
This includes onnx, which calibrate.py needs when it exports the
fine-tuned model after training.
Do not pip install --upgrade pywebview or pythonnet. requirements.txt
pins pywebview==4.4.1 and pythonnet==3.0.3 deliberately — newer versions
have a bug in their Windows backend that freezes the app window and floods
the console with:
AccessibilityObject.Bounds.Empty.Empty.Empty.Empty...
If you already have a newer version installed globally, this install step will replace it with the working one.
python calibrate.py
Sit normally at your usual distance from the screen, look at each of the 16 dots as they appear. Takes about a minute. This is per-person and per-setup — your eyes, your camera, your screen size. Everyone using this must run it themselves; it is not something you can copy from someone else.
Re-run it if your lighting, seating position, or camera position changes noticeably.
At the end it prints an honest quality readout, including whether the model can actually see where you're looking on each axis:
HORIZONTAL yaw vs screen-X : r = +0.995
VERTICAL pitch vs screen-Y: r = +0.883
If either number is low, the report will say so plainly and explain why — that means the model isn't seeing that axis, and no amount of recalibrating will fix it.
python validate.py
Flashes 9 test dots and reports your real error in pixels. Good for knowing what to expect before relying on a session.
python browser_session.py
| File | Purpose |
|---|---|
models/gaze_cnn_v4.onnx (+ .onnx.data) | Binocular gaze CNN (EfficientNet-B0 backbone, dual eye patches + head pose) |
models/model_v4.py | Model architecture definition, used during calibration fine-tuning |
checkpoints/best_model_v4.pt | PyTorch checkpoint for fine-tuning |
calibrate.py | Per-user calibration — 16-point, live blink/lighting rejection, honest quality report |
validate.py | Measures real accuracy in pixels after calibration |
browser_session.py | The research browser — search, track, auto-report |
analysis.py | Builds the session report (heatmaps over real screenshots) |
inference_pipeline.py | ONNX inference + RBF gaze→screen calibration mapping |
preprocessing/preprocessing_pipeline.py | Eye patch normalization, head pose estimation, illumination correction |
calibration.pkl (generated by calibrate.py) encodes your eye geometry,
your camera characteristics, and your screen size. It is deliberately
not in this repo — it would be useless to anyone else and it's personal
data. Run calibrate.py yourself; it takes about a minute.
This is a webcam system, not a Tobii. Expect roughly 5–10% of screen diagonal mean error after a good calibration. That's enough for coarse AOI attribution (navbar vs hero vs footer) and heatmaps. It is not enough for reading-level analysis (which word you're on).
Vertical accuracy is typically a bit looser than horizontal — looking down partially occludes the iris under the eyelid, a physical limit of webcam gaze estimation, not a bug. Calibration automatically checks whether eye aperture (eyelid closing as you look down) tracks vertical position better than the model's raw output, and uses whichever signal is actually stronger.
solvePnP assumes zero distortion, which
costs some accuracy near frame edges.Window freezes with AccessibilityObject.Bounds.Empty.Empty.Empty...
spamming the console:
Confirm you actually have the pinned versions installed, not newer ones:
pip uninstall pywebview pythonnet -y
pip install pywebview==4.4.1 pythonnet==3.0.3
If it persists after that, turn off Xbox Game Bar (Settings → Gaming →
Xbox Game Bar) and any overlay software (Discord overlay, GeForce
Experience, OBS), then restart your PC — those hooks stay loaded until a
real reboot. Last resort: install PyQt5 + PyQtWebEngine (see
requirements.txt) and switch the GUI backend as described there.
"No calibration.pkl found" when pressing S:
Run python calibrate.py first — it must exist before browser_session.py
can track anything.
Can't type in the search box: Click directly into the search field first — this can happen if the window just opened and hasn't fully grabbed keyboard focus yet.
MIT.