Test makeup videos
The Loader lets you pause an MP4 and repeat a test at the same timestamp. For live camera input, use the Lab.
The file stays local to the browser. Selecting a video does not upload it.
Compare two frames
Wait for Ready
The status indicates when the local face-api models and the experimental image embedder have loaded.
Select Load MP4
Choose a video from your device. The duration and millisecond timeline become available when the browser decodes its metadata.
Choose a baseline frame
Pause the video and move the timeline to a clear face. Note the displayed time, then select Record face.
Choose a comparison frame
Move to another time. Keep the variable you want to study clear, such as pose, expression, occlusion, or visible makeup.
Select Seek face
The Loader detects the current face and compares it with the saved 2D and 3D records. A new activity entry is added at the time where you pressed the button.
Read the log
Record the timestamp, nearest ID, 2D distance, 3D similarity, thresholds, and whether each pipeline returned a face.


Record creates the reference. Seek compares with it.
| Action | What it does | What appears in the log |
|---|---|---|
| Record face | Saves a 128-value face-api descriptor, a thumbnail when available, and an experimental image embedding under the same ID. | Saved ID, detection score, 2D landmark count, embedding length, and video position. |
| Seek face | Detects the face in the current frame and compares it with the faces already in memory. | Nearest 2D distance, nearest 3D similarity, faces compared, thresholds, and structured details. |
The 2D and 3D numbers have opposite directions. A lower face-api Euclidean distance is closer. A higher image-embedding cosine similarity is closer. Do not compare the raw numbers as if they used the same scale.

Control the frame. Record the environment.
- Pause before pressing an action. Confirm the playhead after the seek completes.
- Use the same file and timestamp when comparing revisions of the application.
- Record browser, model files, hardware backend, and thresholds for consequential comparisons.
- Do not treat the wall-clock time in the log as the video timestamp. The video position chip is the relevant one.
- A frame with no detected face is a valid observation, but it does not produce an identity comparison.
This is a work in progress.
Proposed features include Ghostyle extraction, before-and-after differences and continuous distance recording. Discuss them in the github issues.