Machine learning · 2026

Seven expressions, no server.

The original project was a notebook with its weights on a Google Drive — nothing you could run. This is a retrained convolutional network on FER-2013, exported to ONNX and executed client-side, so a face never leaves the page.

Emotion Recognition on screen
69.2%
test accuracy, FER-2013
1.2M
parameters
7,178
held-out test faces
0
images leave your device
Built with
PyTorchONNX Runtime WebFER-2013

An honest number

Human agreement on FER-2013 is about 65% and published state of the art is near 73%. A model small enough to download lands below both, and the demo prints its real test accuracy and per-class recall rather than a number chosen to impress.

Disgust is the whole difficulty

The training set has 7,215 happy faces and 436 disgusted ones. Accuracy alone hides that: a model can ignore disgust completely and barely be punished. The loss is inverse-square-root weighted and the confusion matrix is published.