Not Hotdog

A 136,416-parameter int8 CNN that decides whether an image is a hot dog, built to run in a browser with hand-written JavaScript kernels and no dependencies of any kind.

Live demo: https://ericspencer.us/hotdog Source: https://github.com/EricSpencer00/not-hotdog

Results

Measured on the int8 model โ€” the one that actually ships โ€” not on the float checkpoint.

Split n accuracy majority baseline F1 precision recall
test 3415 94.8% 92.6% 0.634 0.661 0.609
adversarial 150 81.3% 90.7% 0.176 0.150 0.214

The adversarial split is six classes held out entirely from training:

class correct accuracy
bratwurst 34/40 85.0%
chili_dog 3/12 25.0%
corn_dog 8/10 80.0%
dachshund 40/40 100.0%
hot_dog_bun 31/40 77.5%
hot_dog_wild 0/2 0.0%
sausage_roll 6/6 100.0%

Read F1, not accuracy. The evaluation sets are heavily negative, so predicting "not a hot dog" unconditionally already scores the majority baseline above.

Architecture

96x96x3 input, MobileNet-style depthwise-separable stack, ReLU only, global average pool, one logit. 14.0M MACs.

  • weights: int8, per-output-channel symmetric, zero-point 0
  • activations: uint8, per-tensor symmetric, zero-point 0
  • accumulators: int32, requantized with a fixed-point multiply and shift

Trained by distilling a fine-tuned EfficientNet-B0 (T=4, alpha=0.7), then quantization-aware training with BatchNorm folded into the convolutions.

Files

file what it is
model_int8.npz weights + layer graph, read by the NumPy reference
model.js the same weights, base64, as an ES module
hotdog.js the complete bundled engine โ€” drop it in a page

Limitations

Small model, and not subtle. Good at obvious hot dogs and obvious non-food, much weaker at the boundary, which is what the adversarial numbers show. Clean licence-clear hot dog images are scarce; positives were the binding constraint throughout.

Licence

MIT.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support