Product Updates
New updates and improvements
Current environment pipeline versions
- Stable:
v0.7.51 - Latest:
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
HEADrequests can return403; the pipeline now falls back to a rangedGET.
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
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
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.
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
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
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
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
Swing identification
- Stability issue fix
- Removed low-quality swings caused by inference on heavily interpolated poses
- Adjusted thresholds
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
General
- Added retry logic to attempt to re-establish connection to video if its lost during processing
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> }
- Endpoint works in much the same way as statistics, except it also takes a parameter "sport_type". Currently only supports
Court Detection
- Performance increase on courts outside, rectified images and now supports tennis courts
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
Padel Statistics
- Better ML model for player tracking
- Ball bounces include also swings: the new attribute 'type' that can be 'floor' or 'swing'
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.
Padel Statistics
- Improved "warm-up" detection.
- Small bugfix related to rally detection
General
- Stability fix
- Improved video-reading efficiency
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
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 tostable, which targets a stable pipeline version. Set this value tolatestto analyze the video with our latest version.
- Responses have a new field:
estimated_compute_time: the estimated compute time (same as for/api/videos/check).
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
Task-result endpoints
Result-endpoint responses have a new field:
metadatawhose value is an object containingpipeline_version, the system version that did the analysis.
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
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
Padel Statistics
- New swing identification model.
- Volley is no longer a predicted swing type
- Small stability improvements
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 toconfidence_swing_typeis 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)
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
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
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
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
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.
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).
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.