DENet:用于可见水印去除的Disentangled Embedding网络笔记
1 Title
DENet: Disentangled Embedding Network for Visible Watermark Removal(Ruizhou Sun、Yukun Su、Qingyao Wu)[AAAI2023 Oral]
2 Conclusion
This paper propose a novel contrastive learning mechanism to disentangle the high-level embedding semantic information of the images and watermarks, driving the respective network branch more oriented. The proposed mechanism is leveraged for watermark image decomposition, which aims to decouple the clean image and watermark hints in the high-level embedding space.This can guarantee the learning representation of the restored image enjoy more task-specific cues. In addition, this paper introduce a self-attention-based enhancement module, which promotes the network’s ability to capture semantic information among different regions, leading to further improvement on the contrastive learning mechanism
3 Good Sentences
1、These uncertain cues are then fed into the decoder for further image reconstruction, which may harm the network to model the useful information, explicitly. With this in mind, our goal is to disentangle their semantic embeddings in the high-dimensional space, driving the network focusing on different parts of the watermarks and clean image.(The motivation of this paper to proposed DENet)
2、Although the above mechanism provides additional supervision for disentangling network learning, it is hard to achieve ideal embedding with only conventional convolution layers,we adopt multi-head attention to capture information from different regions(Why need self-Attension Block)
3、we first conduct sensitivity analysis experiments of the parameters. Then, we remove
all modules and add them back incrementally to explore their effectiveness.(The necessity of the Ablation Study)
简介:本文提出了一种新的对比学习机制来解开图像和水印的高级嵌入语义信息,从而使相应的网络分支更加定向。此外,本文还引入了一个基于自注意的增强模块,该模块提高了网络在不同区域之间捕获语义信息的能力,从而进一步改进了对比学习机制。
介绍:水印去除方法作为一种对抗技术推动数字水印的发展。而随着深度学习的蓬勃发展,目前,人们将水印去除任务视为图像到图像的一个翻译问题,然而,目前的方法忽略了水印和无水印图像特征的高级语义嵌入。
以前的方法在单个编码器内捕获水印图像的语义信息,这将使它们的学习表示不那么具有鉴别性和分离性,这些不明确的线索被送到解码器中用于进一步的图像重建,在网络对有用信息进行明确建模时可能导致损害。
而本文提出的DENet,在高维空间中解开水印和无水印图像的语义嵌入,这可以为解码器重建图像提供更明确的提示。水印图像的解耦嵌入具有潜在内容的更加独立的分布。具体来说,本文提出了一种对比学习机制来解耦水印和无水印图像的语义信息。在本文中组织了两组对比度损失约束,并构造了一个暹罗网络来获得正负对。还引入了一个基于自我注意的增强模块,旨在增强对不同区域特征的感知。

本文的主要贡献有三:
1、第一次尝试探索在高维空间中干净的图片和水印的不同嵌入的影响,并实验性地拉动正对,推开负对。
2、提出了一种用于水印去除的Disentangled Embedding网络,旨在通过对比学习机制在高级嵌入空间中解耦图像和水印表示,以获得更具定向的特征进行重建。以及提出了一个基于自注意的网络增强模块,用于捕获来自不同区域的信息。
3、 在不同数据集上进行的广泛实验评估验证了我们提出的方法的优越性和有效性。
相关工作:1、水印去除:随着深度学习的发展,出现了许多数据驱动的神经网络方法。其中一些仅将水印去除视为图像到图像的翻译任务。其他具有更好性能的替代方法在多任务学习框架内考虑了水印定位和水印去除。然而,上述方法都没有意识到解开不同任务之间的高级语义嵌入的重要性,并且仍然只是逐步接近不同的目标。
2、对比学习:对比学习是一种在无监督视觉表示学习领域广泛应用的有效方法。对比学习的核心思想是构建正对和负对,并采用Info-NCE等损失函数来缩小正对之间的距离,扩大负对之间的差距。
方法:本文的目标是在高级空间中解开水印和无水印图像的嵌入,从而明确地向网络提供有价值的定向解耦信息。以下是提出的DENet的模型。
整体架构:第一阶段:包括带水印图片、无水印图片、水印三重输入,输入后提取的特征构成正对和负对,目标是最大化负对距离,最小化正对距离,以分解水印和无水印图像之间的分布。然后,这些特征被馈送到解码器中,并产生粗略的结果。
第二阶段:第一阶段的结果是输入,最终产生细化的输出。
测试阶段,只给定带水印的图像,它将经过预训练的网络,最终重建为无水印图像。
具体地说,在给定数据集中存在三种输入,包括带水印图像、无水印图像和水印,它们首先被送到共享权重编码器中以捕获语义信息。这样可以获得与无水印图像的特征和水印的特征相对应的语义嵌入和
。随后,将带水印图像的特征进一步发送到自注意力模块,对不同像素区域之间的语义信息进行建模,这将产生两个不同的嵌入
和
。如图中蓝色虚线和红色虚线所示,可以分别构建两个三元组,分别是{
,
,
}和{
,
,
},而对于每个三元组,目标是最小化正对距离,同时最大化负对距离。这样,可以在高维空间中解耦其的语义嵌入,获得更具定向的语义特征,这有利于后续的解码器网络分支。
随后,两个不同的解缠嵌入线索被送到相应的解码器中用于水印去除和水印定位,这分别产生粗的无水印图像和水印掩模。然后,将粗略结果连接在一起,并通过Unet架构中的细化网络。具体是对相同分辨率下的两个特征图采用张量元素相加运算。最后,细化网络将产生细化的重构无水印图像。
解缠嵌入机制(Disentangled Embedding Mechanism):
为了理清不同学习特征的嵌入,本文引入了对比学习机制。
下面将以为例,介绍该解缠嵌入机制。
给定无水印的图像嵌入∈
以及编码特征
,
∈
。
首先,对数据集中给定的水印掩码进行下采样(Downsample),得到∈
,并且能够将嵌入重新表达如下:
其中⊙表示逐元素乘法,φ表示全局平均池,查询q应该与其正密钥p相似,而与负密钥n不同。
在实际应用中,不能直接将水印图像输入共享权重编码器。相反,要在水印的黑色区域填充与无水印图像相同的内容,否则 0 的无用信息会对编码器造成损害。在本文中,通过使用公式(3) 可以删除之前填充的内容。
朴素距离(?)(Naive Distance):可以只考虑正对,并尝试使它们的嵌入距离随着损失而更近,这可以如下执行:
。这种方法效果不太好。
三元距离(Triplet Distance):上个距离的问题在于没有考虑负对,这里综合考虑正对和负对的距离,把损失定义为
,是控制权重的参数。
与上述相反,把
视作查询,{
}是正密钥和负密钥。
自注意力模块(Self-Attention Block):仅用传统的卷积层很难实现理想的嵌入。因此,本文采用多头注意力来捕捉来自不同地区的信息。给定输入X,对于第i个头,函数公式化如下:
,
,
是三个投影矩阵,
是特征维度,最后将来自不同头的所有特征连接起来作为输出。
端到端训练(End-to-end Training):本文所提出的框架是一个端到端网络,所有模块都在一次反向传播中更新。训练阶段使用的损失函数如下。根据Hertz et al. 2019的方法,二进制交叉熵损失应用于监督具有ground truth:的水印掩码

