CN117597702A - 缩放无关的水印提取 - Google Patents
缩放无关的水印提取 Download PDFInfo
- Publication number
- CN117597702A CN117597702A CN202180098906.XA CN202180098906A CN117597702A CN 117597702 A CN117597702 A CN 117597702A CN 202180098906 A CN202180098906 A CN 202180098906A CN 117597702 A CN117597702 A CN 117597702A
- Authority
- CN
- China
- Prior art keywords
- watermark
- image
- input image
- machine learning
- learning model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000605 extraction Methods 0.000 title description 10
- 238000010801 machine learning Methods 0.000 claims abstract description 157
- 238000000034 method Methods 0.000 claims abstract description 131
- 230000011218 segmentation Effects 0.000 claims description 48
- 230000004044 response Effects 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 36
- 238000013500 data storage Methods 0.000 claims 1
- 238000004590 computer program Methods 0.000 abstract description 12
- 238000012549 training Methods 0.000 description 132
- 230000008569 process Effects 0.000 description 88
- 238000001514 detection method Methods 0.000 description 38
- 238000010191 image analysis Methods 0.000 description 35
- 230000006835 compression Effects 0.000 description 12
- 238000007906 compression Methods 0.000 description 12
- 238000009877 rendering Methods 0.000 description 11
- 238000012795 verification Methods 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 10
- 230000000007 visual effect Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000003709 image segmentation Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 206010047571 Visual impairment Diseases 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000004091 panning Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013145 classification model Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000003066 decision tree Methods 0.000 description 2
- 230000002068 genetic effect Effects 0.000 description 2
- 230000002787 reinforcement Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 101150083127 brox gene Proteins 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0021—Image watermarking
- G06T1/005—Robust watermarking, e.g. average attack or collusion attack resistant
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0021—Image watermarking
- G06T1/005—Robust watermarking, e.g. average attack or collusion attack resistant
- G06T1/0064—Geometric transfor invariant watermarking, e.g. affine transform invariant
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0051—Embedding of the watermark in the spatial domain
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0065—Extraction of an embedded watermark; Reliable detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0083—Image watermarking whereby only watermarked image required at decoder, e.g. source-based, blind, oblivious
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Editing Of Facsimile Originals (AREA)
- Image Processing (AREA)
Abstract
方法、系统和装置,包括在计算机存储介质上编码的计算机程序,用于确定视觉上不可察觉的水印或视觉上可察觉的水印,并基于确定来输出结果。水印解码器接收输入图像。水印解码器应用解码器机器学习模型来以不同缩放级别解码水印。水印解码器确定水印是否被解码以获得解码的水印。水印解码器基于水印是否通过将解码器机器学习模型应用于输入图像被解码的确定来输出结果,其包括输出通过将解码器机器学习模型应用于输入图像而解码的缩放的输出。
Description
技术领域
本说明书总体上涉及用于从图像中恢复水印的数据处理和技术。
背景技术
在诸如因特网的网络环境中,第一方内容提供者可以提供用于在例如网页或应用界面的电子文档中呈现的信息。这些文档可以包括由第一方内容提供者提供的第一方内容和由第三方内容提供者(例如,与第一方内容提供者不同的内容提供者)提供的第三方内容。
第三方内容可以使用各种技术添加到电子文档。例如,一些文档包括指示在其处呈现文档的客户端设备直接从第三方内容提供者(例如,从与提供第一方内容的服务器位于不同域中的服务器)请求第三方内容项的标记。其他文档包括指示客户端设备调用与多个第三方内容提供者合作的中间服务以返回从一个或多个第三方内容提供者选择的第三方内容项的标记。在一些情况下,第三方内容项被动态选择以用于在电子文档中呈现,并且为文档的给定服务选择的特定第三方内容项可能与为同一文档的其他服务选择的第三方内容项不同。
发明内容
通常,本说明书中描述的主题的一个创新方面可以体现在包括以下操作的方法中:由包括一个或多个处理器的水印解码器接收输入图像;由水印解码器将解码器机器学习模型应用于输入图像,解码器机器学习模型被训练为以不同缩放级别解码视觉上不可察觉的水印;由水印解码器确定视觉上不可察觉的水印是否通过将解码器机器学习模型应用于输入图像被解码以获得解码的水印;以及基于视觉上不可察觉的水印是否通过将解码器机器学习模型应用于输入图像被解码的确定来输出结果,包括响应于确定视觉上不可察觉的水印通过将解码器机器学习模型应用于输入图像被解码而输出缩放的输出。
在一些方面中,输出缩放的输出包括输出解码的水印的缩放版本,其中解码的水印具有对应于输入图像中描绘的项的缩放级别的缩放级别。
在一些方面中,输出缩放的输出包括输出解码的水印的版本,在解码的水印的该版本中解码的水印的单个像素使用缩放的输出中的多于一个像素来描绘。
在一些方面中,基于视觉上不可察觉的水印是否通过将输入图像应用于解码器机器学习模型被解码的确定来输出结果包括响应于确定视觉上不可察觉的水印未通过将解码器机器学习模型应用于输入图像被解码而将解码器机器学习模型重新应用于输入图像的缩放版本。
在一些方面中,将解码器机器学习模型重新应用于输入图像的缩放版本包括:将输入图像缩放至少两倍的乘数以创建输入图像的缩放版本;并且将解码器机器学习模型重新应用于输入图像的缩放版本。
在一些方面中,将输入图像缩放至少两倍的乘数包括使用输入图像的缩放版本中的至少两个像素来描绘输入图像中的单个像素。
在一些方面中,该方法还包括将检测器机器学习模型应用于输入图像;基于将检测器机器学习模型应用于输入图像来生成分割掩码,该分割掩码突出显示输入图像的水印区域;基于分割掩码来确定输入图像包括视觉上不可察觉的水印;并且基于分割掩码,基于分割掩码中用于表示视觉上不可察觉的水印的像素数相对于未缩放的图像中用于表示视觉上不可察觉的水印的像素数来确定输入图像的缩放级别。
本说明书中描述的主题的具体实施例可以被实现以便实现以下优点中的一个或多个。视觉上不可察觉的水印,为简洁起见,也简称为“水印”,可以用于确定(例如,在网站处、在流视频中或在本机应用中)与第一方内容一起呈现的第三方内容的来源。这些水印可以以比以前可能的更高效的方式被提取和解码。例如,本说明书中描述的水印提取和解码技术实现在尝试解码可能包括在图像中的水印之前检测在输入图像中是否存在水印的初始检测过程。这是出于考虑解码中涉及的计算机资源,其可以通过使用(相对于解码过程)计算成本较低的检测过程来过滤掉不包括水印的图像而减少,从而节省通过计算成本更高的解码过程处理此类输入图像所需的时间和计算资源两者。换言之,检测过程不必完全处理图像,并尝试解码每一个图像中的水印,而是可以初步确定图像是否包括水印,同时使用更少的计算资源,并且以比执行解码过程所需的时间更短的时间。这样,在发起解码过程之前使用检测过程节省计算资源,并且通过快速过滤掉不包括水印的图像,使得能够更快地识别和分析实际包括水印的图像,从而减少需要处理的数据量。相比之下,仅依靠解码过程来检测和解码带水印的图像的技术,或者不使用检测过程作为过滤机制的过程,计算成本更高。
本文讨论的检测和解码过程是缩放无关的,这意味着水印可以被直接检测和/或解码,而不管图像被捕获的缩放级别如何。更具体地,本文讨论的技术用于检测和解码原始呈现的内容的再现中(例如,在内容的图片或屏幕截图中)的水印,并且原始呈现的内容被捕获的缩放级别将因捕获的实例不同(例如,因图片不同)而变化。如果没有本文讨论的技术,则检测和/或解码输入图像中的水印(例如,再现,诸如在客户端设备处呈现的内容的图片)将需要以多个不同的缩放级别分析输入图像,这浪费计算资源和时间。因此,所公开方法的实现的动机是减少以不同的相应缩放级别重复分析图像以检测或解码水印所需的计算资源。本文讨论的技术利用模型,该模型已经被训练为检测和解码输入图像内的水印,而无需以多个不同的缩放级别重复分析输入图像。本文讨论的技术还使得能够准确检测和解码具有其他失真——诸如由图像压缩技术(例如,jpeg压缩)引起的失真——的输入图像内的水印。
通过对训练数据使用数值舍入来提高检测和/或解码模型的性能(例如,模型更准确)。例如,捕获的图像通常被存储为无符号RGB整数,但模型训练是使用浮点数执行的。当这种不匹配不会对模型性能产生重大影响时,通常会忽略它,但是在检测/解码来自图像的水印时,每个像素都很重要,使得由无符号RGB整数与用于训练的浮点数之间的不匹配导致的模型性能下降可能导致不可接受的模型性能。因此,可以将舍入技术应用于浮点数以改善模型训练,以及训练的模型检测和/或解码输入图像中的水印的能力。
在附图和下面的描述中阐述本说明书中描述的主题的一个或多个实施例的细节。主题的其他特征、方面和优点将从说明书、附图和权利要求中变得明显。
附图说明
图1是用于将具有水印图像的电子文档传输到客户端设备的计算环境的框图。
图2是以二维二进制快速响应码(QR码)形式的示例编码图像的描绘。
图3是图像分析和解码器模块的框图。
图4是预测捕获的源图像(例如,屏幕截图)是否被编码有一个或多个水印图像的示例过程的流程图。
图5是训练缩放无关的机器学习模型(解码器机器学习模型)的示例过程的流程图。
图6是对包括一个或多个水印图像的捕获的源图像(例如,屏幕截图)进行解码的示例过程的流程图。
图7是示例计算机系统的框图。
具体实施方式
本说明书描述了用于检测和解码内容的捕获的再现(例如,在客户端设备处呈现的内容的数字照片)中的视觉上不可察觉的水印的系统、方法、设备和技术。虽然下面的描述描述了相对于视觉上不可察觉的水印的水印检测,但这些技术也可以应用于视觉上可察觉的水印。视觉上不可察觉的水印,为简洁起见简称为“水印”,是半透明的,并且在正常观看条件下,人类用户在视觉上无法察觉,使得水印可以嵌入到内容中而不会降低内容的视觉质量。水印可以携带信息,诸如水印嵌入其中的图像的来源的标识符。例如,在因特网的场境中,当发布者的所有物(例如,网站、视频流、视频游戏或移动应用)被用户访问时,水印可以识别(除其他信息外)将内容放置在发布者的所有物上的实体、服务器或服务。因此,当如发布者的所有物上呈现的内容的再现(例如,内容的图片或屏幕截图)被捕获并提交以进行核实时,水印可以被检测和解码以核实内容是否实际上是由适当的实体、服务器或服务分发的。
如下文详细讨论的,水印的检测和解码可以通过机器学习模型来执行,这些机器学习模型被训练为检测和解码水印,而不管图像被捕获的缩放级别如何。例如,假设相同的内容在两个不同用户的两个不同客户端设备处呈现。在此示例中,一个客户端设备的显示特性可以使得内容以如在另一个客户端设备处呈现的内容的大小(例如,2倍缩放)的两倍(例如,4倍缩放)呈现。因此,即使每个用户以相同的缩放级别(例如,使用屏幕捕获应用或数码相机)捕获内容的呈现,捕获的内容的再现也处于不同的缩放级别。当然,即使在每个客户端设备上以相同的大小呈现内容,(例如,使用屏幕捕获应用或数码相机)捕获内容的呈现的缩放级别的差异也可能导致内容的再现处于不同的缩放级别。在任一种情况下,本文讨论的模型能够从内容的捕获的图像中的每个中检测和解码水印,尽管缩放级别存在差异。
图1是实现水印检测装置132的网络环境100的框图。环境100包括服务器系统102、客户端设备104和一个或多个图像提供者106a-n的计算系统。服务器系统102、客户端设备104和图像提供者106a-n通过诸如因特网或局域网(LAN)的一个或多个网络连接。通常,客户端设备104被配置为生成对电子文档的请求并将其传输到服务器系统102。基于来自客户端设备104的请求,服务器系统102生成响应(例如,电子文档)以返回给客户端设备104。给定的响应可以包括内容,诸如源图像128a,其被配置为被显示给客户端设备104的用户,其中源图像128a由图像提供者106a-n之一提供。服务器系统102可以用半透明水印图像126来增强服务于客户端设备104的响应,该半透明水印图像被布置用于在客户端设备104处的响应文档的呈现中显示在源图像128a上。出于示例的目的,下面的描述将使用源图像128a-n作为提供给客户端设备104的第三方内容的示例,但应该理解的是,水印图像126可以叠加在各种其它类型的可见内容上,包括本机应用内容、流视频内容、视频游戏内容或其它可见内容。
客户端设备104可以是任何类型的计算设备,其被配置为向一个或多个人类用户呈现图像和其它内容。客户端设备104可以包括应用,诸如Web浏览器应用,其向服务器系统102做出请求并接收来自服务器系统102的响应。应用可以执行来自服务器系统102的响应,诸如网页代码或其它类型的文档文件,以将响应呈现给客户端设备104的一个或多个用户。在一些实现方式中,客户端设备104包括电子显示设备(例如,LCD或LED屏幕、CRT监视器、头戴式虚拟现实显示器、头戴式混合现实显示器),或者耦合到电子显示设备,其将来自渲染的响应的内容显示给客户端设备104的一个或多个用户。显示的内容可以包括源图像128a和以基本透明的方式显示在源图像128a之上的水印图像126。在一些实现方式中,客户端设备104是笔记本计算机、智能电话、平板计算机、台式计算机、游戏机、个人数字助理、智能扬声器(例如,在语音控制下)、智能手表或另一可穿戴设备。
在一些实现方式中,在对客户端设备104的响应中提供的源图像128a是第三方内容项,例如,该第三方内容项不在由响应的第一方内容提供者提供的内容当中。例如,如果响应是网页,则网页的创建者可以在网页中包括槽,该槽被配置为由来自第三方内容提供者的图像填充,该第三方内容提供者与网页的创建者(例如,图像存储库的提供者)不同。在另一示例中,第一方内容提供者可以直接链接到第三方源图像128a。客户端设备104可以直接从图像提供者106a-n之一的对应计算系统请求源图像128a或者间接地经由中间服务,诸如由服务器系统102或另一服务器系统提供的服务,请求源图像128a。服务器系统102可以被实现为一个或多个地点中的一台或多台计算机。
服务器系统102可以被配置为与图像提供者106a-n的计算系统通信,例如,以获得源图像128a以服务于客户端设备104。在一些实现方式中,服务器系统102被配置为利用电子文档和半透明水印图像126响应来自客户端设备104的请求,该半透明水印图像126要在电子文档中被显示在源图像128a上。为了生成半透明水印,服务器系统102可以包括图像生成子系统110,图像生成子系统110可以进一步包括编码输入生成器112和水印图像生成器114。
编码输入生成器112可以处理明文数据项以生成对明文数据项进行编码的编码图像124。例如,明文数据项可以是文本样本或字符串,其包括用于识别图像的提供者或图像的其他特性的信息。例如,明文数据项可以是识别图像提供者106a-n的唯一标识符。明文数据项还可以包括会话标识符,该会话标识符唯一地识别客户端设备104和服务器系统102之间的网络会话,在该网络会话期间,响应被服务于来自客户端设备104的请求。明文数据项还可以包括或引用图像数据,这些图像数据识别服务于客户端设备104的特定源图像128a或与源图像128a相关联的信息(例如,指示图像提供者106a-n中的哪一个提供了服务于客户端设备104的特定源图像128a的信息和指示源图像128a何时被服务或请求的时间戳)。
在一些实现方式中,服务器系统102还可以包括响应记录数据库120,该响应记录数据库存储与源图像128a或服务于特定请求的响应有关的此类信息的数据,以便使详细信息可经由会话标识符或由明文数据项表示的其它信息访问。响应记录数据库120还可以将会话标识符与图像数据相关联,从而使图像数据可通过使用由明文数据项表示的会话标识符查询数据库120访问。然后,用户可以识别,例如,源图像128a-n中的哪一个在什么时间以及从哪个图像提供者106a-n服务于客户端设备104,以使用来自明文数据项的会话标识符。
服务器系统102的水印图像生成器114可以被配置为处理编码图像124,以生成半透明水印图像126。半透明水印图像126从编码图像124导出,并且还对明文数据项122进行编码。然而,水印图像126的透明度、颜色、编码像素的布置和/或其它特征可以从编码图像124的透明度、颜色、编码像素的布置和/或其它特征改变。例如,尽管编码图像124可以是均匀不透明的,并且由紧邻彼此紧密排列的编码像素组成,但是水印图像126可以包括一些完全透明的像素和一些部分透明的像素。此外,水印图像126中的编码像素可以相对于彼此间隔开,使得每个编码像素被非编码像素(即“空白”像素)包围。编码图像124到水印图像126的变换可以被执行为使得在水印图像126叠加并合并到背景源图像128a上之后,可以例如通过重建编码图像124或水印图像126来解码编码的信息。
在一些实现方式中,编码图像124是表示明文数据项122的矩阵型条形码。合适的矩阵型条形码的一个示例是快速响应码(QR码)。编码图像124可以在像素的行数和列数方面具有预定义的大小。编码图像124中的每个像素可以编码数据的二进制比特,其中每个的值由不同的颜色表示。例如,编码二进制值“1”的像素可以是黑色的,而编码二进制值“0”的像素可以是白色的。在一些实现方式中,编码图像124的最小编码单元实际上可以大于单个像素。但出于本文描述的示例的目的,假定最小编码单元为单个像素。然而,应该理解的是,本文描述的技术可以扩展到最小编码单元是多个像素集合的实现方式,例如,2x2或3x3的像素集合。参考图2进一步解释示例编码图像124。
图2描绘了QR码200的示例,其可以用作编码图像,例如,用于本说明书中描述的技术的目的的编码图像124。在此示例中,QR码200的固定大小为21x21像素,但是其他预定义大小的QR码也将是合适的。QR码200的显著特征是它的位于代码200的左上角、右上角和左下角的三个7x7像素的方形202a-202c。方形图案202a-c帮助光学读取设备定位QR码200的边界并正确定向QR码200的图像,使得可以确定像素的行和列,并且可以成功读取代码200。每个方形图案在其第一行和第七行中由七个连续的黑色像素(例如,编码值1)定义,在第二行和第六行中由模式黑-白-白-白-白-白-黑(例如,编码值1-0-0-0-0-0-1)定义,并且在第三行、第四行和第五行中由模式黑-白-黑-黑-黑-白-黑(例如,编码值1-0-1-1-1-0-1)定义。水印图像可以由QR码200形成,如关于图1所述,包括通过给代码200中的每个黑色像素分配高部分透明值,对代码200中的每个白色像素应用全透明值,在每个奇数行中将空白的(非编码的)全透明像素插入到来自QR码200的每个像素的右侧,并在代码200的每个偶数行中将空白的完全透明像素插入到来自QR码200的每个像素的左侧。结果是21x43像素的水印图像,其可以叠加在要编码的源图像上。
继续参考图1进行讨论,水印图像126可以直接从明文数据生成,而无需显式生成编码图像124作为在实现水印图像126的途中的中间操作。在一些实现方式中,服务器系统102可以直接将水印图像126合并在源图像128a之上,以用于将合并的图像服务于客户端设备104,服务器系统102可以直接对源图像128中的水印进行编码,而无需显式生成编码图像124、水印图像126或两者。
服务器系统102,在生成水印图像126之后,生成响应以返回给客户端设备104,作为对客户端对电子文档的请求的回复。响应可以包括一个或多个内容项,包括第一方内容项和第三方内容项,它们共同形成电子文档,诸如网页、应用界面、PDF、演示文稿幻灯片或电子表格。在一些实现方式中,响应包括主文档,该主文档指定如何布置和显示各种内容项。主文档,诸如超文本标记语言(HTML)页面,可以是指要在文档的呈现中显示的第一方内容项和第三方内容项。在一些实现方式中,服务器系统102被配置为将计算机代码添加到主文档,该计算机代码指示客户端设备104在执行响应时在源图像128a上显示水印图像126的一个或多个实例,例如,将人类用户基本上不可察觉的水印添加到源图像128a。由于水印图像126具有完全透明和部分透明的像素,因此在渲染电子文档的客户端设备104处的应用可以执行混合技术,以根据水印图像126的指定透明度将水印图像126叠加在源图像128a上。例如,服务器系统102可以添加代码,该代码指引客户端设备104将源图像128a显示为电子文档中的第三方内容槽中的背景图像,并将水印图像126的一个或多个实例显示为图像128a上的前景图像。
在可以有数百万个图像(和其它视觉内容)被分发到许多不同的客户端设备104的环境中,可以存在服务器系统102需要确定图像(或其它视觉内容)的提供者或来源、图像的其它特性或关于图像的特定印象(例如,呈现)的上下文的情况。例如,客户端设备104的用户可以响应于对电子文档的请求,从图像提供者106a-n之一接收不适当或不相关的图像128a。用户可以捕获编码图像130的屏幕截图(例如,在客户端设备104处呈现的图像或其它内容的再现)并将该屏幕截图传输到服务器系统102以便分析,例如,询问源图像128a的起源。因为屏幕截图示出由水印图像126叠加的原始图像128a,所以服务器系统102可以处理屏幕截图以恢复明文数据项的编码表示,其继而可以被解码以恢复明文数据项本身。然后,系统102可以将恢复的明文数据项用于各种目的,例如,查询响应记录数据库以查找关于图像128a及其起源的详细信息,或者关于其中源图像128a被服务于客户端设备104的特定客户端会话的其它信息。
为了从编码的源图像130中检测和解码明文数据项122的编码表示,服务器系统102可以包括图像分析和解码器模块118。编码的源图像130是由客户端设备104将水印图像126渲染在源图像128a上而产生的图像。即使水印图像126与源图像128a是分开的,由图像分析和解码器模块118处理的编码的源图像130可以是示出混合在源图像128a上的水印图像126的合并图像。编码的源图像130也可以称为输入图像,因为编码源图像130可以输入到图像分析和解码器模块118,以检测和/或解码作为编码源图像130的一部分的水印。被捕获并提交给图像分析和解码器模块118的编码的源图像130可以是水印图像126在源图像128a上的呈现的再现(例如,屏幕截图或其它数字捕获)。因此,原始源图像128a和原始水印图像126可以不被提交到图像分析和解码器模块118以便分析。
在一些情况下,服务器系统102,包括图像分析和解码器模块118,可以接收分析可能编码的/带水印的图像的请求。如本文所使用的,术语“可能”是指可能可归因于该项但对处理该项的处理实体(例如,服务器系统102)未知的项的条件。也就是说,项的可能条件是处理实体不知道其真实性的项的候选条件。处理实体可以执行处理以识别项的可能(候选)条件,对可能(候选)条件的真实性进行预测,和/或识别表现出特定条件的可能(候选)项。例如,可能编码的源图像是可能编码有水印的源图像,但是服务器系统102最初不知道该图像是否实际上已经带水印。因此,源图像128a可能编码有水印是源图像的候选条件,并且源图像是表现出被编码有水印的条件的候选项。可能编码的图像可以由用户捕获源图像的屏幕截图(或另一个数字再现,诸如数字照片)并将捕获的图像提供给服务器系统102以便分析而产生,但是没有更多信息将指示关于该图像是否已经被编码/带水印的确认。
在服务器系统102接收可能编码的(带水印的)源图像130的这些情况下,图像分析和解码器模块118可以包括水印检测装置132,水印检测装置132可以实现一个或多个机器学习模型(称为检测器机器学习模型),用于检测可能编码的源图像是否可能包含水印。水印检测装置132可以识别可能编码的源图像的可能编码的区域,并且可以确定可能编码的源图像130的特征的值。为简洁起见,可能编码的源图像也可以称为可能编码的图像。
如果水印检测装置132在编码的源图像130中检测到视觉上不可察觉的水印,则在图像分析和解码器模块118内实现的水印解码器134完成对可能编码的图像进行解码的一次或多次尝试。如关于其它附图进一步详细解释的,水印解码器134可以实现一个或多个机器学习模型(称为解码器机器学习模型),这些模型被配置为处理可能编码的图像的可能编码的区域和可能编码的图像302的特征,以预测可能编码的图像的水印状态。在该示例中,水印解码器134实现解码器机器学习模型134a,该模型参考图3至图6进一步解释。图像分析和解码器模块118还可以包括缩放装置138和验证装置132,下面将更详细地讨论它们。图像分析和解码器模块118和任何子系统可以被实现在实现服务器系统102的一个或多个地点中的一台或多台计算机上。
图3是示例图像分析和解码器模块118的框图300,该模块从输入到图像分析和解码器模块118的可能编码的图像302中检测和解码明文数据项122的编码表示。可能编码的图像302可以是以在客户端设备处呈现的图像的屏幕截图或数字照片的形式。例如,可能编码的图像302可以是在发布者网站上呈现的图像的屏幕截图。更具体地,可能编码的图像302可以已经被访问发布者的网站的用户捕获,然后由用户提交以报告图像的呈现(例如,作为不适当的)。图像分析和解码器模块118可以包括水印检测装置132、水印解码器134、控制器136、缩放装置138和验证装置140中的一个或多个。
在一些实现方式中,水印检测装置132可以实现机器学习模型(称为检测器机器学习模型132a),该模型被配置为处理可能编码的图像302并生成指示可能编码的图像302是否包括水印的一部分或一个或多个水印作为输出。检测器机器学习模型132a可以是任何被认为适合于特定实现方式的模型,诸如决策树、人工神经网络、遗传编程、逻辑编程、支持向量机、聚类、强化学习、贝叶斯推理等。机器学习模型还可以包括用于计算机视觉和图像处理的方法、算法和技术,用于分析图像。
在一些实现方式中,水印检测装置132还可以实现基于启发式的方法,或另一适当的基于模型或基于规则的技术,其确定可能编码的图像302是否包括水印。在这样的实现方式中,可能编码的图像302是否包括水印的一部分或一个或多个水印的指示可以是分类或数字的形式,诸如分数或概率。例如,检测器机器学习模型132a可以被实现为分类模型,该分类模型可以处理可能编码的图像302,以将图像分类为包括水印的图像或不包括水印的图像。在另一示例中,检测器机器学习模型132a可以处理可能编码的图像302以生成分数,诸如指示可能编码的图像302包括水印的可能性的分数。
在一些实现方式中,水印检测装置132可以实现检测器机器学习模型132a来执行语义图像分割。语义图像分割是将图像的每个像素分类为一个或多个类的过程。例如,检测器机器学习模型132可以处理可能编码的图像302,以将可能编码的图像302的每个像素分类为第一类和第二类。在该示例中,第一类对应于图像302的使用水印图像编码(或在客户端设备104上显示期间重叠)的像素,并且第二类对应于图像302的未使用水印图像编码的像素。检测器机器学习模型132a基于可能编码的图像302的像素特性对像素进行分类。例如,被分类为第一类(即,使用水印图像编码)的像素即使人眼在视觉上不可察觉,检测器机器学习模型132a也可区分。例如,32比特RGB像素包括针对每个颜色通道(例如,红色(R)、绿色(G)和蓝色(B))的8个比特和针对透明度的“alpha”通道。这种格式可以支持可由计算系统识别的4294967296个颜色组合,即使这些组合的一部分是人眼不可区分的。
在一些实现方式中,检测器机器学习模型132a可以生成分割掩码作为输出,该分割掩码识别带水印的编码像素集合。例如,检测器机器学习模型132a,在将可能编码的图像302的像素分类为第一类和第二类之后,可以通过为与像素被分配到的类相关的像素分配标签来生成分割掩码。例如,检测器机器学习模型132a接收维度为1000×1000×3的可能编码的图像302(例如,来自客户端设备104的屏幕截图)作为输入,并生成维度为1000x1000x1的分割掩码作为输出,其中分割掩码的每个值对应于分配给可能编码的图像302的相应像素的标签。例如,如果可能编码的图像302的像素被分类为第一类,则可以为其分配标签“1”,并且如果该像素被分类为第二类,则可以为其分配标签“0”。在该示例中,分割掩码310由检测器机器学习模型132a通过处理可能编码的图像302而生成。如图3中可见,可能编码的图像302包括可能编码的图像302的两个不同区域中的两个水印126a和126b。分割掩码310将水印126a和126b识别为310a和310b作为可能编码的图像302的包括水印的区域。在检测到水印时,可能的编码图像302可以被分类为编码图像,并由水印解码器134处理,如下文详细讨论。
在另一示例中,检测器机器学习模型132a可以为检测器机器学习模型132a的每个类生成分割掩码。例如,检测器机器学习模型132a可以生成维度为1000×1000×NumClass的分割掩码,其中NumClass=2是检测器机器学习模型132a的类的数量。在该示例中,分割掩码可以解释为两个1000x1000矩阵,其中第一矩阵可以识别可能编码的图像302的属于第一类的像素,并且第二矩阵可以识别可能编码的图像302的属于第二类的像素。在这种情况下,使用标签“0”和“1”来指示像素是否属于特定类。例如,可能编码的图像302的其对应像素被分类为第一类的第一矩阵的值具有标签“1”,并且其对应像素被分类为第二类的元素具有标签“0”。类似地,可能编码的图像302的其对应像素被分类为第二类的元素的第二矩阵的值具有标签“1”,并且其对应像素被分类为第一类的元素具有标签“0”。
在一些实现方式中,检测器机器学习模型132a可以是具有UNet架构的深度卷积神经网络(CNN),其被训练为对可能编码的图像302执行语义分割,以检测可能编码的图像302的包括水印的区域。在以下文献中更详细地描述了具有UNet架构的CNN:Ronneberger O.、Fischer P.、Brox T.(2015)U-Net:Convolutional Networks for Biomedical ImageSegmentation(U-Net:用于生物医学图像分割的卷积网络)。在以下文献中:Navab N.,Hornegger J.,Wells W.,Frangi A.(eds)Medical Image Computing and Computer-Assisted Intervention-MICCAI 2015.MICCAI 2015.Lecture Notes in ComputerScience,Vol 9351.Springer,Cham.https://doi.org/10.1007/978-3-319-24574-4_28,其全部内容在此通过引用整体并入本文。至于另一个示例,检测器机器学习模型132可以是基于区域的卷积神经网络(R-CNN)。
在一些实现方式中,检测器机器学习模型132a可以包括多个训练参数。检测器机器学习模型132a使用训练过程在第一训练数据集上进行训练,该训练过程可以调整多个训练参数以生成可能编码的图像302是否包括水印的一部分或一个或多个水印的指示。第一训练数据集可以包括多个训练样本,其中每个训练样本包括带水印的训练图像和识别该训练图像的使用水印编码的像素的目标。例如,训练图像可以是类似于来自客户端设备104的包括训练图像的一个或多个区域中的水印的屏幕截图的图像。对应于训练图像的目标可以包括分割掩码,该分割掩码识别带水印或不带水印的像素并且在一些情况下识别训练图像的带水印和无水印的像素。
为了增强检测器机器学习模型132a的泛化潜力,训练过程可以通过使用第一数据集的现有训练样本生成新的训练样本来增强第一数据集。为了生成新的训练样本,训练过程可以使训练图像集合当中的图像失真,以创建失真的图像。在一些实现方式中,可以通过应用在真实世界视觉数据中广泛发生的视觉扰动来生成失真的图像,该视觉扰动诸如为水平和垂直翻转、平移、旋转、裁剪、缩放、颜色失真、添加随机噪声等。训练过程还可以通过使用有损压缩或变换技术将训练图像编码为不同的文件格式来生成新的训练样本。例如,训练过程可以使用JPEG压缩来在训练图像中引入小伪影,并且在压缩之后生成的训练图像可以用于增强第一数据集。
训练过程可以生成第一数据集的同一图像的多个不同缩放版本,以创建训练集,该训练集训练检测器机器学习模型132a以跨各种缩放级别检测图像中的水印。例如,给定特定训练图像,可以通过改变图像中描绘的项的缩放级别来创建训练图像的多个不同版本,从而创建特定训练图像的缩放版本。
在训练期间,训练过程可以使用诸如交叉熵损失的损失函数来调整检测器机器学习模型132a的多个参数。例如,逐像素交叉熵损失可以单独地检查每个像素,以将类预测与像素的目标类进行比较,并相应地调整检测器机器学习模型132a的参数。训练过程本质上可以是迭代的,其中在每次迭代期间,训练过程旨在最小化交叉熵损失,直到损失小于指定阈值或直到训练过程已经执行了指定迭代次数。交叉熵损失可以采取以下形式
L=-(ylog(p)+(1-y)log(1-p))
其中y是像素的目标标签,并且p是该像素属于第一类的预测可能性。其他损失函数的示例可以包括加权交叉熵损失、焦点损失、灵敏度-特异性损失、骰子损失、边界损失、豪斯多夫距离损失或可以被计算为两个或更多个不同类型的损失的平均值的复合损失。
在一些实现方式中,图像分析和解码器模块118,响应于通过水印检测装置132检测到可能编码的图像302中水印的存在,将可能编码的图像302和由水印检测装置132生成的一个或多个输出(例如,由检测器机器学习模型132a生成的分割掩码)路由到水印解码器134,用于解码和提取可能编码的图像302的水印。例如,如果水印检测装置132检测到可能编码的图像302中的水印的存在,则可能编码的图像302被分类为编码图像,并且图像分析和解码器模块134可以使用水印解码器134来对已经检测到的水印进行解码。在水印检测装置132未检测到可能编码的图像302中的水印的存在的情况下,图像分析和解码器模块118忽略可能编码的图像302并且不使用水印解码器134进一步对其进行处理,从而节省了尝试对水印进行解码将所需的计算资源。
在一些实现方式中,水印解码器134实现解码水印的过程,该过程通常涉及识别可能编码的图像302中的编码像素的编码值,例如,确定每个编码像素是否对应于编码源图像(例如,QR码)中的黑色像素(值1)或编码源图像中的白色像素(值0)。一旦已经确定了编码像素的位置或坐标,就可以采用各种解码技术来辨别像素的编码值。例如,可以将像素的颜色与其相邻像素进行比较,并且如果像素的颜色比其相邻像素暗一定量,则可以考虑从编码图像编码黑色像素(值1)。如果像素的颜色不比其相邻像素暗需要量,则可以考虑从编码图像编码白色像素(值0)。此外,可以分析来自源图像中编码的水印图像的多个实例的相同编码像素,并对结果进行统计平均。在一些实现方式中,机器学习模型(称为解码器机器学习模型134a)可以被训练为执行解码分析。
在一些情况下,即使水印检测装置132成功地检测到可能编码的图像302上的水印的存在,水印解码器134也可能不能解码水印。当水印检测装置132能够检测到一个或多个像素时,可能会出现这种情况,这些像素被编码然而可能编码的图像302已经被下采样,或者从其原始本来的缩放级别放大或缩小到水印解码器134无法解码水印的程度。例如,系统的组件可以对图像进行下采样作为图像处理的一部分,这可以导致更低的图像分辨率,其抑制对可能编码的图像302的解码。在另一个示例中,用户的设备可能已经在获得屏幕截图时捕获了图像的缩放视图,使得图像的分辨率低于原始源图像和水印图像。此外,屏幕截图可能包括由于减少屏幕截图的存储和/或传输开销的文件压缩而产生的噪声。
在水印解码器134不能准确地解码可能编码的图像302的情况下,或者在水印解码器134不以至少指定的准确度水平执行的情况下,可以使用缩放技巧来提高水印解码器解码可能编码的图像的能力。缩放技巧可以通过缩放装置138执行,该缩放装置138被配置为接收由水印检测装置118路由的可能编码的图像302作为输入,并输出图像特征的缩放版本。更具体地,缩放装置138生成可能编码的图像302的至少一个缩放版本,其可以用于解码可能编码的图像302的水印。例如,如果期望提高水印解码器134的准确度,则缩放装置138可以通过增加图像特征的分辨率(例如,增加2倍或一些其它适当的缩放量)来生成可能编码的图像302的缩放版本,从而提高水印特征的分辨率,这将增加水印解码器134的准确度。当然,可以生成可能编码的图像302的任何数量的缩放版本,但是在实践中,可能编码的图像的单个缩放版本应该就足够了。
在一些实现方式中,其中水印检测装置118仅生成例如可能编码的图像302包括水印而不是分割掩码的确认的指示,水印解码器134可以实现水印像素提取装置以识别水印的可能区域,而不是跨可能编码的图像302迭代地搜索。水印像素提取装置可以实现如参考检测器机器学习模型132a所描述的图像分割的技术。例如,水印像素提取装置可以实现诸如U-Net的机器学习模型,该模型被训练为对可能编码的图像302进行语义分割,以生成与可能编码的图像302具有相同分辨率的分割掩码310。在其它实现方式中,如果检测器机器学习模型132a识别出可能编码的图像302上的水印的可能区域,诸如通过生成识别可能编码的图像302的带水印的像素的分割掩码,则图像分析和解码器模块118可以绕过水印像素提取装置,并使用解码器机器学习模型134a来解码可能编码的图像302的水印。
在一些实现方式中,图像分析和解码器模块118可以基于分割掩码来确定可能编码的图像302的缩放级别。由于分割掩码识别出带水印的区域,所以图像分析和解码器模块118可以确定带水印的区域的特性,诸如该区域中的像素数,以确定可能编码的图像302的缩放级别。例如,假设识别为带水印的区域的区是已知水印大小的两倍。在此示例中,缩放级别将被视为200%或2倍,使得图像将被确定为以2倍缩放级别被捕获。在这样的实现方式中,图像分析和解码器模块118可以使用该信息来协助解码可能编码的图像302的水印图像,例如,通过通知将解码该缩放级别的图像的模型。
在一些实现方式中,图像分析和解码器模块118可以响应于水印像素提取装置(或水印检测装置132)不能检测和/或提取可能编码的图像302的带水印的整个区域而生成可能编码的图像302的缩放版本。例如,假设分割掩码仅生成带水印的区域的一部分。在这种情况下,水印解码器134将由于信息不完整而无法解码水印。在这种情况下,图像分析和解码器模块118可以使用缩放装置138生成可能编码的图像302的缩放版本,并在解码之前检查可能编码的图像302的带水印的整个区域是否能够被识别。
在一些实现方式中,解码器机器学习模型134a被配置为处理可能编码的图像302,并生成解码的水印图像320(也称为预测的水印图像320)作为输出。解码器机器学习模型134a可以是任何被认为适合于特定实现方式的模型,诸如决策树、人工神经网络、遗传编程、逻辑编程、支持向量机、聚类、强化学习、贝叶斯推理等。机器学习模型还可以包括用于计算机视觉和图像处理的方法、算法和技术,用于分析图像。在一些实现方式中,水印检测装置132还可以实现基于启发式的方法,或者另一适当的基于模型或基于规则的技术,其可以生成解码的水印图像320。
在一些实现方式中,解码器机器学习模型134a可以是具有UNet架构的深度卷积神经网络(CNN),该架构被训练为预测可能编码的图像302的解码的水印图像320。解码器机器学习模型134a可以包括多个训练参数,并且解码器机器学习模型134a使用训练过程在第二训练数据集上训练,该训练过程可以调整多个训练参数以生成对水印图像126的预测(例如,解码的水印图像320)。第二训练数据集可以包括多个训练样本,其中每个训练样本包括带水印的训练图像、包括水印的训练图像的区域的标识的形式(例如,识别带水印的像素和无水印的像素的分割掩码)以及包括训练图像中的水印的水印图像的目标。
为了增强解码器机器学习模型134a的泛化潜力可以通过使用第二数据集的现有训练样本生成新的训练样本来增强第二数据集。为了生成新的训练样本,训练过程可以使训练图像集合当中的训练图像失真,以创建用于训练模型的失真的图像。在一些实现方式中,可以通过应用在现实世界视觉数据中广泛发生的视觉扰动来生成失真的图像,该视觉扰动诸如为水平和垂直翻转、平移、旋转、裁剪、颜色失真、添加随机噪声等。在一些实现方式中,训练过程可以通过使用有损压缩或变换技术将训练图像编码为不同的文件格式来生成新的训练样本。例如,训练过程可以使用JPEG压缩来在训练图像中引入小伪影,并且在压缩之后生成的训练图像可以用于增强第一数据集。
训练过程可以生成第二数据集的同一图像的多个不同缩放版本,以创建训练集,该训练集训练解码器机器学习模型134a以跨各种缩放级别解码图像中的水印。例如,给定特定训练图像,可以通过改变图像中描绘的项的缩放级别来创建训练图像的多个不同版本,从而创建特定训练图像的缩放版本。由于以不同级别的缩放改变用于表示训练图像中的单个像素的像素数,因此解码器机器学习模型134a在使用增强图像进行训练时变得与用于表示水印的像素数无关。
在一些实现方式中,训练过程可以通过对表示训练图像的像素的颜色的浮点数进行舍入来进一步增强第二训练数据集。在这种情况下,训练图像是浮点图像,诸如以ARRIRAW、Blackmagic RAW、DNG、DPX、EXR、PSD和TIFF图像格式。由于浮点图像提供了最大的准确度和动态范围,所以解码器机器学习模型134a在增强的浮点图像上进行训练,以增强泛化潜力,从而覆盖所有可能的图像格式和其他图像特性的整个范围。例如,浮点图像的浮点数可以使用正常舍入进行舍入,其中舍入值是最接近浮点数的小数值。在另一个示例中,浮点图像的浮点数可以使用向下舍入进行舍入,其中舍入值是浮点数的小数部分。
在训练期间,训练过程可以使用诸如交叉熵损失的损失函数来调整解码器机器学习模型134a的多个参数。例如,逐像素交叉熵损失可以单独地检查每个像素,以将解码的(预测的)水印图像320的像素预测与目标水印图像的像素进行比较,并相应地调整解码器机器学习模型134a的参数。训练过程本质上可以是迭代的,其中在每次迭代期间,训练过程旨在最小化L2损失,直到损失小于指定阈值或直到训练过程已经执行了指定迭代次数。
在一些实现方式中,在通过处理可能编码的图像302生成解码的水印图像320之后,水印解码器134可以生成解码的水印图像320作为输出,解码的水印图像320可以由图像分析和解码器模块118用来验证可能编码的图像302的真实性(或来源)。为了验证真实性(或来源),在服务器系统102内实现的验证装置140可以使用解码的水印图像320来恢复对应的编码图像124和/或对应的明文数据项122。如果可能编码的图像302作为来自服务器系统102的响应被提供给客户端设备104,则验证装置140可以使用对应的编码图像124和/或对应的明文数据项122来验证可能编码的图像302的真实性。例如,如果服务器系统102能够从响应记录数据库120中识别出对应的编码图像124和/或对应的明文数据项122,则对应的编码图像124和/或对应的明文数据项122是有效的。服务器系统102可以基于对应的编码图像124和/或对应的明文数据项122,进一步确定关于源图像128a的信息,诸如源图像128a的提供者,以及服务于特定请求的响应的细节。如果对应的编码图像124和/或对应的明文数据项122不能被识别,则服务器系统102可以确定可能编码的图像302不是由服务器系统102传输的。换言之,如果识别可能编码的图像302的来源的信息没有被解码,则图像分析和解码器模块118可以确定可能编码的图像302不是由服务器系统102分发的,因为由服务器系统102分发的内容被编码有将服务器系统102识别为内容的来源的信息。
在一些实现方式中,水印解码器134可以生成解码的水印图像320作为输出,解码的水印图像320根据对可能编码的图像302的版本执行的缩放从其原始缩放级别被缩放。例如,为了生成解码的水印图像320,水印解码器134可以使用缩放装置138生成可能编码的图像302的200%(2倍)缩放级别的缩放版本。如上所述,这种类型的缩放可以帮助提高水印被正确解码的可能性。例如,如果原始的可能编码的图像302具有编码有水印图像的相对较小的部分,则解码的水印图像320可以证明不足以使解码器机器学习模型134a生成解码的水印图像320。在这种情况下,由解码器机器学习模型134a生成的解码的水印图像320可以被缩放以协助解码过程。
图4是预测可能编码的图像(例如,在客户端设备处呈现的内容的屏幕截图)是否被编码有一个或多个水印图像的示例过程400的流程图。过程400的操作可以例如由包括图像分析和解码器模块118的服务器系统102实现。过程400的操作也可以被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行可以使得一个或多个数据处理装置执行该过程400的操作。
获得可能编码的图像(410)。在一些实现方式中,可能编码的图像,也称为候选图像,由包括一个或多个数据处理设备和/或水印检测装置的图像分析和解码器模块118获得。例如,客户端设备104的用户可以响应于对电子文档的请求而接收不适当或不相关的内容(例如,图像或视频)。在该示例中,用户可以捕获内容的屏幕截图(称为可能编码的图像或候选图像),并将该屏幕截图传输到图像分析和解码器模块118以便分析,例如,询问呈现给用户的并且由可能编码的图像描绘的内容的起源。虽然接收到多个图像,但不需要同时接收它们。例如,图像可以在一段时间内获得,因为它们是由在发布者的所有物上呈现内容的用户提交的。
做出关于每个可能的编码图像(候选图像)是否包括视觉上不可察觉的水印的确定(420)。在一些实现方式中,在由水印解码器对候选图像进行任何处理之前,由水印检测装置执行关于候选图像是否包括视觉上不可察觉的水印的确定。在利用水印解码器处理图像之前使用水印检测装置来确定候选图像是否包括水印提供了更高效的计算系统。例如,在需要执行计算密集型解码器过程之前,可以使用更简单(例如,计算成本更低)的检测过程来检测接收到的图像中的水印的存在。因此,系统可以忽略其中未检测到水印的任何图像,而不会浪费执行解码器过程所需的资源。
水印检测装置132可以在图像分析和解码器模块118内实现,并且可以实现检测器机器学习模型132a,该模型被配置为处理候选图像并生成候选图像是否包括水印的一部分或一个或多个水印的指示作为输出。例如,检测器机器学习模型可以实现为分类模型,该模型可以处理候选图像,以将图像分类为包括水印的图像或不包括水印的图像。
在一些实现方式中,水印检测装置还可以实现检测器机器学习模型来执行语义图像分割。例如,检测器机器学习模型可以对候选图像进行处理,以将候选图像的每个像素分类为第一类和第二类。在此示例中,第一类对应于候选图像的使用水印图像编码(或在客户端设备上显示期间重叠)的像素,并且第二类对应于候选图像的未使用水印图像编码的像素。在一些实现方式中,检测器机器学习模型可以生成分割掩码作为输出,该分割掩码识别带水印的编码像素集合。例如,检测器机器学习模型在将候选图像的像素分类为第一类和第二类之后可以通过为与像素被分配到的类相关的像素分配标签来生成分割掩码。例如,如果候选图像的像素被分类为第一类,则可以为其分配标签“1”,并且如果该像素被分类为第二类,则可以为其分配标签“0”。
在一些实现方式中,对候选图像是否包括视觉上不可察觉的水印的确定使用检测器机器学习模型来执行。在这些实现方式中,确定包括使用检测器机器学习模型来确定候选图像是否包括视觉上不可察觉的水印,该模型被训练为基于对输入图像的区域的粗略分析来确定该区域是否包括视觉上不可察觉的水印,该粗略分析不需要对该区域进行逐个像素的分析。例如,编码的或黑色的比特的总数可以用作用于确定候选图像是否包括水印的条件。更具体地,如果与水印的大小相对应的区域不包括足够数量的编码的或黑色的比特,则该区域不可能包含水印,使得不需要对图像进行进一步处理。
对候选图像是否包括视觉上不可察觉的水印的确定也可以通过基于水印条件将候选图像的区域分类为带水印或不带水印来执行。例如,水印条件可以包括如上所述的编码比特的阈值数、编码比特密度阈值、编码比特分布条件或可以指示候选图像的带水印的区域的其他条件。在这些实现方式中,确定候选图像的区域中的编码像素集合,并基于编码像素集合是否满足水印条件对区域进行分类。例如,如果候选图像的特定区域的编码比特密度(例如,区域中被识别为编码的总比特的部分,诸如百分比)大于编码比特密度阈值,则该区域可以被分类为带水印的区域。但是,如果特定区域的编码比特密度小于编码比特密度阈值,则该区域可以被分类为不带水印的区域。
一旦候选图像的一个区域被分类,就可以输出该区域中的所有像素的二进制1,以将该区域标记为包括视觉上不可察觉的水印。这些二进制1可以用于为图像生成水印图。水印图指示该图中包含视觉上不可察觉的水印的区域。在一些情况下,每个区域可以包括相同的水印,使得不管分析或解码图像的哪个部分,都可以恢复水印中包含的信息。在一些情况下,图像的不同区域可以包括不同的水印,每个水印携带不同的信息,从而增加可以编码到单个图像中的信息量。
每个特定候选图像(特定图像)基于对特定图像是否包括视觉上不可察觉的水印的确定来路由。例如,响应于检测到特定图像中的水印的存在,该特定图像被路由到水印解码器134以用于解码和提取水印。对于其中未检测到水印的存在的特定图像,这些特定图像将被忽略(或丢弃),并且不被水印解码器处理。在一些实现方式中,从进一步处理中过滤掉其中未检测到水印的特定图像。
对在被路由到水印解码器的特定图像中检测到的视觉上不可察觉的水印进行解码(430)。在一些实现方式中,水印解码器使用机器解码器机器学习模型来执行对水印的解码。例如,解码器机器学习模型被配置为处理候选图像并生成解码的水印图像作为输出。解码器机器学习模型可以是具有UNet架构的深度卷积神经网络(CNN),该架构被训练为预测解码的水印图像。解码器机器学习模型可以包括多个训练参数,并且解码器机器学习模型使用训练过程在第二训练数据集上进行训练,该训练过程可以调整多个训练参数以生成水印图像的预测(例如,解码的水印图像)。可以使用解码器机器学习模型对水印进行解码,该模型被训练为解码特定图像中的视觉上不可察觉的水印,而不管图像中描绘的项的缩放级别如何。例如,如上所述,用于训练解码器机器学习模型的训练图像集合可以包括多个训练图像,这些图像以不同的缩放级别并且以不同的图像失真描绘带水印的项。为了提高模型的性能,可以使用由RGB无符号整数表示的图像在浮点数中训练解码器机器学习模型。如上所述,舍入技术可以用于解决浮点数与无符号RGB整数之间的不匹配。
图像分析和解码器模块118可以确定候选图像的水印图像没有被解码器机器学习模型解码。例如,候选图像可能包括失真,这些失真可能导致在生成解码的水印图像时可能性(或预测置信度)较低。在另一个示例中,作为输入提供给解码器机器学习模型的候选图像的缩放级别可以具有编码有水印图像的相对较小的部分,其可以证明不足以使解码器机器学习模型以足够的置信度生成解码的水印图像。当确定候选图像的水印图像被解码时,可以对解码的水印图像进行处理以进行验证。当确定候选图像的水印图像未被解码时,可以生成候选图像的一个或多个缩放版本,并且可以执行使用候选图像的一个或多个缩放版本来解码水印的附加尝试。
对解码的水印图像进行验证(440)。例如,为了验证解码的水印图像的真实性,在服务器系统内实现的验证装置可以使用解码的水印图像来恢复对应的编码图像和/或对应的明文数据项。如果由候选图像描绘的内容作为来自服务器系统102的响应被提供给客户端设备104,则验证装置140可以使用对应的编码图像和/或对应的明文数据项来验证由候选图像描绘的内容的真实性。例如,如果服务器系统能够从响应记录数据库中识别出对应的编码图像和/或对应的明文数据项,则对应的编码图像和/或对应的明文数据项是有效的。服务器系统可以基于对应的编码图像和/或对应的明文数据项,进一步确定关于源图像(例如,由图像提供者提供的图像内容)的信息,诸如源图像的提供者和服务于特定请求的响应的细节。如果对应的编码图像和/或对应的明文数据项不能被识别,则服务器系统可以确定可能编码的源图像不是由服务器系统传输的。
图5是训练缩放无关的水印模型(例如,解码器机器学习模型134b)的示例过程的流程图。过程500的操作可以例如由包括图像分析和解码器模块118的服务器系统102实现。过程500的操作也可以被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行可以使得一个或多个数据处理装置执行该过程500的操作。
获得训练图像集合(510)。在一些实现方式中,训练图像集合由包括一个或多个处理器的服务器系统102获得。服务器系统102可以执行训练过程,以使用训练图像集合来训练解码器机器学习模型134a。为了执行训练过程,服务器系统102获得训练图像集合(称为第二训练图像集合),其包括多个训练样本,其中每个训练样本包括带水印的训练图像、包括水印的训练图像的区域的标识的形式(例如,识别带水印的像素和无水印的像素的分割掩码)以及包括训练图像中的水印的水印图像的目标。
使来自训练图像集合当中的图像失真(520)。例如,为了增强解码器机器学习模型134a的泛化潜力,训练过程可以通过使用第二数据集的现有训练样本生成新的训练样本来增强第二数据集。为了生成新的训练样本,可以将失真应用于图像以创建失真的图像。在一些实现方式中,可以通过修改图像的分辨率或应用在现实世界视觉数据中广泛发生的视觉扰动来使图像失真,该视觉扰动诸如为水平和垂直翻转、平移、旋转、裁剪、颜色失真、添加随机噪声等。在一些实现方式中,训练过程可以通过使用有损压缩或变换技术将训练图像编码为不同的文件格式来生成新的训练样本。例如,训练过程可以使用JPEG压缩来在训练图像中引入小伪影,并且在压缩之后生成的训练图像可以用于增强第一数据集。在一些实现方式中,可以通过改变用于表示图像中的单个像素的像素数来创建失真的图像。
在一些实现方式中,训练过程可以通过对表示训练图像的像素的颜色的浮点数进行舍入来进一步增强第二训练数据集。在这种情况下,训练图像是浮点图像,诸如以ARRIRAW、Blackmagic RAW、DNG、DPX、EXR、PSD和TIFF图像格式。在这种情况下,浮点图像的浮点数可以使用正常舍入进行舍入,其中舍入值是最接近浮点数的小数值。在另一个示例中,浮点图像的浮点数可以使用向下舍入进行舍入,其中舍入值是浮点数的小数部分。
在一些实现方式中,训练过程可以通过生成训练图像的一个或多个缩放版本来进一步增强第二训练数据集,以便以与可能编码的图像302的缩放级别无关的方式训练解码器机器学习模型134a。例如,可以放大和/或缩小单个训练图像,以创建该图像的不同缩放版本。图像的各种缩放版本可以被包括在用于训练模型的训练图像集合中,使得模型能够检测和/或解码图像中的视觉上不可察觉的水印,而不管输入到模型的候选图像的缩放级别如何。
训练缩放无关的水印解码器模型(530)。在一些实现方式中,缩放无关的水印解码器模型被训练为解码输入到模型的候选图像中的视觉上不可察觉的水印,并且解码可以由模型跨输入图像的多个不同缩放级别执行。例如,服务器系统102可以执行训练过程,该训练过程可以使用诸如L2损失的损失函数来调整解码器机器学习模型134a的多个参数。例如,逐像素交叉熵损失可以单独地检查每个像素,以将解码的(预测的)水印图像320的像素预测与目标水印图像的像素进行比较,并相应地调整解码器机器学习模型134a的参数。训练过程本质上可以是迭代的,其中在每次迭代期间,训练过程旨在最小化交叉熵损失,直到损失小于指定阈值或直到训练过程已经执行了指定迭代次数。
在一些实现方式中,缩放无关的水印解码器模型是使用从训练图像集合当中的同一图像创建的两个或更多个不同的缩放图像来训练的。在这些实现方式中,两个不同的缩放图像中的每一个都可以使用不同数量的像素来表示同一图像的单个像素。
使用缩放的图像,还可以训练缩放无关的水印检测模型,以跨输入图像的多个缩放级别检测输入图像内的视觉上不可察觉的水印的存在。在一些实现方式中,检测是独立于使用解码器模型对视觉上不可察觉的水印进行解码而执行的。
部署缩放无关的水印模型(540)。例如,在训练解码器机器学习模型134a之后,服务器系统102可以开始接收候选图像。如果在候选图像中检测到水印的存在,则服务器系统102可以使用解码器机器学习模型134a来生成解码的水印图像320。
图6是对可能编码的图像进行解码的示例过程600的流程图。过程600的操作可以例如由包括图像分析和解码器模块118的服务器系统102实现。过程600的操作也可以被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行可以使得一个或多个数据处理装置执行该过程600的操作。
由水印解码器134接收输入图像(610)。例如,响应于检测到特定图像中的水印的存在,将该特定图像路由到水印解码器134以用于解码和提取水印,如前所述。
将解码器机器学习模型应用于输入图像(620)。水印解码器134使用解码器机器学习模型134a来执行对水印的解码。解码器机器学习模型被配置为处理输入图像(也称为候选图像)并生成解码的水印图像作为输出。解码器机器学习模型可以是具有UNet架构的深度卷积神经网络(CNN),该架构被训练为预测解码的水印图像。解码器机器学习模型可以包括多个训练参数,并且解码器机器学习模型使用训练过程在第二训练数据集上进行训练,该训练过程可以调整多个训练参数以生成水印图像的预测(例如,解码的水印图像)。
水印可以使用解码器机器学习模型进行解码,该模型被训练为解码特定图像中的视觉上不可察觉的水印,而不管图像中描绘的项的缩放级别如何。例如,如上所述,用于训练解码器机器学习模型的第二训练图像集合可以包括多个训练图像,这些图像以不同的缩放级别并且以不同的图像失真描绘带水印的项。为了提高模型的性能,可以使用由RGB无符号整数表示的图像,使用浮点数来训练解码器机器学习模型。如上所述,舍入技术可以用于解决浮点数与无符号RGB整数之间的不匹配。
图像分析和解码器模块118确定解码的水印图像是否被预测。在一些实现方式中,确定包括确定视觉上不可察觉的水印是否通过将解码器机器学习模型应用于输入图像被解码以获得解码的水印。例如,图像分析和解码器模块118可以确定候选图像的水印图像没有被解码器机器学习模型解码。在此示例中,候选图像可能包括严重的失真,这些失真可能导致在生成解码的水印图像时可能性(或预测置信度)较低,从而导致水印图像未以足够的置信度被解码的确定。在另一个示例中,作为输入被提供给解码器机器学习模型的候选图像的缩放级别可能具有编码有水印图像的相对较小的部分,其可以证明不足以使解码器机器学习模型以足够的置信度生成解码的水印图像。当确定候选图像的水印图像被解码时,可以对解码的水印图像进行处理以进行验证。当确定候选图像的水印图像未被解码时,可以生成候选图像的一个或多个缩放版本,并且可以执行使用候选图像的一个或多个缩放版本来解码水印的附加尝试。
基于视觉上不可察觉的水印是否通过将解码器机器学习模型应用于输入图像被解码来输出结果(630)。在通过处理可能编码的图像302生成解码的水印图像320之后,水印解码器134可以生成解码的水印图像320作为输出,图像分析和解码器模块118可以使用该解码的水印图像320来验证可能编码的图像302的真实性(或来源)。
为了验证真实性(或来源),在服务器系统102内实现的验证装置140可以使用解码的水印图像320来恢复对应的编码图像124和/或对应的明文数据项122。如果可能编码的图像302作为来自服务器系统102的响应被提供给客户端设备104,则验证装置140可以使用对应的编码图像124和/或对应的明文数据项122来验证可能编码的图像302的真实性。
在一些实现方式中,水印解码器134可以生成解码的水印图像320作为输出,解码的水印图像320根据对可能编码的图像302的版本执行的缩放从其原始缩放级别被缩放。例如,输出可以包括响应于确定视觉上不可察觉的水印通过将解码器机器学习模型应用于输入图像被解码而生成的缩放的输出。在具体示例中,解码的水印可以具有对应于由输入图像描绘的项的缩放级别的缩放级别,但是为了生成解码的水印图像320,水印解码器134可以使用缩放装置138生成可能编码的图像302的200%(2倍)缩放级别(或某个其它缩放级别)的缩放版本。在这种情况下,由解码器机器学习模型134a生成的解码的水印图像320可以被缩放以协助解码过程。缩放的输出是解码的水印的版本,在解码的水印的该版本中使用缩放的输出中的多于一个像素来描绘解码的水印的单个像素,使得提高水印的分辨率。这可以导致对水印的更容易和/或更可靠的读取。
在一些情况下,视觉上不可察觉的水印最初可能没有通过将解码器机器学习模型应用于输入图像被解码。在这些情况下,可以将解码器机器学习模型重新应用于输入图像的缩放版本。例如,如上所述,可以使用缩放技巧来提高输入图像中的水印的分辨率,这可以导致对水印的更可靠的解码。将解码器机器学习模型重新应用于输入图像的缩放版本可以包括将输入图像缩放至少两倍的乘数,以创建输入图像的缩放版本,其中输入图像的缩放版本中的至少两个像素用于描绘输入图像中的单个像素。一旦被缩放,就可以将解码器机器学习模型重新应用于输入图像的缩放版本,并且可以再次输出结果。
在一些实现方式中,可以在将解码器机器学习模型应用于输入图像之前执行附加操作。例如,可以使用应用于输入图像的检测器机器学习模型来处理输入图像。在这些实现方式中,将检测器机器学习模型应用于输入图像可以生成分割掩码,该分割掩码突出显示输入图像的带水印的区域,如前详细所述。此分割掩码可以用于确定输入图像包括要解码的视觉上不可察觉的水印。分割掩码还可以用于确定输入图像的缩放级别。例如,输入图像的缩放级别可以基于分割掩码中用于表示视觉上不可察觉的水印的像素数相对于未缩放的图像中用于表示视觉上不可察觉的水印的像素数来确定。在特定示例中,假设叠加在图像(或其他视觉内容)上的水印是100x100像素的方形,但是分割掩码是300x300像素。在此示例中,可以确定输入图像的缩放级别为300%(3倍),因为分割掩码的尺寸比未缩放的图像中的水印的已知大小的尺寸大3倍。该信息可以作为结果的一部分输出,并用于缩放输入图像以(例如,由解码器机器学习模型)进行进一步处理或向其他模型或处理单元通知输入图像的缩放。
图7是可以用于执行上述操作的示例计算机系统700的框图。系统700包括处理器710、存储器720、存储设备730和输入/输出设备740。组件710、720、730和740中的每一个可以例如使用系统总线750互连。处理器710能够处理用于在系统700内执行的指令。在一些实现方式中,处理器710是单线程处理器。在另一实现方式中,处理器710是多线程处理器。处理器710能够处理存储在存储器720中或存储设备730上的指令。
存储器720存储系统700内的信息。在一种实现方式中,存储器720是计算机可读介质。在一些实现方式中,存储器720是易失性存储器单元。在另一种实现方式中,存储器720是非易失性存储器单元。
存储设备730能够为系统700提供大容量存储。在一些实现方式中,存储设备730是计算机可读介质。在各种不同的实现方式中,存储设备730可以包括,例如,硬盘设备、光盘设备、由多个计算设备(例如,云存储设备)通过网络共享的存储设备,或某种其它大容量存储设备。
输入/输出设备740为系统700提供输入/输出操作。在一些实现方式中,输入/输出设备740可以包括一个或多个网络接口设备,例如以太网卡、串行通信设备,例如RS-232端口,和/或无线接口设备,例如802.11卡。在另一种实现方式中,输入/输出设备可以包括驱动器设备,这些设备被配置为接收输入数据并将输出数据发送到外部设备760,例如键盘、打印机和显示设备。然而,也可以使用其他实现方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管在图1至图6中已经描述了处理系统的示例,但本说明书中描述的主题和功能操作的实现方式可以在其它类型的数字电子电路系统中实现,或者在包括本说明书中公开的结构及其结构等价物的计算机软件、固件或硬件中实现,或者以它们中的一个或多个的组合实现。
本说明书中描述的主题和操作的实施例可以在数字电子电路系统中实现,或者在包括本说明书中公开的结构及其结构等效物的计算机软件、固件或硬件中实现,或者以它们中的一个或多个的组合实现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即一个或多个计算机程序指令模块,其被编码在计算机存储介质(或媒介)上,以便由数据处理装置执行或控制数据处理装置的操作。可选地,或另外,程序指令可以编码在人工生成的传播信号——例如,机器生成的电、光学或电磁信号——上,该信号被生成以对信息进行编码以用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是计算机可读存储设备、计算机可读存储衬底、随机或串行存取存储器阵列或设备、或它们中的一个或多个的组合或包括在其中。此外,虽然计算机存储介质不是传播信号,但计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是一个或多个单独的物理组件或介质(例如,多个CD、磁盘或其他存储设备)或包括在其中。
本说明书中描述的操作可以实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其它来源接收的数据执行的操作。
术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统,或前述的多个或组合。该装置可以包括专用逻辑电路系统,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除硬件外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。装置和执行环境可以实现各种不同的计算模型基础设施,诸如Web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明性或过程性语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适合于在计算环境中使用的其它单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。可以将计算机程序部署为在一台计算机上执行,也可以在位于一个站点处或跨多个站点分布并通过通信网络互连的多台计算机上执行。
本说明书中描述的过程和逻辑流可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流也可以由专用逻辑电路——例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)——执行,装置也可以实现为该专用逻辑电路。
适合于执行计算机程序的处理器包括例如通用和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备——例如磁性、磁光盘或光盘——接收数据或向两者传送数据。然而,计算机不必具有此类设备。此外,计算机可以嵌入到另一个设备中,该另一设备为诸如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器),仅举几例。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪速存储器设备;磁盘,例如内部硬盘或可移除盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路系统补充或合并到专用逻辑电路系统中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有:显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,用于向用户显示信息;以及键盘和指点设备,例如鼠标或轨迹球,用户可以通过其向计算机提供输入。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;来自用户的输入可以以任何形式接收,包括声学、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从Web浏览器收到的请求将网页发送到用户的客户端设备上的Web浏览器。
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件,例如,作为数据服务器,或包括中间件组件,例如,应用服务器,或包括前端组件,例如,具有图形用户界面或Web浏览器的客户端计算机,用户可以通过其与本说明书中描述的主题的实现方式进行交互,或一个或多个此类后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信——例如通信网络——相互连接。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网络(例如,因特网)和对等网络(例如,点对点对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此相距遥远,并且通常通过通信网络进行交互。客户端和服务器的关系是由于计算机程序在各自的计算机上运行并具有彼此的客户端-服务器关系而产生的。在一些实施例中,服务器将数据(例如,HTML页面)传输到客户端设备(例如,用于向与客户端设备交互的用户显示数据和从该用户接收用户输入)。在客户端设备处生成的数据(例如,用户交互的结果)可以从服务器处的客户端设备接收。
虽然本说明书包含许多具体实现细节,但这些细节不应被解释为对任何发明的范围或可能要求保护的内容的限制,而应被解释为对特定发明的特定实施例所特有的特征的描述。本说明书中在单独实施例的场境中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的场境中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合实现。此外,尽管特征可以在上文被描述为以某些组合起作用并且甚至最初如此要求保护,但在一些情况下,来自要求保护的组合的一个或多个特征可以从组合中删除,并且要求保护的组合可以涉及子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘操作,但这不应被理解为要求以示出的特定顺序或以先后顺序执行此类操作,或者执行所有图示的操作,以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中各种系统组件的分离不应被理解为在所有实施例中都要求这种分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
因此,已经描述了该主题的具体实施例。其他实施例均在随附权利要求的范围内。在一些情况下,权利要求中记载的动作可以以不同的顺序执行,并且仍然实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或先后顺序以实现期望的结果。在一些实现方式中,多任务处理和并行处理可能是有利的。
Claims (20)
1.一种计算机实现的方法,包括:
由包括一个或多个处理器的水印解码器接收输入图像;
由所述水印解码器将解码器机器学习模型应用于所述输入图像,所述解码器机器学习模型被训练为以不同缩放级别解码视觉上不可察觉的水印;
由所述水印解码器确定视觉上不可察觉的水印是否通过将所述解码器机器学习模型应用于所述输入图像被解码以获得解码的水印;以及
基于所述视觉上不可察觉的水印是否通过将所述解码器机器学习模型应用于所述输入图像被解码的确定来输出结果,包括响应于确定所述视觉上不可察觉的水印通过将所述解码器机器学习模型应用于所述输入图像被解码而输出缩放的输出。
2.根据权利要求1所述的计算机实现的方法,其中输出缩放的输出包括输出所述解码的水印的缩放版本,其中所述解码的水印具有与所述输入图像中描绘的项的缩放级别对应的缩放级别。
3.根据权利要求2所述的计算机实现的方法,其中输出缩放的输出包括输出所述解码的水印的版本,在所述解码的水印的所述版本中所述解码的水印的单个像素使用所述缩放的输出中的多于一个像素被描绘。
4.根据权利要求1所述的计算机实现的方法,其中基于所述视觉上不可察觉的水印是否通过将所述解码器机器学习模型应用于所述输入图像被解码的确定来输出结果包括:响应于确定所述视觉上不可察觉的水印未通过将所述解码器机器学习模型应用于所述输入图像被解码而将所述解码器机器学习模型重新应用于所述输入图像的缩放版本。
5.根据权利要求4所述的计算机实现的方法,其中将所述解码器机器学习模型重新应用于所述输入图像的缩放版本包括:
将所述输入图像缩放至少两倍的乘数以创建所述输入图像的所述缩放版本;以及
将所述解码器机器学习模型重新应用于所述输入图像的所述缩放版本。
6.根据权利要求5所述的计算机实现的方法,其中将所述输入图像缩放至少两倍的乘数包括:使用所述输入图像的所述缩放版本中的至少两个像素来描绘所述输入图像中的单个像素。
7.根据权利要求1所述的计算机实现的方法,还包括:
将检测器机器学习模型应用于所述输入图像;
基于将所述检测器机器学习模型应用于所述输入图像来生成分割掩码,所述分割掩码突出显示所述输入图像的水印区域;
基于所述分割掩码来确定所述输入图像包括视觉上不可察觉的水印;以及
基于所述分割掩码,基于所述分割掩码中用于表示所述视觉上不可察觉的水印的像素数相对于未缩放的图像中用于表示所述视觉上不可察觉的水印的像素数来确定所述输入图像的缩放级别。
8.一种系统,包括:
数据存储设备;
水印解码器,所述水印解码器包括一个或多个处理器,所述一个或多个处理器被配置为执行包括以下项的操作:
由包括一个或多个处理器的水印解码器接收输入图像;
由所述水印解码器将解码器机器学习模型应用于所述输入图像,所述解码器机器学习模型被训练为以不同缩放级别解码视觉上不可察觉的水印;
由所述水印解码器确定视觉上不可察觉的水印是否通过将所述解码器机器学习模型应用于所述输入图像被解码以获得解码的水印;以及
基于所述视觉上不可察觉的水印是否通过将所述解码器机器学习模型应用于所述输入图像被解码的确定来输出结果,包括响应于确定所述视觉上不可察觉的水印通过将所述解码器机器学习模型应用于所述输入图像被解码而输出缩放的输出。
9.根据权利要求8所述的系统,其中输出缩放的输出包括输出所述解码的水印的缩放版本,其中所述解码的水印具有与所述输入图像中描绘的项的缩放级别对应的缩放级别。
10.根据权利要求9所述的系统,其中输出缩放的输出包括输出所述解码的水印的版本,在所述解码的水印的所述版本中所述解码的水印的单个像素使用所述缩放的输出中的多于一个像素被描绘。
11.根据权利要求8所述的系统,其中基于所述视觉上不可察觉的水印是否通过将所述解码器机器学习模型应用于所述输入图像被解码的确定来输出结果包括:响应于确定所述视觉上不可察觉的水印未通过将所述解码器机器学习模型应用于所述输入图像被解码而将所述解码器机器学习模型重新应用于所述输入图像的缩放版本。
12.根据权利要求11所述的系统,其中将所述解码器机器学习模型重新应用于所述输入图像的缩放版本包括:
将所述输入图像缩放至少两倍的乘数以创建所述输入图像的所述缩放版本;以及
将所述解码器机器学习模型重新应用于所述输入图像的所述缩放版本。
13.根据权利要求12所述的系统,其中将所述输入图像缩放至少两倍的乘数包括:使用所述输入图像的所述缩放版本中的至少两个像素来描绘所述输入图像中的单个像素。
14.根据权利要求8所述的系统,还包括:
将检测器机器学习模型应用于所述输入图像;
基于将所述检测器机器学习模型应用于所述输入图像来生成分割掩码,所述分割掩码突出显示所述输入图像的水印区域;
基于所述分割掩码来确定所述输入图像包括视觉上不可察觉的水印;以及
基于所述分割掩码,基于所述分割掩码中用于表示所述视觉上不可察觉的水印的像素数相对于未缩放的图像中用于表示所述视觉上不可察觉的水印的像素数来确定所述输入图像的缩放级别。
15.一种存储指令的非暂时性计算机可读介质,所述指令当由一个或多个数据处理装置执行时使所述一个或多个数据处理装置执行包括以下项的操作:
由包括一个或多个处理器的水印解码器接收输入图像;
由所述水印解码器将解码器机器学习模型应用于所述输入图像,所述解码器机器学习模型被训练为以不同缩放级别解码视觉上不可察觉的水印;
由所述水印解码器确定视觉上不可察觉的水印是否通过将所述解码器机器学习模型应用于所述输入图像被解码以获得解码的水印;以及
基于所述视觉上不可察觉的水印是否通过将所述解码器机器学习模型应用于所述输入图像被解码的确定来输出结果,包括响应于确定所述视觉上不可察觉的水印通过将所述解码器机器学习模型应用于所述输入图像被解码而输出缩放的输出。
16.根据权利要求15所述的非暂时性计算机可读介质,其中输出缩放的输出包括输出所述解码的水印的缩放版本,其中所述解码的水印具有与所述输入图像中描绘的项的缩放级别对应的缩放级别。
17.根据权利要求16所述的非暂时性计算机可读介质,其中输出缩放的输出包括输出所述解码的水印的版本,在所述解码的水印的所述版本中所述解码的水印的单个像素使用所述缩放的输出中的多于一个像素被描绘。
18.根据权利要求15所述的非暂时性计算机可读介质,其中基于所述视觉上不可察觉的水印是否通过将所述解码器机器学习模型应用于所述输入图像被解码的确定来输出结果包括:响应于确定所述视觉上不可察觉的水印未通过将所述解码器机器学习模型应用于所述输入图像被解码而将所述解码器机器学习模型重新应用于所述输入图像的缩放版本。
19.根据权利要求18所述的非暂时性计算机可读介质,其中将所述解码器机器学习模型重新应用于所述输入图像的缩放版本包括:
将所述输入图像缩放至少两倍的乘数以创建所述输入图像的所述缩放版本;以及
将所述解码器机器学习模型重新应用于所述输入图像的所述缩放版本。
20.根据权利要求15所述的非暂时性计算机可读介质,还包括:
将检测器机器学习模型应用于所述输入图像;
基于将所述检测器机器学习模型应用于所述输入图像来生成分割掩码,所述分割掩码突出显示所述输入图像的水印区域;
基于所述分割掩码来确定所述输入图像包括视觉上不可察觉的水印;以及
基于所述分割掩码,基于所述分割掩码中用于表示所述视觉上不可察觉的水印的像素数相对于未缩放的图像中用于表示所述视觉上不可察觉的水印的像素数来确定所述输入图像的缩放级别。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2021/038255 WO2022271146A1 (en) | 2021-06-21 | 2021-06-21 | Zoom agnostic watermark extraction |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117597702A true CN117597702A (zh) | 2024-02-23 |
Family
ID=76943115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180098906.XA Pending CN117597702A (zh) | 2021-06-21 | 2021-06-21 | 缩放无关的水印提取 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230325961A1 (zh) |
EP (1) | EP4360038A1 (zh) |
CN (1) | CN117597702A (zh) |
WO (1) | WO2022271146A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117495649A (zh) * | 2024-01-02 | 2024-02-02 | 支付宝(杭州)信息技术有限公司 | 一种图像的处理方法、装置及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112789650B (zh) * | 2019-09-06 | 2024-03-12 | 谷歌有限责任公司 | 检测半透明图像水印 |
CN112200710B (zh) * | 2020-10-08 | 2023-05-23 | 东南数字经济发展研究院 | 一种基于深度学习的自适应隐形水印同步检测方法 |
-
2021
- 2021-06-21 US US18/008,544 patent/US20230325961A1/en active Pending
- 2021-06-21 CN CN202180098906.XA patent/CN117597702A/zh active Pending
- 2021-06-21 WO PCT/US2021/038255 patent/WO2022271146A1/en active Application Filing
- 2021-06-21 EP EP21742591.7A patent/EP4360038A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022271146A1 (en) | 2022-12-29 |
US20230325961A1 (en) | 2023-10-12 |
EP4360038A1 (en) | 2024-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fang et al. | Screen-shooting resilient watermarking | |
CN111476067B (zh) | 图像的文字识别方法、装置、电子设备及可读存储介质 | |
KR102423710B1 (ko) | 반투명 이미지 워터마크 검출 | |
Yang et al. | A ROI-based high capacity reversible data hiding scheme with contrast enhancement for medical images | |
Zhang et al. | Viscode: Embedding information in visualization images using encoder-decoder network | |
Byrnes et al. | Data hiding with deep learning: A survey unifying digital watermarking and steganography | |
US20230362399A1 (en) | End-to-end watermarking system | |
Nilizadeh et al. | Information Hiding in RGB Images Using an Improved Matrix Pattern Approach. | |
Kerbiche et al. | A robust video watermarking based on feature regions and crowdsourcing | |
CN112911341B (zh) | 图像处理方法、解码器网络训练方法、装置、设备和介质 | |
Yang et al. | Language universal font watermarking with multiple cross-media robustness | |
US20230325961A1 (en) | Zoom agnostic watermark extraction | |
US20230325959A1 (en) | Zoom agnostic watermark extraction | |
Fu et al. | Chartstamp: Robust chart embedding for real-world applications | |
Himthani et al. | Comparative performance assessment of deep learning based image steganography techniques | |
US20240087075A1 (en) | End-to-end watermarking system | |
Hua et al. | Steganography for medical record image | |
CN113706636A (zh) | 一种用于篡改图像识别的方法与装置 | |
Zhang et al. | Embedding Guided End‐to‐End Framework for Robust Image Watermarking | |
Yakushev et al. | Docmarking: Real-Time Screen-Cam Robust Document Image Watermarking | |
Fu et al. | Dual-layer barcodes | |
CN115984891A (zh) | 票据识别设备和方法 | |
CN112085670A (zh) | 一种联合语义可解释信息的图像修复方法及系统 | |
Mazurczyk et al. | Information Hiding in RGB Images Using an Improved Matrix Pattern Approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |