VisCode: Embedding Information in Visualization Images using 论文笔记

VisCode:使用编码器-解码器网络在可视化图像中嵌入信息

Overiew

​ 数据可视化的一个基本目标是提高对数据的认知和感知能力。与传输大量的原始数据相比,图像是更能被接受的载体。但是,在将原始信息转化为像素值后,很难从得到的图像中重建原始信息。而VisCode,就是一个在可视化图像中使用编码器和解码器网络嵌入和恢复隐藏信息的框架。

三个组件(Visual Importance Network、Encoder Network、Decoder Network)

Visual Importance Network

​ 由于数据可视化的语义特征与自然图像有很大的不同,文章使用网络来建模,得到一个视觉重要性图来用于下一个组件(Encode Network)的约束。考虑到错误校正,文章将普通信息转换为嵌入一系列QR码,而不是二进制数据。

Encoder Network

​ 在该网络组件中,通过特征提取过程将载体图像和二维码图像嵌入到向量中。

Decoder Network

​ 解码器网络从编码的图像中检索信息。用户可以通过数字传输与他人共享编码图像。将编码后的图像解码后,从解码后的QR码图像中获得最终的信息,并进行纠错。

VisCode系统运行过程

​ VisCode系统的主要组件。首先,视觉重要性网络(b)对输入图形图(a)进行处理,便于检测可视化的显著特征,输出视觉重要性图。接下来,编码器网络(c)将秘密信息嵌入到图形图(a)中,通过特征提取将载体图像和二维码图像嵌入到向量中。然后,将这两个向量连接起来(如黄色矩形所示),并进入自编码阶段。编码后的图像(d)被发送给用户(e),用户可以通过数字传输将其发送给其他人。当用户希望获取图表中隐藏的详细信息时,可以将编码后的图像上传到解码器网络(f)。经过数据恢复和纠错后,用户接收到解码后的信息(g)。

方法

视觉重要性地图Visual Importance Map

​ 编码器网络的目标是将大量信息嵌入到图形图表中,同时使编码的图像在感知上与原始图像相同。一个简单的解决办法是训练一个模型使原始图表和编码后的图表之间像素差的平均平方误差最小。然而,这里的每个像素之间的权重是相同的,当编码到了重要区域,就可能产生可见噪声。所以文章需要一个视觉重要性地图来表明重要区域,方便在编码时绕过这些重要区域。

​ 视觉重要性图为图像的不同区域分配不同的分数(分数越高的区域越重要),这有助于在编码阶段保持重要内容的视觉质量。

如何得到一个数据集?

​ Bylinskii等人的启发,文章利用基于带有眼动注释人看一张图是眼球的聚焦点)的MASSVIS数据集建立了一个预测模型。

​ 因此,为了获得更准确的高层次语义上下文信息和更低层次的细节信息,文章使用混合训练,又人工对每个像素点进行注释,标注了其重要性。

​ 在上述两种预测模型的混合训练下,文章得到结果:

​ a是输入的两个图像,b是用Bylinskii预测模型建的结果,c是人工注释后的结果,d是混合两种模型得到的重要性地图。

​ 这样就训练出了一个能输出视觉重要性地图的模型。

编码器网络和解码器网络

​ 编码器网络设计用于将信息嵌入到载波图图像中,同时最小化编码图像中的扰动(尽量往视觉重要性高的地方嵌入-个人理解)。解码器网络从已编码的图像中恢复嵌入的秘密信息。

​ 关于损失函数:

​ 损失函数是用来估量模型的输出真实值之间的差距,给模型的优化指引方向。

​ 编码器的损失函数:

​ Vp是预测的视觉重要性图,可以看作是一个权重矩阵。视觉重要性得分越高的区域权重越大。Icp是输入的载波图像,Icp’是输出的编码图像。N是像素的个数。

​ 解码器的联合损失函数:

​ 其中,Is为原始输入二维码图像,Is’为解码器网络重构结果。α是解码器损耗的权重,表示编码图像的视觉质量和解码精度之间的权衡。

​ α值越高,解码精度越高,感知质量越低(图像失真越严重,越像嵌入了东西)。α在实现中被设置为0.25。

​ 在训练过程中,同时训练编码器网络和解码器网络。也就是说,联合损失函数同时考虑了编码图像的视觉质量和重建误差。

训练结果

可以看出,(a)与(b)肉眼已经看不出差别,将差别放大10倍后的(c)仍不明显。

​ 结果表明,VisCode模型可以在保持原始图表图像感知质量的同时嵌入信息。

大规模数据嵌入

​ 在图像中嵌入大量的信息是一个具有挑战性的问题,因为它容易产生明显的噪声或导致颜色或纹理的偏差。

​ 文章提出了一种新的方法,在人类视觉系统不敏感的区域大规模嵌入信息。

​ 假设文章将输入一个大规模的文本信息,那么第一步就是将文本分块:

​ LenT是总文本长度,n是设定的每块的文本长度,NumB是块数量,LenB是实际上每块的文本长度。这里很严谨,LenB在最后一块上可能不等于n。

​ 考虑到QR码有多种模块配置,这可能会影响编解码网络的效果,文章使用不同的文本长度与QR码模块配置的映射关系进行测试。

​ 在实际操作中,文章并没有使用动态配置QR码。而是依据上表进行配置。n越大说明QR码存储的信息越多,但是ECC level(容错级别)就比较低。文章使用的n=800。这样QR码的区域框大小就是200X200了。

