Refaçade: Editing Object with Given Reference Texture¶
会议: CVPR 2026
论文: CVF Open Access
代码: https://github.com/fishZe233/Refacade
领域: 扩散模型 / 图像视频编辑
关键词: 物体重纹理, 纹理-结构解耦, 拼图置换, 纹理擦除, 视频编辑
一句话总结¶
Refaçade 把"物体重纹理"(用参考图的局部纹理重绘目标物体、但保住它原本的几何)从图像扩展到视频,核心是两招解耦——训练一个"纹理擦除器"把源物体退化成只剩几何的无纹理视频、再用"拼图置换"把参考图打散成无全局结构的纹理碎片,从而在图像和视频上都做到精准、可控的纹理迁移,定量与人工评测全面超过一众强 baseline。
研究背景与动机¶
领域现状:扩散模型在图像/视频编辑上已经很成熟,从 UNet 时代的 SD1.5、AnimateDiff,到 DiT 时代的 Flux、Wan2.1、HunyuanVideo,各类 inpainting 和指令编辑方法层出不穷。但有一类编辑任务一直没被认真做——物体重纹理(Object Retexture):给定一张参考图,把它的表面纹理(花纹、颜色、材质)迁移到目标物体上,同时保住目标物体原本的形状与几何、周围区域不动。本文把这个任务首次扩展到视频域。
现有痛点:最直接的做法是 ControlNet——用源视频抽出的结构条件(Canny/HED/depth)锁住几何,再拿参考图喂纹理。但作者发现这条路在重纹理任务上根本行不通,卡在两处解耦失败: - 结构条件没把纹理择干净:Canny、HED、depth、normal 这些条件名义上只描述几何,实际上还残留着表面花纹、材质边界、颜色梯度——这些恰恰是要被改掉的东西,结果它们被当成"结构"保了下来,目标物体的旧纹理擦不掉。 - 参考图直接当条件会泄露结构:把整张参考图喂进去,模型不光学走了纹理,连参考物体的形状、姿态、空间布局也一起搬过来,污染目标物体、把它的几何带歪。
核心矛盾:重纹理任务的本质是要同时做两个解耦——从源视频里剥离"纹理"只留"结构",从参考图里剥离"结构"只留"纹理",再把目标结构和参考纹理重新拼起来。而现成的条件提取器恰恰在这两端都做不干净。
本文目标:设计一套能在源端和参考端都彻底解耦纹理/结构的条件构造方式,让模型只接收"目标的纯几何 + 参考的纯纹理"。
核心 idea:与其指望通用条件提取器,不如专门构造两路干净条件——源端训一个扩散模型直接把纹理"擦"成无纹理几何,参考端用拼图置换把全局结构打碎只留局部纹理统计。
方法详解¶
整体框架¶
Refaçade 的输入是源视频 \(X\)、物体 mask \(M\)、背景视频 \(X_{bg}\) 和参考图 \(I_{ref}\),输出是把目标物体重纹理后的视频。整条管线就是"两路解耦 + 一次重组":源端先过纹理擦除器得到只剩几何的无纹理视频 \(X_{unt}\),参考端先过拼图置换得到打散的纹理引导,最后一个纹理迁移模型把"源的几何 + 参考的纹理"融合成结果。
模型基于 VACE 搭建、并借鉴 MM-DiT 处理不同类型条件。条件信号写作
整个网络用 flow matching 训练:令 \(z_0 = E_{VAE}(X)\) 为目标 latent,采样 \(t\sim U(0,1)\)、\(\varepsilon\sim N(0,I)\),定义线性插值路径 \(z_t = (1-t)z_0 + t\varepsilon\) 与目标速度 \(v^\star(z_t,t) = \varepsilon - z_0\),速度网络 \(v_\theta(z_t,c,t)\) 用如下损失训练:
架构上分两支:control 分支把背景、无纹理视频、mask 的 latent 沿通道拼接走专用 condition 层,参考图 latent 走单独的 reference 层(让"参考 token"和"源 token"用不同参数但共享同一注意力);main 分支把参考图 prepend 到带噪 latent 的首帧,control block 的 hidden state 加回对应层。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["源视频 X + mask M<br/>背景 X_bg"] --> B["纹理擦除器<br/>退化成无纹理几何 X_unt"]
R["参考图 I_ref"] --> J["拼图置换<br/>打碎全局结构留局部纹理"]
B --> M["纹理迁移模型<br/>VACE + MM-DiT 双支"]
J --> M
M -->|flow matching| O["重纹理后的图像/视频"]
关键设计¶
1. 纹理擦除器:把源物体退化成"只剩几何"的无纹理视频
针对"结构条件择不干净纹理"的痛点,作者不再用 Canny/HED/depth,而是构造一种无纹理几何表征作为条件。灵感来自 3D mesh——mesh 天然把几何(顶点/面)和外观(纹理坐标/材质)分开存储,因此把物体重建成 mesh 再用纯灰材质渲染,就能得到只有几何、没有任何颜色纹理的画面。但视频逐帧做 3D 重建太慢(单段视频要几分钟),无法用于大规模训练。于是作者把"擦纹理"这件事蒸馏进一个 2D 扩散模型:训一个 texture remover,直接学"有纹理帧 → 无纹理帧"的映射,推理时不需要任何 3D 重建。
训练数据靠 3D 渲染合成:先收集 7.2 万个物体网格(来自真实视频首帧和文生图),每个 mesh 在相同相机/光照下渲染两遍——一遍贴满纹理、一遍用统一灰色 Lambertian 材质去掉所有纹理与 albedo,配上不同相机轨迹/光强/姿态的增强,共得到约 57.6 万对"有纹理-无纹理"视频。擦除器基于 VACE,只更新 control block、冻结 main 分支(把学习限制在"外观→几何"这部分)。为了不让这个擦除器拖慢整套系统,作者再用 DMD 蒸馏把采样步数从 50 步压到 3 步,同时仍能输出高质量无纹理视频。
2. 拼图置换:把参考图打碎成无全局结构的纹理碎片
针对"参考图直接当条件会泄露结构"的痛点。训练时若直接拿目标视频首帧(去背景)当参考图,参考和目标会共享完全相同的空间结构,模型就会偷懒去学"空间对齐"而不是"纹理迁移";一到推理阶段参考和目标形状/姿态不同就彻底崩。
拼图置换(Jigsaw Permutation)就是为弥合这个训练-推理鸿沟:从参考图前景区域裁出方块 patch(含背景像素超过 10% 的 patch 丢弃以保证纹理纯度),随机打乱、随机翻转后重新拼成一个新的矩形布局。关键细节是——把拼好的参考碎片缩放到训练画布宽度、但高度随 patch 数量自由变化,patch 尺寸从 \(16\times16\) 到物体最大内接矩形不等,使得拼出来的参考块和源物体在长宽比、空间布局上都不一样。这样全局轮廓被彻底破坏、但各种尺度的局部纹理统计被保留,逼着模型只能去抽取"局部纹理花纹"而非记忆"全局空间排布",从而在推理时即便参考和源物体形状/尺寸/姿态差异巨大也能稳定迁移纹理。
损失函数 / 训练策略¶
主模型用上文的 flow-matching 损失训练,分两阶段:Stage-1 大规模预训练在约 180 万 WebVid-10M 过滤视频 + 90 万 SelfForcing 合成视频 + 80 万 SD3.5-Large 合成图像上训 2 epoch(96×A800,18k 步,约 120 小时);Stage-2 高质量微调在 18 万 Pexels 真实视频上训 2 epoch(32×A800,2.8k 步,约 28 小时)。两阶段都用常数学习率 \(1\times10^{-5}\)、梯度检查点、混合精度。纹理擦除器单独训练(VACE 初始化,18k 步约 38 小时)后再做 DMD 蒸馏(300 步)压到 3 步采样。
实验关键数据¶
主实验(图像 UHRSD 988 张 + 视频 Pexels 50 段)¶
背景指标看保真(MSE/PSNR/SSIM/LPIPS),前景指标看与参考纹理的相似度(CLIP/DINO/DreamSim↑、前景 LPIPS↓、GLCM↑),并辅以 GPT-5/Gemini 打分与用户偏好。
| 数据集 | Method | 背景 PSNR↑ | 前景 CLIP↑ | 前景 DINO↑ | DreamSim↑ | GPT-5↑ | 用户偏好↑ |
|---|---|---|---|---|---|---|---|
| 图像 | Flux-Fill | 31.92 | 0.6900 | 0.2091 | 0.7134 | 2.71 | 0.16 |
| 图像 | NanoBanana | 27.47 | 0.6981 | 0.2582 | 0.7316 | 2.65 | 0.16 |
| 图像 | Ours(stage2) | 36.20 | 0.7774 | 0.4516 | 0.8184 | 2.89 | 0.89 |
| 视频 | VideoPainter | 32.89 | 0.7130 | 0.1554 | 0.7173 | 1.92 | 0.06 |
| 视频 | AnyV2V | 22.77 | 0.7178 | 0.1603 | 0.7253 | 2.21 | 0.09 |
| 视频 | Ours(stage2) | 36.48 | 0.7524 | 0.3241 | 0.7742 | 2.82 | 0.74 |
图像上 stage2 在背景重建(PSNR 36.20)和前景对齐(CLIP 0.7774、DINO 0.4516、DreamSim 0.8184,前景 LPIPS 最低 0.6181)全面领先;视频上同样取得最优背景重建并大幅改善前景对齐,时序稳定性(EWarp 1.4248)与 stage1(1.3510)相当。用户偏好从次优方法的 ~0.5 拉到 0.74–0.89,差距悬殊。
消融实验(训练管线,表 3)¶
| 配置 | 参考端 | 结构条件 | 前景 DINO↑ | 前景 LPIPS↓ | GLCM↑ | GPT-5↑ |
|---|---|---|---|---|---|---|
| Ab-1 | w/o Jigsaw | Canny | 0.1859 | 0.7674 | 0.7006 | 2.10 |
| Ab-2 | w/ Jigsaw | Canny | 0.1906 | 0.7347 | 0.7297 | 2.42 |
| Ab-3 | w/ Jigsaw | HED | 0.1990 | 0.7484 | 0.7258 | 2.44 |
| Ab-5 | w/ Jigsaw | Depth | 0.1790 | 0.7532 | 0.7608 | 2.21 |
| Ab-6 | w/ Jigsaw | Untextured | 0.2622 | 0.6540 | 0.8830 | 2.72 |
关键发现¶
- 两招缺一不可:对比 Ab-1(w/o Jigsaw + Canny)和 Ab-2(w/ Jigsaw + Canny),仅加拼图置换就把前景 LPIPS 从 0.7674 降到 0.7347、GPT-5 从 2.10 升到 2.42——证明参考端打散结构确实有用;再把结构条件从 Canny/HED/Depth 换成擦除器的 Untextured(Ab-6),前景 DINO 从 ~0.19 跳到 0.2622、GLCM 从 ~0.73 跳到 0.8830,说明"无纹理几何条件"比传统边缘/深度图干净得多。
- 纹理擦除器是前景纹理迁移的主功臣:传统结构条件残留的纹理会把目标旧纹理保留下来、压低前景与参考的相似度;换成纯几何条件后前景指标整体跃升。
- Patch 尺寸有讲究(表 4):拼图 patch 太小会破坏纹理统计、太大又留住结构,作者做了 patch size 的敏感性分析以取折衷。
亮点与洞察¶
- "擦纹理"这件事被蒸馏成一个 2D 网络:用 3D mesh 双渲染(贴纹理 vs 灰材质)合成配对数据,再训一个扩散模型直接在 2D 空间学"擦纹理",绕开了逐帧 3D 重建的巨大开销——这是把昂贵的 3D 解耦能力"摊还"进一次性训练的巧妙思路,可迁移到任何需要"几何条件但不要外观"的编辑任务。
- 拼图置换是一个极简却对症的正则:仅靠裁块-打乱-翻转-重排就破坏全局结构、保住局部纹理,干净利落地堵住了"参考结构泄露",且天然弥合训练(参考=目标首帧)与推理(参考≠目标)的分布鸿沟。
- DMD 蒸馏让辅助模块不拖累主系统:把擦除器从 50 步压到 3 步,是工程上让"额外条件提取器"可用的关键。
局限与展望¶
- 整套方案依赖高质量 3D 重建(Hunyuan3D)来构造擦除器训练数据,重建质量差的物体类别可能让无纹理条件不准;⚠️ 论文未充分讨论对薄壳/透明/反光等难重建物体的鲁棒性。
- 纹理迁移本质只搬"表面外观",对需要改变材质语义(如把布料变金属、伴随光照/高光改变)的场景能力有限。
- 拼图置换破坏了纹理的长程空间规律(如条纹方向、logo 整体性),对有全局结构的纹理(文字、图案)可能反而迁移不准——这是"打碎结构"的代价。
相关工作与启发¶
- vs ControlNet/通用结构条件(Canny/HED/Depth): 它们用通用边缘/深度图锁结构,但纹理择不干净;本文用专门训练的纹理擦除器产出"纯几何"条件,消融里前景相似度大幅领先。
- vs ZeST / Pair Diffusion 等外观编辑: 它们直接拿参考图做外观条件、易泄露参考结构;本文用拼图置换打散参考全局布局,只迁移局部纹理。
- vs VACE / VideoPainter 等视频编辑/inpainting: 本文基于 VACE 但针对重纹理重构了双支条件处理(control 层 + reference 层 + MM-DiT),把"重纹理"作为一个独立任务首次系统化到视频域。
评分¶
- 新颖性: ⭐⭐⭐⭐ 首次把物体重纹理扩展到视频,两路解耦(擦除器+拼图置换)思路清晰对症。
- 实验充分度: ⭐⭐⭐⭐⭐ 图像/视频双 benchmark、十余个强 baseline、自动+LLM+用户三套评测、多组消融。
- 写作质量: ⭐⭐⭐⭐ 痛点-方案对应明确,公式与数据集构建讲得清楚。
- 价值: ⭐⭐⭐⭐ 提供了一个干净的"纹理-结构解耦"范式,擦除器+拼图置换两个组件都有迁移价值。