Code Monkey home page Code Monkey logo

sn-gamestate's Introduction

Python Pypi Downloads Downloads License

SoccerNet package

conda create -n SoccerNet python pip
conda activate SoccerNet
pip install SoccerNet
# pip install -e https://github.com/SoccerNet/SoccerNet
# pip install -e .

Structure of the data data for each game

  • SoccerNet main folder
    • Leagues (england_epl/europe_uefa-champions-league/france_ligue-1/...)
      • Seasons (2014-2015/2015-2016/2016-2017)
        • Games (format: "{Date} - {Time} - {HomeTeam} {Score} {AwayTeam}")
          • SoccerNet-v2 - Labels / Manual Annotations

            • video.ini: information on start/duration for each half of the game in the HQ video, in second
            • Labels-v2.json: Labels from SoccerNet-v2 - action spotting
            • Labels-cameras.json: Labels from SoccerNet-v1 - camera shot segmentation
          • SoccerNet-v2 - Videos / Automatically Extracted Features

            • 1_224p.mkv: 224p video 1st half - timmed with start/duration from HQ video - resolution 224*398 - 25 fps
            • 2_224p.mkv: 224p video 2nd half - timmed with start/duration from HQ video - resolution 224*398 - 25 fps
            • 1_720p.mkv: 720p video 1st half - timmed with start/duration from HQ video - resolution 720*1280 - 25 fps
            • 2_720p.mkv: 720p video 2nd half - timmed with start/duration from HQ video - resolution 720*1280 - 25 fps
            • 1_ResNET_TF2.npy: ResNET features @2fps for 1st half from SoccerNet-v2, extracted using TF2
            • 2_ResNET_TF2.npy: ResNET features @2fps for 2nd half from SoccerNet-v2, extracted using TF2
            • 1_ResNET_TF2_PCA512.npy: ResNET features @2fps for 1st half from SoccerNet-v2, extracted using TF2, with dimensionality reduced to 512 using PCA
            • 2_ResNET_TF2_PCA512.npy: ResNET features @2fps for 2nd half from SoccerNet-v2, extracted using TF2, with dimensionality reduced to 512 using PCA
            • 1_ResNET_5fps_TF2.npy: ResNET features @5fps for 1st half from SoccerNet-v2, extracted using TF2
            • 2_ResNET_5fps_TF2.npy: ResNET features @5fps for 2nd half from SoccerNet-v2, extracted using TF2
            • 1_ResNET_5fps_TF2_PCA512.npy: ResNET features @5fps for 1st half from SoccerNet-v2, extracted using TF2, with dimensionality reduced to 512 using PCA
            • 2_ResNET_5fps_TF2_PCA512.npy: ResNET features @5fps for 2nd half from SoccerNet-v2, extracted using TF2, with dimensionality reduced to 512 using PCA
            • 1_ResNET_25fps_TF2.npy: ResNET features @25fps for 1st half from SoccerNet-v2, extracted using TF2
            • 2_ResNET_25fps_TF2.npy: ResNET features @25fps for 2nd half from SoccerNet-v2, extracted using TF2
            • 1_player_boundingbox_maskrcnn.json: Player Bounding Boxes @2fps for 1st half, extracted with MaskRCNN
            • 2_player_boundingbox_maskrcnn.json: Player Bounding Boxes @2fps for 2nd half, extracted with MaskRCNN
            • 1_field_calib_ccbv.json: Field Camera Calibration @2fps for 1st half, extracted with CCBV
            • 2_field_calib_ccbv.json: Field Camera Calibration @2fps for 2nd half, extracted with CCBV
            • 1_baidu_soccer_embeddings.npy: Frame Embeddings for 1st half from https://github.com/baidu-research/vidpress-sports
            • 2_baidu_soccer_embeddings.npy: Frame Embeddings for 2nd half from https://github.com/baidu-research/vidpress-sports
          • Legacy from SoccerNet-v1

            • Labels.json: Labels from SoccerNet-v1 - action spotting for goals/cards/subs only
            • 1_C3D.npy: C3D features @2fps for 1st half from SoccerNet-v1
            • 2_C3D.npy: C3D features @2fps for 2nd half from SoccerNet-v1
            • 1_C3D_PCA512.npy: C3D features @2fps for 1st half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 2_C3D_PCA512.npy: C3D features @2fps for 2nd half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 1_I3D.npy: I3D features @2fps for 1st half from SoccerNet-v1
            • 2_I3D.npy: I3D features @2fps for 2nd half from SoccerNet-v1
            • 1_I3D_PCA512.npy: I3D features @2fps for 1st half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 2_I3D_PCA512.npy: I3D features @2fps for 2nd half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 1_ResNET.npy: ResNET features @2fps for 1st half from SoccerNet-v1
            • 2_ResNET.npy: ResNET features @2fps for 2nd half from SoccerNet-v1
            • 1_ResNET_PCA512.npy: ResNET features @2fps for 1st half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 2_ResNET_PCA512.npy: ResNET features @2fps for 2nd half from SoccerNet-v1, with dimensionality reduced to 512 using PCA

How to Download Games (Python)

from SoccerNet.Downloader import SoccerNetDownloader

mySoccerNetDownloader = SoccerNetDownloader(LocalDirectory="path/to/soccernet")

# Download SoccerNet labels
mySoccerNetDownloader.downloadGames(files=["Labels.json"], split=["train", "valid", "test"]) # download labels
mySoccerNetDownloader.downloadGames(files=["Labels-v2.json"], split=["train", "valid", "test"]) # download labels SN v2
mySoccerNetDownloader.downloadGames(files=["Labels-cameras.json"], split=["train", "valid", "test"]) # download labels for camera shot

# Download SoccerNet features
mySoccerNetDownloader.downloadGames(files=["1_ResNET_TF2.npy", "2_ResNET_TF2.npy"], split=["train", "valid", "test"]) # download Features
mySoccerNetDownloader.downloadGames(files=["1_ResNET_TF2_PCA512.npy", "2_ResNET_TF2_PCA512.npy"], split=["train", "valid", "test"]) # download Features reduced with PCA
mySoccerNetDownloader.downloadGames(files=["1_player_boundingbox_maskrcnn.json", "2_player_boundingbox_maskrcnn.json"], split=["train", "valid", "test"]) # download Player Bounding Boxes inferred with MaskRCNN
mySoccerNetDownloader.downloadGames(files=["1_field_calib_ccbv.json", "2_field_calib_ccbv.json"], split=["train", "valid", "test"]) # download Field Calibration inferred with CCBV
mySoccerNetDownloader.downloadGames(files=["1_baidu_soccer_embeddings.npy", "2_baidu_soccer_embeddings.npy"], split=["train", "valid", "test"]) # download Frame Embeddings from https://github.com/baidu-research/vidpress-sports

# Download SoccerNet Challenge set (require password from NDA to download videos)
mySoccerNetDownloader.downloadGames(files=["1_ResNET_TF2.npy", "2_ResNET_TF2.npy"], split=["challenge"]) # download ResNET Features
mySoccerNetDownloader.downloadGames(files=["1_ResNET_TF2_PCA512.npy", "2_ResNET_TF2_PCA512.npy"], split=["challenge"]) # download ResNET Features reduced with PCA
mySoccerNetDownloader.downloadGames(files=["1_224p.mkv", "2_224p.mkv"], split=["challenge"]) # download 224p Videos (require password from NDA)
mySoccerNetDownloader.downloadGames(files=["1_720p.mkv", "2_720p.mkv"], split=["challenge"]) # download 720p Videos (require password from NDA)
mySoccerNetDownloader.downloadGames(files=["1_player_boundingbox_maskrcnn.json", "2_player_boundingbox_maskrcnn.json"], split=["challenge"]) # download Player Bounding Boxes inferred with MaskRCNN 
mySoccerNetDownloader.downloadGames(files=["1_field_calib_ccbv.json", "2_field_calib_ccbv.json"], split=["challenge"]) # download Field Calibration inferred with CCBV 
mySoccerNetDownloader.downloadGames(files=["1_baidu_soccer_embeddings.npy", "2_baidu_soccer_embeddings.npy"], split=["challenge"]) # download Frame Embeddings from https://github.com/baidu-research/vidpress-sports

