Skip to main content

Unlearning Benchmark for Text-to-Image Models

Project description

eval-learn

A benchmarking framework for evaluating concept-unlearning techniques in text-to-image diffusion models.

Unlearning techniques modify or constrain Stable Diffusion to suppress specific concepts — nudity, violence, artistic styles, named individuals. eval-learn provides a common interface to run, compare, and evaluate these techniques under consistent conditions.


Techniques

Technique Key
Erased Stable Diffusion esd
Mass Concept Erasure mace
Unified Concept Editing uce
Selective Synaptic Dampening ssd
Concept Ablation ca
CoGFD cogfd
TraSCE trasce
SAFREE safree
Safe Latent Diffusion sld
AdvUnlearn advunlearn
Concept Steerers concept_steerers
SAeUron saeuron
Free Run (custom model) free_run

Metrics

Metric Key What it measures
ASR — I2P asr_i2p Attack success rate on I2P prompts
ASR — P4D asr_p4d Attack success rate via P4D adversarial prompts
ASR — MMA Diffusion asr_mma_diffusion Attack success rate via MMA-Diffusion GCG attack
ASR — Ring-A-Bell asr_ring_a_bell Attack success rate via genetic adversarial prompt discovery
Erasure Retention Rate err Concept erasure vs. unrelated concept retention
FID fid Image quality vs. COCO reference
CLIP Score clip_score Prompt-image alignment
UA-IRA ua_ira Unsafe concept alignment vs. retain concept alignment
TIFA tifa Text-image faithfulness via VQA

Installation

1. Install eval-learn

pip install eval-learn

2. Install technique packages

Technique implementations are hosted on Hugging Face. Clone the repo once, pull LFS files, then install only what you need:

git clone https://huggingface.co/datasets/Unlearningltd/Packages
cd Packages
git lfs pull
pip install -e esd/
pip install -e mace/
pip install -e uce/
pip install -e ssd/
pip install -e ca/
pip install -e cogfd/
pip install -e trasce/
pip install -e saeuron/
pip install -e safree/
pip install -e concept-steerers/
pip install -e advunlearn/

SLD is built into eval-learn via the diffusers library and requires no extra install.

3. Install metric packages

From the cloned Packages directory (see step 2 above):

pip install -e p4d/
pip install -e mma_diff/
pip install -e RING_A_BELL/
pip install -e Q16/
# NudeNet (nudity ASR)
pip install "eval-learn[asr]"

# FID / COCO metrics
pip install "eval-learn[fid,coco]"

4. Hugging Face authentication

Create a .env file in the directory you run eval-learn run from:

HF_TOKEN=your_token_here

Quick start

Benchmarks are defined in a JSON or YAML config file:

{
  "output_dir": "results/esd_nudity",
  "technique": {
    "name": "esd",
    "config": { "erase_concept": "nudity", "train_method": "noxattn", "device": "cuda" }
  },
  "metrics": [
    { "name": "asr_i2p",    "config": { "concept_name": "nudity", "device": "cuda" } },
    { "name": "fid",        "config": { "device": "cuda" } },
    { "name": "clip_score", "config": { "device": "cuda" } }
  ]
}

Run it:

eval-learn run --config config.json

Results are written to output_dir as JSON.

Useful commands

eval-learn plugins   # list installed techniques and metrics
eval-learn models    # show the base model each technique targets

Examples

The examples/ directory contains ready-to-run configs for all techniques across nudity and violence concepts:

examples/
  nudity/     one config per technique (esd.json, mace.json, ...)
  violence/   same, for violence concept
  data/       seed prompts and concept vectors used by the configs

Run all nudity benchmarks in sequence:

python nudity_unlearning_demo.py

Run all violence benchmarks:

python nudity_unlearning_demo_violence.py

Documentation

Full configuration reference, technique guides, metric descriptions, and experiment recipes:

https://eval-learn.readthedocs.io

Package on PyPI: https://pypi.org/project/eval-learn/

Key pages:


License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eval_learn-0.1.5.tar.gz (292.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eval_learn-0.1.5-py3-none-any.whl (330.1 kB view details)

Uploaded Python 3

File details

Details for the file eval_learn-0.1.5.tar.gz.

File metadata

  • Download URL: eval_learn-0.1.5.tar.gz
  • Upload date:
  • Size: 292.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for eval_learn-0.1.5.tar.gz
Algorithm Hash digest
SHA256 9bde78e33c31c2d9e61b3b32f03bd06333ee39ab7f8a89883d9a886f01836534
MD5 3a213976cdc8a1a1bb07436337b83183
BLAKE2b-256 12b1a68758aa5a5e343b77cb4a30cebadca74c294149203962d41d4744dc4021

See more details on using hashes here.

Provenance

The following attestation bundles were made for eval_learn-0.1.5.tar.gz:

Publisher: test.yml on nikhilr2907/eval-learn

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eval_learn-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: eval_learn-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 330.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for eval_learn-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 294936a9856d0b1bc6a33bc75739762bd57af736ab5a717b48f0d5fb499390ad
MD5 d600b329c3740bfacd58e882b65b316a
BLAKE2b-256 87c7512df66868af3a3c3963cac4278f0585ca97de8cefe13925bf539d2a188b

See more details on using hashes here.

Provenance

The following attestation bundles were made for eval_learn-0.1.5-py3-none-any.whl:

Publisher: test.yml on nikhilr2907/eval-learn

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page