--- pipeline_tag: image-classification library_name: pytorch tags: - fine-grained-image-recognition - image-classification - knowledge-distillation - timm --- # FGIR-KD: how to choose your teacher for fine-grained image recognition These are the checkpoints behind *How to Choose Your Teacher for Fine Grained Image Recognition* ([arXiv:2605.15689](https://arxiv.org/abs/2605.15689)), presented at the FGVC13 workshop at CVPR 2026. Small students (ResNet-18, LCNet, LeViT, ViT-T) are distilled from a range of fine-grained teachers to study which teacher helps most. `teachers/` holds the teachers themselves; `students/` the distilled students. The model code is shared with TGDA ([arkel23/TGDA](https://github.com/arkel23/TGDA)). 2083 checkpoints, one per configuration, each the last epoch of one training seed. Each file is a `torch.save` dict with `config` (the full training configuration), `model` (the state dict), `accuracy` and `epoch`, with no optimizer state. File names are the runs' experiment-log names, ending in the serial. Load them with [fgir-zoo](https://github.com/arkel23/fgir-zoo). The [collection](https://huggingface.co/collections/ERISLab/fgir-kd-how-to-choose-your-teacher-fgvc13-cvpr-2026-6ab32cd35061af167deb14d6) groups this repo with the paper. ## Layout | Folder | Models | Teachers | Datasets | Files | Mean accuracy | |---|---|---|---|---|---| | `teachers/serial_15` | `resnet101.a1_in1k`, `resnetv2_101.a1h_in1k`, `vgg19_bn` | - | 8 | 8 | 90.46 | | `teachers/serial_16` | `convnext_base.fb_in22k`, `resnet101.a1_in1k`, `resnetv2_101.a1h_in1k`, `resnetv2_101x3_bit.goog_in21k`, `swin_base_patch4_window7_224.ms_in22k`, `van_b3`, `vgg19_bn`, `vit_b16` | - | 6 | 48 | 82.21 | | `teachers/serial_17` | `convnext_base.fb_in22k`, `resnet101.a1_in1k`, `resnetv2_101.a1h_in1k`, `resnetv2_101x3_bit.goog_in21k`, `swin_base_patch4_window7_224.ms_in22k`, `van_b3`, `vgg19_bn`, `vit_b16` | - | 1 | 8 | 81.45 | | `teachers/serial_18` | `convnext_base.fb_in22k`, `resnet101.a1_in1k`, `resnetv2_101.a1h_in1k`, `resnetv2_101x3_bit.goog_in21k`, `swin_base_patch4_window7_224.ms_in22k`, `vgg19_bn`, `vit_b16` | - | 1 | 7 | 78.83 | | `teachers/serial_400` | `convnext_base.fb_in22k`, `resnet101.a1_in1k`, `resnetv2_101.a1h_in1k`, `resnetv2_101x3_bit.goog_in21k`, `swin_base_patch4_window7_224.ms_in22k`, `van_b3`, `vgg19_bn`, `vit_b16` | - | 1 | 9 | 71.90 | | `teachers/serial_501` | `resnetv2_101x3_bit.goog_in21k` | - | 5 | 5 | 86.01 | | `students/serial_1` | `resnet18` | 1 | 1 | 1 | 73.78 | | `students/serial_2` | `lcnet_035` | 8 | 9 | 72 | 66.13 | | `students/serial_3` | `lcnet_035` | 8 | 9 | 72 | 64.36 | | `students/serial_4` | `lcnet_035` | 8 | 9 | 72 | 62.50 | | `students/serial_7` | `levit_128s` | 8 | 8 | 57 | 63.23 | | `students/serial_102` | `resnet18` | 1 | 1 | 1 | 63.62 | | `students/serial_104` | `vit_t16` | 1 | 1 | 1 | 14.38 | | `students/serial_105` | `lcnet_035` | 1 | 2 | 2 | 33.97 | | `students/serial_106` | `levit_128s` | 1 | 2 | 2 | 39.34 | | `students/serial_193` | `lcnet_035` | 1 | 1 | 1 | 76.86 | | `students/serial_201` | `resnet18` | 8 | 10 | 72 | 74.73 | | `students/serial_202` | `resnet18` | 8 | 9 | 65 | 71.92 | | `students/serial_203` | `resnet18` | 8 | 13 | 104 | 72.22 | | `students/serial_204` | `resnet18` | 8 | 13 | 104 | 66.47 | | `students/serial_205` | `resnet18` | 8 | 13 | 104 | 70.14 | | `students/serial_206` | `resnet18` | 8 | 13 | 104 | 64.09 | | `students/serial_207` | `resnet18` | 8 | 13 | 104 | 68.60 | | `students/serial_208` | `resnet18` | 8 | 13 | 104 | 63.21 | | `students/serial_209` | `lcnet_035` | 8 | 13 | 104 | 55.43 | | `students/serial_210` | `lcnet_035` | 8 | 13 | 104 | 54.11 | | `students/serial_211` | `lcnet_035` | 8 | 13 | 104 | 53.87 | | `students/serial_212` | `levit_128s` | 8 | 13 | 104 | 59.39 | | `students/serial_213` | `levit_128s` | 8 | 13 | 103 | 57.04 | | `students/serial_214` | `levit_128s` | 8 | 13 | 103 | 57.31 | | `students/serial_215` | `lcnet_035` | 8 | 13 | 104 | 58.93 | | `students/serial_216` | `levit_128s` | 8 | 13 | 101 | 60.95 | | `students/serial_253` | `lcnet_035` | 1 | 1 | 1 | 77.43 | | `students/serial_259` | `resnet18` | 1 | 1 | 1 | 85.47 | | `students/serial_260` | `levit_128s` | 1 | 1 | 1 | 82.02 | | `students/serial_305` | `levit_128s` | 8 | 1 | 8 | 63.62 | | `students/serial_309` | `lcnet_035` | 7 | 1 | 7 | 61.52 | | `students/serial_311` | `lcnet_035` | 1 | 1 | 1 | 0.52 | | `students/serial_321` | `lcnet_035` | 8 | 1 | 8 | 60.81 | | `students/serial_322` | `lcnet_035` | 8 | 1 | 8 | 54.30 | | `students/serial_323` | `lcnet_035` | 8 | 1 | 8 | 0.64 | | `students/serial_324` | `lcnet_035` | 8 | 1 | 8 | 51.13 | | `students/serial_401` | `resnet18` | 8 | 1 | 8 | 70.81 | | `students/serial_402` | `lcnet_035` | 8 | 1 | 8 | 61.19 | | `students/serial_403` | `levit_128s` | 3 | 1 | 3 | 72.06 | | `students/serial_551` | `resnet18` | 4 | 2 | 4 | 77.20 | | `students/serial_552` | `lcnet_035` | 1 | 1 | 1 | 57.28 | | `students/serial_553` | `levit_128s` | 8 | 5 | 40 | 75.94 | | `students/serial_554` | `resnet18` | 1 | 1 | 1 | 54.37 | | `students/serial_555` | `lcnet_035` | 2 | 2 | 2 | 66.50 | | `students/serial_556` | `levit_128s` | 8 | 3 | 10 | 92.36 | | `students/serial_999` | `lcnet_035` | 1 | 1 | 1 | 7.04 | `manifest.csv` lists every file with its dataset, student, teacher, serial, seed, image size, class count, accuracy, SHA-256 and size. ## Load a checkpoint and classify an image ```python import torch from PIL import Image from torchvision import transforms from fgir_zoo import tgda model = tgda.create_model('students/serial_203/cub_resnet18_vgg19_bn_cal_203') cfg = model.config tf = transforms.Compose([ transforms.Resize((cfg.test_resize_size, cfg.test_resize_size), interpolation=transforms.InterpolationMode.BICUBIC), transforms.CenterCrop(cfg.student_image_size or cfg.image_size), transforms.ToTensor(), transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)), ]) # a CUB-200-2011 test image, class index 50 (051.Horned_Grebe) x = tf(Image.open('Horned_Grebe_0050_34561.jpg').convert('RGB')).unsqueeze(0) with torch.no_grad(): logits = model(x) print(logits.argmax(-1).item(), logits.softmax(-1).max().item()) # 50 0.9423 ``` ## Accuracy of the released checkpoints Top-1 accuracy (%) stored in each file, on the dataset's test split at the end of training. Each value is one seed; the paper reports its own aggregates, so its tables can differ slightly. Per-file accuracy for the 2,000 students is in `manifest.csv`; the table below covers the teachers. ### `teachers/` | Model | aircraft | bach | bdctkidney | cars | cub | dogs | flowers | idriddr | idridme | imagenet1k | lublung | moe | nabirds | pets | |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| | `convnext_base.fb_in22k` | | 92.50 | 99.96 | | | | | 62.14 | 82.52 | 77.94 | 96.71 | | | | | `resnet101.a1_in1k` | | 77.50 | 99.96 | 91.94 | | | 96.41 | 54.37 | 77.67 | 83.91 | 94.08 | | | | | `resnetv2_101.a1h_in1k` | | 67.50 | 99.96 | | | | | 50.49 | 72.82 | 77.70 | 92.34 | | 89.05 | | | `resnetv2_101x3_bit.goog_in21k` | | 87.50 | 99.90 | | | | | 57.14 | 89.29 | 47.81 | 96.23 | | | | | `swin_base_patch4_window7_224.ms_in22k` | | 95.00 | 99.96 | | | | | 59.22 | 82.52 | 71.39 | 96.86 | | | | | `van_b3` | | 92.50 | 100.00 | | | | | 54.37 | 82.52 | 85.46 | 96.06 | | | | | `vgg19_bn` | 88.87 | 91.25 | 100.00 | | 86.93 | 83.83 | | 60.19 | 81.55 | 54.08 | 94.57 | 93.71 | | 92.94 | | `vit_b16` | | 86.25 | 100.00 | | | | | 51.46 | 82.52 | 76.65 | 96.64 | | | | ## Requirements - `fgir-zoo` (`pip install git+https://github.com/arkel23/fgir-zoo.git`), which pins `timm==0.9.12` - `torch` (checked with 2.5.1) ## Citation ```bibtex @inproceedings{gosal_choose_teacher_2026, title = {How to Choose Your Teacher for Fine Grained Image Recognition}, author = {Gosal, Oswin and Rios, Edwin Arkel and Surya, Augusto Christian and Mikael, Fernando and Lai, Bo-Cheng and Hu, Min-Chun}, booktitle = {The 13th Workshop on Fine-Grained Visual Categorization (FGVC13) at CVPR 2026}, note = {Non-archival extended abstract}, year = {2026}, eprint = {2605.15689}, archivePrefix = {arXiv}, primaryClass = {cs.CV}, doi = {10.48550/arXiv.2605.15689}, url = {https://arxiv.org/abs/2605.15689} } ```