Post

水印消除 / 图像编辑模型训练加速:Inpainting / Instruct-Edit / Flux Fill 的 2024~2026 栈

水印消除 / 图像编辑模型训练加速:Inpainting / Instruct-Edit / Flux Fill 的 2024~2026 栈

训推加速系列深化之”图像编辑”专题。水印消除是可控 Inpainting 的一个子任务——更大的家族包括局部重绘 / 指令式编辑 / 内容擦除。2024~2026 的 SOTA 从 SDXL Inpaint 跳到 Flux Fill / BrushNet / PowerPaint,训练端有独特挑战(mask-aware 训练 / 合成数据 / 指令对齐)。

⚠️ 声明:本文讲训练加速与模型技术。实际水印消除应用时请尊重版权、商标和素材授权——只对自己拥有版权的图像或合法场景(去除历史扫描件中的污渍、修复老照片、消除自拍误入的路人)使用这类技术。

姊妹篇:训推加速技术地图 · 图像 Diffusion 深化 · 分割模型

⚠️ 时效声明(最后更新:2026-05-08):Flux Fill 2024-11 发布,BrushNet / PowerPaint 2024 开源,数值为公开资料量级。


零、本文骨架

小节主题产出
§一图像编辑任务谱Inpaint / Instruct / Removal / Fill
§二主流架构对比SDXL Inpaint / Flux Fill / BrushNet / PowerPaint
§三Inpainting 训练独有的挑战Mask-aware / 数据合成
§四水印消除作为可控 InpaintingDetect + Inpaint 二级 pipeline
§五Instruct 式编辑:InstructPix2Pix / MGIE / OmniGen-
§六训练加速:数据合成 + LoRA + Flow Matching-
§七推理加速:少步蒸馏 + Region Denoise-
§八Benchmark:PSNR / LPIPS / FID / 用户评分-
§九2026 SOTA 配置-
§十权威参考-

一、图像编辑任务谱

1.1 从”局部填充”到”指令编辑”

graph TD
    R[图像编辑家族] --> A[① Inpainting<br/>给 mask 填内容]
    R --> B[② Outpainting<br/>扩展画面]
    R --> C[③ Object Removal<br/>擦除对象]
    R --> D[④ Instruct Edit<br/>'把狗变成猫']
    R --> E[⑤ Style Transfer]
    R --> F[⑥ Watermark / Logo Removal]

    A --> A1[SDXL-Inpaint / Flux Fill]
    B --> B1[Flux Fill / SDXL]
    C --> C1[PowerPaint / BrushNet / LaMa]
    D --> D1[InstructPix2Pix / MGIE / OmniGen]
    F --> F1[① Detect 水印 mask<br/>② Inpaint 填充]

    style F fill:#FDE8A9,stroke:#E7C56D
    style D fill:#CFE0F3,stroke:#8AB0DB

1.2 任务差异对推理 / 训练的影响

任务输入Mask训练数据核心难点
InpaintImage + Mask任意图 + 合成 maskMask 边界接缝
RemovalImage + Mask带对象 + 无对象对(难)“真干净”的 GT
InstructImage + Text❌(隐式)成对 before/after(贵)对齐指令
WatermarkImage(+ optional mask)可选合成水印对复杂水印形态

二、主流架构对比

2.1 时间线

gantt
    title 图像编辑模型 2022-2026
    dateFormat YYYY-MM-DD
    axisFormat %Y

    section 传统
    LaMa (Saic, 2021)         :l1, 2022-01-01, 800d
    GLIDE / DALL-E Inpaint    :g1, 2022-06-01, 600d

    section SD 系
    SD Inpaint 1.5            :s1, 2022-10-01, 900d
    SDXL Inpaint              :s2, 2023-10-01, 700d
    BrushNet                  :crit, s3, 2024-03-01, 500d
    PowerPaint                :s4, 2024-04-01, 500d

    section Flux / DiT 系
    Flux Fill                 :crit, f1, 2024-11-01, 400d
    OmniGen                   :o1, 2024-12-01, 400d
    Qwen-Image-Edit (推测)    :q1, 2025-06-01, 300d

    section Instruct
    InstructPix2Pix           :i1, 2023-01-01, 900d
    MGIE (Apple)              :i2, 2024-03-01, 500d

2.2 横向对比

模型参数编辑类型Mask 输入质量推理速度
LaMa~27M纯 inpaint极快
SDXL Inpaint2.6B通用
BrushNet+插件通用
PowerPaintSDXL 基多任务
Flux Fill dev12BInpaint + OutpaintSOTA
OmniGen3.8B统一生成 + 编辑可选
InstructPix2Pix0.9B指令编辑
MGIE7B + VLM指令 + 多模态

2.3 BrushNet / PowerPaint:加”可控分支”的思路

和 ControlNet 同 family——冻结主 SD,加一个 mask-aware 分支

