Product Updates

New updates and improvements

Current environment pipeline versions

  • Stable: v0.7.51
  • Latest: v0.7.51
v0.7.51

General

  • More robust handling of downloaded videos: workers now store persistent s3:// URIs and resolve fresh access URLs when reading videos, avoiding expired presigned URLs in long-running tasks.
  • The video download worker is included in release and environment pointer workflows again, so downloaded-video handling is deployed with pipeline releases.

Bugfixes

  • Fixed file-size checks for S3 presigned URLs where HEAD requests can return 403; the pipeline now falls back to a ranged GET.
v0.7.47

General

  • Strict JSON schemas to ensure robust output
  • Longer timeout for video reading to avoid issues with slow network connections
  • Better error handling, more clear messages

Bugfixes

  • Output jsons contained null values for some fields. This is fixed now.
v0.7.45

Ball detection & tracking

  • New tennis ball detector with improved tracking and fine-tuning
  • Smarter "main ball" selection, optimized to filter out balls from neighboring courts
  • More robust ball-bounce detection for both tennis and padel (new bounce models)
  • Linear interpolation of ball bounces for smoother trajectories in statistics

Court detection

  • New court detectors for tennis and padel, with several model updates
  • Improved court post-processing and keypoint reconstruction for more accurate coordinates

Swing identification

  • Updated swing detectors for tennis and padel
  • Improved volley and serve detection
  • Better swing validation to reduce false positives

Player tracking & pose

  • Improved player re-identification after occlusions
  • Keypoint score filtering and per-joint interpolation for steadier poses (padel)

Statistics

  • Improved rally detection for tennis and padel
  • Rallies are now more consistently contained within the same team session
  • Various output fixes (confidence values, track length, serve confidence)

General

  • Stability and logging improvements across the analysis pipeline
v0.7.5

General

  • In tennis: Rally output now also includes one-shot events (aces, serves to the net)

Bugfixes

  • Some rallies were mistakenly identified as warmups due to fake ball detections, this is mostly fixed now.
v0.7.2

General

  • Optimized embedding calculations for tracking to run in parallel
  • Removed hard GOP limit for pre-analysis check.

Bugfixes

  • Fixed some processing windows leading to issues during tracking and causing some tasks to fail.
v0.6.101

General

  • Reduced analys initialization time.
  • Improved video-reading stability for poor network connections

Statistics

  • Warmup is now removed from reported tennis rallies
  • Improved warmup detection
v0.6.97

General

  • Faster and more robust scaling
  • More robust video handling. Checking various requirements before analysis start
  • Budgeted video download to stop excessive video reads
  • Added option "read_video_from_origin". Defaults to true, where workers reads video using provided video URL. Setting to false adds a pipelinestep which uploads video to SportAI-server which means video is only read once.
  • Better handling of VFR video. Still comes with some performance loss for some metrics
  • Bugfix: Removed rare race condition where scaleout is delayed due to DB connection congestation

Ball detection

  • New ball detector for tennis
  • Supports multiple balls and ball-tracking
  • Better ball bounce detection for tennis
  • Better server detections for tennis
  • bugfix: some ball bounces on tennis racket was suppressed.

Swing identification

  • Improved model for tennis

Statistics:

  • More robust serve and rally-start detections.
v0.6.55

Statistics

  • New model for ball detector
  • More robust smoothening of ball trajectories
  • More consistent use of player positions and speeds to identify when a rally starts
v0.6.50

General

  • Small bugfixes
  • Improved scaling performance
  • Improved capacity for parallel analysis
  • Reduced inference time for all models

Statistics

  • Improved player court position accuracy
  • Improved tennis statistics performance
  • Included support for both tennis doubles and tennis singles
  • Improved ball detection
  • Improved ball and person detection for far-side of the net in tennis
v0.5.70

Statistics

  • Serve swings are now always marked with serve=true, even if they do not start a proper long rally included in the rally list.
  • Improvements in serve detection
  • More persistent team sessions: each rally is usually fully contained within the same team session

Balls

  • Better model for ball bounce detection
  • Better and faster model for ball tracking

General

  • Bugfix to avoid NaNs in player heatmaps
v0.5.58

General

  • Improved stability for video reading
  • Extended reading retry when loosing connection to video
  • General stability improvements
  • Added more descriptive error codes

Tracking

  • Improved tracking accuracy.

Swing detection

  • New model, reducing number of false negatives
  • Reduced runtime

Person detection

  • Reduced runtime

Swing identification

  • Stability issue fix
  • Removed low-quality swings caused by inference on heavily interpolated poses
  • Adjusted thresholds

