Reco Trainer — Help test private, local sports-model training - it works and gets better and better with your input

I am looking for testers for Reco Trainer 0.6, a work-in-progress tool for improving sports-camera detection models without uploading sensitive match footage to an unknown server.

GitHub links:

The idea is simple: videos stay on your own computer. Reco Trainer extracts frames locally, proposes labels, lets you correct mistakes, and fine-tunes an RF-DETR model from those corrections. If you decide to share the result, you export a .recomodel package containing model weights, checksums, and aggregate metadata. The exchange package does not contain videos, frames, local paths, or video file names.

This is explicitly an alpha / work in progress, not a finished production tool. Please keep backups and review all labels and results. What I need now is practical feedback from different machines, sports, and recording conditions.

The current version supports:

  • basketball;
  • football (soccer);
  • handball;
  • hockey;
  • rugby;
  • lacrosse;
  • American football.

The interface and six-step walkthrough are available in German, English, Spanish, and French. Label review includes zooming, panning, frame navigation, editing and deleting boxes, undo/redo, automatic suggestions, local RF-DETR Nano/Small training, validated model exchange, and Core ML export on Mac.

Downloads

Choose one file from the Reco Trainer 0.6 GitHub release:

  • Reco Trainer Mac 0.6.dmg — native Apple-silicon application for local annotation, Apple-accelerated RF-DETR training, Core ML export, and .recomodel exchange. Requires macOS 14+, Node.js 22+, and Xcode Command Line Tools. The alpha is ad-hoc signed and not Apple-notarized, so the first launch may require Control-click → Open.
  • Reco Trainer Windows 0.6.zip — local Windows version with native folder selection and CPU training. Requires Node.js 22, Python 3.11/3.12, and FFmpeg. Extract it and run Start Reco Trainer Windows.bat.
  • Reco Trainer Linux 0.6.zip — local Linux version with CPU training. Requires Node.js 22, Python 3.11/3.12, FFmpeg, and Zenity or KDialog. Extract it, make Start Reco Trainer Linux.sh executable, and run it.
  • Reco Trainer Docker 0.6.zip — portable CPU-based container version for macOS, Windows, and Linux. Mount the sports-video folder through RECO_VIDEO_FOLDER, run docker compose up --build, and open http://localhost:8765/.

The first ML setup downloads Python dependencies and pretrained model weights. Your sports footage is not uploaded. The worker has no media-upload endpoint and is bound locally; project files remain in .reco-training/ inside the chosen video folder.

What to test

Please try the complete flow: installation, language selection, sport selection, local folder selection, frame extraction, automatic labeling, correcting and deleting false labels, zoom/navigation, training, export, and .recomodel import/export.

For a useful bug report, include your operating system, hardware/chip, memory, sport, selected model size, exact reproduction steps, and the full error message. Please never post private footage, extracted frames, datasets, .reco-training folders, or logs containing personal paths. Synthetic or redacted examples are ideal.

I would particularly value answers to these questions:

  • Was installation understandable without additional help?
  • Did folder selection and frame preparation work on your system?
  • Could you find, correct, and delete automatic labels easily?
  • Was the training progress understandable, and did training finish?
  • Did the exported/imported model package behave as expected?
  • Which parts of the walkthrough or wording were unclear?

Thank you for helping test a privacy-first approach to collaborative sports-model improvement.

4 Likes

Reco Trainer 0.7: Local Model Benchmarking

Reco Trainer 0.7 introduces a new test platform for comparing locally downloaded object-detection models under identical conditions.

The goal is to answer a simple question:

Which model performs best on my sport, camera position and recording conditions?

All images, annotations, predictions and benchmark results remain on the local computer. Nothing is uploaded for evaluation.

Reco Trainer is still a work in progress / alpha release. Benchmark results should therefore be treated as guidance, not as proof that a model is ready for production use.

What has changed in version 0.7?

