메뉴
HN
Hacker News 11일 전

AI 이미지 워터마크 완벽 제거 오픈소스 등장

IMP
8/10
핵심 요약

구글 제미나이, 오픈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 제거
  • AI 메타데이터 제거 — EXIF, PNG 텍스트 청크, C2PA 출처 매니페스트(PNG / JPEG / AVIF / HEIF / JPEG-XL), XMP DigitalSourceType 제거
  • "AI로 제작됨" 라벨 제거 — Instagram, Facebook, X(Twitter)에서 AI 라벨이 표시되도록 트리거하는 메타데이터를 제거합니다.
  • 아날로그 휴머나이저(Analog Humanizer) — AI 이미지 분류기를 우회하기 위한 필름 그레인과 색수차(chromatic aberration) 추가
  • 스마트 얼굴 보호(Smart Face Protection) — AI 디코딩 시 인물 얼굴이 일그러지는 것을 방지하기 위해 사람의 얼굴을 자동으로 추출하여 블렌딩
  • 일괄 처리 — 전체 디렉토리 일괄 처리
  • 탐지(Detection) — 신뢰도 점수를 매기는 3단계 NCC 워터마크 탐지
  • 온라인으로 사용해보기 — 아무것도 설치하고 싶지 않으신가요? 이 라이브러리로 구동되는 무료 웹 서비스인 raiw.cc를 사용해 보세요.

[예시] 변경 전 (워터마크 있음) -> 변경 후 (제거됨)

[지원 모델]

  • Google Gemini / Nano Banana / Gemini 3 Pro: 보이는 워터마크(스파클 로고), 보이지 않는 워터마크(SynthID v1 + v2), 메타데이터(C2PA + EXIF) / 접근 방식: 알파 뒤집기 + 디퓨전 + 메타데이터 제거
  • OpenAI DALL-E 3 / ChatGPT: 메타데이터(C2PA 매니페스트) / 접근 방식: 메타데이터 제거
  • OpenAI ChatGPT Images 2.0 (gpt-image-2): 보이지 않는 워터마크(공개 탐지기 없음), 메타데이터(검증된 C2PA 매니페스트) / 접근 방식: 디퓨전 재생성 + 메타데이터 제거
  • Stable Diffusion (AUTOMATIC1111, ComfyUI): 보이지 않는 워터마크(DWT / steganographic), 메타데이터(PNG 텍스트 청크) / 접근 방식: 디퓨전 재생성 + 메타데이터 제거
  • Adobe Firefly: 메타데이터(콘텐츠 자격 증명 (C2PA)) / 접근 방식: 메타데이터 제거
  • Midjourney: 메타데이터(EXIF + XMP (프롬프트, 모델, 시드)) / 접근 방식: 메타데이터 제거
  • 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 (