# Download development kit per task
mySoccerNetDownloader.downloadDataTask(task="calibration-2023", split=["train", "valid", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="caption-2023", split=["train", "valid", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="jersey-2023", split=["train", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="reid-2023", split=["train", "valid", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="spotting-2023", split=["train", "valid", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="spotting-ball-2023", split=["train", "valid", "test", "challenge"], password=<PW_FROM_NDA>)
mySoccerNetDownloader.downloadDataTask(task="tracking-2023", split=["train", "test", "challenge"])

# Download SoccerNet videos (require password from NDA to download videos)
mySoccerNetDownloader.password = "Password for videos? (contact the author)"
mySoccerNetDownloader.downloadGames(files=["1_224p.mkv", "2_224p.mkv"], split=["train", "valid", "test"]) # download 224p Videos
mySoccerNetDownloader.downloadGames(files=["1_720p.mkv", "2_720p.mkv"], split=["train", "valid", "test"]) # download 720p Videos 
mySoccerNetDownloader.downloadRAWVideo(dataset="SoccerNet") # download 720p Videos 
mySoccerNetDownloader.downloadRAWVideo(dataset="SoccerNet-Tracking") # download single camera RAW Videos 

# Download SoccerNet in OSL ActionSpotting format
mySoccerNetDownloader.downloadDataTask(task="spotting-OSL", split=["train", "valid", "test", "challenge"], version="ResNET_PCA512")
mySoccerNetDownloader.downloadDataTask(task="spotting-OSL", split=["train", "valid", "test", "challenge"], version="baidu_soccer_embeddings")
mySoccerNetDownloader.downloadDataTask(task="spotting-OSL", split=["train", "valid", "test", "challenge"], version="224p", password=<PW_FROM_NDA>)

How to read the list Games (Python)

from SoccerNet.utils import getListGames
print(getListGames(split="train")) # return list of games recommended for training
print(getListGames(split="valid")) # return list of games recommended for validation
print(getListGames(split="test")) # return list of games recommended for testing
print(getListGames(split="challenge")) # return list of games recommended for challenge
print(getListGames(split=["train", "valid", "test", "challenge"])) # return list of games for training, validation and testing
print(getListGames(split="v1")) # return list of games from SoccerNetv1 (train/valid/test)

sn-gamestate's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sn-gamestate's Issues

ImportError: Error loading 'tracklab.wrappers.SoccerNetGameState'

When trying to run the baseline I am getting an error where I can´t load the SoccerNetGameState class

i've already run it from the sn-gamestate/, tracklab/ and my soccernet folder and all of them throw the same error.

I installed the packages using pip inside a venv environment, everything got installed smoothly.

legion_5 at pop-os in ~/santiago/predicta/repos/third_party/soccernet/sn-gamestate on main✔ using «env_soccernet»
╰─± python -m tracklab.main -cn soccernet
[2024-05-15 22:27:14,968][__main__][INFO] - Using device: 'cuda'.
Error executing job with overrides: []
Traceback (most recent call last):
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/utils.py", line 644, in _locate
    obj = getattr(obj, part)
AttributeError: module 'tracklab' has no attribute 'wrappers'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/utils.py", line 650, in _locate
    obj = import_module(mod)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/legion_5/santiago/predicta/repos/third_party/soccernet/tracklab/tracklab/wrappers/__init__.py", line 2, in <module>
    from .detect_multiple import *
  File "/home/legion_5/santiago/predicta/repos/third_party/soccernet/tracklab/tracklab/wrappers/detect_multiple/__init__.py", line 3, in <module>
    from .openpifpaf_api import OpenPifPaf
  File "/home/legion_5/santiago/predicta/repos/third_party/soccernet/tracklab/tracklab/wrappers/detect_multiple/openpifpaf_api.py", line 9, in <module>
    import openpifpaf
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/openpifpaf/__init__.py", line 14, in <module>
    from .predictor import Predictor
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/openpifpaf/predictor.py", line 7, in <module>
    from . import datasets, decoder, network, transforms, visualizer
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/openpifpaf/decoder/__init__.py", line 4, in <module>
    from .decoder import Decoder
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/openpifpaf/decoder/decoder.py", line 10, in <module>
    from .. import annotation, visualizer
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/openpifpaf/visualizer/__init__.py", line 4, in <module>
    from .caf import Caf
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/openpifpaf/visualizer/caf.py", line 10, in <module>
    CMAP_BLUES_NAN = copy.copy(matplotlib.cm.get_cmap('Blues'))
AttributeError: module 'matplotlib.cm' has no attribute 'get_cmap'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/legion_5/santiago/predicta/repos/third_party/soccernet/tracklab/tracklab/main.py", line 119, in <module>
    main()
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/main.py", line 94, in decorated_main
    _run_hydra(
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/utils.py", line 394, in _run_hydra
    _run_app(
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/utils.py", line 457, in _run_app
    run_and_report(
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/utils.py", line 223, in run_and_report
    raise ex
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/utils.py", line 220, in run_and_report
    return func()
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/utils.py", line 458, in <lambda>
    lambda: hydra.run(
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/hydra.py", line 132, in run
    _ = ret.return_value
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/core/utils.py", line 260, in return_value
    raise self._return_value
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/core/utils.py", line 186, in run_job
    ret.return_value = task_function(task_cfg)
  File "/home/legion_5/santiago/predicta/repos/third_party/soccernet/tracklab/tracklab/main.py", line 28, in main
    tracking_dataset = instantiate(cfg.dataset)
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 226, in instantiate
    return instantiate_node(
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 333, in instantiate_node
    _target_ = _resolve_target(node.get(_Keys.TARGET), full_key)
  File "/home/legion_5/santiago/predicta/repos/third_party/soccernet/tracklab/tracklab/utils/monkeypatch_hydra.py", line 59, in new_resolve_target
    target = _locate(target)
  File "/home/legion_5/santiago/predicta/venvs/env_soccernet/lib/python3.10/site-packages/hydra/_internal/utils.py", line 658, in _locate
    raise ImportError(
ImportError: Error loading 'tracklab.wrappers.SoccerNetGameState':
AttributeError("module 'matplotlib.cm' has no attribute 'get_cmap'")

Package conflict when `pip install -e ./sn_gamestate`

I'm using Ubuntu 22.04.4 on WSL, and followed the instructions to install the conda environment. When I ran pip install -e ./sn_gamestate, the following error occurs.

INFO: pip is looking at multiple versions of prtreid to determine which version is compatible with other requirements. This could take a while.
ERROR: Ignored the following versions that require a different python version: 0.0.1 Requires-Python ==3.7.0; 1.6.2 Requires-Python >=3.7,<3.10; 1.6.3 Requires-Python >=3.7,<3.10; 1.7.0 Requires-Python >=3.7,<3.10; 1.7.1 Requires-Python >=3.7,<3.10
ERROR: Could not find a version that satisfies the requirement tb-nightly (from prtreid) (from versions: none)
ERROR: No matching distribution found for tb-nightly

How can I solve it? Does this have something to do with WSL?

TypeError: Object of type float32 is not JSON serializable when saving json file with results

There is an error when saving the json file at the end of running tracklab -cn soccernet with eval_tracking: True

Traceback (most recent call last):
  File "/home/enzo/conda_envs/GameStateChallenge/bin/tracklab", line 8, in <module>
    sys.exit(main())
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/site-packages/hydra/main.py", line 94, in decorated_main
    _run_hydra(
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/site-packages/hydra/_internal/utils.py", line 394, in _run_hydra
    _run_app(
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/site-packages/hydra/_internal/utils.py", line 457, in _run_app
    run_and_report(
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/site-packages/hydra/_internal/utils.py", line 223, in run_and_report
    raise ex
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/site-packages/hydra/_internal/utils.py", line 220, in run_and_report
    return func()
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/site-packages/hydra/_internal/utils.py", line 458, in <lambda>
    lambda: hydra.run(
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/site-packages/hydra/_internal/hydra.py", line 132, in run
    _ = ret.return_value
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/site-packages/hydra/core/utils.py", line 260, in return_value
    raise self._return_value
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/site-packages/hydra/core/utils.py", line 186, in run_job
    ret.return_value = task_function(task_cfg)
  File "/home/enzo/GameStateChallenge/src/tracklab/tracklab/main.py", line 62, in main
    evaluate(cfg, evaluator, tracker_state)
  File "/home/enzo/GameStateChallenge/src/tracklab/tracklab/main.py", line 108, in evaluate
    evaluator.run(tracker_state)
  File "/home/enzo/GameStateChallenge/src/tracklab/tracklab/wrappers/eval/trackeval_evaluator.py", line 35, in run
    self.tracking_dataset.save_for_eval(
  File "/home/enzo/GameStateChallenge/src/tracklab/tracklab/wrappers/datasets/soccernet/soccernet_game_state.py", line 80, in save_for_eval
    json.dump({"predictions": video_predictions}, fp, indent=2)
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/json/__init__.py", line 179, in dump
    for chunk in iterable:
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/json/encoder.py", line 431, in _iterencode
    yield from _iterencode_dict(o, _current_indent_level)
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/json/encoder.py", line 405, in _iterencode_dict
    yield from chunks
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/json/encoder.py", line 325, in _iterencode_list
    yield from chunks
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/json/encoder.py", line 405, in _iterencode_dict
    yield from chunks
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/json/encoder.py", line 405, in _iterencode_dict
    yield from chunks
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/json/encoder.py", line 438, in _iterencode
    o = _default(o)
  File "/home/enzo/conda_envs/GameStateChallenge/lib/python3.10/json/encoder.py", line 179, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type float32 is not JSON serializable

Seems like video_predictions requires some conversions before dumping it to a json

Visualizing homography coordinates on the soccer overhead template

Hello authors/curators,

I have a couple of doubts about visualizing the homography coordinates on the overhead soccer pitch template:

  1. I'm unsure where I can find the right template image, with the same resolution (I believe it should be 520p) as mentioned in the repo code.
  2. Does "bbox_pitch" in the .json annotations correspond to the homography coordinates?

Thanks,
Harish

why download dataset do not include annotation?

i using this command to download dataset, but only include video.

from SoccerNet.Downloader import SoccerNetDownloader
mySoccerNetDownloader = SoccerNetDownloader(LocalDirectory="data/SoccerNetGS")
mySoccerNetDownloader.downloadDataTask(task="gamestate-2024",
split=["train", "valid", "test", "challenge"])

Cannot find primary config 'soccernet'.

I'm trying to run the baseline. My OS is Mac, I installed all the dependencies using conda (following the README instructions). After run python -m tracklab.main -cn soccernet at sn-gamestate folder, I got this error:

Traceback (most recent call last):
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/tracklab/main.py", line 117, in <module>
    main()
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/main.py", line 94, in decorated_main
    _run_hydra(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/utils.py", line 394, in _run_hydra
    _run_app(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/utils.py", line 457, in _run_app
    run_and_report(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/utils.py", line 223, in run_and_report
    raise ex
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/utils.py", line 220, in run_and_report
    return func()
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/utils.py", line 458, in <lambda>
    lambda: hydra.run(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/hydra.py", line 105, in run
    cfg = self.compose_config(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/hydra.py", line 594, in compose_config
    cfg = self.config_loader.load_configuration(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/config_loader_impl.py", line 142, in load_configuration
    return self._load_configuration_impl(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/config_loader_impl.py", line 253, in _load_configuration_impl
    defaults_list = create_defaults_list(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/defaults_list.py", line 745, in create_defaults_list
    defaults, tree = _create_defaults_list(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/defaults_list.py", line 715, in _create_defaults_list
    defaults_tree = _create_defaults_tree(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/defaults_list.py", line 356, in _create_defaults_tree
    ret = _create_defaults_tree_impl(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/defaults_list.py", line 457, in _create_defaults_tree_impl
    return _expand_virtual_root(repo, root, overrides, skip_missing)
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/defaults_list.py", line 280, in _expand_virtual_root
    subtree = _create_defaults_tree_impl(
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/defaults_list.py", line 464, in _create_defaults_tree_impl
    config_not_found_error(repo=repo, tree=root)
  File "/Users/wangyuqing06/miniconda3/envs/sn/lib/python3.9/site-packages/hydra/_internal/defaults_list.py", line 799, in config_not_found_error
    raise MissingConfigException(
hydra.errors.MissingConfigException: Cannot find primary config 'soccernet'. Check that it's in your config search path.

Config search path:
	provider=hydra, path=pkg://hydra.conf
	provider=main, path=pkg://tracklab.configs
	provider=schema, path=structured://

Smaller models

Hi, would it be possible to release a smaller version of the ReID model, or at least the training code so I can train it myself?.

I've been trying to reduce the inference time but to no avail.

RuntimeError: File size unexpectedly exceeded ZIP64 limit in BASELINE

Hi, I found error when runing the baseline by default. It seems ZIP64 limit is exceeded after MMOCR step.

Traceback (most recent call last):
File "C:\Users---\anaconda3\envs\tracklab\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users---\anaconda3\envs\tracklab\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Program Files\Git\soccernet\tracklab\tracklab\main.py", line 119, in
main()
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\hydra\main.py", line 94, in decorated_main
_run_hydra(
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\hydra_internal\utils.py", line 394, in _run_hydra
_run_app(
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\hydra_internal\utils.py", line 457, in _run_app
run_and_report(
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\hydra_internal\utils.py", line 223, in run_and_report
raise ex
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\hydra_internal\utils.py", line 220, in run_and_report
return func()
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\hydra_internal\utils.py", line 458, in
lambda: hydra.run(
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\hydra_internal\hydra.py", line 132, in run
_ = ret.return_value
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\hydra\core\utils.py", line 260, in return_value
raise self._return_value
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\hydra\core\utils.py", line 186, in run_job
ret.return_value = task_function(task_cfg)
File "C:\Program Files\Git\soccernet\tracklab\tracklab\main.py", line 59, in main
tracking_engine.track_dataset()
File "C:\Program Files\Git\soccernet\tracklab\tracklab\engine\engine.py", line 118, in track_dataset
self.callback(
File "C:\Users---\anaconda3\envs\tracklab\lib\site-packages\lightning\fabric\fabric.py", line 892, in call
method(*args, **kwargs)
File "C:\Program Files\Git\soccernet\tracklab\tracklab\datastruct\tracker_state.py", line 233, in on_video_loop_end
self.save()
File "C:\Program Files\Git\soccernet\tracklab\tracklab\datastruct\tracker_state.py", line 276, in save
with self.zf["save"].open(f"{self.video_id}.pkl", "w") as fp:
File "C:\Users___\anaconda3\envs\tracklab\lib\zipfile.py", line 1172, in close
raise RuntimeError(
RuntimeError: File size unexpectedly exceeded ZIP64 limit
Tracking videos (SNGS-021) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1/1 10:47:05 • 0:00:00[W C:\cb\pytorch_1000000000000\work\torch\csrc\CudaIPCTypes.cpp:95] Producer process tried to deallocate over 1000 memory blocks referred by consumer processes. Deallocation might be significantly slowed down. We assume it will never going to be the case, but if it is, please file but to https://github.com/pytorch/pytorch
[W C:\cb\pytorch_1000000000000\work\torch\csrc\CudaIPCTypes.cpp:15] Producer process has been terminated before all shared CUDA tensors released. See Note [Sharing CUDA tensors]
[W CUDAGuardImpl.h:46] Warning: CUDA warning: driver shutting down (function uncheckedGetDevice)
[W CUDAGuardImpl.h:62] Warning: CUDA warning: invalid device ordinal (function uncheckedSetDevice)
....

Change 'Goal left post left ' to 'Goal left post left'

'Goal left post left ': 'Goal right post left',

'Goal right post left': 'Goal left post left ',

The pitch annotations of the sn-calibration dataset had 'Goal left post left ', but for the pitch annotations in the sn-gamestate dataset, it changed to 'Goal left post left' (just the space at the end removed). The file plugins/calibration/sn_calibration_baseline/soccerpitch.py has been partially modified to account for this change, but there are still those two lines mentioned at the beginning to adapt to the new annotation. Without this change, the file plugins/calibration/sn_calibration_baseline/evalai_camera.py fails to evaluate the camera calibration on the sn-gamestate dataset and outputs an error message like Incorrect key 'Goal left post left'.

Errors running "python -m tracklab.main -cn soccernet" giving final GS-HOTA = 0%

(tracklab) PS X:\Pycharmproj\Sngamestate\sn-gamestate> python -m tracklab.main -cn soccernet
[2024-05-27 17:44:38,788][main][INFO] - Using device: 'cuda'.
Loading SoccerNetGS 'train' set videos ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:06
Loading SoccerNetGS 'valid' set videos ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:06
Loading SoccerNetGS 'test' set videos ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:06
Loading SoccerNetGS 'challenge' set videos ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:06
Overwriting current config with config loaded from X://Pycharmproj/Sngamestate/sn-gamestate/pretrained_models/reid/prtreid-soccernet-baseline.pth.tar
Diff from default config :
{'batch_size': 32,
'ce': 0.0,
'dim_reduce_output': 256,
'hrnet_pretrained_path': 'X://Pycharmproj/Sngamestate/sn-gamestate/pretrained_models/reid',
'id': 0.0,
'load_config': True,
'mask_filtering_testing': False,
'max_epoch': 20,
'preprocess': 'id',
'test_embeddings': "['globl']",
'tr': 0.0,
'train_sampler': 'PrtreidSampler',
'train_sampler_t': 'PrtreidSampler'}
Loads checkpoint by http backend from path: https://download.openmmlab.com/mmocr/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015/dbnet_resnet18_fpnc_1200e_icdar2015_20220825_221614-7c0e94f2.pth
The model and loaded state dict do not match exactly

unexpected key in source state_dict: data_preprocessor.mean, data_preprocessor.std

05/27 17:45:15 - mmengine - WARNING - Failed to search registry with scope "mmocr" in the "function" registry tree. As a workaround, the current "function" registry in "mmengine" is used to build instance. This may cause unexpected failure when running the built modules. Please check whether "mmocr" is a correct scope, or whether the registry is initialized.
Loads checkpoint by http backend from path: https://download.openmmlab.com/mmocr/textrecog/sar/sar_resnet31_parallel-decoder_5e_st-sub_mj-sub_sa_real/sar_resnet31_parallel-decoder_5e_st-sub_mj-sub_sa_real_20220915_171910-04eb4e75.pth
The model and loaded state dict do not match exactly

unexpected key in source state_dict: data_preprocessor.mean, data_preprocessor.std

Loads checkpoint by http backend from path: https://download.openmmlab.com/mmocr/textdet/dbnet/dbnet_resnet18_fpnc_1200e_icdar2015/dbnet_resnet18_fpnc_1200e_icdar2015_20220825_221614-7c0e94f2.pth
The model and loaded state dict do not match exactly

unexpected key in source state_dict: data_preprocessor.mean, data_preprocessor.std

Loads checkpoint by http backend from path: https://download.openmmlab.com/mmocr/textrecog/sar/sar_resnet31_parallel-decoder_5e_st-sub_mj-sub_sa_real/sar_resnet31_parallel-decoder_5e_st-sub_mj-sub_sa_real_20220915_171910-04eb4e75.pth
The model and loaded state dict do not match exactly

unexpected key in source state_dict: data_preprocessor.mean, data_preprocessor.std

[05/27/24 17:45:17] INFO Pipeline: YOLOv8 -> PRTReId -> BPBReIDStrongSORT -> TVCalib_Segmentation -> TVCalib -> MMOCR -> MajorityVoteTracklet -> TrackletTeamClustering -> TrackletTeamSideLabeling module.py:68
INFO Starting tracking operation on valid set. main.py:47
INFO Saving TrackerState to X:\Pycharmproj\Sngamestate\sn-gamestate\outputs\sn-gamestate\2024-05-27\17-44-38\states\sn-gamestate.pklz tracker_state.py:45
INFO Pipeline has been validated module.py:85
building model on device cuda
=> init weights from normal distribution
Loading pretrained ImageNet HRNet32 model at X://Pycharmproj/Sngamestate/sn-gamestate/pretrained_models/reid\hrnetv2_w32_imagenet_pretrained.pth
=> loading pretrained model X://Pycharmproj/Sngamestate/sn-gamestate/pretrained_models/reid\hrnetv2_w32_imagenet_pretrained.pth
Successfully loaded pretrained weights from "X://Pycharmproj/Sngamestate/sn-gamestate/pretrained_models/reid/prtreid-soccernet-baseline.pth.tar"
** The following layers are discarded due to unmatched keys or layer size: ['global_identity_classifier.classifier.weight', 'background_identity_classifier.classifier.weight', 'foreground_identity_classifier.classifier.weight',
'concat_parts_identity_classifier.classifier.weight', 'parts_identity_classifier.0.classifier.weight']
Building train transforms ...

  • resize to 256x128
  • normalization (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
  • to torch tensor of range [0, 1]
    Building test transforms ...
  • resize to 256x128
  • to torch tensor of range [0, 1]
  • normalization (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
  • masks preprocess = id
  • use add background mask
    Tracking videos (SNGS-021) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1/1 0:52:08 • 0:00:00
    [05/27/24 18:40:13] INFO Starting evaluation. main.py:107
    INFO Starting evaluation using TrackEval library (https://github.com/JonathonLuiten/TrackEval) trackeval_evaluator.py:28
    INFO Tracking predictions saved in SoccerNetGS format in eval\pred\SoccerNetGS-valid\tracklab trackeval_evaluator.py:45
    INFO Tracking ground truth saved in SoccerNetGS format in eval\pred\SoccerNetGS-valid\tracklab trackeval_evaluator.py:65
    Initializing the dataset class for the SoccerNet Game State Reconstruction task.
    IMPORTANT: The official evaluation metric for the task, i.e. the 'GS-HOTA' will appear under the 'HOTA' name in the evaluation script output.
    This happen because GS-HOTA mainly uses the same logic as the HOTA metric, the HOTA evaluation class is therefore not forked but re-used.
    The key practical difference between the GS-HOTA and the HOTA is actually the similarity metric used to match predictions with ground truth.Since this similarity score is computed outside the HOTA class (i.e. inside the SoccerNetGS dataset class), there was no need to fork it into a GS-HOTA class.
    Please refer to the official paper for more information.
    Using a sigma of 2.042694913268175 for the gaussian similarity metric, based on a distance tolerance of 5 meters.

Evaluating 1 tracker(s) on 1 sequence(s) for 1 class(es) on SoccerNetGS dataset using the following metrics: HOTA, Identity, Count

Evaluating tracklab

100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 14.70it/s]

HOTA: tracklab-cls_comb_cls_av HOTA DetA AssA DetRe DetPr AssRe AssPr LocA OWTA HOTA(0) LocA(0) HOTALocA(0)
COMBINED 0 0 0 0 0 0 0 100 0 0 100 0

Identity: tracklab-cls_comb_cls_av IDF1 IDR IDP IDTP IDFN IDFP
COMBINED 0 0 0 0 2067 0

Count: tracklab-cls_comb_cls_av Dets GT_Dets IDs GT_IDs
COMBINED 0 2067 0 19

HOTA: tracklab-cls_comb_det_av HOTA DetA AssA DetRe DetPr AssRe AssPr LocA OWTA HOTA(0) LocA(0) HOTALocA(0)
COMBINED 0 0 0 0 0 0 0 100 0 0 100 0

Identity: tracklab-cls_comb_det_av IDF1 IDR IDP IDTP IDFN IDFP
COMBINED 0 0 0 0 2067 0

Count: tracklab-cls_comb_det_av Dets GT_Dets IDs GT_IDs
COMBINED 0 2067 0 19
[05/27/24 18:40:15] INFO SoccerNet Game State Reconstruction performance GS-HOTA = 0% (config: EVAL_SPACE=pitch, USE_JERSEY_NUMBERS=True, USE_TEAMS=True, USE_ROLES=True, EVAL_DIST_TOL=5) soccernet_game_state.py:48
INFO Have a look at 'tracklab/tracklab/configs/dataset/soccernet_gs.yaml' for more details about the GS-HOTA metric and the evaluation configuration. soccernet_game_state.py:49
INFO Saved state at : X:\Pycharmproj\Sngamestate\sn-gamestate\outputs\sn-gamestate\2024-05-27\17-44-38\states\sn-gamestate.pklz main.py:66
[W C:\cb\pytorch_1000000000000\work\torch\csrc\CudaIPCTypes.cpp:95] Producer process tried to deallocate over 1000 memory blocks referred by consumer processes. Deallocation might be significantly slowed down. We assume it will never going to be the case, but if it is, please file but to https://github.com/pytorch/pytorch
[W C:\cb\pytorch_1000000000000\work\torch\csrc\CudaIPCTypes.cpp:15] Producer process has been terminated before all shared CUDA tensors released. See Note [Sharing CUDA tensors]
[W CUDAGuardImpl.h:46] Warning: CUDA warning: driver shutting down (function uncheckedGetDevice)
....

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.