AREA: Attribute Extraction and Aggregation for CLIP-Based Class-Incremental Learning
May 28, 2026 ยท View on GitHub
The code repository for "AREA: Attribute Extraction and Aggregation for CLIP-Based Class-Incremental Learning" in PyTorch. If you use any content of this repo for your work, please cite the following bib entry:
@inproceedings{xie2026area,
title={AREA: Attribute Extraction and Aggregation for CLIP-Based Class-Incremental Learning},
author={Xie, Zhen-Hao and Shi, Yu-Cheng and Zhou, Da-Wei},
booktitle={ICML},
year={2026}
}
๐ Introduction
Class-Incremental Learning (CIL) is important in building real-world learning systems. In CLIP-based CIL, the model performs classification by comparing similarity between visual and textual embeddings obtained from template prompts, e.g., ``a photo of a [CLASS]''. This seemingly monolithic matching process can be decomposed into two conceptually distinct stages: attribute extraction and attribute aggregation. For example, a model may recognize cat using attributes such as fur texture and whiskers. When learning a new class like car, the model must extract additional attributes like wheels and adjust how they are aggregated in the shared representation space. However, since only data from the current task is available, incremental updates can bias both attribute extraction and aggregation toward new classes, leading to catastrophic forgetting. Therefore, we propose AREA for attribute extraction and aggregation for CLIP-based CIL. To stabilize extraction, we anchor class-level visual and textual attributes on the hyperspherical embedding space via principal geodesic analysis. To stabilize aggregation, we learn lightweight task-specific experts with scoring and residual refinement, regularized by a variational information bottleneck objective. During inference, we perform routing over task attribute manifolds via optimal transport for more concise prediction. Experiments on multiple benchmarks show that AREA consistently outperforms SOTA methods.
๐ง Requirements
Environment
Dataset
We provide the processed datasets as follows:
- CIFAR100: will be automatically downloaded by the code.
- CUB200: Google Drive: link or OneDrive link
- ImageNet-R: Google Drive: link or Onedrive: link
- ObjectNet: Onedrive: link You can also refer to the filelist and processing code if the file is too large to download.
- Cars: Google Drive: link or OneDrive: link
- UCF: Google Drive: link or OneDrive: link
- Aircraft: Google Drive: link or OneDrive: link
- Food: Google Drive: link or OneDrive: link
- SUN: OneDrive: link
These subsets are sampled from the original datasets. Please note that I do not have the right to distribute these datasets. If the distribution violates the license, I shall provide the filenames instead.
You need to modify the path of the datasets in ./utils/data.py according to your own path.
๐ก Running scripts
To prepare your JSON files, refer to the settings in the exps folder and run the following command. All main experiments from the paper are already provided in the exps folder, you can simply execute them to reproduce the results found in the logs folder.
python main.py --config ./exps/area/[configname].json
๐ About Descriptions
To keep the repository lightweight, we have only included a subset of the annotated corpus for each dataset. If you need to conduct larger-scale experiments, we also provide a script under /descriptions to generate the descriptive corpus. You can use this script to generate the full set of annotations.
๐ Acknowledgement
This repo is based on CIL_Survey, PyCIL and C3Box.