BZH watermark detector (demo)

You can use this classifier to detect watermarks generated with our SDXL-turbo watermarking demo.

Usage

from transformers import AutoModelForImageClassification, BlipImageProcessor

from PIL import Image
import sys

image_processor = BlipImageProcessor.from_pretrained("imatag/stable-signature-bzh-detector-resnet18")
model = AutoModelForImageClassification.from_pretrained("imatag/stable-signature-bzh-detector-resnet18")
model.eval()

img = Image.open(sys.argv[1]).convert("RGB")
inputs = image_processor(img, return_tensors="pt")
p = model(**inputs).logits[0,0] < 0

print(f"watermarked: {p}")

Purpose

This model is an approximate version of IMATAG's BZH decoder for the watermark embedded in our SDXL-turbo watermarking demo. It works on this watermark only and cannot be used to decode other watermarks.

It will catch most altered versions of a watermarked image while making roughly one mistake in one thousand on non-watermarked images. Alternatively, it can produce an approximate p-value measuring the risk of mistakenly detecting a watermark on a benign (non-watermarked) image, by recalibrating the output as in this script.

To get an exact p-value and for improved robustness, please use the API instead.

For more details on this watermarking technique, check out our announcement and our lab's blog post.

For watermarked models with a different key, support for payload, other perceptual compromises, robustness to other attacks, or faster detection, please contact IMATAG.

Downloads last month
393
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Spaces using imatag/stable-signature-bzh-detector-resnet18 2