盘古CG网
盘古CG网

去水印工具图片视频

最近发现一款开源工具,能清除 AI 生成的图片和视频里的水印,叫 Remove-AI-Watermarks。

图片方面,支持移除 Gemini、Nano Banana 的星标,还有豆包、即梦、Qwen、可灵、元宝、百度这些平台的角标。视频方面,支持 Sora、Veo、Seedance、Hailuo、Kling 这些平台。

传送门:github.com/wiltodelta/remove-ai-watermarks

可见水印和隐藏水印都能处理,包括谷歌的 SynthID。

隐藏水印靠模型重绘打散,效果好,但需要 CUDA 显卡;只想清元数据的话,CPU 就够。

有一点得提醒:这工具只建议用来处理你自己拥有的内容,别拿它去动图库预览图这类保护他人付费内容的水印。

另外作者还放了一个在线体验的 Demo,可见水印和元数据移除,直接就能用。

 

githu原文:

移除AI水印

移除你自己生成的图片和视频中的AI来源标记:

  • 已知可见标签,如双子星闪光和供应商文字标记;
  • 通过扩散再生实现的隐形像素水印;
  • C2PA、EXIF、XMP、IPTC 及相关 AI 元数据。

视频支持包括来源识别、完整的可见及元数据 清理、目录批次、可见的Sora、Veo、Seedance、Dola、Hailuo,以及 Kling 标记去除及 Oracle 认证的视频 SynthID VAE 再生 移除。

raiw.cc 将该库作为托管服务运行,GPU 包含在内,且无需安装。可见标记和元数据移除是免费的 在那里;隐形水印去除费用已付费。

PyPI 蟒蛇 下载 许可 测试赛 赞助商

本项目适用于您拥有的内容的合法使用。它不针对股票 代理预览或其他保护第三方付费内容的水印。 详见范围、安全和法律说明

选择你想做的事

目标 指挥 GPU
查找来源信号和水印 identify
移除已知可见的AI标记 visible
删除你选择的区域 erase
剥离AI元数据 metadata
识别支持的视频来源 video identify
移除视频中的可见标记和AI元数据 video all
从视频中剔除AI元数据 video metadata
移除视频中注册的可见AI标记 video visible
处理视频目录 video batch 这取决于模式
移除带有认证VAE配置文件的视频SynthID video invisible 推荐阅读
重新生成图像以破坏隐形水印 invisible 必修(CUDA)
运行可见、不可见和元数据移除 all 推荐阅读
处理目录 batch 这取决于模式

安装模式

需求 安装
元数据检查与剥离 remove-ai-watermarks
可见检测与移除 remove-ai-watermarks[visible]
可见视频处理 remove-ai-watermarks
视频合成ID移除 remove-ai-watermarks
无焊炬DWT-DCT检测 remove-ai-watermarks[detect]
隐形图像去除(需要CUDA) remove-ai-watermarks[qwen-zimage]
所有在激活 Python 上可用的生产功能 remove-ai-watermarks[all]

低级别且专业化的额外内容包括 、 、 、 、 和 。安装指南详细记录了它们 依赖组合、Python 兼容性及模型需求。pixelsheiftrustmarkmiganlamadiffusion

快速入门

安装以元数据为重点的默认CLI:

uv tool install remove-ai-watermarks
 

检查一张图片:

remove-ai-watermarks identify image.png
 

为了去除可见的水印,安装像素依赖:

uv tool install --force "remove-ai-watermarks[visible]"
 

然后移除已知可见的标记和AI元数据:

remove-ai-watermarks visible image.png -o clean.png
 

去除元数据而不运行可见的修补或扩散:

remove-ai-watermarks metadata image.png --remove -o clean.png
 

没有这个命令,就会覆盖原有的源代码。-o

检查或移除 MP4、MOV、M4V、WebM、MKV、AVI 或 FLV 中的 AI 元数据 文件:

remove-ai-watermarks video metadata input.mp4 --check
remove-ai-watermarks video metadata input.mp4 --remove -o clean.mp4
 

该命令不转码视频或音频流。不像 上述image命令,省略时写入和 保留原件。MP4和MOV 检查中包含本地TC260标签,包括在媒体载荷后方放置的标签, 以及豆宝iOS导出时写入的QuickTime表单变体(作为直接子节点的裸盒子和无密钥元数据列表)。 MKV和WebM检查读取规范性放置。AVI 使用 ,而 FLV 用途。非ISOBMFF格式则通过流进行重制混 复制,待删除。video metadata-o<source>_cleanAIGCmoov.udta.meta.keys/ilstmoovmetametamoovhdlr=mdirSegment.Tags.Tag.SimpleTagLIST/INFO/AIGCscript.onMetaData.AIGC

使用面向产品的视频路径来识别或清理文件:

uv tool install --force "remove-ai-watermarks"
remove-ai-watermarks video identify input.mp4
remove-ai-watermarks video all input.mp4 -o clean.mp4
 

video all在存在且始终存在时,移除稳定注册的可见标记 剥离经过验证的AI元数据。如果两个信号都找不到,它仍然写入 同一容器直通,因此应用调用者得到一个可预测的输出 合同。默认排除专有的隐形视频移除功能。 选择加入有损、经过 Oracle 认证的视频 SynthID 配置文件。--invisible

处理一个具有相同契约的目录:

remove-ai-watermarks video batch ./videos --mode all
 

移除支持的可见视频标记:

remove-ai-watermarks video visible input.mp4 -o clean.mp4
remove-ai-watermarks video visible veo.mp4 --mark veo -o veo_clean.mp4
remove-ai-watermarks video visible seedance.mp4 --mark seedance -o seedance_clean.mp4
remove-ai-watermarks video visible dola.mp4 --mark dola -o dola_clean.mp4
remove-ai-watermarks video visible hailuo.mp4 --mark hailuo -o hailuo_clean.mp4
remove-ai-watermarks video visible kling.mp4 --mark kling -o kling_clean.mp4
 

该路径在像素变化前扫描完整序列。它只接受 标记在相邻帧间稳定位置重复,然后重复使用 和图像去除一样,都是OpenCV、Mi-Gan或LaMa填充后端。音频被复制 无需重新编码,并被允许自然达到终点;视频流 是因为像素发生变化而被转码。默认情况下,是受保护的光学流 通过运动对齐前一个接受的填充,并仅在 附近的资料背景也同意;用来禁用它。 编码器保留支持 8位源色度采样、色彩标签和MP4/MOV轨道时间尺度 而是依赖FFMPEG隐含的原始BGR默认值。可变帧间隔为 通过带时间戳的内存内NUT桥保持,而非被压缩 到平均帧率。非零源起始时间戳被保留 连同复制的音频偏移量一起。默认情况下,一次解码扫描所有提供者,并选择第一个稳定匹配 特异性顺序如下所示。通过明确标记限制检测 给一个供应商。 Sora覆盖了移动的Sora 2吉祥物和词标记。Veo涵盖了当前的两项 四点钻石与传承文本。Seedance覆盖固定盒标签,Dola覆盖固定文本,Hailuo覆盖复合标签,Kling覆盖右下角标签及其版本后缀。完成的编码会以原子形式发布。不 当找不到稳定标记时,输出会被写入。 HDR、PQ/HLG以及大于8位的输入会被拒绝,而是在编码之前 然后通过OpenCV的8位BGR边界静默地减少。--no-temporal-consistency--mark autoVeoAIDola AIMINIMAX | hailuo AIKLING AI

移除视频合成ID:

uv tool install --force "remove-ai-watermarks"
remove-ai-watermarks video invisible input.mp4 -o clean.mp4
 

该路径重生成完整序列,共享一个潜在噪声场 跨越时间,复制完整音频,剥离源元数据,并发布 完成原子编码。默认配置文件都通过了 双载波校准和完整的公开八秒Veo预言机 有。谷歌不发布本地解码器,所以需要重新检查服务商 对于异常重要的文件或供应商变更后仍然有用,但 不是产品结果状态。noise_std=0.15

为了去除隐形水印,安装额外的。一块NVIDIA GPU 需要:两个配置文件均仅支持 CUDA,且无 CPU 或 MPS 的备用。qwen-zimage

uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png
 

如果本地探测器无法确认隐形水印,但你知道 图片来自AI生成器,补充:--force

remove-ai-watermarks invisible image.png -o clean.png --force
 

以排版为主的图片可以选择进入实验性验证文本的审核后。 它需要手动审核字符串和行框;它从不信任OCR作为接地 真理或自动运行:

uv tool install --force "remove-ai-watermarks[text-restoration]"
remove-ai-watermarks invisible image.png -o clean.png \
  --text-manifest verified-lines.json --force
 

请参阅CLI的清单指南 模式、兼容性限制和预言者注意事项。

请参阅自制、UV、可选安装指南 功能和开发设置。

示例

可见的双子座标记

之前 之后
Image with a visible Gemini watermark Image after visible watermark removal

高质量的隐形去除

qwen-zimage是默认配置文件:在Canny下方进行Qwen-Image-2512闪电传输 ControlNet,随后对任何检测到的人脸进行SAM掩蔽Z图像修复。该 替代方案,将全局阶段替换为SDXL,并保持相同的面貌 舞台。两者都只支持CUDA。sdxl-zimage

uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png --force
 
OpenAI 之前的示例 OpenAI 示例如下
OpenAI portrait grid before qwen-zimage OpenAI portrait grid after qwen-zimage
双子座之前的例子 双子座示例
Gemini sign before qwen-zimage Gemini sign after qwen-zimage

这些精确的输出文件被匹配的提供者验证者核对。那个 结果适用于这些文件,而非所有种子、图片或未来的水印 版本。

常见食谱

去除所有检测到的可见痕迹

remove-ai-watermarks visible image.png -o clean.png
 

默认会检查所有注册的可见标记并移除所有 匹配。如果标记对你可见但探测器未发现,选择其 明确表示区域:--mark auto

remove-ai-watermarks erase image.png \
  --region 1640,1930,400,100 \
  -o clean.png
 

--region使用和可重复使用。x,y,width,height

使用学习过的填充后端

额外应用在未安装学习后端时使用OpenCV修复。 对于更难的背景,后端的学习附加内容也包括同样的内容 像素依赖自动:visible

uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan
 
uv tool install --force "remove-ai-watermarks[lama]"
remove-ai-watermarks visible image.png -o clean.png --backend lama
 

减少CUDA内存的使用

remove-ai-watermarks invisible image.png -o clean.png \
  --cpu-offload --force
 

CPU卸载通过在CPU间移动模型组件来降低CUDA内存压力 以及以速度为代价的GPU。

处理目录

remove-ai-watermarks batch ./images --mode visible
remove-ai-watermarks batch ./images --mode all
 

工具能识别的内容

可见标记支持包括:

  • 谷歌Gemini和Nano Banana闪光;
  • 豆宝、集梦、问、克灵、元宝、百度、LibLibAI和RunningHub标签;
  • 一款经过校准的三星Galaxy AI标签变体。

元数据和来源检测涵盖C2PA、EXIF、XMP、IPTC、通用 生成器参数、中国TC260 AIGC标签及若干厂商专用标签 信号。可选解码器支持开放的DWT-DCT水印和Adobe 信任马克。

精确的支撑矩阵,包括重要的位置和探测器极限,都存在 在支持信号中。

工作原理

可见的去除步骤有三个:

  1. 在预期区域内检测到注册商标。
  2. 在标记周围做一个面具。
  3. 只用 OpenCV、MI-GAN 或 LaMa 填充掩码区域。

元数据移除使用格式敏感的剥离。JPEG元数据移除保留 编码后的图像扫描而不是重新压缩。原生MP4/MOV TC260值 在不改变盒大小或介质偏移的情况下被消黑。其他支持的 容器使用其对应的元数据路径。

隐形移除则不同。它通过扩散重新生成图像 流水线以破坏像素和频域水印。这会改变 图像,无法保证专有验证者会拒绝所有 输出。

完整技术边界请参见支持信号已知限制

Python API

可见移除API要求。remove-ai-watermarks[visible]

import remove_ai_watermarks as raiw

result, removed = raiw.remove_visible("watermarked.png", "clean.png")
print(removed)

provenance = raiw.identify_video("input.mp4")
report = raiw.inspect_video_metadata("input.mp4")
complete = raiw.remove_video_all("input.mp4", "clean.mp4")
batch = raiw.remove_video_batch("videos", "videos_clean")
cleaned = raiw.remove_video_metadata("input.mp4")
synthid_cleaned = raiw.remove_video_invisible("input.mp4", "synthid_clean.mp4")
visible = raiw.remove_video_visible("input.mp4", "clean.mp4")
print(visible.mark)
veo = raiw.remove_video_visible("veo.mp4", "veo_clean.mp4", mark="veo")
seedance = raiw.remove_video_visible(
    "seedance.mp4",
    "seedance_clean.mp4",
    mark="seedance",
)
dola = raiw.remove_video_visible("dola.mp4", "dola_clean.mp4", mark="dola")
 

高级 API 接受文件路径或 BGR NumPy 数组。对于路径输入,它 还能读取来源元数据,保留Alpha,并能从中提取AI元数据 书面结果。

请参阅 Python API 指南,了解可见的移除、完整和流水线、来源检测、元数据 剥离和扩散使用。remove_allremove_batch

ComfyUI

独立的ComfyUI“去除AI水印”包提供了可见去除、检测、区域擦除和 隐形移除。

重要限制

  • 缺少本地信号意味着未知,而非干净。专有像素 元数据被剔除后,水印可能会保留。
  • 可见的移除重建了一个小区域。结果取决于背景 并选择了填充后端。
  • 隐形移除会改变整张图片,并可能改变人脸、文字或细节 细节。
  • 可见的视频移除识别了移动的Sora 2字标,即当前的Veo 钻石加遗产文本、种子盒标签,以及固定 Dola、Hailuo和Kling品牌。它无法识别较早的Sora Turbo 这些供应商提供的角落旋涡或未注册布局。 经典的OpenCV后端可以模糊结构化背景;使用 MI-GAN 或 当恢复质量重要时,LaMa。VeoAI
  • 视频合成ID的再生会改变分辨率、帧率和图像细节。 出厂配置文件是 Oracle 认证的,但没有公共本地解码器能做到 在运行时认证任意输出。重新检查异常重要的输出 在更换医疗服务提供者之后。
  • 隐形水印去除需要CUDA。两个配置文件都拒绝使用其他资料 设备在施工时进行,而不是退回无法运行的设备。 可以明显移除、元数据剥离,而且还能在任何地方运行。identify
  • 供应商的水印系统可能会变化。用 当有供应商时,他们会自行验证。

shipping命令使用认证配置文件。配套研究背带构建 匹配的重编码控制加上VAE重新生成的候选对象,留下 验证者裁决空白:video invisiblenoise_std=0.15scripts/video_synthid_sweep.py

uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/
 

要统计输出的实际成本,请使用: 在重新调整大小和编码之前,会测量发动机自身的PSNR,因此只有 探测器看到了交付的图像。scripts/video_fidelity_probe.py

uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4
 

对照必须仍为SynthID正,阴性候选方才能 算作驱逐证据。在2026-07-29的双夹校准中,两者都匹配了 Gemini内置SynthID验证器中的对照结果为阳性;越强 候选人对两家运营商均为否定,而较弱的候选人则为 一号阴性。后来的对抗性后续问题要求普通双子座 重新解释返回的像素结果;那个后续报道并不是 验证器重运行,并不会使内置判决失效。A 2026-07-31 对公开的八秒Veo样本进行完整弹夹检查,仍检测到。 而且没有被检测到,所以现在是认证默认。该 可重复的哈希和判决存在于 。UNAVAILABLE0.100.150.15data/evaluations/video-synthid-oracle.csv

文献资料

先从文档索引开始。

研究笔记和历史实验单独列在文档索引中。他们解释了过去的决定,但并没有 定义当前的公共API。

贡献

安装开发环境并运行项目门:

uv sync --frozen --extra dev
bash maintain.sh
 

在更换子系统前,请先查看模块内部结构 并有文档中的不变量。

许可

Apache 2.0。版权所有 2025-2026 Wiltodelta。

 

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容