而给定无水印的ground truth:,粗略输出图像
和精细化的输出图像
,使用L1损失来压缩ground truth和预测输出之间的差距:

再添加额外的深度感知损失,以获得更高质量的输出,其中表示预训练的VGG16中第k层的激活图

最后,将上述所有损失函数进行组合,得到具有可控超参数的最终损失函数

实验部分:
数据集介绍:所有实验都是在LOGO系列数据集上进行的。LOGO-L包含12151张用于训练的水印图像和2025张用于测试的图像。在该数据集中,水印透明度范围在35%到60%之间,水印大小也被调整为原始图像的35%到60%。LOGO-H包含与LOGO-L相同数量的图像,但该数据集中的水印大小占60%至80%,透明度设置为60%至85%。因此,由于缺少纹理和较大的水印区域,与LOGO-L相比,这是一个更难实现去水印的数据集。LOGO-Gray:该数据集还包括12151张用于训练的图像和2025张用于测试的图像。与上述两个数据集不同,嵌入的水印只包含灰度图像。
实现细节:本文提出的方法通过pytorch实现,训练200个epoches,输入的图像分辨率为256*256,选择Adam作为优化器,学习率为1e-3,批量大小为16,公式7中的超参数为=1,
=0.25,
=0.25,实验在几个流行的指标上评估了该方法,如峰值信噪比(PSNR)、结构相似性(SSIM)和深度感知相似性(LPIPS)。

本文还对这个方法做了消融实验以及对应的可视化。
相关文章:
DENet:用于可见水印去除的Disentangled Embedding网络笔记
1 Title DENet: Disentangled Embedding Network for Visible Watermark Removal(Ruizhou Sun、Yukun Su、Qingyao Wu)[AAAI2023 Oral] 2 Conclusion This paper propose a novel contrastive learning mechanism to disentangle the high-level embedd…...
C++初阶(十五)Stack和Queue
文章目录 一、Stack的模拟实现二、Queue的模拟实现三、容器适配器1、什么是容器适配器2、STL标准库中stack和queue的底层结构3、 deque的简单介绍(了解)1、deque的原理介绍2、deque的缺陷 4、为什么选择deque作为stack和queue的底层默认容器 一、Stack的模拟实现 #include<…...
C#面试题
基本概念 装箱和拆箱 装箱的过程,是将 值类型 转换为 引用类型 的过程; 拆箱则是将引用类型转换为值类型。 int val 100; object obj val; //装箱 int num (int) obj; //拆箱 委托(delegate) 委托(Delegate) 是存有对某个…...
python源码,在线读取传奇列表,并解析为需要的JSON格式
python源码,在线读取传奇列表,并解析为需要的JSON格式 [Server] ; 使用“/”字符分开颜色,也可以不使用颜色,支持以前的旧格式,只有标题和服务器标题支持颜色 ; 标题/颜色代码(0-255)|服务器标题/颜色代码(0-255)|服务…...
二叉排序树的判断(二叉树的顺序存储):2022年408算法题
对于采用顺序存储方式保存的二叉树,根结点保存在SqBiTNode[0]中;当某结点保存SqBiTNode[i]中时,若有左孩子,则其值保存在SqBiTNode [2i1]中;若有右孩子,则其值保存在SqBiTNode[2i2]中;若有双亲结…...
Kubernetes版本升级到v1.18.0方法
升级k8s版本才能使用kube-prometheus安装监控 1、查看集群状态 [rootk8s-master k8s-script]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready master 5d22h v1.18.0 k8s-slave1 Ready <none> 4d10h v1.18.0 k…...
了解 git rebase
了解 git rebase 大多数人习惯使用 git merge 将更改从功能分支合并到主分支,但还有其他方法。我们是否曾经遇到过 git rebase 这个术语并想知道它是什么?或者我们可能听说过 rebase 和 merge ,但不确定何时使用哪个?不用担心&am…...
程序员的养生之道:延寿健康的十大秘诀(下)
程序员的养生之道:延寿健康的十大秘诀(上)-CSDN博客 目录 6. 心理调节,减轻压力 6.1 程序员常见的心理问题 6.2 压力管理的重要性 6.3 放松技巧与应对策略 6.4 积极心态与心理健康 7. 正确坐姿,保护颈椎腰椎 …...
【java】保留前N月数据文件,定期删除数据
数据越积越多,过于冗余;数据库定期删除指定时间前的数据;文件生成的删除指定时间前端文件 SFTP文件定期删除 java sftp 定时清理指定文件中固定时间 依赖 <!-- ftp文件上传/下载Jar包 --> <dependency><groupId>com.jc…...
12.9_黑马数据结构与算法笔记Java
目录 057 多路递归 e03 杨辉三角2 thinking:二维数组的动态初始化? 057 多路递归 e03 杨辉三角3 058 链表 e01 反转单向链表1 058 链表 e01 反转单向链表2 058 链表 e01 反转单向链表3 递归 058 链表 e01 反转单向链表4 为什么是returnn1呢&…...
K8S学习指南(1)-docker的安装
文章目录 引言1. Windows 系统中安装 Dockera. 确认系统要求b. 下载 Docker Desktopc. 安装 Docker Desktopd. 配置 Docker Desktope. 验证安装 2. Ubuntu 系统中安装 Dockera. 更新包列表b. 安装依赖包c. 添加 Docker GPG 密钥d. 添加 Docker APT 仓库e. 安装 Dockerf. 添加用…...
vue3 + mark.js 实现文字标注功能
效果图 安装依赖 npm install mark.js --save-dev npm i nanoid代码块 <template><!-- 文档标注 --><header><el-buttontype"primary":disabled"selectedTextList.length 0 ? true : false"ghostclick"handleAllDelete"…...
运筹优化 | 模拟退火求解旅行商问题 | Python实现
"""模拟退火旅行商""" import random import numpy as np import math import time import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False location np.loadtxt(city_location.t…...
1017 A除以B
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 ABQR 成立。 输入格式: 输入在一行中依次给出 A 和 B,中间以 1 空格分隔。 输出格式: 在一行中依…...
SAP UI5 walkthrough step8 Translatable Texts
在这个章节,我们会将一些文本常量独立出一个资源文件 这样的话,可以方便这些文本常量被翻译成任意的语言 这种国际化的操作,我们一般命名为i18n 新建一个文件i18n.properties webapp/i18n/i18n.properties (New) showHelloButtonTextSay …...
RocketMQ-源码架构二
梳理一些比较完整,比较复杂的业务线 消息持久化设计 RocketMQ的持久化文件结构 消息持久化也就是将内存中的消息写入到本地磁盘的过程。而磁盘IO操作通常是一个很耗性能,很慢的操作,所以,对消息持久化机制的设计,是…...
Unity_ET框架项目-斗地主_启动运行流程
unity_ET框架项目-斗地主_启动运行流程 项目源码地址: Viagi/LandlordsCore: ET斗地主Demohttps://github.com/Viagi/LandlordsCore下载项目到本地。 启动运行步骤: 下载目录如下: 1. VS(我用是2022版VisualStudio)…...
自动化测试框架 —— pytest框架入门篇
今天就给大家说一说pytest框架。 今天这篇文章呢,会从以下几个方面来介绍: 01、pytest框架介绍 pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效,支持非常丰富的插件,同时兼容 unittest 框架。…...
String类详解
String类详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 解密String类:探秘Java中的字符串魔法 在Java的世界里,String类犹如一位魔法…...
Linux高级管理--安装MySQL数据库系统
MySQL服务基础 MySQL.是一个真正的多线程、多用户的SQL数据库服务,凭借其高性能、高可靠和易于使 用的特性,成为服务器领域中最受欢迎的开源数据库系统。在2008年以前,MySOL项目由MySQL AB公司进行开发,发布和支持,之后…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
