remove-ai-watermarks 是什么?

remove-ai-watermarks 是一个 Python CLI 与库,从 AI 生成图片中一条命令移除可见水印(Gemini / Nano Banana 闪光 logo)、隐形水印(SynthID、StableSignature、TreeRing)和 AI 元数据(C2PA Content Credentials、EXIF、XMP「Made with AI」标签):可见水印用已知 alpha map 反演 + NCC 检测,隐形水印用 SDXL 扩散再生,元数据逐层解析剥离。

⭐ 2,549 Stars 🍴 207 Forks Python MIT 作者: wiltodelta
来源:README 首段 + Features + How it works + pyproject 查看 GitHub 仓库 →

为什么值得关注

随着 Google SynthID、C2PA Content Credentials 等 AI 溯源体系铺开,以及 Instagram/Facebook/X 开始据元数据自动给图片打「Made with AI」标签,「如何移除这些水印/标签」成了一个有真实需求也有强争议的话题。remove-ai-watermarks 把可见水印反演、隐形水印扩散再生、元数据剥离三类能力做进一个离线 CLI,技术上相当扎实——对 Gemini sparkle 用 alpha 反演(0.05s 无需 GPU)、对 SynthID v2 用 SDXL 扩散管线(自承 SD-1.5 在 768px 打不过 v2 后已移除该路径)、还配 YOLO 人脸保护和 Analog Humanizer(注入胶片颗粒/色差以绕过 AI 图片分类器)。配套 raiw.cc 免安装 Web 服务。它的热度来自「对抗 AI 溯源」这个尖锐议题本身,技术完成度也确实高于一般脚本。

来源:README How it works / Supported models / raiw.cc

核心功能

可见水印反演(alpha 反演 + NCC 检测 + 梯度掩膜修复)

针对 Gemini / Nano Banana 的闪光 logo(alpha blending 叠加),用从纯黑背景输出提取的已知 alpha map 做逆运算 original=(watermarked−α·logo)/(1−α);三阶段 NCC(归一化互相关)检测器动态定位水印位置和缩放,对裁剪/缩放后的图也有效;残留闪光边缘用梯度掩膜 inpainting 清理。约 0.05s/图、无需 GPU、确定性。

来源:README 'Removing the Gemini sparkle watermark' + src/gemini_engine.py
隐形水印扩散再生(SDXL)

对 SynthID、StableSignature、TreeRing 等频域/潜空间隐形水印,用扩散再生管线:图像 resize 到 ~1024px(SDXL 原生)→ VAE 编码到潜空间 → 加可控噪声(前向扩散)→ 去噪(反向扩散 ~50 步、strength 0.05)→ VAE 解码 → 升回原分辨率。2026 年 5 月起默认 SDXL,自承能打掉 Gemini 3 Pro 上的 SynthID v2,旧 SD-1.5(768px)打不过后已移除。

来源:README 'Removing SynthID and other invisible watermarks' + src/invisible_engine.py
AI 元数据逐层剥离(C2PA / EXIF / XMP / PNG)

解析并移除触发平台 AI 标签的元数据:EXIF(prompt/seed/model hash/sampler)、XMP DigitalSourceType(trainedAlgorithmicMedia,Instagram/FB/X 据此显示「Made with AI」)、PNG text chunks(ComfyUI/A1111 参数)、C2PA Content Credentials(Imagen/DALL-E/Firefly 的密码学溯源 manifest,覆盖 PNG/JPEG/AVIF/HEIF/JPEG-XL),同时保留标准元数据(Author/Copyright/Title)。

来源:README 'Stripping C2PA, EXIF metadata' + src/metadata.py
Face Protection(YOLO 人脸保护)

扩散再生前用 YOLO 检测图中人物并提取人脸,扩散后用软椭圆掩膜把原始人脸 blend 回去,避免扩散过程扭曲面部特征。src/face_protector.py 实现。

来源:README 'Face Protection' + src/face_protector.py
Analog Humanizer(绕过 AI 图片分类器)

可选注入胶片颗粒和色差(chromatic aberration),让输出在 AI 生成图片分类器看来更像「拍屏照片」,从而规避 AI 检测。src/humanizer.py 实现。

来源:README 'Analog Humanizer' + src/humanizer.py
批量处理 + 检测 + 多设备

支持整目录批处理;三阶段 NCC 水印检测带置信度评分;设备自动检测 CUDA>MPS>CPU(可 --device 强制),首次运行自动下载 ~2GB 模型,可选 HF_TOKEN 接 gated 模型。CLI 一条命令同时做可见+隐形+元数据。

来源:README Usage / Installation + src/cli.py

技术架构

项目是一个聚焦的 Python 包,src/remove_ai_watermarks/ 按引擎分模块:cli.py(命令行入口)、gemini_engine.py(可见水印 alpha 反演 + NCC 检测 + inpainting)、invisible_engine.py(SDXL 扩散再生管线)、metadata.py(C2PA/EXIF/XMP/PNG 多格式元数据剥离)、face_protector.py(YOLO 人脸提取与回贴)、humanizer.py(胶片颗粒/色差注入)。数据流是「检测 → 按水印类型分派到对应引擎 → 可见走快速确定性反演、隐形走重型扩散再生、元数据走解析剥离 → 可选人脸保护与 humanizer」。依赖上轻量路径(可见+元数据)只要 pillow/numpy/opencv-headless,重型路径(隐形)才需 torch + SDXL(~2GB 模型)。设计判断:把「快速确定性的可见水印反演」和「重型扩散再生的隐形水印移除」分成两条独立引擎、按需加载 torch,是合理的取舍——大多数场景(元数据剥离、Gemini logo)无需 GPU 秒级完成,只有打 SynthID 才付扩散成本。代码组织清晰、职责单一。需要说明的是:这套架构的「能力」本身是在对抗 AI 内容溯源体系(SynthID/C2PA)和平台透明度标签,技术中立但用途有明确争议面。

来源:src/ 模块结构 + pyproject + README How it works

项目知识图谱