Statistics

  • Team sessions carry key information about players in the session
  • Small improvements to rally detection
  • Beta-support for tennis. See documentation
v0.5.10

Swing identification

  • Stability issue fix
  • Removed low-quality swings caused by inference on heavily interpolated poses
  • Adjusted thresholds
v0.5.6

Court detection

  • Improved detection model further
  • Fixed issue where videos starting with camera movement (during mounting etc) yielding unreliable court-detections

Tracking

  • Improved tracking model to work better for courts outside

Statistics:

  • Fixed issue with NaN in the respons-json causing issues with json-parsing
  • Prepared support for tennis. Update to come
  • Some improvements to rally detection

General

  • Fixed bug with false detection covering full image
v0.4.83

General

  • Added retry logic to attempt to re-establish connection to video if its lost during processing
v0.4.82

Swing identification

  • Introduced new endpoint to find swings in a tennis or padel tennis video. Documentation to come.
    • Endpoint works in much the same way as statistics, except it also takes a parameter "sport_type". Currently only supports
      • tennis_singles
      • padel_doubles
    • Endpoint returns a list of swing objects pr player.
      • Each swing is described as
          {
          "start_time": <float>,
          "impact_time": <float>,
          "stop_time": <float>,
          "confidence": <float [0-1]>,
          "player_id": <int>,
          "label": <str>
        } 

Court Detection

  • Performance increase on courts outside, rectified images and now supports tennis courts
v0.4.76

Court Detection

  • Overall accuracy increase
  • Supports rectified images
  • Fix: Doesnt look through the whole video in search for a court if none is found

Padel Statistics

  • Players court position added to player-position
  • Fixed some of the issues with swing identification for variable frame-rate videos.

General

  • Increased API capacity
  • Fixed crashes when analysing variable framerate video.
  • Fixed rare scale-in issue causing task to be held up for a long time before completing
v0.4.67

Padel Statistics

  • Better ML model for player tracking
  • Ball bounces include also swings: the new attribute 'type' that can be 'floor' or 'swing'
v0.4.65

Padel Statistics

  • Improved "warm-up" detection.
  • Added "only in rally" option to only report statistics for events that happend during a rally

General

  • More robust handling of network issues.
v0.4.62

Padel Statistics

  • Improved "warm-up" detection.
  • Small bugfix related to rally detection

General

  • Stability fix
  • Improved video-reading efficiency
v0.4.59

Padel Statistics

Improved player tracking (identification):

  • Handle differences in appearance of players on the near and far sides of the court (due to different camera angles, resolution, net position, etc.)
  • Handle different appearances of players with face/body turned towards and away from the camera
  • Smarter handling of player re-identification after occlusions by another player
  • Utilize preferences for keeping the same team composition during the video
  • More robust handling of mistakes on the human detection stage and occlusion artifacts
  • More strict conditions for image similarity to decide that they belong to the same player ID
  • Avoid occlusions by Matchi logo

General

  • Stability improvements
  • Bugfix for jobs with non-zero start_time input
  • Bugfix for videos with non-zero timestamp at the first frame
v0.4.46

API

Please see Swagger or API Reference for more details.

New endpoint: /api/videos/check

This endpoint checks whether video(s) is acceptable, and estimates compute time based on video length.

Task-creation endpoints

  • Requests have a new optional field:
    • version (optional): defaults to stable, which targets a stable pipeline version. Set this value to latest to analyze the video with our latest version. link text
  • Responses have a new field:
    • estimated_compute_time: the estimated compute time (same as for /api/videos/check). link text

Task-status endpoints

Status-endpoint responses have two new fields:

  • total_subtask_progress: a weighted progress.
  • subtask_progress: an object containing the progress of each subtask category link text

Task-result endpoints

Result-endpoint responses have a new field:

  • metadata whose value is an object containing pipeline_version, the system version that did the analysis. link text

Padel Statistics

Player speed

More robust player speed calculations:

  • speeds are not computed over player-absent intervals of 0.3 sec (was 1 sec before)
  • speeds are not computed over sudden changes in the apparent player position that are often caused by occlusion
  • bugfix in outlier removal for player position

Volley detection

Each swing gets two new attributes:

  • volley (true/false): true if the swing is a volley
  • confidence_volley (0-1): for a more advanced analysis; volley is set true if confidence_volley > 0.5

General

  • Bugfixes
    • Now works for video with an FPS higher than 60
    • Videos without players does no longer cause issues
v0.4.15

Padel Statistics

  • Avoid crashes when video does not have swings
  • Bugfix in court detector that could cause errors (~1m) in court coordinates in some rare cases
