Journal

Content-aware Tile Generation using Exterior Boundary Inpainting

Sam Sartor, Pieter Peers

College of William & Mary

一句话总结

将”可平铺纹理生成”重新表述为”外部边界修复(inpainting)”问题,直接借用现成的预训练扩散修复模型,仅凭文本提示即可生成兼具无缝拼接与高度多样性的整套纹理瓦片(tile set),并提出解决角点问题的新型 Dual Wang 平铺方案。

研究背景

纹理在计算机图形学中无处不在。经典的示例式(exemplar-based)纹理合成通过逐块复制(verbatim copying)来拼接,把”结构”与”内容”耦合在一起,缺乏对语义的理解,导致生成纹理多样性差、重复感强。

近年扩散模型对图像内容有很好的语义理解,且大规模预训练模型无需自行收集训练集就能生成新纹理,是纹理合成的理想候选。但扩散模型一次性生成整幅图像,受限于可合成的纹理尺寸。可平铺纹理(tileable texture)通过合成一个或多个可无缝拼接的小纹理来规避这一限制,但现有基于学习的方法大多只能生成单张自平铺(self-tiling)纹理,平铺后仍有明显重复。

本文同时针对”可平铺性”与”多样性”:不再逐块复制示例,而是依赖提示条件扩散模型中蕴含的先验知识,为每个瓦片合成独一无二的内容,并通过从示例图中导出的外部边界条件来约束合成,保证拼接无缝。

方法

整体框架

核心思想类比于用偏微分方程(PDE)求解区域内部:给定区域边界上的边界条件,求解内部——只不过这里用扩散模型来”求解”,并由文本提示指定要填充的内容。

关键在于精心设计与选择”外部边界条件”:为每一对匹配边(matching edges)从示例图中选取一个模板块(template patch),沿水平/垂直方向切半,把切开的半块放到瓦片外侧、切边与瓦片边缘对齐,然后用扩散修复模型填充瓦片内部(interior),最后只保留合成出的内部作为最终瓦片。这样构造出的边界条件在匹配边处天然连续(contiguous),既满足修复模型对”足够宽的示例像素带”的需求,又保证匹配边拼接无缝,且最终瓦片不含任何示例图的原始像素。

实现上用 Stable-Diffusion-XL 从文本提示生成示例图(并施加无条件 noise-rolling 使其更”纹理化”),用 Stable-Diffusion-2-Inpainting 做瓦片生成,二者均无需微调或重训。

flowchart LR
    A[文本提示] --> B[SDXL 生成示例图<br/>+ noise-rolling]
    B --> C[选取模板块并切半]
    C --> D[作为外部边界条件<br/>放置在瓦片外侧]
    D --> E[SD2-Inpainting<br/>修复瓦片内部]
    E --> F[裁剪保留内部<br/>得到最终瓦片]

关键设计一:从自平铺到 Wang 瓦片的统一表述

同一套”切半模板块 + 内部修复”方法可推广到多种平铺方案:

  • 自平铺(self-tiling):只有水平与垂直两对匹配边。
  • 随机自平铺(stochastic self-tiling):保持边界条件不变、更换修复的随机种子,即可得到一组互相可平铺的多张瓦片,平铺时随机挑选以增加多样性。
  • Escher 瓦片:由于修复对边界形状没有限制,可沿任意路径切割模板块,生成非方形瓦片。
  • Wang 瓦片:对 \(C\) 种边色,选取 \(2C\) 个模板块(每色各一水平、一垂直切割),为全部 \(C^4\) 个 Wang 瓦片按边色拷贝相应半块作边界条件并修复内部。由于每个瓦片仅共享边界条件、内部各自独立修复,因此多样性远高于图割(graph-cut)方法。

关键设计二:Dual Wang 瓦片解决角点问题

边色 Wang 瓦片存在”角点问题”(corner problem):对角相邻瓦片不共享边,导致所有瓦片的角点必须彼此匹配、只能相同,造成重复。Lagae 与 Dutré 的 Corner Wang 瓦片用角色替代边色,但又引入两个新问题:角点(复制自示例)与中心(合成)多样性不一致;且瓦片边中点附近约束弱易出现不连续。

本文提出 Dual Wang 瓦片:让角点区域内容依赖于邻居瓦片。从常规 Wang 平铺出发,给每个瓦片附上一个菱形”内部瓦片(interior tile)”(菱形各角触及 Wang 瓦片边中点),共 \(C^4\) 种;平铺后相邻四个内部瓦片间留下菱形空洞,再用第二组”交叉瓦片(cross tile)”无缝填充,同样 \(C^4\) 种。两组合起来即 Dual Wang 瓦片集。由于每个内部瓦片可与不同交叉瓦片组合,内部与角点区域现在同等多样。

关键设计三:三阶段生成流程

Dual Wang 瓦片不能简单从示例切模板得到,因为它既要求边连续、又要求角点连续。方法分三步逐级扩展连续性:

  1. 先生成一套常规 Wang 瓦片(边色匹配处天然连续,也跨菱形角点连续),从中选取一个使每种边色组合只出现一次的子集(\(4 \times C^2\) 个);
  2. 由该子集提取边界条件,组装并修复出全部内部瓦片;
  3. 用对应颜色的 \(2 \times 2\) 内部瓦片拼贴作为边界条件,修复出交叉瓦片。

如此所有瓦片均为完整合成、不含任何边界条件像素,既无频率差异问题,又保证了跨边与跨角点的连续性。

实践要点:处理隐空间(latent)修复模型时需将模板块向掩码内部延伸足够远,避免 VAE 编解码时边界像素被掩码内像素污染;模板块选取多采用随机选择或用 CLIP-IQA 从候选中择优;对含明显接缝或伪水印的瓦片,可换种子重生成并用 SIFID 择优(因 CLIP-IQA 对伪水印不敏感)。

实验结果

在 SeamlessGAN 的 12 张经典纹理与本文更复杂的语义纹理上,用 CLIPScore(语义相似度,越高越好)、CLIP-IQA(质量,越高越好)与 inception 特征平均相关性(多样性,越低越好)评估不同平铺方案(除单张自平铺外均为 81 个瓦片):

方案 经典 CLIPScore 经典 CLIP-IQA 经典 相关性↓ 语义 CLIPScore 语义 CLIP-IQA 语义 相关性↓
Single Self 24.587 0.765 23.370 0.746
Stoch. Self 27.018 0.767 9.368 28.070 0.744 5.144
Wang (graph-cut) 24.467 0.785 10.089 26.548 0.739 5.773
Wang Tile(本文) 26.002 0.762 9.293 28.57 0.756 5.251
Dual Wang(本文) 26.327 0.765 8.331 28.44 0.760 4.875

结果显示:本文方法在典型纹理上生成的 Wang 瓦片质量高于图割合成;Dual Wang 平铺整体最优,并在两个测试集上都给出最高多样性(最低特征相关性)。在自平铺对比中,本文方法(SIFID 择优)在贴合示例(SIFID)与可平铺性之间取得较好平衡。

亮点与局限

亮点

  • 把瓦片生成巧妙重述为边界修复问题,直接复用现成预训练修复模型,无需任何训练或按模型定制,可随扩散模型进步无缝升级。
  • 从单一文本提示即可生成整套多样瓦片,突破以往仅能生成单张自平铺纹理的限制;同一框架统一覆盖自平铺、随机自平铺、Escher、Wang 及新型 Dual Wang 等多种方案。
  • Dual Wang 瓦片同时解决角点问题与角点/中心多样性不一致,且打包后存储成本与常规 Wang 瓦片相同(瓦片数翻倍但每个仅含 50% 像素)。
  • 支持 Img2Tile(从照片起步)与”无限随机平铺”(平铺时按随机种子即时生成瓦片)。

局限

  • 并非所有示例图都适合:显著特征大于瓦片尺寸时效果差(需下采样处理);含透视畸变(有限灭点)或亮度渐变的图像会产生明显重复图案——不过图割方法同样受此困扰。方法能”绕开”局部难点,但无法纠正全局偏差。
  • 计算成本较高:单瓦片约 1.7s,3 色 Wang(81 瓦片)约 140s,3 色 Dual Wang(243 次修复)约 7 分钟,启用 4 候选择优可达 12~36 分钟。
  • 把扩散模型当黑盒使用,隐空间反复编解码会带来一定色偏。

延伸思考

  • 将整套生成完全放到隐空间进行(只编解码一次)可缓解色偏并显著提速,但会牺牲跨模型的通用性——这是”灵活性 vs 效率”的典型取舍。
  • Dual Wang 瓦片在语义上等价于 \(C^3\) 色的常规 Wang 瓦片(对 \(C=3\) 即等价于 531,441 张纹理),却由更小的基元纹理组合而成,提示了”用小集合基元表达巨大组合空间”的思路,可能对其他离散组合式内容生成有借鉴意义。
  • 方法本质是”约束式扩散生成”:外部边界条件相当于硬约束,文本提示相当于软约束。这一 PDE 式的边值问题类比,或可推广到需要保证接缝一致性的其他生成任务(如 3D 纹理映射、无缝全景合成)。
  • 随着更快的修复模型出现(论文提到约 8× 加速潜力),”无限随机平铺”的即时生成有望变得实用,届时纹理不再是有限瓦片集而是真正意义上的无限非重复纹理。