mirror of
https://github.com/wiltodelta/remove-ai-watermarks.git
synced 2026-10-14 21:40:47 +02:00
- Lock OpenCV 5 and cap NumPy below 2.4 through uv constraint-dependencies so PaddleX 3.7 keeps resolving; Dependabot ignores mirror the cap. - OpenCV 5 draws Hershey putText glyphs differently, so the Dola and Kling video templates ship as committed OpenCV 4 renders with a recipe script, and the OpenArt alpha recipe now refuses any OpenCV but 4.x. - Break Sora/Veo cross-matches in favor of Veo under valid Google AI-video provenance, and require the full Sora mascot shape for mascot-only matches. - Let the Doubao engine detect marks tinted by saturated backgrounds. - Share C2PA claim-generator, credential-level and vendor-platform helpers, JPEG suffixes and the DCT basis instead of per-module copies. - Log model download failures, document the optional GITHUB_TOKEN, mark the photo and source classifier model cards archived, and refresh the lock. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
72 lines
3.1 KiB
Markdown
72 lines
3.1 KiB
Markdown
---
|
|
license: apache-2.0
|
|
library_name: numpy
|
|
pipeline_tag: image-classification
|
|
tags:
|
|
- image-forensics
|
|
- source-attribution
|
|
- open-set-classification
|
|
---
|
|
|
|
# RAIW source-pipeline classifier (archived)
|
|
|
|
> **Archived / legacy as of 2026-09-20. Not recommended for new integrations.**
|
|
> This model repository is retained for reproducibility and compatibility with
|
|
> existing users. Published weights and historical revisions remain available.
|
|
> The documentation and measurements below describe the archived model, not
|
|
> a current recommendation. No replacement model is linked at this time.
|
|
|
|
This is a compact, abstaining pixel-forensics classifier for three labels:
|
|
`openai`, `google`, and `unknown`. It is intended for original-export-looking
|
|
images whose metadata may have been removed without changing the pixels.
|
|
|
|
This model is **not a SynthID detector**. It does not decode or verify a
|
|
watermark payload. Its labels describe complete generation and export
|
|
pipelines, so renderer, geometry, encoding, post-processing, and watermark
|
|
state may be confounded. `unknown` does not mean that SynthID is absent, and a
|
|
provider label does not prove that SynthID is present.
|
|
|
|
## Model
|
|
|
|
- Input: a 124-dimensional residual/spectral forensic feature vector plus a
|
|
768-dimensional phase-free spectral vector.
|
|
- Head: 892 -> 128 -> 64 -> 3 MLP with GELU activations.
|
|
- Output: `openai`, `google`, or abstain as `unknown` using independent
|
|
provider margins.
|
|
- Artifact: `source-pipeline-mlp.npz`
|
|
- SHA-256: `6430b0738869ff07b6845b7c6149c2a83bc3f3785878082886c241c6f7ca0c4a`
|
|
|
|
The artifact contains only learned parameters, normalization constants,
|
|
labels, and thresholds. It does not contain training images, paths, image
|
|
hashes, embeddings, or a training catalog.
|
|
|
|
## Evaluation
|
|
|
|
The operating point was selected on an internal calibration split. The locked
|
|
internal test and the public `bigdatamark/synthid-research` dataset were not
|
|
used for architecture, checkpoint, or threshold selection.
|
|
|
|
| Evaluation | Class | Recall | Precision |
|
|
|---|---|---:|---:|
|
|
| Locked internal test (5,369 images) | OpenAI | 60.4% | 84.9% |
|
|
| Locked internal test (5,369 images) | Google | 57.6% | 87.9% |
|
|
| Locked internal test (5,369 images) | Unknown | 98.6% | 93.7% |
|
|
| Public external originals (900 images) | OpenAI | 68.7% | 100.0% |
|
|
| Public external originals (900 images) | Google | 81.3% | 98.8% |
|
|
| Public external originals (900 images) | Unknown/Flux | 99.0% | 66.4% |
|
|
|
|
On the public external set, a 95% resize reduced Google recall to 1.0%, and a
|
|
JPEG quality-75 round trip caused the model to abstain on every image. These
|
|
are expected abstentions, not evidence that a watermark was removed.
|
|
|
|
## Intended use
|
|
|
|
Use this model as one probabilistic signal in a broader forensic report or to
|
|
suggest an appropriate processing path. Do not use it to claim watermark
|
|
presence, authorship, policy compliance, fraud, or provenance. Applications
|
|
should expose the abstention and the model's narrow source-pipeline claim.
|
|
|
|
Feature extraction and inference are versioned in the
|
|
`remove-ai-watermarks` Python project rather than in this model repository.
|
|
Use its explicit `classify_source` API; `identify` does not run this model.
|