端到端水印系统的制作方法

未命名 09-17 阅读:98 评论:0


1.本说明书总体上涉及用于在数字内容中嵌入水印以及恢复嵌入在数字内容中的水印的数据处理和技术。


背景技术:

2.在诸如互联网的联网环境中,内容提供者可以提供用于在电子文档中呈现的信息,例如网页或应用界面。文档可以包括由第一方内容提供者提供的第一方内容和由第三方内容提供者(例如,不同于第一方内容提供者的内容提供者)提供的第三方内容。
3.可以使用各种技术将第三方内容添加到电子文档中。例如,一些文档包括标签,所述标签指令呈现文档的客户端设备直接从第三方内容提供者(例如,从与提供第一方内容的服务器不同的域中的服务器)请求第三方内容项。其他文档包括标签,所述标签指令客户端设备调用与多个第三方内容提供者合作的中间服务以返回从一个或多个第三方内容提供者选择的第三方内容项。在一些情况下,第三方内容项被动态地选择用于在电子文档中呈现,并且为文档的给定服务选择的特定第三方内容项可能不同于为同一文档的其他服务选择的第三方内容项。


技术实现要素:

4.总的来说,本说明书中描述的主题的一个创新方面可以在包括以下操作的方法中体现:接收图像;确定数字水印被嵌入在图像的一部分中,其中所述数字水印不能被人类观察者在视觉上辨别,并且其中所述数字水印是使用编码器机器学习模型生成的;响应于确定数字水印嵌入在图像的所述部分中,获得在嵌入在图像的所述部分中的数字水印内编码的第一数据项,包括:使用失真检测器机器学习模型,预测图像的所述部分中相对于图像的所述部分的原始版本存在的一个或多个失真;基于预测的一个或多个失真修改图像的所述部分,同时保留嵌入在图像的所述部分中的数字水印;以及使用解码器机器学习模型对图像的修改后的部分进行解码,以获得在数字水印内编码的第一数据项,其中解码器机器学习模型和编码器机器学习模型作为端到端学习流水线的一部分被联合训练;以及基于第一数据项验证图像中描绘的项。
5.该方面的其他实施例包括对应的方法、装置和计算机程序,其被配置成执行该方法的动作,并被编码在计算机存储设备上。这些和其他实施例可以各自可选地包括一个或多个以下特征。
6.方法可以包括通过生成图像的分割图来确定数字水印嵌入在图像的一部分中,并且基于图像的分割图来标识嵌入了数字水印的图像部分。
7.方法可以包括通过确定缩放因子来预测图像的所述部分中存在的一个或多个失真,所述缩放因子指示图像的所述部分相对于图像的所述部分的原始版本已经经历的估计缩放水平;确定垂直失真因子,所述垂直失真因子指示所述图像相对于图像的所述部分的原始版本已经经历的垂直缩放;以及确定水平失真因子,所述水平失真因子指示所述图像
相对于图像的所述部分的原始版本已经经历的水平缩放。
8.方法可以包括基于预测的一个或多个失真来修改图像的所述部分,同时通过基于确定的缩放因子、水平失真因子和垂直失真因子来修改图像的所述部分来保留嵌入在图像的所述部分中的数字水印。
9.方法可以包括基于确定的缩放因子、水平失真因子和垂直失真因子,通过放大或缩小图像的所述部分以调整由缩放因子指示的图像的所述部分相对于图像的所述部分的原始版本已经经历的估计缩放水平来修改图像的所述部分;缩放图像的所述部分,以调整由垂直失真因子指示的所述图像相对于图像的所述部分的原始版本已经经历的垂直缩放;以及缩放图像的所述部分,以调整由水平失真因子指示的图像相对于图像的所述部分的原始版本已经经历的水平缩放。
10.方法可以包括解码器机器学习模型以包括解码器神经网络,所述解码器神经网络还可以包括第一多个神经网络层,所述第一多个神经网络层包括多个全连接卷积层和最大池化层;并且第一多个神经网络层之后是全连接卷积层和池化层。
11.方法还可以包括获得图像;获得第一数据项;使用编码器机器学习模型生成对第一数据项进行编码的第一数字水印,第一数据项作为输入被提供给所述编码器机器学习模型;平铺第一数字水印的两个或更多个实例,以生成第二数字水印;以及将第二数字水印与图像组合以获得带水印的图像。
12.方法可以包括独立于图像生成第一数字水印。
13.方法可以包括第一数字水印是大小为h
×
w的叠加图像,其中h表示叠加图像的高度,并且w表示叠加图像的宽度。
14.方法可以包括平铺第一数字水印的两个或更多个实例,包括放置第一水印的一个或多个实例,以生成包括第一水印的一个或多个重复图案的第二水印。
15.方法可以包括编码器机器学习模型是包括单个全连接卷积层的编码器神经网络。
16.方法可以包括通过使用阿尔法混合将第二数字水印与图像组合以获得带水印的图像,来将第二数字水印与图像组合以获得带水印的图像。
17.方法还可以包括使用解码器机器学习模型对带水印的图像进行解码,以获得嵌入在图像中的第二数字水印内编码的第一数据项,其中解码器机器学习模型和编码器机器学习模型作为端到端学习流水线的一部分被联合训练。
18.可以实现本说明书中描述的主题的特定实施例,以便实现一个或多个以下优点。视觉上察觉不到的水印,为简单起见也简称为“水印”或“数字水印”,可用于确定与第一方内容一起呈现(例如,在网站上、在流视频中或在本地应用中)的第三方内容的源。这些水印可以以比以前可能的更高效的方式被提取和解码。例如,本说明书中描述的水印提取和解码技术实现了编码器和解码器机器学习模型,它们被一起训练用于对水印进行编码和解码。这样使得使用简单的轻量级编码器机器学习模型和高效的解码器来快速生成水印,所述解码器被专门训练来对由编码器生成的水印进行解码,因此整体增加了水印系统的鲁棒性。
19.本文描述的技术包括初始水印检测过程,所述过程在试图对可能包含在其中的水印进行解码之前,检测输入数字内容(例如,图像)中水印的存在。是通过考虑到解码中所涉及的计算机资源,可以通过使用计算成本较低的检测过程(相对于解码过程)来过滤掉不包
括水印的整个内容或部分内容来减少所述计算机资源来推动的,从而节省了通过计算成本较高的解码过程来处理这种输入数字内容所需的时间和计算资源。换句话说,检测过程可以首先确定图像是否包括水印,而不是必须完全处理数字内容并尝试解码其中的水印,同时比执行解码过程使用更少的计算资源,并且所需的时间更少。以这种方式,在启动解码过程之前使用检测过程节省了计算资源,并且通过快速过滤掉不包括水印的全部或部分数字内容,使得能够更快地标识和分析实际上包括水印的数字内容,从而减少了这种操作原本所需要的计算资源。相比之下,仅依赖解码过程来检测和解码带水印图像的技术,或者不使用检测过程作为过滤机制的过程,计算成本更高。
20.本文讨论的检测和解码过程对于失真是不可知的,这意味着水印可以被检测和/或解码,而与输入图像中的失真无关。所述技术使用机器学习模型来检测输入图像中的任何失真,所述失真用于在对水印进行解码之前修改输入图像以减轻失真。这减少了解码时的任何错误预测,从而提供了更鲁棒和可靠的水印系统。
21.更具体地,本文讨论的技术可以用于检测和解码原始呈现的内容的再现中的水印(例如,在内容的图片或截屏中),并且原始呈现的内容被捕捉时的失真将从一个捕捉实例到另一个实例(例如,从一个图片到另一个图片)而变化。检测和/或解码输入图像(例如,再现,例如呈现在客户端设备上的内容图片)中的水印需要仅在水印的肯定检测之后预测一个或多个失真。因此,所公开的方法的实施方案是通过减少分析具有不同的相应缩放级别的图像以检测或解码水印所需的计算资源来推动的。
22.本文讨论的技术的其他优点包括检测和解码过程对于数字内容的数据是不可知的,这意味着水印可以被编码、检测和解码,而与被加水印的数字内容的数据或上下文无关。这允许预先生成水印和带水印的数字内容,从而显著减少编码时间。
23.本说明书中描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书,本主题的其他特征、方面和优点将变得显而易见。
附图说明
24.图1是用于向客户端设备传输具有带水印图像的电子文档的环境的框图。
25.图2a是使用编码器机器学习模型生成的示例第一水印的图示。
26.图2b是使用利用编码器机器学习模型生成的水印生成的示例第二水印的图示。
27.图3a是图像分析和解码器装置的框图。
28.图3b是具有unet架构的示例卷积神经网络的框图。
29.图4是用于联合训练编码器和解码器机器学习模型的示例过程的框图。
30.图5a是用于联合训练编码器机器学习模型和解码器机器学习模型作为端到端学习流水线的一部分的示例过程的流程图。
31.图5b是用于训练失真检测器机器学习模型的示例过程的流程图。
32.图6是用于将数字水印添加到源图像的示例过程的流程图。
33.图7是用于对带水印图像的水印进行解码的示例过程的流程图。
34.图8是示例计算机系统的框图。
具体实施方式
35.本说明书描述了用于检测和解码所捕捉的内容再现(例如,呈现在客户端设备上的内容的数字照片)中的视觉上可辨别的水印的系统、方法、设备和技术。虽然下面的描述针对视觉上可辨别的水印描述了水印检测,但是所述技术也可以应用于视觉上可感知的水印。视觉上可辨别的水印,为了简洁简称为“水印”,是半透明的,并且在正常观看条件下对于人类用户是视觉上可辨别的,使得水印可以嵌入内容中而不会降低内容的视觉质量。水印可以携带信息,诸如嵌入水印的图像源的标识符。例如,在互联网的场境中,当用户访问发布者的资产时,水印(除了其他信息之外)可以标识将内容放置在发布者的资产(例如,网站、视频流、视频游戏或移动应用)上的实体、服务器或服务。这样,当发布者的资产上呈现的内容再现(例如,内容的图片或截屏)被捕捉并提交用于验证时,水印可以被检测和解码以验证该内容实际上是否是由适当的实体、服务器或服务发布的。
36.如下面详细讨论的,水印的编码、检测和解码可以由机器学习模型来执行,所述机器学习模型被训练来生成、检测和解码水印,而与图像被捕捉时的任何失真无关。为此,机器学习模型被联合训练,使得机器学习模型能够检测和解码由训练过程中涉及的机器学习模型生成的水印。
37.图1是用于向客户端设备传输具有带水印图像的电子文档和数字组成部分的计算环境100(或简称为环境100)的框图。如图所示,计算环境100包括水印生成器110和图像分析和解码器装置118。环境100包括服务器系统102、客户端设备104和用于一个或多个内容提供者106a-n的计算系统。服务器系统102、客户端设备104和内容提供者106a-n通过诸如互联网或局域网(lan)的一个或多个网络连接。总的来说,客户端设备104被配置成生成对电子文档的请求并将其传输到服务器系统102。基于来自客户端设备104的请求,服务器系统102生成响应(例如,电子文档和数字组成部分)以返回给客户端设备104。给定的响应可以包括被配置成向客户端设备104的用户显示的内容,诸如源图像128a,其中源图像128a由内容提供者106a-n之一提供。服务器系统102可以用半透明的第二水印126来增强提供给客户端设备104的响应,第二水印126被安排成在客户端设备104处的响应文档的呈现中显示在源图像128a上。出于示例的目的,参考提供给客户端设备104的源图像128a-n来解释以下描述,但是应当理解,第二水印126可以叠加在各种其他类型的视觉内容上,包括本地应用内容、流式视频内容、视频游戏内容或其他视觉内容。还应当注意,服务器系统102可以将水印传递给一个或多个内容提供者106a-n,而不是用半透明的第二水印126来增强提供给客户端设备104的响应,其中内容提供者可以在将内容传输到客户端设备104以供呈现之前生成带水印的图像。
38.客户端设备104可以是被配置成向一个或多个人类用户呈现图像和其他内容的任何类型的计算设备。客户端设备104可以包括向服务器系统102发出请求并从服务器系统102接收响应的应用,诸如web浏览器应用。所述应用可以执行来自服务器系统102的响应,诸如网页代码或其他类型的文档文件,以向客户端设备104的一个或多个用户呈现该响应。在一些实施方案中,客户端设备104包括电子显示设备(例如,lcd或led屏幕、crt监视器、头戴式虚拟现实显示器、头戴式混合现实显示器),或者耦合到电子显示设备,所述电子显示设备向客户端设备104的一个或多个用户显示来自所渲染的响应的内容。显示的内容可以包括源图像128a和以基本透明的方式显示在源图像128a之上的一个或多个第二水印126,
例如通过使用诸如阿尔法混合的技术,阿尔法混合是合并两个图像的过程。在一些实施方案中,客户端设备104是笔记本计算机、智能手机、平板计算机、台式计算机、游戏控制台、个人数字助理、智能扬声器(例如,在语音控制下)、智能手表或另一种可穿戴设备。
39.在一些实施方案中,在对客户端设备104的响应中提供的源图像128a是第三方内容项,其例如不在由响应的第一方内容提供者提供的内容之中。例如,如果响应是网页,则网页的创建者可以在网页中包括槽,该槽被配置成由来自不同于网页创建者的第三方内容提供者(例如,图像库的提供者)的数字组成部分(例如,图像)填充。在另一示例中,第一方内容提供者可以直接链接到第三方源图像128a。客户端设备104可以直接从内容提供者106a-n之一的对应计算系统或者间接地经由中间服务请求源图像128a,所述中间服务诸如由服务器系统102或另一服务器系统提供的服务。服务器系统102可以被实施为位于一个或多个位置的一个或多个计算机。
40.服务器系统102可被配置成与内容提供者106a-n的计算系统通信,例如,以获得源图像128a来提供给客户端设备104。在这样的实施方案中,服务器系统102被配置成用源图像128a和要在电子文档中在源图像128a上显示的半透明水印来响应来自客户端设备104的请求。为了生成半透明水印,服务器系统102可以包括水印生成器110,水印生成器110继而可以包括编码器机器学习模型112,编码器机器学习模型112包括多个训练参数(编码器机器学习模型112的训练参考图4和图5来描述)。在生成半透明水印之后,服务器系统102可以传输源图像128a和半透明水印以及指导在客户端设备104上执行的应用将半透明水印叠加在源图像128a上的指令。
41.在一些实施方案中,服务器系统102被配置成用已经被加上水印的源图像128a来响应来自客户端设备104的请求。在这样的实施方案中,代替将源图像128a和半透明水印传输到客户端设备104(例如,使客户端设备104能够将半透明水印叠加在源图像128a上),服务器系统102可以通过将半透明水印叠加在源图像128a上来生成带水印的源图像(也称为编码图像130)。在生成编码图像130之后,将编码图像130传输到客户端设备104。在这样的实施方案中,可以由生成半透明水印的服务器系统102来实施水印生成器110,使得服务器系统102在响应来自客户端设备104的请求时可以访问半透明水印以生成编码图像130。
42.在又一实施方案中,内容提供者106a-n和服务器系统102可以独立地与客户端设备104通信,以分别传输源图像128a和半透明水印。在这样的实施方案中,内容提供者106a-n和服务器系统102可以相互通信,以验证与客户端设备104的同时(或接近同时)通信和将在客户端设备104处被加水印的源图像128a。客户端设备104在接收到源图像128a和半透明水印以及指导在客户端设备104上执行的应用将半透明水印叠加在源图像128a上的指令之后。
43.在又一实施方案中,内容提供者106a-n可以通过将半透明水印叠加在源图像128a上来生成编码图像130。在生成编码图像130之后,将编码图像130传输到客户端设备104。在这样的实施方案中,水印生成器110可以由生成半透明水印的内容提供者106a-n来实施,使得内容提供者106a-n在响应来自客户端设备104的请求时可以访问半透明水印以生成编码图像130。
44.编码器机器学习模型112在训练过程期间(如参考图4和图5进一步描述的)被配置成接收数据项(称为第一数据项122)作为输入,以生成对第一数据项122进行编码的数字水
印(称为第一水印124)。在一些实施方案中,编码器机器学习模型112可以是简单且轻量级的模型,诸如单个全连接卷积神经网络层。然而,应当注意,编码器机器学习模型可以包括多于一个卷积、池化或完全连接的层。还应当注意,编码器机器学习模型不一定是神经网络,而是取决于具体实施方案,它可以是任何种类的监督、非监督或强化学习模型。
45.在一些实施方案中,第一数据项122可以是标识特定内容提供者106的独特标识符(例如,可以是字母数字值)。第一数据项122可以附加地或替代地包括会话标识符(例如,可以是字母数字值),所述会话标识符独特地标识客户端设备104和服务器系统102之间的网络会话,在该会话期间,对来自客户端设备104的请求提供响应。第一数据项122可包括引用,所述引用标识提供给客户端设备104的特定源图像128a或与源图像128a相关联的信息(例如,指示内容提供者106a-n中的哪一个提供了提供给客户端设备104的特定源图像128a的信息,以及指示何时提供或请求源图像128a的时间戳)。
46.在一些实施方案中,服务器系统102还可以包括响应记录数据库,所述响应记录数据库存储与源图像128a的这种信息或为特定请求提供的响应相关的数据,以便使得详细信息可经由会话标识符或由第一数据项表示的其他信息来访问。响应记录数据库还可以将会话标识符与图像数据相关联,从而通过使用由第一数据项表示的会话标识符来查询数据库,使得图像数据可访问。服务器系统的用户然后可以使用第一数据项的会话标识符来标识例如源图像128a-n中的哪一个在什么时间以及从哪个内容提供者106a-n被提供给客户端设备104。
47.在一些实施方案中,第一水印124是表示第一数据项122的图像。第一水印124可以是矩阵型条形码或能够对第一数据项122进行编码的任何图案。根据像素的行数和列数,第一水印124可以具有预定义的大小。第一水印124中的每个像素可以对多个数据位进行编码,其中多个位的值由不同的颜色表示。例如,对二进制值“00”进行编码的像素可以是黑色的,而对二进制值“11”进行编码的像素可以是白色的。类似地,对二进制值