The new version can:

  • use reviewed annotations as the correct answers, or “ground truth”;
  • test every compatible imported .recomodel package against the same images;
  • automatically calculate a model ranking;
  • compare mAP@0.50, precision, recall, F1 and mean IoU;
  • count false positives and false negatives;
  • measure the average inference time per image;
  • include reviewed images without a ball as explicit negative examples;
  • reject benchmark creation while unreviewed automatic suggestions remain;
  • store reports locally under .reco-training/benchmarks/;
  • display the benchmark workflow in German, English, Spanish and French.

Models are evaluated sequentially. This prevents several models from competing for the same GPU, Apple Neural Engine or system memory and makes the results more comparable.

How is the ranking calculated?

The current quality score is:

  • 70% mAP@0.50
  • 30% F1 score

Inference speed is used only as a tie-breaker.

This weighting prioritises detection quality while still penalising models that produce too many false detections or miss too many objects.

The highest score is not automatically the best model for every situation. For example:

  • a camera-tracking application may prefer higher recall so that the ball is rarely lost;
  • an analysis application may prefer higher precision to avoid false ball detections;
  • a real-time application must also consider inference speed.

The detailed metrics are therefore at least as important as the ranking position.

Recommended evaluation workflow

1. Create a separate test set

Use a representative image directory containing examples from the sport and camera setup you want to evaluate.

The test set should include:

  • small and large balls;
  • different lighting conditions;
  • motion blur;
  • partially hidden balls;
  • crowded scenes;
  • different areas of the playing field;
  • images without a visible ball;
  • difficult objects that could be mistaken for a ball.

Most importantly, these images should not have been used to train any of the models being compared. Testing on training images would produce overly optimistic results.

2. Define the correct answers

Review every test frame manually:

  • add boxes around all target objects;
  • correct inaccurate boxes;
  • remove incorrect automatic labels;
  • confirm frames where no target object is present.

An image without a box becomes an explicit negative example. This is important because it tests whether a model invents balls where none exist.

3. Import the models

Import all compatible .recomodel packages you want to compare.

The models must match the selected project configuration, including the sport, object classes and supported model size.

Only import models from trusted sources. Checksums verify that a package has not changed, but they do not prove that its contents are trustworthy.

4. Freeze the ground truth

Open Test models and select Freeze correct answers.

Reco Trainer creates a fixed benchmark definition containing the reviewed annotations and a dataset fingerprint. This prevents the correct answers from changing silently during a comparison.

If unreviewed automatic suggestions are still present, the benchmark cannot be frozen until they have been accepted, corrected or removed.

5. Select the confidence threshold

Choose the minimum confidence required for a prediction to count.

A lower threshold usually increases recall but may also create more false positives. A higher threshold can improve precision but may cause the model to miss difficult balls.

For the fairest initial comparison, use the same threshold for every model. Additional runs with different thresholds can later help determine the best operating point.

6. Run the benchmark

Select Run benchmark.

Reco Trainer processes every test image with every compatible model. The models run one after another, and predictions are stored locally as numerical boxes, classes and confidence values.

The source images are not copied into the benchmark report and are not uploaded.

7. Review the ranking

The result table shows:

  • quality score;
  • mAP@0.50;
  • precision;
  • recall;
  • F1 score;
  • mean IoU;
  • false positives;
  • false negatives;
  • average milliseconds per image.

Do not evaluate a model using only the overall score. Check which types of errors it makes and whether those errors are acceptable for the intended application.

8. Validate the winner on complete videos

The current benchmark evaluates object detection on individual images. It does not yet measure tracking stability across complete videos.

The highest-ranked models should therefore also be tested on previously unseen full matches. Pay particular attention to:

  • how often the ball is lost;
  • how quickly the tracker recovers;
  • false detections among spectators, advertising and field markings;
  • performance during fast passes and occlusion;
  • real-time speed on the target hardware.

Privacy

The complete evaluation happens locally:

  • test images remain on the user’s computer;
  • predictions remain local;
  • benchmark reports remain local;
  • no media upload endpoint is used;
  • GitHub is only used when the user deliberately exports and shares a model package or numerical report.

