Skip to main content

OpenSportsLib is the professional library, designed for advanced video understanding in sports. It provides state-of-the-art tools for action recognition, spotting, retrieval, and captioning, making it ideal for researchers, analysts, and developers working with sports video data.

Project description

OpenSportsLib

OpenSportsLib is a modular Python library for sports video understanding.

It provides a unified framework to train, evaluate, and run inference for key temporal understanding tasks in sports video, including:

  • Action classification
  • Action localization / spotting
  • Action retrieval
  • Action description / captioning

OpenSportsLib is designed for researchers, ML engineers, and sports analytics teams who want reproducible and extensible workflows for sports video AI.

Why OpenSportsLib?

  • Unified workflow for training and inference
  • Modular design for adding new tasks, datasets, and models
  • Config driven experiments for reproducibility
  • Support for multiple modalities and sports workflows
  • Research friendly while still usable in applied settings

Quick links


Installation

Requires Python 3.12+.
Supports CUDA 12.6 / 12.8 / 13.0 (with CPU fallback).
PyTorch Geometric is supported up to PyTorch 2.10.*.

Stable release

pip install opensportslib

Pre release

pip install --pre opensportslib

Setup Environment (PyTorch, CUDA aware & Optional Dependencies)

# Install PyTorch (CPU/GPU auto-detected)
opensportslib setup

# Optional: install PyTorch Geometric support
opensportslib setup --pyg

# Optional: install for DALI support
opensportslib setup --dali

Note:
Run opensportslib setup to automatically configure dependencies.
If issues occur, manually install compatible versions of torch, torchvision, and related libraries according to your CUDA version or system compatibility.


Data and pretrained models

OpenSportsLib uses external annotation files, datasets, and pretrained checkpoints.

Public assets are hosted under the OpenSportsLab Hugging Face organization:

https://huggingface.co/OpenSportsLab

Use it as the main entry point to find:

  • datasets
  • annotation files
  • extracted features
  • pretrained models and checkpoints

--

Quickstart

Import the library

import opensportslib
print("OpenSportsLib imported successfully")

Train a classification model

from opensportslib.apis import ClassificationModel

my_model = ClassificationModel(
    config="/path/to/classification.yaml",
    weights="/path/to/weights.pt",  # optional
)

my_model.train(
    train_set="/path/to/train_annotations.json",
    valid_set="/path/to/valid_annotations.json",
)

Run inference

from opensportslib.apis import ClassificationModel

my_model = ClassificationModel(
    config="/path/to/classification.yaml",
    weights="/path/to/weights.pt",  # optional
)

predictions = my_model.infer(
    test_set="/path/to/test_annotations.json",
)

saved_predictions = my_model.save_predictions(
    output_path="/path/to/predictions.json",
    predictions=predictions,
)

metrics = my_model.evaluate(
    test_set="/path/to/test_annotations.json",
)

metrics_from_file = my_model.evaluate(
    test_set="/path/to/test_annotations.json",
    predictions=saved_predictions,
)

print(metrics)

Localization example

from opensportslib.apis import LocalizationModel

my_model = LocalizationModel(
    config="/path/to/localization.yaml",
    weights="/path/to/weights.pt",  # optional
)

predictions = my_model.infer(
    test_set="/path/to/test_annotations.json",
)

saved_predictions = my_model.save_predictions(
    output_path="/path/to/predictions.json",
    predictions=predictions,
)

metrics = my_model.evaluate(
    test_set="/path/to/test_annotations.json",
)

metrics_from_file = my_model.evaluate(
    test_set="/path/to/test_annotations.json",
    predictions=saved_predictions,
)

Hugging Face Dataset Transfer

OpenSportsLib provides APIs and scripts for downloading and uploading OSL datasets with Hugging Face.

Python API

from opensportslib.tools import (
    download_dataset_split_from_hf,
    upload_dataset_inputs_from_json_to_hf,
    upload_dataset_as_parquet_to_hf,
)

Scripts

python tools/download_osl_hf.py --repo-id <org/repo> --revision main --split test --format parquet --output-dir downloaded_data
python tools/upload_osl_hf.py --repo-id <org/repo> --json-path <local_dataset.json> --split test --revision main

Downloads are placed under <output-dir>/<revision>/<split>.


What you can do with OpenSportsLib

Action Classification

Classify clips or event centered samples into predefined categories.

Action Localization / Spotting

Predict when key events happen in long untrimmed sports videos.

Action Retrieval

Search and retrieve relevant clips or moments from a collection of sports videos.

Action Description / Captioning

Generate text descriptions for sports events and temporal segments.


Typical workflow

  1. Prepare your dataset in the expected format
  2. Select or create a YAML config
  3. Initialize the task specific model
  4. Train on your annotations
  5. Run inference on new data
  6. Extend the pipeline with your own datasets or models

Examples and documentation

Use the README for the fast start, then go deeper through:


Development setup

For contributors who want to work from source:

git clone https://github.com/OpenSportsLab/opensportslib.git
cd opensportslib
pip install -e .

Conda option

If you prefer conda:

conda create -n osl python=3.12 pip
conda activate osl
pip install -e .

Setup Environment (PyTorch, CUDA aware & Optional Dependencies)

# Install PyTorch (CPU/GPU auto-detected)
opensportslib setup

# Optional: install PyTorch Geometric support
opensportslib setup --pyg

# Optional: install for DALI support
opensportslib setup --dali

Git workflow

  1. Make sure you are branching from dev
  2. Create your feature or fix branch from dev
  3. Open a pull request back into dev

Contributing

We welcome contributions to OpenSportsLib.

Please check:

These documents describe:

  • how to add models and datasets
  • coding standards
  • training pipeline structure
  • how to run and test the framework

License

OpenSportsLib is available under dual licensing.

Open source license

AGPL 3.0 for research, academic, and community use.

Commercial license

For proprietary or commercial deployment, please refer to LICENSE-COMMERCIAL.


Citation

If you use OpenSportsLib in your research, please cite the project.

@misc{opensportslib,
  title={OpenSportsLib},
  author={OpenSportsLab},
  year={2026},
  howpublished={\url{https://github.com/OpenSportsLab/opensportslib}}
}

Acknowledgments

OpenSportsLib is developed within the broader OpenSportsLab effort for sports video understanding.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opensportslib-0.1.2.dev9.tar.gz (200.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opensportslib-0.1.2.dev9-py3-none-any.whl (241.8 kB view details)

Uploaded Python 3

File details

Details for the file opensportslib-0.1.2.dev9.tar.gz.

File metadata

  • Download URL: opensportslib-0.1.2.dev9.tar.gz
  • Upload date:
  • Size: 200.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for opensportslib-0.1.2.dev9.tar.gz
Algorithm Hash digest
SHA256 af2564eb18c879bdef383f8dacb8de9fe10b93d04439de495bf0a377580761c6
MD5 029876a83a422f2e514f173aaa5a247f
BLAKE2b-256 95bcc57d6b883bf7241f4b2c894e0290711c2d249b81b12100feb8211d5e1a47

See more details on using hashes here.

File details

Details for the file opensportslib-0.1.2.dev9-py3-none-any.whl.

File metadata

File hashes

Hashes for opensportslib-0.1.2.dev9-py3-none-any.whl
Algorithm Hash digest
SHA256 4d5a939fae2e8a65895af4d9a8fff648eafceff44fcf5ca91cb1525d1d1a5db1
MD5 dbe77bbad0f0c1028af7a307bf8b20ef
BLAKE2b-256 cbae55c8f8d1ca8e1d3eff29f84fef8f3ed08407b740c3faf9f1f969b99681dd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page