Awesome-CIL collects resources, reference implementations, and reproducible results for class-incremental learning (CIL), also known as continual, incremental, or lifelong learning.
For paper reading notes, see Paper Reading Notes.
| Title | Venue | Year | Code |
|---|---|---|---|
| Class-Incremental Learning: A Survey | TPAMI | 2024 | Official |
| Continual Learning with Pre-Trained Models: A Survey | IJCAI | 2024 | Official |
| PyCIL: A Python Toolbox for Class-Incremental Learning | — | — | Official |
git clone https://github.com/hongwei-zhao/Awesome-CIL.git
cd Awesome-CILtorch==2.0.1+cu118torchvision==0.15.2+cu118timm==0.6.7numpy==1.26.3scipy==1.12.0scikit-learn==1.4.2Pillow==10.2.0PyYAML==6.0.1tqdm==4.66.2
Select a JSON file in configs/<method>/, set the dataset path, GPU IDs, class order seed, initial classes, increment, and method-specific hyperparameters, then run:
export CIL_DATA_ROOT=/path/to/Dataset
python main.py --config configs/ease/ease_cifar_B0_Inc10.jsonBatch launchers are available under scripts/. For example:
bash scripts/train_ease.shThe configuration directory and registered model_name must agree:
| Configuration directory | model_name |
|---|---|
configs/aper |
adam_adapter |
configs/bilora |
bilora |
configs/cllora |
cllora |
configs/coda_prompt |
coda_prompt |
configs/coil |
coil |
configs/der |
der |
configs/dualprompt |
dualprompt |
configs/ease |
ease |
configs/finetune |
finetune |
configs/foster |
foster |
configs/hidep |
hidep |
configs/icarl |
icarl |
configs/inflora |
inflora |
configs/l2p |
l2p |
configs/lae |
lae |
configs/mos |
mos |
configs/sdlora |
sdlora |
configs/simplecil |
simplecil |
Common configuration fields:
model_name: Must match a model registered inutils/factory.py.dataset: One ofcifar224,cub,imageneta,imagenetr,omnibenchmark, orvtab.data_path: Local dataset root.CIL_DATA_ROOTprovides the default dataset root used by the data loader.device: GPU ID list, for example["0"]or["0", "1"].seed: Class-order seeds, for example[1993, 1994, 42].init_clsandincrement: Initial and subsequent class counts.init_cls=0starts directly with the incremental split.backbone_type: The PTM-CIL comparisons typically use ViT-B/16-IN21K (vit_base_patch16_224_in21korpretrained_vit_b16_224_in21k).fixed_memory,memory_size, andmemory_per_class: Exemplar-memory controls for methods that use rehearsal.
| Dataset | Training examples | Test examples | Classes |
|---|---|---|---|
| CIFAR-100 | 50,000 | 10,000 | 100 |
| CUB-200-2011 | 9,430 | 2,358 | 200 |
| ImageNet-R | 24,000 | 6,000 | 200 |
| ImageNet-A | 5,981 | 1,519 | 200 |
| ObjectNet | 26,509 | 6,628 | 200 |
| OmniBenchmark | 89,697 | 5,983 | 300 |
| VTAB | 1,796 | 8,619 | 50 |
- ViT-B/16-IN1K — Pre-trained on ImageNet-21K and fine-tuned on ImageNet-1K; create it with
timm.create_model("vit_base_patch16_224", pretrained=True). - ViT-B/16-IN21K — Pre-trained on ImageNet-21K without ImageNet-1K fine-tuning; create it with
timm.create_model("vit_base_patch16_224_in21k", pretrained=True). - ViT-L/16-IN1K — Large Vision Transformer pre-trained on ImageNet-21K and fine-tuned on ImageNet-1K.
- ViT-B/16-DINO — Self-supervised Vision Transformer trained with DINO on ImageNet.
- ViT-B/16-SAM — Vision Transformer trained on SA-1B and fine-tuned for segmentation tasks such as COCO and ADE20K.
- ViT-B/16-MAE — Vision Transformer trained with masked autoencoding on ImageNet-21K.
- ViT-B/16-CLIP — Vision Transformer trained with CLIP on large-scale image-text data.
- ResNet-18 / ResNet-50 / ResNet-152 — ImageNet-1K pre-trained convolutional baselines.
The result workbook is the single source of truth for reproduced metrics. It contains the following result sheets:
seed1993— CIFAR-100, CUB-200, ImageNet-R, OmniBenchmark, and VTAB with class-order seed 1993.seed1994— The same benchmark suite with class-order seed 1994.seed42— The same benchmark suite with class-order seed 42.ImageNet-R(INR) — ImageNet-R task-count ablations for 5, 10, 20, and 40 tasks.
The result-log mapping records the workbook cells, expected log names, parsed metrics, and verification status.
This repository is distributed under the existing MIT License. The original copyright notice is retained. Pre-trained weights, datasets, and incorporated third-party components remain subject to their respective licenses.