Please do not attach private footage, extracted frames or .reco-training directories to bug reports. Synthetic or redacted examples are preferable.

Download and feedback

Reco Trainer 0.7 is available as an alpha release for macOS, Windows, Linux and Docker:

Download Reco Trainer 0.7

Source code and documentation:

Reco Trainer on GitHub

Testing and feedback are very welcome—especially comparisons involving different sports, camera positions, Apple chips, CPUs and difficult negative examples.

Reco Trainer 0.8 – More Training Images, Still Completely Local

Reco Trainer 0.8 is now available as a work-in-progress alpha release for macOS, Windows, Linux, and Docker.

Reco Trainer helps improve and compare sports-camera detection models without uploading sensitive recordings. Videos, extracted images, annotations, training runs, and benchmark results remain on your own computer.

What is new in version 0.8?

Previous versions extracted a maximum of 240 images for the entire project, regardless of how many videos were selected.

Version 0.8 changes this:

  • The number of training images can now be selected per video.
  • The default is 240 images per video.
  • Ten videos can therefore provide up to 2,400 training images.
  • The selectable range is 4–5,000 images per video.
  • Unsuitable images can be removed directly from the training set.
  • Removing an image never modifies or deletes the original video.
  • Derived training, validation, and test copies are cleaned automatically.
  • If a removed image belonged to a frozen benchmark set, the outdated benchmark reference is reset to prevent misleading results.

This makes it easier to build larger and more varied datasets from multiple matches.

Recommended workflow

  1. Select the sport and your local video folder.
  2. Choose the number of images per video.
  3. Prepare the videos locally.
  4. Remove blurred, duplicated, obstructed, or otherwise unsuitable images.
  5. Add or review the object boxes.
  6. Accept, correct, or reject every automatic suggestion.
  7. Train the model locally.
  8. Export a .recomodel package or compare compatible downloaded models.

For a first test, I recommend approximately:

  • 100–240 images per video
  • 20–30 training epochs
  • 20–25% minimum confidence for small balls or pucks
  • 40–50% minimum confidence for players and referees

All automatic annotations must still be reviewed manually.

Privacy

Reco Trainer does not provide an upload function for videos or extracted images.

The local worker is restricted to the local computer. An exported .recomodel package contains model weights, checksums, and aggregate metadata—but no videos, images, source paths, or video filenames.

The initial ML setup may download software dependencies and pretrained model weights. It does not upload your sports footage.

Supported sports

  • Basketball
  • Football / Soccer
  • Handball
  • Hockey
  • Rugby
  • Lacrosse
  • American Football

The interface and walkthrough are available in German, English, Spanish, and French.

Download and installation

Download Reco Trainer 0.8 here:

Reco Trainer 0.8 on GitHub

macOS

Download Reco.Trainer.Mac.0.8.dmg, open it, and drag Reco Trainer into the Applications folder.

The current alpha is locally signed but not Apple-notarized. You may need to Control-click the application, select Open, and confirm the warning once.

Windows

Download Reco.Trainer.Windows.0.8.zip, extract it, and run:

Start Reco Trainer Windows.bat

Linux

Download Reco.Trainer.Linux.0.8.zip, extract it, make the launcher executable, and run:

Start Reco Trainer Linux.sh

Docker

Download Reco.Trainer.Docker.0.8.zip and follow the included START-HERE.md instructions.

Please help test it

This is still work-in-progress alpha software. Feedback is especially helpful for:

  • Frame extraction from many videos
  • Different Apple silicon generations
  • Windows and Linux installation
  • Basketball and other small-ball detection
  • Removing unsuitable training images
  • Local training performance
  • Model exchange and benchmark rankings

When reporting a problem, please include your operating system, hardware, sport, selected frame count, model size, number of epochs, and the complete error message.

Please do not upload or attach private recordings, extracted images, .reco-training folders, or logs containing personal file paths. Synthetic or redacted examples are preferable.

Source code and documentation:

github.com/wendibus/reco-trainer

I have a lot of futsal clips, if it is useful I can help you with them.

