A convolutional network with 136,417 int8 parameters and hand-written JavaScript kernels. No TensorFlow, no ONNX, no WebAssembly, no dependencies at all. Every pixel stays on your device.
Drop an image, paste one, pick a sample below,
or point your camera at lunch.
An EfficientNet-B0 was fine-tuned as a teacher, then distilled into the small network above, then quantized to 8-bit integers with quantization-aware training. The result runs through four convolution kernels written by hand in JavaScript: a dense 3×3, a depthwise 3×3, a pointwise 1×1, and a fixed-point requantizer.
The forward pass uses no floating-point arithmetic. Weights are int8, activations are uint8, accumulators are int32, and rescaling between layers is done with an integer multiply and a shift. Getting the high 32 bits of a 64-bit product in a language whose only number is a double is the interesting part.
The JavaScript is checked against a NumPy implementation of the same integer program and must produce identical logits on every validation image — not close, identical.