graph LR
    I[Image] --> SD[SD U-Net<br/>冻结]
    M[Mask] --> BN[BrushNet 分支<br/>训练]
    BN -->|注入| SD
    SD --> O[输出]

    style BN fill:#D4E8CF,stroke:#94C18A
    style SD fill:#CFE0F3,stroke:#8AB0DB
  • 训练成本低:只训分支
  • 质量好:主 SD 的生成能力保留
  • 多任务复用:同一主 SD 接不同分支

三、Inpainting 训练独有的挑战

3.1 Mask 感知的输入通道

SD Inpaint 把 U-Net 输入扩成 9 通道:

  • 4 通道:原图 latent
  • 1 通道:mask (0/1)
  • 4 通道:masked latent(被 mask 区域置零)

这就要求首层 conv 改 shape——pretrained 权重要 partial copy + 扩展零初始化。

3.2 Mask 分布合成

训练时 mask 是合成的,典型分布:

  • Random box mask:随机矩形
  • Stroke mask:手绘风格笔刷
  • Object mask:用 SAM 2 抠对象 mask
  • Words mask:文字形状(给水印消除用)
  • Mixed:70% stroke + 20% object + 10% text

经验法则推理时 mask 分布 ≈ 训练 mask 分布 才不会出现边界伪影。

3.3 对象擦除的”真干净”难题

训练目标需要 pair:(图 + 对象), (图 - 对象)。天然几乎没有——主流做法:

  • 合成对象放置:在干净图上贴对象生成 “before”
  • Diffusion-generated pair:用模型生成干净版本
  • Video frame 借位:同场景不同帧借干净背景

PowerPaint 用多任务 token把”擦除”和”填充”训成两种模式,解决”模型不知道该填什么”。


四、水印消除作为可控 Inpainting

4.1 标准 pipeline

graph LR
    I[带水印图] --> D[水印检测<br/>Segmentor]
    D --> M[Mask]
    I --> IP[Inpaint 模型<br/>SDXL / Flux Fill]
    M --> IP
    IP --> O[清理后图]

    style D fill:#FDE8A9,stroke:#E7C56D
    style IP fill:#D4E8CF,stroke:#94C18A

4.2 水印检测是独立任务

  • 文字水印:OCR 定位(PaddleOCR / TrOCR)
  • Logo 水印:检测器 + 分类(YOLO + classifier)
  • 半透明 / 平铺水印专用 segmentor(常用 U-Net 训的 pixel-classifier)

常用开源:

  • WatermarkRemover-AI(社区项目)
  • lama-cleaner / IOPaint:LaMa-based 开源 inpainting 工具链

4.3 两种部署路线

路线速度质量
检测 + LaMa快(~100 ms 图)
检测 + Flux Fill慢(~3 s/图)
检测 + SDXL Inpaint 少步蒸馏中(~500 ms)中高

4.4 合法使用边界

  • 自己拍的照片上误入的路人 / 招牌 / 日期戳
  • 自己拥有的设计稿 / 扫描件中的污渍
  • 过期版权 / CC0 素材的污损修复
  • 绝不要用来抹他人作品的版权水印或侵犯商标

五、Instruct 式编辑

5.1 InstructPix2Pix (2023)

首个成熟的”图 + 文字 → 新图”范式:

  • 数据合成:用 GPT-3 生成 edit instruction + Prompt-to-Prompt 造 before/after 对
  • 训练:在 SD 基础上 fine-tune,U-Net 输入加 reference image
  • 数量:~45 万 pair

5.2 2024~2026 演进

模型特点
MGIE (Apple)VLM 把自然语言指令改写成精确 prompt
OmniGen统一模型,生成 + 编辑 + 可控
Flux Fill + ControlNet组合 + LoRA 定制
Qwen-Image-Edit(推测)Qwen 家族的编辑 variant

5.3 指令 + mask 混合

2025+ 趋势:同时支持文字指令和可选 mask——PowerPaint / OmniGen 都走这条。


六、训练加速

6.1 数据合成 pipeline

graph TD
    SRC[基础图库<br/>LAION / COCO] --> SEG[SAM 2 抠对象<br/>生成 mask]
    SEG --> CAP[VLM 生成描述<br/>'red car in street']
    CAP --> PAIR[造 Pair<br/>原图 + mask + 指令]
    PAIR --> D[训练数据]

    SRC --> WM[合成加水印<br/>随机 logo / 文字]
    WM --> DP[Pair:<br/>带水印 + 干净]
    DP --> D

    style D fill:#D4E8CF,stroke:#94C18A

关键数据合成是训练加速的最大杠杆(胜过 kernel 优化一个数量级)。

6.2 LoRA for Inpaint

全参微调 SDXL Inpaint 需 100+ A100-hour;LoRA 只需 ~10 hour:

  • Rank 32~64
  • Target U-Net down/up blocks
  • 数据量 5k~50k pair 即可

适合定制水印 / 垂直领域(医学图像 inpaint / 古籍修复)。

6.3 Flow Matching Inpaint(Flux Fill 路线)

Flux Fill 走的是在 Flux DiT 上做 Fill 特化

  • 输入拼 9 通道(类似 SD Inpaint 扩展思路)
  • 保持 Flow Matching 训练目标
  • 数据依赖 mask 分布 + 合成 caption

训练加速点和 图像 Diffusion 篇 一致:

  • bf16 + FSDP2
  • SageAttention
  • 梯度累积 + Activation Checkpointing

6.4 训练 loss 设计

inpaint 常用 mask-weighted loss

\[\mathcal{L} = \| (\epsilon_\theta - \epsilon) \odot (1 + \lambda \cdot m) \|^2\]
  • $m$:mask(1 = 要填充)
  • $\lambda$ 典型 3~10,让模型更关注要填充区域

七、推理加速

7.1 少步蒸馏

和主流 Diffusion 一致,可套 DMD2 / LCM / Turbo

  • SDXL Inpaint + LCM-LoRA → 4 步
  • Flux Fill dev → 4~8 步蒸馏版
  • 实测端到端速度 5~10× 加速

7.2 Region Denoise:只算要填的区域

核心 trick:mask 外的区域用原图 latent直接复制,不参与去噪计算:

  • 每步节省 ~30~50% U-Net 计算
  • 对 mask 很小的场景(水印擦除)特别有效
  • 主流框架(diffusers / ComfyUI)默认就是这样做

7.3 Tiling(大图)

4K 图 inpaint 一次跑不下 → Tile + overlap

  • 512 / 1024 tile 逐个 inpaint
  • Overlap 20~30% 做 blending

:tile 边界的一致性——用 seed 固定 + 跨 tile context injection 缓解。

7.4 实测数据(示意量级)

场景方案延迟
1024 图 + 小 maskSDXL Inpaint + LCM~0.8 s (A100)
1024 图 + 大 maskFlux Fill dev 20 步~4 s (A100)
1024 图 + 水印LaMa~0.1 s (A100)
4K 图 tiledSDXL + 9 tiles~6 s

八、Benchmark

8.1 客观指标

PSNR (越大越好):

\[\mathrm{PSNR} = 10 \log_{10} \frac{\mathrm{MAX}^2}{\mathrm{MSE}}\]

LPIPS (感知距离, 越小越好):用 VGG / AlexNet 特征计算。

FID (分布距离):评估生成质量一致性。

CLIP-score(指令编辑):编辑后图像和目标 prompt 的对齐度。

8.2 常用 benchmark

Benchmark任务指标
Places2InpaintPSNR / LPIPS
CelebA-HQ人脸 inpaintFID
MagicBrushInstruct 编辑L1 + CLIP
EditBench开放域编辑主观评分
Emu Edit多任务编辑主观 + CLIP-Dir

8.3 对水印消除的实践指标

指标含义
Removal Rate水印检测器在输出上不再检出的比例
Background PSNRmask 外区域的保真
Boundary LPIPSmask 边界的感知连续性
Artifact Rate主观评测”伪影”出现率

九、2026 SOTA 配置

9.1 通用 Inpainting 云端

模型: Flux Fill dev + DMD2 4 步蒸馏版 + SageAttention 硬件: H100 × 1 目标: 1024 图 < 1 s, 质量接近原 Flux Fill

9.2 水印消除 pipeline

检测: YOLO / PaddleOCR + 专用水印 segmentor Inpaint: SDXL Inpaint LCM 4 步 或 LaMa (速度优先) 后处理: 边界 blend + 可选轻量 SR 期望: 2K 图 < 500 ms (A100)

9.3 指令编辑应用

前端: MGIE / OmniGen / Qwen-Image-Edit (推测) 加速: FP8 + Flow Matching 少步 期望: 1024 图 < 2 s

9.4 端侧 inpaint

模型: LaMa 蒸馏版 或 SD-Turbo Inpaint (0.5B) 平台: iPhone / Android / 浏览器 WebGPU 目标: 512 图 < 1 s

9.5 LoRA 垂直定制

场景: 古籍修复 / 医学图像 / 广告素材 数据: 5k~20k pair 训练: LoRA rank=64 on SDXL Inpaint 时长: ~6~12 小时 A100 × 1

十、权威参考

论文

代码

系列文


一句话总结:2024~2026 图像编辑加速的三条主线——Flux Fill / BrushNet / PowerPaint 式的可控 Inpaint + InstructPix2Pix/OmniGen 式指令编辑 + 水印消除二级 pipeline。训练侧核心杠杆是数据合成与 mask 分布设计;推理侧是 少步蒸馏 + Region Denoise + LoRA 垂直定制。水印消除技术请用在自己拥有版权的素材上。

This post is licensed under CC BY 4.0 by the author.