How sunoh-kim/mac works
This repository implements MAC, a tuning-free test-time defense for CLIP. Its documented workflow evaluates adversarially corrupted images, creates multiple augmented views, applies corruption-aware counterattacks, and aggregates predictions. The graph includes the MAC evaluation code, dataset/model support, and the bundled AutoAttack subsystem. Some relationships rely on the SOURCE INDEX or README; unsampled implementation details are not inferred.
Main entry points: utils.py Evaluation utilities · mac.py MAC evaluation · autoattack.py AutoAttack runner · autopgd_base.py Auto-PGD
Components 26
MAC defense
- MAC evaluation
code/mac.py - Evaluation utilities
code/utils.py
Data and prompts
- View augmentation
data/datautils.py - Dataset classes
code/replace/datasets - Caltech datasets
code/replace/datasets/caltech.py - Country211 dataset
code/replace/datasets/country211.py - DTD dataset
code/replace/datasets/dtd.py - EuroSAT dataset
code/replace/datasets/eurosat.py - Aircraft dataset
code/replace/datasets/fgvc_aircraft.py - Food101 dataset
code/replace/datasets/food101.py - ImageNet variants
data/imagenet_variants.py - ImageNet prompts
data/imagnet_prompts.py
CLIP models
- CLIP loader
code/replace/clip.py - CLIP architecture
code/replace/model.py - Prompt modules
code/models/prompters.py
Attack methods
- Attack selection
code/attacks.py - Attack helpers
code/func.py
AutoAttack
- AutoAttack runner
autoattack/autoattack.py - Auto-PGD
autoattack/autopgd_base.py - FAB attack
autoattack/fab_base.py - Square attack
autoattack/square.py - Attack checks
autoattack/checks.py - Attack utilities
autoattack/other_utils.py
Other components
- Evaluation user
- Prepared datasets
- Evaluation results
Connections 31
- Evaluation user → MAC evaluation: runs evaluation
- MAC evaluation → Attack selection: uses attacks
code/mac.py - MAC evaluation → CLIP loader: loads CLIP
code/mac.py - MAC evaluation → Prompt modules: uses prompts
code/mac.py - MAC evaluation → Evaluation utilities: uses utilities
code/mac.py - MAC evaluation → Attack helpers: uses helpers
code/mac.py - MAC evaluation → View augmentation: uses augmentation
- MAC evaluation → Evaluation results: saves results
- Prepared datasets → Evaluation utilities: supplies inputs
- Evaluation utilities → View augmentation: builds datasets
code/utils.py - Evaluation utilities → ImageNet variants: uses class maps
code/utils.py - Evaluation utilities → ImageNet prompts: uses prompts
code/utils.py - Evaluation utilities → Caltech datasets: loads dataset
code/utils.py - Evaluation utilities → Country211 dataset: loads dataset
code/utils.py - Evaluation utilities → DTD dataset: loads dataset
code/utils.py - Evaluation utilities → EuroSAT dataset: loads dataset
code/utils.py - Evaluation utilities → Aircraft dataset: loads dataset
code/utils.py - Evaluation utilities → Food101 dataset: loads dataset
code/utils.py - Evaluation utilities → Dataset classes: imports datasets
code/utils.py - Dataset classes → Caltech datasets: defines dataset
- CLIP loader → CLIP architecture: builds model
code/replace/clip.py - Attack selection → AutoAttack runner: invokes runner
code/attacks.py - AutoAttack runner → Auto-PGD: dispatches attack
autoattack/autoattack.py - AutoAttack runner → FAB attack: dispatches attack
autoattack/autoattack.py - AutoAttack runner → Square attack: dispatches attack
autoattack/autoattack.py - AutoAttack runner → Attack checks: uses checks
autoattack/autoattack.py - AutoAttack runner → Attack utilities: uses utilities
autoattack/autoattack.py - Auto-PGD → Attack checks: checks gradients
autoattack/autopgd_base.py - Auto-PGD → Attack utilities: uses utilities
autoattack/autopgd_base.py - FAB attack → Attack utilities: uses utilities
- Square attack → Auto-PGD: references attack
autoattack/square.py