All work01 / 07
Fédération Française de TennisEfrei Research LabParis, France
2027

WhatSkeleton-based action recognition

StrokeNet

AcceptedWACV 2027

Recognises fine-grained strokes from skeleton and ball dynamics.

Fine-grained stroke recognition that brings the ball trajectory into state-space dynamics, and keeps its accuracy when the ball goes missing.

  • 92.35%Top-1 on Fine-Tennis10 (StrokeNet-v1), ahead of all 12 compared methods
  • 83.09Macro-F1 (StrokeNet-v2), most stable across seeds (± 0.03)
  • −3 ptsTop-1 lost with 70% of ball frames masked; the ball-aware baseline loses ~30

Overview

The problem

Strokes such as a backhand and a backhand volley, or a lob and a forehand, share most of their body motion and differ in small details and in what the ball does. The ball is the decisive object, but in broadcast video it is small, blurred and often undetected. Existing datasets also lacked an expert taxonomy with synchronised pose and ball observations.

What was missing

Most racket-sport recognisers fuse ball information only after the pose sequence has been encoded, so contact evidence reaches the final decision but cannot guide how motion is represented. Pooling joints early loses the per-joint detail that separates neighbouring classes. Fine-grained benchmarks also suffer from label noise and subjective clip boundaries, and clip-level splits let a model recognise the player rather than the stroke.

Architecture

StrokeNet: generic architectureInput skeleton sequenceS ∈ ℝT×V×Cₛ2D ball trajectory+ visibility{uₜ, mₜ}, t = 1 … TPoseencoderHierarchicalBi-Mamba-2backboneFeatureextractionTrajectoryencoder (TCN)Pose tokensBall tokensVariant-specificpose–ballfusionStrokeclassifierStroke prediction(a) StrokeNet-v1: external pose–ball fusionStage 1: ×2 (shared weights)RMSNormBi-Mamba-2RMSNormMLPT-DownStage 2BP-CAT-DownStage 3BP-CAT-DownStage 4×2Balltokensvisibility-maskedRMSNormAttentionRMSNormMLPK, VCross-attention (×2)SDPA + RoPE(Q, K)FusedtokensPoolRMSNormLinearLSCEloss(b) StrokeNet-v2: internal pose–ball fusion×2 (shared weights)Dynamic G-ConvRMSNormBi-Mamba-2RMSNormMLPStage 1Per-joint T-DownPer-joint T-DownPer-joint T-DownStage 2Stage 3Stage 4LSCElossFinallossα1α2α3α4BalltokensLinearNext-frame ballforecastMSElossmain flowconditioning (⊗)auxiliary objectiveposeballfusion / BP-CAball-cond. Bi-Mamba-2Bi-Mamba-2head / auxloss

Swipe to see the whole diagram →

The shared pose-centred pipeline (top) and its two fusion variants: body-part cross-attention between stages (a) and ball-conditioned selective scans inside every stage (b).
Technical details
  • Inputs: AlphaPose 2-D pose from player crops, lifted to 3-D with MotionBERT (H36M-17 joints); TrackNetV3 2-D ball trajectory with per-frame visibility. Missing ball positions are interpolated for tensors but masked as unobserved.
  • v1: four Bi-Mamba-2 stages with body-part cross-attention (BP-CA) between them and late cross-attention fusion; 31.8% of its parameters (2.89M) sit in the fusion modules.
  • v2: ball-derived offsets ΔB, ΔC and Δt are added to the pose-derived SSD parameters (positive steps through softplus); dynamic graph convolution and per-joint downsampling keep joints separate; a next-frame ball forecast is an auxiliary loss.
  • Joint and bone streams are trained separately and ensembled at score level. AdamW, 300 epochs, batch 128, EMA 0.999, three seeds.
  • BadmintonDB: a shared two-player encoder with a player-interaction head over 18 classes.