01’进行编码的像素可以是较浅的黑色(例如深灰色),而对二进制值

10’进行编码的像素可以是更浅的黑色(例如浅灰色)。在一些实施方案中,第一水印的最小编码单元实际上可能大于单个像素。但是为了这里描述的示例的目的,最小的编码单元被假设为单个像素。然而,应了解,本文中所描述的技术可扩展到最小编码单元是一组多个像素(例如,2
×
2或3
×
3的一组像素)的实施方案。参考图2a描绘和描述了由编码器机器学习模型112使用第一数据项122生成的示例第一水印124。
48.图2a描绘了可用作第一水印124的示例水印图案200,例如,用于本说明书中描述的技术的目的。在一些实施方案中,水印200具有固定的大小,例如,在这个示例中是32
×
64像素的大小,尽管也可以利用具有其他预定义大小的水印。可以使用第一数据项122来生成水印200,如参考图1所描述的(并且如参考图6进一步描述的)。水印图案200的区别特征是每个像素或像素组可以采用不同的颜色和相应颜色的深浅。例如,水印图案200可以包括白色或黑色的像素或像素组,其中不同的像素或像素组可以具有不同的白色或黑色深浅。该特征使得能够使用设定数量的像素或水印尺寸(相对于其他水印图案,诸如qr码)来提供更多数量的独特图案。
49.继续参考图1的讨论,在生成第一水印124之后,服务器系统102使用水印平铺装置114来联合第一水印124的多个实例以生成第二水印126。例如,水印平铺装置114可以通过
并排放置第一水印124的两个或更多个实例来生成第二水印126。参考图2b进一步解释示例性的第二水印126。
50.图2b描绘可充当第二水印的实例水印250,例如,出于本说明书中所描述的技术的目的。水印250具有64
×
128像素的大小,并且由水印平铺装置114通过将四个第一水印彼此相邻放置来生成。例如,水印250包括第一水印124的四个实例(255至258)。
51.回到图1,在一些实施方案中,服务器系统102生成响应以返回给客户端设备104,作为对客户端对电子文档的请求的回复。所述响应可以包括一个或多个内容项,包括第一方内容项和第三方内容项,它们共同形成诸如网页、应用界面、pdf、演示幻灯片或电子表格的电子文档。在一些实施方案中,响应包括指定如何排列和显示各种内容项的主文档。诸如超文本标记语言(html)页面的主文档可以指要在文档的呈现中显示的第一方内容项和第三方内容项。在一些实施方案中,服务器系统102被配置成向主文档添加计算机代码,所述计算机代码在执行响应时指令客户端设备104在源图像128a上显示第二水印126的一个或多个实例,例如,向源图像128a添加人类用户基本上可辨别的水印。客户端设备104处的渲染电子文档的应用可以使用阿尔法混合技术来根据指定的透明度将第二水印126叠加在源图像128a上,所述透明度指定了当第二水印126被叠加在源图像128a上时的不透明度级别。例如,服务器系统102可以添加代码,所述代码指导客户端设备104将源图像128a显示为电子文档中的第三方内容槽中的背景图像,并将第二水印126的一个或多个实例显示为图像128a上的前景图像。在一些实施方案中,在服务器系统102被配置成用带水印图像130响应来自客户端装置104的请求的情况下,由服务器102执行将第二水印126叠加在源图像128a上的阿尔法混合技术。类似地,如果任何其他实体(例如,内容提供者106)被配置成用带水印图像130来响应来自客户端设备104的请求,则由所述实体执行将第二水印126叠加在源图像128a上的阿尔法混合技术。
52.在一些实施方案中,诸如生成带水印的图像130的客户端设备104之类的实体将sigmoid函数应用于第二水印126的每个像素强度值,以在将第二水印叠加在源图像128a上之前将强度值约束为[0,1]。这可以用下面的等式来表示
[0053]im
=sigmoid(wem0+be)
[0054]
其中im是第二水印126,m0是数据项,we和be是编码器机器学习模型112的权重和偏差。
[0055]
在一些实施方案中,如果第二水印126大于源图像128a的大小,则基于预定义的规则裁剪第二水印126。举例来说,预定义规则可规定第二水印126可从右下方裁剪,以便将第二水印126的大小调整为源图像128a的大小。
[0056]
在一些实施方案中,为了减小第二水印126的文件大小,也可以基于恒定的颜色向量c∈r3调整第二水印126的每个像素,从而产生调整后的水印im′
。这可以表示为
[0057]i′m=repeat(im.c)
[0058]
在一些实施方案中,根据指定的透明度将第二水印126叠加在源图像128a上的阿尔法混合技术可以表示为
[0059]iw
=(1-α)*io+α*i
′m[0060]
其中iw是编码图像130,并且α是指定的透明度,该透明度是当叠加在源图像128a上时第二水印126的不透明度度量的度量。
[0061]
在可能有数百万图像(和其他视觉内容)被分发给许多不同的客户端设备104的环境中,可能存在服务器系统102需要确定图像(或其他视觉内容)的提供者或来源、图像(或其他视觉内容)的其他特性、或关于图像(或其他视觉内容)的特定印象(例如,呈现)的上下文的情况。
[0062]
例如,响应于对电子文档的请求,客户端设备104的用户可以从内容提供者106a-n之一接收到不合适或不相关的图像128a。用户可以捕捉编码图像130(例如,呈现在客户端设备104处的图像或其他内容的再现)的截屏并将截屏传输到服务器系统102用于分析,例如,询问源图像128a的来源。因为截屏示出了被水印图像126叠加的原始图像128a,所以服务器系统102可以处理截屏以从图像中包括的数字水印中恢复第一数据项。系统102然后可以将恢复的第一数据项用于各种目的,例如,查询响应记录数据库以查找关于图像128a及其来源的详细信息,或者关于源图像128a被提供给客户端设备104的特定客户端会话的其他信息。
[0063]
在一些实施方案中,为了从编码的源图像130中检测和解码第一数据项122的编码表示,服务器系统102可以包括图像分析和解码器装置118。如上所述,在一些实施方案中,编码的源图像130是由客户端设备104在源图像128a上渲染第二水印126而产生的图像。即使第二水印126与源图像128a是分离的,由图像分析和解码器装置118处理的编码源图像130也可以是显示第二水印126混合在源图像128a上的合并图像。编码源图像130可以被输入到图像分析和解码器装置118,所述装置检测和/或解码存在于编码源图像130中的水印。输入到图像分析和解码器装置118的编码源图像130可以是在客户端设备104处提供的实际编码源图像130,或者它可以是该图像(如上所述,它是通过将第二水印126与源图像128a合并/混合而生成的图像)的呈现的再现(例如,截屏或其他数字捕捉)。这样,原始源图像128a和原始第二水印126可以不提交给图像分析和解码器装置118进行分析。
[0064]
在一些情况下,包括图像分析和解码器装置118的服务器系统102可以接收分析可能编码/带水印的图像的请求。如此处所使用的,术语“可能”指的是可归因于项的该项的状况,但是该项的状况对于处理项的处理实体(例如,服务器系统102)来说是未知的。也就是说,项的可能状况是处理实体不知道其真实性的项的候选状况。处理实体可以执行处理以标识项的可能(候选)状况,预测可能(候选)状况的真实性,和/或标识展现特定状况的可能(候选)项。例如,可能编码的源图像是可能用水印编码的源图像,但是服务器系统102最初不知道该图像是否实际上已经被加了水印。因此,可能用水印编码的编码源图像130是编码源图像130的候选状况,并且编码源图像130是展现用水印编码的候选状况的候选项。可能编码的图像可以由用户捕捉图像的截屏(或另一数字再现,如数字照片)并将捕捉的图像提供给服务器系统102进行分析而产生,但是没有更多信息指示图像是否已被编码/加水印。
[0065]
在服务器系统102接收到分析可能编码的(加水印的)源图像的请求的这些情况下,图像分析和解码器装置118使用水印和失真检测装置132来分析接收到的图像,水印和失真检测装置132可以实施一个或多个机器学习模型,例如用于检测可能编码的源图像是否可能包含水印的水印检测器机器学习模型134a,以及用于检测当与提供给客户端设备104的编码源图像130相比较时可能编码的源图像中的可能失真的失真检测器机器学习模型134b。参考图3a进一步描述这些机器学习模型中的每一个。为简洁起见,可能编码的源图像也可以称为可能编码的图像。
[0066]
如果水印和失真检测装置132在可能编码的源图像的一部分中检测到视觉上可辨别的水印以及可能编码的源图像的一个或多个失真,则图像分析和解码器装置118可以修改可能编码的源图像的所述部分以去除任何失真。在消除失真之后,在图像分析和解码器装置118中实施的水印解码器134试图对可能编码的图像中检测到数字水印的部分/区域进行解码。如参考其他附图进一步详细解释的,水印解码器134可以实施一个或多个机器学习模型(称为解码器机器学习模型),其被配置成处理可能编码的图像的可能编码的区域和可能编码的图像的特征,以预测可能编码的图像的水印状态。图像分析和解码器装置118还可以包括缩放装置138和验证装置140,这将在下面更详细地讨论。图像分析和解码器装置118以及任何子系统可以在实施服务器系统102的一个或多个位置中的一个或多个计算机上实施。
[0067]
水印生成器110、水印和失真检测装置132以及水印解码器134可以由单个实体或不同的实体来实施。例如,客户端设备104可以包括水印和失真检测装置132,使得在生成和传输分析可能编码的图像的请求之前,客户端设备104可以检测水印和/或失真在所捕捉的可能编码的图像中的存在。在另一个示例中,客户端设备104可以包括水印和失真检测装置132以及水印解码器134两者,使得客户端设备104可以检测和解码可能编码的图像中存在的水印。在另一个示例中,水印生成器110可以由内容提供者106a-n实施,使得内容提供者106a-n可以在响应来自客户端设备104的请求时生成编码图像130。
[0068]
图3a是示例图像分析和解码器装置118的框图300,该图像分析和解码器装置118检测并解码作为输入提供给图像分析和解码器装置118的可能编码的图像302,以获得编码在包括在可能编码的图像302中的数字水印内的预测的第一数据项。
[0069]
可能编码的图像302可以是呈现在客户端设备上的图像的截屏或数字照片的形式。例如,可能编码的图像302可以是发布者网站上呈现的图像的屏幕捕捉。更具体地,可能编码的图像302可能已经被访问发布者的网站的用户捕捉,然后由用户提交以报告所述图像的呈现(例如,为不适当)。图像分析和解码器装置118可以包括水印和失真检测装置132、水印解码器134和验证装置140中的一个或多个。
[0070]
在一些实施方案中,水印和失真检测装置132可以实施水印检测器机器学习模型132a,其被配置成处理可能编码的图像302,并且生成可能编码的图像302的一部分是否包括一个或多个水印的指示作为输出。水印检测器机器学习模型132a可以是被认为适合于诸如决策树、人工神经网络、基因编程、逻辑编程、支持向量机、聚类、强化学习、贝叶斯推断等特定实施方案的任何模型。机器学习模型还可以包括用于分析图像的计算机视觉和图像处理的方法、算法和技术。在这样的实施方案中,可能编码的图像302是否包括一部分水印或一个或多个水印的指示可以是分类或数字的形式,诸如分数或概率。例如,水印检测器机器学习模型132a可以被实施为分类模型,所述分类模型可以处理可能编码的图像302以将该图像分类为包括水印的图像或不包括水印的图像。在另一示例中,水印检测器机器学习模型132a可以处理可能编码的图像302以生成分数,诸如指示可能编码的图像302包括水印的可能性的分数。
[0071]
在一些实施方案中,水印和失真检测装置132可以实施水印检测器机器学习模型132a,以执行语义图像分割并生成标识被加水印的一组编码像素的分割掩码。语义图像分割是将图像的每个像素分类为一个或多个类别的过程。例如,水印检测器机器学习模型
132a可以处理可能编码的图像302,以将可能编码的图像302的每个像素分类成多个类别(例如,第一类别和第二类别)。在每个像素被分为第一类别和第二类别的实施方案中,第一类别对应于使用第二水印126混合的图像302的像素,并且第二类别对应于没有使用第二水印126混合的图像302的像素。水印检测器机器学习模型132a基于可能编码的图像302的像素特性对像素进行分类。例如,被分类为第一类别的像素(即,使用第二水印编码的像素)即使人眼在视觉上不可分辨,但对于水印检测器机器学习模型132a来说是可分辨的。例如,32位rgb像素包括用于每个颜色通道(例如,红色(r)、绿色(g)和蓝色(b))的8位,以及用于透明度的“阿尔法”通道。这种格式可以支持可由计算系统标识的4,294,967,296种颜色组合,即使这些组合的一部分对于人眼来说是不可分辨的。
[0072]
基于分类的像素,水印检测器机器学习模型132a生成分割掩码作为输出,所述分割掩码标识该组被加水印的编码像素(例如,被分类在第一类别中的该组像素对应于包括水印的一部分/用水印的一部分编码的像素)。例如,在将可能编码的图像302的像素分类为第一类别和第二类别之后,水印检测器机器学习模型132a可以通过将与像素被分配到的类别有关的标签分配给像素来生成分割掩模。例如,水印检测器机器学习模型132a接收尺寸为1000
×
1000
×
3的可能编码的图像302(例如,来自客户端设备104的截屏)作为输入,其中尺寸是指可能编码的源图像302的长度、宽度和通道数。水印检测器机器学习模型132a生成尺寸为1000
×
1000
×
1的分割掩码作为输出,其中分割掩码的每个值对应于分配给可能编码的图像302的相应像素的标签。例如,如果可能编码的图像302的像素被分类为第一类别,则可以给它分配标签“1”,如果该像素被分类为第二类别,则可以给它分配标签“0”。在这个示例中,通过处理可能编码的图像302,由水印检测器机器学习模型132a生成分割掩模310。如图3a所示,分割掩模310包括包含被分类为第一类别的像素的两个部分310a和310b,以及包含被分类为第二类别的像素的第三部分310c。如图3a所示,可能编码的图像302包括在可能编码的图像302的两个不同区域中的两个水印126a和126b。使用可能编码的图像302作为输入,水印检测器机器学习模型132a输出分割掩码310,其标识包括水印126a和126b的可能编码的图像302的部分。当检测到水印时,可能编码的图像302可以由水印解码器134处理,如下面详细讨论的。
[0073]
在另一个示例中,水印检测器机器学习模型132a可以为水印检测器机器学习模型132a的每个类别生成分割掩码。例如,水印检测器机器学习模型132a可以生成尺寸为1000
×
1000
×
numclass的分割掩码,其中numclass=2是水印检测器机器学习模型132a的类别的数量。在这个示例中,分割掩模可以被解释为两个1000
×
1000的矩阵,其中第一矩阵可以标识属于第一类别的可能编码的图像302的像素,并且第二矩阵可以标识属于第二类别的可能编码的图像302的像素。在这种情况下,使用标签“0”和“1”来指示像素是否属于特定类别。例如,可能编码的图像302的对应像素被分类为第一类别的第一矩阵的值具有标签“1”,而对应像素被分类为第二类别的元素具有标签“0”。类似地,第二矩阵的值——可能编码的图像302的对应像素被分类为第二类别的元素——具有标签“1”,而对应像素被分类为第一类别的元素具有标签“0”。参考图3b进一步解释了具有unet架构的深度卷积神经网络(cnn),其可以用作水印检测器机器学习模型132a。
[0074]
图3b是示例架构水印检测器机器学习模型350的框图。水印检测器机器学习模型350是具有unet架构的cnn。水印检测器机器学习模型350包括编码器块360、365和370以及
解码器块375、380和385。注意,编码器块360、365和370以及解码器块375、380和385不同于编码器和解码器机器学习模型。cnn 350的编码器块360、365和370包括卷积层,其后是一个或多个最大池化层。例如,编码器块可以包括执行3
×
3卷积的卷积层,其后是执行2
×
2最大池化操作的最大池化层。在一些实施方案中,编码器块可以是预训练的分类网络,如vgg网络。解码器块375、380和385可以包括卷积层,其后是上采样层。例如,解码器块可以包括执行3
×
3卷积的卷积层,其后是上采样层,所述上采样层之后每个块的输入被附加了来自编码器块的特征图。
[0075]
cnn 350被配置成接收诸如可能编码的源图像302的图像作为输入,并基于cnn 350的训练生成标识不同图像片段的分类的分割掩码作为输出。例如,cnn 350生成尺寸为1000
×
1000
×
1的分割掩模390作为输出,其中分割掩模的每个值对应于分配给可能编码的图像302的相应像素的标签。例如,如果可能编码的图像302的像素被分类为第一类别,则可以给它分配标签“1”,如果该像素被分类为第二类别,则可以给它分配标签“0”。如图3a所示,分割掩模310包括包含被分类为第一类别的像素的两个部分310a和310b,以及包含被分类为第二类别的像素的第三部分310c。
[0076]
在一些实施方案中,使用训练过程在训练数据集(称为检测器模型训练数据集)上训练水印检测器机器学习模型132a,该训练过程可以调整多个训练参数以生成可能编码的图像302是否包括一个或多个水印的指示。检测器模型训练数据集可以包括多个训练样本,其中每个训练样本包括被加水印的训练图像和标识使用水印编码的训练图像的像素的目标。例如,训练图像可以是类似于来自客户端设备104的截屏的图像,其在训练图像的一个或多个区域中包括水印。对应于训练图像的目标可以包括标识带水印或不带水印的像素或者在某些情况下带水印和不带水印两者的像素的分割掩模。
[0077]
为了增强水印检测器机器学习模型132a的泛化潜力,训练过程可以使用失真装置来扩充检测器模型训练数据集,所述失真装置例如使用检测器模型训练数据集的现有训练样本来生成新的失真训练样本。为了生成新的训练样本,训练过程可以使一组训练图像中的图像失真,以创建失真图像。在一些实施方案中,可以通过应用在真实世界视觉数据中广泛出现的视觉扰动以及将图像与其他背景图像拼接等来生成失真图像,所述视觉扰动诸如水平和垂直翻转、平移、旋转、裁剪、缩放、颜色失真、添加随机噪声、水平和垂直缩放。训练过程还可以通过使用有损压缩或变换技术将训练图像编码成不同的文件格式来生成新的训练样本。例如,训练过程可以使用jpeg压缩来在训练图像中引入小的伪影,并且在压缩之后生成的训练图像可以用于扩充检测器模型训练数据集。
[0078]
在训练期间,训练过程可以使用诸如交叉熵损失的损失函数来调整水印检测器机器学习模型132a的各种参数。例如,逐像素交叉熵损失可以单独检查每个像素,以将类别预测与像素的目标类别进行比较,并相应地调整水印检测器机器学习模型132a的参数。训练过程本质上可以是迭代的,使得在每次迭代期间,训练过程旨在最小化交叉熵损失,例如,直到损失小于指定阈值或者直到训练过程已经执行了指定次数的迭代。交叉熵损失可以采取以下形式
[0079]
l=-(yloglog(p)+(1-y)log(1-p))
[0080]
其中y是像素的目标标签,p是该像素属于第一类别的预测可能性。其他损失函数的示例可以包括加权交叉熵损失、焦点损失、灵敏度-特异性损失、戴斯损失(dice loss)、
边界损失、豪斯多夫距离(hausdorff distance)损失或者可以计算为两种或更多种不同类型损失的平均值的复合损失。
[0081]
在一些实施方案中,水印和失真检测装置132可以实施失真检测器机器学习模型132b,所述模型可以被配置成处理可能编码的图像302,以生成可能编码的图像302相对于源图像128a已经经历的一个或多个失真的指示作为输出。例如,通过处理可能编码的图像302,失真检测器机器学习模型132b可以生成垂直缩放、水平缩放和图像偏移的指示作为输出。垂直和水平缩放是分别指示可能编码的图像302相对于源图像128a的长度和宽度变化的失真。诸如缩放的其他类型的失真可以从预测的水平和垂直缩放生成。
[0082]
在一些实施方案中,水印和失真检测装置132可以实施失真机器学习模型132b,所述模型可以被配置成仅处理可能编码的图像302的包括一个或多个水印的部分,以生成可能编码的图像302的所述部分相对于源图像128a的相应部分已经经历的一个或多个失真的指示作为输出。例如,通过处理可能编码的图像302的部分,失真检测器机器学习模型132b还可以生成垂直和水平缩放的指示作为输出,其中垂直和水平缩放是分别指示可能编码的图像302的部分相对于源图像128a的部分的长度和宽度的变化的失真。
[0083]
在一些实施方案中,失真检测器机器学习模型132b可以是具有unet架构的cnn,其被训练来处理可能编码的图像302的部分,以生成可能编码的图像302的部分的一个或多个失真的指示作为输出。使用训练过程在训练数据集(称为失真模型训练数据集)上训练失真机器学习模型132b,所述训练过程可以调整多个训练参数以生成可能编码的图像302的部分中的一个或多个失真的指示。失真模型训练数据集可以包括多个训练样本,其中每个训练样本包括带水印的训练图像。例如,带水印的训练图像可以是类似于通过在源图像128a上叠加第二水印126而生成的带水印图像130的图像。
[0084]
在一些实施方案中,失真检测器机器学习模型132b可以被训练成检测可能编码的图像302或可能编码的图像302的一部分中的失真,所述可能编码的图像302由经过训练的编码器机器学习模型112具体编码。换句话说,失真检测器机器学习模型132b被微调以检测使用特定编码器机器学习模型112编码的图像中的失真。在这样的实施方案中,检测器模型训练数据集可以包括没有被加水印的训练图像。在训练编码器机器学习模型112之后,编码器机器学习模型112的参数是固定的,然后用于给检测器模型训练数据集中的每个训练图像加水印,以生成相应的带水印的训练图像。
[0085]
在一些实施方案中,在训练失真机器学习模型132b时,训练过程可以使来自失真模型训练数据集的带水印的训练图像失真,以生成失真的带水印的训练图像。例如,在训练过程的每次迭代期间,来自失真模型训练数据集的带水印的训练图像可以基于随机水平缩放因子、随机垂直缩放因子和随机图像偏移而失真。然后,训练过程将失真的带水印的训练图像和带水印的训练图像作为输入提供给失真检测器机器学习模型132b,以生成指示失真的带水印的训练图像和带水印的训练图像中的一个或多个失真的一个或多个输出。例如,在从带水印的训练图像生成失真的带水印的训练图像之后,训练过程可以将带水印的训练图像作为输入提供给失真检测器机器学习模型132b,以生成图案(称为通用图案)。类似地,训练过程可以将失真的带水印的训练图像作为输入提供给失真检测器机器学习模型132b,并且生成另一图案(称为变换的图案)作为输出。
[0086]
在一些实施方案中,通用图案和变换的图案可以是使用一对周期信号生成的网格
图案,所述一对周期信号进一步在带水印的训练图像和失真的带水印的训练图像上生成一对水平线和垂直线。在这样的实施方案中,信号的峰值对应于叠加在源图像128a上时第二水印126的中心的x和y坐标。
[0087]
在生成通用图案和变换的图案之后,训练过程比较这两个图案,以使用损失函数(例如,l2损失)计算第三误差值。注意,第三误差值是添加到带水印的训练图像的失真的预测测量。第三误差值有时可以采取||t(u0)-u1||2的形式,其中t指的是通过添加一个或多个失真对带水印的训练图像的变换,u0是通用图案并且u1是变换的图案。然后,训练过程可以使用第三误差值来调整失真检测器机器学习模型132b的各种参数。训练过程本质上可以是迭代的,使得在每次迭代期间,训练过程旨在最小化l2损失,例如,直到损失小于指定阈值或者直到训练过程已经执行了指定次数的迭代。
[0088]
在一些实施方案中,水印检测器机器学习模型132a和失真机器学习模型132b可以被实施为单个机器学习模型。在一个这样的示例实施方案中,单个机器学习模型可以在两个阶段中处理信息,使得在第一阶段期间,单个机器学习模型可以处理可能编码的图像302,以确定可能编码的图像302的一部分包括一个或多个水印。例如,通过处理可能编码的图像302并生成标识可能编码的图像302的包括一个或多个水印的部分的相应分割掩模。在第二阶段期间,单个机器学习模型可以处理可能编码的图像302的包括一个或多个水印的部分,以生成可能编码的图像302的部分已经经历的失真的指示。
[0089]
在水印检测器机器学习模型132a和失真机器学习模型132b可被实施为单个机器学习模型的另一示例实施方案中,所述单个机器学习模型可被配置成处理可能编码的图像302并生成三个输出,其中第一输出是标识可能编码的图像302的部分的分割掩码,第二输出是预测的垂直缩放,第三输出是预测的水平缩放。
[0090]
在一些实施方案中,图像分析和解码器装置118可以响应于水印检测装置132不能检测和/或提取被加水印的可能编码的图像302的整个区域,生成可能编码的图像302的缩放版本。例如,假设分割掩模只生成一部分水印区域。在这种情况下,由于信息不完整,水印解码器134将不能对水印进行解码。在这种情况下,图像分析和解码器装置118可以生成可能编码的图像302的缩放版本,并且检查是否可以在解码之前标识可能编码的图像302的被加水印的整个区域。
[0091]
在一些实施方案中,在检测机器学习模型132a已经成功确定可能编码的图像302中存在水印之后,水印和失真检测装置132可以处理可能编码的图像302的所述部分。
[0092]
在一些实施方案中,在检测和确定可能编码的图像302的一部分包括一个或多个水印之后,图像分析和解码器装置118可以基于由失真检测器机器学习模型预测的失真来修改图像的所述部分,以生成可能编码的图像302的与源图像130相似或接近相似的修改后的部分。例如,在使用水印检测器机器学习模型132a确定可能编码的图像302上存在水印之后,图像分析和解码器装置118可以获得包括一个或多个水印的可能编码的图像302的一部分。响应于对一个或多个水印存在的肯定确定,图像分析和解码器装置还可以生成一个或多个预测,所述预测指示可能编码的图像302经历的不同失真。例如,假设失真检测器机器学习模型132b预测可能编码的图像302已经经历了2x垂直缩放。响应于这样的预测,图像分析和解码器装置118可以修改可能编码的图像的所述部分,以生成具有垂直缩放因子1/2的修改后的版本,从而减轻可能编码的图像302经历的任何失真。
[0093]
类似地,如果失真检测器机器学习模型132b预测可能编码的图像302已经经历了垂直和/或水平缩放(使用垂直和水平缩放因子来标识),则图像分析和解码器装置118可以通过缩放可能编码的图像302的所述部分来修改可能编码的图像302的所述部分,以生成修改后的版本。通过相同的垂直和/或水平缩放因子来缩放修改后的版本,从而减轻可能编码的图像302经历的任何垂直和/或水平失真。
[0094]
为了对在可能编码的图像302中检测到的水印进行解码,图像分析和解码器装置包括水印解码器134。在一些实施方案中,水印解码器134可以实施解码器机器学习模型134a,所述机器学习模型被配置成处理可能编码的图像302的修改后的部分,并生成预测的第一数据项作为输出。解码器机器学习模型134a可以是被认为适合于诸如决策树、人工神经网络、基因编程、逻辑编程、支持向量机、聚类、强化学习、贝叶斯推断等特定实施方案的任何模型。机器学习模型还可以包括用于分析图像的计算机视觉和图像处理的方法、算法和技术。在一些实施方案中,解码器机器学习模型134a可以是具有unet架构的深度卷积神经网络(cnn),其被训练来预测所预测的第一数据项。解码器机器学习模型134a可以包括可以被调整以生成预测(例如,预测的第一数据项)的多个训练参数。
[0095]
在一些实施方案中,在通过处理可能编码的图像302生成预测的第一数据项之后,图像分析和解码器装置118可以使用预测的第一数据项来验证可能编码的图像302的真实性(或来源)。为了验证真实性(或来源),在服务器系统102内实施的验证装置140可以将预测的第一数据项与存储在响应记录数据库120中的第一数据项进行比较。如果发现匹配(例如,精确匹配),则验证装置140可以断定呈现在客户端设备104上的源图像128a实际上是由服务器系统102或内容提供者106a-b提供的。如果不存在匹配,则验证装置140可以断定呈现在客户端设备104上的源图像128a不是由服务器系统102或内容提供者106a-b提供的。
[0096]
图4是训练过程400的框图,作为端到端学习流水线的一部分,训练过程400联合训练编码器机器学习模型和解码器机器学习模型,所述编码器机器学习模型生成要包括在数字组成部分中的数字水印,所述解码器机器学习模型对数字组成部分数字水印进行解码以获得在数字水印中编码的数据项。训练过程的操作例如由系统执行,例如包括编码器机器学习模型112和解码器机器学习模型134a的图1的系统。过程400的操作也可以被实施为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使得一个或多个数据处理装置执行过程400的操作。训练过程400是迭代过程,其中使用步骤a至e来解释过程400的每次迭代。训练过程在达到如下所述的终止标准之后终止。
[0097]
在一些实施方案中,使用训练过程在训练数据集(称为端到端训练数据集)上训练编码器和解码器机器学习模型,所述训练过程可以调整编码器和解码器机器学习模型的多个训练参数,以通过处理带水印的数字组成部分(例如,可能编码的图像302)来生成预测的第一数据项,其中叠加在带水印图像中的水印是使用第一数据项编码的。换句话说,联合训练过程旨在使编码器机器学习模型将第一数据项编码成数字水印图案,然后所述数字水印图案被叠加在数字组成部分上,并使解码器机器学习模型对带水印的数字组成部分进行解码,以输出与第一数据项相同的预测的第一数据项。
[0098]
端到端训练数据集可以包括多个训练图像(或其他类型的数字组成部分)和多个第一数据项。例如,训练图像可以是类似于提供给客户端设备104的第三方内容的源图像
128a-n的图像,并且第一数据项可以是编码器机器学习模型112处理以生成用于给训练图像加水印的第二水印的第一数据项。
[0099]
在训练期间,多个数据项中的每个第一数据项被编码器机器学习模型编码成数字水印,然后所述数字水印被叠加到特定的训练图像(来自多个训练图像)上,以获得相应的带水印的训练图像(出于图4的目的也简称为带水印图像)和第一误差值(称为损失1 425)。这些带水印图像由解码器机器学习模型处理,以生成每个相应带水印的图像的预测的第一数据项和相应的第二误差值(称为损失2 460)。注意,每个相应的带水印图像具有用于生成相应带水印图像的水印的相应第一数据项。根据损失1 425和损失2 460,调整编码器和解码器机器学习模型的可学习参数。下面进一步描述训练过程400,并且为了简洁和便于解释,参考训练图像420和用于生成数字水印的第一数据项410来解释训练过程400。
[0100]
在训练过程400的特定迭代的步骤a期间,编码器机器学习模型112处理第一数据项410以生成第一水印。尽管图4中未示出,但是水印平铺装置114可以使用第一水印来生成第二水印,所述第二水印例如是第一水印的平铺版本(如参考图2a和图2b所示和所述)。在一些实施方案中,第二水印可以经历额外的处理,诸如例如裁剪第二水印,使得它具有与训练图像420相同的大小(即,相同的尺寸)。第二水印也可以经历如参考图3a所讨论的诸如像素强度和透明度的调整的处理。一旦第二水印被最终确定,通过将第二水印与训练图像420重叠(例如,如上所述,使用阿尔法混合)来生成带水印的训练图像430。
[0101]
在步骤b期间,基于训练图像420和带水印的训练图像430计算损失1 425,其指示训练图像420和带水印的训练图像430之间的差异。例如,诸如绝对误差函数之类的每像素损失函数可以用于在像素级别上计算图像420和430之间的差异。其他误差函数可以包括感知损失函数,诸如均方误差(l2)。
[0102]
在步骤c期间,失真装置440(例如,参考图3描述的失真装置)可以处理带水印的训练图像430,以生成一个或多个失真图像450。失真图像450是通过添加一个或多个失真(诸如垂直和水平缩放、裁剪)来生成的,以模拟可能编码的图像302可能经历的真实世界图像改变。例如,失真装置440可以通过应用随机的水平和垂直失真因子来使带水印的训练图像430失真。
[0103]
尽管没有用作示例,但是应当注意,失真装置440可以生成同一图像的多个不同的失真版本,这些版本可以用于对图像的失真版本中的水印进行解码,这提高了解码器机器学习模型134a的通用性。例如,在给定特定的带水印的训练图像430的情况下,失真装置440可以生成多个不同版本的失真图像450,解码器机器学习模型134a稍后可以使用所述失真图像450来提高其对不同类型失真的通用性。
[0104]
在步骤d期间,将失真图像450的一部分作为输入提供给解码器机器学习模型134a。在一些实施方案中,尽管图4中未示出,但是在将失真图像450提供给解码器机器学习模型134a之前,可以使用水印和失真检测装置132来处理失真图像450,如参考图3a所解释的。在这样的实施方案中,水印和失真检测装置132可以处理失真图像450,以标识失真图像450中包括水印的部分(如参考图3a所述)。在一些实施方案中,失真图像450的所标识部分可以被进一步处理以生成失真图像450的修改后的部分,其中所述处理可以包括减轻带水印的训练图像430经历的任何失真。解码器机器学习模型134a处理失真图像450的所标识部分或失真图像450的修改后的部分,以生成包括在图像中的预测的第一数据项460。
[0105]
在步骤e期间,基于预测的第一数据项460和目标第一数据项410来计算第二误差值(称为损失2460),所述第二误差值指示用于为图像加水印的第一数据项的预测值和实际值之间的差异。例如,损失2可以是sigmoid交叉熵损失。
[0106]
在计算损失1425和损失2470之后,可以调整编码器机器学习模型112和解码器机器学习模型134a的可学习参数,以最小化总损失(即损失1+损失2)或单独的损失1和损失2值。总损失可表示如下
[0107]
total loss=||i
w-io||2+crossentropy(md,mo)
[0108]
其中iw是带水印的训练图像430,io是训练图像420,md是预测的第一数据项460,并且mo是目标第一数据项410。也就是说,损失值的幅度指示预测与真实值有多远(例如,预测的第一数据项460和目标第一数据项410之间的差异),并且损失值的符号指示可学习参数必须被调整的方向。注意,损失1 425和损失2 470可以被视为两个竞争目标。例如,损失1 425的目标是尽可能少地改变训练图像,而损失2470的目标是使解码尽可能准确。用同一训练图像来训练编码器和解码器机器学习模型两者平衡两个损失函数。
[0109]
如前所述,训练过程400是在端到端训练数据集的训练样本上迭代的迭代过程。当达到终止标准时,训练过程400终止。例如,当在步骤b和e期间计算的损失值低于指定阈值时,训练过程400可以终止。例如,如果总误差的指定阈值被设置为0.1,则训练过程将在训练图像上继续迭代,直到损失1+损失2的值》0.1。在另一个示例中,训练过程400可以在指定次数的迭代(例如,10,000次迭代)之后终止。
[0110]
图5a是作为端到端学习流水线的一部分来联合训练编码器机器学习模型和解码器机器学习模型的示例过程的流程图。过程500的操作可以例如由包括图像分析和解码器装置118的服务器系统102来实施。过程500的操作也可以被实施为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使得一个或多个数据处理装置执行过程500的操作。
[0111]
训练过程500的操作在端到端训练数据集的训练样本上迭代。当达到终止标准时,训练过程500终止。例如,当总损失低于指定阈值时,训练过程500可以终止。例如,如果总损失的指定阈值被设置为0.1,则训练过程将继续在训练图像上迭代,直到总损失的值《=0.1。在另一个示例中,训练过程500可以在指定次数的迭代(例如,10,000次迭代)之后终止。
[0112]
服务器系统102获得多个训练图像和多个数据项(505)。例如,端到端训练数据集可用于训练编码器和解码器机器学习模型。端到端训练数据集可以包括多个训练图像和多个第一数据项。例如,训练图像可以是类似于提供给客户端设备104的第三方内容的源图像128a-n的图像,并且第一数据项可以是编码器机器学习模型112处理以生成用于给训练图像加水印的第二水印的第一数据项。
[0113]
服务器系统102使用编码器机器学习模型生成第一数字水印(510)。例如,在服务器系统102的水印生成器110内实施的编码器机器学习模型112对第一数据项410进行编码以生成第一水印(如参考图2a所示和所述)。
[0114]
服务器系统102使用平铺装置生成第二数字水印(515)。例如,在生成第一水印之后,服务器系统102使用水印平铺装置114来联合第一水印的多个实例,以生成第二水印,例如,第一水印的平铺版本(如参考图2b所示和所述)。第二水印还可以经历诸如裁剪之类的
处理(如参考图2b和图3a所讨论的)。
[0115]
服务器系统102将第二数字水印与训练图像组合,以获得带水印图像(520)。如参考图4所描述的,服务器系统102可以使用比如阿尔法混合的技术来组合第二水印和训练图像420,从而给训练图像420加水印以生成带水印的训练图像430。
[0116]
服务器系统102对带水印图像应用失真(525)。如参考图4所述,失真装置440可以处理带水印的训练图像430,以生成一个或多个失真图像450。通过添加诸如垂直和水平缩放、与其他背景图像的拼接、jpeg压缩、裁剪的一个或多个失真以模拟图3中可能编码的图像302可能经历的真实世界图像改变,来生成失真图像450。例如,失真装置440可以基于随机垂直比例因子来使带水印的训练图像430失真。
[0117]
服务器系统102使用失真检测器机器学习模型来预测失真(530)。如参考图4所述,失真检测器机器学习模型132b处理失真的带水印的训练图像430,以生成一个或多个预测失真。例如,通过处理失真的带水印的训练图像430,失真检测器机器学习模型132b可以生成预测的垂直缩放因子作为输出,所述预测的垂直缩放因子指示失真的带水印的训练图像430相对于训练图像420的估计垂直缩放水平。
[0118]
服务器系统基于预测的一个或多个失真来修改失真的带水印的训练图像(535)。如参考图4所描述的,在预测失真的带水印训练图像430中的一个或多个失真之后,图像分析和解码器装置118可以修改失真的带水印训练图像430的所述部分,以生成失真的带水印训练图像430的修改后的部分。例如,假设失真检测器机器学习模型132b预测带水印的训练图像430已经经历了因子2的垂直缩放。响应于这样的预测,图像分析和解码器装置118可以修改失真的带水印的训练图像430的部分,以生成具有垂直缩放因子1/2的修改后的版本,从而减轻带水印的训练图像430经历的任何失真。
[0119]
类似地,如果失真检测器机器学习模型132b预测带水印的训练图像430已经经历了水平缩放,则图像分析和解码器装置118可以通过缩放失真的带水印的训练图像430的所述部分来修改失真的带水印的训练图像430的所述部分,以生成修改后的版本。
[0120]
服务器系统102对水印进行解码以生成预测的第一数据项(540)。如参考图4所述,为了对在带水印的训练图像中检测到的水印进行解码,解码器机器学习模型134a处理失真的带水印训练图像的修改后的部分,以生成预测的第一数据项作为输出。
[0121]
服务器系统102确定第一误差值(545)。例如,基于训练图像420和带水印的训练图像430计算损失1 425,所述损失1 425指示训练图像420和带水印的训练图像430之间的差异。例如,诸如绝对误差函数之类的每像素损失函数可以用于在像素级别上计算图像420和430之间的差异。
[0122]
服务器系统102确定第二误差值(550)。例如,基于预测的第一数据项460和第一数据项410来计算第二误差值(称为损失2 460),所述第二误差值指示用于对图像加水印的第一数据项的预测值和实际值之间的差异。例如,损失2可以是sigmoid交叉熵损失。
[0123]
服务器系统102调整编码器和解码器机器学习模型的参数(555)。在计算损失1425和损失2470之后,可以调整编码器机器学习模型112和解码器机器学习模型134a的可学习参数,以最小化总损失(即损失1+损失2)或单独的损失1和损失2值。例如,损失值的幅度指示预测离实际值有多远,损失值的符号指示可学习参数必须调整的方向。
[0124]
总损失可表示如下
[0125]
total loss=||i
w-io||2+crossentropy(md,mo)
[0126]
其中iw是带水印的训练图像430,io是训练图像420,md是预测的第一数据项460,并且mo是目标第一数据项410。也就是说,损失值的幅度指示预测离实际值有多远,损失值的符号指示可学习参数必须调整的方向。
[0127]
图5b是训练失真检测器机器学习模型的示例过程560的流程图。过程560的操作可以例如由包括图像分析和解码器装置118的服务器系统102来实施。过程550的操作也可以被实施为存储在一个或多个计算机可读介质上的指令,所述计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置执行指令可以使得一个或多个数据处理装置执行过程560的操作。
[0128]
训练过程560的操作在端到端训练数据集的训练样本上迭代。当达到终止标准时,训练过程560终止。例如,当总损失低于指定阈值时,训练过程560可以终止。例如,如果总损失的指定阈值被设置为0.1,则训练过程将继续在训练图像上迭代,直到总损失的值《=0.1。在另一个示例中,训练过程560可以在指定次数的迭代(例如,10,000次迭代)之后终止。
[0129]
服务器系统102获得多个训练图像和多个数据项(565)。例如,失真模型训练数据集可以用于训练失真检测器机器学习模型。失真模型训练数据集可以包括多个训练图像和多个第一数据项。例如,训练图像可以是类似于提供给客户端设备104的第三方内容的源图像128a-n的图像,并且第一数据项可以是编码器机器学习模型112处理以生成用于给训练图像加水印的第二水印的第一数据项。
[0130]
服务器系统102确定编码器机器学习模型的权重(570)。为了检测由经过训练的编码器机器学习模型112具体编码的可能编码的图像302或可能编码的图像302的一部分中的失真,训练过程560可以固定编码器机器学习模型112的参数,以便对失真模型训练数据集中的每个训练图像加水印,以生成对应的带水印的训练图像。
[0131]
服务器系统102使用编码器机器学习模型来生成带水印的训练图像(575)。例如,在服务器系统102的水印生成器110内实施的编码器机器学习模型112对第一数据项进行编码以生成第一水印(如参考图2a所示和所述)。在生成第一水印之后,服务器系统102使用水印平铺装置114来联合第一水印的多个实例,以生成第二水印,例如,第一水印的平铺版本(如参考图2b所示和所述)。第二水印还可以经历诸如裁剪之类的处理(如参考图2b和3a所讨论的)。服务器系统102将第二数字水印与训练图像组合,以获得带水印的图像。如参考图4所描述的,服务器系统102可以使用比如阿尔法混合的技术来组合第二水印和训练图像,从而对训练图像加水印以生成带水印的训练图像。
[0132]
服务器系统102对带水印的图像应用失真(580)。如参考图4所描述的,失真装置可以处理带水印的训练图像,以生成一个或多个失真的带水印图像。通过添加诸如垂直和水平缩放、图像偏移、与其他背景图像的拼接、jpeg压缩、裁剪的一个或多个失真来模拟图3中可能编码的图像302可能经历的真实世界图像改变,来生成失真的水印图像。例如,失真装置可以使来自失真模型训练数据集的带水印的训练图像失真,以生成失真的带水印的训练图像。
[0133]
服务器系统102使用失真检测器机器学习模型来预测失真(585)。如参考图4所述,失真检测器机器学习模型132b处理失真的带水印的训练图像,以生成一个或多个预测失
真。例如,通过处理失真的带水印的训练图像,失真检测器机器学习模型132b可以生成预测的垂直缩放因子作为输出,所述预测的垂直缩放因子指示失真的带水印的训练图像相对于训练图像的估计垂直缩放水平。
[0134]
为了生成输出,训练过程560可以将失真的带水印的训练图像和带水印的训练图像作为输入提供给失真检测器机器学习模型132b,以生成指示失真的带水印的训练图像和带水印的训练图像中的一个或多个失真的一个或多个输出。例如,在从带水印的训练图像生成失真的带水印的训练图像之后,训练过程可以将带水印的训练图像作为输入提供给失真检测器机器学习模型132b,以生成图案(称为通用图案)。类似地,训练过程可以将失真的带水印的训练图像作为输入提供给失真检测器机器学习模型132b,并且生成另一图案(称为变换后的图案)作为输出。
[0135]
服务器系统102确定第三误差值(590)。例如,在生成通用图案和变换后的图案之后,训练过程比较这两个图案,以使用损失函数(例如,l2损失)来计算第三误差值。第三误差值有时可以采取||t(u0)-u1||2的形式,其中t指的是通过添加一个或多个失真对带水印的训练图像的变换,u0是通用图案并且u1是变换后的图案。
[0136]
服务器系统102调整编码器和解码器机器学习模型的参数(595)。例如,训练过程560可以使用第三误差值来调整失真检测器机器学习模型132b的各种参数。训练过程本质上可以是迭代的,使得在每次迭代期间,训练过程旨在最小化l2损失,例如,直到损失小于指定阈值或者直到训练过程已经执行了指定次数的迭代。
[0137]
图6是将数字水印添加到源图像的示例过程600的流程图。过程600的操作可以由例如图1所示的系统实施,包括服务器系统102,服务器系统102继而包括水印生成器110。过程600的操作也可以被实施为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使得一个或多个数据处理装置执行过程600的操作。
[0138]
在训练端到端学习流水线之后,包括编码器机器学习模型112和水印平铺装置114的水印生成器110由提供数字水印的实体部署。例如,如果服务器系统102被配置成与内容提供者106a-n的计算系统通信,例如以获得源图像128a来提供给客户端设备104,则服务器系统102可以包括可以用于生成数字水印的水印生成器110。在生成半透明水印之后,服务器系统102可以传输源图像128a和半透明水印以及指令,所述指令指导在客户端设备104上执行的应用将半透明水印叠加在源图像128a上。如果内容提供者106a-n被配置成独立地与客户端设备104通信,则内容提供者106a-n可以包括可以用于生成数字水印的水印生成器110。
[0139]
服务器系统102获得源图像(610)。例如,客户端设备104可以直接从内容提供者106a-n之一的对应计算系统请求源图像128a,或者间接地经由诸如由服务器系统102或另一服务器系统提供的服务的中间服务请求源图像128a。服务器系统102可被配置成与内容提供者106a-n的计算系统通信,例如,以获得源图像128a来提供给客户端设备104。
[0140]
服务器系统102获得第一数据项(620)。例如,服务器系统102可被配置成用电子文档和半透明第二水印126来响应来自客户端设备104的请求,所述半透明第二水印126将在电子文档中在源图像128a上显示。为了生成半透明水印,服务器系统102可以包括水印生成器110,水印生成器110还可以包括编码器机器学习模型112,编码器机器学习模型112可以
通过处理第一数据项122来生成第一水印。例如,第一数据项122可以是标识内容提供者106a-n的独特标识符。第一数据项122还可以包括独特标识客户端设备104和服务器系统102之间的网络会话的会话标识符,在该网络会话期间对来自客户端设备104的请求提供响应。第一数据项122还可以包括或引用标识提供给客户端设备104的特定源图像128a的图像数据或与源图像128a相关联的信息(例如,指示内容提供者106a-n中的哪一个提供了提供给客户端设备104的特定源图像128a的信息,以及指示何时提供或请求源图像128a的时间戳)。
[0141]
服务器系统102生成第一数字水印(630)。如参考图1所述,在服务器系统102的水印生成器110内实施的编码器机器学习模型112被配置成接收第一数据项122作为输入,以生成将第一数据项122编码成第一水印124的第一水印124。在一些实施方案中,第一水印124可以是表示第一数据项122的矩阵型条形码,如图2所示。根据像素的行数和列数,第一水印124可以具有预定义的大小。第一水印124中的每个像素可以对多位数据进行编码,其中多位的值由不同的颜色表示。例如,对二进制值“00”进行编码的像素可以是黑色的,而对二进制值“11”进行编码的像素可以是白色的。类似地,对二进制值

