您现在的位置是:首页 >技术杂谈 >【图像水印 2022 ACM】PIMoG网站首页技术杂谈

【图像水印 2022 ACM】PIMoG

說詤榢 2024-07-09 10:33:10
简介【图像水印 2022 ACM】PIMoG

【图像水印 2022 ACM】PIMoG

论文题目:PIMoG: An Effective Screen-shooting Noise-Layer Simulation for Deep-Learning-Based Watermarking Network

中文题目:PIMoG:深度学习水印网络中一种有效的截屏噪声层仿真

论文链接:https://dl.acm.org/doi/abs/10.1145/3503161.3548049

论文代码:https://github.com/FangHanNUS/PIMoG-An-Effective-Screen-shooting-Noise-Layer-Simulation-for-Deep-Learning-Based-Watermarking-Netw

论文团队:新加坡国立大学

发表时间:

DOI:

引用:Fang H, Jia Z, Ma Z, et al. PIMoG: An Effective Screen-shooting Noise-Layer Simulation for Deep-Learning-Based Watermarking Network[C]//Proceedings of the 30th ACM International Conference on Multimedia. 2022: 2267-2275.

引用数:3

摘要

随着照相手机和数字显示器的普遍存在,用照相手机捕捉数字显示的图像得到了广泛的应用。在水印的背景下,这带来了屏幕拍摄的稳健性问题。获得屏幕拍摄鲁棒性的关键是设计一个好的噪声层,它可以在基于深度学习的水印框架中代表屏幕拍摄的失真。然而,由于拍摄过程太过复杂,要定量地制定拍摄失真是非常困难的。

为了设计一个有效的屏幕射击鲁棒性的噪声层,我们在本文中提出了新的见解,即没有必要定量模拟屏幕射击噪声层的整体程序,只包括影响最大的失真就足以产生一个具有强大鲁棒性的有效噪声层。为了验证这一见解,我们提出了一个被称为PIMoG的屏幕射击噪声层。

具体来说,我们将屏幕拍摄过程中影响最大的失真总结为三部分(透视失真、光照失真和摩尔纹失真),并进一步以可区分的方式模拟它们。对于其余的失真,我们利用高斯噪声来逼近它们的主要部分。因此,整个网络可以用这种噪声层进行端到端的训练。大量的实验说明了所提出的PIMoG噪声层的卓越性能。除了噪声层的设计,我们还提出了梯度掩码引导的图像损失和边缘掩码引导的图像损失,以分别进一步提高整个网络的鲁棒性和隐蔽性。基于所提出的损失和PIMoG噪声层,整个框架在提取精度上优于SOTA水印方法至少5%,并在不同的屏幕拍摄条件下达到了97%以上的精度。

1. 介绍

数字水印技术可以作为实现泄漏源追踪的一种方式。通过在不同的副本中嵌入独特的识别信息,泄露的副本可以很容易地被识别出来。水印方案最重要的特性是稳健性。由于在传输过程中,被泄露的拷贝可能会遭受很多失真,因此实现可追溯性的关键是水印应该对失真具有鲁棒性。传统的数字水印更注重数字编辑失真的鲁棒性[1, 3, 5, 11-13, 19, 26, 29],如JPEG压缩、高斯噪声等,因为传统的信息泄露多发生在电子渠道。然而,随着数字设备的发展,人们很容易通过手机拍照获得高质量的拷贝,屏幕拍摄过程可能会严重破坏水印信号,但对数字文件的影响却很小,如图1所示。因此,设计一个屏幕拍摄的鲁棒性水印框架已经成为现阶段的迫切要求。


传统的数字水印方案通常是根据对失真的分析来设计算法的。例如,为了抵抗JPEG的失真,一些算法会选择在DCT域嵌入水印[16]。

然而,由于屏幕拍摄过程的复杂性,很难对屏幕拍摄的失真进行定量分析。

因此,设计一种算法来保证射屏过程的稳健性是一个挑战。

对于传统的屏幕拍摄弹性水印算法,他们只是定性地分析了屏幕拍摄过程中可能出现的失真,并使用一些通用的水印嵌入方法来保证鲁棒性[6]。

然而,这类方法往往会产生严重的视觉失真,因为嵌入方法是非自适应的,不能充分利用主机图像的特征。


