π₯ PowerPotato: 10KB Air-Gesture Shorts Controller-2k prameters
"Trained in 2 minutes inside Termux on a mobile CPU. Fits on a floppy disk. Controls YouTube Shorts with wrist flicks so you can eat greasy pizza in peace." ππ±β¨
β‘ The Potato Specs
- πͺΆ Model Size: Only ~10 Kilobytes!
- π₯ Hardware Target: Runs 100% locally on any potato phone, browser, or microcontroller CPU at 60+ FPS.
- π Battery Drain: Practically 0% (uses lightweight 3-axis accelerometer data).
- π― Accuracy: 95%+ with confidence filtering and cooldown debouncing.
πΉοΈ Supported Gestures & Actions
| π± Movement | π― Mapped Action |
|---|---|
| Flick Down β¬οΈ | Next Video / Scroll Down |
| Flick Up β¬οΈ | Previous Video / Scroll Up |
| Wrist Twist π | Double-Tap Like (Heart β€οΈ) |
| Back Knock β | Pause / Play βΈοΈ |
| Normal Idle πΆββοΈ | Ignored (Zero false alarms!) |
π§ Architecture
A custom, microscopic 1D-CNN (Convolutional Neural Network) trained on 30 resampled timesteps of 3-axis accelerometer data (Ax, Ay, Az).
- Input shape:
[1, 3, 30](Batch, 3 channels, 30 timesteps) - Output shape:
[1, 5](Class probabilities)
π» Quick Web Inference (JavaScript / ONNX Runtime Web)
import * as ort from 'onnxruntime-web';
// 1. Load the tiny model
const session = await ort.InferenceSession.create('gesture_model.onnx');
// 2. Feed rolling 30-sample accelerometer buffer [1, 3, 30]
const inputTensor = new ort.Tensor('float32', flatFloat32Array90, [1, 3, 30]);
const results = await session.run({ accel_input: inputTensor });
console.log("Prediction output:", results.probabilities.data);
- Downloads last month
- 32