About PuffinVBT

PuffinVBT measures barbell velocity from ordinary phone video. It exists because the equipment that normally does this costs money, needs setting up, and has to be attached to the bar.

The research behind it

This is the practical half of a Master's thesis. The product came out of the research rather than the other way round, which means two questions had to be answered before it was worth building.

RQ1: is the measurement any good?

How accurately can smartphone video, machine-learning segmentation and ellipse fitting measure barbell velocity and range of motion, compared against a tethered linear position transducer recording the same sets?

The latest full validation pass ran the pipeline across over 1,300 training videos. On the supported filming angles, the current best-performing configuration reaches:

MeasureAgreement (ICC)Mean error
Peak concentric velocity0.9230.046 m/s
Mean concentric velocity0.9270.028 m/s
Range of motion0.95222 mm
Rep counting97.6% correct

VBT validation studies commonly treat ICC above 0.90 with mean error under 0.05 m/s as excellent agreement. This pass clears that bar.

The two rows rest on different evidence, which is worth being precise about. Velocity agreement comes from 408 reps recorded with a linear position transducer attached to the bar at the same time, so there is a direct displacement reading to compare against rep by rep. Rep counting is checked across roughly 1,300 sets, most of them ordinary uploads where the comparison is against the athlete's own reported rep count.

The numbers move as methods improve, since every pipeline sweep re-runs the same evaluation. Full breakdown in the write-up and, eventually, the finished thesis.

RQ2: can the numbers predict effort?

Can a classical machine-learning model trained on velocity metrics predict an athlete's reported RPE? Bar speed is objective, RPE is not, and the relationship between them is the part worth investigating.

How the measurement works

There is no marker on the bar and no sensor. The method tracks a weight plate, which is a known size, and uses that to convert pixels into metres.

  1. Orientation. Phone rotation metadata is read and the video turned upright.
  2. Segmentation. A neural network finds the plate in every frame.
  3. Ellipse fitting. A plate filmed at an angle is an ellipse, and its shape encodes that angle.
  4. Cleansing. Tracking gaps are re-identified, outliers removed, missing frames imputed.
  5. Perspective transform. Known plate diameter plus the fitted ellipse converts pixels into metres.
  6. Rep detection. Reps are found in the vertical signal, then per-rep speed and range of motion follow.

Accuracy depends on the camera angle, which is why the guidance asks for a side-on view with a plate visible throughout. A sharply angled or obstructed view measures worse, and the honest answer is that it is a real limitation rather than something the model quietly corrects for.

Your data

Sign-in is Google SSO, so no password is stored here. Your videos and the numbers derived from them are yours, and deleting them removes them from every view.

Contributing your training data to the underlying research is optional. It is asked for separately during sign-up consent and is never a condition of using the product. See the privacy policy for the detail.

Curious what it produces? See a worked example, or try it on a video you already have.

From the blog

All posts →
Why I Built PuffinVBT
Personal

Why I Built PuffinVBT

The personal story behind PuffinVBT. A decade of lifting, a stubborn ego, coaches who know my body better than I do, and the realization that bar speed doesn't lie.