大规模数据的嵌入位置

​ 之前说了要找视觉最不敏感的区域嵌入信息,但找到了以后该怎么做呢?一种方案是随机取一些不敏感的区域嵌入信息,但这样修改与未修改的地方边界之间会很不和谐。另一种是蛮力搜索所有可能区域,用编解码器网络评估影响。但这样时间成本会很高。

​ 文章需要通过上面得到的视觉重要性图区域框大小,找到最适合插入的地方,文章运用平均池化,来计算每个区域框的特征值(视觉重要性),然后对其进行递增排序,获得候选区域列表。

​ 关于池化:

​ 每个像素点都有自己的特征值(视觉重要性),而文章要寻找视觉重要性最小的区域框。那如何对框的视觉重要性进行评判了。文章选择了平均池化的方法(即用框内所有像素点特征值的平均来代替这个框的特征值)。

​ 现在有了从小到大的区域框候选列表,我遍历这个列表,找最适合的区域框。但是在找的过程中,会出现选入的两个区域框之间重合的情况。这里采用非最大抑制的方法NSM(说人话就是取前面的区域框,后面若和前面选中的框重合就丢弃,因为排过序了,前面框的视觉重要性低)。

​ 当选出所有的区域框后,这些区域框一定是视觉重要性最小的区域框,且两两之间不重合。这些区域框的位置信息需要存放到一个位置上,文章选择最左上角生成了一个区域框,来存放这些信息。

嵌入算法代码分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#Input:
#V:视觉重要性地图
#text:嵌入的大数据文本
#n: 分块的大小,800
#Output:
#Ro_set:生成的嵌入区域框集合
(W,H) =size(V)#视觉重要性地图的长和宽
Calculate NumB and LenB#根据文本分块公式计算分块的个数和分块后的文本长度
Roset={},cnt=0
kernel_size=map(LenB)#通过QR码的模块测试表生成区域框的长宽(因为n=800,所以kernel_size=200)
Full_set#用平均池化的方式得到候选区域框集合
sort(Full_set)#对该集合进行递增排序
for c_egion in Full_set do
for s_region in Ro_set do#遍历每一个选中的区域s_region,比较候选区域c_egion是否和s_region重合
if Intersection(cregion,sregion) > 0 then
conflict=true#重合即标记该区域
end if
end for
if conflict = false and cnt <= NumB then#标记的区域丢弃,如果该候选区域没和已选区域重合,就选中,直到选满
Ro_set.append(c_region),cnt=cnt+1
end if
end for
return Ro_set

个人关于此算法的看法

​ 嵌入算法本身没有问题,但是算法结果都要保存在最左上角的区域框中。假设载体图片最左上角的视觉重要性很大呢,就对原图像造成了很大的可发现的扰动。

​ 可改进的方法:未知

应用

可视化设计的元数据嵌入

如下图

将url,版权信息,版本信息等嵌入到可视化图表当中

源代码嵌入可视化

​ 这里的源代码指代的网页前端代码,系统可以从图像中解码源代码,并以网页的形式动态生成和显示可视化文件。

​ 具体流程,使用VisCode系统的美工和开发人员之间的协作通道:

可视化重新定位目标

形式重定位

​ 重新定位信息表示形式。输入的可视化可以转换为其他可视化形式。

流程:提取源数据,按照嵌入的源代码重构输出图像。

主题重定位

​ 通过提取源数据,重新构建色彩主题,VisCode的这个应用程序可以提供丰富的视觉风格和颜色主题。

流程:提取源数据,按照嵌入的源代码重构输出的色彩主题。

评价

​ 我们从三个方面评估我们的VisCode模型:隐写指标,不同信息位数下的编码图像质量,隐写防御,通过数字传输的各种破坏场景下的解码精度,嵌入信息和恢复时间在不同设置下的时间性能。

隐写指标

关于PSNR:

​ 峰值信噪比,给定一个干净图像和噪声图像(这里的噪声图像就是经过VisCode处理后的图像),评价画质好坏的标准。(通常越大效果越好)

关于SSIM:

​ 结构相似性,基于样本x(原图像)和y(VisCode处理后的图像)之间的三个比较衡量:亮度、对比度、结构。每次计算的时候都从图片上取一个N X N的窗口,然后不断滑动窗口进行计算,最后取平均值作为全局的SSIM。(0~1,越大表示效果越好)

关于LPIPS:

​ 一种深度深度特征作为感知度量的无理由的有效性。(通常效果越小越好)

供参考:

https://zhuanlan.zhihu.com/p/50757421

https://zhuanlan.zhihu.com/p/206470186

见表格:

隐写抗性

​ 文章给出了隐写抗性评估的比较结果。LSB是一种传统的使用固定原理的隐写方法,无法抵抗任何干扰。我们发现VisCode在调整亮度、应用旋转和JPEG压缩方面的性能接近于DeepSteg,因为这三种操作应用于所有像素的变化。而水印将局部变化应用于图像,这可能会破坏图像的重要特征。在这种情况下,VisCode通过在不敏感区域中嵌入信息而胜过DeepSteg。

时间性能

我们评估了不同尺度的输入下VisCode系统的时间性能。

x轴表示输入文本的位数,Y轴表示编码阶段或解码阶段的平均时间(秒)。不同颜色的线条代表输入图表图像的不同分辨率

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020-2023 YYz
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信