What EMG Taught Me About Vision
I started with a model. The harder lesson was that sensors have personalities.
When I started working on CycloFormer, I thought the main story was going to be architecture. Sixteen electrodes around a wrist, a cyclic symmetry, a Transformer that should not care where channel 0 happens to be. Clean problem. Clean inductive bias. Clean win.
That story is still true, but it is not the part that stayed with me.
The part that stayed with me is more basic: sensors fail differently.
Vision is unbelievably good when the hand is visible. On clean frames, it sees geometry directly. You can look at the image and understand why a monocular hand model does well. But the moment a hand starts doing the thing we actually care about in manipulation — closing around an object, hiding fingertips, making contact — the evidence starts disappearing from the image.
sEMG is almost the opposite. It does not see the hand at all. It sees a noisy, indirect electrical trace upstream of motion. That sounds worse, and most of the time it is. But when fingers disappear behind the palm or an object, the muscle signal does not blink. It is still there. In our comparison, vision wins when the hand is visible; sEMG starts to look better once two or more fingertips are occluded.
That changed how I think about "better modality." The answer is not a leaderboard number. It is a failure mode.
the symmetry was not decoration
The band has 16 channels. People do not wear it at the same rotation every time. So the same forearm activity can arrive as a cyclic shift of the electrode axis.
At first this felt like a nice mathematical property to exploit. Later it felt less optional. If the nuisance is exact, asking the model to relearn it from augmentation is wasteful. CycloFormer bakes the cyclic structure into the network: shared channel processing, circular relative position, and a pooling step that removes the arbitrary channel origin.
The useful thing about the bias was not that it made the paper prettier. It made the model spend less of its capacity learning something we already knew.
scaling looked wrong until it made sense
The other uncomfortable result was the scaling curve.
I expected the usual story: make the model larger, loss goes down. That is the reflex you pick up from language and vision scaling plots. On emg2pose, the curve bent back up. Bigger models helped for a while, then started to overfit.
At first this looked like a training bug. It was not. The dataset is large for sEMG, but tiny compared with the regimes where clean scaling laws are usually fit. We were not compute-limited. We were data-limited.
That is why the extra term in the law matters. It is not a clever equation for its own sake. It is an admission that, in this regime, adding parameters can move you closer to the interpolation threshold instead of farther from error.
The fitted law says something blunt: to reach the vision target we used, the field likely needs far more data, not just a bigger model. Roughly 34x more session-hours than emg2pose, under the assumptions of the fit. I do not read that as a prophecy. I read it as a scale check.
the thing I trust more now
Before this project, I would have described sEMG as a replacement candidate for vision or a weaker alternative to vision. That framing now feels too simple.
The interesting version is complementarity. Use vision where vision is strong. Use biosignals where the visual channel collapses. Then be honest about the cost: sEMG needs data, careful sensor geometry, and models that respect the way the signal is sampled.
That is the lesson I would keep even if every number in the paper moved a little: the modality is not just an input tensor. It carries a set of promises and a set of lies. The model has to know both.