Methodology
Here I detail the process of training the computer vision model and the analytical techniques that power the app’s insightful feedback on sprinting form.
Here I detail the process of training the computer vision model and the analytical techniques that power the app’s insightful feedback on sprinting form.
I found that determining angles between body parts from the data generated by the model is relatively simple and extremely insightful. It allows me to extract the specific types of feedback I want for all runners, regardless of size, and without dealing with quantitative measurements which I will get into later.
The process of evaluating qualitative distances between body parts relies on the establishment of fixed reference points, or 'anchors.' Instead of measuring specific distances, this approach involves comparing the position of one body part to another based on predefined anchor points. Much like determining angles, this method allows the program to find boolean truths about the runner's form that aren't affected by the variance in size of different runners.
While finding quantitative distances are significantly less valuable in giving feedback because of their dependence on the size and proportions of the runner, they can still provide useful data for users who want to do their own analysis. But getting this data is much more complex because users will take their videos from different distances and perspectives.
My solution, which is still being prototyped, is to calculate the distance in pixles between a predetermined pair of keypoints, say, the hip to shoulder, and then compare its distance to the target distances. Then the user could simply input the true distance (they would have to measure this) between the predetermined pair of points to find the target data using ratios.
Another idea I've been tinkering with is a second pass approach, where before the main model goes through the video and allows the data to be analyzed, a less sophisticated, but more efficient, model will go through first and determine some preliminary information about the video and the runner. Right now, the only useful info that could be gathered from this approach is the direction that the sprinter is running in (left to right/right to left), so I've streamlined the process by having users enter the direction beforehand.
But if quantitative data were to be collect as mentioned above, finding the average distance between the predetermined pair of keypoints in the first pass might resolve a lot of complexity in the program and could potentially be worth doing.
If you encounter any issues or have any questions, please feel free to open an issue on this repository or contact me at isaac.saxonov@gmail.com.
Thank you for using StrideScan!