【论文阅读】SteganoGAN:High Capacity Image Steganography with GANs

论文发表时间:2019

论文地址:https://arxiv.org/abs/1901.03892

文档: https://dai-lab.github.io/SteganoGAN/

官方代码:(pytorch) https://github.com/DAI-Lab/SteganoGAN

1. Introduction

传统隐写方法在 0.4 bpp 下有效

深度学习可用于识别嵌入位置,或者作为端到端的方案

但深度学习对载体图像大小有限制;或试图在图像中嵌入图像

之前的工作没有探讨能够成功隐藏信息的极限

本文提出一种端到端图像隐写模型SteganoGAN

  • 使用dense连接,缓解梯度消失问题,提升性能;
  • 在对抗训练框架中使用多个损失函数同时优化 encoder、decoder 和 critic networks;
  • 实现任意数据嵌入自然场景载体图片,嵌入率达到 4.4 bpp

最左边的图是原始载体图片,右侧4幅图分别包含大约每像素1、2、3和4bit的秘密信息,不会产生任何可见伪影

贡献:

  • 使用对抗训练解决隐写任务,隐写容量为其他方法10倍;
  • 提出评估基于深度学习隐写算法capacity 的方法;
  • 通过检测对抗传统隐写分析工具的能力来评估方法;
  • 通过检测避免深度学习隐写分析工具的能力来评估方法;

2. Motivation

  • 弥补密码学固有缺陷(能够保护信息但无法隐藏信息的存在本身);
  • 满足实际场景对隐写需求:高容量(嵌入更多信息)、不可检测(不被发现信息的存在)、无损回复(接收方准确提取信息);
  • 解决现有隐写技术的缺陷(嵌入容量低、易被隐写分析工具检测);

3. SteganoGAN

隐写的两个操作:encodingdecoding

  • endoding : 使用载体图像和二进制消息,创建隐写图像(steganographic image);
  • decoding :获取隐写图像,恢复二进制消息
3.1 Notation
  • C C C:载体图像
  • S S S :隐写图像
    以上两者都是RGB格式,有相同分辨率 W × H W\times H W×H
  • M M M:要写入的二进制消息

M ∈ { 0 , 1 } D × W × H M\in\{0,1\}^{D\times W\times H} M∈{0,1}D×W×H
D D D是相对有效载荷(relative payload)的上限;实际相对有效载荷为 ( 1 − 2 p ) D (1-2p)D (1−2p)D,其中, p ∈ [ 0 , 1 ] p∈[0, 1] p∈[0,1],为error rate.

载体图像 C C C从自然图像分布中采样得到。隐写图像 S S S 通过 learned encoder 生成,即 S = ε ( C , M ) S= {\Large{\varepsilon}} (C,M) S=ε(C,M),秘密消息用 learned decoder 从隐写图像中提取得到,即 M = D ( S ) M=\mathcal D(S) M=D(S)

优化任务: 训练编码器和解码器,最小化损失

  • 解码错误率 p p p
  • 自然图像和隐写图像分布之间的距离 d i s ( P C , P S ) dis(\mathbb{P}_C, \mathbb{P}_S) dis(PC,PS)。
    为了优化解码器和编码器,需要一个评估器 C ( ⋅ ) \mathcal{C}(\cdot) C(⋅) 来度量 d i s ( P C , P S ) dis(\mathbb{P}_C, \mathbb{P}_S) dis(PC,PS)。

定义3种对张量的处理操作:

