Watermark Vaccine: Adversarial Attacks to Prevent Watermark Removal
1.引言
数字水印是一种将版权信息或其他标识嵌入数字内容(如图像、音频、视频)中的技术。它在版权保护方面发挥着重要作用,因为水印可以用来证明内容的所有权,防止未经授权的复制和分发。数字水印通常设计为对正常使用者不可见,或者至少不干扰正常使用,但可以通过专门的技术来检测和读取。这使得内容创作者和所有者能够在他们的作品被非法使用时追踪和维护自己的权益。
随着深度学习技术的发展,去水印技术也取得了显著进步。这些技术利用先进的算法自动识别并移除数字内容中的水印,以清除版权信息。虽然去水印技术在某些情况下(如版权过期的内容处理)有其合法用途,但它们也给版权保护带来了严峻挑战。去水印技术的普及使得非法复制和分发版权受保护的内容变得更容易,从而威胁到内容创作者和所有者的权益,对整个数字媒体产业的版权保护机制构成了挑战。
2.本文的创新
上图是本文的流程图
本文开发了两种“水印疫苗”技术:破坏型水印疫苗(DWV)和不可擦除型水印疫苗(IWV)。
DWV旨在通过对抗性攻击降低去水印后图像的质量。
IWV的目标是使水印更难以被检测和移除。
2.1 水印疫苗生成的过程:
水印疫苗(Watermark Vaccine)的生成可以被形式化为一个带约束的优化问题。以下是它的详细工作原理:
- 假设和注入:假设有一个宿主图像 x h x_h xh,在添加水印之前,向其注入一个不可见的水印疫苗 δ \delta δ。这个疫苗受到 L ∞ L_{\infty} L∞ 范数界限 ε \varepsilon ε的限制。因此,生成了“疫苗接种后的图像” x ^ h \hat{x}_h x^h。
- 水印添加操作:从水印集合 W W W中选择一个水印样本 w w w(其中 w ∈ W w \in W w∈W)。水印添加操作可以假设为函数 g g g,它需要一些参数 $\theta$ 来确定水印 w w w在宿主图像 x h x_h xh上的位置( p , q p, q p,q)、大小( u , v u, v u,v)和透明度 α \alpha α。因此,带疫苗的加水印图像 x ^ w \hat{x}_w x^w可以被定义。
- 水印去除网络:假设盲水印去除网络为 f f f,可以通过该网络分别获取 x w x_w xw和 x ^ w \hat{x}_w x^w的去水印图像和掩码。
- 优化目标:优化目标是降低去水印图像的去水印效果,通过最小化 Q ( f ( g ( x h + δ , w , θ ) ) ) Q(f(g(x_h + \delta, w, \theta))) Q(f(g(xh+δ,w,θ)))来实现。此外,为了使水印疫苗对不同的水印模式、位置、大小、透明度具有通用性,需要使预期的 Q ( f ( g ( x h + δ , w , θ ) ) ) Q(f(g(x_h + \delta, w, \theta))) Q(f(g(xh+δ,w,θ)))覆盖不同的水印 w w w和添加参数 θ \theta θ,使疫苗成为水印无关的。
- 公式化表达:水印疫苗的生成可以被公式化为以下形式:
min δ E w ∼ W E θ ∼ Θ [ Q ( f ( g ( x h + δ , w , θ ) ) ) ] \min_{\delta} \quad \mathbb{E}_{w \sim W} \mathbb{E}_{\theta \sim \Theta} [Q(f(g(x_h + \delta, w, \theta)))] δminEw∼WEθ∼Θ[Q(f(g(xh+δ,w,θ)))]
这个公式的目标是找到一个优化的扰动 δ \delta δ,以最小化在不同水印和参数下的去水印效果。
下面是一个pytorch示例:
import torch
import torch.optim as optim
from torch.autograd import Variable
def add_watermark(image, watermark, theta):
# 这里是添加水印的简化实现
# 实际实现应根据水印的位置、大小和透明度进行调整
return image + watermark
def evaluate_removal_quality(removed_image, original_image):
# 评估去水印效果的质量,可以使用不同的质量评估方法
return torch.norm(removed_image - original_image)
def watermark_vaccine_generation(host_image, watermark, watermark_removal_model, theta, epsilon, alpha, iterations):
# 初始化扰动
delta = torch.zeros_like(host_image, requires_grad=True)
# 优化器
optimizer = optim.SGD([delta], lr=alpha)
for _ in range(iterations):
optimizer.zero_grad()
# 添加扰动并生成水印图像
vaccinated_image = add_watermark(host_image + delta, watermark, theta)
# 通过去水印模型
removed_image = watermark_removal_model(vaccinated_image)
# 计算去水印效果的质量
loss = -evaluate_removal_quality(removed_image, host_image)
loss.backward()
# 更新扰动
optimizer.step()
delta.data = torch.clamp(delta.data, -epsilon, epsilon) # 确保扰动在限制范围内
return delta.data
# 使用示例
# delta = watermark_vaccine_generation(host_image, watermark, model, theta, epsilon=0.03, alpha=1e-2, iterations=100)
2.2 破坏型水印疫苗(Disrupting Watermark Vaccine, DWV)的工作原理
破坏型水印疫苗(Disrupting Watermark Vaccine, DWV)的工作原理如下:
-
目标和方法:DWV的目标是破坏经过去水印网络处理后的图像,使其无法使用。在去水印网络中,当带有DWV的水印图像通过网络时,输出的图像将被严重破坏。为了生成与水印无关的疫苗,研究者选择在干净的宿主图像上注入疫苗,而不是在水印图像上。
-
疫苗注入:疫苗 δ \delta δ被注入干净的宿主图像 x h x_h xh上,产生被疫苗保护的图像 x ^ h \hat{x}_h x^h。通过去水印网络 f f f,可以得到去水印后的图像 X ^ h \hat{X}_h X^h和去水印后的掩码 M ^ h \hat{M}_h M^h。
-
损失函数定义:定义了一个损失函数 L D W V ( x h , δ ) \mathcal{L}_{DWV}(x_h, \delta) LDWV(xh,δ)来衡量去水印后的图像 X ^ h \hat{X}_h X^h和干净宿主图像 x h x_h xh 之间的距离,使用均方误差(mean-square error)来测量这个距离。
-
优化目标:目标是最大化 L D W V \mathcal{L}_{DWV} LDWV,使得去水印后的图像与宿主图像显著不同。这样,去水印后的图像将被严重破坏,以至于不得不丢弃,或者修改非常明显。
-
迭代公式和约束条件:为了保持与之前的要求一致,疫苗的扰动 δ \delta δ被限制在 L ∞ L_{\infty} L∞范数界限 ε \varepsilon ε内。使用投影梯度下降(Projected Gradient Descent, PGD)来解决优化问题,并通过下面的迭代公式获得最优的 δ \delta δ:
δ ( t + 1 ) = Proj ( δ ( t ) + α ⋅ sign ( ∇ δ ( t ) L D W V ( x h , δ ( t ) ) ) ) \delta^{(t+1)} = \text{Proj}\left(\delta^{(t)} + \alpha \cdot \text{sign}\left(\nabla_{\delta^{(t)}} \mathcal{L}_{DWV}(x_h, \delta^{(t)})\right)\right) δ(t+1)=Proj(δ(t)+α⋅sign(∇δ(t)LDWV(xh,δ(t))))
其中 ∇ δ ( t ) L D W V ( x h , δ ( t ) ) \nabla_{\delta^{(t)}} \mathcal{L}_{DWV}(x_h, \delta^{(t)}) ∇δ(t)LDWV(xh,δ(t))是相对于 δ ( t ) \delta^{(t)} δ(t)的破坏损失梯度, α \alpha α是步长,Proj() 表示将 δ ( t ) \delta^{(t)} δ(t)保持在范数界限内,并将 x + δ ( t ) x + \delta^{(t)} x+δ(t)保持在有效空间内。
下面是DWV的pytorch代码示例:
import torch
import torch.optim as optim
from torch.autograd import Variable
def disrupting_watermark_vaccine(host_image, watermark_removal_model, epsilon, alpha, iterations):
# 初始化扰动
delta = torch.zeros_like(host_image, requires_grad=True)
# 优化器
optimizer = optim.SGD([delta], lr=alpha)
for _ in range(iterations):
optimizer.zero_grad()
# 添加扰动
vaccinated_image = host_image + delta
# 通过去水印模型
removed_image = watermark_removal_model(vaccinated_image)
# 计算损失:去水印图像与原始图像的均方误差
loss = -torch.mean((removed_image - host_image) ** 2)
loss.backward()
# 更新扰动
optimizer.step()
delta.data = torch.clamp(delta.data, -epsilon, epsilon) # 确保扰动在限制范围内
return delta.data
# 使用示例
# delta = disrupting_watermark_vaccine(host_image, model, epsilon=0.03, alpha=1e-2, iterations=100)
这里的 watermark_removal_model
应该是一个能够接受图像并返回去水印图像的模型。
2.3 不可擦除型水印疫苗(IWV)的工作原理
不可擦除型水印疫苗(Inerasable Watermark Vaccine, IWV)的详细工作原理旨在防止水印被识别和移除,以保护水印不被去除。其核心思想是使得水印难以被检测和去除,从而在去水印后的图像中保留水印图案。IWV的具体实现机制包括以下几个关键步骤:
-
损失函数定义:IWV的设计基于以下损失函数:
L I W V ( x h , δ ) = 1 2 ( β ∥ X ^ h − x h ∥ 2 + ∥ M ^ h − 0 ∥ 2 ) \mathcal{L}_{IWV}(x_h, \delta) = \frac{1}{2} \left( \beta \|\hat{X}_h - x_h\|^2 + \|\hat{M}_h - \mathbf{0}\|^2 \right) LIWV(xh,δ)=21(β∥X^h−xh∥2+∥M^h−0∥2)
其中, X ^ h \hat{X}_h X^h 是盲去水印网络处理后的输出图像, M ^ h \hat{M}_h M^h 是相应的去水印掩码, x h x_h xh 是宿主图像,而 0 \mathbf{0} 0 是与预测掩码大小相同的零矩阵。 -
损失函数的两部分:损失函数由两部分组成:
- 图像项 β ∥ X ^ h − x h ∥ 2 \beta \|\hat{X}_h - x_h\|^2 β∥X^h−xh∥2,用于衡量去水印后的图像与原始宿主图像之间的差异。
- 掩码项 ∥ M ^ h − 0 ∥ 2 \|\hat{M}_h - \mathbf{0}\|^2 ∥M^h−0∥2,用于衡量去水印掩码与零矩阵之间的差异。
-
优化目标:理想情况下,预测的图像 X ^ h \hat{X}_h X^h 应与输入图像 x h x_h xh 几乎相同,预测的掩码 M ^ h \hat{M}_h M^h 应接近全黑,意味着没有水印可以在 x ^ h \hat{x}_h x^h 上被检测到。因此,目标是最小化 L I W V \mathcal{L}_{IWV} LIWV,以生成能够使去水印网络的输出接近理想状态的疫苗。
-
算法实现:算法实现涉及对扰动 δ \delta δ 的迭代优化,以生成能够有效保护水印的疫苗。具体步骤包括初始化扰动 δ \delta δ,通过迭代过程调整 δ \delta δ,并应用到宿主图像上,以在去水印网络的输出中保留水印。
总体而言,IWV的设计旨在通过对抗性攻击的方式,对去水印网络施加影响,以阻止它们有效地去除或检测到水印,从而保护水印不被非法去除。
下面是 IWV的pytorch实现的示例
import torch
import torch.optim as optim
# beta 是一个超参数,用于平衡图像损失项和掩码损失项,需要根据具体问题进行调整。
def inerasable_watermark_vaccine(host_image, watermark_removal_model, epsilon, alpha, iterations, beta):
# 初始化扰动
delta = torch.zeros_like(host_image, requires_grad=True)
# 优化器,这里我们使用SGD,也可以选择其他的优化器
optimizer = optim.SGD([delta], lr=alpha)
for iteration in range(iterations):
optimizer.zero_grad()
# 带扰动的宿主图像
vaccinated_host_image = host_image + delta
# 通过去水印网络获取去水印后的图像和掩码
removed_image, removed_mask = watermark_removal_model(vaccinated_host_image)
# 损失函数计算,包括图像项和掩码项
image_loss = torch.norm(removed_image - host_image, p=2) ** 2
mask_loss = torch.norm(removed_mask, p=2) ** 2
loss = 0.5 * (beta * image_loss + mask_loss)
# 反向传播
loss.backward()
# 更新扰动
optimizer.step()
# 扰动投影到epsilon定义的范围内
with torch.no_grad():
delta.data = torch.clamp(delta.data, -epsilon, epsilon)
return delta.data
# 模拟使用示例:
# 假设 watermark_removal_model 是一个去水印模型,它返回去水印后的图像和掩码
# host_image 是一个PyTorch张量,代表宿主图像
# delta = inerasable_watermark_vaccine(host_image, watermark_removal_model, epsilon=0.03, alpha=1e-2, iterations=100, beta=1.0)
2.4 DWV和IWV各自的优势
破坏型水印疫苗(Disrupting Watermark Vaccine, DWV)和不可擦除型水印疫苗(Inerasable Watermark Vaccine, IWV)是两种对抗性方法,它们的目的是保护数字图像中的水印不被去除。下面分别解释这两种方法的创新性及其在水印保护方面的优势:
破坏型水印疫苗(DWV)
创新性:
- 针对去水印模型的攻击: DWV提出了一种新颖的概念,即通过对抗性攻击直接针对去水印模型,而不是试图改善水印的隐蔽性或强度。
- 质量降低策略: 当水印被去除后,DWV故意破坏去水印后的图像质量,使得去水印后的图像无法使用,增加了非法去水印行为的成本。
优势:
- 提高保护效果: 即使水印被去除,图像的质量降低到了不可接受的程度,有效防止了盗用。
- 无需修改水印设计: 保护机制不在于水印本身,而是在于去水印之后的结果,这意味着无需对现有水印方法进行任何更改。
不可擦除型水印疫苗(IWV)
创新性:
- 增强水印的持久性: IWV的方法是使水印变得难以被去水印算法检测和移除,即使去水印算法被应用,水印仍然能在图像上保持可见。
- 水印无关性: IWV追求的是一种“通用”的防护,即对不同的水印模式、大小和透明度,水印疫苗都能有效。
优势:
- 强化水印的不可移除性: 使得水印在去水印处理后仍然保留在图像中,这种方法增加了水印的不可逆性。
- 应用的广泛性: IWV希望对各种不同的水印样式都有效,这增加了其在不同场景下的适用性。
总的来说,DWV和IWV提供了两种不同的策略来防止水印的非法去除。DWV通过破坏去水印后的图像来提供保护,而IWV则是通过使水印难以被检测和去除来增强保护。这两种方法都提供了创新的视角和技术手段来增强数字水印的安全性,对抗了现代去水印技术的进步。
3.实验结果
- 实验设计:实验在10000个随机选择的宿主图像和水印组合上评估了DWV和IWV的有效性。使用了三种不同的去水印模型,并对比了干净输入和添加随机噪声的输入,这些噪声同样受到 L ∞ L_{\infty} L∞ 范数约束。
- 定性结果:从图像的定性比较中可以看出,不论使用哪种去水印网络,如果宿主图像注入了DWV,去水印后的图像都会被破坏,尽管水印可以被成功去除。而对于IWV,去水印后的图像仍有部分或全部水印可见,且图像的其他部分没有受到损害。与此相反,添加随机噪声的输入对于保护水印去除结果没有任何效果。
- 定量结果:在不同的去水印网络上,定量结果表明随机噪声不能破坏去水印后的图像,而DWV显著降低了去水印后图像的质量,具体表现为较低的PSNRh/SSIMh和较高的RMSEh/RMSEhw。另一方面,与IWV处理的去水印图像与加水印的输入有更好的相似度,表现为稍微更高的PSNR/SSIM。值得注意的是,IWV的RMSEww远低于其他方法,这用来评估水印部分是否被很好地保留。不同去水印网络上的现象趋于一致,定量结果与定性可视化一致。
- 保护效果:尽管DWV可以破坏去水印后的图像,但水印模式也可能被去除。与此相反,IWV处理后的水印在去水印图像上仍然能够被人眼识别。因此,选择哪种疫苗取决于保护的需求。
4.总结
论文方法的局限性
-
水印尺寸和透明度:实验表明,水印尺寸变大或水印的透明度参数 α \alpha α 变大时,DWV和IWV的保护效果会下降。这意味着水印疫苗的性能在一定程度上取决于水印变化 ∥ w ∥ \Vert w \Vert ∥w∥ 的大小,更好的保护效果依赖于较小的 ∥ w ∥ \Vert w \Vert ∥w∥ 变化。
-
版权所有者的挑战:版权所有者需要在水印的大小和透明度之间做出选择,以便既便于版权识别又能有效保护水印。大尺寸和低透明度水印有助于版权识别,而小尺寸和高透明度水印则更有利于保护水印疫苗。
这些局限性暴露了在应用水印疫苗时需要权衡的因素,以及在不同使用场景中可能需要调整的保护策略。
未来的研究方向:
-
改善水印尺寸和透明度的适应性:研究如何使水印疫苗在更大尺寸或不同透明度的水印上同样有效。论文指出,水印尺寸和透明度的增加会减弱水印疫苗的保护效果,特别是对于IWV。
-
通用性和水印无关性的增强:开发更为通用的水印疫苗,能够适应各种不同的水印样式、大小和透明度,以提高其在各种不同场景下的应用能力。
-
优化扰动生成策略:探索新的扰动生成方法,以提高水印疫苗的保护性能和计算效率,特别是在面对变化多端的水印特性时。
-
深入分析水印疫苗的影响因素:更细致地研究影响水印疫苗效果的各种因素,例如水印的变化大小( ∥ w ∥ ∥w∥ ∥w∥),并尝试开发出能够自动调整水印疫苗参数以适应这些变化的方法。
-
提高水印疫苗的可转移性:由于水印疫苗可能在不同的去水印网络架构中转移性有限,未来研究可以探索提高其跨模型和跨网络的可转移性。
-
增强对图像处理操作的抵抗力:进一步测试和优化水印疫苗以抵抗JPEG压缩、高斯模糊等常见的图像处理操作,确保在经历这些变换后水印仍然受到保护。
-
考虑实际应用场景:考虑水印在现实世界中的应用情况,如自动在线服务中的水印生成,以及水印可能会因特定情况(如品牌重命名、标志变更等)而变化,未来研究可以探索如何在这些动态变化的环境中提供有效的水印保护。