端到端加水印系统的制作方法
未命名
09-16
阅读:53
评论:0

1.本说明书总体上涉及用于在数字内容中嵌入水印以及恢复数字内容中嵌入的水印的数据处理和技术。
背景技术:
2.在诸如因特网的网络环境中,内容提供商可以提供用于在例如网页或应用界面的电子文档中呈现的信息。文档可以包括由第一方内容提供商提供的第一方内容和由第三方内容提供商(例如,不同于第一方内容提供商的内容提供商)提供的第三方内容。
3.可以使用各种技术将第三方内容添加到电子文档。例如,一些文档包括指示在其处呈现文档的客户端设备直接从第三方内容提供商(例如,从处于与提供第一方内容的服务器不同的域中的服务器)请求第三方内容项的标签。其它文档包括指示客户端设备调用与多个第三方内容提供商合作的中介服务以返回从第三方内容提供商中的一个或多个中选择的第三方内容项的标签。在一些情况下,动态地选择第三方内容项以在电子文档中呈现,并且为文档的给定服务选择的特定第三方内容项可以不同于为同一文档的其它服务选择的第三方内容项。
技术实现要素:
4.通常,本说明书中描述的主题的一个新颖方面可以在方法中体现,所述方法包括用于联合训练生成被嵌入到图像中的数字水印的编码器机器学习模型和对在被嵌入到所述图像中的所述数字水印内编码的第一数据项进行解码的解码器机器学习模型,其中所述训练包括:获得第一多个训练图像和多个数据项,其中所述多个数据项中的每个数据项是要在要被嵌入到训练图像中的数字水印内编码的数据项;对于所述第一多个训练图像中的每个训练图像:从所述多个数据项中获得数据项;使用所述数据项被提供作为对其的输入的所述编码器机器学习模型来生成对所述数据项进行编码的第一数字水印;图块化所述第一数字水印的两个或更多个实例以生成第二数字水印;将所述第二数字水印与所述训练图像组合以获得加水印的训练图像;将一个或多个失真应用于所述加水印的训练图像;使用失真检测器机器学习模型来预测所述加水印的训练图像中存在的所述一个或多个失真;基于预测的一个或多个失真来修改所述加水印的训练图像,同时保留失真的加水印的训练图像中嵌入的所述第二数字水印;以及使用所述解码器机器学习模型对修改的加水印的训练图像进行解码,以获得预测要被嵌入到所述失真的加水印的训练图像中嵌入的所述第二数字水印中的解码数据项;基于所述加水印的训练图像和所述训练图像来确定第一误差值;基于所述解码数据项和所述数据项来确定第二误差值;以及调整所述编码器机器学习模型和所述解码器机器学习模型的一个或多个训练参数以最小化所述第一误差值和所述第二误差值。
5.此方面的其它实施例包括对应方法、装置以及编码在计算机存储设备上的被配置成执行方法的动作的计算机程序。这些和其它实施例可以各自任选地包括以下特征中的一
个或多个。
6.方法可以包括通过基于所述加水印的训练图像和所述训练图像计算l2损失值来基于所述加水印的训练图像和所述训练图像确定所述第一误差值。
7.方法可以包括通过基于所述解码数据项和所述数据项计算s形交叉熵值来基于所述解码数据项和所述数据项确定所述第二误差值。
8.方法可以包括图像压缩、高斯噪声或图像缩放作为所述一个或多个失真。
9.方法还可以包括通过以下项来训练所述失真检测器机器学习模型:获得第二多个训练图像和多个数据项,其中所述多个数据项中的每个数据项是要在要被嵌入到训练图像中的数字水印内编码的数据项;固定所述编码器机器学习模型的权重;以及对于所述第二多个训练图像中的每个训练图像:使用所述编码器机器学习模型来生成加水印的训练图像;将一个或多个失真应用于所述加水印的训练图像;使用所述失真检测器机器学习模型来预测所述失真的加水印的训练图像中存在的所述一个或多个失真;使用所述失真检测器机器学习模型来预测所述加水印的训练图像中存在的一个或多个失真;基于所述失真的加水印的训练图像中存在的预测的一个或多个失真和所述加水印的训练图像中存在的预测的一个或多个失真来确定第三误差值;以及调整所述失真检测器机器学习模型的一个或多个训练参数以最小化所述第三误差值。
10.方法可以包括通过基于所述失真的加水印的训练图像中存在的预测的一个或多个失真和所述加水印的训练图像中存在的预测的一个或多个失真来计算l2损失值而确定所述第三误差值。
11.可以实现本说明书中描述的主题的特定实施例以便实现以下优点中的一个或多个。为简洁起见也简称为“水印”或“数字水印”的视觉上不可察觉的水印可以用于确定与第一方内容一起呈现的第三方内容的来源(例如,在网站处、在流媒体视频中或在本机应用中)。这些水印可以比以前可能的方式更有效的方式来提取和解码。例如,本说明书中描述的水印提取和解码技术实现一起被训练以用于对水印进行编码和解码的编码器和解码器机器学习模型。这得到使用简单的轻量级编码器机器学习模型对水印的快速生成和高效解码器,该高效解码器被专门训练以对由编码器生成的水印进行解码,从而整体提高了加水印系统的稳健性。
12.本文描述的技术包括在尝试对可能包括于输入数字内容(例如,图像)中的水印进行解码之前检测该输入数字内容中的水印的存在的初始水印检测过程。这是通过考虑解码中涉及的计算机资源来激励的,可以通过使用(相对于解码过程)计算上不太昂贵的检测过程来过滤掉不包括水印的整个内容或内容的部分而减少计算机资源,从而节省通过计算上更昂贵的解码过程处理此类输入数字内容所需的时间和计算资源两者。换言之,检测过程不是必须完全处理数字内容并尝试对其中的水印进行解码,而是可以初始地确定图像是否包括水印,同时使用比执行解码过程所需的更少的计算资源和更少的时间。以此方式,在发起解码过程之前使用检测过程节省了计算资源,并且通过快速过滤掉不包括水印的数字内容中的全部或部分来使得能够更快地标识和分析实际包括水印的数字内容,从而减少了此类操作否则所需的计算资源。相比而言,仅依赖解码过程来检测和解码加水印的图像的技术或不使用检测过程作为过滤机制的过程在计算上更昂贵。
13.本文讨论的检测和解码过程与失真无关,意味着可以对水印进行检测和/或解码,
而不管输入图像中的失真。这些技术使用机器学习模型来检测输入图像中的任何失真,所述失真用于在对水印进行解码之前修改输入图像以减轻失真。这减少了在解码时的任何错误预测,从而提供了更稳健且可靠的加水印系统。
14.更具体地,本文讨论的技术可以用于检测和解码原始呈现内容的再现中(例如,在内容的图片或截屏中)的水印,并且原始呈现内容被捕获的失真将因捕获的实例而变化(例如,因图片而变化)。对输入图像中的水印的检测和/或解码(例如,再现,诸如在客户端设备处呈现的内容的图片)将需要仅在对水印的肯定检测之后预测一个或多个失真。因此,通过减少利用不同的相应缩放杠杆分析图像以检测或解码水印所需的计算资源来激励所公开的方法的实现。
15.本文讨论的技术的其它优点包括检测和解码过程与数字内容的数据无关,意味着可以对水印进行编码、检测和解码,而不管被加水印的数字内容的数据或场境。这允许预生成水印和加水印的数字内容,从而显著减少编码时间。
16.在附图和以下描述中阐述本说明书中描述的主题的一个或多个实施例的细节。主题的其它特征、方面和优点将从说明书、附图和权利要求书中变得显而易见。
附图说明
17.图1是用于将具有加水印的图像的电子文档传输到客户端设备的环境的框图。
18.图2a是使用编码器机器学习模型生成的示例性第一水印的描绘。
19.图2b是利用使用编码器机器学习模型生成的水印生成的示例性第二水印的描绘。
20.图3a是图像分析和解码器装置的框图。
21.图3b是具有unet架构的示例性卷积神经网络的框图。
22.图4是用于联合训练编码器和解码器机器学习模型的示例性过程的框图。
23.图5a是用于作为端到端学习流水线的一部分联合训练编码器机器学习模型和解码器机器学习模型的示例性过程的流程图。
24.图5b是用于训练失真检测器机器学习模型的示例性过程的流程图。
25.图6是用于向源图像添加数字水印的示例性过程的流程图。
26.图7是用于对加水印的图像的水印进行解码的示例性过程的流程图。
27.图8是示例性计算机系统的框图。
具体实施方式
28.本说明书描述了用于检测和解码捕获的内容的再现(例如,在客户端设备处呈现的内容的数字照片)中的视觉上可辨别的水印的系统、方法、设备和技术。虽然以下描述描述了关于视觉上可辨别的水印的水印检测,但是这些技术也可以应用于视觉上可感知的水印。为简洁起见简称为“水印”的视觉上可辨别的水印是半透明的,并且在正常观看条件下对于人类用户是视觉上可辨别的,使得水印可以被嵌入到内容中而不降低内容的视觉质量。水印可以携带信息,诸如水印被嵌入其中的图像的来源的标识符。例如,在因特网的场境中,当用户访问发布者的所有物(例如,网站、视频流、视频游戏或移动应用)时,水印可以识别(除其它信息外)将内容放置在发布者的所有物上的实体、服务器或服务。因此,当捕获并提交如在发布者的所有物上呈现的内容的再现(例如,内容的图片或截屏)以进行核实
时,可以检测并解码水印以核实内容实际上是否由适当的实体、服务器或服务分发。
29.如下文详细讨论的,水印的编码、检测和解码可以由机器学习模型执行,该机器学习模型被训练以生成、检测并解码水印,而不管图像被捕获的任何失真。为此,联合训练机器学习模型,使得机器学习模型能够检测和解码由在训练过程期间涉及的机器学习模型生成的水印。
30.图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可以被叠加在各种其它类型的可见内容上,包括本机应用内容、流式视频内容、视频游戏内容或其它可见内容。还应注意,代替用半透明的第二水印126增强提供给客户端设备104的响应,服务器系统102可以将水印递送到一个或多个内容提供商106a-n,其中内容提供商可以在将内容传输到客户端设备104以供呈现之前生成加水印的图像。
31.客户端设备104可以是被配置成向一个或多个人类用户呈现图像和其它内容的任何类型的计算设备。客户端设备104可以包括向服务器系统102发出请求并且从所述服务器系统接收响应的应用,诸如web浏览器应用。应用可以执行来自服务器系统102的响应,诸如web页代码或其它类型的文档文件,以向客户端设备104的一个或多个用户呈现响应。在一些实施方案中,客户端设备104包括电子显示设备(例如,lcd或led屏幕、crt监视器、头戴式虚拟现实显示器、头戴式混合现实显示器),或耦合到电子显示设备,该电子显示设备向客户端设备104的一个或多个用户显示来自所渲染的响应的内容。所显示的内容可以包括源图像128a和一个或多个第二水印126,第二水印126例如通过使用作为合并两个图像的过程的诸如阿尔法混合的技术以基本上透明的方式在源图像128a的顶部上显示。在一些实施方案中,客户端设备104是笔记本电脑、智能电话、平板电脑、台式电脑、游戏控制台、个人数字助理、智能扬声器(例如,在语音控制下)、智能手表、或另一可穿戴设备。
32.在一些实施方案中,在对客户端设备104的响应中提供的源图像128a是例如不在由响应的第一方内容提供商提供的内容之中的第三方内容项。例如,如果响应是web页,则网页的创建者可以在web页中包括槽,该槽被配置成由来自不同于网页的创建者(例如,图像存储库的提供商)的第三方内容提供商的数字组件(例如,图像)填充。在另一示例中,第一方内容提供商可以直接链接到第三方源图像128a。客户端设备104可以直接从内容提供商106a-n中的一个的对应计算系统请求源图像128a,或经由诸如由服务器系统102或另一服务器系统提供的服务的中介服务间接请求源图像128a。服务器系统102可以被实现为位
于一个或多个位置中的一个或多个计算机。
33.服务器系统102可以被配置成与内容提供商106a-n的计算系统通信,例如,以获得要提供给客户端设备104的源图像128a。在此类实施方案中,服务器系统102被配置成用源图像128a和要在电子文档中显示在源图像128a上的半透明水印响应来自客户端设备104的请求。为了生成半透明水印,服务器系统102可以包括水印生成器110,水印生成器110又可以包括编码器机器学习模型112,编码器机器学习模型112包括多个训练参数(参考图4和图5描述编码器机器学习模型112的训练)。服务器系统102可以在生成半透明水印之后传输源图像128a和半透明水印以及指导在客户端设备104上执行的应用将半透明水印叠加在源图像128a上的指令。
34.在一些实施方案中,服务器系统102被配置成用已经加水印的源图像128a响应来自客户端设备104的请求。在此类实施方案中,代替将源图像128a和半透明水印传输到客户端设备104(例如,以使客户端设备104能够将半透明水印叠加在源图像128a上),服务器系统102可以通过将半透明水印叠加在源图像128a上来生成加水印的源图像(也称为编码图像130)。在生成编码图像130之后,将编码图像130传输到客户端设备104。在此类实施方案中,水印生成器110可以由生成半透明水印的服务器系统102实现,使得服务器系统102在响应来自客户端设备104的请求时能够访问半透明水印以生成编码图像130。
35.在又一实施方案中,内容提供商106a-n和服务器系统102可以独立地与客户端设备104通信,以分别传输源图像128a和半透明水印。在此类实施方案中,内容提供商106a-n和服务器系统102可以彼此通信,以核实与客户端设备104和将要在客户端设备104处加水印的源图像128a的同时(或接近同时)通信。客户端设备104之后接收源图像128a和半透明水印以及指导在客户端设备104上执行的应用将半透明水印叠加在源图像128a上的指令。
36.在又一实施方案中,内容提供商106a-n可以通过将半透明水印叠加在源图像128a上来生成编码图像130。在生成编码图像130之后,将编码图像130传输到客户端设备104。在此类实施方案中,水印生成器110可以由生成半透明水印的内容提供商106a-n实现,使得内容提供商106a-106n在响应来自客户端设备104的请求时能够访问半透明水印以生成编码图像130。
37.编码器机器学习模型112被配置成在训练过程期间(如参考图4和图5进一步描述的)接收数据项(称为第一数据项122)作为输入,以生成对第一数据项122进行编码的数字水印(称为第一水印124)。在一些实施方案中,编码器机器学习模型112可以是简单且轻量级的模型,诸如单个完全连接的卷积神经网络层。然而,应注意,编码器机器学习模型可以包括不止一个卷积、池化或完全连接的层。还应注意,编码器机器学习模型不一定是神经网络,但取决于具体实施方案,它可以是任何类型的有监督、无监督或强化学习模型。
38.在一些实施方案中,第一数据项122可以是识别特定内容提供商106的独特标识符(其,例如,可以是字母数字值)。第一数据项122可以另外或替代地包括会话标识符(其,例如,可以是字母数字值),该会话标识符独特地识别客户端设备104与服务器系统102之间的网络会话,在该网络会话期间,对来自客户端设备104的请求提供响应。第一数据项122可以包括识别提供给客户端设备104的特定源图像128a的引用或与源图像128a相关联的信息(例如,指示内容提供商106a-n中的哪一个提供了提供给客户端设备104的特定源图像128a的信息以及指示何时提供或请求源图像128a的时间戳)。
39.在一些实施方案中,服务器系统102还可以包括响应记录数据库,响应记录数据库存储将关于源图像128a或针对特定请求提供的响应的此类信息相关的数据,以便使得能够经由会话标识符或由第一数据项表示的其它信息访问的详细信息。响应记录数据库还可以将会话标识符与图像数据相关联,从而通过使用由第一数据项表示的会话标识符查询数据库来使图像数据可访问。然后,服务器系统的用户可以使用第一数据项的会话标识符来识别例如源图像128a-n中的哪一个在什么时间被提供给客户端设备104以及来自哪个内容提供商106a-n。
40.在一些实施方案中,第一水印124是表示第一数据项122的图像。第一水印124可以是矩阵型条形码或可以对第一数据项122进行编码的任何图案。第一水印124在像素的行和列的数量方面可以具有预定义大小。第一水印124中的每个像素可以对多个数据比特进行编码,其中多个比特的值由不同颜色表示。例如,对二进制值
‘
00’进行编码的像素可以是黑色的,而对二进制值
‘
11’进行编码的像素可以是白色的。类似地,对二进制值
‘
01’进行编码的像素可以是较浅的黑色阴影(例如,深灰色),而对二进制值
‘
10’进行编码的像素可以是更浅的黑色阴影(例如,浅灰色)。在一些实施方案中,第一水印的最小编码单元实际上可以大于单个像素。但是为了本文描述的示例的目的,假设最小编码单元是单个像素。然而,应当认识到,本文描述的技术可以扩展到其中最小编码单元是多个像素的集合(例如,2
×
2或3
×
3像素集合)的实施方案。参考图2a描绘并描述由编码器机器学习模型112使用第一数据项122生成的示例性第一水印124。
41.图2a描绘例如为了本说明书中描述的技术的目的可以用作第一水印124的示例性水印图案200。在一些实施方案中,水印200具有固定大小,例如,在此示例中为32
×
64像素的大小,但是也可以使用具有其它预定义大小的水印。可以使用第一数据项122生成如参考图1描述(并且如参考图6进一步描述)的水印200。水印图案200的区别性特征在于每个像素或一组像素可以采用不同的颜色和相应颜色的阴影。例如,水印图案200可以包括白色或黑色的像素或一组像素,其中不同的像素或像素组可以具有不同的白色或黑色阴影。此特征使得能够使用设定数量的像素或水印尺寸(相对于其它水印图案,诸如qr码)提供更大数量的独特图案。
42.继续参考图1的讨论,服务器系统102在生成第一水印124之后使用水印图块化装置114联合第一水印124的多个实例以生成第二水印126。例如,水印图块化装置114可以通过并排放置第一水印124的两个或更多个实例来生成第二水印126。参考图2b进一步解释示例性第二水印126。
43.图2b描绘例如为了本说明书中描述的技术的目的可以用作第二水印的示例性水印250。水印250具有64
×
128像素的大小,并且由水印图块化装置114通过将四个第一水印彼此紧挨着放置来生成。例如,水印250包括第一水印124的四个实例(255至258)。
44.返回到图1,在一些实施方案中,服务器系统102生成响应以返回到客户端设备104作为对客户端对电子文档的请求的回复。响应可以包括一个或多个内容项,包括第一方内容项和第三方内容项,这些内容项共同形成电子文档,诸如网页、应用界面、pdf、演示幻灯片组或电子表格。在一些实施方案中,响应包括指定如何布置和显示各种内容项的主文档。诸如超文本标记语言(html)页面的主文档可以是指要在文档的呈现中显示的第一方内容项和第三方内容项。在一些实施方案中,服务器系统102被配置成向主文档添加计算机代
码,该计算机代码指示客户端设备104当执行响应时在源图像128a上显示第二水印126的一个或多个实例,例如,以将人类用户基本上可辨识的水印添加到源图像128a。在客户端设备104处的渲染电子文档的应用可以使用阿尔法混合技术,以根据指定透明度将第二水印126叠加在源图像128a上,该指定透明度指定当将第二水印126叠加在源图像128a上时第二水印126的不透明度水平。例如,服务器系统102可以添加代码,该代码指引客户端设备104将源图像128a显示为电子文档中的第三方内容槽中的背景图像,并将第二水印126的一个或多个实例显示为图像128a上的前景图像。在一些实施方案中,当服务器系统102被配置成用加水印的图像130响应来自客户端设备104的请求时,由服务器102执行将第二水印126叠加在源图像128a上的阿尔法混合技术。类似地,如果任何其它实体(例如,内容提供商106)被配置成用加水印的图像130响应来自客户端设备104的请求,则由该实体执行将第二水印126叠加在源图像128a上的阿尔法混合技术。
45.在一些实施方案中,诸如生成加水印的图像130的客户端设备104的实体将s形函数应用于第二水印126的每个像素强度值,以在将第二水印叠加在源图像128a上之前将强度值约束到[0,1]。这可以用以下公式表示:
[0046]im
=sigmoid(wem0+be)
[0047]
其中im是第二水印126,m0是数据项,we和be是编码器机器学习模型112的权重和偏差。
[0048]
在一些实施方案中,如果第二水印126大于源图像128a的大小,则基于预定义规则来裁剪第二水印126。例如,预定义规则可以陈述可以从右下裁剪第二水印126,以便将第二水印128的大小调整到源图像128a的大小。
[0049]
在一些实施方案中,为了减小第二水印126的文件大小,还可以基于恒定颜色向量c∈r3来调整第二水印126的每个像素,从而得到调整后的水印im′
。这可以表示为
[0050]i′m=repeat(im.c)
[0051]
在一些实施方案中,根据指定透明度将第二水印126叠加在源图像128a上的阿尔法混合技术可以表示为
[0052]iw
=(1-α)*io+α*i
′m[0053]
其中iw是编码图像130,并且α是当第二水印126叠加在源图像128a上时第二水印126的不透明度度量的度量。
[0054]
在可能有数百万图像(和其它视觉内容)被分发到许多不同的客户端设备104的环境中,可能存在当服务器系统102需要确定图像(或其它视觉内容)的提供商或来源、图像(或其它视觉内容)的其它特性、或关于图像(或其它视觉内容)的特定印象(例如呈现)的场境的情况。
[0055]
例如,响应于对电子文档的请求,客户端设备104的用户可以从内容提供商106a-n中的一个接收不适当或不相关的图像128a。用户可以捕获编码图像130的截屏(例如,在客户端设备104处呈现的图像或其它内容的再现),并将截屏传输到服务器系统102以进行分析,例如,询问源图像128a的来源。因为截屏示出被水印图像126叠加的原始图像128a,所以服务器系统102可以处理截屏以从图像中包括的数字水印恢复第一数据项。然后,系统102可以将恢复的第一数据项用于各种目的,例如,查询响应记录数据库以查找关于图像128a以及其来源的详细信息,或关于其中源图像128a被提供给客户端设备104的特定客户端会
话的其它信息。
[0056]
在一些实施方案中,为了从编码源图像130检测和解码第一数据项122的编码表示,服务器系统102可以包括图像分析和解码器装置118。如上文所描述,在一些实施方案中,编码源图像130是由客户端设备104将第二水印126渲染在源图像128a上而得到的图像。即使第二水印126与源图像128a分离,由图像分析和解码器装置118处理的编码源图像130也可以是示出在源图像128a上混合的第二水印126的合并图像。编码源图像130可以被输入到图像分析和解码器装置118,图像分析和解码器装置118检测和/或解码编码源图像130中存在的水印。输入到图像分析和解码器装置118的编码源图像130可以是在客户端设备104处提供的实际编码源图像,或其可以是该图像(如文上所描述,该图像是通过将第二水印126与源图像128a合并/混合而生成的图像)的呈现的再现(例如,截屏或其它数字捕获)。因此,原始源图像128a和原始第二水印126可以不被提交给图像分析和解码器装置118以用于分析。
[0057]
在一些情况下,包括图像分析和解码器装置118的服务器系统102可以接收对分析可能编码/加水印的图像的请求。如本文所使用,术语“可能”是指项的条件,条件可能归因于项,但其对于处理项的处理实体(例如,服务器系统102)来说仍然是未知的。也就是说,项的可能条件是处理实体不知道其真实性的项的候选条件。处理实体可以执行处理以识别项的可能(候选)条件,以对可能(候选)条件的真实性进行预测,和/或识别呈现特定条件的可能(候选)项。例如,可能编码源图像是可能用水印编码的源图像,但是服务器系统102最初不知道该图像是否实际上已经被加水印。因此,可能用水印编码的编码源图像130是编码源图像130的候选条件,并且编码源图像130是呈现用水印编码的候选条件的候选项。可能编码图像可以由用户捕获图像的截屏(或另一数字再现,诸如数字照片)并将捕获的图像提供给服务器系统102以供分析而得到,但没有指示图像是否已经被编码/加水印的更多信息。
[0058]
在服务器系统102接收到对分析可能编码的(加水印的)源图像的请求的这些情况下,图像分析和解码器装置118使用水印和失真检测装置132来分析接收到的图像,水印和失真检测装置132可以实现一个或多个机器学习模型,例如,用于检测可能编码源图像是否可能包含水印的水印检测器机器学习模型134a和用于检测当与提供给客户端设备104的编码源图像130相比时可能编码源图像中的可能失真的失真检测器机器学习模型134b。参考图3a进一步描述这些机器学习模型中的每一个。为简洁起见,可能编码源图像也可以称为可能编码图像。
[0059]
如果水印和失真检测装置132在可能编码源图像的一部分中检测到视觉上可辨别的水印以及可能编码源图像的一个或多个失真,则图像分析和解码器装置118可以修改可能编码源图像的该部分以去除任何失真。在去除失真之后,在图像分析和解码器装置118内实现的水印解码器134尝试对可能编码图像的其中检测到数字水印的部分/区域进行解码。如参考其它图进一步详细解释的,水印解码器134可以实现一个或多个机器学习模型(称为解码器机器学习模型),该一个或多个机器学习模型被配置成处理可能编码图像的可能编码区域和可能编码图像的特征,以预测可能编码图像的水印状态。图像分析和解码器装置118还可以包括缩放装置138和验证装置140,其将在下文更详细地讨论。图像分析和解码器装置118和任何子系统可以在处于其中实现服务器系统102的一个或多个位置中的一个或多个计算机上实现。
[0060]
水印生成器110、水印和失真检测装置132以及水印解码器134可以由单个实体或不同实体实现。例如,客户端设备104可以包括水印和失真检测装置132,使得在生成和传输对分析可能编码图像的请求之前,客户端设备102可以检测所捕获的可能编码图像中的水印和/或失真的存在。在另一示例中,客户端设备104可以包括水印和失真检测装置132和水印解码器134两者,使得客户端设备104可以检测和解码可能编码图像中存在的水印。在另一示例中,水印生成器110可以由内容提供商106a-n实现,使得当响应来自客户端设备104的请求时内容提供商106a-n可以生成编码图像130。
[0061]
图3a是示例性图像分析和解码器装置118的框图300,图像分析和解码器装置118检测和解码作为输入提供给图像分析和解码器装置118的可能编码图像302,以获得在可能编码图像302中包括的数字水印内编码的预测的第一数据项。
[0062]
可能编码图像302可以采用在客户端设备处呈现的图像的屏幕捕获或数字照片的形式。例如,可能编码图像302可以是发布者网站上呈现的图像的屏幕捕获。更具体地,可能编码图像302可以已经由访问发布者的网站的用户捕获,然后由用户提交以报告图像的呈现(例如,为不适当)。图像分析和解码器装置118可以包括水印和失真检测装置132、水印解码器134和验证装置140中的一个或多个。
[0063]
在一些实施方案中,水印和失真检测装置132可以实现水印检测器机器学习模型132a,水印检测器机器学习模型132a被配置成处理可能编码图像302,并且生成可能编码图像302的一部分是否包括一个或多个水印的指示作为输出。水印检测器机器学习模型132a可以是被认为适合于特定实施方案的任何模型,诸如决策树、人工神经网络、遗传编程、逻辑编程、支持向量机、聚类、强化学习、贝叶斯推理等。机器学习模型还可以包括用于分析图像的计算机视觉和图像处理的方法、算法和技术。在此类实施方案中,可能编码图像302是否包括水印的一部分或一个或多个水印的指示可以采用分类或诸如分数或概率的数字的形式。例如,水印检测器机器学习模型132a可以被实现为分类模型,该分类模型可以处理可能编码图像302,以将图像分类为包括水印的图像或不包括水印的图像。在另一示例中,水印检测器机器学习模型132a可以处理可能编码图像302以生成分数,诸如指示可能编码图像302包括水印的可能性的分数。
[0064]
在一些实施方案中,水印和失真检测装置132可以实现水印检测器机器学习模型132a以执行语义图像分割,并生成识别被加水印的编码像素集合的分割掩码。语义图像分割是将图像的每个像素分类为一个或多个类的过程。例如,水印检测器机器学习模型132a可以处理可能编码图像302,以将可能编码图像302的每个像素分类为多个类(例如,第一类和第二类)。在将每个像素分类为第一类和第二类的实施方案中,第一类对应于图像302的使用第二水印126混合的像素,并且第二类对应于图像302的未使用第二水印126混合的像素。水印检测器机器学习模型132a基于可能编码图像302的像素特性对像素进行分类。例如,被分类为第一类(即,使用第二水印编码)的像素即使对于人眼在视觉上不可分辨,对于水印检测器机器学习模型132a也是可区分的。例如,32比特rgb像素对于每个颜色通道(例如,红色(r)、绿色(g)和蓝色(b))以及用于透明度的“阿尔法”通道包括8个比特。这种格式可以支持可由计算系统识别的4,294,967,296种颜色组合,即使这些组合的一部分对于人眼是不可区分的。
[0065]
基于分类的像素,水印检测器机器学习模型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,分割掩码310识别可能编码图像302的包括水印126a和126b的部分。在检测到水印之后,可以由水印解码器134处理可能编码图像302,如下文详细讨论的。
[0066]
在另一示例中,水印检测器机器学习模型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。
[0067]
图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卷积的卷积层,然后是上采样层,在上采样层之后每个块的输入附加有来自编码器块的特征图。
[0068]
cnn 350被配置成接收诸如可能编码源图像302的图像作为输入,并生成分割掩码作为输出,该分割掩码基于cnn 350的训练来识别不同图像片段的分类。例如,cnn 350生成尺寸为1000
×
1000
×
1的分割掩码390作为输出,其中分割掩码的每个值对应于分配给可能编码图像302的相应像素的标签。例如,如果可能编码图像302的像素被分类为第一类,则可
以为其分配标签“1”,并且如果像素被分类为第二类,则可以为其分配标签“0”。如图3a所示,分割掩码310包括包含被分类为第一类的像素的两个部分310a和310b,以及包含被分类为第二类的像素的第三部分310c。
[0069]
在一些实施方案中,使用训练过程在训练数据集(称为检测器模型训练数据集)上训练水印检测器机器学习模型132a,该训练过程可以调整多个训练参数以生成可能编码图像302是否包括一个或多个水印的指示。检测器模型训练数据集可以包括多个训练样本,其中每个训练样本包括加水印的训练图像和识别使用水印编码的训练图像的像素的目标。例如,训练图像可以是类似于来自客户端设备104的截屏的图像,其在训练图像的一个或多个区域中包括水印。对应于训练图像的目标可以包括分割掩码,该分割掩码识别加水印的像素或未加水印的像素,或者在一些情况下识别加水印的像素和未加水印的像素两者。
[0070]
为了增强水印检测器机器学习模型132a的泛化潜力,训练过程可以使用失真装置增强检测器模型训练数据集,失真装置例如使用检测器模型训练集的现有训练样本来生成新的失真训练样本。为了生成新的训练样本,训练过程可以使训练图像集合之中的图像失真以创建失真图像。在一些实施方案中,可以通过应用在真实世界视觉数据中广泛出现的视觉扰动,诸如水平和垂直翻转、平移、旋转、裁剪、缩放、颜色失真、添加随机噪声、水平和垂直缩放以及将图像与其它背景图像拼接等,来生成失真图像。训练过程还可以通过使用有损压缩或变换技术将训练图像编码成不同的文件格式来生成新的训练样本。例如,训练过程可以使用jpeg压缩来在训练图像中引入小伪影,并且可以使用在压缩之后生成的训练图像来增强检测器模型训练数据集。
[0071]
在训练期间,训练过程可以使用诸如交叉熵损失的损失函数来调整水印检测器机器学习模型132a的各种参数。例如,逐像素交叉熵损失可以单独检查每个像素,以将类别预测与像素的目标类别进行比较,并相应地调整水印检测器机器学习模型132a的参数。训练过程本质上可以是迭代的,使得在每次迭代期间,训练过程旨在最小化交叉熵损失,例如,直到损失小于指定阈值或者直到训练过程已经执行了指定次数的迭代。交叉熵损失可以采取以下形式
[0072]
l=-(y log log(p)+(1-y)log(1-p))
[0073]
其中y是像素的目标标签,并且p是像素属于第一类的预测可能性。其它损失函数的示例可以包括加权交叉熵损失、焦点损失、灵敏度特异性损失、骰子(dice)损失、边界损失、豪斯多夫(hausdorff)距离损失或可以被计算为两种或多种不同类型的损失的平均值的复合损失。
[0074]
在一些实施方案中,水印和失真检测装置132可以实现失真检测器机器学习模型132b,失真检测器机器学习模型132b可以被配置成处理可能编码图像302,以生成可能编码图像302相对于源图像128a已经经历的一个或多个失真的指示作为输出。例如,通过处理可能编码图像302,失真检测器机器学习模型132b可以生成垂直缩放、水平缩放和图像偏移的指示作为输出。垂直和水平缩放是分别指示可能编码图像302相对于源图像128a的长度和宽度的变化的失真。可以从预测的水平和垂直缩放生成诸如缩放的其它类型的失真。
[0075]
在一些实施方案中,水印和失真检测装置132可以实现失真机器学习模型132b,失真机器学习模型132b可以被配置成仅处理可能编码图像302的包括一个或多个水印的部分,以生成可能编码图像302的部分相对于源图像128a的相应部分已经经历的一个或多个
失真的指示作为输出。例如,通过处理可能编码图像302的部分,失真检测器机器学习模型132b还可以生成垂直和水平缩放的指示作为输出,其中垂直和水平缩放是分别指示可能编码图像302的部分相对于源图像128a的部分的长度和宽度的变化的失真。
[0076]
在一些实施方案中,失真检测器机器学习模型132b可以是具有unet架构的cnn,其被训练以处理可能编码图像302的部分,以生成可能编码图像302的部分的一个或多个失真的指示作为输出。使用训练过程在训练数据集(称为失真模型训练数据集)上训练失真机器学习模型132b,该训练过程可以调整多个训练参数以生成可能编码图像302的部分中的一个或多个失真的指示。失真模型训练数据集可以包括多个训练样本,其中每个训练样本包括加水印的训练图像。例如,加水印的训练图像可以是类似于通过将第二水印126叠加在源图像128a上而生成的加水印的图像130的图像。
[0077]
在一些实施方案中,失真检测器机器学习模型132b可以被训练以检测可能编码图像302中的失真或可能编码图像302的由经训练的编码器机器学习模型112具体编码的一部分中的失真。换句话说,失真检测器机器学习模型132b被微调以检测使用特定编码器机器学习模型112编码的图像中的失真。在此类实施方案中,检测器模型训练数据集可以包括未加水印的训练图像。在训练编码器机器学习模型112之后,编码器机器学习模块112的参数被固定并且然后用于在检测器模型训练数据集中对训练图像中的每个训练图像加水印,以生成对应的加水印的训练图像。
[0078]
在一些实施方案中,当训练失真机器学习模型132b时,训练过程可以使来自失真模型训练数据集的加水印的训练图像失真,以生成失真的加水印的训练图像。例如,在训练过程的每次迭代期间,可以基于随机水平缩放因子、随机垂直缩放因子和随机图像偏移使来自失真模型训练数据集的加水印的训练图像失真。然后,训练过程将失真的加水印的训练图像和加水印的训练图像作为输入提供给失真检测器机器学习模型132b,以生成指示失真的加水印的训练图像和加水印的训练图像中的一个或多个失真的一个或多个输出。例如,在从加水印的训练图像生成失真的加水印的训练图像之后,训练过程可以将加水印的训练图像作为输入提供给失真检测器机器学习模型132b,以生成图案(称为通用图案)。类似地,训练过程可以将失真的加水印的训练图像作为输入提供给失真检测器机器学习模型132b,并生成另一图案(称为变换图案)作为输出。
[0079]
在一些实施方案中,通用图案和变换图案可以是使用一对周期信号生成的网格图案,该对周期信号在加水印的训练图像和失真的加水印的训练图像上进一步生成一对水平和垂直线。在此类实施方案中,当第二水印126叠加在源图像128a上时,信号的峰值对应于第二水印126的中心的x和y坐标。
[0080]
在生成通用图案和变换图案之后,训练过程比较两个图案以使用损失函数(例如,l2损失)计算第三误差值。应注意,第三误差值是添加到加水印的训练图像的失真的预测测量值。第三误差值有时可以采用形式||t(u0)-u1||2,其中t是指通过添加一个或多个失真对加水印的训练图像进行的变换,u0是通用图案并且u1是变换图案。然后,训练过程可以使用第三误差值来调整失真检测器机器学习模型132b的各种参数。训练过程本质上可以是迭代的,使得,在每次迭代期间,训练过程旨在最小化l2损失,例如,直到损失小于指定阈值或者直到训练过程已经执行了指定次数的迭代。
[0081]
在一些实施方案中,水印检测器机器学习模型132a和失真机器学习模型132b可以
被实现为单个机器学习模型。在一个此类示例性实施方案中,单个机器学习模型可以在两个阶段中处理信息,使得在第一阶段期间,单个机器学习模块可以处理可能编码图像302,以确定可能编码图像302的一部分包括一个或多个水印。例如,通过处理可能编码图像302并生成对应的分割掩码,该分割掩码识别可能编码图象302的包括一个或多个水印的部分。在第二阶段期间,单个机器学习模型可以处理可能编码图像302的包括一个或多个水印的部分,以生成可能编码图像302的这些部分已经经历的失真的指示。
[0082]
在水印检测器机器学习模型132a和失真机器学习模型132b可以被实现为单个机器学习模型的另一示例性实施方案中,单个机器学习模型可以被配置成处理可能编码图像302并生成三个输出,其中第一输出是识别可能编码图像302的部分的分割掩码,第二输出是预测的垂直缩放,并且第三输出是预测的水平缩放。
[0083]
在一些实施方案中,图像分析和解码器装置118可以响应于水印检测装置132不能检测和/或提取可能编码图像302的被加水印的整个区域而生成可能编码图像302的缩放版本。例如,假设分割掩码仅生成加水印的区域的一部分。在这种情况下,由于不完整的信息,加水印的解码器134将不能对水印进行解码。在这种情况下,图像分析和解码器装置118可以生成可能编码图像302的缩放版本,并检查是否可以在解码之前识别到可能编码图像302的被加水印的整个区域。
[0084]
在一些实施方案中,水印和失真检测装置132可以在检测机器学习模型132a已经成功确定了可能编码图像302中的水印的存在之后处理可能编码图像302的部分。
[0085]
在一些实施方案中,在检测到并确定可能编码图像302的一部分包括一个或多个水印之后,图像分析和解码器装置118可以基于由失真检测器机器学习模型预测的失真来修改图像的该部分,以生成可能编码图像302的与源图像130相似或接近相似的修改部分。例如,在使用水印检测器机器学习模型132a确定可能编码图像302上的水印的存在之后,图像分析和解码器装置118可以获得可能编码图像302的包括一个或多个水印的部分。响应于对一个或多个水印的存在的肯定确定,图像分析和解码器装置还可以生成指示由可能编码图像302经历的不同失真的一个或多个预测。例如,假设失真检测器机器学习模型132b预测可能编码图像302已经经历了2x垂直缩放。响应于这种预测,图像分析和解码器装置118可以修改可能编码图像的部分,以生成具有1/2的垂直缩放因子的修改版本,从而减轻由可能编码图像302经历的任何失真。
[0086]
类似地,如果失真检测器机器学习模型132b预测可能编码图像302已经经历了(使用垂直和水平缩放因子识别的)垂直和/或水平缩放,则图像分析和解码器装置118可以通过缩放可能编码图像302的部分来修改可能编码图像302的部分以生成修改版本。将修改版本缩放相同的垂直和/或水平缩放因子,从而减轻由可能编码图像302经历的任何垂直和/或水平失真。
[0087]
为了对在可能编码图像302中检测到的水印进行解码,图像分析和解码器装置包括水印解码器134。在一些实施方案中,水印解码器134可以实现解码器机器学习模型134a,解码器机器学习模型134a被配置成处理可能编码图像302的修改部分,并生成预测的第一数据项作为输出。解码器机器学习模型134a可以是被认为适合于特定实施方案的任何模型,诸如决策树、人工神经网络、遗传编程、逻辑编程、支持向量机、聚类、强化学习、贝叶斯推理等。机器学习模型还可以包括用于分析图像的计算机视觉和图像处理的方法、算法和
技术。在一些实施方案中,解码器机器学习模型134a可以是具有unet架构的深度卷积神经网络(cnn),其被训练以预测预测的第一数据项。解码器机器学习模型134a可以包括多个训练参数,可以调整多个训练参数以生成预测(例如,预测的第一数据项)。
[0088]
在一些实施方案中,在通过处理可能编码图像302来生成预测的第一数据项之后,图像分析和解码器装置118可以使用预测的第一数据项来验证可能编码图像302的真实性(或来源)。为了验证真实性(或来源),在服务器系统102内实现的验证装置140可以将预测的第一数据项与存储在响应记录数据库120中的第一数据项进行比较。如果找到匹配(例如,精确匹配),则验证装置140可以得出结论,即在客户端设备104上呈现的源图像128a实际上是由服务器系统102或内容提供商106a-b提供的。如果不存在匹配,则验证装置140可以得出结论,即在客户端设备104上呈现的源图像128a不是由服务器系统102或内容提供商106a-b提供的。
[0089]
图4是训练过程400的框图,作为端到端学习流水线的一部分,该训练过程400联合训练生成要包括在数字组件中的数字水印的编码器机器学习模型和对数字组件数字水印进行解码以获得编码在数字水印中的数据项的解码器机器学习模型。训练过程的操作示意性地由系统(例如图1的系统)执行,该系统包括编码器机器学习模型112和解码器机器学习模型134a。过程400的操作还可以被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时的,并且由一个或多个数据处理装置对指令的执行可以使一个或多个数据处理装置执行过程400的操作。训练过程400是迭代过程,其中使用步骤a至e解释过程400的每次迭代。训练过程在达到如下文所描述的终止标准之后终止。
[0090]
在一些实施方案中,使用训练过程在训练数据集(称为端到端训练数据集)上训练编码器和解码器机器学习模型,该训练过程可以通过处理加水印的数字组件(例如,可能编码图像302)来调整编码器和解码器机器学习模型的多个训练参数,以生成预测的第一数据项,其中使用第一数据项对叠加在加水印的图像上的水印进行编码。换言之,联合训练过程旨在使编码器机器学习模型将第一数据项编码成数字水印图案,然后将其叠加在数字组件上,并且使解码器机器学习模块对加水印的数字组件进行解码,以输出与第一数据项相同的预测的第一数据项。
[0091]
端到端训练数据集可以包括多个训练图像(或其它类型的数字组件)和多个第一数据项。例如,训练图像可以是类似于提供给客户端设备104的第三方内容的源图像128a-n的图像,并且第一数据项可以是编码器机器学习模型112处理以生成用于对训练图像加水印的第二水印的第一数据项。
[0092]
在训练期间,由编码器机器学习模型将多个数据项之中的每个第一数据项编码为数字水印,然后将数字水印叠加到(来自多个训练图像之中的)特定训练图像上,以获得相应的加水印的训练图像(出于图4的目的,也简称为加水印的图像)和第一误差值(称为loss1 425)。由解码器机器学习模型处理这些加水印的图像,以生成每个相应加水印的图像的预测的第一数据项和相应的第二误差值(称为loss2 460)。应注意,每个相应的加水印的图像具有用于生成相应的加水印的图像的水印的相应的第一数据项。取决于loss1 425和loss2 460,调整编码器和解码器机器学习模型的可学习参数。下文进一步描述训练过程400,并且为了简洁和易于解释,参考训练图像420和用于生成数字水印的第一数据项410来解释训练过程400。
[0093]
在训练过程400的特定迭代的步骤a期间,编码器机器学习模型112处理第一数据项410以生成第一水印。尽管图4中未示出,但水印图块化装置114可以使用第一水印来生成第二水印,第二水印例如是第一水印的图块化版本(如参考图2a和2b所示和描述)。在一些实施方案中,第二水印可以经历额外的处理,诸如,例如,裁剪第二水印使得其具有与训练图像420相同的大小(即,相同的尺寸)。第二水印还可以经历诸如如参考图3a所讨论的像素强度和透明度的调整的处理。一旦完成第二水印,就通过将第二水印与训练图像420叠加(例如,如上文所描述,使用阿尔法混合)来生成加水印的训练图像430。
[0094]
在步骤b期间,基于训练图像420和加水印的训练图像430来计算loss1 425,loss1 425指示训练图像420与加水印的训练图像430之间的差异。例如,可以使用诸如绝对误差函数的每像素损失函数来在像素级上计算图像420与430之间的差异。其它误差函数可以包括感知损失函数,诸如均方误差(l2)。
[0095]
在步骤c期间,失真装置440(例如,参考图3描述的失真装置)可以处理加水印的训练图像430以生成一个或多个失真图像450。通过添加诸如垂直和水平缩放、裁剪的一个或多个失真来生成失真图像450,以模拟可能编码图像302可能经历的真实世界图像变更。例如,失真装置440可以通过应用随机水平和垂直失真因子来使加水印的训练图像430失真。
[0096]
尽管未用作示例,但应注意,失真装置440可以生成同一图像的多个不同失真版本,这些失真版本可以用于对图像的失真版本中的水印进行解码,这提高了解码器机器学习模型134a的通用性。例如,给定特定加水印的训练图像430,失真装置440可以生成失真图像450的多个不同版本,解码器机器学习模型134a稍后可以使用这些不同版本以提高其在不同类型的失真上的通用性。
[0097]
在步骤d期间,提供失真图像450的一部分作为对解码器机器学习模型134a的输入。在一些实施方案中,尽管图4中未示出,但是在将失真图像450提供给解码器机器学习模型134a之前,可以使用水印和失真检测装置132来处理失真图像450,如参考图3a所解释的。在此类实施方案中,水印和失真检测装置132可以处理失真图像450以识别失真图像450的包括水印的一部分(如参考图3a所描述)。在一些实施方案中,可以进一步处理失真图像450的识别的部分以生成失真图像450的修改部分,其中处理可以包括减轻由加水印的训练图像430经历的任何失真。解码器机器学习模型134a处理失真图像450的识别的部分或失真图像450的修改部分,以生成包括在图像中的预测的第一数据项460。
[0098]
在步骤e期间,基于预测的第一数据项460和目标第一数据项410来计算第二误差值(称为loss2 460),第二误差值指示用于对图像加水印的第一数据项的预测值与实际值之间的差异。例如,loss2可以是s形交叉熵损失。
[0099]
在计算loss1 425和loss2 470之后,可以调整编码器机器学习模型112和解码器机器学习模型134a的可学习参数以最小化总损失(即,loss1+loss2)或单独的loss1和loss2值。总损失可以表示如下:
[0100]
总损失=||i
w-io||2+交叉熵(md,mo)
[0101]
其中iw是加水印的训练图像430,io是训练图像420,md是预测的第一数据项460,并且mo是目标第一数据项410。也就是说,损失值的大小指示预测距实际值多远(例如,预测的第一数据项460与目标第一数据项410之间的差异),并且损失值的符号指示必须调整可学习参数的方向。应注意,loss1 425和loss2 470可以被视为两个相互竞争的目标。例如,
loss1 425的目标是尽可能少地改变训练图像,而loss2 470的目标是使解码尽可能准确。使用平衡两个损失函数的相同训练图像来训练编码器机器学习模型和解码器机器学习模型两者。
[0102]
如前所述,训练过程400是在端到端训练数据集的训练样本上迭代的迭代过程。当达到终止标准时,训练过程400终止。例如,当在步骤b和e期间计算的损失值低于指定阈值时,训练过程400可以终止。例如,如果总误差的指定阈值被设定在0.1处,则训练过程将继续在训练图像上迭代,直到loss1+loss2的值》0.1。在另一示例中,训练过程400可以在指定次数的迭代(例如,10,000次迭代)之后终止。
[0103]
图5a是用于作为端到端学习流水线的一部分联合训练编码器机器学习模型和解码器机器学习模型的示例性过程的流程图。过程500的操作可以例如由包括图像分析和解码器装置118的服务器系统102实现。过程500的操作还可以被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时的,并且由一个或多个数据处理装置对指令的执行可以使一个或多个数据处理装置执行过程500的操作。
[0104]
训练过程500的操作在端到端训练数据集的训练样本上迭代。当达到终止标准时,训练过程500终止。例如,当总损失低于指定阈值时,训练过程500可以终止。例如,如果总损失的指定阈值被设定在0.1处,则训练过程将继续在训练图像上迭代,直到总损失的值《=0.1。在另一示例中,训练过程500可以在指定次数的迭代(例如,10,000次迭代)之后终止。
[0105]
服务器系统102获得多个训练图像和多个数据项(505)。例如,可以使用端到端训练数据集来训练编码器和解码器机器学习模型。端到端训练数据集可以包括多个训练图像和多个第一数据项。例如,训练图像可以是类似于提供给客户端设备104的第三方内容的源图像128a-n的图像,并且第一数据项可以是编码器机器学习模型112处理以生成用于对训练图像加水印的第二水印的第一数据项。
[0106]
服务器系统102使用编码器机器学习模型来生成第一数字水印(510)。例如,在服务器系统102的水印生成器110内实现的编码器机器学习模型112对第一数据项410进行编码,以生成第一水印(如参考图2a所示和描述)。
[0107]
服务器系统102使用图块化装置来生成第二数字水印(515)。例如,在生成第一水印之后,服务器系统102使用水印图块化装置114联合第一水印的多个实例以生成第二水印,例如,第二水印是第一水印的图块化版本(如参考图2b所示和描述)。第二水印还可以经历诸如裁剪的处理(如参考图2b和3a所讨论)。
[0108]
服务器系统102将第二数字水印与训练图像组合以获得加水印的图像(520)。如参考图4所描述的,服务器系统102可以使用比如阿尔法混合的技术来组合第二水印和训练图像420,从而对训练图像420加水印以生成加水印的训练图像430。
[0109]
服务器系统102将失真应用于加水印的图像(525)。如参考图4所描述,失真装置440可以处理加水印的训练图像430以生成一个或多个失真图像450。通过添加诸如垂直和水平缩放、与其它背景图像拼接、jpeg压缩、裁剪的一个或多个失真来生成失真图像450,以模拟图3中的可能编码图像302可能经历的真实世界图像变更。例如,失真装置440可以基于随机垂直缩放因子来使加水印的训练图像430失真。
[0110]
服务器系统102使用失真检测器机器学习模型来预测失真(530)。如参考图4所描述,失真检测器机器学习模型132b处理失真的加水印的训练图像430以生成一个或多个预
测的失真。例如,通过处理失真的加水印的训练图像430,失真检测器机器学习模型132b可以生成指示失真的加水印的训练图像430相对于训练图像420的垂直缩放的估计水平的预测的垂直缩放因子作为输出。
[0111]
服务器系统基于预测的一个或多个失真来修改失真的加水印的训练图像(535)。如参考图4所描述的,在预测失真的加水印的训练图像430中的一个或多个失真之后,图像分析和解码器装置118可以修改失真的加水印的训练图像430的部分以生成失真的加水印的训练图像430的修改部分。例如,假设失真检测器机器学习模型132b预测加水印的训练图像430已经经历了2倍的垂直缩放。响应于这种预测,图像分析和解码器装置118可以修改失真的加水印的训练图像430的部分,以生成具有1/2的垂直缩放因子的修改版本,从而减轻由加水印的训练图像430经历的任何失真。
[0112]
类似地,如果失真检测器机器学习模型132b预测加水印的训练图像430已经经历了水平缩放,则图像分析和解码器装置118可以通过缩放失真的加水印的训练图像430的部分来修改失真的加水印的训练图像430的部分以生成修改版本。
[0113]
服务器系统102对水印进行解码以生成预测的第一数据项(540)。如参考图4所描述,为了对在加水印的训练图像中检测到的水印进行解码,解码器机器学习模型134a处理失真的加水印的训练图像的修改部分以生成预测的第一数据项作为输出。
[0114]
服务器系统102确定第一误差值(545)。例如,基于训练图像420和加水印的训练图像430来计算loss1 425,loss1 425指示训练图像420与加水印的训练图像430之间的差异。例如,可以使用诸如绝对误差函数的每像素损失函数来在像素级上计算图像420与430之间的差异。
[0115]
服务器系统102确定第二误差值(550)。例如,基于预测的第一数据项460和第一数据项410来计算第二误差值(称为loss2 460),第二误差值指示用于对图像加水印的第一数据项的预测值与实际值之间的差异。例如,loss2可以是s形交叉熵损失。
[0116]
服务器系统102调整编码器和解码器机器学习模型的参数(555)。在计算loss1 425和loss2 470之后,可以调整编码器机器学习模型112和解码器机器学习模型134a的可学习参数,以最小化总损失(即,loss1+loss2)或单独的loss1和loss2值。例如,损失值的大小指示预测距实际值多远,并且损失值的符号指示必须调整可学习参数的方向。总损失可以表示如下
[0117]
总损失=||i
w-io||2+交叉熵(md,mo)
[0118]
其中iw是加水印的训练图像430,io是训练图像420,md是预测的第一数据项460,并且mo是目标第一数据项410。也就是说,损失值的大小指示预测距实际值多远,并且损失值的符号指示必须调整可学习参数的方向。
[0119]
图5b是用于训练失真检测器机器学习模型的示例性过程560的流程图。过程560的操作可以例如由包括图像分析和解码器装置118的服务器系统102实现。过程550的操作还可以被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时的,并且由一个或多个数据处理装置对指令的执行可以使一个或多个数据处理装置执行过程560的操作。
[0120]
训练过程560的操作在端到端训练数据集的训练样本上迭代。当达到终止标准时,训练过程560终止。例如,当总损失低于指定阈值时,训练过程560可以终止。例如,如果总损
失的指定阈值被设定在0.1处,则训练过程将继续在训练图像上迭代,直到总损失的值《=0.1。在另一示例中,训练过程560可以在指定次数的迭代(例如,10,000次迭代)之后终止。
[0121]
服务器系统102获得多个训练图像和多个数据项(565)。例如,可以使用失真模型训练数据集来训练失真检测器机器学习模型。失真模型训练数据集可以包括多个训练图像和多个第一数据项。例如,训练图像可以是类似于提供给客户端设备104的第三方内容的源图像128a-n的图像,并且第一数据项可以是编码器机器学习模型112处理以生成用于对训练图像加水印的第二水印的第一数据项。
[0122]
服务器系统102固定编码器机器学习模型的权重(570)。为了检测可能编码图像302中的失真或可能编码图像302的由经训练的编码器机器学习模型112具体编码的一部分中的失真,训练过程560可以固定编码器机器学习模型112的参数,以便在失真模型训练数据集中对训练图像中的每个训练图像加水印以生成对应的加水印的训练图像。
[0123]
服务器系统102使用编码器机器学习模型来生成加水印的训练图像(575)。例如,在服务器系统102的水印生成器110内实现的编码器机器学习模型112对第一数据项进行编码以生成第一水印(如参考图2a所示和描述)。在生成第一水印之后,服务器系统102使用水印图块化装置114联合第一水印的多个实例以生成第二水印,例如,第二水印是第一水印的图块化版本(如参考图2b所示和描述)。第二水印还可以经历诸如裁剪的处理(如参考图2b和3a所讨论的)。服务器系统102将第二数字水印与训练图像组合以获得加水印的图像。如参考图4所描述的,服务器系统102可以使用比如阿尔法混合的技术来组合第二水印和训练图像,从而对训练图像加水印以生成加水印的训练图像。
[0124]
服务器系统102将失真应用于加水印的图像(580)。如参考图4所述,失真装置可以处理加水印的训练图像以生成一个或多个失真的加水印的图像。通过添加诸如垂直和水平缩放、与其它背景图像拼接、jpeg压缩、裁剪的一个或多个失真来生成失真的加水印的图像,以模拟图3中的可能编码图像302可能经历的真实世界图像变更。例如,失真装置可以使来自失真模型训练数据集的加水印的训练图像失真以生成失真的加水印的训练图像。
[0125]
服务器系统102使用失真检测器机器学习模型来预测失真(585)。如参考图4所描述,失真检测器机器学习模型132b处理失真的加水印的训练图像以生成一个或多个预测的失真。例如,通过处理失真的加水印的训练图像,失真检测器机器学习模型132b可以生成指示失真的加水印的训练图像相对于训练图像的垂直缩放的估计水平的预测的垂直缩放因子作为输出。
[0126]
为了生成输出,训练过程560可以将失真的加水印的训练图像和加水印的训练图像作为输入提供给失真检测器机器学习模型132b,以生成指示失真的加水印的训练图像和加水印的训练图像中的一个或多个失真的一个或多个输出。例如,在从加水印的训练图像生成失真的加水印的训练图像之后,训练过程可以将加水印的训练图像作为输入提供给失真检测器机器学习模型132b,以生成图案(称为通用图案)。类似地,训练过程可以将失真的加水印的训练图像作为输入提供给失真检测器机器学习模型132b,并生成另一图案(称为变换图案)作为输出。
[0127]
服务器系统102确定第三误差值(590)。例如,在生成通用图案和变换图案之后,训练过程比较两个图案以使用损失函数(例如,l2损失)计算第三误差值。第三误差值有时可以采用形式||t(u0)-u1||2,其中t是指通过添加一个或多个失真对加水印的训练图像进行
的变换,u0是通用图案并且u1是变换图案。
[0128]
服务器系统102调整编码器和解码器机器学习模型的参数(595)。例如,训练过程560可以使用第三误差值来调整失真检测器机器学习模型132b的各种参数。训练过程本质上可以是迭代的,使得,在每次迭代期间,训练过程旨在最小化l2损失,例如,直到损失小于指定阈值或者直到训练过程已经执行了指定次数的迭代。
[0129]
图6是用于向源图像添加数字水印的示例性过程600的流程图。过程600的操作可以例如由图1所示的系统实现,该系统包括服务器系统102,服务器系统102又包括水印生成器110。过程600的操作还可以被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时的,并且由一个或多个数据处理装置对指令的执行可以使一个或多个数据处理装置执行过程600的操作。
[0130]
在训练端到端学习流水线之后,由提供数字水印的实体部署包括编码器机器学习模型112和水印图块化装置114的水印生成器110。例如,如果服务器系统102被配置成与内容提供商106a-n的计算系统通信,例如,以获得用于客户端设备104的源图像128a,则服务器系统102可以包括可以用于生成数字水印的水印生成器110。服务器系统102可以在生成半透明水印之后传输源图像128a和半透明水印以及指导在客户端设备104上执行的应用将半透明水印叠加在源图像128a上的指令。如果内容提供商106a-n被配置成独立地与客户端设备104通信,则内容提供商106a-106n可以包括可以用于生成数字水印的水印生成器110。
[0131]
服务器系统102获得源图像(610)。例如,客户端设备104可以直接从内容提供商106a-n中的一个的对应计算系统请求源图像128a,或经由诸如由服务器系统102或另一服务器系统提供的服务的中介服务间接请求源图像128a。服务器系统102可以被配置成与内容提供商106a-n的计算系统通信,例如,以获得要提供给客户端设备104的源图像128a。
[0132]
服务器系统102获得第一数据项(620)。例如,服务器系统102可以被配置成用电子文档和要在电子文档中显示在源图像128a上的半透明的第二水印126响应来自客户端设备104的请求。为了生成半透明水印,服务器系统102可以包括水印生成器110,水印生成器110可以进一步包括可以通过处理第一数据项122来生成第一水印的编码器机器学习模型112。例如,第一数据项122可以是识别内容提供商106a-n的独特标识符。第一数据项122还可以包括会话标识符,该会话标识符独特地识别客户端设备104与服务器系统102之间的网络会话,在该网络会话期间,对来自客户端设备104的请求提供响应。第一数据项122还可以包括或参考识别提供给客户端设备104的特定源图像128a的图像数据或与源图像128a相关联的信息(例如,指示内容提供商106a-n中的哪一个提供了提供给客户端设备104的特定源图像128a的信息以及指示何时提供或请求源图像128a的时间戳)。
[0133]
服务器系统102生成第一数字水印(630)。如参考图1所述,在服务器系统102的水印生成器110内实现的编码器机器学习模型112被配置成接收第一数据项122作为输入,以生成第一水印124,其将第一数据项124编码到第一水印124中。在一些实施方案中,第一水印124可以是表示如图2中所描绘的第一数据项122的矩阵型条形码。第一水印124在像素的行和列的数量方面可以具有预定义大小。第一水印124中的每个像素可以对多个数据比特进行编码,其中多个比特的值由不同颜色表示。例如,对二进制值
‘
00’进行编码的像素可以是黑色的,而对二进制值
‘
11’进行编码的像素可以是白色的。类似地,对二进制值
‘
01’进行编码的像素可以是较浅的黑色阴影(例如,深灰色),而对二进制值
‘
10’进行编码的像素可
以是更浅的黑色阴影(例如,浅灰色)。在一些实施方案中,第一水印的最小编码单元实际上可以大于单个像素。但是,为了本文描述的示例的目的,假设最小编码单元是单个像素。然而,应当认识到,本文描述的技术可以扩展到其中最小编码单元是多个像素的集合(例如,2
×
2或3
×
3像素集合)的实施方案。
[0134]
参考描绘示例性水印200的图2a进一步解释示例性第一水印124。在此示例中,水印200具有32
×
64像素的固定大小,但是具有其它预定义大小的水印也将是合适的。水印200的区别性特征在于每个像素可以采用包括白色或黑色的不同颜色阴影值。
[0135]
服务器系统102生成第二数字水印(640)。如参考图1所描述的,服务器系统102在生成第一水印124之后使用水印图块化装置114联合第一水印124的多个实例以生成第二水印126。例如,水印图块化装置114可以通过并排放置第一水印124的两个或更多个实例来生成第二水印126。参考描绘示例性第二水印250的图2b进一步解释示例性第三水印126。在图2b的示例中,第二水印250具有64
×
128像素的大小,并且由水印图块化装置114通过将四个第一水印放置在二乘二阵列中来生成。例如,水印250包括第一水印124的四个实例(255至258)。在生成第二水印126之后,可以更新第二水印128使得第二水印的大小不大于源图像128a的大小。例如,如果第二水印126的大小大于源图像128a的大小,则可以裁剪第二水印128以匹配源图像128a的大小。
[0136]
将第二数字水印250与源图像128a组合以获得加水印的图像130(650)。如参考图1所描述,当服务器系统102生成响应以返回到客户端设备104作为对客户端对电子文档的请求的回复时,响应可以包括计算机代码,该计算机代码指示客户端设备104在执行响应时在源图像128a上显示第二水印126的一个或多个实例,例如,以向源图像128a添加对人类用户基本上不可辨识的水印。在客户端设备104处的渲染电子文档的应用可以执行阿尔法混合技术,以根据第二水印126的指定透明度将第二水印126叠加在源图像128a上,该指定透明度指定当将第二水印126叠加在源图像128a上时第二水印126的不透明度。例如,服务器系统102可以添加代码,该代码指引客户端设备104将源图像128a显示为电子文档中的第三方内容槽中的背景图像,并将第二水印126的一个或多个实例显示为图像128a上的前景图像。将第二水印126叠加在源图像128a上的阿尔法混合技术也可以由诸如服务器系统102或内容提供商106a-n的其它实体来执行。例如,如果服务器系统102或内容提供商106a-n被配置成向客户端设备104传输加水印的图像130,则对应实体可以执行阿尔法混合技术以生成加水印的图像130,然后将加水印的图像130传输到客户端设备104。
[0137]
图7是检测图像是否包括一个或多个数字水印并对一个或多个数字水印进行解码的示例性过程700的流程图。过程700的操作可以例如由包括图像分析和解码器装置118的服务器系统102实现。过程700的操作还可以被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时的,并且由一个或多个数据处理装置对指令的执行可以使一个或多个数据处理装置执行过程700的操作。
[0138]
已经参考服务器系统102实现图像分析和解码器装置118的假设来解释过程700。然而,应理解,图像分析和解码器装置118可以由诸如内容提供商106a-n的其它实体来实现。
[0139]
服务器系统102获得图像(710)。在一些实施方案中,并且如参考图1和3a所描述,可能编码图像302由服务器系统102获得,服务器系统102包括图像分析和解码器装置118,
图像分析和解码器装置118进一步包括水印和失真检测装置132和水印解码器134。例如,客户端设备104的用户可以响应于对电子文档的请求而接收不适当或不相关的内容(例如,暴力、血腥、仇恨言论或引起关于内容的来源的担忧的任何内容)。用户可以捕获内容的截屏(称为可能编码图像或候选图像),并将截屏传输到图像分析和解码器装置118以进行分析,例如,以询问呈现给用户并由可能编码图像描绘的内容的来源。虽然图像分析和解码器装置118接收多个图像,但不需要同时接收它们。例如,可以在一段时间内获得图像,因为图像是由在发布者的所有物上呈现内容的用户提交的。
[0140]
服务器系统102确定数字水印被嵌入在可能编码图像的一部分中(720)。如参考图3a所描述的,在对可能编码图像302进行任何处理以检查由水印解码器134进行的任何失真或解码之前,由水印和失真检测装置132执行关于可能编码图像是否包括视觉上可辨别的水印的确定。在图像的任何进一步处理之前使用检测机器学习算法132a来确定可能编码图像302是否包括水印提供了更高效的计算系统。例如,基于unet的检测机器学习模型132a可以用于在需要更密集计算的失真检测器机器学习模型132b和解码器机器学习模型处理可能编码图像302之前检测接收到的图像中的水印的存在。这样,系统可以忽略未检测到水印的任何图像,而不浪费执行进一步计算所需的资源。例如,如果在可能编码图像302中没有检测到水印,则服务器系统102可以采用其它技术(在本文档的范围之外)来核实可能编码图像302中的水印的存在。
[0141]
水印检测器机器学习模型132a被配置成处理可能编码图像302,并生成可能编码图像302是否包括水印的一部分或一个或多个水印的指示作为输出。例如,水印检测器机器学习模型可以被实现为分类模型,该分类模型可以处理可能编码图像302,以将图像分类为包括水印的图像或不包括水印的图像。
[0142]
水印检测器机器学习模型132可以被配置成执行语义图像分割以确定可能编码图像302的包括水印的部分。
[0143]
服务器系统102使用失真检测器机器学习模型来预测可能编码图像的部分中的一个或多个失真(730)。如参考图3a所描述,水印和失真检测装置132可以实现失真检测器机器学习模型132b,失真检测器机器学习模型132b可以被配置成处理可能编码图像302或可能编码图像302的包括一个或多个水印的部分(从过程600的步骤620获得),以生成可能编码图像302相对于源图像128a已经经历的失真的指示作为输出。例如,失真检测器机器学习模型可以生成垂直和水平缩放的指示作为输出,其中垂直和水平缩放是沿着可能编码图像302或可能编码图像302的部分的长度和宽度的失真。应注意,水印和失真检测装置132可以在检测机器学习模型132a已经成功确定了可能编码图像302中的水印的存在之后处理可能编码图像302或可能编码图像302的部分。
[0144]
服务器系统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的垂直缩放,则将通过对可能编码图像130的部分执行1/2的水平缩放和1/3的垂直缩放来生成可能编码图像302的修改部分。
[0145]
服务器系统102对图像的修改部分中包括的水印进行解码(750)。如参考图3a所描述,例如,为了对在可能编码图像302中检测到的水印进行解码,图像分析和解码器装置包括水印解码器134。在一些实施方案中,水印解码器134可以实现解码器机器学习模型134a,解码器机器学习模型134a被配置成对可能编码图像302的修改部分进行解码,以生成预测的第一数据项作为输出,预测的第一数据项被预测为被编码在图像中包括的水印内。
[0146]
服务器系统102验证预测的第一数据项(760)。例如,在通过处理可能编码图像302来生成预测的第一数据项之后,图像分析和解码器装置118可以使用预测的第一数据项来验证可能编码图像302的真实性(或来源)。为了验证真实性(或来源),在服务器系统102内实现的验证装置140可以将预测的第一数据项与存储在响应记录数据库120中的第一数据项进行比较。如果找到匹配,则验证装置140可以得出结论,即在客户端设备104上呈现的源图像128a实际上是由服务器系统102或内容提供商106a-b提供的。如果不存在匹配,则验证装置140可以得出结论,即在客户端设备104上呈现的源图像128a不是由服务器系统102或内容提供商106a-b提供的。
[0147]
图8是可以用于执行上文描述的操作的示例性计算机系统800的框图。系统800包括处理器810、存储器820、存储设备830和输入/输出设备840。组件810、820、830和840中的每一个可以例如使用系统总线850相互连接。处理器810能够处理用于在系统800内执行的指令。在一些实施方案中,处理器810是单线程处理器。在另一实施方案中,处理器810是多线程处理器。处理器810能够处理存储在存储器820中或在存储设备830上的指令。
[0148]
存储器820存储系统800内的信息。在一种实施方案中,存储器820是计算机可读介质。在一些实施方案中,存储器820是易失性存储器单元。在另一实施方案中,存储器820是非易失性存储器单元。
[0149]
存储设备830能够为系统800提供大容量存储。在一些实施方案中,存储设备830是计算机可读介质。在各种不同的实施方案中,存储设备830可以包括例如硬盘设备、光盘设备、由多个计算设备(例如,云存储设备)通过网络共享的存储设备、或一些其它大容量存储设备。
[0150]
输入/输出设备840为系统700提供输入/输出操作。在一些实施方案中,输入/输出设备840可以包括一个或多个网络接口设备,例如以太网卡、串行通信设备(例如,rs-232端口)和/或无线接口设备,例如以及802.11卡。在另一实施方案中,输入/输出设备可以包括驱动器设备,驱动器设备被配置成接收输入数据并将输出数据发送到外部设备860,例如键盘、打印机和显示设备。然而,也可以使用其它实施方案,诸如移动计算设备、移动通信设
备、机顶盒电视客户端设备等。
[0151]
尽管在图1至6中描述了示例处理系统,但本说明书中描述的主题和功能操作的实施方案也可以在其它类型的数字电子电路中实现,或者在包括本说明书中公开的结构及其结构等效物的计算机软件、固件或硬件中实现,或者在它们中的一个或多个的组合中实现。
[0152]
本说明书中描述的主题和操作的实施例可以在数字电子电路中实现,或者在包括本说明书中公开的结构及其结构等效物的计算机软件、固件或硬件中实现,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在一个或多个计算机存储介质(或媒介)上以供数据处理装置执行或控制数据处理装置的操作。替代地或另外,程序指令可以在人工生成的传播信号(例如,机器生成的电信号、光信号或电磁信号)上编码,所述信号被生成以编码用于传输到合适的接收器装置以供数据处理装置执行的信息。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或它们中的一个或多个的组合或被包括其中。此外,虽然计算机存储介质不是传播信号,但计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的来源或目的地。计算机存储介质还可以是一个或多个单独的物理组件或介质(例如,多个cd、磁盘或其它存储设备)或被包括在其中。
[0153]
本说明书中描述的操作可以被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其它来源接收的数据执行的操作。
[0154]
术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,例如包括可编程处理器、计算机、片上系统、前述中的多个或组合。该装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还可以包括为讨论中的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境可以实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
[0155]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适合于在计算环境中使用的其它单元。计算机程序可以但不必对应于文件系统中的文件。程序可以被存储在保存其它程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于讨论中的程序的单个文件中,或存储在多个协调文件(例如存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可以被部署为在一个计算机上或在位于一个站点处或跨多个站点分布并通过通信网络互连的多个计算机上执行。
[0156]
本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,所述处理器执行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实现为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。
[0157]
例如,适合于执行计算机程序的处理器包括通用和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根
据指令来执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)接收数据或向其传送数据,或这两者。然而,计算机不需要有此类设备。此外,计算机可以被嵌入另一设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备(例如通用串行总线(usb)闪存驱动器),仅举几例。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移除磁盘;磁光盘;以及cd-rom和dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0158]
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有:用于向用户显示信息的显示设备,例如crt(阴极射线管)或lcd(液晶显示器)监视器;以及用户可以通过其向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也可以使用其它种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声学、语音或触觉输入。另外,计算机可以通过向由用户使用的设备发送文档和从由用户使用的设备接收文档来与用户交互;例如通过响应于从web浏览器接收到的请求而将web页发送到用户的客户端设备上的web浏览器。
[0159]
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有用户可以通过其与本说明书中描述的主题的实施方案交互的图形用户界面或web浏览器的客户端计算机,或者一个或多个此类后端、中间件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互通网络(例如,因特网)和对等网络(例如,自组织对等网络)。
[0160]
计算系统可以包括客户端和服务器。客户端和服务器通常远离彼此,并且通常通过通信网络进行交互。客户端与服务器之间的关系是由于在相应计算机上运行的计算机程序而产生的,并且彼此之间具有客户端-服务器关系。在一些实施例中,服务器向客户端设备传输数据(例如,html页面)(例如,为了向与客户端设备交互的用户显示数据和从与客户端设备交互的用户接收用户输入)。可以在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
[0161]
尽管本说明书包括许多具体实现细节,但这些细节不应被解释为对任何发明或可能要求保护的范围的限制,而是作为对特定发明的特定实施例的特定特征的描述。本说明书中在分离的实施例的场境中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的场境中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管特征可以在上文中描述为以某些组合起作用,并且甚至最初如此要求保护,但在一些情况下,来自要求保护的组合的一个或多个特征可从该组合中删除,并且要求保护的组合可涉及子组合或子组合的变体。
[0162]
类似地,尽管图中以特定顺序描绘了操作,但这不应被理解为要求以所示的特定顺序或以先后顺序执行此类操作或执行所有图示的操作以实现期望的结果。在某些情况
下,多任务和并行处理可以是有利的。此外,上文描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应理解,所描述的程序组件和系统通常可以被集成在单个软件产品中或打包到多个软件产品中。
[0163]
因此,已经描述了主题的特定实施例。其它实施例在所附权利要求的范围内。在一些情况下,权利要求书中记载的动作可以以不同的顺序执行,并且仍然可以实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或先后顺序来实现期望的结果。在某些实施方案中,多任务和并行处理可以是有利的。
技术特征:
1.一种用于联合训练用于生成嵌入到图像中的数字水印的编码器机器学习模型和用于对被编码在嵌入到所述图像中的所述数字水印内的第一数据项进行解码的解码器机器学习模型的计算机实现的方法,其中所述训练包括:获得第一多个训练图像和多个数据项,其中所述多个数据项中的每个数据项是要被编码在要嵌入到训练图像中的数字水印内的数据项;对于所述第一多个训练图像中的每个训练图像:从所述多个数据项中获得数据项;使用被提供了所述数据项作为输入的所述编码器机器学习模型来生成将所述数据项编码的第一数字水印;将所述第一数字水印的两个或更多个实例进行图块化以生成第二数字水印;将所述第二数字水印与所述训练图像组合以获得加水印的训练图像;将一个或多个失真应用于所述加水印的训练图像;使用失真检测器机器学习模型来预测所述加水印的训练图像中存在的所述一个或多个失真;基于所预测的一个或多个失真来修改所述加水印的训练图像,同时保留嵌入在失真的加水印的训练图像中的所述第二数字水印;以及使用所述解码器机器学习模型对修改的加水印的训练图像进行解码,以获得预测要嵌入到在所述失真的加水印的训练图像中所嵌入的所述第二数字水印中的解码数据项;基于所述加水印的训练图像和所述训练图像来确定第一误差值;基于所述解码数据项和所述数据项来确定第二误差值;以及调整所述编码器机器学习模型和所述解码器机器学习模型的一个或多个训练参数,以最小化所述第一误差值和所述第二误差值。2.根据权利要求1所述的方法,其中基于所述加水印的训练图像和所述训练图像来确定所述第一误差值包括:基于所述加水印的训练图像和所述训练图像来计算l2损失值。3.根据权利要求1所述的方法,其中基于所述解码数据项和所述数据项来确定所述第二误差值包括:基于所述解码数据项和所述数据项来计算s形交叉熵值。4.根据权利要求1所述的方法,其中所述一个或多个失真包括图像压缩、高斯噪声或图像缩放。5.根据权利要求1所述的方法,进一步包括,训练所述失真检测器机器学习模型,包括:获得第二多个训练图像和多个数据项,其中所述多个数据项中的每个数据项是要被编码在要嵌入到训练图像中的数字水印内的数据项;固定所述编码器机器学习模型的权重;以及对于所述第二多个训练图像中的每个训练图像:使用所述编码器机器学习模型来生成加水印的训练图像;将一个或多个失真应用于所述加水印的训练图像;使用所述失真检测器机器学习模型来预测在失真的加水印的训练图像中存在的所述一个或多个失真;
使用所述失真检测器机器学习模型来预测在所述加水印的训练图像中存在的一个或多个失真;基于在失真的加水印的训练图像中存在的所预测的一个或多个失真和在所述加水印的训练图像中存在的所预测的一个或多个失真来确定第三误差值;以及调整所述失真检测器机器学习模型的一个或多个训练参数以最小化所述第三误差值。6.根据权利要求1所述的方法,其中确定所述第三误差值包括:基于在所述失真的加水印的训练图像中存在的所预测的一个或多个失真和在所述加水印的训练图像中存在的所预测的一个或多个失真来计算l2损失值。7.一种用于联合训练用于生成嵌入到图像中的数字水印的编码器机器学习模型和用于对被编码在嵌入到所述图像中的所述数字水印内的第一数据项进行解码的解码器机器学习模型的系统,其中所述训练包括:获得第一多个训练图像和多个数据项,其中所述多个数据项中的每个数据项是要被编码在要嵌入到训练图像中的数字水印内的数据项;对于所述第一多个训练图像中的每个训练图像:从所述多个数据项中获得数据项;使用被提供了所述数据项作为输入的所述编码器机器学习模型来生成将所述数据项编码的第一数字水印;将所述第一数字水印的两个或更多个实例进行图块化以生成第二数字水印;将所述第二数字水印与所述训练图像组合以获得加水印的训练图像;将一个或多个失真应用于所述加水印的训练图像;使用失真检测器机器学习模型来预测所述加水印的训练图像中存在的所述一个或多个失真;基于所预测的一个或多个失真来修改所述加水印的训练图像,同时保留嵌入在失真的加水印的训练图像中的所述第二数字水印;以及使用所述解码器机器学习模型对修改的加水印的训练图像进行解码,以获得预测要嵌入到在所述失真的加水印的训练图像中所嵌入的所述第二数字水印中的解码数据项;基于所述加水印的训练图像和所述训练图像来确定第一误差值;基于所述解码数据项和所述数据项来确定第二误差值;以及调整所述编码器机器学习模型和所述解码器机器学习模型的一个或多个训练参数,以最小化所述第一误差值和所述第二误差值。8.根据权利要求7所述的系统,其中基于所述加水印的训练图像和所述训练图像来确定所述第一误差值包括:基于所述加水印的训练图像和所述训练图像来计算l2损失值。9.根据权利要求7所述的系统,其中基于所述解码数据项和所述数据项来确定所述第二误差值包括:基于所述解码数据项和所述数据项来计算s形交叉熵值。10.根据权利要求7所述的系统,其中所述一个或多个失真包括图像压缩、高斯噪声或图像缩放。11.根据权利要求7所述的系统,进一步包括,训练所述失真检测器机器学习模型,包
括:获得第二多个训练图像和多个数据项,其中所述多个数据项中的每个数据项是要被编码在要嵌入到训练图像中的数字水印内的数据项;固定所述编码器机器学习模型的权重;以及对于所述第二多个训练图像中的每个训练图像:使用所述编码器机器学习模型来生成加水印的训练图像;将一个或多个失真应用于所述加水印的训练图像;使用所述失真检测器机器学习模型来预测在失真的加水印的训练图像中存在的所述一个或多个失真;使用所述失真检测器机器学习模型来预测所述加水印的训练图像中存在的一个或多个失真;基于在所述失真的加水印的训练图像中存在的所预测的一个或多个失真和在所述加水印的训练图像中存在的所预测的一个或多个失真来确定第三误差值;以及调整所述失真检测器机器学习模型的一个或多个训练参数以最小化所述第三误差值。12.根据权利要求7所述的系统,其中确定所述第三误差值包括:基于在所述失真的加水印的训练图像中存在的所预测的一个或多个失真和在所述加水印的训练图像中存在的所预测的一个或多个失真来计算l2损失值。13.一种存储指令的非暂时性计算机可读介质,所述指令在由一个或多个数据处理装置执行时使所述一个或多个数据处理装置执行操作,所述操作用于联合训练用于生成嵌入到图像中的数字水印的编码器机器学习模型和用于对被编码在嵌入到所述图像中的所述数字水印内的第一数据项进行解码的解码器机器学习模型,其中所述训练包括:获得第一多个训练图像和多个数据项,其中所述多个数据项中的每个数据项是要被编码在要嵌入到训练图像中的数字水印内的数据项;对于所述第一多个训练图像中的每个训练图像:从所述多个数据项中获得数据项;使用被提供了所述数据项作为输入的所述编码器机器学习模型来生成将所述数据项编码的第一数字水印;将所述第一数字水印的两个或更多个实例进行图块化以生成第二数字水印;将所述第二数字水印与所述训练图像组合以获得加水印的训练图像;将一个或多个失真应用于所述加水印的训练图像;使用失真检测器机器学习模型来预测所述加水印的训练图像中存在的所述一个或多个失真;基于所预测的一个或多个失真来修改所述加水印的训练图像,同时保留嵌入在失真的加水印的训练图像中的所述第二数字水印;以及使用所述解码器机器学习模型对修改的加水印的训练图像进行解码,以获得预测要嵌入到在所述失真的加水印的训练图像中所嵌入的所述第二数字水印中的解码数据项;基于所述加水印的训练图像和所述训练图像来确定第一误差值;基于所述解码数据项和所述数据项来确定第二误差值;以及调整所述编码器机器学习模型和所述解码器机器学习模型的一个或多个训练参数,以
最小化所述第一误差值和所述第二误差值。14.根据权利要求13所述的非暂时性计算机可读介质,其中基于所述加水印的训练图像和所述训练图像来确定所述第一误差值包括:基于所述加水印的训练图像和所述训练图像来计算l2损失值。15.根据权利要求13所述的非暂时性计算机可读介质,其中基于所述解码数据项和所述数据项来确定所述第二误差值包括:基于所述解码数据项和所述数据项来计算s形交叉熵值。16.根据权利要求13所述的非暂时性计算机可读介质,其中所述一个或多个失真包括图像压缩、高斯噪声或图像缩放。17.根据权利要求13所述的非暂时性计算机可读介质,进一步包括,训练所述失真检测器机器学习模型,包括:获得第二多个训练图像和多个数据项,其中所述多个数据项中的每个数据项是要被编码在要嵌入到训练图像中的数字水印内的数据项;固定所述编码器机器学习模型的权重;以及对于所述第二多个训练图像中的每个训练图像:使用所述编码器机器学习模型来生成加水印的训练图像;将一个或多个失真应用于所述加水印的训练图像;使用所述失真检测器机器学习模型来预测在失真的加水印的训练图像中存在的所述一个或多个失真;使用所述失真检测器机器学习模型来预测在所述加水印的训练图像中存在的一个或多个失真;基于在所述失真的加水印的训练图像中存在的所预测的一个或多个失真和在所述加水印的训练图像中存在的所预测的一个或多个失真来确定第三误差值;以及调整所述失真检测器机器学习模型的一个或多个训练参数以最小化所述第三误差值。18.根据权利要求13所述的非暂时性计算机可读介质,其中确定所述第三误差值包括:基于在所述失真的加水印的训练图像中存在的所预测的一个或多个失真和在所述加水印的训练图像中存在的所预测的一个或多个失真来计算l2损失值。
技术总结
用于联合训练生成水印的编码器和对在所述水印内编码的数据项进行解码的解码器的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。该训练包括获得多个训练图像和数据项。对于每个训练图像,使用编码器来生成第一水印,并且通过图块化两个或更多个第一水印来生成随后的第二水印。使用第二水印对训练图像加水印以生成第一误差值,并且将失真添加到加水印的图像。失真检测器预测修改失真图像所基于的失真。由解码器对修改的图像进行解码以生成预测数据项和第二误差值。基于第一误差值和第二误差值来调整编码器和解码器的训练参数。参数。参数。
技术研发人员:罗曦杨 杨峰 埃尔纳兹
受保护的技术使用者:谷歌有限责任公司
技术研发日:2022.01.11
技术公布日:2023/9/13
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:厚度测量装置的制作方法 下一篇:显示装置及作业机械的制作方法