remove-ai-watermarks
wiltodelta/remove-ai-watermarks加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

你用 Gemini 生成了一张宣传图,想发到小红书;你用 Veo 生成了一段 8 秒的 demo 视频,想放进产品介绍页。图角上那个闪光的四角星、右下角一行小字「Made with Veo」、视频容器里那段「AI 生成」的元数据,全都留在那里——它们像烙印一样提醒所有人"这是机器做的"。Remove AI Watermarks 要做的事情很直接:把这些自己生成内容上的来源痕迹按需清理干净。


上图就是项目自带的 demo:remove-ai-watermarks visible demo_banana_before.png --backend cv2 -o demo_banana_after.png,右下角的 Gemini 闪光角标被抹掉,背景用 OpenCV inpaint 补回。
作者 wiltodelta(Victor Kuznetsov)在 2025-2026 年间把这套东西从零写成了一个 Python 库,版本号已经迭代到 v0.52.0(2026-10-30 发布),GitHub 上累计 6236 star、587 fork、10 位贡献者、758 次提交、121 个版本 tag。
驱动它的是 AI 行业一个具体的矛盾:生成方在拼命加水印,检测方在拼命读水印,而创作者本人常常被自己花钱买来的工具"标记"了。Google 的 Gemini 会给图片打闪光角标,Veo/Sora 会给视频压透明 logo,中国厂商(豆包、即梦、通义万相、可灵、海螺)各有各的「AI生成」角标,SynthID 更是往像素里嵌不可见水印;与此同时 C2PA 标准正在推动所有平台强制标注"这是 AI 生成"。
项目把这件事当成一个信号工程问题来研究,而不是一个"一键去水印"的脚本。它自己写的定位是:"这是一个关于 AI 来源信号的研究项目"。所有的检测器、引擎、校准记录(data/evaluations/、oracle 校准表)都留在仓库里,像一份公开的实验笔记。
理解这个项目最快的方式,是把 AI 痕迹想成三层:
Remove AI Watermarks 的架构,就是把这三层拆成互不干扰的三条流水线,再提供组合命令 all 把它们串起来。
仓库里有一整套 *_engine.py:gemini、doubao、jimeng、qwen、kling、dola、pill(豆包/即梦/通义/可灵)、baidu、liblib、runninghub、microsoft(含 InvisMark)、samsung、openart、openai_provenance……每个引擎负责在厂商约定的位置用厂商约定的模板去匹配,一旦命中就生成掩膜,然后交给填充后端补图。
填充后端有三级:OpenCV 经典 inpaint(零依赖、快)、MI-GAN、LaMa(学习式,复杂背景下质量更好)。填充只作用于掩膜区域,画面其他部分像素级不动。
值得注意的是它对误检的克制:Sora 的识别要求"完整的眼睛形状",Veo 菱形嵌在 Sora 区域时会优先判 Veo,视频路径必须"跨相邻帧稳定重复"才认定为同一水印,检测不到稳定匹配就不写任何输出文件(fail-closed)。
pixels extra):针对 Microsoft Paint 的 InvisMark 等已确认的本地格式,用专用 Python API 直接扰动像素,改动量极小,不走扩散。qwen-zimage / sdxl-zimage / chroma-zimage / qwen21-zimage extra):Qwen-Image-2512 Lightning + Canny ControlNet 做全局重建,再用 SAM 掩膜 + Z-Image 修复人脸;SDXL 版换全局阶段,Chroma1 版用 Apache-2.0 权重(商用友好)。全部 CUDA-only,没有 CPU/MPS 兜底。noise_std=0.15 档位标定——2026-07-31 用一段公开的 8 秒 Veo 样本做过校准,0.10 档仍被检出、0.15 档未检出,所以 0.15 成了出厂默认值。C2PA 解析用官方 c2pa-python(Rust wheel)做主解析器,手写的 caBX/CBOR 扫描器只做降级兜底。视频侧甚至能读出放在媒体负载之后的 moov 里的 TC260 AIGC 标签、豆包 iOS 导出的 QuickTime meta 变体、ComfyUI 写进元数据列表的 workflow/prompt 键;MKV/WebM 读 Segment.Tags.Tag.SimpleTag,AVI 用 LIST/INFO/AIGC,FLV 用 script.onMetaData.AIGC。擦除时不改变 box 尺寸和媒体偏移,非 ISOBMFF 格式走流拷贝 remux,不重编码。
classify 做照片级 AI/相机像素分类;classify-source 是 10 家厂商的来源导出与模型版本分类器(输出 label 和 version_subfamily,会主动弃权而不是硬猜)。项目强调 classify-source 不是 SynthID 检测器——本地没有官方合成水印解码器。
remove-ai-watermarks identify|visible|invisible|metadata|video *|batch|allraiw.remove_visible() / remove_all() / remove_video_*(),支持路径或 BGR ndarraynpx skills add wiltodelta/remove-ai-watermarks,或把仓库作为 Claude Code 插件市场;uvx remove-ai-watermarks mcp 以 stdio 暴露 identify/remove/batch 三个 MCP 工具分档看,取决于你要用哪条流水线:
| 目标 | 安装 | 门槛 |
|---|---|---|
| 元数据检查与擦除 | uv tool install remove-ai-watermarks | 零门槛,纯 CPU,依赖只有 Pillow/piexif/click/c2pa-python |
| 可见标识移除 | + [visible] | 加 OpenCV-headless + numpy,纯 CPU |
| 视频处理 | + [video] | 再加 PyAV,输出编码需要系统 ffmpeg |
| 不可见水印(图像) | + [qwen-zimage] | 必须有 NVIDIA CUDA,torch + diffusers + SAM + ControlNet 模型下载量以 GB 计 |
| 视频 SynthID | + [video,diffusion] | CUDA + ffmpeg + 大显存 |
Python 版本要求 >=3.11,<3.15。项目没有 Dockerfile / docker-compose / k8s manifest,不是容器化交付,全部通过 PyPI + uv/pipx 分发;另外有托管服务 raiw.cc(含 GPU,标准输出 12MP 内免费,超分辨率和不可见水印收费)。
docs/legal-and-safety.md,明确说"包括中国在内的一些司法辖区限制移除 AI 标签或供应此类工具"。它主动声明不覆盖图库预览水印、交易平台水印、艺术家保护系统(Nightshade/Glaze),也不提供欧盟 AI 标注法规图标的移除模板。identify 的阴性结果只代表本地没有匹配到已知特征,专有像素水印可能仍然存在。报告上写着 UNVERIFIED 的字段(如视频音频轨的水印状态)是刻意留白。scripts/video_synthid_sweep.py 和 video_fidelity_probe.py(测 PSNR 画质代价)。qwen21-zimage 档位被明确标为"仅供研究、评估和个人使用",而 auto 策略会避开它。test_gemini_engine.py、test_fail_closed.py、test_cpu_offload.py、test_c2pa_registry_sync.py、test_evaluation_audit_regressions.py)。CI 有 8 个 workflow:test、publish、distribute、verify-release、skill、publish-mcp-registry、两个 HuggingFace 分类器发布。_internal/(isobmff 38KB、c2pa 42KB、two_stage_pipeline 42KB、watermark_profiles 18KB),导入全部懒加载(PEP 562 __getattr__),保证 import remove_ai_watermarks 很轻。pip install remove-ai-watermarks 和已固定的依赖链 stranded";发布走 verify-release + distribute 双 workflow。这个项目站在一个正在成型的产业拐点上:AI 内容标识正在从"平台自觉"变成"合规义务"。C2PA/Content Credentials 已经进入主流创作工具,欧盟《AI 法案》配套的标识实践规范落地,中国 TC260 也在推 AIGC 标识标准。在这样的背景下,"如何去除来源痕迹"从一个灰产话题变成了一个正当的技术命题——你必须先能完整地识别和干扰这些信号,才有资格讨论如何正确地标注它们。
Remove AI Watermarks 的价值恰恰在于它把"攻防两侧"的知识放在同一个仓库里:它既是清理工具,也是研究 AI 标识可靠性的公开实验床。6200+ star、758 次提交、121 个版本、超过 10 位贡献者、并且同时维护着 CLI / 库 / Agent Skill / MCP / ComfyUI 五个交付面——这种"一个内核五种壳"的工程完整度,在个人主导的开源项目里相当少见。
它也代表了一类正在出现的项目形态:AI 时代围绕"模型输出物"本身生长出来的工具链。以前我们给照片加水印,现在我们给 AI 水印做逆向工程;这类项目的技术栈横跨传统图像处理(OpenCV inpaint、PyAV、ISOBMFF 解析)和生成式模型(Qwen-Image、ControlNet、SAM),边界被彻底打散了。
一个把「AI 来源痕迹」拆成可见标识、不可见像素水印、来源元数据三层,并分别用可解释的工程手段拆解掉的开源工具箱——既是清理器,也是研究 AI 标识可靠性的公开实验床。用于自己生成或编辑的合法内容,需要谨慎评估所在司法辖区的合规要求;隐形水印路径必须有 NVIDIA GPU,且输出质量需要用厂商校验器复验。