Hi

Thank you for the offer. I wanted to Build something which everybody can use without to much Knowledge about ml. Personally my Focus is ok Basketball. As soon as my Model is stable I will Share it.

The next Version of the Trainer will Support futsal.

Kind regards

3 Likes

Hi,

futsal is an option within reco trainer now. You are welcome to test it

1 Like

Reco Trainer 0.11 is available — Versioned Local Model Management

Reco Trainer 0.11 is now available for macOS, Windows, Linux and Docker.

Reco Trainer is a privacy-first, work-in-progress application for preparing training data and improving sports-camera detection models locally. Videos, extracted frames, annotations and training data remain on your own computer.

What is new in version 0.11?

The main addition is the new versioned model library:

  • Every completed training run is preserved as a separate model.

  • Models receive readable names and unique IDs.

  • The active model and the best evaluated model are clearly marked.

  • Models can be renamed or activated directly in Reco Trainer.

  • Inactive models can be deleted, while the active model is protected.

  • A worse new model is preserved but does not automatically replace a better model.

  • Independent test results are preferred for comparisons; validation results are used as a fallback.

  • Training can automatically continue from the latest compatible checkpoint.

Version 0.11 also includes:

  • OpenCV-assisted checks for potentially inaccurate ball boxes

  • Permanently visible training subdirectories

  • Improved handling of large video folders

  • Futsal as an additional sport

  • Reviewed active learning from new videos

  • A local benchmark for comparing multiple models

  • A new application icon and an in-app “What’s New” window

Recommended workflow

  1. Select your sport and a private local working directory.

  2. Extract frames from your videos.

  3. Remove unsuitable images and correct the ball annotations.

  4. Train a new model.

  5. Review its test or validation score in the model library.

1 Like

Thank you! :grinning_face_with_smiling_eyes:

I will test it as soon as possible.

Hi!

Do you have any tutorial to use Reco Trainer? In avaible to open the web interface and to upload videos, but I cant not train or import any model. I am in W11 (Opera GX) with AMD 7800 XT and 32GB RAM

Hi

Iam using it with a Mac ne don’t have the Chance to Test it with Windows

I have found a minor error you should update to the latest Version

I have prepared a Walk through to explain the workflow:

In general there are three ways to train the ML with reco Trainer.

  1. Mac
  2. NVIDIA
  3. CPU

Be prepared that the training might be a nightly job. Tagging itself should be performant with your setup.

Give it a try with some videos. If you run into a problem or need further advice leave a message

2 Likes

Nice! Thank you, I will try it out.

Start with just 100-200 typical Ball Situations then do a training. This should result in a lot of boxes which you just have to approve

1 Like

I cannot make work v0.12.2, I click in .bat and it opens a cmd windows for a few decims and it closes.

v0.12.1 starts without problems.

Hi,

you can use v0.12.1 but I have analysed the bat (thanks for your feedback) and Iam pretty sure that I could fix it. The improvements are really minor but if you want to have the newest one it should work now.

Thank you for your fast answer and solution :grinning_face_with_smiling_eyes:

Hi - new to all this, but almost have v.12 running. I get to the step of clicking the “Set Up ML” button and an error at the bottom says it can’t find the specified file. I’m on Windows, not sure what else might be helpful.

Thanks!

Hi

I develop and use it on Apple but Intro to Support all platforms. Thanks for the Hint with windows… I guess I found and fixed it. Please test it with the new version:

If you start the installed version again it should inform you that there is a newer one

1 Like

Hi! With the new version everything works fine in Windows until I use “train locally”, I reckon this is an error.

The log: Local ML worker exited with code 1.

Summary

return trainer_fn(*args, **kwargs)
File “D:\Nueva carpeta\.reco-training\.runtime\venv\Lib\site-packages\pytorch_lightning\trainer\trainer.py”, line 630, in _fit_impl
self._run(model, ckpt_path=ckpt_path, weights_only=weights_only)

