videoseal
VideoSeal 是一款开源且高效的图像与视频隐形水印工具,旨在为多媒体内容提供不可见的版权保护。它解决了传统水印容易破坏画质或在压缩、剪辑后失效的痛点,能够在人眼几乎无法察觉的情况下,将加密信息牢固地嵌入到图片或视频帧中,并确保视频水印在时间序列上的连贯性。
这套工具非常适合开发者、人工智能研究人员以及需要保护数字资产的内容创作者使用。无论是希望集成水印功能的工程师,还是研究多媒体安全的研究者,都能通过其简洁的 Python 接口快速上手。
VideoSeal 的核心亮点在于其强大的模型家族:PixelSeal 通过独特的对抗训练技术,实现了鲁棒性与隐蔽性的最佳平衡;ChunkySeal 则将水印容量大幅提升至 1024 比特,突破了以往的技术限制;而主模型 VideoSeal 专为视频优化,能有效抵抗各类常见攻击。所有模型、训练代码及评估工具均基于 MIT 协议完全开放,让用户可以自由部署、微调甚至离线使用,是构建可信数字内容生态的理想选择。
使用场景
某短视频 MCN 机构每天需向全网分发数千条原创高清视频,迫切需要在不破坏画质的前提下嵌入版权标识以应对盗版。
没有 videoseal 时
- 画质受损严重:传统可见水印遮挡关键画面影响观看体验,或不可见水印算法粗糙导致视频出现噪点和色彩断层。
- 抗攻击能力弱:盗版者只需对视频进行简单的压缩、裁剪或调整亮度,原有的版权信息就会被彻底抹除,无法追溯。
- 帧间闪烁不稳定:逐帧处理图片的方案导致水印在连续播放时产生肉眼可见的闪烁,暴露了加密痕迹且极易被移除。
- 维权举证困难:由于缺乏高容量且鲁棒的隐藏信息,发生侵权纠纷时难以提供确凿的技术证据链。
使用 videoseal 后
- 视觉完美隐形:利用 PixelSeal 模型的对抗训练技术,将版权信息融入像素细节中,人眼完全无法察觉,保持了 4K 原片画质。
- 极强鲁棒性:即使盗版视频经过重度压缩、旋转或滤镜处理,videoseal 仍能精准提取出隐藏的 256 位甚至 1024 位版权密钥。
- 时序高度一致:专为视频设计的架构确保了水印在时间维度上的连贯性,彻底消除了帧间闪烁,让盗版者无从下手。
- 自动化确权高效:支持批量快速嵌入与检测,法务团队可一键从全网抓取的视频中还原版权信息,大幅降低维权成本。
videoseal 通过平衡极致的不可感知性与强大的抗攻击能力,为数字内容创作者构建了隐形的版权护城河。
运行环境要求
- 未说明
需要 NVIDIA GPU,CUDA 12.1
未说明(流式处理脚本优化了低内存使用)

