基于深度学习的水印添加、提取方法、设备及存储介质与流程

文档序号:22502478发布日期:2020-10-13 09:36阅读:91来源:国知局
基于深度学习的水印添加、提取方法、设备及存储介质与流程
本申请涉及一种基于深度学习的水印添加、提取方法、设备及存储介质,属于图像处理
技术领域

背景技术
:为了保证图像内容的安全性,常常需要在视频或者照片中加入一些水印来表征对应图像内容的一些属性。比如:图像内容的拍摄地点、拍摄时间、所属人(单位)等。为了避免水印被去除,现有技术提供一种隐形水印的相关方案,即在图像内容中加入一些肉眼看不到的水印信息。一种典型的隐形水印添加方法包括:使用编码器将水印信息嵌入图像,得到水印嵌入图像。相应地,隐形水印提取方法包括:使用解码器对水印嵌入图像进行解码,得到水印信息。其中,编码器和解码器均由卷积神经网络构成。然而,现有的编码器得到的水印嵌入图像会出现明显的斑点或者波纹,从而导致水印嵌入图像的显示效果不佳的问题;同时,水印嵌入图像经过转拍、转录等操作后,现有的解码器提取得到的水印信息可能存在随机错误,导致该水印信息与原始的水印信息不符的问题。技术实现要素:本申请提供了一种基于深度学习的水印添加、提取方法、设备及存储介质,可以解决使用现有的编码器编码得到的水印嵌入图像存在斑点或纹理、解码器解码得到的水印信息误准确率较低的问题。本申请提供如下技术方案:第一方面,提供了一种基于深度学习的水印添加方法,所述方法包括:获取待添加水印的水印信息;将所述水印信息和所述待添加水印对应的目标图像输入预先训练的编码器,得到水印嵌入图像;所述编码器是使用样本水印信息、多张样本图像和预设损失函数对第一神经网络模型进行训练得到,所述预设损失函数包括基于最小可觉差建立的第一损失函数。可选地,所述将所述水印信息和所述待添加水印对应的目标图像输入预先训练的编码器,得到水印嵌入图像之后,还包括:获取所述编码器运行过程中得到的水印编码图像;将所述水印编码图像与所述目标图像之后的n帧图像分别进行叠加,得到每帧图像对应的水印嵌入图像,所述n为正整数。可选地,所述将所述水印信息和所述待添加水印对应的目标图像输入预先训练的编码器,得到水印嵌入图像之前,还包括:获取所述样本图像;获取所述样本水印信息;将所述样本图像和所述样本水印信息输入u-net网络模型,得到第一模型输出结果;将所述第一模型输出结果与所述样本图像输入所述预设损失函数,得到第一函数结果;使用所述第一函数结果对所述u-net网络模型进行训练,得到所述编码器。所述基于最小可觉差建立的第一损失函数通过下式表示:其中,表示亮度适应的视觉阈,表示空间掩码;mr为所述第一神经网络模型的第一模型输出结果;l2表示对计算结果进行行l2归一化。可选地,所述预设损失函数还包括第二损失函数,所述第二损失函数包括:l2损失函数、感知损失perceptualloss函数、wassersteinloss函数中的任意一项或任意多项。第二方面,提供了一种基于深度学习的水印提取方法,所述方法包括:获取水印嵌入图像;将所述水印嵌入图像输入预先训练的解码器,得到水印解码信息;所述解码器是使用多组样本数据对第二神经网络模型进行训练得到的,每组样本数据包括样本水印嵌入图像和所述样本水印嵌入图像对应的样本水印解码信息;使用纠错码对所述水印解码信息进行纠错,得到水印信息。可选地,所述使用纠错码对所述水印解码信息进行纠错,得到水印信息之后,还包括:获取m帧水印嵌入图像对应的水印信息的投票结果,得到所述水印嵌入图像的最终水印提取结果,所述m为大于1的整数。可选地,所述将所述水印嵌入图像输入预先训练的解码器,得到水印解码信息之前,还包括:获取原始水印嵌入图像和所述原始水印嵌入图像对应的样本水印解码信息;对所述原始水印嵌入图像进行随机光照变换,得到所述原始水印嵌入图像对应的样本水印嵌入图像;将所述样本水印嵌入图像输入所述第二神经网络模型,得到第二模型输出结果;将所述第二模型输出结果和所述样本水印解码信息输入交叉熵损失函数,得到第二函数结果;使用所述第二函数结果对所述第二神经网络模型进行训练,得到所述解码器。可选地,所述对所述原始水印嵌入图像进行随机光照变换,得到所述原始水印嵌入图像对应的样本水印嵌入图像,包括:基于光照理论随机生成所述原始水印嵌入图像的光照信息;使用所述光照信息对所述原始水印嵌入图像进行随机光照变换;其中,所述光照信息包括:入射光线、视觉观察方向、理想反射光和/或入射光强。第三方面,提供一种计算机设备,所述设备包括处理器和存储器;所述存储器中存储有程序,所述程序由所述处理器加载并执行以实现第一方面所述的基于深度学习的水印添加方法;或者,实现第二方面所述的基于深度学习的水印提取方法。第四方面,提供一种计算机可读存储介质,所述存储介质中存储有程序,所述程序由所述处理器加载并执行以实现第一方面所述的基于深度学习的水印添加方法;或者,实现第二方面所述的基于深度学习的水印提取方法。本申请的有益效果在于:通过获取待添加水印的水印信息;将水印信息和待添加水印对应的目标图像输入预先训练的编码器,得到水印嵌入图像;该编码器是使用多张样本图像和预设损失函数对第一神经网络模型进行训练得到,预设损失函数包括基于最小可觉差建立的第一损失函数;可以解决使用现有的编码器编码得到的水印嵌入图像存在斑点或纹理的问题;由于编码器使用基于最小可觉差建立的第一损失函数的训练得到,因此,可以保证该编码器编码得到的水印嵌入图像与目标图像之间满足人眼的最小可觉差,即不存在人眼可察觉的斑点或纹理,可以提高编码器的编码效果,从而提高水印嵌入图像的显示效果。另外,通过获取水印嵌入图像;将水印嵌入图像输入预先训练的解码器,得到水印解码信息;解码器是使用多组样本数据对第二神经网络模型进行训练得到的,每组样本数据包括样本水印嵌入图像和样本水印嵌入图像对应的样本水印解码信息;使用纠错码对水印解码信息进行纠错,得到水印信息;可以解决解码器输出的水印解码信息可能存在随机错误的问题;由于使用纠错码可以对水印解码信息中的随机错误进行纠错,因此,可以提高得到的水印信息的准确性。上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。附图说明图1是本申请一个实施例提供的基于深度学习的水印添加方法的流程图;图2是本申请一个实施例提供的编码器的训练过程的流程图;图3是本申请一个实施例提供的样本图像的示意图;图4是本申请一个实施例提供的未使用jnd损失函数训练的编码器输出的水印嵌入图像(右侧)和使用jnd损失函数训练的编码器输出的水印嵌入图像(左侧)之间的比较示意图;图5是本申请一个实施例提供的水印编码图像的示意图;图6是本申请一个实施例提供的基于深度学习的水印提取方法的流程图;图7是本申请一个实施例提供的解码器的训练过程的流程图;图8是本申请一个实施例提供的基于深度学习的水印添加装置的框图;图9是本申请一个实施例提供的基于深度学习的水印提取装置的框图;图10是本申请一个实施例提供的计算机设备的框图。具体实施方式下面结合附图和实施例,对本申请的具体实施方式作进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。首先,对本申请涉及的若干名词进行介绍。最小可觉差(justnoticeabledistortion,jnd):用于表示人眼不能察觉的最大图像失真,体现了人眼对图像改变的容忍度。在图像处理领域,jnd可以用来度量人眼对图像中不同区域失真的敏感性。感知损失(perceptualloss)函数:用于衡量两幅图像之间的差异。wassersteinloss函数:是两个概率分布的距离衡量指标。wassersteinloss函数是概率分布的距离,它是两个在同一空间上(即维度相同)的随机变量x,y之差的范数均值的下确界。交叉熵损失(crossentropyloss)函数:用于指示实际输出(概率)与期望输出(概率)的距离,交叉熵的值越小,两个概率分布就越接近。u-net网络模型:采用的是一个包含下采样和上采样的网络结构。下采样用来逐渐展现环境信息,而上采样的过程是结合下采样各层信息和上采样的输入信息来还原细节信息,并且逐步还原图像精度。纠错码:在传输过程中,原码发生错误后能在接收端自行发现或纠正的码。纠错码包括bch纠错码。其中,bch纠错码是循环码的一种,能纠正多个随机错误。bch纠错码算法的原理包括:若循环码的生成多项式为:g(x)=lcm[m1(x),m3(x),…,m2t-1(x)]。其中,lcm表示最小公倍式,t为纠错个数,mi(x)为素多项式,则由此生成的循环码称为bch码。bch码的码长n=2m-1,或是n=2m-1的因子。其中,bch码包括信息位和监督位,监督位用于纠正解码得到的字符串中的随机错误。比如:m=4,即bit位数为15位,其中11位为信息位,4位为监督位,来纠正解码的字符中随机的一位错误比特(bit)。下面对本申请提供的基于深度学习的水印添加方法和水印提取方法分别进行介绍。其中,水印添加方法参考图1所示的实施例,水印提取方法参考图6所示的实施例。本申请中,以各个实施例的执行主体为电子设备为例进行说明,该电子设备可以为手机、计算机、平板电脑等终端;或者,为服器,本实施例不对电子设备的类型作限定。图1是本申请一个实施例提供的基于深度学习的水印添加方法的流程图。该方法至少包括以下几个步骤:步骤101,获取待添加水印的水印信息。水印信息是对待添加水印进行编码得到的信息。可选地,水印信息为二进制编码。在一个示意中,水印信息基于纠错编码算法得到的,比如:基于bch编码算法对待添加水印进行编码,得到水印信息,以供解码端使用解码得到的字符串中的监督位纠正该字符串中的随机错误。比如:电子设备将需要加入视频(图片)的信息,如:拍摄的地点、时间、所属人等信息与二进制串形成映射表,此时,嵌入图像的信息会随着比特串的长度的增加呈指数级增加。如:10bit长度的水印可以嵌入210=1024条信息,20bit长度的水印可以嵌入220=1048576条信息。步骤102,将水印信息和待添加水印对应的目标图像输入预先训练的编码器,得到水印嵌入图像;编码器是使用样本水印信息、多张样本图像和预设损失函数对第一神经网络模型进行训练得到,预设损失函数包括基于最小可觉差建立的第一损失函数。本实施例中,通过基于最小可觉差建立的损失函数来训练编码器,可以使得编码器编码得到的水印嵌入图像与目标图像之间满足人眼的最小可觉差,提高嵌入水印后的图像的不可觉察度。参考图2,在将水印信息和待添加水印对应的目标图像输入预先训练的编码器,得到水印嵌入图像之前,还包括步骤21-24:步骤21,获取样本图像;比如:样本图像如图3所示。步骤22,获取样本水印信息;样本水印信息的相关说明详见步骤101中水印信息的描述,本实施例在此不再赘述。步骤23,将样本图像和样本水印信息输入u-net网络模型,得到第一模型输出结果;本实施例中,以第一神经网络模型为u-net网络模型为例进行说明,在其它实施方式中,第一神经网络模型也可以基于其它类型的神经网络模型建立,本实施例不对第一神经网络模型的类型作限定。步骤24,将第一模型输出结果与样本图像输入预设损失函数,得到第一函数结果;使用第一函数结果对u-net网络模型进行训练,得到编码器。可选地,第一损失函数为jnd损失函数。jnd损失函数通过下式表示:其中,表示亮度适应的视觉阈,表示空间掩码;mr为第一神经网络模型的第一模型输出结果;l2表示对计算结果进行行l2归一化。参考图4所示的未使用jnd损失函数训练的编码器输出的水印嵌入图像(右侧)和使用jnd损失函数训练的编码器输出的水印嵌入图像(左侧)之间的比较示意图,根据图4可知,使用jnd损失函数训练的编码器输出的水印嵌入图像消除了很多纹理。当然,预设损失函数还可以包括第二损失函数,第二损失函数包括但不限于:l2损失函数、感知损失perceptualloss函数、wassersteinloss函数中的任意一项或任意多项,本实施例不对预设损失函数的类型作限定。可选地,在目标图像为视频中的一帧图像时,若视频的帧率较大,此时,添加水印的过程需要在很短的时间内完成。比如:视频的帧率为30帧/秒,此时添加水印的过程需要在1ms甚至更短的时间内完成。这就会导致对添加水印的实时性的要求较高的问题。基于此,在步骤102之后,电子设备可以获取编码器运行过程中得到的水印编码图像;将水印编码图像与目标图像之后的n帧图像分别进行叠加,得到每帧图像对应的水印嵌入图像,n为正整数。换句话说,电子设备每隔n帧执行一次步骤101和102,通过跳帧添加水印的方式,降低了对水印添加过程的实时性的要求。其中,n的值可以为1或者其它数值,本实施例不对n的取值作限定。在一个示例中,为了避免n的取值过大导致画面出现闪烁,n的取值为1。当然,随着帧率的增大,n的值也可以随之增大。水印编码图像是编码器运行过程中得到的中间结果。水印编码图像参考图5所示。综上所述,本实施例提供的基于深度学习的水印添加方法,通过获取待添加水印的水印信息;将水印信息和待添加水印对应的目标图像输入预先训练的编码器,得到水印嵌入图像;该编码器是使用多张样本图像和预设损失函数对第一神经网络模型进行训练得到,预设损失函数包括基于最小可觉差建立的第一损失函数;可以解决使用现有的编码器编码得到的水印嵌入图像存在斑点或纹理的问题;由于编码器使用基于最小可觉差建立的第一损失函数的训练得到,因此,可以保证该编码器编码得到的水印嵌入图像与目标图像之间满足人眼的最小可觉差,即不存在人眼可察觉的斑点或纹理,可以提高编码器的编码效果,从而提高水印嵌入图像的显示效果。图6是本申请一个实施例提供的基于深度学习的水印提取方法的流程图。该方法至少包括以下几个步骤:步骤601,获取水印嵌入图像。水印嵌入图像为将水印信息和该待添加水印的目标图像输入编码器中得到的;或者,是使用编码器上一次输出的水印编码图像与当前图像进行叠加得到的,当前图像为位于目标图像之后的n帧图像中的任意一张图像。步骤602,将水印嵌入图像输入预先训练的解码器,得到水印解码信息;解码器是使用多组样本数据对第二神经网络模型进行训练得到的,每组样本数据包括样本水印嵌入图像和样本水印嵌入图像对应的样本水印解码信息。参考图7,本实施例中,将水印嵌入图像输入预先训练的解码器,得到水印解码信息之前,还包括步骤71-75:步骤71,获取原始水印嵌入图像和原始水印嵌入图像对应的样本水印解码信息。在一个示例中,原始水印嵌入图像是将样本水印解码信息和原始图像输入已训练好的编码器中得到的。具体过程参考图1所示的实施例,本实施例在此不再赘述。步骤72,对原始水印嵌入图像进行随机光照变换,得到原始水印嵌入图像对应的样本水印嵌入图像。由于在对视频进行转拍的过程中,会受到拍摄角度、光线、对焦、拍摄抖动等多方面的影响。在受拍摄角度及光照影响的条件下导致的画面变亮或者变暗,都会对解码准确性造成很大的影响。基于此,本实施例中,电子设备基于光照理论的随机光照变换,在模型训练的过程中不断地对原始水印嵌入图像实行随机位置及随机强度的光照变换,会使第二神经网络模型最终适应因拍摄角度及光照变化导致的画面变暗或者变亮,从而可以提高解码器进行水印提取时的鲁棒性。可选地,对原始水印嵌入图像进行随机光照变换,得到原始水印嵌入图像对应的样本水印嵌入图像,包括:基于光照理论随机生成原始水印嵌入图像的光照信息;使用光照信息对原始水印嵌入图像进行随机光照变换;其中,光照信息包括:入射光线、视觉观察方向、理想反射光和/或入射光强。由于光线照射到物体后形成漫反射和镜面反射两个部分,其中,漫反射和镜面反射可以用下述公式表示:id=cilin·nnis=cil(rn·vn)s其中,n代表第n个像素点,nn代表照射面的法向量,ln为入射光线,vn为视觉观察方向,rn为理想反射光,il为入射光强。nn、ln、vn、rn、il均为随机生成的矩阵。步骤73,将样本水印嵌入图像输入第二神经网络模型,得到第二模型输出结果。第二神经网络模型与第一神经网络模型相同或不同。可选地,第二神经网络模型为卷积神经网络模型。步骤74,将第二模型输出结果和样本水印解码信息输入交叉熵损失函数,得到第二函数结果。步骤75,使用第二函数结果对第二神经网络模型进行训练,得到解码器。步骤603,使用纠错码对水印解码信息进行纠错,得到水印信息。可选地,纠错码为bch码,此时,电子设备基于bch解码原理使用水印解码信息中的监督位对水印解码信息中信息位进行纠正,得到水印信息。可选地,由于纠错码的纠错位数有限,因此,纠错得到的水印信息可能依然存在错误,此时,在步骤603之后,电子设备获取m帧水印嵌入图像对应的水印信息的投票结果,得到水印嵌入图像的最终水印提取结果。m为大于1的整数。比如:输入的比特串和10帧水印嵌入图像的水印信息参考下表一所示,根据表一可知,投票结果为0100100000,与输入的比特串相同。表一:输入的比特串0100100000第1帧水印信息0100100000第2帧水印信息1100100000第3帧水印信息0100100000第4帧水印信息0100100000第5帧水印信息0100101000第6帧水印信息1100101010第7帧水印信息0100100000第8帧水印信息0100101010第9帧水印信息0100100000第10帧水印信息0010100000投票结果0100100000综上所述,本实施例提供的基于深度学习的水印提取方法,通过获取水印嵌入图像;将水印嵌入图像输入预先训练的解码器,得到水印解码信息;解码器是使用多组样本数据对第二神经网络模型进行训练得到的,每组样本数据包括样本水印嵌入图像和样本水印嵌入图像对应的样本水印解码信息;使用纠错码对水印解码信息进行纠错,得到水印信息;可以解决解码器输出的水印解码信息可能存在随机错误的问题;由于使用纠错码可以对水印解码信息中的随机错误进行纠错,因此,可以提高得到的水印信息的准确性。另外,通过对多帧水印信息进行投票得到投票结果,可以进一步纠正水印提取中的错误,从而进一步提高水印提取的准确性。另外,由于解码器是使用经过随机光照变换得到的样本水印嵌入图像训练得到的,因此,解码器在提取不同光照情况下的水印嵌入图像的水印解码信息时,均可以得到准确率较高的水印解码信息,编码器的提取结果不再受水印嵌入图像的光照条件的影响,提高编码器提取水印解码信息的准确性。图8是本申请一个实施例提供的基于深度学习的水印添加装置的框图。该装置至少包括以下几个模块:信息获取模块810和水印添加模块820。信息获取模块810,用于获取待添加水印的水印信息;水印添加模块820,用于将所述水印信息和所述待添加水印对应的目标图像输入预先训练的编码器,得到水印嵌入图像;所述编码器是使用多张样本图像和预设损失函数对第一神经网络模型进行训练得到,所述预设损失函数包括基于最小可觉差建立的第一损失函数。相关细节参考上述方法实施例。图9是本申请一个实施例提供的基于深度学习的水印提取装置的框图。该装置至少包括以下几个模块:图像获取模块910、水印解码模块920和信息纠错模块930。图像获取模块910,用于获取水印嵌入图像;水印解码模块920,用于将所述水印嵌入图像输入预先训练的解码器,得到水印解码信息;所述解码器是使用样本水印信息、多组样本数据对第二神经网络模型进行训练得到的,每组样本数据包括样本水印嵌入图像和所述样本水印嵌入图像对应的样本水印解码信息;信息纠错模块930,用于使用纠错码对所述水印解码信息进行纠错,得到水印信息。需要说明的是:上述实施例中提供的基于深度学习的水印添加、提取装置在进行基于深度学习的水印添加、提取时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将基于深度学习的水印添加、提取装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于深度学习的水印添加、提取装置与基于深度学习的水印添加、提取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。图10是本申请一个实施例提供的计算机设备的框图,该设备可以是上文的电子设备。该设备至少包括处理器1001和存储器1002。处理器1001可以包括一个或多个处理核心,比如:4核心处理器、8核心处理器等。处理器1001可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本申请中方法实施例提供的基于深度学习的水印添加方法;或者,基于深度学习的水印提取方法。在一些实施例中,计算机设备还可选包括有:外围设备接口和至少一个外围设备。处理器1001、存储器1002和外围设备接口之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口相连。示意性地,外围设备包括但不限于:射频电路、触摸显示屏、音频电路、和电源等。当然,计算机设备还可以包括更少或更多的组件,本实施例对此不作限定。可选地,本申请还提供有一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的基于深度学习的水印添加方法;或者,基于深度学习的水印提取方法。可选地,本申请还提供有一种计算机产品,该计算机产品包括计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序由处理器加载并执行以实现上述方法实施例的基于深度学习的水印添加方法;或者,基于深度学习的水印提取方法。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1