Back to Projects

Frisbee Tracker


V1 (USA vs. Belgium 2025 U24 Mens World Championship)

Overview

This is a system that tracks players throughout the duration of an ultimate frisbee game. I built it with the goal to turn simple footage into trackable and analyzable data.


I've had this thought for sports tracking for players and analytics for a while. This isn't a new and revolutionary idea, but still has a ways to go. Also since beginning to use Claude Code, I've been able to put these larger projects into life.

Motivation

I saw a video where someone created tracking for soccer (yes soccer), and I figured why not try making this for other sports. Since ultimate frisbee is actually quite similar in structure to soccer, this felt quite repeatable.


Right now, it just tracks the players and occasionally the disc, but my goal for the future is to eventually convert the broadcast camera view into a top-down 2D visualization of the field, also track other nuances of the game such as how open/defended a player is, and play structure. I'm going to update this page as I make updates.

Approach

V1:

  • A quite pass through the video and learn the two team colors (k-means on jersey color), also identifies referees/observers (third-party color).
  • Each frame runs one high-resolution YOLO segmentation pass to find players and the disc. Skip non-field images (replays, close-ups) are skipped.
  • Every player is classified and drawn with a colored silhouette (red or blue). Players not in the game are drawn with gray.
  • The disc is tracked by pinning it to the holder's hands and whoever holds it is highlighted as the thrower (orange or green) until a throw, to avoid falsely detecting the holder.

Implementation

  • Python
  • YOLO11 for image detection
  • OpenCV for video analysis

Next Steps

One thing to keep of note are false positives with the bench. It still hasn't perfectly figured out players on the bench vs. players on the field. It picks up the interior yard lines fairly reliably, but struggles to draw bounding boxes around the field of play. Also, which you can see in the demo footage above, with the frisbee detection/tracking, there are false positives on bright, round things off the field.

  • Improve player/disc tracking
  • Convert image to top-down 2D view/field representation
  • Identify and determine player openness