What I built

  1. 01

    Fine-Tennis10

    A multimodal benchmark of 16,153 Roland-Garros stroke clips with expert classes, Hawk-Eye boundaries and synchronised RGB, pose, mesh and ball (details below).

  2. 02

    StrokeNet-v1

    A hierarchical Bi-Mamba-2 backbone in which anatomical body-part features attend to visibility-masked ball tokens between temporal stages, then late cross-attention fusion.

  3. 03

    StrokeNet-v2

    Visibility-gated ball offsets condition the state-space operator itself (input and output projections and the discretisation step), while each joint keeps its own temporal sequence.

  4. 04

    Robust when evidence goes missing

    Both variants keep most of their accuracy when ball frames are masked, and each tolerates a different corruption: dropped joints (v2) or temporal cropping (v1).

The dataset

Fine-Tennis10: the benchmark behind StrokeNet

Fine-grained stroke recognition needed a benchmark that did not exist: expert classes that a single broadcast view can resolve, clip boundaries no annotator has to guess, and every modality synchronised on the same stroke. Fine-Tennis10 was built from professional Roland-Garros singles broadcasts, with three FFT specialists.

16,153stroke clips
10expert-defined classes
351matches, Roland-Garros 2021–2024
243professional players
50 FPS1920 × 1080 broadcast RGB
99.0%of clips rated fully usable in quality control
  1. Expert taxonomy

    Defined with a state-certified coach of the National Technical Directorate, a data scientist and an innovation lead; only distinctions visible in one broadcast view are kept.

  2. Boundaries from Hawk-Eye

    Each clip is cut from official ball events (bounces and net crossings) synchronised with the video, not from subjective annotation.

  3. Every modality, aligned

    RGB, 2-D pose (AlphaPose), lifted 3-D pose (MotionBERT), a model-derived SMPL body mesh, and the 2-D ball trajectory with per-frame visibility (TrackNetV3).

  4. Two evaluation protocols

    A class-stratified split (12,919 train / 3,234 test) and a player-disjoint split that holds out 30% of the athletes, so a model cannot win by recognising the player.

The ten stroke classes, defined with FFT specialists
ClassFamilyDefinition
ServiceServeStroke initiating the point from the service motion.
ForehandGroundstrokePost-bounce forehand groundstroke or return, excluding drop shots, lobs, volleys and overheads.
BackhandGroundstrokePost-bounce backhand groundstroke or return, excluding drop shots, lobs, volleys and overheads.
Drop shotTouch shotForehand drop shot intended to land short with reduced ball speed.
Half volleyTransition playStruck immediately after the bounce, usually from a low pickup near the net.
LobLobHigh-arc shot sent over the opponent rather than driven flat through the court.
Backhand drop shotTouch shotBackhand drop shot intended to land short with reduced ball speed.
Backhand volleyNet playBackhand volley struck before the bounce, typically near the net.
SmashOverheadOverhead attacking stroke struck above shoulder or head height, usually with a downward finish.
VolleyNet playForehand volley struck before the bounce, typically near the net.
Samples of every class, from far-side and close-side players across 2021–2024.
Samples of every class, from far-side and close-side players across 2021–2024.

Main results

92.35%Top-1 on Fine-Tennis10 (v1), ahead of all 12 compared methodsTemPose-SF 91.98%
83.09Macro-F1 on Fine-Tennis10 (v2), with ± 0.03 across seedsSkateFormer 81.81
82.58Macro-Accuracy on Fine-Tennis10 (v2), highest of the tableTemPose-SF 81.59
63.85%Top-1 on BadmintonDB (v1)TemPose-SF 62.04%
−3.2 ptsTop-1 lost with 70% of ball frames masked (v1 −3.18, v2 −3.09)TemPose-SF −29.59
80.64%Top-1 with 5 of 17 joints masked (v2), best of all methods+8.38 over TemPose-SF
State-of-the-art comparison on Fine-Tennis10 and BadmintonDB, mean ± std over multiple seeds
TypesMethodsPublicationModalityFine-Tennis10 (Ours)BadmintonDB (Public)
RPBTop-1M-AccM-F1Top-2SPPPTop-1
CNNResNet3DCVPR 2018✓✗✗63.31±0.2053.81±0.1853.85±0.0685.96±0.15–––
PoseConv3DCVPR 2022✓✓✗85.65±0.2573.60±0.1973.71±0.4194.44±0.29–––
GCNST-GCNAAAI 2018–––––––✗✗56.02±2.52
MS-G3DCVPR 2020✗✓✗89.73±0.1079.99±0.0480.71±0.3895.73±0.17–––
BlockGCNCVPR 2024✗✓✗90.18±0.2678.65±0.5878.80±0.3595.79±0.08✗✗57.82±2.21
ProtoGCNCVPR 2025✗✓✗90.94±0.0980.26±0.1780.89±0.0996.34±0.11✗✗56.56±3.74
TransformerTimeSformerICML 2021✓✗✗84.66±0.10––––––
HyperformerarXiv 2023✗✓✗89.46±0.1978.21±0.1878.23±0.2395.85±0.07–––
TemPose-VCVPRW 2023–––––––✗✗57.64±1.87
TemPose-PFCVPRW 2023–––––––✗✓59.86±1.58
TemPose-TF (court-pos-z)CVPRW 2023✗✓✓91.33±0.4281.23±0.8781.01±0.9396.15±0.02✓✓61.99±1.69
TemPose-SFCVPRW 2023✗✓✓91.98±0.2681.59±0.7581.79±0.8596.68±0.05✓✗62.04±1.07
SkateFormerECCV 2024✗✓✗91.33±0.2081.17±0.1581.81±0.3196.26±0.22–––
SimbaarXiv 2024✗✓✗88.68±0.2276.87±0.3777.01±0.2395.32±0.18–––
MambaTSkel-Mamba-w/o CPKDarXiv 2025✗✓✗88.86±0.1879.81±0.4478.55±0.5495.97±0.02✗✗57.53±3.92*
StrokeNet-v1 (Ours)–✗✓✓92.35±0.2581.81±0.4682.48±0.4096.45±0.28✓✗63.85±0.58
StrokeNet-v2 (Ours)–✗✓✓92.08±0.1182.58±0.2383.09±0.0396.45±0.18✓✗62.91±1.63

Fine-Tennis10 pose results use score-level ensembles of joint and bone streams. BadmintonDB baselines are published results. * TSkel-Mamba evaluated by us. R/P/B = RGB / Pose / Ball · M-Acc = Macro-Accuracy · M-F1 = Macro-F1 · SP/PP = Shuttle / Player Position · court-pos-z = player positions zeroed.

Qualitative results

Demo

Nine Fine-Tennis10 test strokes at half speed: the estimated 2-D pose, the ball track and the lifted 3-D input, with StrokeNet's clip-level decision shown after each stroke.

Limits and next steps

Interaction is one-way: pose does not update the ball stream, and trajectory uncertainty is not modelled beyond visibility. Half volley stays the hardest class (15 test clips). Next steps are reciprocal pose–ball conditioning, the opponent through the two-player adaptation, and court geometry from CourtAlign.

Beyond this project

Human–object interaction wherever an object decides the action: ergonomics and rehabilitation, gesture recognition, any recogniser that must keep working when one sensor drops out.

Research output

Paper

StrokeNet: Structured State Space Duality for Pose-based Stroke Recognition in Racket Sports

Ahmed Jouini, Faten Chaieb-Chakchouk, Alex Loth

WACV 2027

Accepted together with the Fine-Tennis10 benchmark; proceedings forthcoming.

Code

Madou10-lab/StrokeNet

GitHub

Dataset

Fine-Tennis10 on Hugging Face

Derived modalities (pose, mesh, ball) under CC BY-NC 4.0; RGB on gated request. DOI 10.57967/hf/11172.

Dataset

Contact

Interested in the work?

I'm looking for AI research engineer roles in computer vision and video understanding, ideally in sports analytics, though not only. Ready to start a new journey.

Paris, France

jouiniahmed66@gmail.com Email me