File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py", line 1079, in _run
results = self._run_stage()
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\trainer\\trainer.py", line 1123, in _run_stage
self.fit_loop.run()
~~~~~~~~~~~~~~~^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\loops\\fit_loop.py", line 217, in run
self.advance()
~~~~~~~~~~~^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\loops\\fit_loop.py", line 469, in advance
self.epoch_loop.run(self._data_fetcher)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\loops\\training_epoch_loop.py", line 154, in run
self.on_advance_end(data_fetcher)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\loops\\training_epoch_loop.py", line 406, in on_advance_end
self.val_loop.run()
~~~~~~~~~~~~~~~^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\loops\\utilities.py", line 179, in _decorator
return loop_run(self, *args, **kwargs)
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\loops\\evaluation_loop.py", line 153, in run
return self.on_run_end()
~~~~~~~~~~~~~~~~~~~~^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\loops\\evaluation_loop.py", line 296, in on_run_end
self._on_evaluation_epoch_end()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\loops\\evaluation_loop.py", line 378, in _on_evaluation_epoch_end
call._call_callback_hooks(trainer, hook_name)
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\pytorch_lightning\\trainer\\call.py", line 228, in _call_callback_hooks
fn(trainer, trainer.lightning_module, *args, **kwargs)
~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\rfdetr\\training\\callbacks\\coco_eval.py", line 541, in on_validation_epoch_end
self._compute_and_log(trainer, pl_module, "val")
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\rfdetr\\training\\callbacks\\coco_eval.py", line 826, in _compute_and_log
self._print_ema_only_summary(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
trainer, pl_module, split, pfx, mar_key, ema_metrics, f1_overall, f1_by_cid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\rfdetr\\training\\callbacks\\coco_eval.py", line 1221, in _print_ema_only_summary
self._print_metrics_tables(trainer, "val (ema)", overall_ema, per_class_ema)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\\Nueva carpeta\\.reco-training\\.runtime\\venv\\Lib\\site-packages\\rfdetr\\training\\callbacks\\coco_eval.py", line 1344, in _print_metrics_tables
_render_summary_tables(console, title_pfx, overall_rendered, per_class)

File “D:\Nueva carpeta.reco-training.runtime\venv\Lib\site-packages\rfdetr\utilities\console.py”, line 278, in _render_summary_tables
console.print(_build_summary_renderable(title_pfx, overall_rendered, per_class))

File "D:\Nueva carpeta\.reco-training\.runtime\venv\Lib\site-packages\rich\console.py", line 1704, in print
with self:
^^^^
File "D:\Nueva carpeta\.reco-training\.runtime\venv\Lib\site-packages\rich\console.py", line 864, in __exit__
self._exit_buffer()
~~~~~~~~~~~~~~~~~~~~~~~~^^
File "D:\Nueva carpeta\.reco-training\.runtime\venv\Lib\site-packages\rich\console.py", line 820, in _exit_buffer
self._check_buffer()
~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "D:\Nueva carpeta\.reco-training\.runtime\venv\Lib\site-packages\rich\console.py", line 2055, in _check_buffer
self._write_buffer()
~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "D:\Nueva carpeta\.reco-training\.runtime\venv\Lib\site-packages\rich\console.py", line 2091, in _write_buffer
legacy_windows_render(buffer, LegacyWindowsTerm(self.file))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "D:\Nueva carpeta\.reco-training\.runtime\venv\Lib\site-packages\rich\_windows_renderer.py", line 19, in legacy_windows_render
term.write_text(text)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "D:\Nueva carpeta\.reco-training\.runtime\venv\Lib\site-packages\rich\_win32_console.py", line 402, in write_text
self.write(text)
~~~~~~~~~~~~~~^^^^^^
File "C:\Users\Manuel Jesús\AppData\Local\Programs\Python\Python313\Lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-52: character maps to
Local ML Worker terminated with Code 1.

Hi there was an error in the setup … thanks to your log file it was easy to fix. Sorry for the inconvenience … I hope that it does run know (with windows I mean)

1 Like

Thanks for your job!:grinning_face_with_smiling_eyes: