-
-
StrikeZone's landing page
-
Main Desk page, playing the video while tracking and displaying each punch
-
Strike Map/Heatmap page, displaying the location and intensity of all hits taken by a fighter
-
Hovering on a hit on the heatmap shows a looping preview of the hit and some quick insights
-
Clicking on a hit on the heatmap shows a more detailed view including a longer preview and nearby strikes
-
StrikeZone's logo
Inspiration
Being fans of other sports, we've seen how they use technology to augment their broadcasts by providing data-backed overlays. Boxing is a fast-growing industry, with recent fights reaching hundreds of millions of viewers as the industry shifts from PPV to streaming. We want to provide the tooling to make fight analysis objective, fast, and visual by turning raw footage into clear strike data. We're targeting not only broadcasters and promoters, but also trainers and boxers inspired to join the sport all over the world.
What it does
StrikeZone detects fighters, tracks punch impacts and classifies strike zones, allowing us to produce engaging graphics like strike heatmaps and live punch tracking alongside a video.
Boxing gyms will be able to set up cameras in their rings, allowing them to provide access our analytics technology and thus adding value to their business. Gyms are keen to implement technology that makes them the best option in their area: body fat scanners, sports water dispensers, etc. For a low subscription cost, they'll be able to provide state-of-the-art analytics on a customer's spars and fights. On a larger scale, broadcasters will be able to display our fight analytics on their streams live, increasing audience engagement.
How we built it
Our platform uses a three-layer artificial intelligence pipeline to turn raw boxing footage into structured biomechanical data without using any wearable sensors. First, we use YOLOv8 to detect the fighters in the frame and apply a custom colour-space filter to their shorts to correctly identify the attacker and defender, regardless of how they move around the ring.
We then feed these isolated crops into two independent instances of Google MediaPipe Pose to map 33 3D skeletal keypoints (like wrists, hips, and shoulders) onto each fighter in real-time. Finally, we built a custom physics and geometry engine on top of this raw keypoint data: it calculates when the attacker’s wrist intersects with dynamic bounding boxes drawn around the defender’s head or torso, measures the wrist’s pixel displacement over the preceding frames, converts that speed into real-world meters per second (m/s) using shoulder-width as a scale reference, and outputs the exact impact location and intensity as a JSON data feed for our interactive dashboard written in Next.js.
Challenges we ran into
- Fast motion blur - Boxing fighters tend to move quickly, feinting and slipping punches. We had to optimise our detection as best as we can to avoid false positives
- Fighter occlusion - With a single camera, one fighter will inevitably end up passing between the camera and the other fighter. We've added support for multiple cameras, combining what they see to provide and use a confidence score to detect impacts
- Camera-angle variation
- Reducing false positives from feints/guards
Accomplishments that we're proud of
- Accelerating our data processing, producing the heatmap as quickly as possible
- The design of our system, balancing functionality while avoiding clutter
What's next for StrikeZone
- Broader support for other combat sports
- Coach-ready reporting tools, providing insights on our data once we can produce that we're confident in
- Richer per-round analytics, with the ability to output graphics to show during the break between rounds consistently
- Seek opportunities to roll out our project, starting with implementing our technology in local gyms. Being students, we'll first endeavour to reach out to university-linked boxing training gyms and provide broadcast graphics for university fight nights, which are only growing in popularity
Log in or sign up for Devpost to join the conversation.