图像处理之《黑盒扰动的可逆噪声流鲁棒水印》论文阅读

一、文章摘要

近年来,基于深度学习的数字水印框架得到了广泛的研究。现有的方法大多采用基于“编码器-噪声层-解码器”的架构,其中嵌入和提取过程分别由编码器和解码器完成。然而,这种框架的一个潜在缺点是编码器和解码器可能不能很好地耦合,导致编码器可能会将一些冗余特征嵌入到主机图像中,从而影响整个算法的不可见性和鲁棒性。为了解决这一问题,本文提出了一种基于流的鲁棒水印框架。该框架的基本组成部分是一个可同时实现嵌入和提取的可逆上下采样神经块。因此,编码后的特征与解码器需要的特征保持高度的一致性,有效地避免了冗余特征的嵌入。此外,为了保证黑盒扰动的鲁棒性,设计了一个可逆噪声层(INL)来模拟黑盒扰动,并在训练阶段作为噪声层。利用INL的可逆性,在提取前进行预处理,消除了扰动,进一步提高了算法的鲁棒性。大量的实验证明了该框架在视觉质量和鲁棒性方面的优越性。与现有的框架相比,该框架的视觉质量(以PSNR衡量)提高了2dB, JPEG压缩后的提取精度(QF=50)提高了4%以上。此外,提取精度在95%以上,对黑盒扰动具有较强的鲁棒性。
在这里插入图片描述

二、提出的方法

2.1 综述

该方法的主要目的是设计一个鲁棒的水印框架,不仅可以用于白盒扰动,也可以用于黑盒扰动,如图2所示。要训练的主要组件是一个基于流的编码器/解码器(FED),它有几个可逆的神经块。由于FED的结构可逆性,它可以在相同的参数下实现前向编码和后向解码。前向编码过程将主机图像Io中的水印信息M隐藏起来,得到带水印的图像Iem和冗余的Rf。然后,噪声层对水印图像进行有效的扰动处理,并为解码器训练提供扰动图像Id。后向解码过程以经过噪声层处理的扰动图像Id和全零矩阵Rb为输入,对其进行解码,得到提取的水印信号Mex。对于白盒扰动,我们使用现有的可微噪声层进行训练。对于黑盒扰动,我们将采用另一种INN来模拟这种扰动,并使用训练良好的模型作为噪声层,称为INL (invertible noise layer,可逆噪声层),详细内容将在章节中说明。在测试阶段,当面对黑盒扰动时,我们首先使用INL的后向处理将扰动的图像Id去噪为去噪后的图像Ide,并将Ide送入FED进行进一步解码

在这里插入图片描述
图2 所提出方法的框架。该算法的主要架构是基于流的编码器和解码器,它由几个可逆的神经块组成,可用于前向编码过程和后向解码过程。在编码器和解码器之间,执行包含白盒和黑盒扰动的噪声层,以将带水印的图像扰动为用于解码器训练的扰动版本

2.2 基于流的编码器/解码器

如前所述,基于流的网络自然适合于水印任务。基于流的模型有两个基本组成部分,即表示为fθ的前向编码函数和相应的具有相同参数θ的逆函数f−1θ。在前向编码过程中,接收水印矩阵M∈Rh×w×1和主机图像Io∈RH×W×3作为输入,输出水印图像Iem∈RH×W×3和冗余信息Rf∈Rh×w×1。后向解码过程中,将全零矩阵Rb∈Rh×w×1和扰动图像Id∈RH×W×3输入FED进行解码,得到提取的水印Mex∈Rh×w×1和恢复后的图像Ire∈RH×W×3。

FED与n个可逆神经块相结合。图3显示了第i个可逆神经块的结构,它由一个上行子网络Ui和两个下行子网络D1i和D2i组成。Ui的目标是将mi∈Rh×w×1上采样到与图像Io∈RH×W×3相同的大小。D1i和D2i的目标是将样本xi+1∈RH×W×3降至与mi∈Rh×w×1相同的大小。对于前向编码过程中的第i个可逆神经块,输入为mi和xi,输出mi+1和xi+1可表示为:
在这里插入图片描述

其中⊗表示点积运算。经过最后一个可逆神经网络,我们可以得到mn+1和xn+1,它们对应于最终输出,即冗余信息Rf和水印图像Iem。

