Skip to content

Model Zoo

This page lists OpenSportsLib checkpoints, config-only algorithms, and supporting model components published on Hugging Face. Task checkpoints can be loaded with load_weights(...); config-only algorithms and supporting components use the loading instructions in their sections below.

Scores, class lists, and intended-use statements below come from model cards, published configs, or the library's component configuration. Scores are not computed or verified at documentation-build time. Missing training provenance and scores are marked Not reported. Follow each linked repository for its artifact details; a listing here does not certify end-to-end inference.

Available Models

Model Task Dataset trained on Backbone / architecture Classes / label set Scores Hugging Face link Loading
OSL-cls-action-mvitv2 Action / Event Classification SoccerNet - MVFouls classification subset MViT v2 Not reported on model card Accuracy: 0.57
Balanced Accuracy: 0.40
Top-2: 0.78
OpenSportsLab/OSL-cls-action-mvitv2 myModel.load_weights(weights="OpenSportsLab/OSL-cls-action-mvitv2")
OSL-loc-snbas-2023-e2e Action Spotting / Localization SoccerNet - Ball Action Spotting 2023 E2E, DALI backend PASS, DRIVE tight mAP: 71.48
loose mAP: 85.62
OpenSportsLab/OSL-loc-snbas-2023-e2e myModel.load_weights(weights="OpenSportsLab/OSL-loc-snbas-2023-e2e")
OSL-loc-snbas-2025-e2e Action Spotting / Localization SoccerNet - Ball Action Spotting 2025 E2E, DALI backend PASS, DRIVE, HEADER, HIGH PASS, OUT, CROSS, THROW IN, SHOT, BALL PLAYER BLOCK, PLAYER SUCCESSFUL TACKLE, FREE KICK, GOAL tight mAP: 47.98
loose mAP: 58.35
OpenSportsLab/OSL-loc-snbas-2025-e2e myModel.load_weights(weights="OpenSportsLab/OSL-loc-snbas-2025-e2e")
OSL-VQA-XFOUL-XVARS-lora Visual Question Answering (VQA) OSL-XFoul X-VARS VideoChatGPT + LoRA Referee-style soccer VQA Accuracy: 72.24%
Balanced Accuracy: 50.00%
OpenSportsLab/OSL-VQA-XFOUL-XVARS-lora myModel.load_weights(weights="OpenSportsLab/OSL-VQA-XFOUL-XVARS-lora")
OSL-VQA-XFOUL-qwen2.5-7B-VL-lora Visual Question Answering (VQA) OSL-XFoul Qwen2.5-VL-7B-Instruct + LoRA Referee-style soccer VQA Accuracy: 65.77%
Balanced Accuracy: 36.59%
OpenSportsLab/OSL-VQA-XFOUL-qwen2.5-7B-VL-lora myModel.load_weights(weights="OpenSportsLab/OSL-VQA-XFOUL-qwen2.5-7B-VL-lora")
OSL-VQA-XFOUL-qwen3-8B-VL-lora Visual Question Answering (VQA) OSL-XFoul Qwen3-VL-8B-Instruct + LoRA Referee-style soccer VQA Accuracy: 69.96%
Balanced Accuracy: 48.33%
OpenSportsLab/OSL-VQA-XFOUL-qwen3-8B-VL-lora myModel.load_weights(weights="OpenSportsLab/OSL-VQA-XFOUL-qwen3-8B-VL-lora")
skeleton-header-max-recall Header spotting Not applicable: rule-based algorithm Skeleton maximum-recall rules; CPU, HDF5 tracking inputs header Not reported OpenSportsLab/skeleton-header-max-recall Config only; no weights
OSL-loc-tennis-public Tennis action spotting / localization Not reported E2E: rny002_gsm + GRU no_swing, swing (published config) Not reported OpenSportsLab/OSL-loc-tennis-public Checkpoint and local inputs

Supporting Components

These repositories supply components for a configured VQA model. They are not standalone task models to pass to a task wrapper's load_weights(...) method.

Component Role Training source Scores Hugging Face link Configuration
base_model_videoChatGPT X-VARS decoder model and tokenizer bundle Not reported Not reported OpenSportsLab/base_model_videoChatGPT Decoder repository
trained-clip-vit-large-patch14 Visual encoder checkpoint for the CLIP ViT-L/14 component Not reported Not reported OpenSportsLab/trained-clip-vit-large-patch14 Visual encoder weights

