局部图像水印嵌入

《Watermark Anything with Localized Messages》ICLR 2025 WatermarkAnythingModel (WAM) 是一种新型深度学习水印技术,将图像水印任务重构为像素级分割任务,实现了水印的精准定位和多消息提取。该模型通过嵌入器和提取器的协同设计,采用双阶段训练策略:第一阶段侧重鲁棒性训练,第二阶段优化水印不可见性和多消息支持能力。实验表明,WAM在定位精度、多水印处理及抗干扰方面优于传统方法,适用于AI内容溯源、版权保护等场景。当前局限包括固定32位消息容量和部分区域水印可见性,未来可进一步优化容量与感知质量的平衡。 阅读详情


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua小谢,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:传知代码论文复现

欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙

​​

​​

目录

引言和背景

WAM模型介绍

任务定义

嵌入器

提取器

两阶段训练

第一阶段:预训练模型

第二阶段:后训练模型

评估方法

质量评估

定位评估

多个水印评估

技术细节

使用DBSCAN算法提取多个水印

处理多水印和高分辨率图像

多水印

高分辨率

JND图

JND图的基本原理

JND图的计算

实验与结果

推理代码解读

实验结果展示

总结


 本文所有资源均可在该地址处获取。

引言和背景

图像水印技术最初是为了知识产权保护和复制保护而开发的,如好莱坞工作室对DVD的水印。随着生成性AI模型的发展,水印的应用也在演变。例如,美国白宫的行政命令、加州法案、欧盟AI法案和中国AI治理规则都要求AI生成的内容能够被轻松识别,并将水印作为检测和标记AI生成图像的推荐或强制措施。

这篇论文试图解决的是图像水印技术在处理小面积水印和图像部分编辑时的限制问题。具体来说,论文中提到传统图像水印技术主要面临的挑战包括:

  • 小面积水印处理不足: 传统方法不擅长处理图像中只有部分区域被水印的情况。这限制了它们在现实世界场景中的应用,例如当图像的某些部分来自不同来源或被编辑时。

  • 对图像编辑的鲁棒性不足: 现实中的图像可能会经历各种编辑操作,如裁剪、压缩、拼接等,这些操作可能会破坏水印信号,使得水印检测和信息提取变得困难。

  • 对AI生成内容的检测需求: 随着生成性AI模型的发展,监管法规要求AI生成的内容能够被轻易识别,水印技术被视为一种检测和标记AI生成图像的推荐或强制措施。

  • 图像拼接的挑战: 图像拼接是一种常见的操作,涉及在图像的大部分区域添加文本或表情包,或提取图像的部分并叠加到其他图像上。这种操作可以绕过现有的最先进的水印技术,因为这些技术通常对整个图像只做一次全局决策。

为了解决这些问题,论文《Watermark Anything with Localized Messages》提出了一种名为“Watermark Anything Model (WAM)”的深度学习模型,用于局部图像水印。

WAM的目标是将水印信号的强度与其像素表面面积解耦,与传统水印技术不同。WAM模型包括一个嵌入器和一个提取器。嵌入器用于将信息不可见地嵌入图像像素中,提取器用于分割接收到的图像成水印和非水印区域,并从被检测为水印的区域中恢复一个或多个隐藏消息。

通过这种方式,WAM能够提供新的功能,例如定位拼接图像中的水印区域,并从多个小区域中提取不同的32位消息,即使这些区域不超过图像面积的10%。

WAM模型介绍

任务定义

WAM将水印任务重新定义为一个分割任务,这意味着它不仅仅检测整个图像是否含有水印,而是能够识别出图像中哪些具体的像素被水印了。

这种方法与传统的水印技术不同,后者通常只对整个图像做出全局决策。WAM的提取器为每个像素输出一个向量,指示该像素是否被水印以及水印中隐藏的消息。

嵌入器

WAM的嵌入器负责将水印信息嵌入到图像中,同时确保这种嵌入对肉眼是不可见的。嵌入器由以下几个部分组成:

  1. 编码器:
    编码器是一个深度神经网络,通常由多个卷积层和残差块组成,其目的是将输入图像压缩成一个低维的潜在空间表示。这个潜在空间表示捕捉了图像的关键特征,同时减少了数据的维度,使得后续的水印嵌入过程更加高效。

  2. 二进制消息查找表(Binary Message Lookup Table):
    这是一个参数化的张量,用于将二进制消息(水印信息)映射到一个可以与图像潜在表示相加的嵌入张量。每个二进制位对应于查找表中的一个嵌入向量,这个向量是根据消息位的值(0或1)选择的。

  3. 解码器:
    解码器是一个深度神经网络,它将编码器的输出(包括二进制消息的嵌入)映射回一个与原始图像相同维度的水印信号。这个水印信号是一个微小的扰动,当加到原始图像上时,能够嵌入水印信息,同时保持对肉眼的不可见性。

  4. 水印信号的缩放和添加:
    水印信号通常在一个特定的范围内(例如[-1, 1]),通过一个缩放因子α(水印强度参数)来控制水印的强度。最终的水印图像是通过将水印信号加到原始图像上得到的,即 watermarked_image = original_image + α * watermark_signal。

  5. 高分辨率处理:
    由于嵌入过程在低分辨率下完成,所以需要将水印信号通过双线性插值扩展到高分辨率图像,以保持水印在不同尺度下的一致性。