对于后向解码过程,信息流从第(i + 1)个可逆神经网络到第i个可逆神经网络,如图3所示。其中,第一个可逆神经网络的输入是全零矩阵Rb和噪声层产生的扰动图像Id,后向解码的最后一个可逆神经网络的输出是rn和x’n。对于第i个可逆神经网络,输入为ri+1和x’i +1,输出为ri和x’i,可以用:
在这里插入图片描述
在这里插入图片描述
图3 第i个可逆神经块的主干,由一个上行子网络Ui和两个下行子网络D1i和D2i组成

经过后向解码过程中最后一个可逆神经网络的处理,得到输出Mex,即r1,作为提取的水印。需要说明的是,Rb∈Rh×w×1是一个全零矩阵,因此在解码时,除了扰动图像Id外,不需要任何先验信息,保证了盲提取。在本文中,每个Ui和Di的基本组件由6个“ConvLeakyReLU”块组成,如图2所示。

2.3 噪声层

噪声层是保证鲁棒性的关键。在本文中,我们分别对白盒扰动和黑盒扰动使用不同的噪声层。对于白盒扰动,我们直接使用现有的可微分噪声层(例如JPEGSS (Shin and Song 2017)用于JPEG压缩)。对于黑盒扰动(如风格转移),我们提出了一种新的方法,通过使用INN模拟扰动并将训练良好的模型作为噪声层来实现相应的鲁棒性。具体可以描述如下:

INL的训练数据 为了训练INL(记为Nθd,参数为θd),我们首先通过查询黑盒扰动过程生成训练数据。具体来说,我们输入原始图像I+,得到相应的扰动版本I−。然后使用图像对{I+, I−}作为INL的训练数据

INL体系结构 INL的架构如图4所示。整个INL由k个具有相同结构的可逆噪声块组成,其构造如下:对于正向过程中的第i块,输入为yhi和yli,对应的输出为yhi+1和yli+1,可表示为:
在这里插入图片描述

其中φ, ρ和ω可以是任意函数,我们在(Jing等人2021)中选择密集块,这被证明可以确保良好的表示能力。对于第一个块,{yh1∈RH/2×W/2×9, yl1∈RH/2×W/2×3}的输入分别是图像I+∈RH×W×3经过DWT后的高频分量和低频分量。每个yhi和yli与yh1和yl1保持相同的大小。在最后一个块之后,对输出的yhk+1和ylk+1进行逆DWT,生成最终的图像Id+。然后用输入I−进行反向处理,输出恢复后的图像Ide_。

在这里插入图片描述
图4 可逆噪声层的主干,由几个可逆噪声块组成。每个可逆噪声块由三个模块φ, ρ和ω组合而成,它们是任意函数

INL训练损失 要求扰动后的图像Id+在前向处理过程中应尽可能与原图像I-相似,在后向处理过程中输入原图像I-时,得到的图像Ide_也应与原图像I+相似。在这里,我们使用术语Ldis来最小化每对训练数据之间的平均距离,可以表示为:
在这里插入图片描述

其中Id+等于Nθd(I+),其中Nθd表示INL的正向过程;Ide_等于N−1θd (I−),其中N−1θd表示INL的反向过程。θd表示INL参数,MSE表示均方误差。训练完INL后,将其固定为一个噪声层来训练前FED。

2.4 损失函数

总损失函数由两种不同的损失组成:保证不可见性的图像损失和保证鲁棒性的信息损失

图像损失 前向编码的目的是将水印M嵌入到主机图像Io中,生成水印图像Iem。为了实现不可见性,需要水印图像接近主机图像。为了实现这一目标,图像损失Limage定义如下:
在这里插入图片描述

式中,Iem等价于fθ(Io,M),其中θ表示所拟FED的参数。

信息损失 反向解码的目的是从扰动的图像Id中无损地提取水印。为此,我们定义消息丢失Lmessage如下:
在这里插入图片描述

式中Mex等于f−1θ(Id,Rb),其中f−1θ表示逆向过程。Rb是与M大小相同的全零矩阵。

全部损失 总损失函数Ltotal是图像损失Limage,消息损失Lmessage的加权和,如下:
在这里插入图片描述

这里,λ1和λ2是平衡这两个损失的权重。需要注意的是,我们没有对前向冗余信息Rf和恢复图像Ire进行任何限制,因为这两个变量在整个水印过程中并不重要

三、实现细节

数据集和设置 本文使用DIV2K (Agustsson and Timofte 2017)训练数据集进行训练。我们选择的测试数据集是经典的USC-SIPI (Viterbi 1977)图像数据集。将图像的宽度W和高度H设置为128,水印信息的长度设置为64位,即H和W设置为8。λ1和λ2的参数分别固定为1和10。FED n中可逆神经块的个数设为8,可逆噪声块k的个数设为8。该框架由PyTorch (Collobert, Kavukcuoglu和Farabet 2011)实现,并在一台NVIDIA RTX 3090ti上运行。1对于每个网络的参数优化,我们使用Adam (Kingma and Ba 2015)作为默认超参数,其学习率为1e-4。

基准 为了验证所提出方法的不可见性和鲁棒性,我们将其与几种最先进的(SOTA)水印方法进行了比较,包括三种基于DNN的方法:HiDDeN (Zhu等人2018), TSDL (Liu等人2019)和MBRS (Jia, Fang,和Zhang 2021)。为了测试鲁棒性,我们选择了7种白盒扰动(“Cropout”、“Dropout”、“Gaussian Noise”、“Salt&Pepper Noise”、“Gaussian Blur”、“Median Blur”和“JPEG Compression”)和4种黑盒扰动(“Crayon”、“Heavy Color”、“Reverse Color”、“Sketch”),如图5所示。对于每种扰动,我们训练一个特定的水印网络以更好地说明。值得注意的是,对于黑盒扰动训练,我们使用INL结合“高斯噪声”预训练模型,以获得更好的收敛性。为了公平比较,所有基于DNN的方法都使用相同的数据集和相同的噪声层进行重新训练。所有实验均以尺寸为128×128的图像和尺寸为8× 8比特的水印进行

在这里插入图片描述
图5测试的四个黑盒扰动

评价 为了衡量水印图像的不可见性,我们采用峰值信噪比(peak signal-to-noise ratio,PSNR)作为度量标准,其值越大表示不可见性越好。对于鲁棒性,我们直接使用提取位精度(extraction bit accuracy, ACC)作为评价指标,ACC越大表示鲁棒性越好。

论文地址:Flow-Based Robust Watermarking with Invertible Noise Layer for Black-Box Distortions

源码地址:FIN

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/384709.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux系统下vscode portable版本的python环境搭建003:venv

