来源:Fixed Neural Network Steganography: Train the images, not the network
复现记录:【论文复现】FNNS:Fixed Neural Network Steganography: Train the images, not the network-图像隐写
文章整理如下
摘要
encoder-decoder网络容量很大,但解码错误率很高(大约20%)。作者基于神经网络对输入的微小扰动的高度敏感性,提出一种新的隐写方法,能够在3bpp时降低解码错误率到0%。代码在https://github.com/varshakishore/FNNS.
1 INTRODUCTION
图像隐写message的经典方法,能够实现0%错误率,但是负载只能到0.5bpp。深度学习用encoder-decoder网络实现了更高的bpp,但导致了恢复信息的高错误率。
一些场景要求隐写算法的低错误率。如秘密message被加密后,在恢复时要求 0 error 才能被恢复。特别指出,我们对秘密message不做假设,其可以为任何二进制bit字符串。
我们的方法基于对抗攻击(adversarial attacks)(神经网络对微小扰动敏感)的思想,针对部分要求提取信息无错(如加解密)场景,提出了一种3bpp时0.0错误率的隐写方法。
2 相关工作
深度网络的缺点:
-
解码错误率高
-
假设从目标域中获得训练图像(在其他测试集上效果不好
3 固定神经网络隐写
给定一个解码器网络F: [ 0 , 1 ] H × W × 3 → [ 0 , 1 ] H × W × D [0,1]^{H×W×3}→[0,1]^{H×W×D} [0,1]H×W×3→[0,1]H×W×D,我们的目标是生成一个扰动图像˜X,它接近X,这样F(˜X)=M。
主要过程:
- 初始化一个编码器F,对于给定的秘密消息M和cover X,发送方以类似于对抗扰动的方式修改cover,得到扰动图像X‘,也就是使F(X’)=X
- 训练decoder,使其能够正确提取秘密信息,也就是使D(X’)=M
- 接收方用同样的decoder恢复秘密消息M
三种解码权重和初始化方法
1.FNNS-R : (用于实验探索, 128 hidden channel)
F 是一个随机网络,X’被初始化为cover。发送方和接受方只需要共享编码器和初始化编码器权重的随机种子;不需要共享实际的编码器参数。
2.FNNS-DE: (steganogan的decoder,32 channel)
对于给定的一个编码器-解码器对(第二节相关工作中的引用文献都可以),定义F为预训练过的解码器,并初始化X’为Enc(X,M),Enc为和解码器配对的编码器。这种情况下,M的一部分已经被编码进X’,优化过程更快,但有时候编码器会恶化图像质量,使得优化算法难以进行恢复。
3.FNNS-D (steganogan的encoder,32 channel)
F是一个预训练过的解码器,X‘初始化为cover。消息在扰乱过程和训练权重时被隐藏在图像中。质量更好,优化更不易陷入局部最优。
解码器结构:需要对对抗扰动特别敏感,采取steganoGAN的basic decoder
评估:
- bit error rate:不正确恢复的比特数
- PSNR
- SSIM
4 实验结果
数据集:div2k,MS-COCO,celebA
指标:
- bit error rate:错误恢复的比特数
- PSNR
- SSIM
优化时间:
FNNS-D和FNNS-DE执行每幅图像的优化过程,以便在图像中编码消息,1-2bpp平均需要10秒,3-4bpp平均需要20秒。
局限性:
通过在我们的优化管道中添加JPEG层(质量因子80)来提高FNNS对JPEG压缩的鲁棒性,我们对MS-COCO进行了评估,结果见表3。虽然我们可以在0.06%的错误下成功编码0.1bpp(对10%的像素执行BCE损失),但公平地说,超过0.5 bpp的比特率目前仍然无法实现。
5 抗隐写分析性能
使用 StegExpose和siastegnet进行测试
6 应用: 脸部匿名信息传播
用GAN生成假脸,替换真实的脸,真实的脸压缩成一个位字符串,加密后进行传输,接受方使用解码器和私钥进行恢复