知识图谱:项目核心节点(中心)+ 核心功能(内环六边形)+ 关键技术依赖(外环 chip) pillow + numpy + opencv-python-headless — 图像处理与可见水印反演(轻量路径,无需 GPU)pillow + numpy… torch(可选 extra)+ SDXL — 隐形水印扩散再生(~2GB 模型,CUDA/MPS/CPU 自动检测)torch(可选 ext… YOLO — 人脸检测保护YOLO C2PA / EXIF / XMP / PNG 元数据解析C2PA / EXIF /… 可见水印反演(alpha 反演 + NCC 检测 + 梯度掩膜修复)可见水印反演(alpha… 隐形水印扩散再生(SDXL)隐形水印扩散再生(SDX… AI 元数据逐层剥离(C2PA / EXIF / XMP / PNG)AI 元数据逐层剥离(C2… Face Protection(YOLO 人脸保护)Face Protection(YO… Analog Humanizer(绕过 AI 图片分类器)Analog Humanizer(… 批量处理 + 检测 + 多设备批量处理 + 检测 + 多… remove-ai-watermarks 项目本体 核心功能 关键依赖

中心为项目本体,内环 = 核心功能模块,外环 = 关键技术依赖;按 deep.json 中的 core_features 与 tech_stack.key_deps 自动生成

技术栈

语言Python 3.10+框架CLI 工具 + 库(pyproject [project.scripts] 暴露命令)
pillow + numpy + opencv-python-headl…torch(可选 extra)+ SDXLYOLOC2PA / EXIF / XMP / PNG 元数据解析
本地 CLI,pipx / uv tool 隔离安装或 pip 装;首次运行自动下载 ~2GB 模型;可选 .env 配 HF_TOKEN 接 gated 模型;MIT 协议;另有 raiw.cc 免安装 Web 服务(由本库驱动);用 uv 管理依赖、pytest + ruff + pyright 做 dev
来源:pyproject.toml + README Installation

快速上手

# 隔离安装为 CLI(推荐) pipx install remove-ai-watermarks # 或用 uv uv tool install remove-ai-watermarks # 从源码(可二开) git clone https://github.com/wiltodelta/remove-ai-watermarks.git cd remove-ai-watermarks uv sync # 或 pip install -e . # 首次运行自动下载 ~2GB 模型;设备自动检测 CUDA>MPS>CPU # 可选:cp .env.example .env 后设 HF_TOKEN=hf_... 接 gated 模型 # 用法:对单图移除全部水印(可见 + 隐形 + 元数据) remove-ai-watermarks # 整目录批处理 remove-ai-watermarks # 强制设备:--device cuda / --device mps / --device cpu # 免安装:直接用 raiw.cc 网页服务
来源:README Installation / Usage 原文

使用场景

1. 隐私 / 去标识场景:移除 AI 生成图片里嵌入的 prompt、seed、model hash 等可能泄露生成细节的元数据;2. 去除可见 logo:把 Gemini / Nano Banana 输出的闪光 sparkle logo 反演掉,用于自有素材的二次处理;3. 研究水印鲁棒性:测试 SynthID/StableSignature/TreeRing 等隐形水印对扩散再生、裁剪缩放的抵抗能力;4. 批量清洗素材库:整目录批处理统一剥离 AI 元数据;5. 规避平台 AI 标签 / AI 分类器:移除 XMP DigitalSourceType 以去掉 Instagram/FB/X 的「Made with AI」标签、用 Analog Humanizer 绕过 AI 图片分类器——此类用途涉及平台政策与内容真实性边界,需自行评估合规性。

来源:README Features / How it works

优势与局限

优势

  • 技术完成度高于一般脚本:可见水印用 alpha 反演 + 三阶段 NCC 检测 + 梯度掩膜修复(0.05s 无 GPU、确定性),隐形水印用 SDXL 扩散再生,两条引擎按需加载,工程取舍合理
  • 覆盖面广:可见 logo + 隐形水印(SynthID v1/v2、StableSignature、TreeRing)+ 多格式元数据(C2PA/EXIF/XMP/PNG,覆盖 PNG/JPEG/AVIF/HEIF/JPEG-XL),一条命令三类一起处理
  • 诚实记录能力边界:README 明说 SD-1.5 在 768px 打不过 SynthID v2、已移除该路径改用 SDXL,gpt-image-2 的水印「无公开检测器」——不夸大
  • 代码组织清晰:按引擎单一职责拆 gemini/invisible/metadata/face_protector/humanizer 模块,轻量依赖(pillow/numpy/opencv)与重型依赖(torch)分离,pytest+ruff+pyright 工程规范
  • 易用:pipx/uv tool 隔离安装、设备自动检测、批量处理、配套 raiw.cc 免安装 Web 服务

局限

  • 伦理与内容真实性风险(最重要):项目的核心能力是对抗 AI 内容溯源体系——SynthID 和 C2PA Content Credentials 正是为 AI 透明度和内容可信而设计,移除它们 + 去掉平台「Made with AI」标签 + Analog Humanizer 主动绕过 AI 分类器,存在被用于误导、伪造来源的明确滥用面,使用需自行承担法律/平台政策/伦理责任
  • 可维护性 / 稳定性风险:与水印体系是持续对抗——README 已记录 SynthID v1→v2 升级后旧管线失效需换 SDXL;Google/OpenAI/Meta 任何水印迭代都可能让对应移除路径失效,长期要不断追赶上游
  • 可测试性风险:「水印是否真被移除」需要对应检测器验证,但 SynthID 等是闭源检测、gpt-image-2 自承「无公开检测器」,移除效果在很多情况下无法客观验证,只能靠经验判断
  • 性能 / 成本风险:隐形水印路径要 ~2GB SDXL 模型 + 扩散 ~50 步,CPU 上慢、需 GPU 才实用;扩散再生本质是「重画」图像,可能损失细节(故需 YOLO 人脸保护兜底面部),画质代价未量化
  • 可扩展性局限:每种新水印方案都要专门写检测/移除逻辑(如 alpha map 要从特定模型输出提取),不是通用方法;对未知或新型水印的泛化能力有限
  • 质量副作用:扩散再生 + humanizer(注入颗粒/色差)会改变原图像素,对画质敏感或需保真的场景不适用
来源:综合 README + src 结构 + pyproject + 水印体系常识(仅作风险说明)

最新版本

v0.4.1(2026-05-17,pyproject 版本同为 0.4.1)。最近 5 个 release:v0.3.3 (2026-04-03) → v0.3.4 (2026-04-23) → v0.3.5 (2026-04-26) → v0.4.0 (2026-05-17) → v0.4.1 (2026-05-17)。0.4.0 前后正是默认管线从 SD-1.5 切到 SDXL 以应对 SynthID v2 的时间点。仍处 0.x 阶段。

来源:GitHub Releases API(5 个 tag)+ pyproject version

总结评价

remove-ai-watermarks 在技术上是同类里做得相当扎实的一个:可见水印 alpha 反演、隐形水印 SDXL 扩散再生、多格式元数据剥离、YOLO 人脸保护分工清晰,README 也诚实记录了能力边界。但务必清楚它的性质——核心能力是对抗 SynthID / C2PA 这类 AI 内容溯源体系并移除平台 AI 标签,存在明确的滥用与合规风险。务实判断:1) 用于自有素材的隐私去标识(剥离 prompt/seed 等元数据)是相对中性的用途;用于规避平台 AI 标签、伪装来源则涉及平台政策与内容真实性,责任自负;2) 隐形水印移除要 GPU + ~2GB SDXL 模型才实用,且扩散再生会改像素、损细节,画质敏感场景慎用;3) 这是与水印体系的持续对抗,SynthID/C2PA 一升级对应路径就可能失效,别当成一劳永逸的方案;4) 「是否真移除」很多时候无法客观验证(闭源检测器),别盲信;5) 轻量用途(Gemini logo 反演、元数据剥离)无需 GPU、秒级完成,是它最稳的部分。

来源:综合分析
透明度声明
本页内容由 AI(大语言模型)基于以下公开材料自动生成:GitHub README、代码目录结构、依赖文件、Release 信息。 分析时间: 2026-05-22 09:42. 质量评分: 100/100.

数据来源:README、GitHub API、依赖文件