ispras/wibe

[ASE 2025 Tool Demo] WIBE: An Extensible Open Source Framework for Evaluating Imperceptibility and Robustness of Invisible Image Watermarks (WARP Benchmark paper coming soon)

Python

33

14 commits

updated Aug 6, 2026

See the code

README

[ASE 2025 Tool Demo] WIBE: Watermarks for generated Images – Benchmarking & Evaluation

(Coming soon) WARP: A Unified Benchmark for Invisible Image Watermarking — Robustness and Protection Against Attacks

Documentation Status

WIBE is a modular and extensible framework for automated testing of invisible image watermarking methods under various attack scenarios. The system is designed to support research and development of robust watermarking techniques by enabling systematic evaluation through a customizable processing pipeline.

The system architecture consists of a sequence of processing configurable stages.

WIBE schema

Key features

  • Modularity and extensibility through a plugin-based architecture
  • Reproducibility ensured by YAML-configured experiments
  • Usability with a simple command-line interface
  • Flexible persistence through multiple storage backends, including files and ClickHouse database
  • Transparency via real-time visual feedback
  • Scalability to run experiments on clusters

Implemented algorithms, attacks, datasets and metrics

Algorithms
AlgorithmTypeConfig nameDefault capacityReference
ARWGANpost-hocarwgan30 bitsARWGAN: Attention-Guided Robust Image Watermarking Model Based on GAN
CINpost-hoccin30 bitsTowards Blind Watermarking: Combining Invertible and Non-invertible Mechanisms
DCT Markerpost-hocdct_marker1 - 800 bitsReal data performance evaluation of CAISS watermarking scheme
DFT Circlepost-hocdft_circlezero-bitDiscrete Fourier transform-based watermarking method with an optimal implementation radius
DWSFpost-hocdwsf30 bitsPractical Deep Dispersed Watermarking with Synchronization and Fusion - Image Watermarking Algorithm
DWT SVMpost-hocdwt_svm512 bitsSVM-based robust image watermarking technique in LWT domain using different sub-bands
DWT DCTpost-hocdwt_dct100 bitsfrequency-domain transforms: DWT + DCT
DWT DCT SVDpost-hocdwt_dct_svd100 bitsfrequency-domain with additional SVD processing
HiDDeNpost-hochidden30 bitsHiDDeN: Hiding Data in Deep Networks --- Image Watermarking Algorithm
InvisMarkpost-hocinvismark100 bitsInvisible and Robust Watermarking for AI-generated Image Provenance
MBRSpost-hocmbrs30/256 bitsEnhancing Robustness of DNN-based Watermarking by Mini-Batch of Real and Simulated JPEG Compression
SS HiDDeNpost-hocsshidden48 bitsHiDDeN watermarking algorithm adapted from the Stable Signature
RivaGANpost-hocriva_gan30 bitsImage watermarking via RivaGAN: a deep-learning-based encoder/decoder with attention mechanism
SSLpost-hocssl_watermarkingzero-bit / 32 bitsWatermarking Images in Self-Supervised Latent-Spaces (SSL)
Stable Signaturebuilt-instable_signature48 bits (fixed for single model)The Stable Signature: Rooting Watermarks in Latent Diffusion Models
StegaStamppost-hocstega_stamp100 bitsStegaStamp: Invisible Hyperlinks in Physical Photographs
TreeRingbuilt-intreeringzero-bitTree-Ring: Fingerprints for Diffusion Images that are Invisible and Robust
TrustMarkpost-hoctrustmark100 bitsTrustMark: Universal Watermarking for Arbitrary Resolution Images
VideoSealpost-hocvideoseal256 bitsVideo Seal: Open and Efficient Video Watermarking
PixelSealpost-hocpixelseal256 bitsPixel Seal: Adversarial-only training for invisible image and video watermarking
ChunkySealpost-hocchunkyseal1024 bitsWe Can Hide More Bits: The Unused Watermarking Capacity in Theory and in Practice
Watermark Anythingpost-hocwatermark_anything32 bitsWatermark Anything with Localized Messages - Image Watermarking Algorithm
MaskWMpost-hocmaskwm32/64/128 bitsMask Image Watermarking
SyncSealpost-hocsyncsealmethod-dependentGEOMETRIC IMAGE SYNCHRONIZATION WITH DEEP WATERMARKING
Gaussian Shadingbuilt-ingaussian_shading256 bitsGaussian Shading: Provable Performance-Lossless Image Watermarking for Diffusion Models
Ring-IDbuilt-inringidzero-bitRingID: Rethinking Tree-Ring Watermarking for Enhanced Multi-Key Identification - Image Watermarking Algorithm
MaXsivebuilt-inmaxsivezero-bitMaXsive: High-Capacity and Robust Training-Free Generative Image Watermarking in Diffusion Models
METRbuilt-inmetr10 bitsMETR: Image Watermarking with Large Number of Unique Messages
PIMoGpost-hocpimog30 bitsPIMoG: An Effective Screen-shooting Noise-Layer Simulation for Deep-Learning-Based Watermarking Network
Robust-Widepost-hocrobust_wide64 bitsRobust-Wide: Robust Watermarking Against Instruction-Driven Image Editing
FINpost-hocfin64 bitsFIN: Flow-Based Robust Watermarking with Invertible Noise Layer for Black-Box Distortions
VINEpost-hocvine100 bitsRobust Watermarking Using Generative Priors Against Image Editing: From Benchmarking to Advances
SepMarkpost-hocsepmark30/128 bitsSepMark: Deep Separable Watermarking for Unified Source Tracing and Deepfake Detection
RoSteALSpost-hocrosteals100 bitsRoSteALS: Robust Steganography using Autoencoder Latent Space
Attacks
AttackConfig nameDescription
Distortionsidentity, jpeg, rotate90, rotate, gaussianblur, gaussiannoise, centercrop, resize, randomcropout, brightness, contrast, pixelshift, colorinversionCommon distortions like JPEG, blur, noise, rotation, etc
WPWMAttackerwpwmattackerSaliency-Aware Diffusion Reconstruction for Effective Invisible Watermark Removal
DIPdipDIP-based watermark evasion attack adopted from the github repository
AdversarialadversarialembeddingAdversarial embedding attack from WAVES
Adversarial PSNRadversarialembeddingpsnrModification of adversarial embedding attack that uses PSNR
AveragingaveragingAttack based on simple averaging from paper
Blur DeblurblurdeblurfpninceptionBlur image and restore it with DeblurGAN-v2
DoG Blur DeblurdogblurdeblurfpninceptionDoG blur image and restore it with DeblurGAN-v2
BM3Dbm3dBlock-matching and 3D filtering image denoising
VAEvaeattackAdversarial attack using a FLUX.1-schnell VAE to generate noisy image reconstructions
StegastampInversionstegastampinversionAdversarial attack that inverts watermarks encoded by Stegastamp
DiffusionRegenerationdiffusionregenerationInvisible Image Watermarks Are Provably Removable Using Generative AI
FluxRegenerationfluxregenerationImage regeneration attack using FLUX image-to-image diffusion model
FluxRinsingfluxrinsingMulti-step image purification using repeated FLUX regeneration
VAERegenerationvaeregenerationBased on WatermarkAttacker
Frequency MaskingfrequencymaskingImage-domain frequency masking attack that suppresses low-frequency components.
Latent Frequency MaskinglatentfrequencymaskingLatent-space frequency masking attack for diffusion model representations.
Image Editing Flux KontextimageeditingfluxcontextAdversarial attack that edits images using instruction-guided generation. (Flux Kontext model)
Image Editing InstructPix2Piximageeditinginstructpix2pixAdversarial attack that edits images using instruction-guided generation. (InstructPix2Pix model)
LIIFliifattackLIIF super-resolution
SEMAttacksemattackBlack-Box Forgery Attacks on Semantic Watermarks for Diffusion Models
WMForgerwmforgerTransferable Black-Box One-Shot Forging of Watermarks via Image Preference Models
TrustMarkRMtrustmarkrmTrustMark: Universal Watermarking for Arbitrary Resolution Images
NRP smallnrpsmallA Self-supervised Approach for Adversarial Robustness. Smaller backbone variant.
NRP largenrplargeA Self-supervised Approach for Adversarial Robustness. Larger backbone variant.
MPRNetmprnetattackMulti-stage progressive image restoration
Uni inv attack FLUXuniinvattackfluxImage Inversion and Reconstruction using Flux model
Uni edit attack FLUXunieditattackfluxImage Editing using Flux model
DISCOdiscoattackDISCO: Adversarial Defense with Local Implicit Functions
DiffPurediffpureattackDiffusion Models for Adversarial Purification
RealESRGANrealesrganattackReal-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data
UnMarkerAttackunmarkerattackUnMarker: A Universal Attack on Defensive Image Watermarking
Instagram/CSS filtersinstagramcss_filtersInstagram/CSS filters for image editing
Datasets
DatasetConfig nameDescription
Image folderimagefolderdatasetLoading images from a directory
Prompt folderpromptfolderdatasetLoading text prompts from a directory with .txt files
DiffusionDBdiffusiondbhttps://github.com/poloclub/diffusiondb, both images and prompts
MSCOCOmscocohttps://cocodataset.org/, both images and prompts
Metrics
MetricTypeStageConfig nameDescription
PSNRimage quality, compare with not marked imagepost_embed_metrics, post_attack_metricspsnrpeak signal-to-noise ratio
SSIMimage quality, compare with not marked imagepost_embed_metrics, post_attack_metricsssimstructural similarity index
LPIPSimage quality, compare with not marked imagepost_embed_metrics, post_attack_metricslpipsThe Unreasonable Effectiveness of Deep Features as a Perceptual Metric
DreamSimimage quality, compare with not marked imagepost_embed_metrics, post_attack_metricsdreamsimDreamSim: Learning New Dimensions of Human Visual Similarity using Synthetic Data.
Aestheticsingle image qualitypost_embed_metrics, post_attack_metricsaestheticAesthetic score predictor
CLIP IQAsingle image qualitypost_embed_metrics, post_attack_metricsclip_iqaExploring CLIP for Assessing the Look and Feel of Images
BLIPimage quality, compare image with text promptpost_embed_metricsblipBLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation
CLIP Scoreimage quality, compare image with text promptpost_embed_metricsclipscoreCLIPScore: A Reference-free Evaluation Metric for Image Captioning
Image Rewardimage quality, compare image with text promptpost_embed_metricsimagerewardLearning and Evaluating Human Preferences for Text-to-Image Generation
FIDimage quality, compare two sets of imagespost_pipeline_embed_metrics, post_pipeline_attack_metricsfidFID metric from GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium
BERextraction successpost_extract_metricsberBit Error Rate (multi-bit)
WERextraction successpost_extract_metricswerWord Error Rate (multi-bit)
TPR at x% FPRextraction successpost_extract_metricstpr@xfprTrue Positive Rate at fixed False Positive Rate threshold (both zero-bit and multi-bit)
Empirical TPR at x% FPRextraction successpost_extract_metricsempiricaltpr@xfprEmpirical True Positive Rate at fixed False Positive Rate threshold (multi-bit only)
P-valueextraction successpost_extract_metricsp-valueP-value denotes probability to observe the same result as in case of extraction from not watermarked object.
Resultauxiliarypost_extract_metricsresultRecords extraction result (zero-bit case)
Embedded watermarkauxiliarypost_embed_metricsembwmRecords embedded watermark (multi-bit case)
Extracted watermarkauxiliarypost_extract_metricsextwmRecords extracted watermark (multi-bit case)