提取器

提取器的任务是检测图像中的水印,并从中提取嵌入的消息。提取器的结构类似于图像分割网络,由以下几个主要部分组成:

  1. 图像编码器:
    图像编码器通常是一个视觉变换器(Vision Transformer,ViT),它将输入图像分割成多个patches,并将这些patches映射到一个高维特征空间,ViT通过自注意力机制捕捉图像的全局和局部特征。

  2. 像素解码器:
    像素解码器是一个卷积神经网络(CNN),它将ViT的输出特征上采样(upsample)回原始图像的分辨率。这个过程中,包含多个上采样块(upsampling blocks)和卷积层,以逐步恢复图像的空间维度。

  3. 输出层:
    输出层是一个线性层,它将像素解码器的输出映射到一个(1+nbits)(1+nbits​)维的向量,其中n是水印信息的位数。第一个维度用于水印检测,输出一个介于0和1之间的值,表示像素被水印的概率;接下来的n个维度用于消息提取,每个维度对应一个水印位的预测。

  4. 多水印处理:
    提取器的输出被送入DBSCAN聚类算法,该算法根据像素级的二进制字符串将图像分割成多个区域,每个区域对应一个水印。DBSCAN算法不需要预设聚类的数量,能够根据数据的密度和邻近性自动发现聚类。

  5. 后处理:
    对于全局检测,如果超过用户定义阈值的水印像素比例,则认为整个图像被水印覆盖。对于全局解码,通过多数投票恢复隐藏消息。对于局部化和多消息提取,DBSCAN算法用于识别和分离不同的水印区域,并提取相应的消息。

两阶段训练

第一阶段:预训练模型

目标:
在第一阶段,目标是获得一个鲁棒且可定位的局部水印,该水印可以在图像的一部分中隐藏一个 nbitsnbits​ 位的消息,而不太在意水印的不可感知性。这一阶段不包括任何感知损失,目的是在经过严重增强后实现完美的定位和解码。

过程:

  1. 嵌入器:嵌入器将 nbitsnbits​位的消息编码成水印信号,并将其添加到原始图像中。
  2. 数据增强:随机掩蔽图像的一部分水印,并使用常见的处理技术(例如裁剪、缩放、压缩)增强结果。
  3. 提取器:输出每个像素的 1+nbits1+nbits​ 维向量,以预测图像中哪些部分被水印了,并解码相应的消息。

损失函数:

  • 检测损失:像素级交叉熵的平均值,用于比较提取器的检测输出和真实的水印掩码。
  • 解码损失:像素级和位级二进制交叉熵的平均值,仅在水印像素上计算,用于比较提取器的解码输出和原始嵌入的消息。

ℓdet(θ)=−1h×w∑i=1h×w[yidet,⋆log⁡(yidet(θ))+(1−yidet,⋆)log⁡(1−yidet(θ))]ℓdet​(θ)=h×w−1​i=1∑h×w​[yidet,⋆​log(yidet​(θ))+(1−yidet,⋆​)log(1−yidet​(θ))]

ℓdec(θ)=−1nbits×∑i=1h×wyidet,⋆∑i=1h×wyidet,⋆∑k=1nbits[mklog⁡(yi,kdec(θ))+(1−mk)log⁡(1−yi,kdec(θ))]ℓdec​(θ)=nbits​×∑i=1h×w​yidet,⋆​−1​i=1∑h×w​yidet,⋆​k=1∑nbits​​[mk​log(yi,kdec​(θ))+(1−mk​)log(1−yi,kdec​(θ))]

第二阶段:后训练模型

目标:
在第二阶段,目标是解决第一阶段训练出的模型水印可见性问题,并使其能够处理图像中的多个水印。

过程:

  1. 感知热图(Perceptual heatmap):使用 Just-Noticeable-Difference (JND) 图来调制水印的强度,使得水印在人眼不敏感的区域不那么可见。
  2. 多个水印(Multiple watermarks):通过引入多个掩模来解决模型倾向于在图像的不同区域解码出相同消息的问题。

损失函数:

  • 检测损失:使用所有掩模的并集作为真实的水印掩码。
  • 解码损失:分别为每个消息计算,并将损失相加。

评估方法

