← All projects

2017

UFC Fighter Tracking: Multi-Modal Sensing in the Octagon

Computer Vision Sensor Fusion Sports Analytics
End-to-end real-time analytics for live UFC events: stereo computer vision in the truss above the octagon, accelerometers in the gloves, GPU inference at the venue, and statistics streamed to fans worldwide. Built at AGT International in 2017 and demoed live by our CEO during Werner Vogels' keynote at AWS re:Invent 2017.

This is one of the projects I tell people about when they ask what the most fun thing I have ever worked on was. In 2017, while I was a Senior Data Scientist at AGT International in Darmstadt, our team built a real-time fighter-tracking and analytics system for the UFC. The product was launched as part of HEED, AGT's IoT-driven sports platform, and was presented in a live demonstration by our CEO Mati Kochavi during AWS CTO Werner Vogels' keynote at AWS re:Invent 2017 in Las Vegas (see the recording on YouTube).

The brief was easy to state, but the implementation was very complex: produce real-time, broadcast-quality statistics for an MMA fight, generated from the cage itself, with no human operator pressing buttons. The system had to work everywhere the UFC went, install in hours (usually the day before the event), survive the production environment of a live televised event, and feed numbers into the official mobile app while the fight was still happening.

UFC octagon from above, camera coverage

What We Measured

The output of the system was a continuous stream of statistics for each of the two fighters:

All of this was published to the cloud, aggregated, and pushed to the consumer-facing UFC app and to broadcast graphics in near real time.

Hardware in the Truss

Coverage of a UFC octagon, with eight sides, fast lateral motion, and frequent occlusions when fighters clinched, was the first hard problem. We solved it with two Stereolabs ZED RGB-D cameras mounted on the truss above the cage, angled to give overlapping fields of view that covered the entire fighting surface. The depth channel was crucial: knowing the distance of each fighter from the camera let us resolve the ambiguities that single RGB streams suffered from, especially during ground exchanges.

Both cameras were cabled to a GPU-equipped PC, also mounted on the truss, which performed all the perception work locally. Doing inference at the venue (rather than streaming raw footage to a remote machine) was a deliberate choice; it eliminated the network as a bottleneck, kept latency in the sub-second range, and meant the system kept working even when venue connectivity wobbled. The PC then streamed only the resulting statistics down to the cloud over a much narrower data path.

Sensor Fusion: Vision + Accelerometers

Pure vision could detect that a punch had been thrown, but not whether it had connected, and certainly not the punch type with the precision the UFC wanted. The fix was multi-modal: a parallel sensor team had instrumented the fighters' gloves with accelerometers, providing a second, completely independent signal for every strike.

We fused the two streams in real time:

Hardware setup and data processing

Cloud and Delivery

Once produced at the edge, the statistics were ingested through AWS services (Kinesis for ingestion, downstream services for processing, persistence, and fan-out; see AGT's separate AWS re:Invent 2017 talk on the Kinesis side of the architecture). From there they were relayed to the UFC app and to broadcast partners.

This was a project where I was involved end to end: