水印分割技术 (Watermark Segmentation)

Diffusion-Dynamics / watermark-segmentation Public

由 DiffusionDynamics.ai 和 clear.photo 共同开发的开源水印分割技术。 运用深度学习和基于 PyTorch 的合成数据增强技术,精确检测 logo/文本。 该极简代码参考了顶级研究成果,实现了强大且适应性强的水印移除方案。

License

MIT license

1 star 0 forks Branches Tags Activity

Diffusion-Dynamics/watermark-segmentation

main

BranchesTags

文件夹和文件

Name | Name | Last commit message | Last commit date ---|---|---|--- logos | logos .gitignore | .gitignore LICENSE | LICENSE README.md | README.md dataset.py | dataset.py readmeimage-2.png | readmeimage-2.png readmeimage.png | readmeimage.png requirements.txt | requirements.txt watermark-segmentation.ipynb | watermark-segmentation.ipynb

View all files

最新提交

历史

2 Commits

Watermark Segmentation

Python Version License arXiv arXiv arXiv arXiv

Diffusion Dynamics Logo

clear.photo Logo

该仓库由 Diffusion Dynamics 提供,展示了我们首款产品 clear.photo 背后的核心水印分割技术。 这项工作借鉴了图像恢复任务中关于扩散模型的研究见解。

引言

有效的水印移除依赖于准确识别水印在图像中的精确位置和形状。 此代码解决了第一个关键步骤:水印分割

我们提出了一种深度学习方法,该方法经过训练可以生成突出显示水印区域的掩码。 本仓库侧重于分割基于 logo 的水印,展示了一种适用于各种水印类型的强大技术。 所采用的方法借鉴了图像分割领域的进展。

本仓库旨在整合近期可见水印移除和分割研究中的关键思想,包括以下文献中提出的技术:

它将这些概念提炼为一个最小、功能性的代码库,纯粹专注于分割任务。 目标是提供一个清晰、易于理解的基线,易于修改和构建,甚至允许在带有 Apple M 系列芯片的笔记本电脑等消费级硬件上进行微调。 它可以作为一个基础示例,展示适用于构建更复杂工具(如 clear.photo)的核心技术。

背景:分割在水印移除中的作用

一个典型的先进水印移除流程包括:

  1. 分割: 生成一个精确的掩码,将水印像素与背景图像内容隔离。
  2. 修复/恢复: 使用掩码来引导算法(通常是生成式的,如扩散模型)智能地“填充”先前被水印占据的区域,无缝地重建底层图像。

可视化效果

代码库概述

本项目提供了训练水印分割模型并将其用于推理的必要工具。 关键组件包括:

快速开始

按照以下步骤设置和运行项目:

1. 准备工作:

python --version
# 确保显示 3.10.x 或更高版本

2. 克隆仓库:

git clone https://github.com/Diffusion-Dynamics/watermark-segmentation
cd watermark-segmentation

3. 安装依赖:

建议使用虚拟环境:

python -m venv venv
source venv/bin/activate # On Windows use `virtual\Scripts\activate`
pip install -r requirements.txt

4. 准备数据集:

# 使用 Flickr8k 的示例
wget https://github.com/jbrownlee/Datasets/releases/download/Flickr8k/Flickr8k_Dataset.zip
unzip Flickr8k_Dataset.zip
# 确保 notebook 指向 'Flicker8k_Dataset' 目录

5. 运行 Notebook:

jupyter lab

模型架构和训练

核心分割模型利用了 segmentation-models-pytorch 库提供的标准分割架构。该库提供了具有各种 backbone 的预实现模型。为了加速训练并减少对大量训练数据的需求,该模型利用了在 ImageNet 数据集上预训练的 backbone。

训练使用 pytorch-lightning 进行管理,从而简化了训练循环,便于多 GPU 训练并集成了日志记录。 训练过程与 Apple M 系列芯片(通过 MPS)和 NVIDIA GPU(通过 CUDA)兼容。 虽然 NVIDIA GPU 通常提供更快的训练速度,但在 Apple M 系列芯片上进行微调是可行的,并且通常可以在几个小时内完成。

实现良好性能和泛化的关键在于 dataset.py 中的数据生成策略。 这涉及合成数据增强:在训练期间将多样化和随机化的水印(改变大小、位置、不透明度、旋转、混合模式)动态地应用于干净的背景图像上。 这迫使模型学习在各种条件下识别水印,使其对未见过的水印和背景具有鲁棒性。 这种方法受到相关图像恢复研究([arXiv:2502.02676](https://github.com/Diffusion-Dynamics/https:/arxiv.org/abs/2502.02676))中讨论的技术的启发。

用法 (推理)

该 notebook (watermark-segmentation.ipynb) 演示了如何:

  1. 加载包含水印的输入图像。
  2. 预处理用于模型的图像。
  3. 运行模型以获得分割掩码(通常是概率图)。
  4. 后处理掩码(例如,阈值化)以获得二值分割。 一个常见的改进步骤,受到“Blind Visible Watermark Removal with Morphological Dilation”等作品中讨论的形态学膨胀等技术的启发([arXiv:2502.02676](https://github.com/Diffusion-Dynamics/https:/arxiv.org/abs/2502.02676)),可以在这里应用,以潜在地稍微扩展掩码,确保为后续移除步骤提供更好的覆盖,尽管这篇特定的论文侧重于移除过程本身内的改进阶段。

输出掩码精确地识别了水印区域,准备好用于下游移除任务。

生产环境

构建一个强大、可用于生产的水印分割和移除系统涉及超出本仓库范围的重大工程挑战。 如果您需要一个快速、可扩展且可靠的解决方案来满足实际需求,请考虑使用我们的平台:clear.photo

关于

由 DiffusionDynamics.ai 和 clear.photo 共同开发的开源水印分割技术。 运用深度学习和基于 PyTorch 的合成数据增强技术,精确检测 logo/文本。 该极简代码参考了顶级研究成果,实现了强大且适应性强的水印移除方案。

资源

Readme

License

MIT license

Activity

Custom properties

Stars

1 star

Watchers

1 watching

Forks

0 forks

Report repository

Releases

No releases published

Packages 0

No packages published

语言

© 2025 GitHub, Inc.