快速开始
🔥 亮点
PixelSeal实现了最先进的鲁棒性与不可感知性平衡,位于帕累托前沿
- 🏆 PixelSeal:通过仅对抗训练和基于JND的衰减,达到SOTA的不可感知性和鲁棒性
- 🚀 ChunkySeal:容量提升4倍(1024位)——证明水印技术的极限远未触及
- 🎬 VideoSeal:具有时间一致性的高效图像与视频水印方案
- 🔓 开源:所有模型、训练代码及评估工具均以MIT许可证发布
📰 最新动态
- 2025年12月:🆕 ChunkySeal和PixelSeal发布!模型卡片和检查点现已可用
- 2025年10月:🏅 WmForger被接受为NeurIPS 2025 Spotlight!代码位于
wmforger/ - 2025年3月:VideoSeal v1.0,改进了256位模型并增强了鲁棒性
- 2024年12月:首次发布VideoSeal,配备96位基准模型
🚀 快速入门
import videoseal
from PIL import Image
import torchvision.transforms as T
# 按名称加载任意模型(首次使用时自动下载)
model = videoseal.load("videoseal") # VideoSeal v1.0 (256位,稳定)
# model = videoseal.load("pixelseal") # PixelSeal(SOTA不可感知性与鲁棒性)
# model = videoseal.load("chunkyseal") # ChunkySeal(1024位高容量)
# 为图像添加水印 🎨
img_tensor = T.ToTensor()(Image.open("image.jpg")).unsqueeze(0)
outputs = model.embed(img_tensor)
T.ToPILImage()(outputs["imgs_w"][0]).save("watermarked.jpg")
# 检测水印
detected = model.detect(img_tensor)
hidden_message = (detected["preds"][0, 1:] > 0).float() # 二进制消息
视频水印:
import videoseal
import torchvision
# 加载并为视频添加水印 🎬
model = videoseal.load("videoseal")
video, _, _ = torchvision.io.read_video("video.mp4")
video = video.permute(0, 3, 1, 2).float() / 255.0
outputs = model.embed(video, is_video=True)
watermarked = (outputs["imgs_w"] * 255).byte().permute(0, 2, 3, 1)
torchvision.io.write_video("watermarked.mp4", watermarked, fps=30)
💡 若需无依赖的独立使用,请参阅我们的TorchScript指南,获取预编译模型。
安装
要求
Python版本需为3.10(PyTorch > 2.3,Torchvision 0.16.0,Torchaudio 2.1.0,CUDA 12.1)。安装PyTorch:
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.1 -c pytorch -c nvidia
其他依赖:
pip install -r requirements.txt
进行训练时,我们还建议使用Decord:
pip install decord
请注意,安装Decord可能会遇到一些问题:https://github.com/dmlc/decord/issues/213 推理时无需Decord即可正常工作,但在训练时可能会出现问题。
模型库
我们提供了一系列全面的水印模型,在容量、鲁棒性和不可感知性之间提供了不同的权衡。
| 模型 | 容量 | 适用场景 | 模型卡片 | 检查点 | 论文 | 状态 |
|---|---|---|---|---|---|---|
| PixelSeal | 256位 | SOTA鲁棒性与不可感知性 | pixelseal.yaml |
pixelseal/checkpoint.pth | arXiv:2512.16874 | 🆕 新 |
| ChunkySeal | 1024位 | 高容量大型模型 | chunkyseal.yaml |
chunkyseal/checkpoint.pth | arXiv:2510.12812 | 🆕 新 |
| VideoSeal v1.0 | 256位 | 稳定 | videoseal_1.0.yaml |
y_256b_img.pth | arXiv:2412.09492 | ✅ 稳定 |
| VideoSeal v0.0 | 96位 | 旧版基准 | videoseal_0.0.yaml |
rgb_96b.pth | arXiv:2412.09492 | 🟡 遗留 |
注:完整的训练检查点(包含优化器状态和判别器)请参见docs/training.md。
下载作为基线的其他模型
我们不拥有任何第三方模型,因此您需要手动下载它们。 我们在docs/baselines.md中提供了下载这些模型的指南。
VMAF
我们在docs/vmaf.md中提供了检查和安装VMAF的指南。
推理
笔记本
notebooks/image_inference.ipynbnotebooks/video_inference.ipynbnotebooks/video_inference_streaming.ipynb:针对较低内存占用进行了优化
音视频水印
用于从视频文件中同时为音频和视频添加水印。 它会将整个视频加载到内存中,因此不适合处理长视频。
示例:
python inference_av.py --input assets/videos/1.mp4 --output_dir outputs/
python inference_av.py --detect --input outputs/1.mp4
流式嵌入与提取
用于以流式方式为视频文件添加水印。它按片段加载视频,因此非常适合处理长视频,甚至在笔记本电脑上也能顺利运行。
示例:
python inference_streaming.py --input assets/videos/1.mp4 --output_dir outputs/
这将在 outputs/1.mp4 中输出带水印的视频,并将二进制消息保存到 outputs/1.txt 中。
完整评估
用于对模型和基线进行完整评估。
评估训练好的模型的示例:
python -m videoseal.evals.full \
--checkpoint /path/to/videoseal/checkpoint.pth \
或者,运行给定的基线:
python -m videoseal.evals.full \
--checkpoint baseline/wam \
这将生成一个名为 metrics.csv 的文件,其中包含图像/视频不可感知性指标以及对每种增强技术的鲁棒性测试结果(你可以移除部分增强技术以加快评估速度)。例如,在 SA-V 数据集的高分辨率视频上运行默认 videoseal 模型的评估脚本,应得到类似于 sav_256b_metrics 的指标。
更多详情
训练
我们提供了训练代码,可用于复现我们的模型或训练你自己的模型。其中包括图像和视频的训练(即使你打算进行视频训练,我们也建议先从图像开始)。有关数据准备、训练命令以及预训练模型检查点的详细说明,请参阅 docs/training.md。
推理
以下是模型的一些重要参数:
scaling_w:控制全局水印强度(默认值为0.2)。较高的值可提高对抗攻击的鲁棒性,但会使水印更加明显;较低的值则能提升不可感知性。attenuation:启用刚刚可觉察差异(JND)掩蔽功能。JND 模型会构建一张热图,纹理丰富的区域数值较高,而其他区域较低。这样,模型可以在这些纹理丰富的区域隐藏更强的水印,同时保持平滑区域的自然外观。默认情况下,videoseal_1.0模型会使用 JND 热图(位于 modules/jnd.py 中)。
你也可以在加载模型后修改其某些属性。
# 示例:更新已加载模型的参数
model.blender.scaling_w = 0.4 # 增强强度(更鲁棒)
许可证
该模型采用 MIT 许可证授权。
贡献
参见
维护者与贡献者
Pierre Fernandez, Hady Elsahar, Tomas Soucek, Sylvestre Rebuffi, Alex Mourachko
📜 论文与引用
如果你觉得这个仓库对你有帮助,请考虑给它一颗星 ⭐,并引用相关论文:
VideoSeal:开放且高效的视频水印技术
Pierre Fernandez, Hady Elsahar, I. Zeki Yalniz, Alexandre Mourachko
演示: aidemos.meta.com/videoseal
@article{fernandez2024videoseal,
title={Video Seal: Open and Efficient Video Watermarking},
author={Fernandez, Pierre and Elsahar, Hady and Yalniz, I. Zeki and Mourachko, Alexandre},
journal={arXiv preprint arXiv:2412.09492},
year={2024}
}
ChunkySeal:我们可以隐藏更多比特
Aleksandar Petrov, Pierre Fernandez, Tomáš Souček, Hady Elsahar
尽管基于深度学习的图像水印技术取得了快速进展,但当前鲁棒方法的容量仍然局限于几百比特的规模。这项工作建立了水印容量的理论上限,并展示了 ChunkySeal,它将容量提升至 1024 比特,同时保持图像质量和鲁棒性不变。
@misc{petrov2025hidebits,
title={We Can Hide More Bits: The Unused Watermarking Capacity in Theory and in Practice},
author={Aleksandar Petrov and Pierre Fernandez and Tom\'{a}\v{s} Sou\v{c}ek and Hady Elsahar},
year={2025},
eprint={2510.12812},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2510.12812}
}
PixelSeal:仅对抗训练实现隐形水印
Tomáš Souček*, Pierre Fernandez*, Hady Elsahar, Sylvestre-Alvise Rebuffi, Valeriu Lacatusu, Tuan Tran, Tom Sander, Alexandre Mourachko
这项工作引入了 仅对抗训练 方法,消除了不可靠的感知损失,从而实现了最先进的鲁棒性和不可感知性。PixelSeal 通过三阶段训练计划和基于 JND 的衰减机制,解决了优化不稳定和分辨率缩放等挑战。
@article{soucek2025pixelseal,
title={Pixel Seal: Adversarial-only Training for Invisible Image and Video Watermarking},
author={Sou\v{c}ek, Tom\'{a}\v{s} and Fernandez, Pierre and Elsahar, Hady and Rebuffi, Sylvestre-Alvise and Lacatusu, Valeriu and Tran, Tuan and Sander, Tom and Mourachko, Alexandre},
journal={arXiv preprint arXiv:2512.16874},
year={2025}
}
WmForger:黑盒水印伪造攻击
Tomáš Souček, Sylvestre-Alvise Rebuffi, Pierre Fernandez, Nikola Jovanović, Hady Elsahar, Valeriu Lacatusu, Tuan Tran, Alexandre Mourachko
NeurIPS 2025 Spotlight 🏅 | 虚拟站点
@inproceedings{soucek2025wmforger,
title={Transferable Black-Box One-Shot Forging of Watermarks via Image Preference Models},
author={Sou\v{c}ek, Tom\'{a}\v{s} and Rebuffi, Sylvestre-Alvise and Fernandez, Pierre and Jovanović, Nikola and Elsahar, Hady and Lacatusu, Valeriu and Tran, Tuan and Mourachko, Alexandre},
booktitle={Advances in Neural Information Processing Systems},
year={2025}
}
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
tesseract
Tesseract 是一款历史悠久且备受推崇的开源光学字符识别(OCR)引擎,最初由惠普实验室开发,后由 Google 维护,目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据,有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题,是数字化归档和信息自动化的重要基础工具。 在技术层面,Tesseract 展现了强大的适应能力。从版本 4 开始,它引入了基于长短期记忆网络(LSTM)的神经网络 OCR 引擎,显著提升了行识别的准确率;同时,为了兼顾旧有需求,它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码,开箱即用即可识别超过 100 种语言,并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面,它灵活支持纯文本、hOCR、PDF、TSV 等多种格式,方便后续数据处理。 Tesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库(libtesseract),不包含图形用户界面(GUI),因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中