Quick start

To assess implemented watermarking algorithms and attacks on watermarks, follow the step-by-step procedure below.

1. Clone

git clone https://github.com/ispras/wibe.git
cd wibe

All subsequent commands are run from this directory.

2. Set up the environment

Option A — one command

source prepare.sh

Option B — step by step

git submodule update --init --recursive
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
(.venv) pip install uv
(.venv) uv sync
(.venv) wibench-venv rebuild   # builds additional venvs

Conflicting dependency pins mean one shared venv is not enough: wibench-venv builds several compatible ones, and wibench picks among them automatically. If you plan to add your own algorithm, attack, dataset or metric, read venv manager docs first.

Optional (not recommended) — download all pre-trained weights

(.venv) python download_models.py   # no need to use: weights download automatically on demand

3. Authenticate with HuggingFace

Some models need HuggingFace access. Set HF_TOKEN to your token (setup details), then:

(.venv) python huggingface_login.py

4. Run an experiment

Specify the path to your configuration file as a required parameter:

(.venv) wibench --config configs/trustmark_demo.yml

Upon completion of computations, you can view watermarked images and explore interactive charts for different combinations of watermarking algorithms, attacks, and computed performance metrics.

Below, from left to right, are the original, watermarked with StegaStamp, and attacked by FLUX Regeneration images.

Original, watermarked, and attacked images

And here are the same as above, the original and watermarked images, as well as their difference.

Original and watermarked images, and their difference

To explore interactive wind rose chart with average TPR@0.1%FPR for all algorithms and attacks evaluated so far, run the following command:

(.venv) python make_plots.py --results_dir path_to_results_directory

Below is an average TPR@0.1%FPR chart for 7 algorithms under different types of attacks (evaluated on 300 images from the DiffusionDB dataset).

Average TPR@0.1%FPR for 7 algorithms

Resources

Citation

If you find our work useful for your research, please cite our paper:

@inproceedings{yakushev2025wibe,
  title={WIBE: Watermarks for generated Images--Benchmarking \& Evaluation},
  author={Yakushev, Aleksey and Akimenkov, Aleksandr and Abud, Khaled and Obydenkov, Dmitry and Serzhenko, Irina and Aistov, Kirill and Kovalev, Egor and Fomin, Stanislav and Antsiferova, Anastasia and Lukianov, Kirill and Markin, Yury},
  booktitle={2025 40th IEEE/ACM International Conference on Automated Software Engineering (ASE)},
  pages={4033--4036},
  year={2025},
  organization={IEEE}
}
attacks
framework
generated-by-ai
imperceptibility
robustness
watermarking

