Skip to content

Why trust this

The output is only as good as the method behind it.

A tool that reads behaviour owes you an account of its method. Here is ours.

01

Where the names come from

Ekman and Friesen built the Facial Action Coding System (FACS). It numbers each face movement as an action unit. We borrow the names, not the method: FACS coding is done by trained human coders. On a read of one person, the engine computes cues for some action units. It codes no emotion.

FACS was published in 1978. We checked our cues against OpenFace, an automated tool. They fell short on nine clips out of nine. No human coder has checked them. So they are cues, not exact measures.

02

Two reads, two methods

One person and a full room are read in different ways. Each formula carries a citation.

One person
468 point face meshGoogle's open source model, up to 30 frames a second.
Eye openness, head pose and action unit cues
A full room on one camera
A face detectorNo mesh. No action units.
A face count, and which way the room facesNo per-person score.

Face mesh: Kartynnik et al. 2019. Eye openness: Soukupova and Cech 2016. An audience face in a venue is 25 to 35 pixels wide. A fine face read at that size measures noise, so the room read does not try one.

03

We do not keep your video

This is how the product is built, not just a policy.

Your video
In your browserThe standard path. The vision pipeline runs here, and the video stays here.
On a GPU serverRoom mode, a second camera, a probe that finds 20 or more faces, or a file your browser does not decode. Deleted when the run ends, or within 60 minutes if it fails.
We keep the numbers, not the footage

Check it: open your network inspector during a read. On the in-browser path there is no upload of your video. On the server path you will see the upload.

04

Each finding shows its confidence

Each finding carries a level. Abstain means the engine did not have enough reliable data, so it says nothing. Twelve shaky frames are not four hundred steady ones, and the report says which you have.

Footage
Quality gateA floor for clip length, how often a face is found, and image quality.
PassesA finding, with a level: High, Medium or Low.
Falls shortAbstain. No number.
05

Likelihoods, not certainties

A brow furrow goes with mental effort, but does not prove it. So findings are written as likelihoods, each with a level. A tool that talks about people in absolutes is not stronger. It is less honest.

Each likelihood finding carries a flag and a plain note on what the signal measures.

Research basis

The work this is built on.

  1. 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.
  2. 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. We run this mesh on sampled frames when the read is of one person. Clip length sets the sampling rate. A room read does not use it.
  3. 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.
Common questions

How the method holds up.

How does the GRW engine read behaviour from a video?

For one person, it maps 468 points on the face, up to 30 times a second. From those points it works out eye openness, head pose and face movement. For a room, it counts faces and how many face the front.

What are the four channels GRW reads?

Face, body, voice and words. Face and body are read on your device. A server path adds voice and words. The report shows where they agree and where they differ.

What is FACS, and did GRW invent it?

FACS is the Facial Action Coding System, published by Ekman and Friesen in 1978. GRW did not invent it and does not run it: trained human coders do. GRW borrows its names for some face movements, and codes no emotion.

When does GRW abstain instead of returning a score?

A quality check runs first. If the footage is too thin to score, the engine abstains. It says nothing rather than guess.

Check the method. Then decide.

People who check the method first get the most from the output.