Oliver's Notesblog.mrakovics.com
返回

如何从 Gemini 图片中移除 SynthID 水印

我最近发现了一个叫 reverse-SynthID 的项目,这让我开始深入研究如何从 Gemini 图片中移除 SynthID 水印标签,说实话,这比从照片上撕下一张贴纸要难得多。

我最近发现了一个 GitHub 仓库,声称已经逆向工程了 Google 那套「无法破解」的 AI 水印。这把我带进了一个深坑,这篇文章就是我在尝试从一张 Gemini 生成的图片中移除 SynthID 水印保护时所发现的东西,以及这到底是不是个好主意。

SynthID 到底是什么?

SynthID 是 Google DeepMind 的 AI 图片水印系统,同时也覆盖文本、音频和视频。它会在内容被 Gemini、Imagen、Veo、Lyria 等工具创建的那一刻,悄悄地把一个信号嵌入其中。

对于图片来说,水印不是 logo,也不是印章。它是一种直接烘焙进像素值里的图案,散布在整张图片上,而不是待在某个角落里。这跟 Gemini 还会往图片角落贴上的那个小星星图标完全不同,后者只是叠在上面的可见 logo。

Google 设计 SynthID 是为了让这个信号扛住常规编辑:缩放、裁剪、重新压缩、截图,甚至调色。根据 Google DeepMind 的说法,检测器之后可以扫描文件,并以相当高的置信度将其标记为 AI 生成。

为什么移除可见水印还不够

这里就是很多人栽跟头的地方。如果你裁掉那个小 Gemini logo,或者把它涂掉,你只是处理了表面那一层。看不见的 SynthID 信号仍然藏在像素里,纹丝未动!

这很重要,因为可见 logo 和隐形水印是完全独立的两套系统。删掉其中一个,对另一个毫无影响。任何人对你的「清理过」的图片跑 SynthID 检测器,仍然会得出阳性匹配,因为真正的水印数据从未被触碰。

好呀,有时候视觉移除就够了

公平地说,很多人只在乎可见 logo,不在乎那个隐形的溯源信号。如果你的目标只是一张看起来干净的图片,角落里没有星星图标,有几个免费工具就能搞定。

  • Photopea,一款免费的 Photoshop 替代品,在浏览器里运行,自带 Spot Healing Brush Tool(污点修复画笔工具),几秒钟就能把水印区域和周围像素融合在一起。对付简单背景上的小 logo 水印效果很好。
  • geminiwatermarkremover.io 是一款免费的 Gemini 水印移除工具,专门为 Gemini logo 打造。一切都在浏览器本地运行,所以图片永远不会离开你的设备。

如果你只是需要一张没有角落 logo 的截图来做演示或 mockup,这些工具完全合理,而且很快。

reverse-SynthID GitHub 仓库是什么?

事情从这里开始变得真正有意思。reverse-SynthID 是开发者 Alosh Denny 的一个开源研究项目,试图用纯信号处理来逆向工程 Google Gemini SynthID,完全无法访问 Google 实际的编码器或解码器。

它是怎么工作的

这个项目不是把水印当作一张需要涂掉的图片来处理,而是把它当作埋在图片频域里的隐藏信号。每张图片都可以用 FFT(快速傅里叶变换)转换成频域表示,把图片描述为波形模式的叠加,而不是像素。SynthID 的信号在这种表示里会显现为少数几个特定的、重复的波形频率,叫做载波(carrier),位于固定的位置。

要在没有 Google 自家检测器的情况下找到这些载波位置,研究人员向 Gemini 喂了纯黑和纯白的图片。在一张纯黑图片上,几乎整个像素内容实际上就是水印,因为没有真正的照片内容可以把它藏起来。通过对比黑白两个版本,他们可以确认哪些频率真正属于 SynthID 而不是噪声,方法是检查相位值是否以反转信号应有的方式对齐。

从纯白 Gemini 图片中提取并放大的 SynthID 载波图案。来源:GitHub Repo
从纯白 Gemini 图片中提取并放大的 SynthID 载波图案。来源:GitHub Repo

有两个发现让这件事变得很难。首先,载波位置是分辨率相关的,也就是说 1024x1024 的图片把水印藏在完全不同的频率位置上,跟 1536x2816 的图片不一样,所以为一种尺寸建立的指纹在另一种尺寸上毫无用处。其次,水印的相位模式在同一个 Gemini 模型的每张图片上都保持一致,而且在绿色通道上表现最强,这就是为什么项目在移除时会以不同权重处理绿、红、蓝三个通道。

这些发现被存储在项目称为 SpectralCodebook 的结构里,本质上是一个查找表,记录了 Gemini 能输出的每种图片分辨率对应的载波频率和相位值。移除时,工具会把图片匹配到 codebook 中最接近的分辨率配置,然后直接从该图片的频谱中减去已知的水印信号,分多轮进行,每一轮都比上一轮更弱,以免过度校正。这个项目经历了三个版本的迭代:从简单的 JPEG 重新压缩开始,到更广泛的多阶段变换,最终落到这种直接频谱减法上,仓库自己的基准测试报告这是效果最强的:载波能量大约下降 75%,相位相干性下降超过 90%,而图片质量(PSNR)保持在 43 dB 以上,意味着肉眼看起来基本一模一样。

你怎么用它?

这个项目是一组 Python 脚本,不是一键式应用,所以用起来需要一点配置。大致步骤如下:

  1. GitHub 克隆仓库,并安装仓库中列出的 Python 依赖。
  2. 用附带的下载脚本,从项目的 Hugging Face 数据集 下载参考用的黑白 Gemini 图片。
  3. 用这些参考图片构建 SpectralCodebook,映射出每种分辨率的载波频率。
  4. 对你的图片运行 V3 bypass 脚本,指向 codebook 文件,并从温和到最大选择强度级别。
  5. 可选地,之后运行附带的检测器脚本,检查水印信号是否真的下降了。

维护者还在积极呼吁贡献者向 Hugging Face 提交更多纯黑白 Gemini 输出,因为更多分辨率下的参考图片能让 codebook 更准确。

项目自己的 README 对适用范围说得很直白:这是在没有 Google 专有编码器或解码器访问权限的情况下构建的信号处理研究,结果会因分辨率和你去信号的激进程度而异。

为什么你可能根本不该移除 SynthID

通读这一切之后,这是我的真实看法。SynthID 和类似的水印系统存在的目的就是帮助人们区分真实照片和 AI 生成的图片。把这个信号剥掉,完全违背了初衷,而且可能造成真正的伤害。

记者、事实核查人员和平台依赖这些信号来在AI 生成的虚假信息传播之前抓住它们。如果一张关于公众人物或事件的假图片被擦掉了 SynthID 水印,它就更容易被当成真的传出去,而这正是水印系统被设计出来要防止的场景。

还有一个公平性的问题。有些艺术家和摄影师用自己的水印来证明作品的所有权。剥掉任何水印,不管是 AI 的还是人做的,然后把结果当作自己的原创来呈现,这就踩进了误导的边界,在某些情境下还可能引发真正的知识产权问题。

就连 reverse-SynthID 仓库也直说了,这个项目是用于研究和教育目的,明确警告不要用它来把 AI 生成的内容伪装成人类创作。不管你用哪个工具,这都是值得遵守的好建议。