Swing Vision AI line calls and Analysis

@tushars92 @Falko83 the web app is now live! It works beautifully.

I still think Apple Watch is the way to go with an SE but this is a good alternative option.

One caveat is that your recording device and the secondary (eg Android) device must both have an internet connection. We tried Bluetooth but it’s super slow and unreliable for this kind of data transfer.
 
@TesseractOrion if any competitor appears they will run into the same issues we have with Android. It’s not physically possible to achieve our accuracy at 60fps on an Android device (yet). I’m pretty sure I’m more qualified to make a statement on this than anyone working on or thinking about working on this problem. Android hardware needs to get its sh*t together, plain and simple.
 
Last edited:
@AndrewUtz the better line calling requires 4K video, which costs us 4x as much to upload & store in the cloud. Thus we have to charge for it.

If we can someday figure out a way to record at 4K but save the video at 1080p, we’ll gladly bring the better accuracy to Pro. We’re not trying to gatekeep better accuracy at all - just trying to be reasonable about the increased COGS on our end.
 
@2ndServe I’d recommend 11 or newer. XS can’t keep up with realtime processing. SE 2nd gen is super affordable as well and has the same chip as an 11.

For what it’s worth I personally use my 13 pro every time I play and haven’t dropped it once. In fact, I can’t remember a single time a customer wrote in saying they dropped their phone from the fence!
 
@tushars92 Android update: Pixel 8 and S24 (which FINALLY gives 3rd party apps access to 60fps video) both are able to last 2 hours at 60 fps, but just barely so, without overheating.

The AI models run fast enough in isolation but not injunction with the recording. There are optimization opportunities from our side with respect to model conversion so we’re looking into that now.

Promising all around though but sadly not exactly a green light yet.
 
@AndrewUtz the better line calling requires 4K video, which costs us 4x as much to upload & store in the cloud. Thus we have to charge for it.

If we can someday figure out a way to record at 4K but save the video at 1080p, we’ll gladly bring the better accuracy to Pro. We’re not trying to gatekeep better accuracy at all - just trying to be reasonable about the increased COGS on our end.

Isn't it possible to do in the same way you export the video to post on YT? Just let the software run locally during shooting, in 4k, and when preparing to upload to the cloud convert it to 1080p. All the "brute force work" would be done by the hardware, and the upload/storage would be in 1080p.

It doesn't seem that difficult, considering all the tools for video conversion that exists and that probably are already baked into Swing Vision. With that said, I'm not a programmer nor I understand the basics of how the software works, so...

------------
Edit: for any of the users - as I'm a recent user, got the iPhone specifically for this: is it possible to correctly record a hitting singles session when 3 or 4 people are practicing and rotating between points (two on one side vs one, etc)?
 
Last edited:
@Tennis_Flamingo it’s mainly cloud costs. Not just for storage but also access, playing over a network, and converting it to h264. All incur lots of costs. Downscaling prior to upload is really challenging as iOS would only let such a process occur in the foreground with the app open. Lots of complexities and ultimately the cleanest would be to fully support it or not support it at all. I think an Ultra tier with some additional exclusive functionality would probably be the best solution.

@happyloman sorry that’s in beta! Email us at supoort@swing.tennis and we can get you access :) it’s quite fun for serve practice and ball machine. Hoping to release it publicly soon but the UX needs a little polish.

My question about recording in 4k and converting it on the device was answered before. It looks like an IOS limitation (the ones that actually make me mad at Apple, as a "new" user).
 
@Falko83 even if customers were okay with that conversion happening in the foreground, it would be a lengthy export process. A two hour match in 4K can be >40gb! Converting that to HD would take a long time, and ultimately it would be a really bad experience that isn’t worth the benefit of slightly better stats accuracy.

The only feasible approach is to save the video in HD as the 4K frames are coming in. I am hopeful this is possible but it will definitely require more processing (to resize every frame) and thus will impact battery life. I am hopeful though!
 
@Falko83 even if customers were okay with that conversion happening in the foreground, it would be a lengthy export process. A two hour match in 4K can be >40gb! Converting that to HD would take a long time, and ultimately it would be a really bad experience that isn’t worth the benefit of slightly better stats accuracy.

The only feasible approach is to save the video in HD as the 4K frames are coming in. I am hopeful this is possible but it will definitely require more processing (to resize every frame) and thus will impact battery life. I am hopeful though!

If you somehow try to implement this in a beta version, I do have an iPhone 15PM and would be OK with trying it to send data to solve bugs.
 
Sorry for the delay, guys! I don’t get email notifications for mentions here anymore but I’ll try to check back more regularly.

@ichaseballs @mptennis can you please make a ticket with support@swing.vision ? Our team can investigate. Very surprised to hear this as I haven’t heard either of these issues much from our CX team.

@thecatch33 can you DM me some links to your matches? Revert button should be available for everyone but we can take a look into your account to see what’s up.

@Tennis_Flamingo can you DM me? I can escalate with our ambassador team.
I did create a ticket. Ultimately I had to delete the sessions from Swing Vision and reprocess the raw video for both sessions. Support did mention there was a fix for it in 11.4.7, but I haven't recorded a long enough session to reproduce the issue, so I can't verify it works for me, but that's fine.
 
It feels like at least once in most matches, I forget to update the score on my watch between points. I end up fixing the score after two points have been played. This causes the first point to be dropped entirely from the edited match video. Is there any way for me to fix things either during the match or afterwards so that the point isn't dropped from the video?
 
It feels like at least once in most matches, I forget to update the score on my watch between points. I end up fixing the score after two points have been played. This causes the first point to be dropped entirely from the edited match video. Is there any way for me to fix things either during the match or afterwards so that the point isn't dropped from the video?
I experience this issue too. More so because perspiration causes swiping issues. Either I’m unable to swipe and give up because I can’t keep my opponent waiting too long or it causes phantom swipes which I have to later undo and re-swipe to arrive at the accurate score. For the latter, sometimes I forget the correct point sequence so I have to just swipe arbitrarily to arrive at the accurate current score. All scenarios lead to the point being missed in point-by-point playback but are captured as shots in shot-by-shot playback. If I’m lucky and the points are short, I’m able to use the point timing feature to “re-capture” the missed point. But for most times, the point timing bar doesn’t go back in time far enough for this to be possible.

At this point the only solution is to export the session as a raw video and re-import and use the auto-scoring feature. But that has its own flaws as most times the auto-scoring isn’t accurate and I end up doing a lot of editing too. Appreciate help on this!

I should add that I am recording in full video mode (not the auto trim beta).
 
If it's just a few shots, i've stopped bothering to reimport the whole raw video and trying to reprocess with auto-scoring, since it messes up the other already correct point-by-point scores.

I do this:
1. Export the SwingVision edited match video
2. Export the full raw video and cut out that point that's missing
3. Throw both videos into a video editor (I use InShot) and stich in the missing point.

There won't be a scoreboard on the missing point but it's good enough. Or you could manually add one.

Of course, much prefer if we can manually add/fix points in the SwingVision UI.
 
If it's just a few shots, i've stopped bothering to reimport the whole raw video and trying to reprocess with auto-scoring, since it messes up the other already correct point-by-point scores.

I do this:
1. Export the SwingVision edited match video
2. Export the full raw video and cut out that point that's missing
3. Throw both videos into a video editor (I use InShot) and stich in the missing point.

There won't be a scoreboard on the missing point but it's good enough. Or you could manually add one.

Of course, much prefer if we can manually add/fix points in the SwingVision UI.
I take a similar approach but go one step further if I decide to rectify the issue. I re-import and auto score, check if the affected game is auto-scored correctly, if not I just edit that game. Use a video editor to splice the affected game in between the original watch scored session.
 
Wah effort. But actually since you don’t make your YouTube videos public, is it more of perfecting the video for your own viewing?

I’m so lazy I sometimes just use the mobile video editor textbox feature to manually draw my own scorecard for those points.

One thing I find weird is why the SwingVision scorecard keeps changing size on different points.

And one fun feature i would like is different scorecard designs we could choose from.
 
@Falko83 even if customers were okay with that conversion happening in the foreground, it would be a lengthy export process. A two hour match in 4K can be >40gb! Converting that to HD would take a long time, and ultimately it would be a really bad experience that isn’t worth the benefit of slightly better stats accuracy.

The only feasible approach is to save the video in HD as the 4K frames are coming in. I am hopeful this is possible but it will definitely require more processing (to resize every frame) and thus will impact battery life. I am hopeful though!
Are the videos uploaded in h265? File sizes are much smaller than h264.
 
Wah effort. But actually since you don’t make your YouTube videos public, is it more of perfecting the video for your own viewing?

I’m so lazy I sometimes just use the mobile video editor textbox feature to manually draw my own scorecard for those points.

One thing I find weird is why the SwingVision scorecard keeps changing size on different points.

And one fun feature i would like is different scorecard designs we could choose from.
Yes, I can’t take the different formatting/look from point to point, but yet want a scoreboard.
 
@forzmr_b @theblueark while the point editing may not let you go that far back, you can technically just keep editing again and again to move it farther back if absolutely needed. Each time you go in to edit, you should be able to go back another 10 seconds or so. Let me know if any other editing tools would be helpful here. I know folks have requested the ability to merge/delete/split rallies but if anything aside from that would be helpful let me know!

The scoreboards changing heights is really strange. We'll get that fixed up later this month.
 
@forzmr_b @theblueark while the point editing may not let you go that far back, you can technically just keep editing again and again to move it farther back if absolutely needed. Each time you go in to edit, you should be able to go back another 10 seconds or so. Let me know if any other editing tools would be helpful here. I know folks have requested the ability to merge/delete/split rallies but if anything aside from that would be helpful let me know!

The scoreboards changing heights is really strange. We'll get that fixed up later this month.
@swupnil ability to merge/delete/split/add points/rallies would be the solution!

Moving the point further back is only a partial solution as it only works if “include missed 1st serves” is selected and won’t resolve the scoreboard if a point is missed or in other words 2 points are classified together as a single point even though the AI has correctly tagged 2 1st serves from deuce and ad sides.
 
@ichaseballs latest release lets you do standalone 10 pt tiebreak (just turn super tiebreak on and select 1 set).

As a new user, tried to do this yesterday - "Best of 1 set", didn't change anything in "Games", and selected the "10 Point Tie Break".

However, when we started, I noticed it was tracking the regular games. Is it possible to change this after the recording was made?


Adding to this: if I forgot to track the point in my Apple Watch during the match, the video is also messed up. Can this be corrected?
 
Last edited:
If we are apart of the Ambassador program that charged for the Ambassador lifetime fee, how come our status is to be revoked given that we did also pay for this staus? I would love to continue making youtube videos with SwingVision especially as a 5.0 player with my USTA teams so I'm flabbergasted that you are taking it away :(
 
@swupnil
I have facing some issues about points, AI is not recognising the right final points.
Even if i am entering to change details and i make save, it's not saving.
This is very bad because like this statistics are really poor.
Video is without interruption and is quite good HD with 60 fps, and if i see on log they seemed to be recognised, but on statistic there are mistakes.
Also there is a big difference between statistics on App and the one on link to see on Web.
 
I just played doubles but set up the recording as a ball machine practice. Played around with it but can’ figure out how to change the session type. Any tips?
 
@swupnil I used the "Setup from other device" option today and it was awesome. Love this feature! One request I'd like to make is the ability to select the session type when starting a new session. We did a rally session, then in order to do a match session I had to take the phone of the fence, remove the sun shield, select the session type, then put it all back together. It'd be awesome if I could just get to the courts, set up the camera and then do whatever I want from my secondary device without having to fiddle with the mount. But for real, it's a great feature as is! Helped me realize all my previous recording sessions were filmed at bad angles. :confused:
 
@forzmr_b @theblueark while the point editing may not let you go that far back, you can technically just keep editing again and again to move it farther back if absolutely needed. Each time you go in to edit, you should be able to go back another 10 seconds or so. Let me know if any other editing tools would be helpful here. I know folks have requested the ability to merge/delete/split rallies but if anything aside from that would be helpful let me know!

The scoreboards changing heights is really strange. We'll get that fixed up later this month.
I experienced the missing point issue yesterday. Played a three set match and it didn't recognize quite a few points which obviously caused the scoring to be wrong. I tried to edit some points to include the previous point start but could only go back a maximum of 20 seconds. Even if I saved and tried to edit again it just showed it was already starting at -20 seconds and I couldn't make anymore changes. It would be very helpful if we could somehow insert missing points and then redoing the auto score.
 
My apologies if this question has already been answered - if I got a link to my match from someone else’s SwingVision video….am I able to upload it into my SwingVision Library?
 
@mptennis sorry for the issues! We are trying to work through how we can provide better options to resolve autoscoring issues. If you mistakenly selected a wrong session type, please email us at support@swing.vision.

Appreciate the feedback on the remote control feature! Session type selection is on the roadmap :)
 
@MarinaHighTennis one of the main conditions of the program was that you have to keep referring 10 subscribers a year. As long as you’re doing that, you’ll continue to have Pro past the initial 5 year mark
 
I use swingvision since I changed android to apple 4 years ago. I find that app is magnificent... if you pay; free app resoults continously cutted, and the last one were the number of shots on watch app. I understand that app is continously improving and that needs resorces and money, but I don't believe that increasing suscription and cut back free access were the best policy to bring it closer to the user. In addition to this, I'd like to suggest an intermediate suscription in order to approach to common tennis player who want to measure his/her tennis, but doesn't access to most advanced improvements.

Regards.
 
@DrTompu the shot count disappearing actually isn’t a subscriber related change, but more so a UI change to have consistency with the video tracking experience. We will bring it back actually, but had to remove it while we’re refactoring the UI.

I hear you on the mid-tier subscription. We’ll do it eventually but need to get to profitability first. It’s a moot point to add another subscription if we don’t have a path to becoming a sustainable business that will stick around for the long term.
 
@swupnil I appreciate your request and I absolutely agree sustainable is the main pillar of any business, and nobody knows how many of every download becomes a regular user, and finally into subscriber.

For years I've been user of diferent gadgets to track my tennis: artengo tennis sensor, Zepp, Zepp 2, a rudimentary and discontinued Samsung app, babolat pop ... and then swing vision. The problem of every gadget: lack of support due to not being able to do profitable. So, you can be sure I wish you the best and for many years to come.
 
@swupnil Do you guys have a preferred place for feature requests? I know many of us have thrown them out here but I thought maybe there was a better way to submit them. Also do you have a public facing project management board where we can see requests and roadmaps?

And in that line of thinking I do have some feature requests:
  • Ability to step frame by frame in app and web. YouTube for web allows this via the comma and period keys. I've found it very helpful for reviewing technique.
  • Improved web player for mobile. I've found that when using the web interface the only way I can get the SPEED control to actually let me select a speed is by updating my browser settings to load the desktop site. This happens on both my Pixel 8 and my Samsung Galaxy Tab S8.
  • Ability to create highlight reels from the web. Unless I'm missing something it seems like you can only use the "include shots" option from the app itself.
  • Setup from Other Device optimizations - This feature is awesome, but the fact that it seems to constantly upload images can be a problem for people with mobile data limits. Probably a very niche issue, but in my case I just use the iPhone as a camera, and then have to connect it to the internet via my Android's hotspot feature. The first time I used it was like a 90 minute session and it used 2GB which seemed crazy high and means it's not a consistent option for me unfortunately. There's always the chance that SwingVision wasn't actually the problem, but unfortunately iOS doesn't seem to give users the option to view wifi data usage by app, just cellular data usage (really Apple!?), so I can't be sure.
Also out of curiosity I have a question about your algorithm for determining the hit timing. Does it try to use the microphone or is it purely based on the image? I did a serving session last week and I noticed quite a few of my serves were significantly faster than others. Upon inspection it's because the hit timing was extremely wrong, in some cases the ball looked like it was to the net when the app thought the hit occurred. I understand that speed measurements aren't all that important so chasing that accuracy probably isn't ideal, but I was curious how it worked if you care to share. Sorry for the laundry list of item, I'm just a computer geek that loves the app.
 
@tushars92 @Falko83 the web app is now live! It works beautifully.

I still think Apple Watch is the way to go with an SE but this is a good alternative option.

One caveat is that your recording device and the secondary (eg Android) device must both have an internet connection. We tried Bluetooth but it’s super slow and unreliable for this kind of data transfer.
Is this requirement for internet connectivity on the recording Apple device still true? The remote control web pages are a bit ambiguous mentioning needing to turn on WiFi or Cellular for pairing the devices. It would be really nice if the recording device could set up a local WiFi network that the secondary (in my case Android device) could connect to. I was about to pull the trigger on SV, but if I need internet on the recording device, it becomes a non-starter as I am not playing for a data plan on another device that is exclusive for SV use, and I also don't want to be setting up a WiFi hotspot from my Android phone and guzzle through my data plan (I see another post here mentioning 2GB of data usage for a single hitting session).

I don't really understand how SV works for Apple users, but is your recording device really uploading all the data using your phone's data plan at all times? That seems rather wasteful and if not, it isn't clear to me why this is a requirement for the Remote Control feature.
 
@hamsterhuey the original implementation was based on local WiFi networks but the API that Apple gave us had range limitations of 30 feet and was also iOS exclusive. It was also unreliable and connections would drop constantly.

This new implementation requires both devices to have an internet connection of some kind. However, this means there are no range or platform limitations.

Data should only be sent when the remote device tries to check the camera or challenge line calls. Otherwise, the data being sent should be fairly light and is just battery life / storage status. 2gb seems way too high. I can have our team do some tests to confirm.
 
@hamsterhuey the original implementation was based on local WiFi networks but the API that Apple gave us had range limitations of 30 feet and was also iOS exclusive. It was also unreliable and connections would drop constantly.

This new implementation requires both devices to have an internet connection of some kind. However, this means there are no range or platform limitations.

Data should only be sent when the remote device tries to check the camera or challenge line calls. Otherwise, the data being sent should be fairly light and is just battery life / storage status. 2gb seems way too high. I can have our team do some tests to confirm.
Thanks for the reply and clarification swupnil! That makes sense and glad to hear that the Remote control feature shouldn't need to be data-usage heavy.
 
I am looking for guidance in terms of hardware to buy if I decide to look into using SV. Here is my situation:
  • Android user who is looking to purchase a cheap-ish used/refurbed iPhone exclusively for SwingVision. The iPhone will not have a data plan
  • Will use Android phone as remote control to help set up the iPhone if I can get that working
  • I don't plan in having an Apple watch
  • Plan to get the SwingStick + sunshade
Given all of the above, I am trying to figure out which iPhone I should look into purchasing given that it is 2024 and there are a few more older gen iPhones around to be purchased. Is the 2nd gen SE still the best option for my use case seeing as I won't use it for anything but SV? I'm not sure how good the camera quality is or if lack of a wide-angle camera can be limiting. I have also heard that battery life on it isn't great for a longer session and apparently it doesn't work well with battery-packs when recording. I'd appreciate any recommendations for my situation!
 
Does anyone here have experience using the iPhone SE 3rd gen over the SE 2nd gen for SwingVision? It's ~$50 more and I don't mind spending a bit extra if it helps with processing times and/or battery life and can work with a battery pack (I've heard the 2nd gen struggles with a battery pack).
 
Does anyone here have experience using the iPhone SE 3rd gen over the SE 2nd gen for SwingVision? It's ~$50 more and I don't mind spending a bit extra if it helps with processing times and/or battery life and can work with a battery pack (I've heard the 2nd gen struggles with a battery pack).
I’ve read about issues with 2nd gen running iOS 17, which you would need to do in order to install anything from the App Store. I’d go newer.
 
@swupnil Do you guys have a preferred place for feature requests? I know many of us have thrown them out here but I thought maybe there was a better way to submit them. Also do you have a public facing project management board where we can see requests and roadmaps?

And in that line of thinking I do have some feature requests:
  • Ability to step frame by frame in app and web. YouTube for web allows this via the comma and period keys. I've found it very helpful for reviewing technique.
  • Improved web player for mobile. I've found that when using the web interface the only way I can get the SPEED control to actually let me select a speed is by updating my browser settings to load the desktop site. This happens on both my Pixel 8 and my Samsung Galaxy Tab S8.
  • Ability to create highlight reels from the web. Unless I'm missing something it seems like you can only use the "include shots" option from the app itself.
  • Setup from Other Device optimizations - This feature is awesome, but the fact that it seems to constantly upload images can be a problem for people with mobile data limits. Probably a very niche issue, but in my case I just use the iPhone as a camera, and then have to connect it to the internet via my Android's hotspot feature. The first time I used it was like a 90 minute session and it used 2GB which seemed crazy high and means it's not a consistent option for me unfortunately. There's always the chance that SwingVision wasn't actually the problem, but unfortunately iOS doesn't seem to give users the option to view wifi data usage by app, just cellular data usage (really Apple!?), so I can't be sure.
Also out of curiosity I have a question about your algorithm for determining the hit timing. Does it try to use the microphone or is it purely based on the image? I did a serving session last week and I noticed quite a few of my serves were significantly faster than others. Upon inspection it's because the hit timing was extremely wrong, in some cases the ball looked like it was to the net when the app thought the hit occurred. I understand that speed measurements aren't all that important so chasing that accuracy probably isn't ideal, but I was curious how it worked if you care to share. Sorry for the laundry list of item, I'm just a computer geek that loves the app.
@swupnil wanted to follow up on this to see if there was an official place to make feature requests or view a feature roadmap?
 
@swupnil wanted to follow up on this to see if there was an official place to make feature requests or view a feature roadmap?
I second these, especially the ability to step forward and back by frame. It is invaluable for analyzing technique and right now things are rather clunky when trying to pause at various checkpoints to analyze swing/serve mechanics.

I’ve read about issues with 2nd gen running iOS 17, which you would need to do in order to install anything from the App Store. I’d go newer.
Thanks. I ended up getting the SE 3rd gen to future proof a bit and for the improved battery life. 1.5 hour session used up around 50% battery.
 
Anyone else having major issues with auto-scoring and/or keeping track of rallies with Final Score as the option? I definitely messed it up with one recent match where we had to start with the 2nd game, but even when I pretended that first set was a warmup, and started the match on the first point of the 2nd, it could not auto-score, and was also eating points (it would go from 0-0 to 30-30 - what happened to the points in between?). The next match I tried is now also completely hosed. Seems to not know anything about rallies after the warmup even though I have 90 minutes of video after that. Am I just doing something wrong here? Is there a way to reset it from scratch and get a better result?
 
Anyone else having major issues with auto-scoring and/or keeping track of rallies with Final Score as the option? I definitely messed it up with one recent match where we had to start with the 2nd game, but even when I pretended that first set was a warmup, and started the match on the first point of the 2nd, it could not auto-score, and was also eating points (it would go from 0-0 to 30-30 - what happened to the points in between?). The next match I tried is now also completely hosed. Seems to not know anything about rallies after the warmup even though I have 90 minutes of video after that. Am I just doing something wrong here? Is there a way to reset it from scratch and get a better result?
When I encounter such issues, I export in full and use a video editor to create shorter clips for re-import. For example, cutting out the warm-up or splitting the sets into separate video files. This helps reduce the errors. Downside is your session will be split, but it is a compromise. You have the option of re-exporting and merging them with a video editor back to a single clip for local storage or upload to YouTube etc.
 
When I encounter such issues, I export in full and use a video editor to create shorter clips for re-import. For example, cutting out the warm-up or splitting the sets into separate video files. This helps reduce the errors. Downside is your session will be split, but it is a compromise. You have the option of re-exporting and merging them with a video editor back to a single clip for local storage or upload to YouTube etc.
Sounds good - I will give that a shot.
 
Does everyone else have SwingVision make egregiously bad line-calls or bounce location estimates fairly often, even for very easy balls that it should get right? I haven't been all that impressed with the quality of line-calling and I find it hard to believe that this is meeting metrics for automated line-calling. At the moment it seems way worse than well-intentioned players calling balls in/out from my experience. For the record, I am using a swing-stick with the top extended all the way for the highest vantage point and an iPhone SE 3rd gen.

Some examples attached
 
if the camera moves at all, then it will not be accurate. i think a tripod is better and won't give you that off angle video
i have only used the app to record and watch.
The shot data and shot tracking from my experience has been unreliable.
 
if the camera moves at all, then it will not be accurate. i think a tripod is better and won't give you that off angle video
i have only used the app to record and watch.
The shot data and shot tracking from my experience has been unreliable.
Thanks for the reply. Actually it is on a swingstick and it does have the full-court in view. I cropped it out just to keep the overlay with the names out so I didn't post them up online. In all of these rallies, the camera was completely static. I do work in the field of computer vision and it is surprising to me how poorly it is working in some of these situations and I can't tell if this is a bug of some sort impacting me or my device specifically. It also looks like they don't utilize sound cues at all to refine bounce timing which is surprising.
 
Back
Top