OSL-cls-action-mvitv2

Intended use: video-based soccer action / event classification.

Dataset/training source: SoccerNet - MVFouls classification subset, using video clips.

Reported metrics:

Metric Score
Accuracy 0.57
Balanced Accuracy 0.40
Top-2 0.78

Hugging Face: OpenSportsLab/OSL-cls-action-mvitv2

myModel.load_weights(weights="OpenSportsLab/OSL-cls-action-mvitv2")

OSL-loc-snbas-2023-e2e

Intended use: video-based soccer action spotting / localization.

Dataset/training source: SoccerNet - Ball Action Spotting 2023, using video clips at 224p resolution. The model card reports two classes: PASS and DRIVE.

Reported metrics:

Metric Score
tight mAP 71.48
loose mAP 85.62

Hugging Face: OpenSportsLab/OSL-loc-snbas-2023-e2e

myModel.load_weights(weights="OpenSportsLab/OSL-loc-snbas-2023-e2e")

OSL-loc-snbas-2025-e2e

Intended use: video-based soccer action spotting / localization.

Dataset/training source: SoccerNet - Ball Action Spotting 2025, using video clips at 224p resolution. The model card reports twelve classes: PASS, DRIVE, HEADER, HIGH PASS, OUT, CROSS, THROW IN, SHOT, BALL PLAYER BLOCK, PLAYER SUCCESSFUL TACKLE, FREE KICK, and GOAL.

Reported metrics:

Metric Score
tight mAP 47.98
loose mAP 58.35

Hugging Face: OpenSportsLab/OSL-loc-snbas-2025-e2e

myModel.load_weights(weights="OpenSportsLab/OSL-loc-snbas-2025-e2e")

OSL-VQA-XFOUL-XVARS-lora

Intended use: soccer visual question answering focused on foul analysis and referee-style explanations.

Dataset/training source: OSL-XFoul, using video clips and VQA supervision.

Reported metrics:

Metric Score
Accuracy 72.24%
Balanced Accuracy 50.00%

Hugging Face: OpenSportsLab/OSL-VQA-XFOUL-XVARS-lora

myModel.load_weights(weights="OpenSportsLab/OSL-VQA-XFOUL-XVARS-lora")

Recommended config:

config="opensportslib/configs/vqa/xvars.yaml"

OSL-VQA-XFOUL-qwen2.5-7B-VL-lora

Intended use: native end-to-end soccer visual question answering with Qwen VL.

Dataset/training source: OSL-XFoul, using video clips and VQA supervision.

Reported metrics:

Metric Score
Accuracy 65.77%
Balanced Accuracy 36.59%

Hugging Face: OpenSportsLab/OSL-VQA-XFOUL-qwen2.5-7B-VL-lora

myModel.load_weights(weights="OpenSportsLab/OSL-VQA-XFOUL-qwen2.5-7B-VL-lora")

Recommended config:

config="opensportslib/configs/vqa/qwen3_vl_native.yaml"

OSL-VQA-XFOUL-qwen3-8B-VL-lora

Intended use: native end-to-end soccer visual question answering with Qwen VL.

Dataset/training source: OSL-XFoul, using video clips and VQA supervision.

Reported metrics:

Metric Score
Accuracy 69.96%
Balanced Accuracy 48.33%

Hugging Face: OpenSportsLab/OSL-VQA-XFOUL-qwen3-8B-VL-lora

myModel.load_weights(weights="OpenSportsLab/OSL-VQA-XFOUL-qwen3-8B-VL-lora")

Recommended config:

config="opensportslib/configs/vqa/qwen3_vl_native.yaml"

skeleton-header-max-recall

Hugging Face: OpenSportsLab/skeleton-header-max-recall

This inference-only, rule-based algorithm detects headers from player-joint and ball HDF5 tracking inputs on CPU. The published config selects h5_header_skeleton_max_recall and the label header. It contains no learned checkpoint and does not support training. Reported scores: Not reported.