Contributors

X1716

5 commits

grandkarabas

4 commits

yakulex

4 commits

Powss

1 commits

ispras/wibe

[ASE 2025 Tool Demo] WIBE: An Extensible Open Source Framework for Evaluating Imperceptibility and Robustness of Invisible Image Watermarks (WARP Benchmark paper coming soon)

Python

33

14 commits

updated Aug 6, 2026

See the code

README

[ASE 2025 Tool Demo] WIBE: Watermarks for generated Images – Benchmarking & Evaluation

(Coming soon) WARP: A Unified Benchmark for Invisible Image Watermarking — Robustness and Protection Against Attacks

Documentation Status

WIBE is a modular and extensible framework for automated testing of invisible image watermarking methods under various attack scenarios. The system is designed to support research and development of robust watermarking techniques by enabling systematic evaluation through a customizable processing pipeline.

The system architecture consists of a sequence of processing configurable stages.

WIBE schema

Key features

  • Modularity and extensibility through a plugin-based architecture
  • Reproducibility ensured by YAML-configured experiments
  • Usability with a simple command-line interface
  • Flexible persistence through multiple storage backends, including files and ClickHouse database
  • Transparency via real-time visual feedback
  • Scalability to run experiments on clusters

Implemented algorithms, attacks, datasets and metrics