01’进行编码的像素可以是较浅的黑色(例如深灰色),而对二进制值

10’进行编码的像素可以是更浅的黑色(例如浅灰色)。在一些实施方案中,第一水印的最小编码单元实际上可能大于单个像素。但是,出于本文描述的示例的目的,最小编码单元被假设为单个像素。然而,应了解,本文中所描述的技术可扩展到最小编码单元是一组多个像素(例如,2
×
2或3
×
3的一组像素)的实施方案。
[0142]
参考描绘示例水印200的图2a进一步解释示例第一水印124。在这个示例中,水印200具有32
×
64像素的固定大小,尽管具有其他预定义大小的水印也是合适的。水印200的区别特征是每个像素可以采用不同的颜色深浅值,包括白色或黑色。
[0143]
服务器系统102生成第二数字水印(640)。如参考图1所述,在生成第一水印124之后,服务器系统102使用水印平铺装置114来联合第一水印124的多个实例,以生成第二水印126。例如,水印平铺装置114可以通过并排放置第一水印124的两个或更多个实例来生成第二水印126。参考描绘示例第二水印250的图2b进一步解释示例第二水印126。在图2b的示例中,第二水印250具有64
×
128像素的大小,并且由水印平铺装置114通过将四个第一水印放置在2
×
2阵列中来生成。例如,水印250包括第一水印124的四个实例(255-258)。在生成第二水印126之后,可以更新第二水印126,使得第二水印126的大小不大于源图像128a的大小。举例来说,如果第二水印126的大小大于源图像128a的大小,那么第二水印126可被裁剪以匹配源图像128a的大小。
[0144]
将第二数字水印250与源图像128a组合,以获得带水印图像130(650)。如参考图1所描述的,当服务器系统102生成响应以返回给客户端设备104作为对客户端对电子文档的请求的回复时,所述响应可以包括计算机代码,所述计算机代码指令客户端设备104在执行所述响应时在源图像128a上显示第二水印126的一个或多个实例,例如将人类用户基本上无法辨别的水印添加到源图像128a。客户端设备104处的渲染电子文档的应用可执行阿尔法混合技术,以根据第二水印126的指定透明度将第二水印126叠加在源图像128a上,所述透明度指示第二水印126在叠加在源图像128a上时的不透明性。例如,服务器系统102可以添加代码,所述代码指导客户端设备104将源图像128a显示为电子文档中第三方内容槽中
的背景图像,并将第二水印126的一个或多个实例显示为图像128a上的前景图像。将第二水印126叠加在源图像128a上的阿尔法混合技术也可以由诸如服务器系统102或内容提供者106a-n之类的其他实体来执行。例如,如果服务器系统102或内容提供者106a-n被配置成将带水印图像130传输到客户端设备104,则对应的实体可以执行阿尔法混合技术来生成带水印图像130,所述带水印图像130然后被传输到客户端设备104。
[0145]
图7是检测图像是否包括一个或多个数字水印并对一个或多个数字水印进行解码的示例过程700的流程图。过程700的操作可以例如由包括图像分析和解码器装置118的服务器系统102来实施。过程700的操作也可以被实施为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使得一个或多个数据处理装置执行过程700的操作。
[0146]
已经参考服务器系统102实施图像分析和解码器装置118的假设解释了过程700。然而,应当理解,图像分析和解码器装置118可以由诸如内容提供者106a-n的其他实体来实施。
[0147]
服务器系统102获得图像(710)。在一些实施方案中,并且如参考图1和图3a所描述的,可能编码的图像302由包括图像分析和解码器装置118的服务器系统102获得,所述图像分析和解码器装置118还包括水印和失真检测装置132和水印解码器134。例如,响应于对电子文档的请求,客户端设备104的用户可能接收到不适当或不相关的内容(例如,暴力、血腥、仇恨言论或引起关于内容来源的关注的任何内容)。用户可以捕捉内容的截屏(称为可能编码的图像或候选图像),并将截屏传输到图像分析和解码器装置118进行分析,例如,询问呈现给用户并由可能编码的图像描绘的内容的来源。虽然图像分析和解码器装置118接收多个图像,但是不需要同时接收它们。例如,图像可以在一段时间内获得,因为它们是由在发布者的资产上被呈现内容的用户提交的。
[0148]
服务器系统102确定数字水印嵌入在可能编码的图像的一部分中(720)。如参考图3a所述,在对可能编码的图像302进行任何处理以检查任何失真或由水印解码器134进行解码之前,由水印和失真检测设备132执行关于可能编码的图像是否包括视觉上可辨别的水印的确定。在对图像进行任何进一步处理之前,使用检测机器学习算法132a来确定可能编码的图像302是否包括水印提供了更高效的计算系统。例如,在要求计算更密集的失真检测器机器学习模型132b和解码器机器学习模型处理可能编码的图像302之前,可以使用基于unet的检测机器学习模型132a来检测接收到的图像中水印的存在。这样,系统可以忽略没有检测到水印的任何图像,而不会浪费执行进一步计算所需的资源。例如,如果在可能编码的图像302中没有检测到水印,则服务器系统102可以采用其他技术(在本文档的范围之外)来验证可能编码的图像302中水印的存在。
[0149]
水印检测器机器学习模型132a被配置成处理可能编码的图像302,并生成可能编码的图像302是否包括一部分水印或一个或多个水印的指示作为输出。例如,水印检测器机器学习模型可以被实施为分类模型,所述分类模型可以处理可能编码的图像302以将所述图像分类为包括水印的图像或不包括水印的图像。
[0150]
水印检测器机器学习模型132可以被配置成执行语义图像分割,以确定可能编码的图像302中包括水印的部分。
[0151]
服务器系统102使用失真检测器机器学习模型来预测可能编码的图像的部分中的
一个或多个失真(730)。如参考图3a所描述的,水印和失真检测装置132可以实施失真检测器机器学习模型132b,其可以被配置成处理可能编码的图像302或者可能编码的图像302的包括一个或多个水印的部分(从过程600的步骤620获得),以生成可能编码的图像302相对于源图像128a已经经历的失真的指示作为输出。例如,失真检测器机器学习模型可以生成垂直和水平缩放的指示作为输出,其中垂直和水平缩放是沿着可能编码的图像302或可能编码的图像302的所述部分的长度和宽度的失真。应当注意,在检测机器学习模型132a已经成功确定可能编码的图像302中存在水印之后,水印和失真检测装置132可以处理可能编码的图像302或可能编码的图像302的所述部分。
[0152]
服务器系统102基于预测的一个或多个失真来修改可能编码的图像的所述部分(740)。例如,在检测和确定可能编码的图像302的一部分包括一个或多个水印之后,图像分析和解码器装置118可以基于由失真检测器机器学习模型132b预测的失真来修改图像的所述部分,以生成可能编码的图像302的与源图像130相似或接近相似的修改后的部分。例如,在使用水印检测器机器学习模型132a确定可能编码的图像302上水印的存在之后,图像分析和解码器装置118可以获得包括一个或多个水印的可能编码的图像302的一部分。响应于确定一个或多个水印的存在,图像分析和解码器装置还可以生成一个或多个预测,所述预测指示可能编码的图像302经历的不同失真。响应于预测失真,图像分析和解码器装置118可以修改可能编码的图像302的所述部分,以减轻可能编码的图像302经历的任何失真。例如,如果失真检测器机器学习模型132b预测可能编码的图像302已经经历了垂直和/或水平缩放(使用垂直和水平缩放因子来标识),则图像分析和解码器装置118可以通过缩放可能编码的图像302的所述部分来修改可能编码的图像302的所述部分,以生成修改后的版本。修改后的版本由失真检测器机器学习模型132b预测的相同的垂直和/或水平缩放因子反向缩放,从而减轻可能编码的图像302经历的任何垂直和/或水平失真。例如,如果失真检测器机器学习模型预测可能编码的图像303的包括水印的部分经历了2的水平缩放和3的垂直缩放,则可能编码的图像302的修改后的部分将通过对可能编码的图像130的部分执行1/2水平缩放和1/3垂直缩放来生成。
[0153]
服务器系统102对包括在图像的修改后的部分中的水印进行解码(750)。如参考图3a所述,例如,为了对在可能编码的图像302中检测到的水印进行解码,图像分析和解码器装置包括水印解码器134。在一些实施方案中,水印解码器134可以实施解码器机器学习模型134a,所述模型被配置成对可能编码的图像302的修改后的部分进行解码,以生成预测的第一数据项作为输出,所述第一数据项被预测为将被编码在图像中包括的水印内。
[0154]
服务器系统102验证预测的第一数据项(760)。例如,在通过处理可能编码的图像302生成预测的第一数据项之后,图像分析和解码器装置118可以使用预测的第一数据项来验证可能编码的图像302的确实性(或来源)。为了验证确实性(或来源),在服务器系统102内实施的验证装置140可以将预测的第一数据项与存储在响应记录数据库120中的第一数据项进行比较。如果发现匹配,则验证装置140可以断定呈现在客户端设备104上的源图像128a实际上是由服务器系统102或内容提供者106a-b提供的。如果没有匹配,则验证装置140可以断定呈现在客户端设备104上的源图像128a不是由服务器系统102或内容提供者106a-b提供的。
[0155]
图8是可用于执行上述操作的示例计算机系统800的框图。系统800包括处理器
810、存储器820、存储设备830和输入/输出设备840。组件810、820、830和840中的每一个都可以例如使用系统总线850来互连。处理器810能够处理在系统800内执行的指令。在一些实施方案中,处理器810是单线程处理器。在另一实施方案中,处理器810是多线程处理器。处理器810能够处理存储在存储器820中或存储设备830上的指令。
[0156]
存储器820存储系统800内的信息。在一种实施方案中,存储器820是计算机可读介质。在一些实施方案中,存储器820是易失性存储单元。在另一实施方案中,存储器820是非易失性存储单元。
[0157]
存储设备830能够为系统800提供大容量存储。在一些实施方案中,存储设备830是计算机可读介质。在各种不同的实施方案中,存储设备830可以包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)、或一些其他大容量存储设备。
[0158]
输入/输出设备840为系统700提供输入/输出操作。在一些实施方案中,输入/输出设备840可以包括网络接口设备(例如以太网卡)、串行通信设备(例如rs-232端口)和/或无线接口设备(例如802.11卡)中的一个或多个。在另一实施方案中,输入/输出设备可以包括被配置成接收输入数据并将输出数据发送到外部设备860(例如,键盘、打印机和显示设备)的驱动设备。然而,也可以使用其他实施方案,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
[0159]
尽管已经在图1至图6中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方案可以在其他类型的数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实施。
[0160]
本说明书中描述的主题和操作的实施例可以在数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以被实施为一个或多个计算机程序,即一个或多个计算机程序指令模块,其被编码在计算机存储介质(一个或多个)上,用于由数据处理装置执行或控制数据处理装置的操作。替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以对信息进行编码,用于传输到合适的接收器装置,以由数据处理装置执行。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储衬底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质(例如,多个cd、盘或其他存储设备)中。
[0161]
本说明书中描述的操作可以被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
[0162]
术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。所述装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,所述装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库
管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。所述装置和执行环境可以实现各种不同的计算模型基础设施,例如网络服务、分布式计算和网格计算基础设施。
[0163]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适合在计算环境中使用的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一个计算机或位于一个地点或分布在多个地点并通过通信网络互连的多个计算机上执行。
[0164]
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以被实施为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。
[0165]
举例来说,适于执行计算机程序的处理器包括通用和专用微处理器两者。一般来说,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储设备。一般来说,计算机还将包括一个或多个用于存储数据的大容量存储设备(例如磁盘、磁光盘或光盘)或可操作地耦合到所述大容量存储设备,以从其接收数据或向其传送数据,或两者兼有。然而,计算机不需要有这样的设备。此外,计算机可以嵌入在另一个设备中,例如,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪存驱动器)等等。适于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移除磁盘;磁光盘;以及cd-rom和dvd-rom盘。处理器和存储器可以由专用逻辑电路来补充或并入其中。
[0166]
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实施,所述计算机具有用于向用户显示信息的显示设备,例如crt(阴极射线管)或lcd(液晶显示器)监视器,以及用户可以用来向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也可以使用其他种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求,向用户的客户端设备上的网络浏览器发送网页。
[0167]
本说明书中描述的主题的实施例可以在计算系统中实施,所述计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或网络浏览器的客户端计算机,用户可以通过所述图形用户界面或网络浏览器与本说明书中描述的主题的实施方案进行交互,或者包括一个或多个这样的后端、中间件或前端组件的任何组合。所述系统的组件可以通过任何形式或介质的数字数据
通信(例如通信网络)来互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互联网(例如,互联网)和对等网络(例如,自组织对等网络)。
[0168]
计算系统可以包括客户端和服务器。客户端和服务器总体上彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是由于在各自的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(例如,html页面)传输到客户端设备(例如,为了向与客户端设备交互的用户显示数据并从其接收用户输入)。在客户端设备处生成的数据(例如,用户交互的结果)可以在服务器处从客户端设备接收。
[0169]
虽然本说明书包含许多具体的实施细节,但是这些不应该被解释为对任何发明的范围或可能要求保护的范围的限制,而是对特定发明的特定实施例所特有的特征的描述。本说明书中在独立实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实施或以任何合适的子组合来实施。此外,尽管特征可能在上面被描述为在某些组合中起作用,并且甚至最初被如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从所述组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。
[0170]
类似地,虽然在附图中以特定的次序描绘了操作,但是这不应该被理解为要求这些操作以所示的特定次序或顺序执行,或者要求所有示出的操作都被执行,才能获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者打包到多个软件产品中。
[0171]
因此,已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。在某些情况下,权利要求中所述的动作可以以不同的次序执行,并且仍能获得期望的结果。此外,附图中描绘的过程不一定需要所示的特定次序或顺序来实现期望的结果。在某些实施方案中,多任务和并行处理可能是有利的。

