🥔 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);