为了充分利用图像特征和设计更好的算法,人们提出了基于深度学习的水印架构[2, 25, 27, 28]。

基于深度学习的水印的骨干是一个类似于自动编码器的端到端结构,它包含一个编码器、一个解码器和一个噪声层。确保鲁棒性的关键是设计一个好的噪声层。通过对目标噪声层的训练,可以保证相应的鲁棒性。

但可训练的前提是噪声层必须是可分的,所以当面对屏幕拍摄失真这种不可分的失真时,这种框架就不能直接应用。


对于不可区分的失真,一个直观的想法是用神经网络来近似整个失真过程,并将其作为训练的噪声层。但这种方法需要大量的数据,而生成训练数据是一个耗时耗力的过程。

此外,如果训练数据来自不同的设备,用模拟神经网络训练可能会出现训练数据和测试数据不匹配的问题,这将进一步影响算法的泛化。


因此,实现屏幕拍摄鲁棒性的最大挑战是设计一个有效的屏幕拍摄噪声层。 为了实现这一目标,本文提出了一个新的观点:不需要在屏幕拍摄噪声层中模拟整个过程,只需要包含影响最大的失真就可以生成一个具有较强鲁棒性的有效噪声层。


为了证明这一见解的正确性,我们生成了一个称为PIMoG的屏幕拍摄噪声层。

具体来说,我们把在屏幕拍摄过程中发生的影响最大的失真总结为三个主要部分:透视失真、照明失真和摩尔纹失真。

对于每一种失真,我们提出了一个可微分的公式来近似它。整个噪声层由模拟透视失真、模拟光照失真、模拟摩尔纹失真和用于表示其余失真主要部分的Gaussain噪声层组成。

广泛的实验证明了我们的见解的正确性和设计的噪声层的有效性。与网络模拟相比,提议的PIMoG噪声层在鲁棒性和适应性方面具有明显的优势。


除了噪声层,我们还设计了一个梯度掩模引导的图像损耗来进一步提高鲁棒性,并设计了一个边缘掩模引导的图像损耗来更好的不可见性。利用PIMoG和这两种损耗进行训练,所提出的水印网络既能实现高的不可见性,又具有较强的鲁棒性。

  1. 我们在屏幕拍摄噪声层的设计上给出了一个新的见解,即不需要模拟整个屏幕拍摄过程,只需将该过程中受影响最大的失真描述为噪声层就足以保证较强的鲁棒性。 我们希望这一思想能对后续的基于深度学习的水印框架中复杂噪声层的设计有所启发。
  2. 我们提出了一个噪声层PIMOG,它包含了拍摄过程中受影响最大的畸变,并进一步以可微的方式表达了这些畸变。 通过PIMOG训练,可以很好地实现屏幕拍摄的鲁棒性。
  3. 设计了梯度掩码引导的图像丢失,提高了图像拍摄的鲁棒性;设计了边缘掩码引导的图像丢失,帮助编码器以高质量的方式嵌入水印。
  4. 实验结果表明,该方案在保证高视觉质量的前提下,对屏幕拍摄失真有较好的抑制效果。

本文的其余部分组织如下。 在第2节中,我们主要讨论所提方案的相关工作。 第3节介绍了所提出的水印方案的体系结构。 第四节给出了相应的实验结果。 第5节介绍了所提出的噪声层的潜在应用。 第六节总结全文。

2. 相关工作

2.1 传统水印方案

传统的水印算法得到了广泛的研究,但大多数水印算法仍然致力于图像处理的鲁棒性。 最近有几部作品关注到了相机拍摄失真的问题。 中村等。 艾尔。 [20]最早提出用两个正交模板表示水印信号,并以叠加的方式嵌入。 之后是普拉米拉等。 艾尔。 [21]遵循了这样的作品,并提出了几个更好的表现的作品。 然而,这类方案只能用于打印-拍摄过程。 古格尔曼等。 艾尔。 [7]建议通过调制不同区域的亮度将水印嵌入到屏幕中。 但是这种方案不能很好地平衡鲁棒性和不可见性。 方等。 艾尔。 [6]分析了截屏失真,提出了一种基于SIFT和DCT的截屏鲁棒性方法。 但是这种算法在嵌入区域会产生视觉失真。 由于传统的水印算法只使用手工提取的特征进行嵌入和提取,不能充分利用宿主图像的特征。

2.2 基于深度学习的水印算法

近年来,越来越多的基于深度学习的水印方案被提出。 塔奇克等。 艾尔。 [22]用几个可微操作训练网络以获得打印拍摄的鲁棒性。 但是这种噪声层试图模拟打印拍摄过程的整体过程,不仅不能应用于屏幕拍摄场景,而且会产生严重的视觉失真。 最近,Wengrowski et。 艾尔。 [24]训练了一个摄像机-显示器传递函数(CDTF)网络来模拟摄像机拍摄过程。 通过设置CDTF作为噪声层,该网络可以实现截屏恢复。 但是,由于需要大量的屏幕-摄像机图像对来训练CDTF,这种方法在新设备产生的数据上性能较差。 刘等。 艾尔。 [18]提出了一种针对不可微失真的两阶段训练策略。 在第一阶段,他们首先初始化一个无噪声编码器和解码器,在第二阶段,他们使用畸变图像进一步微调解码器以适应畸变。 然而,由于编码特征在屏幕拍摄过程后可能会被擦除,即使经过微调,鲁棒性仍然不能有效地保证。

3. 整体架构

为了实现屏幕拍摄过程的鲁棒性,我们提出了一种称为PIMOG的屏幕拍摄噪声层,并给出了相应的框架,如图所示 2.

整个框架包括七个主要部分:

(1)扩散块,接收以长度为输入的水印消息,并输出消息隐藏层。 将被进一步重塑并级联到编码器的隐藏层; (2)带参数的编码器,将宿主图像∈R××馈入,生成带水印的图像∈R××;

(3)预训练的边缘掩码生成网络,其目的是生成的边缘掩码;

(4)带参数的敌手,它试图判断是否是水印图像;

(5)屏幕拍摄噪声层,它由多个可微畸变组成,通过畸变生成带噪声的图像;

(6)参数解码器,接收解码后的信息作为输入输出;

(7)梯度掩码生成器,通过损失传播计算宿主图像中信息损失的梯度掩码。

值得注意的是,边缘掩码生成网络是预先训练的,并且是固定的,这意味着它在训练后不会参加最终的水印嵌入过程。

image-20230529104031001

整个系统的框架。该系统主要由三部分组成:编码器、拍屏噪声层和解码器。整个网络可以端到端训练。为了实现屏幕拍摄的鲁棒性和高视觉质量,我们提出了边缘掩模引导的图像损耗和梯度掩模引导的图像损耗来应对整个框架。

3.1 Diffusion 块

为了更好地结合消息和图像特征,将消息嵌入到宿主图像中,我们提出了扩散块对消息进行预处理。

是一个完整的连接层,它接收长度的消息∈{0,1}并输出一个长度为256的向量,该向量被进一步重塑和重复以生成消息隐藏层 F m ∈ R 64 × 16 × 16 . F_{m}inmathbb{R}^{64 imes16 imes16}. FmR64×16×16.。 然后将分别向上采样到相同大小的编码器隐藏层,如图所示 2.

3.2 编码器

编码器的结构如图所示 2. 该编码器旨在以尽可能小的视觉失真将水印嵌入到宿主图像中。

具体来说,三个“双conv”块(2×conv-bn-relu-maxpool)首先向下采样到/8×/8特征映射。 然后在特征映射上添加一个额外的卷积层,生成一个全局的/32×/32特征映射,并将其进一步级联到/8×/8特征映射上。 最后,采用多个“Up-Double-Conv”块(2×Upsampling-Conv-BN-Relu-Maxpool)层生成与原始图像大小相同的最终水印图像。 其中,经过整形和上采样后的消息隐藏层S级联到的隐藏层。 我们认为,将宿主图像的隐藏层和水印信息串联起来是一种非常有效的结合特征和生成更好图像的方法。

3.3 预训练的边缘掩模发生器