The repository is gated. Request access on its Hugging Face page and, once approved, authenticate your local Hugging Face client before downloading. Use an OSL manifest referencing your own player-joint and ball HDF5 files; see the HDF5 header spotting guide for the input format.

Download only the config and replace its machine-specific data paths:

from huggingface_hub import hf_hub_download
from opensportslib.apis import Config, LocalizationModel

config_path = hf_hub_download(
    repo_id="OpenSportsLab/skeleton-header-max-recall",
    filename="config.yaml",
)
config = Config.from_file(config_path)
config.update(
    data={
        "data_root": "/path/to/tracking",
        "test_set": "/path/to/header_manifest.json",
    },
    runtime={"device": "cpu"},
)
model = LocalizationModel(config=config, weights=None)
predictions = model.infer(use_wandb=False)
model.save_predictions(output_path="header_predictions.json", predictions=predictions)

Use Config.from_file for this downloaded config: Config.from_pretrained remembers the repository as a weight source, whereas this algorithm has no weights to load.

Server loading: Register this repository as a localization model. The server recognizes its canonical MODEL.metadata.runner and loads it with weights=None. Gated access still requires an approved Hugging Face token. Existing deployments must include the config-only loading fix before using this registration path; see model registration.

OSL-loc-tennis-public

Hugging Face: OpenSportsLab/OSL-loc-tennis-public

The repository contains config.yaml and model.pt for E2E tennis spotting. The published config specifies the rny002_gsm backbone, a GRU head, the labels no_swing and swing, and a DALI video loader. Its sampling uses an 11-frame clip at an extraction rate of 2 fps. The current config loader migrates the published legacy config when loading it.

Training source: Not reported. Reported scores: Not reported. The repository has no model card; the architecture and labels above come from its config.

Set local annotations and the root used to resolve their video paths before constructing the model. Config.from_pretrained downloads the config and remembers the repository ID; constructing LocalizationModel then loads the checkpoint.

from opensportslib.apis import Config, LocalizationModel

config = Config.from_pretrained("OpenSportsLab/OSL-loc-tennis-public")
config.update(
    data={
        "data_root": "/path/to/tennis/videos",
        "test_set": "/path/to/tennis/test.json",
    },
    runtime={"device": "cpu"},
)
model = LocalizationModel(config=config)
predictions = model.infer(use_wandb=False)
model.save_predictions(output_path="tennis_predictions.json", predictions=predictions)

The CPU example uses the library's OpenCV fallback. To use the published DALI route, install GPU support and DALI with opensportslib setup --dali, and select device="cuda". Provide an OSL JSON test manifest whose video paths resolve under your chosen data root.

base_model_videoChatGPT

Hugging Face: OpenSportsLab/base_model_videoChatGPT

This is the decoder and tokenizer bundle used by the X-VARS VQA backend. The repository contains config.json, sharded safetensors weights, their index, and tokenizer files. Training source: Not reported. Reported scores: Not reported.

The canonical opensportslib/configs/vqa/xvars.yaml already selects this repository. The relevant component setting is:

MODEL:
  components:
    llm_decoder:
      params:
        repo_id: OpenSportsLab/base_model_videoChatGPT

This is a fragment to apply to the X-VARS config, not a complete task config. The decoder works with the configured visual encoder, projector, and task adapter. See X-VARS setup and artifact flow for the workflow and OSL-VQA-XFOUL-XVARS-lora for the task adapter.

trained-clip-vit-large-patch14

Hugging Face: OpenSportsLab/trained-clip-vit-large-patch14

This repository supplies model.pth.tar for the CLIP ViT-L/14 visual encoder used by the X-VARS configuration. Training source: Not reported. Reported scores: Not reported.

The canonical opensportslib/configs/vqa/xvars.yaml selects the checkpoint and its corresponding architecture through these component settings:

MODEL:
  components:
    video_encoder:
      load:
        weights_path: OpenSportsLab/trained-clip-vit-large-patch14
      params:
        vision_tower: openai/clip-vit-large-patch14

Apply this fragment to the X-VARS config. Its visual-checkpoint resolver downloads model.pth.tar from the repository; vision_tower identifies the architecture and image processor used with those weights. The encoder supplies video features to the VQA pipeline. See X-VARS setup and artifact flow for feature extraction and index preparation.