Skip to content

Repository files navigation

Awesome-CIL

Awesome-CIL

Visitors Last commit on develop MIT License

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.

🎉Surveys

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

🚀 Reproduced Methods

Title Method Venue Year Category Reference implementation
iCaRL: Incremental Classifier and Representation Learning iCaRL CVPR 2017 Memory Official
Co-Transport for Class-Incremental Learning COIL MM 2021 Classifier transport
DER: Dynamically Expandable Representation for Class Incremental Learning DER CVPR 2021 Backbone expansion Official
DualPrompt: Complementary Prompting for Rehearsal-free Continual Learning DualPrompt ECCV 2022 Prompt Official
FOSTER: Feature Boosting and Compression for Class-Incremental Learning FOSTER ECCV 2022 Backbone expansion Official
Learning to Prompt for Continual Learning L2P CVPR 2022 Prompt Official
CODA-Prompt: COntinual Decomposed Attention-based Prompting for Rehearsal-Free Continual Learning CODA-Prompt CVPR 2023 Prompt Official
Hierarchical Decomposition of Prompt-Based Continual Learning: Rethinking Obscured Sub-optimality HiDe-Prompt NeurIPS 2023 Prompt Official
A Unified Continual Learning Framework with General Parameter-Efficient Tuning LAE ICCV 2023 PEFT expansion Official
Expandable Subspace Ensemble for Pre-Trained Model-Based Class-Incremental Learning EASE CVPR 2024 PEFT expansion Official
InfLoRA: Interference-Free Low-Rank Adaptation for Continual Learning InfLoRA CVPR 2024 PEFT / LoRA Official
Revisiting Class-Incremental Learning with Pre-Trained Models: Generalizability and Adaptivity are All You Need APER / ADAM IJCV 2024 PEFT / adapter Official
Revisiting Class-Incremental Learning with Pre-Trained Models: Generalizability and Adaptivity are All You Need SimpleCIL IJCV 2024 PTM prototype Official
BiLoRA: Almost-Orthogonal Parameter Spaces for Continual Learning BiLoRA CVPR 2025 PEFT / LoRA Official
CL-LoRA: Continual Low-Rank Adaptation for Rehearsal-Free Class-Incremental Learning CL-LoRA CVPR 2025 PEFT / LoRA Official
MOS: Model Surgery for Pre-Trained Model-Based Class-Incremental Learning MOS AAAI 2025 PEFT / adapter Official
SD-LoRA: Scalable Decoupled Low-Rank Adaptation for Class Incremental Learning SD-LoRA ICLR 2025 PEFT / LoRA Official

🌟 Getting Started

🕹️ Clone

git clone https://github.com/hongwei-zhao/Awesome-CIL.git
cd Awesome-CIL

🗂️ Dependencies

  • torch==2.0.1+cu118
  • torchvision==0.15.2+cu118
  • timm==0.6.7
  • numpy==1.26.3
  • scipy==1.12.0
  • scikit-learn==1.4.2
  • Pillow==10.2.0
  • PyYAML==6.0.1
  • tqdm==4.66.2

🔑 Run an Experiment

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.json

Batch launchers are available under scripts/. For example:

bash scripts/train_ease.sh

The 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 in utils/factory.py.
  • dataset: One of cifar224, cub, imageneta, imagenetr, omnibenchmark, or vtab.
  • data_path: Local dataset root. CIL_DATA_ROOT provides 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_cls and increment: Initial and subsequent class counts. init_cls=0 starts directly with the incremental split.
  • backbone_type: The PTM-CIL comparisons typically use ViT-B/16-IN21K (vit_base_patch16_224_in21k or pretrained_vit_b16_224_in21k).
  • fixed_memory, memory_size, and memory_per_class: Exemplar-memory controls for methods that use rehearsal.

📚 Datasets

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

☄️ Pre-trained Models

  • 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.

📊 Reproduced Results

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.

License

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.

🤗 Acknowledgments

About

CIL(Class-Incremental Learning)类增量学习【Life-Long Learning/Continual Learning】

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages