How we did it.
A test model trained on 500 cats and 500 dogs, then run in the browser so an uploaded photo can be labeled on the spot.
The network
We started from MobileNetV2, a small image model that already knew how to look at photos. The last layer was replaced so the only answers are Cat and Dog.
The photos
Training used the Cats vs Dogs folders on the computer: one folder of cats, one folder of dogs. Those pictures stay on the machine. They are not stored in this website.
The test run
This published model used the first 500 readable images of each class, 1,000 in total. They were shuffled, then split 80/20: 800 photos updated the model, and 200 were held out so the accuracy number was not just memorization.
The training
It ran for 3 epochs. An epoch is one pass through the 800 training photos, in batches of 32. Validation accuracy was 86% after epoch 1 and 94% after epochs 2 and 3. The saved file is that 94% version.
A new photo
The picture you upload is resized to 224 by 224 pixels and scaled the same way as in training. The network returns a score for Cat and a score for Dog, and those percentages are calculated in the browser. A smaller copy of the photo is then sent to Claude Haiku 4.5, which writes the two or three sentence report under the bars.
This is the 500-image test model, so a strange photo or a picture of neither animal can still get a confident wrong answer. The full 12,500-per-class set was not used for this file.