质量评估

  • 指标:PSNR、SSIM和LPIPS用于评估水印嵌入后的不可感知性。这些指标衡量了水印图像与原始图像在视觉上的差异。
  • 结果:文章提供了在COCO和DIV2K数据集上评估的结果,显示WAM在保持较高PSNR的同时,也能保持较低的LPIPS值,表明水印的嵌入对图像的视觉质量影响较小。

定位评估

  • 方法:评估WAM在定位水印区域的准确性,使用交并比(IoU)来衡量预测的水印区域与真实水印区域的重叠程度。
  • 结果:文章展示了在不同水印面积下,WAM在定位水印区域的准确性,以及通过定位得到的比特准确率。

多个水印评估

  • 方法:评估WAM在处理单个图像中的多个水印时的性能。通过在图像的不同区域嵌入不同的消息,并使用DBSCAN算法来检测和解码这些消息。
  • 结果:文章提供了在不同数量的水印和不同水印面积下的检测和解码结果,展示了WAM在处理多个水印时的准确性和鲁棒性。

技术细节

使用DBSCAN算法提取多个水印

DBSCAN算法在WAM中被用于从图像中提取多个水印。以下是使用DBSCAN算法提取多个水印的详细步骤:

  1. 初始化DBSCAN算法参数:ϵϵ 是两个样本点被认为是邻居的最大距离,min_samples是一个簇被认为是有效簇所需的最小样本点数量。

  2. 局部解码消息:在WAM中,每个被识别为水印像素的像素都会产生一个局部解码消息(一个二进制字符串)。这些局部解码消息是DBSCAN算法的输入点。

  3. 寻找邻居:对于每个局部解码消息,DBSCAN算法会在 ϵϵ 距离内寻找所有其他局部解码消息,形成每个点的邻域。

  4. 形成簇:如果一个点的邻域包含至少min_samples个点,则围绕这个点形成一个簇,如果邻域中的点数少于min_samples,则将该点标记为噪声。

  5. 扩展簇:对于簇中的每个点 qq,找到所有在 ϵϵ 距离内的点,并将这些点添加到簇中,如果它们尚未被包含在内。

  6. 重复步骤3-5:继续扩展簇,直到没有更多的点可以添加。

  7. 标记簇:为数据集中的每个点分配一个标签,指示它属于哪个簇(如果有)。

DBSCAN算法会输出一些中心点和每个被识别为水印像素的像素的分配。这些中心点代表最终解码的消息,它们是二进制单词。

在WAM的训练过程中,可能会在同一图像中嵌入多个不同的水印。使用DBSCAN算法,可以不需要预先知道隐藏消息的数量,就能从局部解码消息中识别出不同的水印区域。

处理多水印和高分辨率图像

多水印

WAM处理多水印的关键在于其训练过程和提取器的设计,使其能够识别和解码图像中的多个独立水印。以下是处理多水印的具体步骤:

  1. 多水印训练策略:
    在训练阶段,WAM使用多个随机消息和掩码来模拟图像中可能存在的多个水印。这些掩码可以是矩形、不规则形状或基于图像分割的掩码。每个掩码对应一个独特的消息,并且这些掩码可以随机地放置在图像的不同区域,以模拟多个水印的存在。

  2. 掩码的随机性:
    在第二阶段训练中,WAM引入多个不重叠的掩码,每个掩码隐藏一个不同的水印消息。这种方法允许模型学习如何在同一个图像中区分和解码多个水印。

  3. 提取器的像素级输出:
    提取器为每个像素输出一个 (1+nbits)(1+nbits​) 维向量,其中 nbitsnbits​ 是水印消息的位数。这个输出包括一个水印检测分数和一个解码消息。

  4. DBSCAN聚类算法:
    提取器的输出被送入DBSCAN聚类算法,该算法根据像素级的二进制字符串将图像分割成多个区域,每个区域对应一个水印。

高分辨率

WAM通过固定分辨率操作和插值技术来处理高分辨率图像,以下是具体步骤:

  1. 固定分辨率操作:
    WAM在固定分辨率下训练和操作,通常是较低的分辨率,以减少计算量和训练成本。

  2. 各向异性缩放:
    对于高分辨率图像,WAM使用各向异性缩放将图像调整到训练时的固定分辨率。这样可以保持水印嵌入和提取过程的一致性。

  3. 双线性插值:
    在嵌入阶段,WAM将低分辨率下生成的水印信号通过双线性插值扩展到高分辨率图像。这种插值方法能够在不同尺度之间平滑地过渡水印信号。

  4. 提取阶段的一致性:
    在提取阶段,所有图像(无论原始分辨率如何)都被调整到固定分辨率,以确保提取过程与训练条件一致。

JND图

Just-Noticeable-Difference(JND)图是一种模拟人眼视觉系统的敏感度的模型,它用于确定图像中每个像素的最大可感知变化量。

JND图的基本原理

