구글 제미나이, 오픈AI DALL-E, 미드저니 등 주요 AI 모델에서 생성된 이미지의 보이는 워터마크와 보이지 않는 워터마크, 그리고 C2PA 메타데이터까지 한 번의 명령어로 모두 제거하는 오픈소스 도구가 공개되었습니다. 특히 디퓨전(Diffusion) 기반 재생성 및 알파 뒤집기(Alpha reversal) 기술을 사용하여 핵심적인 AI 생성 증명 시스템을 무력화합니다.
번역된 본문
Remove-AI-Watermarks(제목)
Google Gemini(나노 바나나), ChatGPT / DALL-E, Stable Diffusion, Adobe Firefly, Midjourney 및 기타 AI 모델에서 생성된 이미지에서 보이는 워터마크와 보이지 않는 워터마크를 제거하십시오. 단 한 번의 명령어로 SynthID, C2PA 콘텐츠 자격 증명(C2PA Content Credentials), EXIF/XMP "AI로 제작됨(Made with AI)" 라벨 및 눈에 보이는 스파클 오버레이를 모두 제거합니다.
[주요 기능]
보이는 워터마크 제거 — 역 알파 블렌딩(reverse alpha blending)을 통한 Gemini / Nano Banana 스파클 로고 제거 (빠르고, 오프라인 사용 가능하며, 결정론적 방식)
보이지 않는 워터마크 제거 — 디퓨전 기반 재생성을 통한 SynthID, StableSignature, TreeRing 제거
StableSignature (Meta): 보이지 않는 워터마크(모델 내장 워터마크) / 접근 방식: 디퓨전 재생성
TreeRing: 보이지 않는 워터마크(잠재 공간 워터마크) / 접근 방식: 디퓨전 재생성
현재 보이는 워터마크(로고 오버레이)는 Google Gemini / Nano Banana에서만 사용됩니다. 다른 서비스는 보이지 않는 워터마크 및/또는 메타데이터에 의존합니다. 당사의 디퓨전 기반 재생성은 픽셀 또는 주파수 영역의 모든 보이지 않는 워터마크에 대해 작동합니다.
[작동 원리]
Gemini / Nano Banana 스파클 워터마크 제거
Google Gemini(내부 코드명 Nano Banana)는 알파 블렌딩을 사용하여 생성된 이미지에 눈에 보이는 스파클 로고를 추가합니다:
워터마크 적용 = α × 로고 + (1 − α) × 원본
우리는 알려진 알파 맵(순수 검은색 배경의 Gemini / Nano Banana 출력에서 추출)을 사용하여 이를 역산합니다:
원본 = (워터마크 적용 − α × 로고) / (1 − α)
3단계 NCC(정규화된 상호 상관관계) 탐지기는 워터마크의 위치와 크기를 동적으로 찾으므로 이미지 크기가 조정되거나 잘리더라도 작동합니다. 제거 후, 남아있는 스파클 가장자리 아티팩트는 그라디언트 마스크 인페인팅(gradient-masked inpainting)을 통해 깔끔하게 지워집니다.
속도: 이미지당 약 0.05초. GPU가 필요하지 않습니다.
SynthID 및 기타 보이지 않는 워터마크 제거
Google은 Gemini / Nano Banana에서 생성된 모든 이미지에 SynthID를 삽입합니다. 다른 AI 서비스는 StableSignature, TreeRing 및 유사한 방식을 사용합니다. 이러한 인지할 수 없는 주파수 영역 패턴은 자르기, 크기 조정 및 JPEG 압축 후에도 그대로 유지됩니다.
제거 파이프라인(기본 프로필, SDXL):
이미지 → 약 1024px(SDXL 네이티브)로 크기 조정 → 잠재 공간으로 인코딩(VAE) → 제어된 노이즈 추가(순방향 디퓨전) → 노이즈 제거(역방향 디퓨전, 강도 0.05에서 약 50단계) → 픽셀로 다시 디코딩(VAE) → 원래 해상도로 업스케일
SDXL은 2026년 5월부터 기본값으로 사용됩니다. 경험적으로 768px에서 작동하던 예전 SD-1.5 파이프라인이 처리하지 못했던 Gemini 3 Pro 출력물의 SynthID v2를 성공적으로 무력화하는 것으로 확인되었습니다. v2를 처리하지 못하는 것으로 확인됨에 따라 SD-1.5 경로는 제거되었습니다.
얼굴 보호: 디퓨전 처리 전, YOLO가 이미지에서 사람을 감지하고 추출합니다. 디퓨전 처리 후, 원래의 얼굴이 부드러운 타원형 마스크를 사용하여 다시 블렌딩됩니다.
Remove-AI-Watermarks Remove visible and invisible AI watermarks from images generated by Google Gemini (Nano Banana), ChatGPT / DALL-E, Stable Diffusion, Adobe Firefly, Midjourney, and other AI models. Strips SynthID, C2PA Content Credentials, EXIF/XMP "Made with AI" labels, and visible sparkle overlays — all in one command. Features Visible watermark removal — Gemini / Nano Banana sparkle logo via reverse alpha blending (fast, offline, deterministic) Invisible watermark removal — SynthID, StableSignature, TreeRing via diffusion-based regeneration AI metadata stripping — EXIF, PNG text chunks, C2PA provenance manifests (PNG / JPEG / AVIF / HEIF / JPEG-XL), XMP DigitalSourceType "Made with AI" label removal — removes the metadata that triggers AI labels on Instagram, Facebook, X (Twitter) Analog Humanizer — film grain and chromatic aberration to bypass AI image classifiers Smart Face Protection — automatic extraction and blending of human faces to prevent AI distortion Batch processing — process entire directories Detection — three-stage NCC watermark detection with confidence scoring Try it online — don't want to install anything? Use raiw.cc , a free web service powered by this library. Examples Before (Watermarked) After (Cleaned) Supported models AI model Visible watermark Invisible watermark Metadata Our approach Google Gemini / Nano Banana / Gemini 3 Pro ✅ Sparkle logo ✅ SynthID v1 + v2 (default SDXL pipeline at native ~1024 px) ✅ C2PA + EXIF Alpha reversal + diffusion + metadata strip OpenAI DALL-E 3 / ChatGPT — — ✅ C2PA manifest Metadata strip OpenAI ChatGPT Images 2.0 (gpt-image-2) — ⚠️ imperceptible pixel watermark (no public detector yet) ✅ C2PA manifest (verified) Diffusion regeneration + metadata strip Stable Diffusion (AUTOMATIC1111, ComfyUI) — ✅ DWT / steganographic ✅ PNG text chunks Diffusion regeneration + metadata strip Adobe Firefly — — ✅ Content Credentials (C2PA) Metadata strip Midjourney — — ✅ EXIF + XMP (prompt, model, seed) Metadata strip StableSignature (Meta) — ✅ In-model watermark — Diffusion regeneration TreeRing — ✅ Latent space watermark — Diffusion regeneration Visible watermarks (logo overlays) are currently used only by Google Gemini / Nano Banana. Other services rely on invisible watermarks and/or metadata. Our diffusion-based regeneration works against any invisible watermark in pixel or frequency domain. How it works Removing the Gemini / Nano Banana sparkle watermark Google Gemini (internally codenamed Nano Banana ) adds a visible sparkle logo to generated images using alpha blending: watermarked = α × logo + (1 − α) × original We reverse this with a known alpha map (extracted from Gemini / Nano Banana output on a pure-black background): original = (watermarked − α × logo) / (1 − α) A three-stage NCC (Normalized Cross-Correlation) detector finds the watermark position and scale dynamically, so it works even if the image was resized or cropped. After removal, residual sparkle-edge artifacts are cleaned via gradient-masked inpainting. Speed : ~0.05s per image. No GPU needed. Removing SynthID and other invisible watermarks Google embeds SynthID into every image generated by Gemini / Nano Banana. Other AI services use StableSignature, TreeRing, and similar schemes. These imperceptible frequency-domain patterns survive cropping, resizing, and JPEG compression. The removal pipeline (default profile, SDXL): image → resize to ~1024px (SDXL native) → encode to latent space (VAE) → add controlled noise (forward diffusion) → denoise (reverse diffusion, ~50 steps at strength 0.05) → decode back to pixels (VAE) → upscale to original resolution SDXL is the default since May 2026: empirically defeats SynthID v2 on Gemini 3 Pro outputs, where the older SD-1.5 pipeline at 768 px did not. The SD-1.5 path was removed once it was verified not to handle v2. Face Protection : before diffusion, YOLO detects people in the image and extracts them. After diffusion, the original faces are blended back with a soft elliptical mask to prevent AI distortion of facial features. Analog Humanizer : optional film grain and chromatic aberration injection that makes the output indistinguishable from a photo of a screen, defeating AI-generated image classifiers. Stripping C2PA, EXIF, and "Made with AI" metadata AI tools embed generation metadata that social platforms use to show "Made with AI" labels: EXIF tags — prompt, seed, model hash, sampler settings (Stable Diffusion, Midjourney) XMP DigitalSourceType — trainedAlgorithmicMedia tag used by Instagram, Facebook, and X (Twitter) to show "Made with AI" PNG text chunks — ComfyUI workflows, AUTOMATIC1111 parameters C2PA Content Credentials — cryptographic provenance manifests from Google Imagen, OpenAI DALL-E, Adobe Firefly The cleaner parses each layer, removes AI-related fields, and preserves standard metadata (Author, Copyright, Title). Installation Recommended Install as an isolated CLI tool — no need to manage virtual environments: # Using pipx (https://pipx.pypa.io) pipx install git+https://github.com/wiltodelta/remove-ai-watermarks.git # Or using uv (https://docs.astral.sh/uv) uv tool install git+https://github.com/wiltodelta/remove-ai-watermarks.git To update to the latest version: pipx upgrade remove-ai-watermarks # or uv tool upgrade remove-ai-watermarks Install from repository Prerequisites: Python 3.10+ and pip (or uv ). # 1. Clone the repository git clone https://github.com/wiltodelta/remove-ai-watermarks.git cd remove-ai-watermarks # 2. Install the package in editable mode pip install -e . # Or, if you use uv: uv pip install -e . After installation the remove-ai-watermarks command is available system-wide. Note : The base install covers visible watermark removal and metadata stripping. For invisible watermark removal (SynthID etc.), install GPU dependencies: pip install -e " .[gpu] " # or: uv pip install -e ".[gpu]" Invisible watermark removal Invisible removal uses diffusion models and a GPU for reasonable speed. # On first run, the model (~2 GB) will be downloaded automatically. # Device is auto-detected: CUDA (Linux/Windows) > MPS (macOS) > CPU. # To force a device: --device cuda / --device mps / --device cpu # Optional: set a HuggingFace token for gated/private models cp .env.example .env # Edit .env and set HF_TOKEN=hf_your_token_here Developer setup # Install with dev dependencies (pytest, ruff, pyright) pip install -e " .[dev] " # Or with uv: uv pip install -e " .[dev] " # Run tests pytest # Run linters ./maintain.sh Usage CLI # Remove all watermarks from a single image (visible + invisible + metadata) remove-ai-watermarks all image.png -o clean.png # Process an entire directory remove-ai-watermarks batch ./images/ --mode all Individual commands # Visible watermark only (Gemini / Nano Banana sparkle) — fast, offline remove-ai-watermarks visible image.png -o clean.png # Invisible watermark only (SynthID etc.) — requires GPU remove-ai-watermarks invisible image.png -o clean.png --humanize 4.0 # Check / strip AI metadata (C2PA, EXIF, "Made with AI" labels) remove-ai-watermarks metadata image.png --check remove-ai-watermarks metadata image.png --remove # Batch with a specific mode remove-ai-watermarks batch ./images/ --mode visible Python API from remove_ai_watermarks . gemini_engine import GeminiEngine import cv2 engine = GeminiEngine () image = cv2 . imread ( "watermarked.png" ) # Detect result = engine . detect_watermark ( image ) print ( f"Detected: { result . detected } (confidence: { result . confidence :.1% } )" ) # Remove clean = engine . remove_watermark ( image ) cv2 . imwrite ( "clean.png" , clean ) Metadata stripping from remove_ai_watermarks . metadata import has_ai_metadata , remove_ai_metadata from pathlib import Path if has_ai_metadata ( Path ( "image.png" )): remove_ai_metadata ( Path ( "image.png" ), Path ( "clean.png" )) Requirements Python ≥ 3.10 Visible removal / metadata : CPU only, no GPU required Invisible removal : GPU recommended (CUDA or MPS), works on CPU (