Configuration and Utilities

This page documents the configuration and utility APIs for MarkDiffusion.

DiffusionConfig

The DiffusionConfig class configures the diffusion model parameters for watermarking.

class utils.diffusion_config.DiffusionConfig

Configuration class for diffusion model settings.

Parameters:
  • scheduler – Diffusion scheduler (e.g., DPMSolverMultistepScheduler)

  • pipe – Diffusion pipeline (e.g., StableDiffusionPipeline)

  • device – Device to run on (‘cuda’ or ‘cpu’)

  • image_size – Size of generated images (tuple, e.g., (512, 512))

  • num_inference_steps – Number of denoising steps (default: 50)

  • guidance_scale – Classifier-free guidance scale (default: 7.5)

  • gen_seed – Random seed for generation (default: 42)

  • inversion_type – Type of inversion (‘ddim’ or ‘exact’, default: ‘ddim’)

  • num_frames – Number of frames for video (optional, for video watermarks)

  • fps – Frames per second for video (optional, for video watermarks)

Example Usage:

from markdiffusion.utils.diffusion_config import DiffusionConfig
from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler
import torch

# Initialize diffusion components
device = 'cuda' if torch.cuda.is_available() else 'cpu'
scheduler = DPMSolverMultistepScheduler.from_pretrained(
    "model_path", subfolder="scheduler"
)
pipe = StableDiffusionPipeline.from_pretrained(
    "model_path", scheduler=scheduler
).to(device)

# Create configuration
diffusion_config = DiffusionConfig(
    scheduler=scheduler,
    pipe=pipe,
    device=device,
    image_size=(512, 512),
    num_inference_steps=50,
    guidance_scale=7.5,
    gen_seed=42,
    inversion_type="ddim"
)

For Video Watermarks:

# Video configuration
video_diffusion_config = DiffusionConfig(
    scheduler=scheduler,
    pipe=video_pipe,
    device=device,
    image_size=(512, 512),
    num_frames=16,
    fps=8,
    num_inference_steps=50,
    guidance_scale=7.5,
    gen_seed=42,
    inversion_type="ddim"
)

Note

Most parameters have sensible defaults. You primarily need to provide the scheduler, pipeline, and device. Other parameters can be adjusted based on your specific requirements.