mirror of
https://github.com/wiltodelta/remove-ai-watermarks.git
synced 2026-06-06 11:03:53 +02:00
768d997ef0
Threat model: replace the unverified deployment list (Gemini 3 Pro / Nano Banana Pro / Imagen 4 / Veo) with the source-verified scope -- SynthID across Imagen / Veo / Lyria plus Gemini app outputs (>10B items by Dec 2025), and attribute the 136-bit payload to the paper's SynthID-O variant. openai-images-2 sample: note the file predates the 19 May 2026 SynthID rollout across ChatGPT / Codex / API, and that openai.com/verify is now the public oracle (still no local decoder). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
42 lines
2.3 KiB
Markdown
42 lines
2.3 KiB
Markdown
# OpenAI ChatGPT Images 2.0 sample
|
|
|
|
Reference image generated by OpenAI's ChatGPT Images 2.0 (`gpt-image-2`, launched 2026-04-21). Kept in the repo so the C2PA manifest parser and invisible-watermark pipeline can be re-verified against a real production output.
|
|
|
|
## `amur-leopard.png`
|
|
|
|
- Resolution: 1055 x 1491, PNG, 3.0 MB
|
|
- Downloaded: 2026-04-22
|
|
- Content: AI-generated infographic about the Amur leopard (*Panthera pardus orientalis*), chosen to exercise the model's new accurate-text-rendering feature
|
|
|
|
### Embedded C2PA manifest (caBX chunk, 23607 bytes)
|
|
|
|
Parsed by `remove-ai-watermarks metadata --check`:
|
|
|
|
| Field | Value |
|
|
| --- | --- |
|
|
| `claim_generator` | GPT-4o |
|
|
| `c2pa_spec` | 2.2.0 |
|
|
| `digital_source_type` | http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia |
|
|
| `c2pa_actions` | created, converted |
|
|
| Signer | OpenAI OpCo, LLC / OpenAI Media Service API |
|
|
| Claim signing CA | Trufo C2PA Claim Signing CA (2025) -> Trufo C2PA Root CA (ECC P384) |
|
|
| Timestamp authority | OpenAI TSA Issuing CA -> OpenAI TSA Root CA |
|
|
|
|
The `trainedAlgorithmicMedia` tag is what triggers "Made with AI" labels on Instagram, Facebook, and X.
|
|
|
|
### Invisible pixel-level watermark
|
|
|
|
OpenAI's system card for Images 2.0 states the model embeds an "imperceptible, robust, and content-specific" pixel-level watermark alongside C2PA. This sample was downloaded 2026-04-22, before OpenAI's 19 May 2026 rollout of Google's SynthID watermark across ChatGPT / Codex / the API, so it likely predates SynthID and carries only the original content-specific watermark. Since that rollout, the openai.com/verify tool (in preview) is the public oracle for both signals; there is still no local decoder, so bypass cannot be verified empirically here without the oracle.
|
|
|
|
## Reproducing the removal
|
|
|
|
```bash
|
|
# C2PA strip only
|
|
remove-ai-watermarks metadata amur-leopard.png --remove -o amur-leopard.clean.png
|
|
|
|
# Full pipeline (visible + diffusion regeneration + metadata)
|
|
remove-ai-watermarks all amur-leopard.png -o amur-leopard.all.png --device mps
|
|
```
|
|
|
|
Note: the diffusion step runs at native resolution by default (no pre-downscale), so fine text on a text-heavy infographic like this one is preserved. Pass `--max-resolution N` only if a very large image OOMs the GPU/MPS (that reintroduces a lossy downscale then upscale round-trip).
|