MAGIC: author-trained RN50 experts
Eight RN50 experts fine-tuned by the MAGIC authors for SUN397, Cars, RESISC45, EuroSAT, SVHN, GTSRB, MNIST and DTD. These are our experimental checkpoints, rather than third-party fine-tuned experts. All experts share the same pretrained OpenAI CLIP RN50 initialization. The upstream backbone is from OpenAI CLIP; MAGIC code is at lyymuwu/MAGIC.
Files
checkpoints/RN50/{task}/finetuned.pt: eight full ImageEncoder experts, 257,106,027 bytes each.heads/head_{task}.pt: their matching frozen classification heads.configs/{task}/config.jsonandresult.json: author-run training settings and selected-epoch summaries.configs/training_manifest.json: class order, shared-initialization checksum and dataset sizes.configs/splits.json: exact original training/validation indices; no training images are included.configs/calibration_split.jsonandsensitivity.json: calibration indices and sensitivity rankings.configs/fusion_settings.json: the actual merger variants, scales and correction settings.configs/DEFAULT_RESULTS.json: current fixed-upper-bound-2 RN50 response results.release_manifest.jsonandSHA256SUMS: binary file sizes and SHA256 checksums.
The eight experts total 2,056,848,216 bytes. Matching heads total 3,122,914 bytes. Training images and private machine paths are not included.
Training and loading
Training uses a frozen CLIP classification head, AdamW (weight decay 0.1), batch size 128, cosine learning-rate decay and gradient clipping at norm 1. Model and split seeds are 42 and 22. Per-task learning rate, epoch budget, validation patience, selected epoch and BatchNorm policy are recorded in the supplied configurations. BatchNorm running statistics remain fixed at the shared initialization; policy all also freezes affine parameters, while stats permits affine learning. Evaluate with model.eval() and do not recompute BatchNorm statistics.
The checkpoint format is a PyTorch-serialized src.modeling.ImageEncoder. Install the matching MAGIC source and dependencies and make its src package importable before loading:
import torch
encoder = torch.load("checkpoints/RN50/MNIST/finetuned.pt", map_location="cpu", weights_only=False)
head = torch.load("heads/head_MNIST.pt", map_location="cpu", weights_only=False)
encoder.eval()
head.eval()
# images use encoder.val_preprocess
# logits = head(encoder(images))
The model stores its image preprocessing pipelines. With newer torchvision versions, old transform pickles may require the existing RN50 ensure_transform_compatibility helper to add the missing antialias attribute in memory. The exact shared pretrained checkpoint is identified by SHA256 97f59cabfac09d49710ad095f9594a9d2bbff65c78a251d21dc1062791b83d40; it is not duplicated in this expert release.