(1)Cat(拼接):

  • 输入:两个张量 X ∈ R D × W × H X \in \mathbb{R}^{D \times W \times H} X∈RD×W×H、 Y ∈ R D ′ × W × H Y \in \mathbb{R}^{D' \times W \times H} Y∈RD′×W×H(宽高相同、深度不同)
  • 输出: Φ ∈ R ( D + D ′ ) × W × H \Phi \in \mathbb{R}^{(D+D') \times W \times H} Φ∈R(D+D′)×W×H
  • 沿深度轴拼接两个张量,用于合并不同维度的特征

(2) C o n v D → D ′ Conv_{D \rightarrow D'} ConvD→D′ (卷积块)

  • 输入: X ∈ R D × W × H X \in \mathbb{R}^{D \times W \times H} X∈RD×W×H
  • 输出: Φ ∈ R D ′ × W × H \Phi \in \mathbb{R}^{D' \times W \times H} Φ∈RD′×W×H(宽高不变、深度调整)
  • 实现张量深度转换,结构包含:3×3卷积核(步长1、填充"same")+ leaky ReLU 激活函数 + 批归一化;若为网络最后一个块,则省略激活与批归一化。

(3)Mean(自适应均值空间池化)

  • 输入: X ∈ R D × W × H X \in \mathbb{R}^{D \times W \times H} X∈RD×W×H
  • 输出: R D \mathbb{R}^D RD
  • 对张量每个特征图的 W × H W \times H W×H 个空间元素求均值,用于压缩空间维度、提取全局特征。
3.2 Architecture

网络结构如下所示:

共包含三个模块:

  • 编码器:使用载体图像和数据 tensor 或 message,产生隐写图像;
  • 解码器:从隐写图像中恢复数据;
  • 评估器:评估载体图像和隐写图像的质量;
3.2.1 ENCODER

编码器输入载体图像 C C C 和秘密消息 M M M, M ∈ { 0 , 1 } D × W × H M\in \{0,1\}^{D\times W\times H} M∈{0,1}D×W×H ,其中, D D D 是在每个载体图像像素上试图隐藏的比特数。

论文提出了三种编码器结构,分别是BasicResidualDense,它们最开始都是同样两个步骤

1、对载体图像进行卷积得到张量 a a a
a = C o n v 3 → 32 ( C ) (1) a=Conv_{3\rightarrow32}(C) \tag{1} a=Conv3→32(C)(1)

​ 这里维度从3维转换到32维

2、把 M M M连接到 a a a上,再进行卷积,得到张量 b b b
b = C o n v 32 + D → 32 ( C a t ( a , M ) ) (2) b=Conv_{32+D\rightarrow32}(Cat(a,M)) \tag{2} b=Conv32+D→32(Cat(a,M))(2)

Cat是连接操作

Basic

​对 b b b 进 行两次卷积,生成隐写图像
E ( C , M ) = C o n v 32 → 3 ( C o n v 32 → 32 ( b ) ) (3) \mathcal{E} (C,M)=Conv_{32\rightarrow3}(Conv_{32\rightarrow32}(b)) \tag{3} E(C,M)=Conv32→3(Conv32→32(b))(3)

Residual

把 C C C(载体图像)加到Basic产生的隐写图像上
E r ( C , M ) = C + E b ( C , M ) (4) \mathcal{E}_r (C,M)=C + \mathcal{E}_b(C,M) \tag{4} Er(C,M)=C+Eb(C,M)(4)
Dense

采用DenseNet,允许特征重用,缓和梯度消失问题,提升嵌入率

在训练的时候选择这三种编码器其中一个,得到隐写图像(当然,效果最好的是Dense)

最后,每个变体的输出是隐写图像 S = E b , r , d ( C , M ) S = E_{b,r,d} (C,M) S=Eb,r,d(C,M),其分辨率和深度与载体图像 C C C 相同。

3.2.2 DECODER

输入隐写图像,得出秘密消息

3.2.3 CRITIC

目的:对编码器的性能提供反馈并生成更真实的图像。三个卷积块后接一个输出为1的卷积层,最后生成一个得分,来评估生成图像为隐写图像的概率,采用自适应均值池化

3.3 Training

迭代优化 encoder-decoder 和 critic 网络

1、优化编码-解码网咯,要最优化三个损失

(1)解码正确率:用交叉熵损失来衡量
L d = E X ∼ P C CrossEntropy ( D ( E ( X , M ) ) , M ) (8) \mathcal{L}d = \mathbb{E}{X \sim \mathbb{P}_C} \text{CrossEntropy}\left(\mathcal{D}\left(\mathcal{E}(X,M)\right), M\right) \tag{8} Ld=EX∼PCCrossEntropy(D(E(X,M)),M)(8)

(2)隐写图像和载体图像的相似性:用均方误差来衡量
L s = E X ∼ P C 1 3 × W × H ∥ X − E ( X , M ) ∥ 2 2 (9) \mathcal{L}s = \mathbb{E}{X \sim \mathbb{P}_C} \frac{1}{3 \times W \times H} \left\| X - \mathcal{E}(X,M) \right\|_2^2 \tag{9} Ls=EX∼PC3×W×H1∥X−E(X,M)∥22(9)

(3)隐写图像的真实性:用评估器来衡量
L r = E X ∼ P C C ( E ( X , M ) ) (10) \mathcal{L}r = \mathbb{E}{X \sim \mathbb{P}_C} \ \mathcal{C}\left(\mathcal{E}(X,M)\right) \tag{10} Lr=EX∼PC C(E(X,M))(10)

训练目标是最小化以上三个损失
minimize L d + L s + L r (11) \text{minimize} \quad \mathcal{L}_d + \mathcal{L}_s + \mathcal{L}_r \tag{11} minimizeLd+Ls+Lr(11)
2、优化评估网络,需要最小化 Wasserstein loss

隐写图像和载体图像数据分布之间的差异
L c = E X ∼ P C C ( X ) − E X ∼ P C C ( E ( X , M ) ) \begin{equation} \tag{12} \begin{aligned} \mathcal{L}c &= \mathbb{E}{X \sim \mathbb{P}C}\ \mathcal{C}(X) \\ &\quad - \mathbb{E}{X \sim \mathbb{P}_C} \ \mathcal{C}\left(\mathcal{E}(X,M)\right) \end{aligned} \end{equation} Lc=EX∼PC C(X)−EX∼PC C(E(X,M))(12)

在每次迭代中,对每个载体图像 C C C,都用一个数据张量 M M M 匹配, M M M 是由从伯努利分布中采样得到的, M ∼ Ber ( 0.5 ) M \sim \text{Ber}(0.5) M∼Ber(0.5),由 D × W × H D×W×H D×W×H bit随机序列组成,随着训练进行,生成的隐写图像越来越趋近于真实图像。

预处理中采用标准数据增强处理,包括水平翻转、随机裁剪。

使用Adam优化器,学习率0.0001,梯度标准为0.25,裁剪评估器权重在 [ − 0.1 , 0.1 ] [-0.1,0.1] [−0.1,0.1],训练 32 epoch。

4. Evaluation Metrics

隐写算法从3个维度进行评估:

  • 容量(capacity):隐藏的数据量;
  • 失真(distortion):载体图像和隐写图像的相似度;
  • 保密性(secrecy):避免被隐写分析工具检测的能力;

本文提出了一些评估标准:

1、每像素有效传输比特数RS-BPP(reed solomon bits per pixel)

背景

在隐写算法中,单比特解码错误概率为 p p p 时,直接用 "总比特数×( 1 − p 1-p 1−p)" 估算有效载荷是没有意义的---该方法仅能统计正确解码的比特数,无法纠错或识别错误比特。

解决方案:里德-所罗门(Reed-Solomon)纠错码

  • 对于长度为 k k k的原始消息,经过编码生成长度为 n n n的消息, n ≥ k n≥k n≥k;
  • 最多可纠正 n − k 2 \frac{n-k}{2} 2n−k位的错误比特(Reed & Solomon, 1960)

为了保证错误可纠正,需满足 "错误比特数≤ 可纠正比特数",即
p ⋅ n ≤ n − k 2 (13) p \cdot n \leq \frac{n - k}{2} \tag{13} p⋅n≤2n−k(13)

可推导出有效载荷的比特率为 k n ≤ 1 − 2 p \frac{k}{n} \leq 1-2p nk≤1−2p

最终 Reed-Solomon bits-per-pixel (RSBPP) 定义为:尝试隐藏的每像素比特数× k n \frac{k}{n} nk,代表每像素有效传输的实际比特数,可与传统隐写技术的比特率直接对比。

2、峰值信噪比(PSNR)

通过测量图像失真来评估隐写的质量。(越大越好)

给定两幅大小为 ( W , H ) (W,H) (W,H) 的图像 X X X 与 Y Y Y ,和一个表示每个像素中可能存在的最大差异的缩放因子 s c sc sc 。则PSNR可以由均方误差MSE给出
MSE = 1 W H ∑ i = 1 W ∑ j = 1 H ( X i , j − Y i , j ) 2 (14) \text{MSE} = \frac{1}{WH} \sum_{i=1}^{W} \sum_{j=1}^{H} (X_{i,j} - Y_{i,j})^2 \tag{14} MSE=WH1i=1∑Wj=1∑H(Xi,j−Yi,j)2(14)

PSNR = 20 ⋅ log ⁡ 10 ( s c ) − 10 ⋅ log ⁡ 10 ( MSE ) (15) \text{PSNR} = 20 \cdot \log_{10}(sc) - 10 \cdot \log_{10}(\text{MSE}) \tag{15} PSNR=20⋅log10(sc)−10⋅log10(MSE)(15)

MSE越小,则PSNR越大;所以PSNR越大,代表着图像质量越好。一般来说:

  • PSNR高于40dB说明图像质量极好(即非常接近原始图像);
  • 在30---40dB通常表示图像质量是好的(即失真可以察觉但可以接受);
  • 在20---30dB说明图像质量差;
  • 低于20dB图像不可接受。
    但PSNR可能不太适合用于比较不同隐写算法,所以引入结构相似性指数(SSIM)

结构相似度指数(SSIM)

同样用于测量图像质量

对于给定图像 X X X 和 Y Y Y ,SSIM可用均值 μ X \mu_X μX , μ Y \mu_Y μY,方差 σ X 2 \sigma_X^2 σX2、 σ Y 2 \sigma_Y^2 σY2 ​和协方差 σ X Y \sigma_{XY} σXY ​来计算
SSIM = ( 2 μ X μ Y + k 1 R ) ( 2 σ X Y + k 2 R ) ( μ X 2 + μ Y 2 + k 1 R ) ( σ X 2 + σ Y 2 + k 2 R ) (16) \text{SSIM} = \frac{(2\mu_X \mu_Y + k_1 R)(2\sigma_{XY} + k_2 R)}{(\mu_X^2 + \mu_Y^2 + k_1 R)(\sigma_X^2 + \sigma_Y^2 + k_2 R)} \tag{16} SSIM=(μX2+μY2+k1R)(σX2+σY2+k2R)(2μXμY+k1R)(2σXY+k2R)(16)
k 1 = 0.01 k_1 = 0.01 k1=0.01, k 2 = 0.03 k_2 = 0.03 k2=0.03, 返回值范围在 [ − 1.0 , 1.0 ] [−1.0, 1.0] [−1.0,1.0] ,1.0表示内容相同

5. Results and Analysis

  • 使用Div2k和 COCO 2014训练模型,采用官方默认的训练/测试划分;
  • 测试3种模型,6种数据深度 D D D;

6. Detecting Steganographic Images

隐写算法的关键指标之一是规避隐写分析工具检测的能力

6.1. Statistical Steganalysis
  • 隐写分析工具:StegExpose
  • auROC为0.59
6.2 Neural Steganalysis
  • 方法:Ye et al. (2017) 的深度学习隐写分析模型

  • 模拟 "检测方已知隐写算法(STEGANOGAN)但未知具体模型权重" 的场景:

    • 用不同随机种子训练 N N N个密集模型;
    • 每个模型生成 1000 张隐写图像;
    • 保留第 N N N个模型的图像作为测试集,用前1到 N − 1 N-1 N−1个模型的图像训练检测模型;
    • 重复实验 3 次,报告平均 auROC;
  • 核心问题:检测方仅知隐写算法(不知具体模型权重)时,能否检测出本文模型生成的隐写图像?

Figure 6展示了不同有效载荷(RS-BPP)和训练集规模下的检测器 auROC:

  • 有效载荷的影响:每像素编码比特数(RS-BPP)越高,检测器的 auROC 越高(检测性能越强);
  • 训练模型数量的影响:增加训练用的 STEGANOGAN 模型数量,auROC 无明显趋势 ------ 说明 "仅知隐写算法、不知具体模型参数" 的检测方,难以构建有效的检测模型。

与现有隐写技术的对比,在 "检测错误率 20%" 的固定条件下,对比 STEGANOGAN 与 3 种经典隐写算法的最大有效载荷:WOW为0.3 bpp,S-UNIWARD 为0.4 bpp,HILL为0.5 bpp。

7. 相关工作

传统隐写方法:传统方法以 "手工设计特征 + 最小化失真" 为核心思路

  • HUGO
  • JSteg

基于深度学习的隐写方法:

  • Hayes & Danezis(2017)
    • 仅支持固定尺寸图像,灵活性差;
    • payload 超过 0.4 bpp 时,图像质量严重下降
  • Zhu et al.(2018)
    • 高 payload 下内存开销大

SteganoGAN 创新点:

  • 支持任意尺寸载体图像和任意二进制数据嵌入,而非局限于 "图像嵌入图像";
  • 采用Dense Connection和多损失函数优化,实现 4.4 bpp 的 state-of-the-art payload;
  • 提出 RS-BPP metric,解决了深度学习方法与传统方法的 "payload 对比难题"。

缺点:鲁棒性较差,如JPEG压缩、截图、调整大小或旋转,将使隐藏的数据无法提取。无法保证完全提取秘密信息。

项目地址

参考

1、【论文阅读】SteganoGAN: High Capacity Image Steganography with GANs

2、基于GAN的高容量隐写术:SteganoGAN: High Capacity Image Steganography with GANs

3、SteganoGAN 论文介绍

4、SteganoGAN 项目运行过程

相关推荐
Mintopia3 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮3 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬3 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia4 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区4 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两7 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪7 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat232557 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
王鑫星7 小时前
SWE-bench 首次突破 80%:Claude Opus 4.5 发布,Anthropic 的野心不止于写代码
人工智能