Algorithms
AlgorithmTypeConfig nameDefault capacityReference
ARWGANpost-hocarwgan30 bitsARWGAN: Attention-Guided Robust Image Watermarking Model Based on GAN
CINpost-hoccin30 bitsTowards Blind Watermarking: Combining Invertible and Non-invertible Mechanisms
DCT Markerpost-hocdct_marker1 - 800 bitsReal data performance evaluation of CAISS watermarking scheme
DFT Circlepost-hocdft_circlezero-bitDiscrete Fourier transform-based watermarking method with an optimal implementation radius
DWSFpost-hocdwsf30 bitsPractical Deep Dispersed Watermarking with Synchronization and Fusion - Image Watermarking Algorithm
DWT SVMpost-hocdwt_svm512 bitsSVM-based robust image watermarking technique in LWT domain using different sub-bands
DWT DCTpost-hocdwt_dct100 bitsfrequency-domain transforms: DWT + DCT
DWT DCT SVDpost-hocdwt_dct_svd100 bitsfrequency-domain with additional SVD processing
HiDDeNpost-hochidden30 bitsHiDDeN: Hiding Data in Deep Networks --- Image Watermarking Algorithm
InvisMarkpost-hocinvismark100 bitsInvisible and Robust Watermarking for AI-generated Image Provenance
MBRSpost-hocmbrs30/256 bitsEnhancing Robustness of DNN-based Watermarking by Mini-Batch of Real and Simulated JPEG Compression
SS HiDDeNpost-hocsshidden48 bitsHiDDeN watermarking algorithm adapted from the Stable Signature
RivaGANpost-hocriva_gan30 bitsImage watermarking via RivaGAN: a deep-learning-based encoder/decoder with attention mechanism
SSLpost-hocssl_watermarkingzero-bit / 32 bitsWatermarking Images in Self-Supervised Latent-Spaces (SSL)
Stable Signaturebuilt-instable_signature48 bits (fixed for single model)The Stable Signature: Rooting Watermarks in Latent Diffusion Models
StegaStamppost-hocstega_stamp100 bitsStegaStamp: Invisible Hyperlinks in Physical Photographs
TreeRingbuilt-intreeringzero-bitTree-Ring: Fingerprints for Diffusion Images that are Invisible and Robust
TrustMarkpost-hoctrustmark100 bitsTrustMark: Universal Watermarking for Arbitrary Resolution Images
VideoSealpost-hocvideoseal256 bitsVideo Seal: Open and Efficient Video Watermarking
PixelSealpost-hocpixelseal256 bitsPixel Seal: Adversarial-only training for invisible image and video watermarking
ChunkySealpost-hocchunkyseal1024 bitsWe Can Hide More Bits: The Unused Watermarking Capacity in Theory and in Practice
Watermark Anythingpost-hocwatermark_anything32 bitsWatermark Anything with Localized Messages - Image Watermarking Algorithm
MaskWMpost-hocmaskwm32/64/128 bitsMask Image Watermarking
SyncSealpost-hocsyncsealmethod-dependentGEOMETRIC IMAGE SYNCHRONIZATION WITH DEEP WATERMARKING
Gaussian Shadingbuilt-ingaussian_shading256 bitsGaussian Shading: Provable Performance-Lossless Image Watermarking for Diffusion Models
Ring-IDbuilt-inringidzero-bitRingID: Rethinking Tree-Ring Watermarking for Enhanced Multi-Key Identification - Image Watermarking Algorithm
MaXsivebuilt-inmaxsivezero-bitMaXsive: High-Capacity and Robust Training-Free Generative Image Watermarking in Diffusion Models
METRbuilt-inmetr10 bitsMETR: Image Watermarking with Large Number of Unique Messages
PIMoGpost-hocpimog30 bitsPIMoG: An Effective Screen-shooting Noise-Layer Simulation for Deep-Learning-Based Watermarking Network
Robust-Widepost-hocrobust_wide64 bitsRobust-Wide: Robust Watermarking Against Instruction-Driven Image Editing
FINpost-hocfin64 bitsFIN: Flow-Based Robust Watermarking with Invertible Noise Layer for Black-Box Distortions
VINEpost-hocvine100 bitsRobust Watermarking Using Generative Priors Against Image Editing: From Benchmarking to Advances
SepMarkpost-hocsepmark30/128 bitsSepMark: Deep Separable Watermarking for Unified Source Tracing and Deepfake Detection
RoSteALSpost-hocrosteals100 bitsRoSteALS: Robust Steganography using Autoencoder Latent Space
Attacks
AttackConfig nameDescription
Distortionsidentity, jpeg, rotate90, rotate, gaussianblur, gaussiannoise, centercrop, resize, randomcropout, brightness, contrast, pixelshift, colorinversionCommon distortions like JPEG, blur, noise, rotation, etc
WPWMAttackerwpwmattackerSaliency-Aware Diffusion Reconstruction for Effective Invisible Watermark Removal
DIPdipDIP-based watermark evasion attack adopted from the github repository
AdversarialadversarialembeddingAdversarial embedding attack from WAVES
Adversarial PSNRadversarialembeddingpsnrModification of adversarial embedding attack that uses PSNR
AveragingaveragingAttack based on simple averaging from paper
Blur DeblurblurdeblurfpninceptionBlur image and restore it with DeblurGAN-v2
DoG Blur DeblurdogblurdeblurfpninceptionDoG blur image and restore it with DeblurGAN-v2
BM3Dbm3dBlock-matching and 3D filtering image denoising
VAEvaeattackAdversarial attack using a FLUX.1-schnell VAE to generate noisy image reconstructions
StegastampInversionstegastampinversionAdversarial attack that inverts watermarks encoded by Stegastamp
DiffusionRegenerationdiffusionregenerationInvisible Image Watermarks Are Provably Removable Using Generative AI
FluxRegenerationfluxregenerationImage regeneration attack using FLUX image-to-image diffusion model
FluxRinsingfluxrinsingMulti-step image purification using repeated FLUX regeneration
VAERegenerationvaeregenerationBased on WatermarkAttacker
Frequency MaskingfrequencymaskingImage-domain frequency masking attack that suppresses low-frequency components.
Latent Frequency MaskinglatentfrequencymaskingLatent-space frequency masking attack for diffusion model representations.
Image Editing Flux KontextimageeditingfluxcontextAdversarial attack that edits images using instruction-guided generation. (Flux Kontext model)
Image Editing InstructPix2Piximageeditinginstructpix2pixAdversarial attack that edits images using instruction-guided generation. (InstructPix2Pix model)
LIIFliifattackLIIF super-resolution
SEMAttacksemattackBlack-Box Forgery Attacks on Semantic Watermarks for Diffusion Models
WMForgerwmforgerTransferable Black-Box One-Shot Forging of Watermarks via Image Preference Models
TrustMarkRMtrustmarkrmTrustMark: Universal Watermarking for Arbitrary Resolution Images
NRP smallnrpsmallA Self-supervised Approach for Adversarial Robustness. Smaller backbone variant.
NRP largenrplargeA Self-supervised Approach for Adversarial Robustness. Larger backbone variant.
MPRNetmprnetattackMulti-stage progressive image restoration
Uni inv attack FLUXuniinvattackfluxImage Inversion and Reconstruction using Flux model
Uni edit attack FLUXunieditattackfluxImage Editing using Flux model
DISCOdiscoattackDISCO: Adversarial Defense with Local Implicit Functions
DiffPurediffpureattackDiffusion Models for Adversarial Purification
RealESRGANrealesrganattackReal-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data
UnMarkerAttackunmarkerattackUnMarker: A Universal Attack on Defensive Image Watermarking
Instagram/CSS filtersinstagramcss_filtersInstagram/CSS filters for image editing
Datasets
DatasetConfig nameDescription
Image folderimagefolderdatasetLoading images from a directory
Prompt folderpromptfolderdatasetLoading text prompts from a directory with .txt files
DiffusionDBdiffusiondbhttps://github.com/poloclub/diffusiondb, both images and prompts
MSCOCOmscocohttps://cocodataset.org/, both images and prompts
Metrics
MetricTypeStageConfig nameDescription
PSNRimage quality, compare with not marked imagepost_embed_metrics, post_attack_metricspsnrpeak signal-to-noise ratio
SSIMimage quality, compare with not marked imagepost_embed_metrics, post_attack_metricsssimstructural similarity index
LPIPSimage quality, compare with not marked imagepost_embed_metrics, post_attack_metricslpipsThe Unreasonable Effectiveness of Deep Features as a Perceptual Metric
DreamSimimage quality, compare with not marked imagepost_embed_metrics, post_attack_metricsdreamsimDreamSim: Learning New Dimensions of Human Visual Similarity using Synthetic Data.
Aestheticsingle image qualitypost_embed_metrics, post_attack_metricsaestheticAesthetic score predictor
CLIP IQAsingle image qualitypost_embed_metrics, post_attack_metricsclip_iqaExploring CLIP for Assessing the Look and Feel of Images
BLIPimage quality, compare image with text promptpost_embed_metricsblipBLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation
CLIP Scoreimage quality, compare image with text promptpost_embed_metricsclipscoreCLIPScore: A Reference-free Evaluation Metric for Image Captioning
Image Rewardimage quality, compare image with text promptpost_embed_metricsimagerewardLearning and Evaluating Human Preferences for Text-to-Image Generation
FIDimage quality, compare two sets of imagespost_pipeline_embed_metrics, post_pipeline_attack_metricsfidFID metric from GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium
BERextraction successpost_extract_metricsberBit Error Rate (multi-bit)
WERextraction successpost_extract_metricswerWord Error Rate (multi-bit)
TPR at x% FPRextraction successpost_extract_metricstpr@xfprTrue Positive Rate at fixed False Positive Rate threshold (both zero-bit and multi-bit)
Empirical TPR at x% FPRextraction successpost_extract_metricsempiricaltpr@xfprEmpirical True Positive Rate at fixed False Positive Rate threshold (multi-bit only)
P-valueextraction successpost_extract_metricsp-valueP-value denotes probability to observe the same result as in case of extraction from not watermarked object.
Resultauxiliarypost_extract_metricsresultRecords extraction result (zero-bit case)
Embedded watermarkauxiliarypost_embed_metricsembwmRecords embedded watermark (multi-bit case)
Extracted watermarkauxiliarypost_extract_metricsextwmRecords extracted watermark (multi-bit case)

