The output is only as good as the method behind it.
A tool that makes claims about human behaviour owes you an account of how it got there. Here is ours.
The science predates us by decades
Paul Ekman and Wallace Friesen spent two decades building the Facial Action Coding System. It maps a measurable movement of the face to a numbered action unit. We did not invent it. We implemented it at scale, in a browser, on any video you hand us.
FACS was first published in 1978, and has been used in clinical, security, and performance psychology since the 1990s.
The pipeline is open to inspection
We use Google's open source face mesh, which maps 468 points across the face at up to 30 frames per second. From those points we compute eye openness, head pose, and action unit proxies from published geometric relationships. Each formula carries a citation.
Face mesh, Kartynnik et al. 2019. Eye aspect ratio, Soukupova and Cech 2016.
We do not keep your video
This is an architecture decision, not a policy line. On the in-browser path the whole vision pipeline runs in your browser and the video stays there. Room mode, a second camera, a probe that finds 20 or more faces, or a browser that cannot decode the file will route it to a GPU server, where it is deleted once the run finishes, or within 60 minutes if it fails. We keep the numbers, not the footage.
Open your network inspector during a read. You will see no upload of your video. On the server path you will see the upload, which is the tell.
Confidence is shown, not hidden
Each finding carries a level: High, Medium, Low, or Abstain. Abstain means the engine did not have enough reliable data, so it says nothing. A finding from twelve shaky frames is not one from four hundred stable ones, and the report tells you which you have.
A quality gate runs first, with a minimum for clip length, for how often a face is found, and for image quality. Below that bar, the engine abstains.
Probabilistic language is not weakness
A brow furrow is associated with cognitive effort. So we write findings as likelihoods, with a confidence level on each reading, because that is what the evidence supports. A tool that speaks in absolutes about people is not more powerful. It is less honest.
Each probabilistic finding carries a flag and a plain note on what the signal measures.
The work this is built on.
- Ekman, P. and Friesen, W. V. (1978). Facial Action Coding System: A Technique for the Measurement of Facial Movement. Consulting Psychologists Press. The manual that defines the numbered action units.
- Kartynnik, Y., Ablavatski, A., Grishchenko, I. and Grundmann, M. (2019). Real-time Facial Surface Geometry from Monocular Video on Mobile GPUs (MediaPipe FaceMesh, 468 landmarks). arXiv:1907.06724. The 468 point mesh we run on the frames we sample. Clip length sets the sampling rate.
- Soukupova, T. and Cech, J. (2016). Real-Time Eye Blink Detection using Facial Landmarks. 21st Computer Vision Winter Workshop. PDF. The eye aspect ratio method, for eye openness and blinks.
How the method holds up.
How does the GRW engine actually measure behaviour from a video?
What are the four channels GRW reads?
What is FACS, and did GRW invent it?
What do the confidence levels mean, and when does it abstain?
Scrutinise it. Then decide.
The people who check the method before they trust the output get the most from it.