论文简述:
大家通识的防滥用手段是在原图片添加肉眼不可见细节(对抗扰动)。但是很多社交媒体会进行JPEG压缩,这导致添加的扰动细节消失。MetaCloak-JPEG通过DiffJPEG和STE打通了JPEG梯度,实现了在压缩后也能防DreamBooth。
正文:
话说打完计算机设计大赛后,主包突然良心发现去找师兄问能不能去给他打点杂活!师兄很爽快跟主包说可以去做视觉的算法!(话说师兄也是心大)
主包一琢磨,我这一辈子唯一一次和CV打交道,恐怕是高中时,因为渣机给MC的光影包调过参数。。。
于是主包决定开一个专栏来记录主包的屑CV之路,后面也是会继续写这个专栏好吧
OK啊,今天主包找的论文也是非常之新啊,是4月20号出来的,名字也是十分之长,arxiv链接给到文章底部了
论文解决的问题
DreamBooth(DB,以下简称大宝) 是谷歌在2022年弄的一种扩散模型的微调方法。是专门拿来做个性化文生图的。简单来说,只要拿一组一个人的照片,再加几句描述,就能生成这个人的♂任♂意♂姿♂势♂的照片
这个也太可怕了,那么有没有什么能防止主包的帅照被拿去滥用呢?
一般来说,可以在照片中添加一些 微小的扰动(对抗扰动,Adversarial Perturbation),在人眼看不出区别的前提下,让大宝学不到任何特征。幸运的是,这个方法已经很成熟了
这种方法主要是看的 梯度,就是看改哪里,结果反应最大,就改哪里
然鹅,这个方法在实战应用时就是个屑,因为它压根就忽略了一个事实:坏人拿到的很多时候不是你的原照片!
原来很多社交媒体有一个很坑爹的地方:原始图片一般都很大,传输很慢,所以社交媒体一般要用JPEG压缩一下才会呈现这张图片
JPEG压缩有个工序叫 round(),这货干的就是四舍五入的活,把那些人眼不咋注意的部分直接给压缩掉。这下可好了,好不容易添加的干扰这下被压缩掉了!
这导致前面辛辛苦苦算的梯度,这下全被 round()给拦下来了,传不过去
这篇论文做的就是,让主包的帅照能够经历了压缩依旧让大宝学不到有用的特征
实现方法
让我们痛定思痛,再来观察下这个 round(),因为它本质上干的是四舍五入的活,所以它导致处处都是毛刺,导数为0,聪明的学过导数的你知道,此时自然也不能微分了,也就没有了梯度
论文提出了一个名为DiffJPEG的层:
- RGB → YCbCr (走流程,不重要)
- 每个像素减 128 (不重要)
- 切成 8×8 块 → DCT 变换 (不重要)
4. STE量化 (非常重要) - 逆 DCT、加回 128、转回 RGB (不重要)
STE(Straight-Through Estimator,直通估计器) 它主要只做一件事情:前向传播(压缩)时用和社交平台一毛一样的 round()进行压缩;后向传播(算梯度)的时候再直接假装 round()什么都没干
在一开始,我们有主包的帅照一张 photo.jpg
然后我们会生成一张保护加锁照片 protected_photo.jpg,在一开始,它就是原图
接下来我们会不断循环(200轮)如下操作(所谓的PGD算法):
- 把 protected_photo.jpg 送到DiffJPEG里面
- DiffJPEG 输出了压缩后的照片zip_photo.jpg
- 计算这张照片损失(就是评价下这个保护做的好不好,损失的越多,就越棒)
- 根据损失反向传梯度
- 走到了原来的STE和round那一步,梯度穿过去,不做阻拦
- 梯度回到了protected_photo.jpg
- 按照梯度计算哪里最能破坏AI学习又不影响观感(用了ℓ∞ 约束),微操修改图片
这使得梯度穿过了压缩!现在最头痛的部分已经解决掉了!这样一套下来,AI就学会了:不一定是在最高频的地方加修改,而是去那些不会被压缩删掉,梯度又不赖的部分加修改
每轮走完后还要来实战练习,也就是双层元学习,所谓双层元学习,也就是把protected_photo.jpg真的拿给大宝去学习(内层),看看它能不能学到东西(外层)
由于这个每轮都要做,大宝很吃显存,为了节约显存,作者采用了只更新交叉注意力层 的方法,成功把这一步的显存压下去了,总显存压到了4.1GB
为了让结果更鲁棒(鬼知道社交平台的JPEG算法长什么样),论文还设计了一个变换的组合:
- 40%:只做 DiffJPEG
- 30%:先 JPEG,再翻转 / 模糊 / 裁剪
- 15%:先翻转,再 JPEG
- 10%:只做空间变换
- 5%:啥也不做
到目前为止,这个算法已经很复杂了,又是DiffJPEG又是这么多古怪的组合,如果上来就弄很高的压缩率,模型很容易学废(想象刚学会电脑开机就去手搓红黑树平衡树)
所以论文设计了一个课程:一开始训练时,只有95%的压缩率,几乎没压缩,然后一点一点加码,最后加到50%。这使得模型的训练就很稳定了
成效
以前都是丢失60-80%保护,本文直接把存活率拉到了91.3%,PSNR=32.7dB,肉眼看不出区别,9种JPEG指标全战胜了前SOTA(PhotoGuard),还特别省显存,只要4.1G
码字不易,希望能点个赞!
原论文链接(不要在意主包的屑格式):
T. R. Fardin, S. M. Z. Alam, M. H. Fahim, and M. F. Mahfuz, "MetaCloak-JPEG: JPEG-robust adversarial perturbation for preventing unauthorized DreamBooth-based deepfake generation," arXiv preprint arXiv:2604.18537, Apr. 2026.
https://arxiv.org/abs/2604.18537