TrafficWatch watches one fixed CCTV view of a signalised junction, reports 14 kinds of traffic
events as [start, end, label] segments, and streams a causal accident-risk score frame by frame.
Built by team IntDev.
One camera, one angle, no labels. Instead of training a video classifier on footage we do not have, we turn the video into trajectories on a map of this junction and express every class as a rule over them โ the same definitions the annotators use (start/end conventions included).
learned Road-user detection only: YOLO11s pre-trained on COCO (Ultralytics weights, no fine-tuning โ we have no labels for this camera).
rule-based Everything after detection: tracking, the scene map, signal reading, all 14 event classes and the Part B risk score. Rules are deterministic, explainable and unit-tested on synthetic trajectories drawn on the real map.
Why: the hidden test set contains events that are not in the samples, so any classifier trained on the samples would not have seen them. Rules written from the class definitions do not need examples.
| Class | Rule | Start โ end |
|---|
Stills first (they shaped the scene map), then the sample videos.
Annotated playback rendered with our own tooling. Click an event on the timeline to jump to it.
Sample-video results appear here once tools/build_site_data.py has been run on the samples.
All sample videos together, as a traffic centre would read them.
Waiting for sample-video data.
Run the full model on a free Google Colab T4 GPU: open the notebook, choose Runtime โ Run all,
and use the app at the gradio.live link it prints (about 3 minutes to start).
When a demo server is running, you can also upload an .mp4 up to 2 minutes and 200 MB from this camera right here; progress is shown below.
A detector โ tracker โ map โ rules pipeline (Part A), a causal closest-point-of-approach risk model (Part B), and the tooling around it: scene registration, a labeling page for dev sets, annotated renders, EDA, a Gradio demo that runs on a free Colab GPU and 26 unit tests with synthetic trajectories on the real layout.
illegal_turn needs the junction's prohibited movements; until confirmed it is never predicted,
because a predicted class that never occurs costs a whole class in the macro-F1.