共计 7397 个字符,预计需要花费 19 分钟才能阅读完成。
论文标题:Robust Watermarking Using Generative Priors Against Image Editing: From Benchmarking to Advances
- 来源:CVPR202410
- 原文:https://arxiv.org/pdf/2410.18775
- code:https://github.com/Shilin-LU/VINE
@misc{lu2024robustwatermarkingusinggenerative,
title={Robust Watermarking Using Generative Priors Against Image Editing: From Benchmarking to Advances},
author={Shilin Lu and Zihan Zhou and Jiayou Lu and Yuanzhi Zhu and Adams Wai-Kin Kong},
year={2024},
eprint={2410.18775},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2410.18775},
}
论文概述
摘要
- 研究背景 :当前的图像水印方法容易受到大规模文本到图像模型支持的高级图像编辑技术的破坏,这对版权保护构成了重大挑战。
- W-Bench:介绍了第一个全面基准测试,旨在评估水印方法对包括图像再生、全局编辑、局部编辑和图像到视频生成在内的广泛图像编辑技术的鲁棒性。
- VINE 方法 :提出了一种水印方法 VINE,显著增强了对各种图像编辑技术的鲁棒性,同时保持了高图像质量。
- 关键创新:
- 分析图像编辑的频率特性,使用模糊失真作为代理攻击来增强水印的鲁棒性。
- 利用预训练的扩散模型 SDXL-Turbo,以更不可见和鲁棒的方式嵌入水印。
引言
- 水印功能 :图像水印主要用于版权声明或验证真实性,关键在于确保其对各种图像操作的鲁棒性。
- 现有挑战 :大规模文本到图像模型提供了广泛的用户友好的编辑工具,使得嵌入的水印在编辑版本中几乎无法检测。
方法
- W-Bench 评估流程 :详细介绍了 W -Bench 的评估流程,包括图像再生、全局编辑、局部编辑和图像到视频生成。
- VINE 方法 :提出了 VINE 方法,通过分析图像编辑的频率特性和利用预训练的扩散模型来增强水印的鲁棒性。
实验
- 评估 :在 W -Bench 上评估了 11 种代表性的水印方法,涵盖了七种广泛使用的编辑模型和算法。
- 结果 :实验结果表明,大多数先前的水印模型在图像被编辑后难以提取水印。
相关工作
- 水印基准测试 :讨论了现有的水印基准测试,如 WAVES,并指出其局限性。
- 鲁棒水印 :回顾了图像水印的长期研究,以及最近针对大规模生成模型支持的图像编辑的研究。
结论
- W-Bench:介绍了第一个全面基准测试,评估了 11 种代表性水印模型。
- VINE:提出了 VINE 模型,它在多种图像编辑技术下表现出色,超越了现有方法。
限制
- VINE 方法在图像到视频生成(I2V)中的有效性有限,且模型较大,导致内存需求增加和推理速度略有下降。
论文中的具体实验参考
IMAGE EDITING METHODS
实验中评估了 11 种代表性的水印方法对抗多种图像编辑技术,包括图像再生、全局编辑、局部编辑和图像到视频生成。
- Image regeneration(图像再生):
- 涉及将图像扰动成噪声版本然后重建它,分为随机(Stochastic)和确定性(Deterministic)两种方法。
- 随机方法通过引入高斯噪声,使用常见的噪声调度器(如 VP、VE、FM 和 EDM)控制噪声水平。
- 确定性方法,也称为图像反演,使用扩散模型将干净图像通过多个采样步骤确定性地反演为噪声版本。
- Global and local editing(全局和局部编辑):
- 全局编辑通常涉及风格化,但也考虑仅由文本提示引导的编辑方法。
- 局部编辑涉及修改图像的特定区域,同时保持其他区域不变,使用区域掩码作为输入。
- Image-to-video generation(图像到视频生成):
- 使用 Stable Video Diffusion(SVD)从单个图像生成视频,评估水印是否能在生成的视频帧中被检测到。
EXPERIMENTAL SETUP
- Datasets(数据集):
- 使用 OpenImage 数据集训练 VINE,分辨率为 256×256。
- 从 UltraEdit 数据集中随机抽取 10,000 个实例进行评估,每个实例包含源图像、编辑提示和区域掩码。
- Baselines(基线比较):
- 与 11 种水印基线方法进行比较,包括 MBRS、CIN、PIMoG、RivaGAN、SepMark、TrustMark、DWTDCT、DWTDCTSVD、SSL、StegaStamp 和 EditGuard。
- Metrics(评估指标):
- 使用 PSNR、SSIM、LPIPS 和 FID 等标准指标评估水印模型的不可见性。
- 对于水印提取,主要关注在严格控制假阳性率(FPR)下的真阳性率(TPR),特别是 TPR@0.1%FPR 和 TPR@1%FPR。
BENCHMARKING RESULTS AND ANALYSIS
- 展示了不同水印方法在各种图像编辑技术下的性能,包括图像再生、全局编辑和局部编辑。
- 分析了不同水印方法在不同难度级别下的表现,并提供了额外的基准测试结果。
ABLATION STUDY
- 通过一系列的消融研究,展示了关键组件对图像再生和全局编辑的影响。
- 从简单的 UNet 作为水印编码器开始,逐步引入模糊失真、预训练的扩散模型 SDXL-Turbo,并使用条件适配器来融合输入图像和水印信息。
实验中的算力参考
训练阶段 (Training)
- GPU 型号 :NVIDIA A100-80GB
- GPU 数量 :8 个
- 迭代次数 :VINE- B 训练了 111k 次迭代,VINE- R 在此基础上进一步进行了 80k 次迭代
- 优化器 :Adam,学习率为 1×10−41×10−4,批量大小为 112
推理阶段 (Inference)
- GPU 型号 :NVIDIA Quadro RTX6000
- 处理时间 :平均每张图片的推理时间为 0.0795 秒
- 内存使用 :平均每张图片的 GPU 内存使用量为 4982MB
总结
VINE 模型在训练阶段需要较高的算力,特别是在使用 8 个 NVIDIA A100-80GB GPU 的情况下,这表明模型对计算资源的需求较高。在推理阶段,虽然处理时间相对较短,但内存使用量接近 5GB,这表明模型在实际部署时也需要相对较高的 GPU 资源。
如果您计划使用 VINE 模型,建议至少准备一块高性能的 GPU,如 NVIDIA A100 或类似的高性能显卡,以确保模型能够有效地训练和推理。同时,考虑到内存需求,您的系统也需要有足够的 GPU 内存来支持模型的运行。
我的复现实验
由于训练过程需要大量算力,个人无法实现,所以只复现推理部分
平台
- CPU:12400F
- GPU:3060Ti
- OS:windows
环境
- python3.10
- cuda12.4.1
- torch2.5.0+cuda124
- ...
论文给出的环境参考(conda)
name: vine
channels:
- pytorch
- defaults
dependencies:
- python=3.10
- pip:
- clip @ git+https://github.com/openai/CLIP.git
- einops==0.8.0
- numpy==1.26.4
- open-clip-torch==2.26.1
- opencv-python==4.6.0.66
- pillow==10.4.0
- scipy==1.11.1
- timm>=0.9.2
- tokenizers
- torch==2.0.1
- torchdata==0.6.1
- torchmetrics==0.2.0
- torchvision==0.15.2
- tqdm>=4.65.0
- triton==2.0.0
- urllib3==1.26.19
- xformers==0.0.20
- streamlit-keyup==0.2.0
- lpips
- clean-fid
- peft==0.11.1
- dominate
- gradio==3.43.1
- transformers==4.43.3
- tokenizers==0.19.1
- accelerate==0.30.0
- datasets==2.20.0
- pilgram
- kornia
- wandb
- scikit-image
- scikit-learn
- ipykernel
- sentencepiece
我的最终环境(pip)
由于使用更高版本的 cuda,且部分环境包在 windows 下不兼容,最终使用的环境有较大改动
accelerate==0.30.0
aiofiles==23.2.1
aiohappyeyeballs==2.4.3
aiohttp==3.10.10
aiosignal==1.3.1
altair==5.4.1
annotated-types==0.7.0
anyio==4.6.2.post1
asttokens==2.4.1
async-timeout==4.0.3
attrs==24.2.0
autocommand==2.2.2
backports.tarfile==1.2.0
blinker==1.8.2
cachetools==5.5.0
certifi==2024.8.30
charset-normalizer==3.4.0
clean-fid==0.1.35
click==8.1.7
clip==1.0
colorama==0.4.6
comm==0.2.2
contourpy==1.3.0
cycler==0.12.1
datasets==2.20.0
debugpy==1.8.7
decorator==5.1.1
# Editable install with no version control (diffusers==0.30.0.dev0)
-e d:\me\ecnu\research\vine-main\diffusers
dill==0.3.8
docker-pycreds==0.4.0
dominate==2.9.1
einops==0.8.0
exceptiongroup==1.2.2
executing==2.1.0
fastapi==0.115.4
ffmpy==0.4.0
filelock==3.13.1
fonttools==4.54.1
frozenlist==1.5.0
fsspec==2024.2.0
ftfy==6.3.1
gitdb==4.0.11
GitPython==3.1.43
gradio==3.43.1
gradio_client==0.5.0
h11==0.14.0
httpcore==1.0.6
httpx==0.27.2
huggingface-hub==0.26.2
idna==3.10
imageio==2.36.0
importlib_metadata==8.0.0
importlib_resources==6.4.0
inflect==7.3.1
ipykernel==6.29.5
ipython==8.29.0
jaraco.collections==5.1.0
jaraco.context==5.3.0
jaraco.functools==4.0.1
jaraco.text==3.12.1
jedi==0.19.1
Jinja2==3.1.3
joblib==1.4.2
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
jupyter_client==8.6.3
jupyter_core==5.7.2
kiwisolver==1.4.7
kornia==0.7.3
kornia_rs==0.1.7
lazy_loader==0.4
lpips==0.1.4
markdown-it-py==3.0.0
MarkupSafe==2.1.5
matplotlib==3.9.2
matplotlib-inline==0.1.7
mdurl==0.1.2
more-itertools==10.3.0
mpmath==1.3.0
multidict==6.1.0
multiprocess==0.70.16
mypy-extensions==1.0.0
narwhals==1.12.1
nest-asyncio==1.6.0
networkx==3.2.1
numpy==1.26.4
open_clip_torch==2.26.1
opencv-python==4.6.0.66
orjson==3.10.11
packaging==24.1
pandas==2.2.3
parso==0.8.4
peft==0.11.1
pilgram==1.2.1
pillow==10.4.0
platformdirs==4.2.2
prompt_toolkit==3.0.48
propcache==0.2.0
protobuf==5.28.3
psutil==6.1.0
pure_eval==0.2.3
pyarrow==18.0.0
pyarrow-hotfix==0.6
pydantic==2.9.2
pydantic_core==2.23.4
pydeck==0.9.1
pydub==0.25.1
Pygments==2.18.0
pyparsing==3.2.0
pyre-extensions==0.0.29
python-dateutil==2.9.0.post0
python-multipart==0.0.17
pytz==2024.2
pywin32==308
PyYAML==6.0.2
pyzmq==26.2.0
referencing==0.35.1
regex==2024.9.11
requests==2.32.3
rich==13.9.4
rpds-py==0.20.1
safetensors==0.4.5
scikit-image==0.24.0
scikit-learn==1.5.2
scipy==1.11.1
semantic-version==2.10.0
sentencepiece==0.2.0
sentry-sdk==2.17.0
setproctitle==1.3.3
six==1.16.0
smmap==5.0.1
sniffio==1.3.1
stack-data==0.6.3
starlette==0.41.2
streamlit==1.39.0
streamlit-keyup==0.2.0
sympy==1.13.1
tenacity==9.0.0
threadpoolctl==3.5.0
tifffile==2024.9.20
timm==1.0.11
tokenizers==0.19.1
toml==0.10.2
tomli==2.0.1
torch==2.5.1+cu124
torchaudio==2.5.1+cu124
torchvision==0.20.1+cu124
tornado==6.4.1
tqdm==4.66.6
traitlets==5.14.3
transformers==4.43.3
triton @ file:///D:/me/ecnu/research/VINE-main/triton-3.0.0-cp310-cp310-win_amd64.whl#sha256=5f0ec17adbcbbe60bd9cb67c17d40a6624d9f010c6bcdad989338a7a4c1b352d
typeguard==4.3.0
typing-inspect==0.9.0
typing_extensions==4.12.2
tzdata==2024.2
urllib3==1.26.19
uvicorn==0.32.0
wandb==0.18.5
watchdog==5.0.3
wcwidth==0.2.13
websockets==11.0.3
xformer==1.0.1
xformers==0.0.28.post3
xxhash==3.5.0
yarl==1.17.1
zipp==3.19.2
模型
- 编码器:VINE-R-Enc
- 解码器:VINE-R-Dec
VINE- B 训练了 111k 次迭代,VINE- R 在此基础上进一步进行了 80k 次迭代
推理实验
素材图片
2.png
编码器
python src/watermark_encoding.py --pretrained_model_name Shilin-LU/VINE-R-Enc --input_path ./example/input/2.png --output_dir ./example/watermarked_img --message 'Hello World!'
获得 2_wm.png
图片强修改
论文中给出的方案
python src/image_editing.py --model ultraedit --input_path ./example/watermarked_img/2_wm.png --output_dir ./example/edited_watermarked_img
获得 2_wm_edit.png
我自己添加的方案
涂改标注
裁切
大约裁去图片上方 1 /3
旋转
黑白
阳光滤镜
解码器
示例命令
python src/watermark_decoding.py --pretrained_model_name Shilin-LU/VINE-R-Dec --input_path ./example/edited_watermarked_img/2_wm_edit.png --groundtruth_message 'Hello World!'
几种修改方案的解码情况对比(groundtruth_message 默认为 'Hello World!')
修改方法 | 图片 | 解码得分 |
---|---|---|
ultraedit | ![]() |
0.94 |
涂改标注 | ![]() |
1.0 |
裁切 | ![]() |
0.52 |
旋转 | ![]() |
0.51 |
黑白 | ![]() |
0.92 |
阳光滤镜 | ![]() |
1.0 |
后续比较
- 论文中包含有 PSNR、SSIM、LPIPS 和 FID 等标准指标的计算与评估,数据结果均有提供,本复现实验中不再赘述
- 论文中包含有与其他同类模型的比较,本复现实验中不再重复
总结
- 隐蔽性良好(水印不可见性良好)
- 鲁棒性良好,抗攻击性良好(但是对于强裁切及旋转,水印的追溯性不够高)
正文完