Expand GUI usage docs, link to it from the main README

This commit is contained in:
Aina Olaoluwa
2026-07-15 14:20:28 +01:00
parent adf7ead01b
commit 7bafd3e7d7
2 changed files with 43 additions and 28 deletions
+41 -28
View File
@@ -1,23 +1,17 @@
# SynthID Cleaner (GUI)
A small drag-and-drop desktop app around this repo's V3 spectral bypass
(`src/extraction/synthid_bypass.py`). Useful for e.g. removing the SynthID
watermark left behind after using generative AI to restore old photographs.
A drag and drop desktop app built on this repo's V3 spectral bypass
(`src/extraction/synthid_bypass.py`). Made for removing the SynthID
watermark left over after using generative AI to restore old photographs,
though it works on any Gemini generated image.
- Drop images in, get cleaned copies out — no command line needed after setup.
- Runs `RobustSynthIDExtractor` on each image first. The spectral bypass only
runs if a watermark is actually detected; otherwise the image is passed
through untouched. (Blindly subtracting the codebook's carrier pattern from
an image that never had it would imprint a watermark-shaped artifact
instead of removing one — this is why detection gates the bypass.)
- Optionally strips all EXIF/XMP/IPTC metadata from the output (including any
AI-generation provenance tags such as C2PA content credentials or IPTC
`DigitalSourceType`), by rebuilding the file from raw pixel data.
- Runs fully offline. No network calls, no telemetry.
- Uses V3 (pure signal processing — numpy/scipy/opencv/PyWavelets/
scikit-learn only, no PyTorch required, no GPU needed).
## Setup (one time only)
## Setup
Double click `Launch SynthID Cleaner.command`. On first run it creates a
virtual environment and installs everything it needs automatically. This
takes a minute or two depending on your connection.
If you would rather do it by hand from the terminal:
```bash
cd gui
@@ -26,22 +20,41 @@ source venv/bin/activate
pip install -r requirements-gui.txt
```
## Run
## Using it
Double-click `Launch SynthID Cleaner.command`, or from the terminal:
1. Double click `Launch SynthID Cleaner.command`. A small window opens.
2. Drag your images into the box, or click the box to pick files from a
dialog instead.
3. Pick a strength from the dropdown: gentle, moderate, aggressive, or
maximum. Aggressive is the default and works well for most photos.
4. Leave "Strip EXIF/XMP/IPTC metadata" checked if you also want camera and
software tags, plus any AI provenance metadata, removed from the output
files.
5. Set the output folder in the "Save to" field. It defaults to a
synthid-cleaned folder on your Desktop.
6. Watch the status line at the bottom while it works. For each image it
reports whether a watermark was found and removed, or whether the image
was already clean and left untouched.
```bash
cd gui
source venv/bin/activate
python gui.py
```
Each output file keeps the original name with `_clean` added, so
`photo.png` becomes `photo_clean.png` in the output folder.
The first double-click sets up the venv automatically if it doesn't exist yet.
## What it actually does
Every image is checked first with this repo's `RobustSynthIDExtractor`.
Only images where a watermark is actually detected go through the spectral
bypass. Images with no detectable watermark are copied through unchanged
instead, so the tool cannot accidentally stamp a watermark shaped pattern
onto a photo that never had one.
Everything runs locally: no network calls, no telemetry. It uses the V3
pipeline only (numpy, scipy, opencv, PyWavelets, scikit-learn), so no
PyTorch install or GPU is required.
## Notes
- Reads the bypass codebook from `../artifacts/spectral_codebook_v3.npz` and
the detector codebook from `../artifacts/codebook/robust_codebook.pkl`
(both already in this repo) — no extra downloads.
- Subject to this repo's [LICENSE](../LICENSE): non-commercial use, with
- Codebooks are read straight from this repo: `../artifacts/spectral_codebook_v3.npz`
for the bypass, `../artifacts/codebook/robust_codebook.pkl` for detection.
Nothing extra to download.
- Subject to this repo's [LICENSE](../LICENSE): non commercial use, with
required attribution to the original author.