Skeleton-based swing quality analysis for tennis players.
✧ Project Video ✧
Submission for the 8th CTCI Science and Technology Creativity Competition 2026 (Sports theme).
| Sections |
|---|
| Description |
| Results |
| Sensor |
| Website |
| Repo Layout |
| Technical Report |
| Acknowledgements |
Consumer tennis apps help users track and ball and answer if the shot landed in or out of the court. However, the app never tells the user what they did with their body for the shot to land the way it did. Skilleye helps answer to this issue with a free AI-powered analysis of the user's body such as elbow position at contact, hip rotation timing, and follow-through.
A swing video goes in and RTMPose extracts the user's 2D skeleton. A tracking step locks onto a single subject and normalizes the pose, and an ST-GCN models the result as a spatio-temporal graph. From that one representation, the system identifies the stroke, scores how well it was executed against expert templates, and turns the joints it flags into written corrections. A racket-mounted IMU adds the wrist and racket-face motion a single frontal camera cannot see.
Trained and evaluated on the THETIS dataset (1,980 clips from 55 subjects), every split is subject-disjoint, so no subject appears in both training and validation.
| Result | Baseline | |
|---|---|---|
| Pose extraction | 1,980 / 1,980 clips, 0 failures | |
| Stroke classification (6-way) | 81.7% ± 4.9% | 16.7% |
| Beginner vs. expert (2-way) | 82.4% ± 3.8% | 54.6% |
Both accuracies are means across 5-fold subject-disjoint cross-validation, not a single split. The quality scorer itself has no ground truth to validate against yet, so it is checked directionally: held-out expert clips outscore held-out beginner clips on 5 of 6 strokes. Smash does not pass, and that is reported as an open finding rather than tuned away.
A racket-mounted IMU board, designed in KiCad and fabricated by PCBWay. The board pairs a Seeed Studio XIAO ESP32-C6 with a GY-521 (MPU6050) and a TP4056 charging breakout. The board hosts its own WiFi network and streams accelerometer and gyroscope data at 200 Hz the moment a laptop connects. It is built and tested on real takes across all six strokes.
A live site can be found here: https://kyriosaa.github.io/skilleye/
ml/skilleye/ pose extraction, ST-GCN models, quality scoring, demo UI
ml/results/ trained metrics, figures, expert templates
hardware/ KiCad projects, firmware, gerbers, capture and monitoring clients
website/ project site, published to GitHub Pages
docs/ schematics, diagrams, design specs
REPORT.md has the complete write-up: dataset analysis, model architecture & training setup, the evaluation protocol and why it is subject-disjoint, the quality-scoring & skill-rule modules, hardware revisions, full results with per-class breakdowns, limitations, and remaining work.
PCB fabrication for the sensor board was sponsored by PCBWay.