v0.4.8

Padel Statistics

  • New swing identification model.
  • Volley is no longer a predicted swing type
  • Small stability improvements
v0.4.7

Padel Statistics

  • Improved validation of swings, based on both player movements and ball data
  • Improved detection of rallies due to confidence-based detection of serves, rallies and pauses between them
  • Avoiding sporadic high values in player speeds due to outlier removal with interpolation
  • Removing secondary ball tracks that likely relate to neighboring courts
  • More accurate ball speeds due to a simple phyics-based model: much lower values than in earlier versions

New attribute for padel statistics

  • rallies: start and end time of all detected rallies (some of them are chosen as highlights)

See Statistics Result in Detail: Rallies for more detail.

New and redefined attributes for swings

  • valid (true/false)
  • serve (true/false)
  • is_in_rally (true/false)
  • rally: start and end time of the rally the swing belongs to
  • confidence_swing_type is confidence that the swing if of the given type based on player movements analysis (it was called "confidence" in earlier versions)
  • confidence: overall confidence that a swing is valid, it is based on confidence_swing_type and consistency between the swing time/place with the detected ball motion

See Statistics Result in Detail for more detail.

Smaller notes:

  • Ball speeds are returned also for serves (they were excluded in earlier versions)
  • Swing count in highlights is updated to include only valid swings (but the swing list includes all swings)
v0.4.6

Padel Statistics

  • Better filtering of swings to reduce false positives
  • Removing short ball tracks to avoid using balls from neighboring courts
  • More robust smoothing of player speed. Removing low confidence poses to avoid unrealisting velocities
v0.4.5

Padel Statistics

  • Bugfix to restore missing ball speeds (for ~25% of swings)
  • New delivery: player positions in image coordinates
  • New features in highlights: number of swings, speed and distance of ball and players, dynamic score
  • Fastest sprint for players in highlights: smooth capping at 40 km/h
  • Nan values for 'absent' players in highlights: replaced with zeros

General

  • Restoring missing frames (~1%) in video-reader for ball detector
  • More robust handling of rounding errors in timestamps by video-reader
v0.4.3

Padel Statistics

  • More robust player speed calculations
  • More robust ball speed calculations
  • More robust ball bounce calculations
  • Smooth limit to player speed to 40 km/h
  • Smooth limit to ball speed to 200 km/h
  • Ball speed data are excluded from serves

General

  • Fixes to video-handler which caused minor timestamp issues leading to nans in covered distance
v0.4.1

Thumbnails

Added thumbnails to results json from statistics endpoint. See documentation for more info

Teams

Added team-list, showing who is play with eachother throughout a video

Ball bounces

Added list of all ball bounces with court position, timetamp and ID of shooting player

Other fixes

  • Removed Player heatmap for each highlight
  • Stability improvements
  • Minor improvements to highlight calculation
Webhooks

Early beta version of webhooks 🎉

We have opened up for testing webhooks! It is still early days, but we are excited to share what we have been working on. Head over to our documentation to get started.

v0.3.2

Patch with a few bugfixes.

  • Bugfix that prevents crashes due to very rare events when player doing a swing is absent in key frames during the swing.

  • Worakaround to avoid tasks hanging forever: Cleanup of inconsistencies in the workers and tasks tables (that appear due to AWS limit on the communication bandwidth leading to some messages being lost).

  • Bugfix for dimensions of ball bounce heatmap.

  • Bugfix for fastest_sprint_timestamp for players.

  • Bug fix for ball_hit_location for swings.

  • Speed of players is now in km/h instead of m/s (consistent with units for ball speed).

v0.3.0

Autoscaling

  • Added limited autoscaling. Backend will scale up to meet demand of 5 one hour long videos in "parallel". Additional requests will not cause backend to scale further.

  • Oldest videos will be processed first. 5 videos of one hour each should be completed within 60-70 minutes in total, where the first video is expected to be completed after around 45 minutes.

Ball Bounce Heatmap

  • Added heatmap of where balls have bounced on the ground.

  • Heatmap resolution is 1 by 1 meter per bucket.

Highlights

  • New highlight type: Fastest Rally.

  • Excluded parts of video with multiple balls in play from highlight computation to avoid including "warmup sessions" as highlight.

  • More robust algorithm.

Ball Speed

  • Change algorithm to use ball bounce locations. This increases the amount of swings with estimated ball speed.

  • Improved ball-speed accuracy.

Ball Location

  • Added image location of ball (x, y coordinate).

Tracking

  • Reduced occurrences of ID swapping in hard tracking cases like occlusion, low confidence, False positives, etc.