技术特征:
1.一种计算机实施的方法,包括:接收图像;确定数字水印嵌入在所述图像的部分中,其中,所述数字水印不能被人类观察者在视觉上辨别,并且其中,所述数字水印是使用编码器机器学习模型生成的;响应于确定所述数字水印嵌入在所述图像的所述部分中,获得在嵌入在所述图像的所述部分中的所述数字水印内编码的第一数据项,包括:使用失真检测器机器学习模型来预测所述图像的所述部分中相对于所述图像的所述部分的原始版本存在的一个或多个失真;基于所预测的一个或多个失真来修改所述图像的所述部分,同时保留嵌入在所述图像的所述部分中的所述数字水印;和使用解码器机器学习模型对所述图像的所修改的部分进行解码,以获得在所述数字水印内编码的所述第一数据项,其中,所述解码器机器学习模型和所述编码器机器学习模型作为端到端学习流水线的部分被联合训练;和基于所述第一数据项来验证所述图像中描绘的项。2.根据权利要求1所述的方法,其中,确定所述数字水印嵌入在所述图像的部分中包括:生成所述图像的分割图;和基于所述图像的所述分割图,识别所述图像的嵌入了所述数字水印的所述部分。3.根据权利要求1所述的方法,其中,预测所述图像的所述部分中存在的一个或多个失真包括:确定缩放因子,所述缩放因子指示所述图像的所述部分相对于所述图像的所述部分的原始版本已经经历的估计缩放水平;确定垂直失真因子,所述垂直失真因子指示所述图像相对于所述图像的所述部分的原始版本已经经历的垂直缩放;和确定水平失真因子,所述水平失真因子指示所述图像相对于所述图像的所述部分的原始版本已经经历的水平缩放。4.根据权利要求3所述的方法,其中,基于所预测的一个或多个失真来修改所述图像的所述部分,同时保留嵌入在所述图像的所述部分中的所述数字水印,包括:基于所确定的缩放因子、所述水平失真因子和所述垂直失真因子来修改所述图像的所述部分。5.根据权利要求4所述的方法,其中,基于所确定的缩放因子、所述水平失真因子和所述垂直失真因子来修改所述图像的所述部分包括:放大或缩小所述图像的所述部分,以调整由所述缩放因子指示的所述图像的所述部分相对于所述图像的所述部分的所述原始版本已经经历的所述估计缩放水平;缩放所述图像的所述部分,以调整由所述垂直失真因子指示的所述图像相对于所述图像的所述部分的所述原始版本已经经历的所述垂直缩放;和缩放所述图像的所述部分,以调整由所述水平失真因子指示的所述图像相对于所述图像的所述部分的所述原始版本已经经历的所述水平缩放。6.根据权利要求1所述的方法,其中,所述解码器机器学习模型包括解码器神经网络,
所述解码器神经网络包括:第一多个神经网络层,所述第一多个神经网络层包括多个全连接卷积层和最大池化层;和随后是全连接卷积层和池化层的所述第一多个神经网络层。7.一种计算机实施的方法,包括:获得图像;获得第一数据项;使用编码器机器学习模型生成对所述第一数据项进行编码的第一数字水印,所述第一数据项作为输入被提供给所述编码器机器学习模型;平铺所述第一数字水印的两个或更多个实例,以生成第二数字水印;和将所述第二数字水印与所述图像组合以获得带水印的图像。8.根据权利要求7所述的方法,其中,所述第一数字水印是独立于所述图像生成的。9.根据权利要求7所述的方法,其中,所述第一数字水印是尺寸为h
×
w的叠加图像,其中h表示所述叠加图像的高度,w表示所述叠加图像的宽度。10.根据权利要求9所述的方法,其中,平铺所述第一数字水印的所述两个或更多个实例包括放置所述第一水印的一个或多个实例,以生成包括所述第一水印的一个或多个重复图案的第二水印。11.根据权利要求7所述的方法,其中,所述编码器机器学习模型是包括单个全连接卷积层的编码器神经网络。12.根据权利要求7所述的方法,其中,将所述第二数字水印与所述图像组合以获得带水印图像包括:使用阿尔法混合将所述第二数字水印与所述图像组合以获得所述带水印图像。13.根据权利要求7所述的方法,还包括:使用解码器机器学习模型对所述带水印图像进行解码,以获得嵌入在所述图像中的所述第二数字水印内编码的所述第一数据项,其中,所述解码器机器学习模型和所述编码器机器学习模型作为端到端学习流水线的部分被联合训练。14.一种系统,包括:接收图像;确定数字水印嵌入在所述图像的部分中,其中,所述数字水印不能被人类观察者在视觉上辨别,并且其中,所述数字水印是使用编码器机器学习模型生成的;响应于确定所述数字水印嵌入在所述图像的所述部分中,获得在嵌入在所述图像的所述部分中的所述数字水印内编码的第一数据项,包括:使用失真检测器机器学习模型来预测所述图像的所述部分中相对于所述图像的所述部分的原始版本存在的一个或多个失真;基于所预测的一个或多个失真来修改所述图像的所述部分,同时保留嵌入在所述图像的所述部分中的所述数字水印;和使用解码器机器学习模型对所述图像的所修改的部分进行解码,以获得在所述数字水印内编码的所述第一数据项,其中,所述解码器机器学习模型和所述编码器机器学习模型作为端到端学习流水线的部分被联合训练;和
基于所述第一数据项来验证所述图像中描绘的项。15.根据权利要求14所述的系统,其中,确定所述数字水印嵌入在所述图像的部分中包括:生成所述图像的分割图;和基于所述图像的所述分割图,识别所述图像的嵌入了所述数字水印的所述部分。16.根据权利要求14所述的系统,其中,预测所述图像的所述部分中存在的一个或多个失真包括:确定缩放因子,所述缩放因子指示所述图像的所述部分相对于所述图像的所述部分的原始版本已经经历的估计缩放水平;确定垂直失真因子,所述垂直失真因子指示所述图像相对于所述图像的所述部分的原始版本已经经历的垂直缩放;和确定水平失真因子,所述水平失真因子指示所述图像相对于所述图像的所述部分的原始版本已经经历的水平缩放。17.根据权利要求16所述的系统,其中,基于所预测的一个或多个失真来修改所述图像的所述部分,同时保留嵌入在所述图像的所述部分中的所述数字水印,包括:基于所确定的缩放因子、所述水平失真因子和所述垂直失真因子来修改所述图像的所述部分。18.根据权利要求17所述的系统,其中,基于所确定的缩放因子、所述水平失真因子和所述垂直失真因子来修改所述图像的所述部分包括:放大或缩小所述图像的所述部分,以调整由所述缩放因子指示的所述图像的所述部分相对于所述图像的所述部分的所述原始版本已经经历的所述估计缩放水平;缩放所述图像的所述部分,以调整由所述垂直失真因子指示的所述图像相对于所述图像的所述部分的所述原始版本已经经历的所述垂直缩放;和缩放所述图像的所述部分,以调整由所述水平失真因子指示的所述图像相对于所述图像的所述部分的所述原始版本已经经历的所述水平缩放。19.一种系统,包括:获得图像;获得第一数据项;使用编码器机器学习模型生成对所述第一数据项进行编码的第一数字水印,所述第一数据项作为输入被提供给所述编码器机器学习模型;平铺所述第一数字水印的两个或更多个实例,以生成第二数字水印;和将所述第二数字水印与所述图像组合以获得带水印的图像。20.根据权利要求19所述的系统,其中,所述第一数字水印是独立于所述图像生成的。21.根据权利要求19所述的系统,其中,所述第一数字水印是尺寸为h
×
w的叠加图像,其中h表示所述叠加图像的高度,w表示所述叠加图像的宽度。22.根据权利要求21所述的系统,其中,平铺所述第一数字水印的所述两个或更多个实例包括放置所述第一水印的一个或多个实例,以生成包括所述第一水印的一个或多个重复图案的第二水印。23.一种存储指令的非暂时性计算机可读介质,所述指令在由一个或多个数据处理装
置执行时,使所述一个或多个数据处理装置执行操作,所述操作包括:接收图像;确定数字水印嵌入在所述图像的部分中,其中,所述数字水印不能被人类观察者在视觉上辨别,并且其中,所述数字水印是使用编码器机器学习模型生成的;响应于确定所述数字水印嵌入在所述图像的所述部分中,获得在嵌入在所述图像的所述部分中的所述数字水印内编码的第一数据项,包括:使用失真检测器机器学习模型来预测所述图像的所述部分中相对于所述图像的所述部分的原始版本存在的一个或多个失真;基于所预测的一个或多个失真来修改所述图像的所述部分,同时保留嵌入在所述图像的所述部分中的所述数字水印;和使用解码器机器学习模型对所述图像的所修改的部分进行解码,以获得在所述数字水印内编码的所述第一数据项,其中,所述解码器机器学习模型和所述编码器机器学习模型作为端到端学习流水线的部分被联合训练;和基于所述第一数据项来验证所述图像中描绘的项。24.根据权利要求23所述的非暂时性计算机可读介质,其中,确定所述数字水印嵌入在所述图像的部分中包括:生成所述图像的分割图;和基于所述图像的所述分割图,识别所述图像的嵌入了所述数字水印的所述部分。25.根据权利要求23所述的非暂时性计算机可读介质,其中,预测所述图像的所述部分中存在的一个或多个失真包括:确定缩放因子,所述缩放因子指示所述图像的所述部分相对于所述图像的所述部分的原始版本已经经历的估计缩放水平;确定垂直失真因子,所述垂直失真因子指示所述图像相对于所述图像的所述部分的原始版本已经经历的垂直缩放;和确定水平失真因子,所述水平失真因子指示所述图像相对于所述图像的所述部分的原始版本已经经历的水平缩放。26.根据权利要求25所述的非暂时性计算机可读介质,其中,基于所预测的一个或多个失真来修改所述图像的所述部分,同时保留嵌入在所述图像的所述部分中的所述数字水印,包括:基于所确定的缩放因子、所述水平失真因子和所述垂直失真因子来修改所述图像的所述部分。27.一种存储指令的非暂时性计算机可读介质,所述指令在由一个或多个数据处理装置执行时,使所述一个或多个数据处理装置执行操作,所述操作包括:获得图像;获得第一数据项;使用编码器机器学习模型生成对所述第一数据项进行编码的第一数字水印,所述第一数据项作为输入被提供给所述编码器机器学习模型;平铺所述第一数字水印的两个或更多个实例,以生成第二数字水印;和将所述第二数字水印与所述图像组合以获得带水印的图像。
28.根据权利要求27所述的非暂时性计算机可读介质,其中,所述第一数字水印是独立于所述图像生成的。29.根据权利要求27所述的非暂时性计算机可读介质,其中,所述第一数字水印是尺寸为h
×
w的叠加图像,其中h表示所述叠加图像的高度,w表示所述叠加图像的宽度。30.根据权利要求29所述的非暂时性计算机可读介质,其中,平铺所述第一数字水印的所述两个或更多个实例包括放置所述第一水印的一个或多个实例,以生成包括所述第一水印的一个或多个重复图案的第二水印。

技术总结
用于生成和解码水印的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。接收图像和数据项。编码器生成第一水印,然后使用多个第一水印生成第二水印。第二水印用于通过将第二水印叠加在图像上来给图像加水印。为了解码水印,在图像的一部分上确定水印的存在。失真模型确定图像中的失真,并基于预测的失真修改图像的部分。使用解码器对修改后的部分进行解码,以获得预测的第一数据项,所述第一数据项进一步用于基于第一数据项来验证水印。印。印。


技术研发人员:罗曦杨 杨峰 埃尔纳兹
受保护的技术使用者:谷歌有限责任公司
技术研发日:2022.01.11
技术公布日:2023/9/14
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