在嵌入水印信号时赋予图像边缘区域较大的权重是提高水印图像视觉质量的有效途径[15]。 为了在深度学习框架中自动实现这一点,我们提出了一种掩码引导的图像丢失。 该掩模由一个预训练的边缘检测网络BDCN[8]生成,该网络在计算图像边缘方面被证明是有效的。 所以在生成边缘掩码∈{0,1}之后,我们可以将编码图像的损失函数设置为:
L I = E m ′ ∗ M S E ( I o , I e m ) = E m ′ ∗ M S E ( I o , E ( θ E , I o , M ) ) ( 1 ) mathcal{L}_{I}=E_{m}^{'}*MSE(I_{o},I_{em})=E_{m}^{'}*MSE(I_{o},E( heta_{E},I_{o},M))quad(1) LI=EmMSE(Io,Iem)=EmMSE(Io,E(θE,Io,M))(1)
where
E m ′ = E m × α E + β E E^{'}_m=E_m imesalpha_E+eta_E Em=Em×αE+βE
α E alpha_E αE β E eta_E βE用于调整掩模的重量。 在本文中,设置为1,并且默认设置为1。 中,边缘区域保持较低值。

3.4 对抗

为了提高水印图像的视觉质量,该框架采用了对抗网络。一方面,编码后的图像试图误导对抗网络,从而导致与宿主图像相似的图像;所以使用???loss通过更新??来提高???的图像质量:
L A d = l o g ( A d ( I e m ) ) = l o g ( A d ( E ( θ E , I o , M ) ) ) {mathcal{L}}_{A d}=l o g(A d(I_{e m}))=l o g(A d(E( heta_{E},I_{o},M))) LAd=log(Ad(Iem))=log(Ad(E(θE,Io,M)))
此外,??应该更新,以便在???和??之间给出一个正确的分类,这可以通过更新???来实现:
L A d v = l o g ( 1 − A d ( θ A d , I e m ) ) = l o g ( 1 − A d ( θ A d , E ( I o , M ) ) ) ( 4 ) mathcal{L}_{Adv}=log(1-Ad( heta_{Ad},I_{em}))=log(1-Ad( heta_{Ad},E(I_{o},M)))(4) LAdv=log(1Ad(θAd,Iem))=log(1Ad(θAd,E(Io,M)))(4)
在本文中,我们默认使用Patchgan[10]。

3.5 屏幕拍摄噪声层

正如前面所分析的,我们提出了一个新的见解,即没有必要把整个过程作为噪声层来模拟,相反,我们只制定影响最大的扭曲,并把它们混合在一起作为一个组合的噪声层进行训练。我们相信组合噪声层将导致更强的鲁棒性。

在本节中,我们将详细介绍噪声层。经过对屏幕拍摄过程的调查,我们总结出受影响最大的失真分为三个主要部分:透视失真、照度失真和摩尔纹失真。然后,我们以可分化的方式制定了其中的每一项。至于其余失真主要部分,我们遵循[22]中的设置,使用高斯噪声作为近似值。因此,一般来说,我们提出的PIMoG噪声层包含以下几个部分,如图3所示。

image-20230530105723226

1. 透视失真

透视失真来自于不同的拍摄角度,这将导致拍摄的图像出现不同的变形。

在本文中,我们生成了一个随机同源映射来模拟透视失真的影响。具体来说,如图4所示,左边图像的4个顶点分别表示为 P 1 ( x 1 , y 1 ) , P 2 ( x 2 , y 2 ) , P 3 ( x 3 , y 3 ) P_{1}(x_1,y_1),P_{2}(x_2,y_2),P_{3}(x_3,y_3) P1(x1,y1),P2(x2,y2),P3(x3,y3)以及 P 4 ( x 4 , y 4 ) P_4(x_4,y_4) P4(x4,y4)。而对应于图像右侧的这4个点的变换坐标分别表示为: P 1 ′ ( x 1 ′ , y 1 ′ ) , P 2 ′ ( x 2 ′ , y 2 ′ ) , P 3 ′ ( x 3 ′ , y 3 ′ ) P_{1}^{prime}(x_{1}^{prime},y_{1}^{prime}),P_{2}^{prime}(x_{2}^{prime},y_{2}^{prime}),P_3'(x_3',y_3') P1(x1,y1),P2(x2,y2),P3(x3,y3) P 4 ′ ( x 4 ′ , y 4 ′ ) P_{4}^{prime}(x_{4}^{prime},y_{4}^{prime}) P4(x4,y4)。将这8个坐标代入公式(5),我们可以得到8个方程,因此,通过解决这些方程,可以得到 a 1 , b 1 , c 1 , a 0 , b 0 , a 2 , b 2 , c 2 a_1,b_1,c_1,a_0,b_0,a_2,b_2,c_2 a1,b1,c1,a0,b0,a2,b2,c2的值。
x ′ = a 1 x + b 1 y + c 1 a 0 x + b 0 y + 1 y ′ = a 2 x + b 2 y + c 2 a 0 x + b 0 y + 1 egin{gathered} x^prime ={frac{a_{1}x+b_{1}y+c_{1}}{a_{0}x+b_{0}y+1}} \ y' =frac{a_{2}x+b_{2}y+c_{2}}{a_{0}x+b_{0}y+1} end{gathered} x=a0x+b0y+1a1x+b1y+c1y=a0x+b0y+1a2x+b2y+c2
确定所有参数之后,就生成了透视映射。并且所有的像素都可以根据映射到生成的图像中一个新的坐标中。在本文中,我们随机扰动图像的四个角(最多±8像素),并应用它们作为每个角的新坐标。然后我们将原始水印图像 I e m I_{em} Iem的每个像素双线性采样到透视失真图像 I P D I_{PD} IPD中,生成透视失真图像。

image-20230530105744398

2. 光照失真

在屏幕拍摄过程中,由于环境照度和屏幕照度的影响,不同的拍摄条件会导致拍摄的图像出现不同的照度分布。我们用点光源和线光源两类来模拟照度条件。在本文中,我们提出利用点扩散分布和线扩散分布来逼近这些条件。具体来说,对于点光源失真,我们生成的分布权重矩阵为:
I W p ( x , y ) = ( x − p x ) 2 + ( y − p y ) 2 m a x d i s ( p x p y ) × ( l m i n − l m a x ) + l m a x ( 6 ) I W_p(x,y)=frac{sqrt{(x-p_x)^2+(y-p_y)^2}}{maxdis(p_xp_y)} imes(l_{min}-l_{max})+l_{max}(6) IWp(x,y)=maxdis(pxpy)(xpx)2+(ypy)2 ×(lminlmax)+lmax(6)
其中 ( p x , p y ) (p_{x},p_{y}) (px,py)表示模拟点光源的坐标,是在整个图像中随机选择的。 m a x d i s ( p x , p y ) maxdis(p_x,p_y) maxdis(px,py)表示从 ( p x , p y ) (p_{x},p_{y}) (px,py)到图像的四个角的最大距离。 l m i n l_{min} lmin表示最小照度变化率,从 [ 0.7 , 0.9 ] [0.7, 0.9] [0.7,0.9]中均匀采样。 l m a x l_{max} lmax表示最大照度变化率,从 [ 1.1 , 1.3 ] [1.1, 1.3] [1.1,1.3]中均匀取样。 ( x , y ) (x,y) (x,y)表示分布权重矩阵的坐标,而 x ∈ H , y ∈ W xin H,yin W xH,yW

对于线光源畸变,我们生成的分布权重矩阵为:
I W l ∼ U { T 0 , T 90 , T 180 , T 270 } I W_{l}simmathbb{U}{T^{0},T^{90},T^{180},T^{270}} IWlU{T0,T90,T180,T270}
where
T 0 ( x , y ) = ( x − H ) × ( l m i n − l m a x ) H + l m i n T^0(x,y)=frac{(x-H) imes(l_{min}-l_{max})}{H}+l_{min} T0(x,y)=H(xH)×(lminlmax)+lmin
T 90 , T 180 , T 270 T^{90},T^{180},T^{270} T90,T180,T270表示将 T 0 T^0 T0分别旋转90◦, 180◦, 270◦度的矩阵。 I W l I W_{l} IWl是从 { T 0 , T 90 , T 180 , T 270 } {T^{0},T^{90},T^{180},T^{270}} {T0,T90,T180,T270}中随机选择的。而最终的照度失真 I D ID ID是从 { I W p , I W l } {IW_p,IW_l} {IWp,IWl}中随机选择。

3. 摩尔纹失真

在屏幕拍摄过程中出现的最特殊的失真是摩尔纹失真。由于屏幕和摄像机之间的采样频率不同,可能会有一些不规则的纹理出现在拍摄的图像中。我们用以下公式来模拟这种失真,根据
Z 1 ( x , y ) = 0.5 + 0.5 cos ⁡ ( 2 π ( x − z x ) 2 + ( y − z y ) 2 ) Z 2 ( x , y ) = 0.5 + 0.5 cos ⁡ ( cos ⁡ ( γ π ) × y + sin ⁡ ( γ π ) × x ) Z ( x , y ) = min ⁡ ( Z 1 ( x , y ) , Z 2 ( x , y ) ) M D ( x , y ) = ( Z ( x , y ) + 1 ) / 2 egin{gathered} Z_{1}(x,y)=0.5+0.5cosleft(2pi{sqrt{(x-z_{x})^{2}+left(y-z_{y} ight)^{2}}} ight) \ Z_{2}(x,y)=0.5+0.5cosleft(cosleft({frac{gamma}{pi}} ight) imes y+sinleft({frac{gamma}{pi}} ight) imes x ight) \ Z(x,y)=operatorname*{min}{(Z_{1}(x,y),Z_{2}(x,y)}) \ M D(x,y)=(Z(x,y)+1)/2 end{gathered} Z1(x,y)=0.5+0.5cos(2π(xzx)2+(yzy)2 )Z2(x,y)=0.5+0.5cos(cos(πγ)×y+sin(πγ)×x)Z(x,y)=min(Z1(x,y),Z2(x,y))MD(x,y)=(Z(x,y)+1)/2

其中 γ gamma γ是从 [ 0 , π ] [0,pi] [0,π]中均匀选择的, ( z x , z y ) (z_x,z_y) (zx,zy)表示一个选定点的坐标,它是在整个图像中随机采样的。MD表示我们模拟的摩尔纹失真。最后的屏幕拍摄噪声层是由以下方式产生的:
I n o = δ 1 × I D × I P D + δ 2 × M D + G N I_{no}=delta_1 imes ID imes I_{PD}+delta_2 imes MD+G_N Ino=δ1×ID×IPD+δ2×MD+GN
其中表示剩余噪声的主要部分,并用高斯噪声(=0.001)对其进行模拟。 1和2表示相应的失真比,默认设置为0.85和0.15。

3.6 解码器

所提解码器的结构如图所示 2. 解码器的目的是恢复水印信息。 整个译码器由“单conv”(conv-bn-relu-maxpool)块、九个“残差”块和一个“线性”块组成,其中在“残差”块中进行三次下采样操作。

?的目标是通过更新???和原始水印M之间的差异最小:
L M = M S E ( M , M d e ) = M S E ( M , D ( θ D , I n o ) ) {mathcal{L}}_{M}=M S Eleft(M,M_{d e} ight)=M S Eleft(M,Dleft( heta_{D},I_{n o} ight) ight) LM=MSE(M,Mde)=MSE(M,D(θD,Ino))

3.7 梯度掩模发生器

除了训练一个强的译码器以获得更好的鲁棒性外,生成更好的水印图像以利于译码也是非常重要的。 为了实现这一目标,我们提出使用梯度掩码来引导编码器。 梯度掩码是通过将信息丢失传播回宿主图像来生成的,它反映了对每个象素的期望修改,以便正确地解码水印。 我们认为梯度较大的区域应该优先进行修改,因为这将导致较大权重的准确解码。

掩码生成可表述为:
G m = ∂ L D ∂ L α G_{m}={frac{partial{mathcal{L}}_{D}}{partial L_{alpha}}} Gm=LαLD
然后我们利用??的归一化形式作为最终的梯度掩码来指导编码器。而相应的损失函数可以写成::
L G = G m ′ ∗ M S E ( I o , I e m ) = G m ′ ∗ M S E ( I o , E ( θ E , I o , M ) ) mathcal{L}_G=G^{'}_m*MSE(I_o,I_em)=G^{'}_m*MSE(I_o,E( heta_E,I_o,M)) LG=GmMSE(Io,Iem)=GmMSE(Io,E(θE,Io,M))

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。