Demo models
Vision models converted to ONNX for the in-browser demos on karay.me: the LaFAM demo and the region similarity demo. The demos run them on the visitor's device with ONNX Runtime Web (WebGPU, or WebAssembly on the CPU); no image leaves the browser.
Each file is the largest model of its family that stays under 100 MB.
Interface
Every model takes one input and returns the last feature map before pooling:
| Shape | Meaning | |
|---|---|---|
input image | (1, 3, 224, 224) | RGB in [0, 1]; the model's own normalization is part of the graph |
output features | (1, C, H, W) | the last feature map; for ViTs, the patch tokens after the final norm, as a grid |
output cell_logits | (1, 1000, H, W) | classifiers only: the classification head applied to every cell |
For the classifiers that pool their features (ResNet, ConvNeXt, Swin, MaxViT), the mean of
cell_logits over the cells equals the model's logits, so the per-cell readout is exact
(Karjauv, 2026). Weights are stored as float16 and cast to float32
in the graph; the files match the PyTorch models to a correlation of at least 0.9999 on the demo images.
Files
| File | Model | Source checkpoint (timm) | Grid | License |
|---|---|---|---|---|
resnet50.onnx | ResNet-50, ImageNet classifier | resnet50.tv2_in1k | 7×7 | BSD-3-Clause |
convnext_small.onnx | ConvNeXt-S, ImageNet classifier | convnext_small.fb_in1k | 7×7 | Apache-2.0 |
swin_small.onnx | Swin-S, ImageNet classifier | swin_small_patch4_window7_224.ms_in1k | 7×7 | MIT |
maxvit_tiny.onnx | MaxViT-T, ImageNet classifier | maxvit_tiny_tf_224.in1k | 7×7 | Apache-2.0 |
dino_resnet50.onnx | DINO ResNet-50, self-supervised | DINO dino_resnet50_pretrain.pth (torchvision) | 7×7 | Apache-2.0 |
dino_vit_small.onnx | DINO ViT-S/16, self-supervised | vit_small_patch16_224.dino | 14×14 | Apache-2.0 |
dinov2_vit_small.onnx | DINOv2 ViT-S/14, self-supervised | vit_small_patch14_dinov2.lvd142m | 16×16 | Apache-2.0 |
dinov2_reg_vit_small.onnx | DINOv2 ViT-S/14 with registers, self-supervised | vit_small_patch14_reg4_dinov2.lvd142m | 16×16 | Apache-2.0 |
dinov3_vit_small_plus.onnx | DINOv3 ViT-S+/16, self-supervised | vit_small_plus_patch16_dinov3.lvd1689m | 14×14 | DINOv3 License |
dinov3_convnext_small.onnx | DINOv3 ConvNeXt-S, self-supervised | convnext_small.dinov3_lvd1689m | 7×7 | DINOv3 License |
fcmae_convnextv2_tiny.onnx | ConvNeXt V2-T, masked autoencoder (FCMAE) | convnextv2_tiny.fcmae | 7×7 | CC-BY-NC-4.0 (non-commercial use only) |
clip_resnet101.onnx | CLIP ResNet-101 (OpenAI), image encoder trunk | resnet101_clip_gap.openai | 7×7 | MIT |
tinyclip_vit_medium.onnx | TinyCLIP ViT-M/16, image encoder | vit_medium_patch16_clip_224.tinyclip_yfcc15m | 14×14 | MIT |
Each file is a derivative of its source checkpoint and is distributed under that checkpoint's license (see LICENSE.md). The DINOv3 models are distributed under the DINOv3 License, a copy of which is included; ConvNeXt V2 (FCMAE) is for non-commercial use only.
Reproducing
export_models.py exports every file from its source checkpoint and checks it
against PyTorch on a folder of .jpg images (any will do):
SAMPLES=path/to/images uv run --no-project --with torch --with torchvision --with timm --with onnx --with onnxruntime \
--with pillow python export_models.py NAME