mirror of
https://github.com/wiltodelta/remove-ai-watermarks.git
synced 2026-08-09 23:50:40 +02:00
68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
"""Pure regression tests for the oracle-gated video SynthID experiment."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
from pathlib import Path
|
|
from typing import TYPE_CHECKING
|
|
|
|
import numpy as np
|
|
import pytest
|
|
import torch
|
|
|
|
if TYPE_CHECKING:
|
|
from types import ModuleType
|
|
|
|
_SCRIPT = Path(__file__).parent.parent / "scripts" / "video_synthid_sweep.py"
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def sweep() -> ModuleType:
|
|
spec = importlib.util.spec_from_file_location("video_synthid_sweep", _SCRIPT)
|
|
assert spec is not None
|
|
assert spec.loader is not None
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
def test_fit_size_preserves_landscape_aspect_and_vae_alignment(sweep: ModuleType) -> None:
|
|
assert sweep._fit_size(1280, 720, 512) == (512, 288)
|
|
|
|
|
|
def test_fit_size_rejects_invalid_dimensions(sweep: ModuleType) -> None:
|
|
with pytest.raises(ValueError, match="positive"):
|
|
sweep._fit_size(0, 720, 512)
|
|
|
|
|
|
def test_shared_latent_noise_is_one_spatial_field(sweep: ModuleType) -> None:
|
|
noise = sweep._shared_latent_noise(
|
|
(4, 8, 8),
|
|
seed=7,
|
|
device="cpu",
|
|
dtype=torch.float32,
|
|
)
|
|
assert noise.shape == (1, 4, 8, 8)
|
|
|
|
|
|
def test_shared_latent_noise_is_seeded(sweep: ModuleType) -> None:
|
|
first = sweep._shared_latent_noise((4, 8, 8), seed=7, device="cpu", dtype=torch.float32)
|
|
repeated = sweep._shared_latent_noise((4, 8, 8), seed=7, device="cpu", dtype=torch.float32)
|
|
other = sweep._shared_latent_noise((4, 8, 8), seed=8, device="cpu", dtype=torch.float32)
|
|
assert torch.equal(first, repeated)
|
|
assert not torch.equal(first, other)
|
|
|
|
|
|
def test_psnr_is_infinite_for_identical_frames(sweep: ModuleType) -> None:
|
|
frame = np.full((2, 8, 8, 3), 120, dtype=np.uint8)
|
|
assert sweep.paired_psnr(frame, frame.copy()) == pytest.approx(float("inf"))
|
|
|
|
|
|
def test_temporal_residual_ratio_is_one_for_identical_sequences(sweep: ModuleType) -> None:
|
|
first = np.zeros((32, 32, 3), dtype=np.uint8)
|
|
second = first.copy()
|
|
second[:, 8:16] = 80
|
|
sequence = [first, second]
|
|
maps, baseline = sweep.build_temporal_reference(sequence)
|
|
assert sweep.temporal_residual_ratio([frame.copy() for frame in sequence], maps, baseline) == pytest.approx(1.0)
|