这里写自定义目录标题 python安装方案一. 使用源码安装(有[构建工具](https://blog.csdn.net/ResumeProject/article/details/136095629)的情况下)方案二.使用系统包管理器 虚拟环境安装TESTCG 本文目的:希望在获得一个新的系统之后&#xff…

电路设计(15)——篮球赛24秒违例倒计时报警器的proteus仿真

1.设计要求 设计、制作一个篮球赛24秒违例倒计时报警器。要求: (1)具有倒计时功能。可完整实现从“24”秒开始依序倒计时并显示倒计时过程,显示时间间隔为1秒。 (2)具有消隐功能。当“24”秒倒计时…

洛谷: P1308 [NOIP2011 普及组] 统计单词数

前言: 这道题没理解清题目表达意思,我开始想的是用map来记录个数,然后一个变量记录一开始出现的单词位置,不挺简单的吗,然后....就AC了2个..从错误提示能看到个数没啥问题,但是第一个单词位置不对,看了新样…

【C语言】assert断言:保护程序的利器

在软件开发过程中,我们经常会遇到一些假设条件或者预期行为。例如,我们可能假设一个函数的输入参数必须在某个范围内,或者某个变量的值应该满足特定的条件。当这些假设或预期行为被打破时,程序可能会出现异常行为,甚至…

GEE:随机森林回归教程(样本点、特征添加、训练、精度、参数优化)

作者:CSDN @ _养乐多_ 对于分类问题,这个输出通常是一个类别标签 ,而对于回归问题,输出通常是一个连续的数值。回归可以应用于多种场景,包括预测土壤PH值、土壤有机碳、土壤水分、碳密度、生物量、气温、海冰厚度、不透水面积百分比、植被覆盖度等。 本文将介绍在Google…

嵌入式Qt Qt 中的坐标系统

一.Qt中的坐标系统 实验1&#xff1a;窗口坐标大小 #include <QtGui/QApplication> #include <QPushButton> #include <QDebug> #include "widget.h" int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();qDebug()&…

Vue中v-on 可以监听多个方法吗

当然可以&#xff01;Vue.js是一款非常强大的JavaScript库&#xff0c;它提供了很多方便的方法和指令&#xff0c;使我们可以更容易地构建交互式的Web应用程序。其中&#xff0c;v-on指令是Vue.js中一个非常重要也非常常用的指令&#xff0c;它用于监听DOM事件&#xff0c;并在…

【DDD】学习笔记-四色建模法

或许正是认识到彩色 UML 在建模过程的不足之处&#xff0c;ThoughtWorks 的徐昊才在彩色 UML 基础之上提出了自己的“四色建模法”。可考的四色建模法资料仅见于徐昊在 InfoQ 上发表的文章运用四色建模法进行领域分析。在这篇文章中&#xff0c;徐昊回答了建模活动的一个关键问…

网络渗透测试:Wireshark抓取qq图片

Wireshark Wireshark Downloadhttps://www.wireshark.org/download.html 简介 WireShark是非常流行的网络封包分析工具&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息。常用于开发测试过程中各种问题定位。本文主要内容包括&#xff1a; 1、Wireshar…

docker安装、运行

1、安装 之前有docker的话&#xff0c;需要先卸载旧版本&#xff1a; sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 安装之前需要安装yum工具&#xff1a; sud…

Netty Review - ServerBootstrap源码解析

文章目录 概述源码分析小结 概述 ServerBootstrap bootstrap new ServerBootstrap();bootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 1024).childHandler(new ChannelInitializer<SocketChannel>() …

Stable Diffusion 模型下载:DreamShaper(梦想塑造者)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 DreamShaper 是一个分格多样的大模型&#xff0c;可以生成写实、原画、2.5D 等…

STM32 USART串口通信

目录 USART串口 串口发送 串口发送接收 串口收发HEX数据包 串口收发文本数据包 USART串口 串口发送 Serial.c #include "stm32f10x.h" // Device header #include "stdio.h" #include "stdarg.h"/*** brief 初始化串口以…

C++ 广度优先搜索(bfs)(五十四)【第一篇】

今天我们来学习一下一个新的搜索&#xff0c;广度优先搜索。 1.广度优先搜索的前提 队列&#xff08;queue&#xff09; 是一种 操作受限制 的线性表&#xff0c;其限制&#xff1a; 只允许从表的前端&#xff08;front&#xff09;进行删除操作&#xff1b; 只允许在表的后端…

openssl3.2 - osslsigncode工程的学习

文章目录 openssl3.2 - osslsigncode工程的学习概述笔记工程库地址工程的编译osslsigncodeM工程文件列表osslsigncodeM工程搭建细节原始工程实现的改动自己封装的包含openssl和curl的实现osslsigncodeM工程命令行的用法备注 - VS2019调试环境备注 - 如果要单步openssl的API学学…

OpenCV-37 最小外接矩形和最大外接矩形

一、外接矩形 外接矩形分为最小外接矩形和最大外接矩形。 下图中红色矩形为最小外接矩形&#xff0c;绿色矩形为最大外接矩形。 1. 最小外接矩形 minAreaRect(points) --- 最小外接矩形 point为轮廓&#xff1b; 返回值为元组&#xff0c;内容是一个旋转矩形(RotatedRect…

MySQL简单配置GTID

前期规划 IP地址 角色 系统版本 内核 软件包名称 192.168.2.3 Mysql主服务器 CentOS Stream 9 5.14.0- 381.el9.x86_64 mysql-8.2.0-linux-glibc2.17-x86_64.tar.xz 192.168.2.4 Mysql从服务器 CentOS Stream 9 5.14.0- 381.el9.x86_64 mysql-8.2.0-linux-glibc…

【Tauri】(2):使用Tauri应用开发,使用开源的Chatgpt-web应用做前端,使用rust 的candle做后端,本地运行小模型桌面应用

视频演示地址 https://www.bilibili.com/video/BV17j421X7Zc/ 【Tauri】&#xff08;2&#xff09;&#xff1a;使用Tauri应用开发&#xff0c;使用开源的Chatgpt-web应用做前端&#xff0c;使用rust 的candle做后端&#xff0c;本地运行小模型桌面应用 1&#xff0c;做一个免…

MIT-Missing Semester_Topic 3:Editors (Vim) 练习题

文章目录 练习一练习二练习三练习四练习五练习六练习七练习八 本 Topic 的 MIT 讲解网页&#xff08;练习题未给解答&#xff09; 练习一 自行完成 vimtutor。vimtutor 是 Vim 本身附带的一个入门教程&#xff0c;在 shell 中直接输入 vimtutor 便能运行。注意该教程在 8024 大…

代码随想录day20--二叉树的应用8

LeetCode669.修剪二叉搜索树 题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没…