Mouse vs. Hominid

Can computer vision objectively determine how different are mice from hominids and settle whether they qualify as a generalizable model organism?

01  The dataset

Every hominid and mouse drawing used to train and validate the classifier, at full resolution, cropped to the ink.

All hominid sketches, animated
Hominid — 77 drawings (61 train / 16 val)
All mouse sketches, animated
Mouse — 80 drawings (64 train / 16 val)

02  Split, architecture, training

157
total drawings
125
train (61 hom / 64 mouse)
32
val (16 / 16)
4.0M
total params (1.7M fine-tuned)
100%
best val accuracy
25
training epochs

Photos of the drawings were cropped to their ink content, converted to grayscale, and cached as 160×160 PNGs (resized to 128×128 at load time) so training doesn't re-decode full-resolution source JPEGs every epoch. Training augmentation used random rotation, horizontal flip, small translation, and scale jitter; validation images are unaugmented.

The classifier fine-tunes a pretrained EfficientNet-B0 backbone (ImageNet weights). With only 125 training images, fine-tuning the entire 4M-parameter backbone would just memorize the training set, so everything except the final MBConv block and the classifier head is frozen — 1.7M of the 4.0M total parameters are actually trained.

input 3×128×128
→
stem + blocks 0–13 (frozen, ImageNet-pretrained)
→
blocks 14–15 (fine-tuned)
→
conv_head + BN (fine-tuned)
→
global avg pool
→
dropout → linear(1280→2), fine-tuned

Optimized with AdamW (lr 3e-4, weight decay 1e-4) and cosine annealing over 25 epochs, cross-entropy loss, batch size 16, ImageNet normalization. Validation accuracy reached 100% by epoch 18 and briefly held it before mild overfitting set back in as the frozen backbone's few trainable layers kept fitting a training set this small — the checkpoint saved is the epoch-18 best, not the final epoch:

epoch  1/25  train_loss=0.5903  val_loss=0.4901  val_acc=90.6%
epoch  5/25  train_loss=0.1143  val_loss=0.1071  val_acc=96.9%
epoch 10/25  train_loss=0.0719  val_loss=0.0587  val_acc=96.9%
epoch 15/25  train_loss=0.0188  val_loss=0.0606  val_acc=96.9%
epoch 18/25  train_loss=0.0371  val_loss=0.0671  val_acc=100.0%
epoch 19/25  train_loss=0.0693  val_loss=0.0775  val_acc=100.0%
epoch 22/25  train_loss=0.0447  val_loss=0.1307  val_acc=96.9%
epoch 25/25  train_loss=0.0586  val_loss=0.1854  val_acc=93.8%
best val acc: 100.0%  (epoch 18 checkpoint used below)

03  What the model looks at — GradCAM

GradCAM highlights, in red, which regions of each drawing produced the strongest gradient for the model's predicted class. Ten validation examples per class, shown at full resolution.

Hominid

hominids example 1
Hominids #1
hominids example 2
Hominids #2
hominids example 3
Hominids #3
hominids example 4
Hominids #4
hominids example 5
Hominids #5
hominids example 6
Hominids #6
hominids example 7
Hominids #7
hominids example 8
Hominids #8
hominids example 9
Hominids #9
hominids example 10
Hominids #10

Mouse

mouse example 1
Mouse #1
mouse example 2
Mouse #2
mouse example 3
Mouse #3
mouse example 4
Mouse #4
mouse example 5
Mouse #5
mouse example 6
Mouse #6
mouse example 7
Mouse #7
mouse example 8
Mouse #8
mouse example 9
Mouse #9
mouse example 10
Mouse #10

04  If you squint (or blackout occlude)

One interpretation of the existence of a somewhat consistent GradCAM heatmap is that there is a body part or feature the model finds most important for classifying. What would happen if we occluded a little part of the image and re-run the classifier? Does it truly depend on a small detail? Can a mouse be seen as a hominid? Can a hominid be seen as a mouse?

We limited the occlusion to max 32px (of the 128px canvas) and counted how many samples of the whole dataset we were able to 'flip' to the opposite class.

58 / 80mouse flipped (72.5%) at ≤ 32px
3 / 77hominid flipped (3.9%) at ≤ 32px

Mouse → 58/80 flipped at ≤ 32px (72.5%)

Mouse example 1
Mouse #1no flip
Mouse example 2
Mouse #2no flip
Mouse example 3
Mouse #3flipped
Mouse example 4
Mouse #4no flip
Mouse example 5
Mouse #5flipped
Mouse example 6
Mouse #6flipped
Mouse example 7
Mouse #7flipped
Mouse example 8
Mouse #8flipped
Mouse example 9
Mouse #9flipped
Mouse example 10
Mouse #10flipped

Hominid → 3/77 flipped at ≤ 32px (3.9%)

Hominids example 1
Hominids #1no flip
Hominids example 2
Hominids #2no flip
Hominids example 3
Hominids #3no flip
Hominids example 4
Hominids #4no flip
Hominids example 5
Hominids #5flipped
Hominids example 6
Hominids #6no flip
Hominids example 7
Hominids #7no flip
Hominids example 8
Hominids #8no flip
Hominids example 9
Hominids #9no flip
Hominids example 10
Hominids #10no flip
Our two classes seem to have very different robustness to this blackout occlusion test. 72.5% of mouse drawings (58/80) can be flipped to "hominid" with a single small black square, but only 3.9% of hominid drawings (3/77) can be flipped to "mouse" the same way.

Could this mean that if we squint our eyes, metaphorically or literally or if something occludes are vision, we can see mice as hominids? Moreover, this does not work the other way!

One conclusion from this can be that mice are actually a valid model for studying humans. With the caveat that humans are not great models for studying mice. The model is objective after all.

05  de novo synthesis

Heatmaps and blackout occlusions show us how the model treats the data it is presented with. But what is the idea of a mouse, of a hominid that it actually learned?

To try and answer this we started with a blank canvas and ran a gradient ascent on the classifiers output logic leading to a convincing 'mouse' or 'hominind'

We put in a couple of constraints: we force continuous strokes with a fixed pen width rather than a pixel grid and the loss was set to reward the spatial frequency spectrum of the training data. Below are eight runs from random initializations.

Hominid

Eight synthesized hominids, frequency-matched, EfficientNet-B0
8 independent syntheses of "hominid" — all p≈1.00, frequency-matched to real hominid drawings

Mouse

Eight synthesized mice, frequency-matched, EfficientNet-B0
8 independent syntheses of "mouse" — all p≈1.00, frequency-matched to real mouse drawings
The idea of what a hominid and what a mouse is. A bunch of extremities on one side and a blob of round shapes on the other.

06  Conclusion

We took EfficientNet. A model that has seen it all (aka the ImageNet database) and showed it a carefully curated dataset of hominids and mice.

We saw where the model looks for information when having to decide, we found that it is easy to fool into thinking a mouse is a hominid, but not the other way around.

Finally, we saw its somewhat abstract ideas of our shapes.

Hominids are "limby" crotch-centric figures, while mice are defined by their ears with a round back in close proximity. And yet by squinting its eyes, or having carefully placing a small black square, this objective judge can mistake a mouse for a hominid. This can be interpreted as a computational confirmation that mice are valid model organisms for humans. Surprisingly, though, we should be careful when extrapolating ideas from humans to mice as it might not be as easy.

We work with mice to study vision and wish to extrapolate our findings to humans. But mice are nocturnal animals adapted to whisk, smell and hear their way through the world. Such is the valid criticism of this model.

As a mouse researcher I am biased. That is why I reached out to computer vision to provide the ultimate objective truth.