JND图基于两个主要的视觉现象:亮度适应(Luminance Adaptation,LA)和对比度掩蔽(Contrast Masking,CM)。

  1. 亮度适应(LA):人眼在明亮区域对细节的敏感度较低。亮度适应反映了人眼对不同亮度水平的适应性,即在较亮的区域,人眼对变化的敏感度降低。

  2. 对比度掩蔽(CM):在高对比度区域,人眼对小的变化不太敏感。对比度掩蔽考虑了图像中的局部对比度,即在边缘和纹理区域,人眼对细节的变化不太敏感。

JND图的计算

JND图的计算通常涉及以下步骤:

  1. 亮度核(Luminance Kernel):计算图像的局部背景亮度,使用一个固定的核来对像素周围的邻域进行平均。公式如下,其中 KlumKlum 是一个预定义的核,用于计算亮度。

    B(x)(i,j)=132∑k,l∈[−2,2]2Klum(k,l)⋅x(i+k,j+l)B(x)(i,j)=321​k,l∈[−2,2]2∑​Klum(k,l)⋅x(i+k,j+l)

  2. 亮度适应(LA):根据亮度核的结果,计算每个像素的亮度适应值。使用一个非线性变换,以模拟人眼对亮度的非线性响应。公式如下,其中 ϵϵ 是一个用于确保反向传播可微分的小正值。

    LA(x)(i,j)={17(1−B(x)(i,j)127+ϵ)+3,if B(x)(i,j)≤1273128⋅(B(x)(i,j)−127)+3,if B(x)(i,j)>127LA(x)(i,j)={17(1−127+ϵB(x)(i,j)​)+3,1283​⋅(B(x)(i,j)−127)+3,​if B(x)(i,j)≤127if B(x)(i,j)>127​

  3. 梯度核(Gradient Kernel):计算图像的梯度幅度,使用水平和垂直的Sobel算子来估计。公式如下,其中 KXKX 和 KYKY 分别是水平和垂直的梯度核。

    C(x)(i,j)=(∑k,lKX(k,l)⋅x(i+k,j+l))2+(∑k,lKY(k,l)⋅x(i+k,j+l))2C(x)(i,j)=⎝⎜⎛​k,l∑​KX(k,l)⋅x(i+k,j+l)⎠⎟⎞​2+⎝⎜⎛​k,l∑​KY(k,l)⋅x(i+k,j+l)⎠⎟⎞​2​

  4. 对比度掩蔽(CM):根据梯度核的结果,计算每个像素的对比度掩蔽值。这同样涉及到一个非线性变换,以模拟人眼对对比度的非线性响应。公式如下。

    CM(x)=16⋅C(x)2.4C(x)2+262CM(x)=16⋅C(x)2+262C(x)2.4​

  5. JND热图(JND Heatmap):结合亮度适应和对比度掩蔽的值,生成JND热图。这个热图表示了图像中每个像素的最大可感知变化量。公式如下,其中 γγ 是一个控制亮度适应和对比度掩蔽之间权衡的参数。

    H(x)=LA(x)+CM(x)−γ⋅min⁡(LA(x),CM(x))H(x)=LA(x)+CM(x)−γ⋅min(LA(x),CM(x))

可以看到,使用JND图调制水印强度的图像,相较于不使用JND图,与原始图像具有更小的差异,不使用JND图的水印图像有明显的噪声。

实验与结果

我们的实验部署配置如下:
GPU 3090 * 4
Ubuntu 20.04
PyTorch 2.1.2
Python 3.10
Cuda 11.8

推理代码解读

# 导入所需的库
import os
import numpy as np
from PIL import Image

import torch
import torch.nn.functional as F
from torchvision.utils import save_image

# 导入特定于项目的函数和类
from watermark_anything.data.metrics import msg_predict_inference
from notebooks.inference_utils import (
    load_model_from_checkpoint, 
    default_transform, 
    create_random_mask, 
    unnormalize_img,
    plot_outputs,
    msg2str
)

# 检测是否有可用的CUDA设备,如果没有则使用CPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# 定义一个函数来加载图像
def load_img(path):
    # 使用PIL库打开图像,并将其转换为RGB格式
    img = Image.open(path).convert("RGB")
    # 应用默认的图像转换
    img = default_transform(img).unsqueeze(0).to(device)
    return img

# 从指定的检查点加载模型
exp_dir = "checkpoints"
json_path = os.path.join(exp_dir, "params.json")
ckpt_path = os.path.join(exp_dir, 'checkpoint.pth')
wam = load_model_from_checkpoint(json_path, ckpt_path).to(device).eval()

# 设置随机种子以确保结果的可重复性
seed = 42
torch.manual_seed(seed)

# 设置参数
img_dir = "assets/images"  # 包含原始图像的目录
num_imgs = 2  # 从文件夹中水印图像的数量
proportion_masked = 0.5  # 图像被水印的比例(0.5表示50%的图像)

# 创建输出文件夹
output_dir = "outputs"
os.makedirs(output_dir, exist_ok=True)

# 定义一个32位的消息,将其嵌入到图像中
wm_msg = wam.get_random_msg(1)  # [1, 32]
print(f"Original message to hide: {msg2str(wm_msg[0])}")

# 遍历目录中的每个图像
for img_ in os.listdir(img_dir)[:num_imgs]:
    # 加载并预处理图像
    img_pt = load_img(os.path.join(img_dir, img_))  # [1, 3, H, W]
    
    # 将水印信息嵌入到图像中
    outputs = wam.embed(img_pt, wm_msg)

    # 创建一个随机掩码,只水印图像的一部分
    mask = create_random_mask(img_pt, num_masks=1, mask_percentage=proportion_masked)  # [1, 1, H, W]
    img_w = outputs['imgs_w'] * mask + img_pt * (1 - mask)  # [1, 3, H, W]

    # 在水印图像中检测水印
    preds = wam.detect(img_w)["preds"]  # [1, 33, 256, 256]
    mask_preds = F.sigmoid(preds[:, 0, :, :])  # [1, 256, 256], 预测掩码
    bit_preds = preds[:, 1:, :, :]  # [1, 32, 256, 256], 预测比特
    
    # 预测嵌入的消息并计算比特准确率
    pred_message = msg_predict_inference(bit_preds, mask_preds).cpu().float()  # [1, 32]
    bit_acc = (pred_message == wm_msg).float().mean().item()

    # 保存水印图像和检测掩码
    mask_preds_res = F.interpolate(mask_preds.unsqueeze(1), size=(img_pt.shape[-2], img_pt.shape[-1]), mode="bilinear", align_corners=False)  # [1, 1, H, W]
    save_image(unnormalize_img(img_w), f"{output_dir}/{img_}_wm.png")
    save_image(mask_preds_res, f"{output_dir}/{img_}_pred.png")
    save_image(mask, f"{output_dir}/{img_}_target.png")

    plot_outputs(img_pt.detach(), img_w.detach(), mask.detach(), mask_preds_res.detach(), labels = None, centroids = None)
    
    # 打印每张图像的预测消息和比特准确率
    print(f"Predicted message for image {img_}: {msg2str(pred_message[0])}")
    print(f"Bit accuracy for image {img_}: {bit_acc:.2f}")

实验结果展示

我们以下面的图像为例,添加的水印编码为01000100010000101110101111111100。

下图是嵌入水印部分的图像掩码与提取器预测的图像区域,提取器基本可以完全预测出水印位置,且提取的水印的比特准确率为100%。

我们将原始图像、水印图像和两图像的差异进行对比,可以看到,两图像在添加水印的掩码处存在差异,但原始图像与水印图像几乎不能用肉眼分辨出差异,算法具有良好的不可见性。

我们在图像中嵌入两个水印进行进一步的测试,并进行掩码和聚类的可视化,得到了如下的结果。

上图嵌入的水印为11101000001111101101010110000000和01101111010111010101001011111111,提取到的水印为11101000001111101101010110000000和11101111010111010101001011011111,比特准确率分别为100%和93.75%。

上图嵌入的水印为11101000001111101101010110000000和01101111010111010101001011111111,提取到的水印为11101000001111101101010110000000和01101111010111010101001011111111,比特准确率分别为100%和100%。

总结

本文介绍了一种名为Watermark Anything Model (WAM)的深度学习模型,用于实现局部图像水印技术。WAM能够在保持图像不可见性的同时,对输入图像进行修改,并在接收到的图像中分割出水印和非水印区域,从而恢复隐藏的信息。

该模型经过两阶段训练,首先在低分辨率下进行训练以实现鲁棒性,然后在高分辨率下进行微调以提高不可见性,并能够处理多个水印。实验结果表明,WAM在不可见性和鲁棒性方面与现有最先进方法相当,特别是在对抗图像修复和拼接方面表现出色,即使在高分辨率图像上也能准确地定位水印区域,并从多个小区域中提取不同的32位消息。

总体而言,这篇论文提出了一种新的图像水印方法,能够在保持不可见性的同时提供对编辑操作的鲁棒性,并引入了定位和提取多个水印的新功能,为图像水印领域带来了新的视角和技术进步。

我们在附件中,在论文原代码的基础上,实现了一键的训练、推理、可视化,由于COCO数据集较大,因此读者若要自行训练模型,需下载COCO数据集。

​​

空间域数字水印:基于线性插值的高精度篡改定位与图像恢复方案 数字水印技术通过在多媒体数据中嵌入不可见的认证信息,为数字内容的版权保护和完整性验证提供了关键技术支撑。其核心原理是将水印信号以符合人类视觉系统特性的方式嵌入载体,在保证感知透明性的前提下,实现对内容篡改的鲁棒检测。从技术价值看,传统频域水印虽鲁棒性强,但计算复杂且几何攻击同步困难。相比之下,空间域水印直接在像素层面操作,通过自适应嵌入策略和线性插值优化,在计算效率和篡改定位精度上展现出显著优势。在应用场景上,该技术尤其适用于需要实时处理、资源受限的移动端应用、监控系统以及高精度内容认证领域。本文探讨的空间 阅读详情

相关推荐

9、基于局部二值模式算子的图像水印技术

本文提出了一种基于局部二值模式(LBP)算子的新型半脆弱数字水印技术。该方法通过利用LBP算子的局部纹理特征,实现了在图像中的水印嵌入和提取。实验结果表明,该方法在常见图像处理操作(如加性噪声、亮度变化和对比度调整)下具有良好的鲁棒性,同时对滤波、模糊等操作较为脆弱,具备篡改检测和定位能力。此外,还提出了双层和多级水印扩展方案,以提高水印容量和鲁棒性。该技术在图像版权保护和内容认证等领域具有广泛应用前景。

c2d3e4f的博客 70

WAM:局部水印技术

WAM将水印任务重新定义为一个分割任务,这意味着它不仅仅检测整个图像是否含有水印,而是能够识别出图像中哪些具体的像素被水印了。这种方法与传统的水印技术不同,后者通常只对整个图像做出全局决策。WAM的提取器为每个像素输出一个向量,指示该像素是否被水印以及水印中隐藏的消息。本文介绍了一种名为Watermark Anything Model (WAM)的深度学习模型,用于实现局部图像水印技术。WAM能够在保持图像不可见性的同时,对输入图像进行修改,并在接收到的图像中分割出水印和非水印区域,从而恢复隐藏的信息。

博客之路,前途漫漫 1652

【图像隐写】基于matlab LBP数字水印嵌入攻击提取【含Matlab源码 1672期】

LBP数字水印嵌入攻击提取 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1632

Watermark Anything with Localized Messages:万物皆可局部水印

作者的WAM还可以做到定位篡改。在之前的EditGuard水印中,定位篡改是通过半脆弱水印实现的,鲁棒水印辅助检测是否篡改,半脆弱水印定位篡改;它的编码也很有意思,编码先在潜空间中编码语义水印,然后将这个语义水印图像映射回空间域后再以残差的方式再加一次水印,所以WAM的水印是语义水印+残差水印的结合。第二种思路就是先把A的某一部分分割出来,然后单独嵌入水印,这时如果拼接到B上,我们在提取水印的时候是可以提取的,但是这种版权保护的方法太麻烦,需要用户给A图像的每个部分都先分割出来再嵌入水印,可行但不可取。

qq_51083858的博客 1091

20、图像水印与软件水印技术解析

本文深入解析了图像水印与软件水印技术,重点分析了基于神经网络函数的公钥图像水印检测性能,以及软件水印的图论实现方法。文章探讨了两种水印技术的现状、挑战与未来发展方向,包括提高水印鲁棒性、降低嵌入开销、探索新方法及加强安全性等方面。通过对比图像水印与软件水印的差异,展示了它们在数字信息版权保护中的应用价值。

pluto的博客 81

图像降级自适应算法与DWT数字水印攻击系统(Matlab实现)

数字水印技术是多媒体版权保护的核心手段,但图像在传输和存储中常经历JPEG压缩、高斯噪声、模糊、几何形变等退化过程,导致水印提取相关性骤降。传统固定强度嵌入难以平衡不可见性与鲁棒性,而图像降质自适应算法通过建立退化模型,估计模糊核尺寸与噪声方差,并利用局部纹理能量生成自适应嵌入权重,使水印根据图像内容动态调整强度。该技术结合DWT域系数选择,在HL子带嵌入二值序列,有效抵抗常见攻击。在Matlab环境下,将退化仿真、自适应嵌入与攻击测试串联为完整流水线,不仅适用于课程设计、毕业设计中的算法验证,也为工程实践

weixin_29229261的博客 184

【论文阅读】| Watermark Anything with Localized Messages

文章链接:https://arxiv.org/abs/2411.07231 作者团队:Meta动机: 从像素层面来讨论水印强度的问题 目标类型: 解决实际需求 1. 将水印定义为分割任务,提出一个局部图像水印方法:设置掩码 (随机或图像分割产生),在一幅图像中的不同区域实现不同水印内容的嵌入 2. 应对小区域含水印图像的判别问题 (检测到小区域水印后直接认为有:对于用AI辅助创作的人来说,直接由此认定他侵犯版权是不公平的) 3. 保证小区域水印鲁棒性 (如果对于图像拼接不具有鲁棒性,即水印容易被拼接操作抹去

菜鸡小白的博客 1317

Matlab小波域数字水印实战包:含Haar/Db嵌入提取、多种攻击测试与全流程操作视频

一套开箱即用的Matlab小波水印实现方案,支持在图像中嵌入和提取二值水印,基于离散小波变换(DWT)完成多级分解与重构。可自由选择Haar或Daubechies系列小波基,灵活指定低频或高频子带嵌入位置,通过阈值判断或编码策略还原水印比特。内置完整脚本体系:主运行文件Runme.m、嵌入函数setdwtwatermark.m、提取函数getdwtwatermark.m、攻击模拟脚本dwtwatermarkattack.m,以及封装好的水印处理模块(func目录)。提供典型测试图像wk.tif和1.jpg,

v4w5x6的博客 184

1/15成本,实现AI水印新SOTA | 南洋理工大学&A*STAR

在局部水印任务中,实验表明,当水印信号分布在图像的不同大小区域时,MaskMark仍能保持近乎100%的提取准确率,显著优于其他全局方法,并超过当前最先进的局部水印模型WAM。在全局水印任务中,即使在高视觉保真度(PSNR > 39.5, SSIM > 0.98)下,MaskMark-D和MaskMark-ED仍能保持近乎100%的比特准确率,尤其在各类值度量和几何失真攻击下表现优异,显著优于现有基线模型。比如,图像局部区域被篡改,就可能导致全局提取失败,也无法定位水印所在具体区域。

量子位 201

jnd算法,最小可觉差

计算最小可觉差的方法,用于计算机视觉。matlab程序,其实是灌水的

JND.rar_JND_JND 计算_JND公式_jnd开奖_jnd计算公式

JND计算,画面检测semi JND ,根据公式计算此值,比较简单

万字长文!AIGC 时代数字图像水印的进展与实践 | 新程序员

【导读】数字水印是信息安全领域的新技术,用于保护数据的保密性和完整性。传统方法基于信号处理、信息论和密码学原理,分为空域和变换域方法。本文介绍了数字图像水印的发展与实践,包括定义和追求、传统数字水印方法、深度学习水印方法以及生成图像水印方法。文章还讨论了水印提取方案和未来发展趋势,如将水印信息隐藏在生成图像的风格特征中,利用深度学习模型的优势提高水印的不可感知性等。本文精选自《新程序员007:大...

AI科技大本营 3009

JND.rar_JND_JND值如何计算_WATSON模型_Watson DCT_watson视觉模型

将watson的DCT视觉模型计算出来,能够得到每个8*8块的系数的JND值

mbs 隐写算法 matlab,基于相对比值的数字水印方法与流程

本发明属于信息隐藏技术领域,具体涉及一种数字水印方法,可用于版权保护,秘密通信及真伪鉴别。背景技术:随着信息技术的发展,多媒体数据的获取、编辑和发布变得十分容易,一些不法分子可以随意复制篡改这些数据内容,因此,迫切需要一种有效的技术来保护这些数据的版权、真实性和完整性。数字水印是近年来出现的数字产品版权保护技术,为上述问题提供了一个潜在的解决方案。所谓水印技术就是将序列、文字或图标等信息隐写到多媒...

weixin_39906114的博客 318

WRF和WPS安装和编译时遇到的问题

检查是否自己netcdf和Fortran编译器一致。解决办法:修改configure.wps里的路径。如果没问题且wrf已成功编译,考虑重新。path修改为jasper在的路径。

m0_54898744的博客 1836

百度智能云ASR实战:5分钟搞定Unity语音转文字(含完整代码)

本文详细介绍了如何在Unity中集成百度智能云ASR服务,实现高效的语音转文字功能。从环境配置、音频处理到服务端通信,提供完整代码示例和实战优化技巧,帮助开发者快速实现语音交互功能,适用于游戏开发、XR应用等场景。

ujm56789012的博客 215

Watermark Anything 项目使用教程

Watermark Anything 是一个开源项目,旨在实现将本地化信息以水印的形式嵌入图像中。该项目基于论文《Watermark Anything》的原理,允许用户在图像中嵌入一个或多个局部水印,并在必要时检测和解码这些水印。Watermark Anything 适用于图像版权保护、信息隐藏等领域。 ## 2. 项目快速启动 ### 环境准备 确保您的环境中安装有 Python 3.10...

gitblog_00162的博客 549

Conformal LEC逻辑等价性检查介绍和参考脚本

分为三个产品:Conformal L、Conformal XL、Conformal GXL。L是功能性检查,XL支持复杂数据通路的综合和APR优化,GXL支持定制的stdcell和定制memory的检查。Cadence Conformal Equivalence Checker,就是常说的LEC,可以用来验证RTL、门级网表、甚至spice网表的逻辑等价性。在setup模式下,读入库、golden设计、有修改的设计,并指定一些option。对于简单的设计,通过GUI来做LEC也是可以的。

weixin_44606964的博客 916

Meta提出WAM,一个可以给图片加上水印的模型

大模型(LLM)是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等等。LLM的特点是规模庞大,包含数十亿的参数,帮助它们学习语言数据中的复杂模式。这些模型通常基于深度学习架构,如转化器,这有助于它们在各种NLP任务上取得令人印象深刻的表现。

AI_Conf的博客 1110

从分立到集成:深入解析Buck电路的核心模块与设计权衡

本文深入解析Buck电路的核心模块与设计权衡,从分立到集成方案的优缺点对比。详细探讨Buck电路的高效能量转换、小型化设计及灵活电压调节能力,并结合实际案例分享分立方案中的PWM生成、反馈环路设计及保护电路优化经验,为工程师提供实用设计参考。

weixin_29306317的博客 221

【LVGL】从HTML到LVGL:嵌入式UI的设计迁移与落地实践

嵌入式UI迁移实践:从HTML到LVGL 本文介绍了将HTML/CSS设计的UI原型迁移到嵌入式系统(LVGL)的完整流程,重点涉及"HTML→Figma→LVGL"的三步转换方法。具体内容包括: 设计迁移流程:通过Figma作为中间桥梁,将HTML原型转化为标准设计资产,再适配到LVGL库; 工具与参数准备:详细列出了设计迁移所需的工具链和需要提取的核心设计参数; Figma还原步骤:分组件讲解如何在Figma中1:1还原HTML设计,包括标题栏、压力显示区、图表区等核心组件; LVG

ymlmail的博客 1970

AI图像水印逆向工程入门:reverse-SynthID项目完全概览,看懂Gemini隐形水印的7大秘密

Google Gemini 生成的每张图像都悄悄携带着一种名为 **SynthID** 的隐形 AI 图像水印,而开源项目 **reverse-SynthID** 在没有官方解码器的情况下,用纯信号处理手段逆向出了它的完整结构:发现水印的载波频率、构建出识别准确率 90% 的检测器,并进一步做出了「视觉无损」的 SynthID 水印去除管线。本文带你拆解项目逆向出的 7 大秘密,帮新手快速看懂 G

gitblog_00851的博客 417

一位海外开发者的 OpenSPG KAG 实践分享

KAG 是一个以创建和操作知识图谱为核心的框架。知识图谱是数据之间相互关联的可视化和结构化表示,对于搜索引擎、推荐系统和机器学习等应用至关重要。KAG 的目标是提供一个强大的平台,使开发者能够:轻松构建图谱;通过增强算法丰富数据;集成人工智能,以进行更精确的推理。通过理解 KAG,可以明显看出,这个框架旨在帮助从初学者到专业开发者,在项目中创造更优的解决方案。它在简便性和集成方面的优势,使其成为下一代基于数据的应用程序的前景工具。

金融机器智能社区 3405

AI抠图式抄袭:从图像分割原理到Python取证工具链

图像分割是计算机视觉的重要基石,它赋予机器从像素层面理解图像结构的能力。深度学习模型让分离前景与背景变得足够简单,催生出各类一键抠图工具,大幅降低了图像处理的工程门槛。与此同时,AI绘画与生成式技术的普及,也让素材复用变得难以追踪,未经授权的“借鉴”甚至直接裁剪使用成为创作者面临的现实风险。面对AI抠图式抄袭等新型侵权,单纯依靠肉眼对比已不够高效,感知哈希与ORB特征匹配等技术能够为图像追溯提供客观证据。通过批量添加水印、计算视觉指纹、匹配局部特征,创作者可以搭建一套完备的反抄袭取证工具链,让技术真正服务于

weixin_30336061的博客 507

使用强化学习快速让AI学会玩贪食蛇游戏(轻量级二十分钟训练+代码)

如何让AI玩会贪食蛇,甚至比你厉害概述构建问题(强化学习求解的一般步骤)环境动作定义状态定义奖励设计训练奖励值收敛图效果代码 概述 所用技术:强化学习(Deep Reinforcement Learning),属于一种无监督学习,利用奖励rewardrewardreward教会智能体AgentAgentAgent在合适的场景做合适的决策。 采用算法:试过两种算法D3QN和离散版本的PPO算法,最终采用离散版本PPO算法+GAE(PPO是我用过的性能最好的算法之一) 编程语言与深度学习框架:Python3.

ZYunfei的博客 2万+

redhawk:STA timing data file解析

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?STA timing data file分为以下几个部分:• Header• Name Map• Footer这部分报告设计的基本信息,例如文件类型,设计名称,分隔符等。...

m0_61544122的博客 1153
上一篇: 信息增强的图像超分辨率重建
下一篇: 小算力LVLMs,gpt4平替
Srlua小谢
Srlua小谢 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄4年 8963粉丝 332原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值