Quick start

To assess implemented watermarking algorithms and attacks on watermarks, follow the step-by-step procedure below.

1. Clone

git clone https://github.com/ispras/wibe.git
cd wibe

All subsequent commands are run from this directory.

2. Set up the environment

Option A — one command

source prepare.sh

Option B — step by step

git submodule update --init --recursive
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
(.venv) pip install uv
(.venv) uv sync
(.venv) wibench-venv rebuild   # builds additional venvs

Conflicting dependency pins mean one shared venv is not enough: wibench-venv builds several compatible ones, and wibench picks among them automatically. If you plan to add your own algorithm, attack, dataset or metric, read venv manager docs first.

Optional (not recommended) — download all pre-trained weights

(.venv) python download_models.py   # no need to use: weights download automatically on demand

3. Authenticate with HuggingFace

Some models need HuggingFace access. Set HF_TOKEN to your token (setup details), then:

(.venv) python huggingface_login.py

4. Run an experiment

Specify the path to your configuration file as a required parameter:

(.venv) wibench --config configs/trustmark_demo.yml

Upon completion of computations, you can view watermarked images and explore interactive charts for different combinations of watermarking algorithms, attacks, and computed performance metrics.

Below, from left to right, are the original, watermarked with StegaStamp, and attacked by FLUX Regeneration images.

Original, watermarked, and attacked images

And here are the same as above, the original and watermarked images, as well as their difference.

Original and watermarked images, and their difference

To explore interactive wind rose chart with average TPR@0.1%FPR for all algorithms and attacks evaluated so far, run the following command:

(.venv) python make_plots.py --results_dir path_to_results_directory

Below is an average TPR@0.1%FPR chart for 7 algorithms under different types of attacks (evaluated on 300 images from the DiffusionDB dataset).

Average TPR@0.1%FPR for 7 algorithms

Resources

Citation

If you find our work useful for your research, please cite our paper:

@inproceedings{yakushev2025wibe,
  title={WIBE: Watermarks for generated Images--Benchmarking \& Evaluation},
  author={Yakushev, Aleksey and Akimenkov, Aleksandr and Abud, Khaled and Obydenkov, Dmitry and Serzhenko, Irina and Aistov, Kirill and Kovalev, Egor and Fomin, Stanislav and Antsiferova, Anastasia and Lukianov, Kirill and Markin, Yury},
  booktitle={2025 40th IEEE/ACM International Conference on Automated Software Engineering (ASE)},
  pages={4033--4036},
  year={2025},
  organization={IEEE}
}
attacks
framework
generated-by-ai
imperceptibility
robustness
watermarking

Contributors

X1716

5 commits

grandkarabas

4 commits

yakulex

4 commits

Powss

1 commits

Languages

Python

99.9%