This repo for extracting tracking data from broadcast TV feed using AI to analyze football matches in 3 main steps
we used YOLOv5 PyTorch Hub inference, to load pretrained YoloV5l model,
for more visit:
ultralytics/yolov5
our tracker was built on top of Deep SORT algorithm,
which was implemented in nwojke/deep_sort
we used resnet model trained on many footages of football pitches from sportsfield_release to generate projection matrix to map the TV video into 2D 1080*680 football pitch
finally after step 3 the tracking data of the TV footage is generated, and could by used to get whatever statistics and insights we want.
#clone the repo
git clone https://github.com/JooZef315/football-tracking-data-from-TV-broadcast
#go to the directory
cd football-tracking-data-from-TV-broadcast/
#install the dependencies
pip install -r requirements.txt # install
Then Download the pretrained weights for the resnet model from HERE!
Extract all the content of the downloaded 'out.zip', and move the 2 extracted folders to
./projection_2D/pretrained_weights/out/
The basic usage of this repo is to generate tracking data dataframe:
from Detect_and_Track.get_init_data import get_init_data
from projection_2D.get_tracking_data import get_tracking_data
#call get_init_data function with arguments:
#TV video path, a name to name output video and the intial dataframe(with unmapped coordinates relative to TV video),
#and list of two teams colors as described in create_df.py file, and whether or not to save only the frames with the ball detected in them.
get_init_data(path, out_name, teams_colors, ball_only):
#the output video with players and ball tracked, and the intial dataframe would be saved in Out/
#use them as arguments to get_tracking_data function, to generate the final tracking data dataframe
tracked_frames, bboxes = get_tracking_data(df_path, tracked_video_path, out_name)
#the output is a dataframe with players and ball tracked and mapped to 2D pitch, which would be saved in "Out/" too.
to use it for players/ball detection only
from Detect_and_Track.demo_detection import detect_demo
#call detect_demo with path of any image of a football match footage, the function would show the image with players and ball detected, and return the coordinates of the bounding boxes
detect_demo(img_path)
to use it for players/ball detection and tracking only
from Detect_and_Track.get_tracks import get_video_tracks
from Detect_and_Track.create_tracking_boxes_video import create_tracking_boxes_video
#call get_video_tracks with path of any football match footage,
# for more info see Detect_and_Track/get_tracks file
#the function would save new clean video without zoomed in frames in "Out/" folder with the chosen name
get_video_tracks(video_path, output_video_name)
#and to create the video with tracking boxes around players
#the function would save new video with playerrs/ball tracked -each with unique ID-, in "Out/" folder with the chosen name
create_tracking_boxes_video(video_path, output_video_name)
This project is licensed under the MIT - see the LICENSE file for details