Paper | Project Page | Model Weights | PhyFPS-Bench-Gen
"Not only do we measure the movement by the time, but also the time by the movement, because they define each other." — Aristotle, Physics
Visual Chronometer predicts the Physical Frames Per Second (PhyFPS) of a video — the true temporal scale implied by its visual motion, independent of container metadata. We reveal that state-of-the-art video generators suffer from severe chronometric hallucination: their outputs exhibit ambiguous, unstable, and uncontrollable physical motion speeds.
Left: Original generated video at container FPS. Right: Corrected to PhyFPS using Visual Chronometer. User studies confirm corrected videos are perceived as more natural.
git clone https://github.com/taco-group/Visual_Chronometer.git
cd Visual_Chronometer/inference
pip install -r requirements.txtThe checkpoint is automatically downloaded from HuggingFace when you first run inference. No manual download is needed.
Alternatively, you can download it manually:
| Model | Range | Download |
|---|---|---|
| VC-Common | 10–60 FPS | vc_common_10_60fps.ckpt |
Place the file in inference/ckpts/.
cd inference
python predict.py --video_path demo_videos/gymnast_50fps.mp4Expected output:
============================================================
Video: gymnast_50fps.mp4
Average PhyFPS: 50.5
============================================================
Segment Frames Mid Frame PhyFPS
-------- ------------ ---------- --------
0 0-29 15 54.9
1 4-33 19 52.2
2 8-37 23 50.8
...
AVG 50.5
cd inference
python predict.py --video_dir path/to/videos/ --output_csv results.csvThree demo videos with known ground-truth FPS are included in inference/demo_videos/:
| Video | Ground Truth | Predicted PhyFPS | Error |
|---|---|---|---|
gymnast_24fps.mp4 |
24 FPS | 24.2 FPS | 0.8% |
gymnast_30fps.mp4 |
30 FPS | 30.3 FPS | 1.0% |
gymnast_50fps.mp4 |
50 FPS | 50.5 FPS | 1.0% |
A benchmark of 100 prompts for auditing the temporal consistency of video generators. See PhyFPS-Bench-Gen/README.md for usage.
Quick evaluation:
# 1. Generate videos with your model
your_model --prompts PhyFPS-Bench-Gen/prompts.txt --output generated/
# 2. Predict PhyFPS
cd inference
python predict.py --video_dir ../generated/ --stride 4 --output_csv results.csv@article{gao2026visual_chronometer,
title={The Pulse of Motion: Measuring Physical Frame Rate from Visual Dynamics},
author={Gao, Xiangbo and Wu, Mingyang and Yang, Siyuan and Yu, Jiongze and Taghavi, Pardis and Lin, Fangzhou and Tu, Zhengzhong},
year={2026}
}

