一、文章摘要
恶意的Deepfakes导致了一场关于区分真脸和伪造脸的激烈冲突。尽管已经制定了许多事后检测Deepfakes的对策,但毫无疑问,在可预见的操作之前,被动取证没有考虑对原始人脸采取任何预防措施。为了完成这个取证生态系统,我们提出了名为SepMark的主动式解决方案,该解决方案为源跟踪和Deepfake检测提供了统一的框架。SepMark源自基于编码器-解码器的深度水印,但具有两个可分离的解码器。SepMark首次提出了深度可分离水印,为已建立的深度水印研究带来了一种新的范式,即单个编码器优雅地嵌入一个水印,而两个解码器可以在不同的鲁棒性水平上分别提取水印。抗各种失真的鲁棒解码器Tracer可能具有过高的鲁棒性,使水印在Deepfake之前和之后都能存活。称为Detector的半鲁棒检测器对恶意失真选择性敏感,使水印在Deepfake之后消失。只有由Tracer和Detector组成的SepMark才能可靠地追踪被标记人脸的可信来源,并检测其自被标记以来是否发生了更改;两者都无法单独做到这一点。大量实验证明了所提出的SepMark在典型Deepfakes上的有效性,包括人脸交换、表情重现和属性编辑。代码将在https://github.com/sh1newu/SepMark。
二、文章提出的方法
2.1 问题陈述
SepMark致力于事先确保哪些是真实的,并追踪其可信来源,而不是事后检测哪些是伪造的。这种主动取证应该提前对原始人脸进行处理,其中“原始”意味着SepMark在本文中没有对人脸进行处理。在现实世界中,一个值得信赖的内容出版商会将他/她的原始面孔上传到社交网络上,并向任何人公开。不幸的是,一些敌对的个人可能会下载人脸并操纵它来传播错误信息,这会对社会信任和公众利益造成严重影响。此外,依靠事后取证,Deepfakes的传播在得到证实之前无法立即阻断。
这是一个关于图3所示的建议的主动取证的更具说明性的例子。为了为原始人脸提供预防措施和更可靠的证据,SepMark提前在人脸中嵌入了一个水印(图3-a),如发布者标识和时间戳,可以识别标记人脸的可信来源,同时表明已由SepMark处理。随后,嵌入的水印可以在不同的鲁棒性级别上被单独提取。具体来说,在对图像语义影响不大的常见失真下,鲁棒和半鲁棒水印都可以正确提取(图3-b),如JPEG压缩、调整大小、对比度调整等。相反,在本文主要解决的Deepfake等恶意失真下(图3-c),鲁棒水印仍然可以正确提取,而半鲁棒图像被错误地提取,这意味着人脸图像自被标记以来已经被改变。通过这种方式,任何个人或社交网络都可以验证人脸的原始来源是否来自值得信赖的出版商。此外,即使在不知道原始水印的情况下,也可以比较两个提取的水印,以确定标记的人脸在发布后是否被操纵,并阻止具有不匹配水印的可疑图像的进一步传播。总之,SepMark在不知道原始图像的情况下完成了Deepfake的来源跟踪和盲检测。
图3 主动取证的说明性例子。(a)值得信赖的发布者Alice将她的身份嵌入到发布的人脸中。(b)围观演员Bob在不影响内容语义的情况下转发了这张脸。©对手演员Eve操纵这张脸来歪曲事实
根据图4,让我们详细制定SepMark。给定任意一张原始人脸(也称为封面图像Ico),编码器En将编码信息Men嵌入到图像Ico中,从而获得编码图像Ien。之后,可分离示踪器Tr和探测器 De分别从常见或恶意失真的图像Ino中提取消息Mtr和Mde。因此,根据可分离的解码器Tr和De,我们可以将主动取证分为以下几种情况。
情况1:如果鲁棒解码器Tr可用,则无论标记的图像是否受到普通或恶意失真的噪声,都期望提取的Mtr始终与嵌入的Men相同,以可靠地跟踪可信源。
情况2:如果有半鲁棒解码器De,它可以从常见的失真图像中提取正确的信息,但从恶意失真的图像中提取错误的信息,以区分失真的类型。
情况3:只有当解码器Tr和De同时可用时,才能同时实现对可信源的跟踪和恶意失真的检测。更具体地说,如果Mde≈Men或Mde≈Mtr,SepMark将表明该脸是真实的,并且来自可信来源Mtr。否则,如果MdeMen或MdeMtr,则该人脸自被标记以来已被伪造,必要时可从来源Mtr进一步获取可信的原件。
图4 SepMark的整体架构。编码器En接收封面图像Ico和编码后的消息Men作为输入,产生编码后的图像Ien。随机前向噪声池RFNP在分离的前向传播中对不同类型的伪噪声gap进行采样,并在标准的前向和后向传播中与Ien相互作用,从而产生常见或恶意失真的图像Ino。示踪器Tr从任意失真的图像中提取与Men相同的信息Mtr。该检测器De从常见的失真图像中提取正确的信息,但从恶意失真图像中提取错误的信息。此外,还使用PatchGAN Ad来区分每个原始和编码的图像patch。
2.2 模型架构
为了实现深度可分离水印的端到端训练,我们提出的SepMark由单个编码器En,一个随机前向噪声池RFNP,两个可分离的解码器Tr和De,以及一个额外的对手判别器Ad组成,如图4所示。简而言之,1)En接收一批Ico∈RB×3×H×W和一批Men∈{-a,a}B×L生产Ien;2)RFNP随机抽取不同的失真作为伪噪声,并与Ien相互作用,得到Ino;3)Tr和De分别从Ino中提取出不同鲁棒性水平的Mtr和Mde;4)Ad为Ien的每个图像片段相对于Ico进行原始或编码分类。
三、实现细节
3.1 数据集
实验主要在CelebA-HQ上进行[37,39],其中使用了24183/2993/2824张人脸图像进行训练、评估和测试,参考了CelebA[50]的官方拆分。此外,采用CelebA的测试集(包含19962张人脸图像)和COCO[46]的评估集(包含5000张常见物体图像)来评估泛化性。除特别说明外,否则由于计算资源的限制,所有图像都调整为128 × 128和256 × 256两种分辨率。恶意失真选择SimSwap[8]、GANimation[60]和StarGAN[10],因为它们是典型的Deepfakes,分别属于代表性的人脸交换、表情再现和属性编辑。其中,用于交换的目标人脸是从CelebA的评估集中随机选择的,用于再现的目标表情是从驾驶图像“eric_andre”中随机选择的,我们编辑的属性集是{Male,Young,BlackHair, BlondHair, BrownHair},所有这些都是基于他们发布的预训练模型来实现的,从而得到令人信服的Deepfakes。注意,只有在测试GANimation时,OpenFace[3]才会进一步去除人脸图像的背景,以匹配输入的要求。不失一般性,一组常见的扭曲是{Identity,JpegTest,Resize,GaussianBlur,MedianBlur,Brightness,Contrast,Saturation,Hue,Dropout,SaltPepper,GaussianNoise}。上述失真的详细参数如图5底部所示。请注意,裁剪不包括在集合中,因为它很难理解为整个脸部的常见失真。
图5 典型失真下的主观视觉质量。从上到下是封面图片Ico,编码图像Ien,噪声图像Ino,N(|Ico-Ien|)和N(|Ino-Ien|)的残余信号,其中N(I)=(I -min(I))/(max(I)-min(I))。每一列对应一种失真。图像大小:128 ×128。有关更多恶意失真,请参见附录A.1
3.2 实验参数
我们的SepMark由PyTorch[58]实现,并在NVIDIA RTX 4090上执行。由于我们解决了许多失真而不是特定的一个,因此SepMark使用组合训练方式,其中噪声池由所有常见失真和恶意失真组成,即SimSwap, GANimation和StarGAN(男性)。整个训练持续了100个epoch,批大小为16,根据经验,我们调整了Adam优化器[38],其中lr=0.0002,β1 =0.5用于稳定的对抗训练。此外,在我们的训练中,公式(11)中的λ1,λ2,λ3,λ4,λ5分别被设置为0.1,1,10,10,10。直观地说,我们的SepMark中的消息范围a设置为0.1,我们显示a对于消融研究中视觉质量和鲁棒性之间的权衡至关重要。
3.3 基线
据我们所知,这是关于深度可分离水印的第一次工作,因此我们必须采用鲁棒的水印方法,如MBRS [34], CIN [52], PIMoG[16]和脆弱的水印方法FaceSigns[56]作为我们的基线。两个独立的模型,一个对大小为128 × 128的图像和长度为30的消息进行训练,另一个对大小为256 × 256的图像和长度为128的消息进行训练,与基线的预训练模型进行比较,以证明SepMark的有效性。
3.4 评价指标
为了评估客观视觉质量,我们报告了整个测试集中编码图像的平均PSNR、 SSIM和LPIPS[84]。对于鲁棒性检验,使用平均误码率(BER)作为默认的评估指标。在我们的SepMark中,半鲁棒检测器在恶意失真下的误码率应该接近50%;在其他情况下,示踪剂和检测器的误码率应接近0%。假设嵌入的消息ME和提取的消息MD,形式上:
请注意,我们严格调整了基准的B(·),使其与原始设置相同,避免影响基准的性能。
四、汇报PPT
4.1 相关工作
4.2 方法学
4.3 实验结果
4.4 创新点
五、代码运行
- pip install pyyaml
- pip install easydict
- pip install kornia
- 注释DW_EncoderDecoder.py中的第四行语句:from .Noise import Noise
- pip install opencv-python
- pip install dlib
- pip install lpips
- pip install scikit-image
- 运行test_Dual_Mark.py(注意修改cfg\test_DualMark.yaml的noise_layer参数-常见失真和恶意失真(需要特殊处理))
- 修改\results\Dual_watermark_256_128_0.1_0.0002_0.5_se_se_1_10_10_10_0.1_2023_04_18_16_29_54\train_DualMark.yaml中的数据集地址为:
dataset_path: /root/SepMark-main/home/likaide/sda4/wxs/Dataset/dual_watermark/
运行成功会在 - \results\Dual_watermark_256_128_0.1_0.0002_0.5_se_se_1_10_10_10_0.1_2023_04_18_16_29_54\images生成一张图像,yaml文件和txt文件
注意参考开源代码的ReadMe文件,根据所给网址需要下载许多文件(大约几十个G)
The implementation of the paper "SepMark: Deep Separable Watermarking for Unified Source Tracing and Deepfake Detection".
Paper Link: https://doi.org/10.1145/3581783.3612471
Update (11/3/2023) We have put all the noise layers and datasets into Google Drive due to the file sizes; see the README file please. Hopefully, all goes well, but we never guarantee that you'll be able to run it directly without any Debug. How to replicate/use the code? For me, when everything above is ready, it is enough to modify the configuration file in the cfg folder and run the test/main file successfully. So, Debug is all you need! If there are any missing uploads, please feel free to contact me.
We provide the models of SepMark that were trained using SimSwap(), GANimation(), and StarGAN (Male) here. Due to license agreements, we are unable to distribute their codes ourselves. However, we believe that you can re-implement them or other Deepfakes on your own. Here are some links to their repositories, including SimSwap, GANimation, StarGAN, FaceSwap, Roop, and MobileFaceSwap. Best Wishes.
The code is strictly for non-commercial academic use only.
Contact: xinliao@hnu.edu.cn / shinewu@hnu.edu.cn
论文地址:SepMark: Deep Separable Watermarking for Unified Source Tracing and Deepfake Detection
开源代码:SepMark