The dataset viewer is not available for this dataset.
Need help to make the dataset viewer work? Make sure to review how to configure the dataset viewer, and open a discussion for direct support.
EZPC - Pre-computed CLIP / SigLIP Embeddings
This dataset hosts the pre-computed image embeddings, cached text (classname / concept) embeddings, and class splits used in Explaining CLIP Zero-shot Predictions Through Concepts (CVPR 2026).
Running EZPC from scratch requires extracting CLIP / SigLIP features for every image in five benchmark datasets (CIFAR-100, CUB-200-2011, Places365, ImageNet, ImageNet-100) with multiple backbones. To skip the expensive feature-extraction step, we release the exact tensors we used in the paper - drop them into the EZPC repo's data/ folder and you can train, evaluate, and reproduce quantitative results without touching the raw images.
- π Paper: arXiv:2603.28211
- π» Code: github.com/oonat/ezpc
- π Project page: oonat.github.io/ezpc
- π€ Checkpoints: oonat/ezpc-checkpoints
What's Included
For each of the five datasets and each supported backbone, this repository provides:
- Full train / test embeddings + targets: CLIP/SigLIP image features for every training and test image across all classes, along with their class indices. Useful as a general-purpose feature dump and as the input to
data/split_dataset.pyif you want to regenerate the splits under a different seed or ratio. - Seen-split train / test embeddings: embeddings restricted to the 80% "seen" classes. The train split is used to fit the EZPC projection matrix A; the test split measures GZSL seen-class accuracy.
- Unseen-split train / test embeddings: embeddings restricted to the 20% "unseen" classes held out from training. Used for GZSL unseen-class evaluation (and for the
--target_datasetside of cross-dataset transfer). - Split-aligned target files:
seen_train_ids.pt,seen_test_ids.pt,unseen_train_ids.pt,unseen_test_ids.pt, each giving the class index for every row of the corresponding split. - Class split file: the exact seen / unseen class partition (seed 42, 80/20) used in the paper.
- Cached text embeddings: L2-normalized
"a photo of {x}"text embeddings for class names ({backbone}_classname_embs.pt, shape(C, d)) and concepts ({backbone}_concept_matrix.pt, shape(m, d)).test.pyloads these automatically so evaluation reproduces the reported numbers exactly and independent of GPU / CUDA version β without re-running the CLIP/SigLIP text encoder.
Supported backbones: CLIP RN50, CLIP ViT-B/32, CLIP ViT-L/14, SigLIP ViT-SO400M/14.
Repository Layout
Each dataset follows the same two-level structure: top-level embeddings/ holds the full image feature dump (all classes) plus the cached text embeddings, and embeddings/splits/ holds the seen/unseen partition used throughout the paper.
data/
βββ CIFAR-100/
β βββ embeddings/
β βββ RN50_train_embeddings.pt # (N_train, d) - all classes
β βββ RN50_test_embeddings.pt # (N_test, d) - all classes
β βββ ViT-B-32_train_embeddings.pt
β βββ ViT-B-32_test_embeddings.pt
β βββ ViT-L-14_train_embeddings.pt
β βββ ViT-L-14_test_embeddings.pt
β βββ siglip-so400m-patch14-384_train_embeddings.pt
β βββ siglip-so400m-patch14-384_test_embeddings.pt
β βββ RN50_classname_embs.pt # (C, d) - class-name text embeddings
β βββ RN50_concept_matrix.pt # (m, d) - concept text embeddings
β βββ ViT-B-32_classname_embs.pt
β βββ ViT-B-32_concept_matrix.pt
β βββ ViT-L-14_classname_embs.pt
β βββ ViT-L-14_concept_matrix.pt
β βββ siglip-so400m-patch14-384_classname_embs.pt
β βββ siglip-so400m-patch14-384_concept_matrix.pt
β βββ train_ids.pt # (N_train,) - class indices
β βββ test_ids.pt # (N_test,) - class indices
β βββ splits/
β βββ class_split.pt # {seen_classes, unseen_classes}
β βββ RN50_seen_train_embs.pt
β βββ RN50_seen_test_embs.pt
β βββ RN50_unseen_train_embs.pt
β βββ RN50_unseen_test_embs.pt
β βββ ViT-B-32_seen_train_embs.pt
β βββ ViT-B-32_seen_test_embs.pt
β βββ ViT-B-32_unseen_train_embs.pt
β βββ ViT-B-32_unseen_test_embs.pt
β βββ ViT-L-14_seen_train_embs.pt
β βββ ViT-L-14_seen_test_embs.pt
β βββ ViT-L-14_unseen_train_embs.pt
β βββ ViT-L-14_unseen_test_embs.pt
β βββ siglip-so400m-patch14-384_seen_train_embs.pt
β βββ siglip-so400m-patch14-384_seen_test_embs.pt
β βββ siglip-so400m-patch14-384_unseen_train_embs.pt
β βββ siglip-so400m-patch14-384_unseen_test_embs.pt
β βββ seen_train_ids.pt
β βββ seen_test_ids.pt
β βββ unseen_train_ids.pt
β βββ unseen_test_ids.pt
βββ CUB-200-2011/
β βββ embeddings/ ...
βββ ImageNet/
β βββ embeddings/ ...
βββ ImageNet-100/
β βββ embeddings/ ...
βββ Places365/
βββ embeddings/ ...
Quickstart
1. Download the data
pip install huggingface-hub
# Grab everything
hf download oonat/ezpc-embeddings \
--repo-type dataset \
--local-dir data
# Or just one dataset
hf download oonat/ezpc-embeddings \
--repo-type dataset \
--local-dir data \
--include "CIFAR-100/*"
# Or only what EZPC needs to evaluate: the GZSL splits + cached text embeddings
hf download oonat/ezpc-embeddings \
--repo-type dataset \
--local-dir data \
--include "*/embeddings/splits/*" "*/embeddings/*_classname_embs.pt" "*/embeddings/*_concept_matrix.pt"
2. Plug it into EZPC
Clone the EZPC GitHub repo and point --dataset_root at the folder you downloaded:
git clone https://github.com/oonat/ezpc.git
cd ezpc
conda env create -f environment.yml
conda activate ezpc
pip install -e .
# data/ lives next to train.py now - run training:
python train.py \
--dataset CIFAR-100 \
--dataset_root ./data \
--backbone RN50 \
--lambda_weight 1.0 \
--lr 0.01 \
--num_epochs 10000
Citation
If you use this dataset, please cite:
@InProceedings{Ozdemir_2026_CVPR,
author = {Ozdemir, Onat and Christensen, Anders and Alaniz, Stephan and Akata, Zeynep and Akbas, Emre},
title = {Explaining CLIP Zero-shot Predictions Through Concepts},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2026},
pages = {31336-31345}
}
Please also cite the original datasets whose images were used to produce these embeddings (CIFAR-100, CUB-200-2011, Places365, ImageNet, ImageNet-100) and the backbone models (CLIP, SigLIP).
Acknowledgements
- Concept vocabularies and class label mappings are taken from Label-free Concept Bottleneck Models. We thank the authors for open-sourcing them.
- Backbones from OpenAI CLIP, OpenCLIP, and Google SigLIP.
License
Released under the MIT License.
Note that these embeddings are derived from CIFAR-100, CUB-200-2011, Places365, ImageNet, and ImageNet-100. Users are responsible for complying with the original license and terms of use of those datasets, which may restrict commercial use β notably ImageNet and CUB-200-2011, which are released for non-commercial research only.
- Downloads last month
- 76