The paper, running in your browser.
This is the pose pipeline from my Sādhanā publication: MoveNet Lightning tracks 17 body keypoints from your webcam while the 28 KB classifier trained for the paper names the asana, live. Everything runs client-side in TensorFlow.js. No video is recorded, uploaded or stored; nothing leaves your device.
Camera stays off until you start it.
Detected asana
Works best on a laptop with your full body in frame, a few steps back from the camera. Try Tree (stand on one leg, palms together) or Chair (sit into an invisible chair). Single person only. One honest caveat: the classifier only knows these 11 asanas, so anything else maps to whichever pose is geometrically nearest. A keypoint heuristic catches plain standing, but creative nonsense will still earn a confident label; that's what a closed-set classifier does.
The architecture
The paper's design splits training and inference deliberately. MoveNet Thunder, the accurate variant, extracted keypoints to train a small classifier head (51 inputs, two dense layers, 11-way softmax). At inference the backbone swaps to MoveNet Lightning for speed. The weights running here were extracted from the paper's trained 28 KB TFLite classifier and verified to agree with it on every one of the 571 held-out test samples, where it scores 98.4%.
The plumbing
TensorFlow.js runs Lightning on your GPU through WebGL. The classifier head is small enough to run as plain JavaScript: hip-centered keypoint normalization plus three matrix multiplies per frame, so it doesn't care about your camera resolution. Predictions are smoothed over the last few frames to stop the label flickering, and a low-visibility gate refuses to guess when your legs or torso aren't in frame. The classifier itself only discriminates, it can't judge quality, so the form readout compares your skeleton to the training set's average geometry for the detected pose: a rough typicality hint, not coaching.